/*
	Copyright © Eleanor CMS
	http://eleanor-cms.ru
	info@eleanor-cms.ru

	Sponsored by: Roman Borkunov (Qnut)
*/
$(function()
{
	var to,//timeout
		upd_int=10000,//Время обновления чата
		interaction=0,//Количество обновлений после последнего сообщения

		warn=$("#ocwarn"),
		chatarea=$("#ochat-area"),
		maindiv=$("#ochat-area-all"),
		input=maindiv.find("textarea"),
		uid=maindiv.data("uid"),
		admin=maindiv.data("admin") ? 1 : 0,
		name=maindiv.data("name"),
		sign=maindiv.data("sign"),

		sma=$("#osmile-area"),
		smiles={},

		SetChat=function(data)
		{
			var down=(chatarea.prop("scrollHeight")-chatarea.prop("clientHeight"))==chatarea.scrollTop();
			chatarea.html(data).find(".ocmessage:odd").addClass("ocmess2");
			$("#ochat-area .ocmessage > p").each(function(){
				var th=$(this),
					html=th.html();
				if(html.indexOf("<b>"+name+"</b>")>-1)
					th.parent().addClass("quoteme");
				$.each(smiles,function(k,v){
					html=html.replace(new RegExp(k,"ig"),"<img src=\""+v+"\" alt=\""+k+"\" />");
				});
				th.html(html);
			});

			if(down)
				chatarea.scrollTop(chatarea.prop("scrollHeight")-chatarea.prop("clientHeight"));
		},

		Update=function()
		{
			interaction++;
			if(interaction>60)
				return false;

			input.addClass("oload");
			warn.hide();
			$.get(
				CORE.site_path+"addons/chat/chat.php",
				{uid:uid,name:name,admin:admin,sign:sign},
				SetChat,
				"text"
			).always(function(){
				input.removeClass("oload");
				to=setTimeout(Update,upd_int);
			});
		},
		AddPost=function()
		{
			var post=$.trim(input.addClass("oload").val());

			if(post=="")
				return;

			clearTimeout(to);
			interaction=0;

			$.post(
				CORE.site_path+"addons/chat/chat.php",
				{uid:uid,name:name,admin:admin,sign:sign,post:post},
				function(data)
				{
					if(data.indexOf("error:")===0)
					{
						warn.html(data.substr(6)).fadeIn("slow");
						setTimeout(function(){
							warn.fadeOut("slow");
						},2000);
					}
					else
					{
						input.val("");
						SetChat(data);
					}
				},
				"text"
			)
			.always(function(){
				input.removeClass("oload");
				to=setTimeout(Update,upd_int);
			});
		};

	Update();

	input.keypress(function(e){
		if(e.ctrlKey && e.keyCode==13 || e.keyCode==10)
			AddPost();
	});

	chatarea.on("mouseenter",".ocmessage",function(){
		var me=$(this),
			action=me.find(".oaction");
		if(action.size()==0)
		{
			$(this).append("<div class=\"oaction\"><a href=\"#\" class=\"oanswer\">Ответить</a>"+(admin || me.data("uid")==uid ? " <a href=\"#\" class=\"odel\" title=\"Удалить\">x</a>" : "")+"</div>");
			action=me.find(".oaction");
		}
		chatarea.find(".oaction:visible").not(me).stop(true,true).hide();
		action.stop(true,true).slideDown("fast");
	})
	.on("mouseleave",".ocmessage",function(){
		$(".oaction",this).stop(true,true).fadeOut("fast");
	})
	.on("click",".oanswer",function(){
		input.val(input.val() + "[b]"+$(this).closest(".ocmessage").find(".ocinfo a").text()+"[/b], ").focus();
		try
		{
			var l=input.val().length;
			input.get(0).setSelectionRange(l,l);
		}catch(e){};
		return false;
	})
	.on("click",".odel",function(){
		var post=$(this).closest(".ocmessage");
		$.post(
			CORE.site_path+"addons/chat/chat.php",
			{uid:uid,name:name,admin:admin,sign:sign,del:post.data("id")},
			function(data)
			{
				if(data=="ok")
					post.remove();
			},
			"text"
		);
		return false;
	});

	sma.find("img").each(function(){
		var th=$(this);
		smiles[ th.attr("alt") ]=th.attr("src").replace("big/","");
	});

	$("#orefresh").click(function(){
		clearTimeout(to);
		interaction=0;
		Update();
		to = setTimeout(Update,upd_int);
		return false;
	});

	$("#osmile").click(function(){
		sma.fadeToggle("fast");
		return false;
	});

	$("#osmile-area img").click(function(){
		input.val(input.val() + " " + $(this).attr("alt"));
		sma.fadeOut("fast");
		return false;
	});

	$("#osmile-area a").click(function(){
		sma.fadeOut("fast");
		return false;
	});

	$("#ochat-input > .fbutton").click(AddPost);
});
