var arrWeekDay = ["в воскресенье","в понедельник","во вторник","в среду","в четверг","в пятницу","в субботу"];
var arrMonths = ["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"];
var allMsgCount=0;
var newMsgCount=0;
var nowLoadMore=false;
var startTimer=false;
var sending=false;
var showAllNewMessages=false;

var errors = [
"Ошибка инициализации комнаты. Перейдите на главную страницу и повторите Ваши действия сначала!",
"Попытка взлома. Перейдите на главную страницу и повторите Ваши действия сначала!",

"Слишком маленькое сообщение. Напишите больше!",
"Слишком большое сообщение. Сократите его!",

"Слова, введенные с картинки, неверны. Введите два слова с картинки снова!",
"Данные авторизации ВКонтакте неверны. Авторизуйтесь ВКонтакте снова!",
"Данные авторизации приложения ВКонтакте неверны. Перезапустите приложение снова!",

"Ошибка получения данных о текущем пользователе ВКонтакте. Перезапустите приложение снова!",
"Ошибка типа подписи данных. Перейдите на главную страницу и повторите Ваши действия сначала!",
"Эта комната только для глаз. Вы не можете оставлять здесь сообщения!"

];


var h2 = [
'Нашел баг - поделись! <a href="http://writemore.ru/buglist">В комнате #buglist &rarr;</a>',
'Кошки, коты, котята, их жизнь и приключения! <a href="http://writemore.ru/cats">Поддержи тему #cats &rarr;</a>',
'Какая у тебя тачка? Давно пора открыть <a href="http://writemore.ru/auto">комнату #auto &rarr;</a>',
'Что сейчас в кино? Что смотрят и что говорят? <a href="http://writemore.ru/cinema">Только в комнате #cinema &rarr;</a>',
'Любовь? Проверь, пусто ли в <a href="http://writemore.ru/love">комнате #love &rarr;</a>',
];

$(document).ready(function(){
	loadIni();
	
	
	$("#textareaMessage").keyup(function(){
		countLetters();
	});
	$("#textareaMessage").focus();
	$("#textareaMessage").keyup();

	
	$("#spanShowHideRP").removeClass().addClass("hideRP");
	$("#spanShowHideAbout").removeClass().addClass("hideAbout");
	$("#spanShowNewMessages").removeClass().addClass("notNM");
	
	$(".tdContent>.contentPlace>h2").after('<div class="message msgempty">В этой комнате пока нет сообщений...<br/> Вы можете первым написать сообщение в эту комнату и отправить ссылку друзьям!</div>');
	$(".msgempty").hide();
	
	
	getNewMessages(false);

	
	$("#users").html();
	showNewH2();
	getOnlineUsers();
	
});

function setCookie (name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function closeVKSession(){
	setCookie("vk_app_1879379","","","/");
}


function getSigType(){
	if(	($("#select_type").css('display')=='none') &&
		($("#select_image").css('display')!='none') ){
		
		return 1;
		
	}else if(	($("#select_image").css('display')=='none') &&
				($("#select_type").css('display')!='none') &&
				($("#select_type").attr('value')=='anonim')	){
		
		return 2;
	
	}else if(	($("#select_image").css('display')=='none') &&
				($("#select_type").css('display')!='none') &&
				($("#select_type").attr('value')=='vk_user')){
		
		return 3;
		
	}else{
		
		return 0;
		
	}
}


$(document).everyTime(2000,function() {
	if(startTimer==true){
		getNewMessages((allMsgCount==0)?false:true);
	}
});

$(document).everyTime(500,function() {
	countLetters();
});

$(document).everyTime(15000,function() {
	getOnlineUsers();
	showNewH2();
});



function showNewH2(){
	$("#header>h2").hide().html(h2[randomNumber(0,h2.length-1)]).fadeIn();
}











function getOnlineUsers(){
	var category = $("input[name='category'][type='hidden']").attr("value");
	var random = randomNumber(1000000,9999999);
	
	$.getJSON("/api.php", {		"do": 			"getonlineusers",
								"category": 	category,
								"random":		random
									}, function(data){
		
		if((data.error==false) && (data.random==random)){
			$("#users").html(data.onlineusers);
		}

	});
}


function randomNumber (m,n){
  m = parseInt(m);
  n = parseInt(n);
  return Math.floor( Math.random() * (n - m + 1) ) + m;
}

function countLetters(){
	var value=$("#textareaMessage").attr('value') || '';
	$("#spanMessageCounter").css('color','rgb('+(255-Math.round((Math.max((2048-value.length),0)/2048)*255))+',0,0)');
	$("#spanMessageCounter").html((2048-value.length).toString());
}

function insertText(string){
	if($("input[name='statusRP'][type='hidden']").attr("value")==0){ShowHideRP();}
	string=(($("#textareaMessage").val().toString().length==0)?string.toString():"\r\n"+string.toString());
	$("#textareaMessage").focus().val($("#textareaMessage").val()+string+" ");
}

$(".insertMID").live("click", function() {
	insertText($(this).attr("title"));
	return false;
});

$(".insertCat").live("click", function() {
	insertText($(this).html());
	return false;
});

$(".mainCat").live("click", function() {
	$(".mainCat").hide();
	$("#changeCat").show().focus().val($(".mainCat").html());
	return false;
});

$("#changeCat").live("keypress", function(event) {
	if(event.keyCode=="13"){
		changeCategory($("#changeCat").val().toString());
		return false;
	}
});

$("#changeCat").live("focusout", function() {
	changeCategory($("#changeCat").val().toString());
	return false;
});

$(".aCat").live("click", function() {
	changeCategory($(this).html().toString());
	return false;
});

function changeCategory(str){
	var category = $("input[name='category'][type='hidden']").attr("value").toString();
	
	str=(str.length==0)?category:str;
	str=str.match(/([a-z0-9]{1,16})/gi);
	str=((str==null)?category:str.join("").toLowerCase());
	str=str.toString();
	
	if((category!=str) && (str.length!=0)){
		$("#changeCat").hide();
		$(".mainCat").addClass("changeProcess").show().html("#"+str);
		window.location = "/"+str.substr(0,16);
	}else{
		$("#changeCat").hide();
		$(".mainCat").show().html("#"+category);
	}
}



function ShowHideRP(){
	if($("input[name='statusRP'][type='hidden']").attr("value")==1){
		$(".tdMenu").hide();
		$(".tdContent").css("width","100%");
		$(".tdContent").css("padding-right","0px");
		$("#spanShowHideRP").removeClass().addClass("showRP");
		$("input[name='statusRP'][type='hidden']").attr("value",0);
	}else{
		$(".tdMenu").show();
		$(".tdContent").css("width","auto");
		$(".tdContent").css("padding-right","20px");
		$("#spanShowHideRP").removeClass().addClass("hideRP");
		$("input[name='statusRP'][type='hidden']").attr("value",1);
	}
}

function ShowHideAbout(){
	if($("input[name='statusAbout'][type='hidden']").attr("value")==1){
		$(".message>.about").addClass("invisible");
		$("#spanShowHideAbout").removeClass().addClass("showAbout");
		$("input[name='statusAbout'][type='hidden']").attr("value",0);
	}else{
		$(".message>.about").removeClass("invisible");
		$("#spanShowHideAbout").removeClass().addClass("hideAbout");
		$("input[name='statusAbout'][type='hidden']").attr("value",1);
	}
	
}


function addMessage(category){
	
	if(sending!=true){
		sending=true;
		$("#spanStatusSend").show();
		$("#spanStatusSend").html(" &mdash; отправка...");
		$.post("/api.php?do=addmessage", {
											"category": 	$("input[name='category'][type='hidden']").attr("value"),
											"content":		$(".txtMessage").attr("value"),
											"sigtype":		getSigType(),
											"words": 		$("#recaptcha_response_field").attr("value"),
											"confirm": 		$("#recaptcha_challenge_field").attr("value")}, function(data){

			data=$.parseJSON(data);

			
			if(data.error==false){
				$("#spanStatusSend").html(" &mdash; успешно!");
				$(".txtMessage").attr("value","");
				Recaptcha.reload();
				$("#spanStatusSend").fadeOut();
				sending=false;
			}else{
				$("#spanStatusSend").hide();
				$("#spanStatusSend").html("");
				$("#spanStatusSend").fadeIn();
				if(data.refreshrc==true){Recaptcha.reload();}
				alert(errors[data.code-1]);
				sending=false;
			}
		});
	}
}


$.ajaxSetup({
  cache:false
});


function getNewMessages(msgHide){
	var category = $("input[name='category'][type='hidden']").attr("value");
	var firstmid = $("input[name='firstMID'][type='hidden']").attr("value");
	

	$.getJSON("/api.php", {		"do": 			"getnewmessages",
								"category": 	category,
								"firstmid":		firstmid
									}, function(data){
		
		if((0<data.messages.count) && (data.messages.firstmid==$("input[name='firstMID'][type='hidden']").attr("value"))){
			$("input[name='firstMID'][type='hidden']").attr("value",data.messages.newfirstmid);
			$(".tdContent>.contentPlace>h2").after(parseData(data,msgHide));
			if(firstmid==0){$("input[name='lastMID'][type='hidden']").attr("value",data.messages.lastmid);}
		
			if(msgHide==true){
				newMsgCount=newMsgCount+data.messages.count;
				$("#spanShowNewMessages").removeClass().addClass("showNM");
				$("#spanCountMessages").hide().html("+"+newMsgCount).fadeIn();
			}else{
				if(data.messages.showmore==false){
					$(".aLoadMore").hide();
				}else{
					$(".aLoadMore").show();
				}
				allMsgCount=allMsgCount+data.messages.count;
				$("#spanCountMessages").hide().html(allMsgCount).fadeIn();
			}
		}

		if(allMsgCount==0){
			$(".aLoadMore").hide();
			$(".msgempty").show();
		}else{
			$(".msgempty").hide();
		}
		
		if(showAllNewMessages==true){
			ShowNewMessages();
		}
		
		
		
		startTimer=true;
	});
}


function getOldMessages(msgHide){
	if (nowLoadMore==false){
		nowLoadMore=true;
		$(".spanLoadMore").addClass("msgload");
		
		var category = $("input[name='category'][type='hidden']").attr("value");
		var lastmid = $("input[name='lastMID'][type='hidden']").attr("value");
		
		$.getJSON("/api.php", {		"do": 			"getoldmessages",
									"category": 	category,
									"lastmid":		lastmid
										}, function(data){
										
			if((0<data.messages.count) && (data.messages.lastmid==lastmid)){
				$(".tdContent>.contentPlace>.aLoadMore").before(parseData(data,msgHide));
				$("input[name='lastMID'][type='hidden']").attr("value",data.messages.newlastmid);
				if(data.messages.showmore==false){$(".aLoadMore").hide();}
				
				allMsgCount=allMsgCount+data.messages.count;
				if(newMsgCount==0){
					$("#spanCountMessages").hide().html(allMsgCount).fadeIn();
				}
			}
			$(".spanLoadMore").removeClass("msgload");
			nowLoadMore=false;
			showLinkDelete();
		});
	}
}



function deleteMessage(msg_id){

	if(sending!=true){
		sending=true;
	
		if (confirm('Вы действительно хотите безвозвратно удалить сообщение @'+msg_id+'?')==true){
			var category = $("input[name='category'][type='hidden']").attr("value");
			
			$.getJSON("/api.php", {		"do": 			"deletemessage",
										"category": 	category,
										"mid":			msg_id,
										"sigtype":		getSigType()
											}, function(data){

				if(data.error==false){
					$("#msg"+msg_id).fadeOut('slow');
					allMsgCount=allMsgCount-1;
					$("#spanCountMessages").hide().html(allMsgCount).fadeIn();
					if (allMsgCount==0){$(".msgempty").show();}
					$("#msg"+msg_id).remove();
				}else{
					alert(errors[data.code-1]);
				}
			});
		}else{
			sending=false;
		}
		sending=false;
	}
}


function parseData(data,msgHide){
	var hideAbout=(($("input[name='statusAbout'][type='hidden']").attr("value")==0)?" invisible":"");
	var hideAll=((msgHide==true)?" msginv":"");
	var html="";
	for(i=0;i<data.messages.count;i++){
		html = html +
				'<div id="msg'
				+data.messages[i].id.toString()+
				'" class="message'
					+hideAll.toString()+
				'"><a name="mid'
				+data.messages[i].id.toString()+
				'"></a><blockquote>'
					+parseMIDs(parseCategories(parseBr(data.messages[i].content.toString())))+
				'</blockquote><div class="about'
					+hideAbout.toString()+
				'"><a class="insertMID" href="/'
					+data.messages[i].category.toString()+"/"+data.messages[i].id.toString()+
				'" title="'+
					insertReplyText(data.messages[i].id.toString(),data.messages[i].name.toString(),data.messages[i].url.toString())
				+'">@'
					+data.messages[i].id.toString()+
				'</a> пишет '+
					insertUserURL(data.messages[i].name.toString(),data.messages[i].url.toString())
				
					+getTime(data.messages[i].dt.toString())+
				' <a style="display:none;" class="delLink d_'+
					getClassNameByURL(data.messages[i].url.toString())
				+'" title="Удалить это сообщение безвозвратно." href="javascript:deleteMessage('+data.messages[i].id.toString()+');">x</a>'+'</div></div>';
	}

	return html;
}

function getClassNameByURL(url){
	return MD5(url);
}

function insertUserURL(name,url){

	if(name=='' || url==''){
		return '<b>Аноним</b> ';
	}else{
		var html= '<a target="_blank" class="insertName" href="' +url+ '"><b>' +name+ '</b></a> ';
		return html;
	}
}

function insertReplyText(id,name,url){
	var html;
	if(name=='' || url==''){
		html='@'+id+' ';
	}else{
		html='@'+id+' '+name+' ';
	}
	return html;

}




function getTime($timestamp){
	var reg=/^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{2}):(\d{2})$/;
	var arr=reg.exec($timestamp);
	dt=new Date(arr[1],arr[2]-1,arr[3],arr[4],arr[5],arr[6]);
	dt=new Date(dt.getTime()-(dt.getTimezoneOffset()*60*1000));

	mMinutes=dt.getMinutes();
	mHours=dt.getHours();
	//AmPm=((mHours/12)<1)?"am":"pm";
	//mHours=((mHours/12)<1)?mHours:mHours-12;
	mMinutes=((mMinutes.toString()).length==2)?mMinutes:"0"+mMinutes;
	
	return arrWeekDay[dt.getDay()]+", "+dt.getDate()+" "+arrMonths[dt.getMonth()]+" "+dt.getFullYear()+" в "+mHours+":"+mMinutes;
}



function parseMIDs(string){
	string=string.replace(/@([0-9]{1,})/g,'<a class="aMID" onclick="scrollToMID($1);return false;" href="javascript:alert('+"'"+'Сообщение не найдено на этой странице.'+"'"+');">@$1</a>');
	return string;
}

function parseCategories(string){
	string=string.replace(/#([a-z0-9]{1,16})/gi,'<a class="aCat" href="/$1">#$1</a>');
	return string;
}

function parseBr(string){
	string=string.replace(/(\r\n)/gi,'<br/>');
	return string;
}

$("#aChangeColorCopy").live("mousemove", function() {
	changeColorCopy();
	return false;
});

function changeColorCopy(){
	var rgb="RGB("+Math.round(Math.random()*255)+","+Math.round(Math.random()*255)+","+Math.round(Math.random()*255)+")";
	$("#copy2").css("color",rgb);
	$("#copy2>a").css("color",rgb);

	$("#bottommenu2").css("color",rgb);
	$("#bottommenu2>a").css("color",rgb);
	$("#bottommenu2>a").css("border-color",rgb);
}

function copyMessage(){
	alert('Спасибо за Ваш интерес к проекту WriteMore.ru!');
}



function ShowNewMessages(){
	if(newMsgCount!=0){
		$(".message").removeClass("msgnew");
		$(".msginv").addClass("msgnew").removeClass("msginv");
	
		$("#spanShowNewMessages").removeClass().addClass("notNM");
		allMsgCount=allMsgCount+newMsgCount;
		$("#spanCountMessages").hide().html(allMsgCount).fadeIn();
		newMsgCount=0;
		showLinkDelete();
	}
}

function scrollToMID(id){
	$("html:not(:animated)"+( ! $.browser.opera ? ",body:not(:animated)" : "")).animate({scrollTop: $("a[name=mid"+id+"]").position().top});
	
	$(".msgsel").removeClass("msgsel");
	$("#msg"+id).addClass("msgsel");

	return false;
}


$(".msgsel").live("click", function() {
	$(".msgsel").removeClass("msgsel");
	return false;
});









function showOrHideMessages(){
	if(showAllNewMessages==true){
		showAllNewMessages=false;
		$("#btShow>span>b").html("вкл.");
	}else{
		showAllNewMessages=true;
		$("#btShow>span>b").html("выкл.");
	}
}


