/*
Copyright 2011 - Infored.com.mx
------
Comments
*/
//define functions for global use
var FuncPostMsg = {};
var FuncReplyMsg = {};
var FuncDeleteMsg = {};
var FuncHoverImg = {};
var FuncOpenReply = {};

$(document).ready(function(){

	//collapse thread
	$('.com_hide').live('click', function(event) {
		var obj = $(this).closest('.com_msg');
		var comment = commentvars(obj);
		var depth = comment[2];
		var thisobj = obj.next();
		var loop = true;
		var count = 1;
		while(loop == true)
		{
			if(thisobj.hasClass('com_msg'))
			{
				var ncomment = commentvars(thisobj);
				if(ncomment[2] > depth)
				{
					thisobj.css('display','none');
					thisobj=thisobj.next();
					count++;
				}
				else
				{
					loop = false;
				}
			}
			else
			{
				loop = false;
			}
		}
		var imgurl = obj.find('.com_avatar_large').attr('src');
		obj.find('.com_opened').css('display','none');
		var newhtml = '<div class="hctopI"><div class="com_show"></div></div><img src="' + imgurl + '" width="25" height="25" class="com_avatar_small"><p>' + ' Collapsed ' + count + ' messages </p>';
		obj.find('.com_closed').html(newhtml).css('display','block');
	});

	//open thread
	$('.com_show').live('click', function(event) {
		var obj = $(this).closest('.com_msg');
		var comment = commentvars(obj);
		var depth = comment[2];
		var thisobj = obj.next();
		var loop = true;
		var count = 1;
		while(loop == true)
		{
			if(thisobj.hasClass('com_msg'))
			{
				var ncomment = commentvars(thisobj);
				if(ncomment[2] > depth)
				{
					thisobj.css('display','block');
					thisobj=thisobj.next();
					count++;
				}
				else
				{
					loop = false;
				}
			}
			else
			{
				loop = false;
			}
		}
		obj.find('.com_opened').css('display','block');
		obj.find('.com_closed').css('display','none');
	});
	
	//load next page
	$('.com_loadmore').live('click', function(event) {
		var page=$(this).attr('id').replace(/loadpage/, "");
		var container = $(this).closest('.com_shell');
		var progress = $(this).parent();

		progress.html('<img src="/images/test/ajax-loader.gif">');
		var data = loadpage(page,com_sort);
		if(data.loadstatus=="OK")
		{
			progress.remove();
			container.append(data.html);
		}
		else
		{
			alert('ERROR : ' + data.loadstatus);
		}
	});

	//load ALL comments, nomatter how many there are
	FuncLoadAll = function(hash){
		var data = loadpage(-1,com_sort);
		if(data.loadstatus=="OK")
		{
			$(".com_loadmore").remove();
			$(".com_shell").append(data.html);
			location.href = "#"+hash;
		}
		else
		{
			alert('ERROR : ' + data.loadstatus);
		}
	};
	
	//change sorting
	$('#com_sort').live('change', function(event) {
		com_sort = $(this).val();
		//clear new post
		$("#fipo").html('');
		
		var data = loadpage(0,com_sort);
		if(data.loadstatus=="OK")
		{
			$(".com_shell").empty();
			$(".com_shell").append(data.html);
		}
		else
		{
			alert('ERROR : ' + data.loadstatus);
		}
	});

	//reply to comment
	$('.com_replybox').live('click', function(event) {
		FuncOpenReply($(this));
	});

	FuncOpenReply = function(thisobj){
		var obj = thisobj.closest('.com_msg');
		var comment = commentvars(obj);
		if(obj.next().attr('id')=='reply_' + comment[1] + '_' + comment[2])
		{
			obj.next().remove();
		}
		else
		{
			var username=obj.find('.com_username').html();
			obj.after('<div id="reply_' + comment[1] + '_' + comment[2] + '" class="com_replycont"><p>Responder a: ' + username + '</p><p><textarea class="com_reply_msg"></textarea></p><input class="com_reply_cancel" type="button" value="Cancelar"\><input class="com_reply_send" type="button" value="Enviar"\></div>');
		}
	};
	
	//cancel reply
	$('.com_reply_cancel').live('click', function(event) {
		$(this).closest('.com_replycont').remove();
	});

	//reply to new message (trigger)
	$('.com_post_new').live('click', function(event) {
		var obj = $(this).closest('.com_postcomment');
		var msg = obj.find('.com_new_msg').val();
		if(msg=='')
		{
			alert('Por favor introduzca un mensaje');
		}
		else
		{
			FuncExecute("FuncPostMsg('" + JSON.stringify({action:'postnew',cbid:com_cbid,comid:0,message:escape(msg),url:window.location.href}) + "');");
		}
	});

	//like (trigger)
	$('.com_like').live('click', function(event) {
		var obj = $(this).closest('.com_msg');
		FuncExecute("FuncLike('" + JSON.stringify({action:'like',cbid:com_cbid,comid:obj.attr('id')}) + "','" + obj.attr('id') + "');");
	});

	//like (action)
	FuncLike = function(jsondata,id){
		vars=JSON.parse(jsondata);
		var ret = FuncAjaxLoad("/json/comments.php",vars)
		if(ret.loadstatus=='OK')
		{
			var obj = $("#"+id).find('.hcFLike');
			obj.find('div').addClass('hcFLike_over2');
			obj.find('p').html('Le gusta esto');
		}
		else
		{
			return ret.loadstatus;
		}
	};

	
	//add a new comment (action)
	FuncPostMsg = function(jsondata){
		vars=JSON.parse(jsondata);
		var ret = FuncAjaxLoad("/json/comments.php",vars)
		if(ret.loadstatus=='OK')
		{
			$(".com_postcomment").replaceWith('');
			$("#fipo").html(ret.html);
		}
		else
		{
			return ret.loadstatus;
		}
	};

	//add a new comment (trigger)
	$('.com_reply_send').live('click', function(event) {
		var obj = $(this).closest('.com_replycont');
		var msg = obj.find('.com_reply_msg').val();
		if(msg=='')
		{
			alert('Por favor introduzca un mensaje');
		}
		else
		{
			FuncExecute("FuncReplyMsg('" + JSON.stringify({action:'reply',cbid:com_cbid,comid:obj.attr('id'),message:escape(msg),url:window.location.href}) + "','" + obj.attr('id') + "');");
		}
	});
	
	//reply a comment message (action)
	FuncReplyMsg = function(jsondata,id){
		vars=JSON.parse(jsondata);
		var ret = FuncAjaxLoad("/json/comments.php",vars)
		if(ret.loadstatus=='OK')
		{
			$("#" + id).replaceWith(ret.html);
		}
		else
		{
			return ret.loadstatus;
		}
	};


	//delete a comment (trigger)
	$('.com_delete').live('click', function(event) {
		var r=confirm("Are You sure, that your want to delete this thread?");
        	if (r==true)
          	{
       			var obj = $(this).closest('.com_msg');
			FuncExecute("FuncDeleteMsg('" + JSON.stringify({action:'delete',cbid:com_cbid,comid:obj.attr('id')}) + "','" + obj.attr('id') + "');");
		}
        	else
          	{
          		return false;
          	}
	});

	//report post
	$('.com_flag').live('click', function(event) {
		var obj = $(this).closest('.com_msg');	
		FuncModal('/report_comment-popup.php?comid=' + obj.attr('id'),580,360,''); 
	});

	$(".com_like").live({
		mouseenter:
		function()
		{
			$(this).find('div').addClass('hcFLike_over');
		},
		mouseleave:
		function()
		{
			$(this).find('div').removeClass('hcFLike_over');
		}
	}
	);

	FuncHoverImg = function(classs){
		$("." + classs).live({
			mouseenter:
			function()
			{
				$(this).addClass(classs + '_hover');
			},
			mouseleave:
			function()
			{
				$(this).removeClass(classs + '_hover');
			}
		}
		);
	};	

	FuncHoverImg('com_flag');
	FuncHoverImg('com_delete');
	FuncHoverImg('com_hide');
	FuncHoverImg('com_show');

	//delete comment message (action)
	FuncDeleteMsg = function(jsondata,id){
		vars=JSON.parse(jsondata);
		var ret = FuncAjaxLoad("/json/comments.php",vars)
		if(ret.loadstatus=='OK')
		{
			var obj = $("#"+id);
			var comment = commentvars(obj);
			var depth = comment[2];
			var thisobj = obj.next();
			var loop = true;
			var count = 1;
			while(loop == true)
			{
				if(thisobj.hasClass('com_msg'))
				{
					var ncomment = commentvars(thisobj);
					if(ncomment[2] > depth)
					{
						thisobj.css('display','none');
						thisobj=thisobj.next();
						count++;
					}
					else
					{
						loop = false;
					}
				}
				else
				{
					loop = false;
				}
			}
			obj.css('display','none');
		}
		else
		{
			alert(ret.loadstatus);
		}
	};
	

	//load a comment page
	function loadpage(page,sort)
	{
		return FuncAjaxLoad("/json/comments.php",{action:'loadmore',cbid:com_cbid,sort:sort,page:page})
	}

	//returen comment vars from an object
	function commentvars(obj)
	{
		return obj.attr('id').split('-');
	}

	//load more data if jumpto comment is not visible
	var hash=window.location.hash.substring(1);
	if(hash.length>0)
	{
		if(!$("#" + hash).length)
		{
			FuncLoadAll(hash);	
		}
		var obj=$('#'+hash).closest('.com_msg');
		FuncOpenReply(obj);
		$(".com_postcomment").replaceWith('');
	}
});
