var rcp_user = 0;

function messages_page(data)
{ 
	 var h = "";
	 if (data.isLogin != 0) {
		h += "<div class='subMenu user'>";
		if(data.subType == 'inbox' || (data.subType == 'read' && data.cat == 'inbox'))
			h += "<a class='menuItem active' href='/#messages'>входящие</a>";
		else
			h += "<a class='menuItem' href='/#messages'>входящие</a>";
		if(data.subType == 'outbox' || (data.subType == 'read' && data.cat == 'outbox'))
			h += "<a class='menuItem active' href='/#messages/outbox'>исходящие</a>";
		else
			h += "<a class='menuItem' href='/#messages/outbox'>исходящие</a>";
		if(data.subType == 'new')
			h += "<a class='menuItem active' href='/#messages/new'>написать письмо</a>";
		else
			h += "<a class='menuItem' href='/#messages/new'>написать письмо</a>";
		h += "</div>";
		h += "<div class='subTitle' style='position:relative;'>СООБЩЕНИЯ";
		if (data.subType == 'inbox' || data.subType == 'outbox')
			h += "<span class='pagingInfo'><b>" + (data.pageNum*30 + 1) + "</b> &mdash; <b>" + (((data.pageNum*30 + 30)>data.messages[data.messages.length-1])?(data.messages[data.messages.length-1]):(data.pageNum*30 + 30)) + "</b> <span>из</span> <b>" + data.messages[data.messages.length-1] + "</b></span>";
		h += "</div>";
		if(data.subType != 'read')
			h += '<br clear="all"/>';
		h += '<div style="width:622px;" class="massActions">';
		if(data.subType == 'read')
			h += "Отправлено " + data.messages.date;
		if (data.subType == 'inbox' || data.subType == 'outbox') {
			h += '<input id="massSelect" type="checkbox"/>';
			h += '<label for="massSelect">Выделить все</label>';
			if (data.subType == 'inbox') 
				h += '<span class="icon markAsRead"></span><a href="javascript:;" class="markAsRead">Отметить как прочитанное</a>';
			h += '<a href="javascript:;" style="float:right;" class="deleteMarked">Удалить выделенное</a><span style="float:right;" class="icon deleteMarked"></span>';
		}
		h += '</div><br clear="All"/>';
		h += '<div class="messagesLayout">';
		h +=  eval("messages_"+data.subType+"(data)");
		h += '</div>';
		h += '<br clear="All"/><div style="top:30px;margin-bottom:50px;" class="paging">';	
		h += '</div><br clear="All"/>'; 
	 }
	 $('#leftContent').html(h);
	 if (data.subType == 'inbox' || data.subType == 'outbox') {
	 	$('.message input').checkBox();
		$('.massActions input').checkBox();
		$('.massActions input').click(function(){
			if (this.checked) {
				$('.message .ui-checkbox').each(function(){
					if (this.className.indexOf('ui-checkbox-state-checked') == -1) {
						$(this).trigger('click');
					}
				});
			}
			else {
				$('.message .ui-checkbox').each(function(){
					if (this.className.indexOf('ui-checkbox-state-checked') != -1) {
						$(this).trigger('click');
					}
				});
			}
		});
		
		$('.markAsRead').click(function(){
			var checks = $('.messagesLayout .ui-checkbox-state-checked');
			var ids = '';
			checks.each(function(){
				var id = $(this).prev()[0].id;
				id = id.substr(1, id.length);
				if(ids.length!=0)
					ids += ',' + id;
				else
					ids = id;
			});
			$.post('/messages/markAsRead', {id:ids}, function(){
				checks.parent().addClass('read');
				check_mail();
			});
		});
		
		$('.deleteMarked').click(function(){
			var checks = $('.messagesLayout .ui-checkbox-state-checked');
			var ids = '';
			checks.each(function(){
				var id = $(this).prev()[0].id;
				id = id.substr(1, id.length);
				if(ids.length!=0)
					ids += ',' + id;
				else
					ids = id;
			});
			delete_message(ids);
		});
		var paging = new pagingFuncs({
			nElems : data.messages[data.messages.length - 1],
			curPage : data.pageNum,
			itemsPerPage : 30,
			color : 'yellow'
		});
		paging.build('.paging');
		
		h = '';
		h += "<div class='banner240x400'>";
		h += "<div class='topPerformers first'></div>";
		h += "<div class='bannerLayout'><img src='/media/images/240x400.jpg'/></div>";
		h += "</div>";

		$('#dynamicRightContent').css('margin-top', "0px");
		$('#dynamicRightContent').html(h);
	
		var topPerformers = new topPerformersFuncs(data.topPerformers);
		topPerformers.show('#dynamicRightContent .banner240x400 .first', 0, 5);
	 }
	 
	 if (data.subType == 'new' ) {
	 	var friends = [];
	 	for(i=0;i<data.friends.length;i++){
			friends[i] = data.friends[i].nick;
		}
	 	$('input.nick').combobox({
				data: friends,
				initstr: ' ',
				letType:true,
				arrowHTML: function() {
								return $('<a href="javascript:;" style = "margin-top:3px;" class = "ui-combobox-arrow"></a>');
							}
			});
			
		$('input.nick').bind("comboChanged", function(e,ind){
			var t = this;
			if(ind*1 == -1){
				$.post('/user/get_by_nick', {
					nick:t.value}, function(data){
						$('.message-reading .avatar img').attr('src', data.avatar.replace(".jpg", "_55x55.jpg"));
					})
			} else
				$('.message-reading .avatar img').attr('src', data.friends[ind].avatar.replace(".jpg", "_55x55.jpg"));
		});
		
		if(rcp_user!=0){
			$('input.nick').val(rcp_user);
			rcp_user = 0;
			$('input.nick').addClass('value-1');
			$('input.nick').trigger('comboChanged', -1);
		}
		
	 }
	 
}

function ctrl_enter(e, form)
{
	if (((e.keyCode == 13) || (e.keyCode == 10)) && (e.ctrlKey == true)) $('a.answer').trigger('click');
}


function messages_read(data)
{
	
		h = "<div class='message-reading re'>";
		h += "<div class='header'>";
		h += "<div class='avatar'><img src='"+data.messages.avatar.replace('.jpg', '_55x55.jpg')+"' /></div>";
		h += "<div class='info'><span class='title'>"+((data.cat=="inbox")?('От кого'):('Кому'))+":</span> <a class='nick' href='#users/"+data.messages.nick+"' >"+data.messages.nick+"</a>";
		h += "<br /><span class='title'>Тема:</span><span class='topic'>" + data.messages.title + "</span></div>";
		h += "<a class='profileButton' style='margin-right:10px;' href='"+((data.cat=="inbox")?('#messages'):('#messages/outbox'))+"'>Закрыть</a>";
		h += "<a class='profileButton' href='javascript:;' onclick='delete_message("+data.messages.id+", \""+data.cat+"\")' >Удалить</a>";
		h += "</div>";
		h+="<div class='messageField'>"+data.messages.message+"</div>";
		h += "<form class='answer' onSubmit='send_message(" + data.messages.snd_id + ")'>";
		h += "<textarea onkeypress='return ctrl_enter(event);' name='message'></textarea><br />";
		h += "<a href='javascript:;' class='profileButton answer' onclick='send_message(" + data.messages.snd_id + ");return false;'>Ответить</a>";
		h += "<br clear='all'/>";
		h += "</form>";

		h+="</div>";
		var c = data.cat;
		c =	c.replace('box', "");
		setTimeout(function(){$("." + c).addClass('active');}, 10);
	return h;
}

function messages_new(data)
{
	h="<div class='message-reading'>";
	h += "<div class='header'>";
	h += "<div class='avatar'><img src='/media/images/no_avatar_55x55.jpg' /></div>";
	h += "<div class='info' style='padding-top:13px;'><span class='title' style='margin-top:4px;width:40px;'>Кому:</span>";
	h+="<input class='nick' name='nick'  />"; 
	h += "<span class='title' style='margin-top:4px;margin-left:20px;width:40px;'>Тема:</span><input style='width:284px;' class='title' name='title' /></div>";
	h += "</div>";
	h+="<form class='answer new-message' onSubmit='new_message()'>";
	h+="<div class='messageField' style='padding-bottom:7px;'>Сообщение:</div><textarea onkeypress='return ctrl_enter(event);' name='message'></textarea><br />";
	h += "<a class='profileButton answer' style='margin-bottom:20px;margin-left:213px;margin-right:15px;' href='javascript:;' onclick='new_message()' >Отправить</a>";
	h += "<a class='profileButton' href='javascript:;' onclick='location.hash=\"messages\";core.refresh();return true;'>Отменить</a>";
	h+="<br clear='all'/>";
	h+="</form>";
	h+="</div>";
	return h;
}

function messages_inbox(data)
{
	h = "";
	if (data.messages.length > 0) {
		for(key=0;key<data.messages.length-1;key++){
			h += "<div class='message " + ((data.messages[key].read == 1) ? ("read") : ("")) + "'>";
			h += '<input id="m' + data.messages[key].id + '" class="markedMessage" type="checkbox"/>';
			h += "<a href='/#users/" + data.messages[key].nick + "' class='avatar'><img src='" + data.messages[key].avatar.replace('.jpg', '_55x55.jpg') + "' /></a>";
			h += "<div class='info'><a href='#users/" + data.messages[key].nick + "' >" + data.messages[key].nick + "</a><div class='offline-status " + ((data.messages[key].userOnline == 1) ? ("online-status") : ("")) + "'></div></div>";
			h += "<a href='#messages/read/" + data.messages[key].id + "' class='text'><strong> " + data.messages[key].title + "</strong>" + data.messages[key].message + "</a>";
			h += "<div class='actions'>"+data.messages[key].date+"<a href='javascript:;' onclick='delete_message(" + data.messages[key].id + ", this)'></a></div>";
			h += "</div>";
		}
	}else{
		h += "<h4>Ящик входящих сообщений пуст</h4>";
	}	
	return h;
}



function messages_outbox(data)
{
	h = "";
	if (data.messages.length > 0) {
		for(key=0;key<data.messages.length-1;key++){
			h += "<div class='message " + ((data.messages[key].read == 1) ? ("read") : ("")) + "'>";
			h += '<input id="m' + data.messages[key].id + '" class="markedMessage" type="checkbox"/>';
			h += "<a href='/#users/" + data.messages[key].nick + "' class='avatar'><img src='" + data.messages[key].avatar.replace('.jpg', '_55x55.jpg') + "' /></a>";
			h += "<div class='info'><a href='#users/" + data.messages[key].nick + "' >" + data.messages[key].nick + "</a><div class='offline-status " + ((data.messages[key].userOnline == 1) ? ("online-status") : ("")) + "'></div></div>";
			h += "<a href='#messages/read/" + data.messages[key].id + "' class='text'><strong> " + data.messages[key].title + "</strong>" + data.messages[key].message + "</a>";
			h += "<div class='actions'>"+data.messages[key].date+"<a href='javascript:;' onclick='delete_message(" + data.messages[key].id + ", this)'></a></div>";
			h += "</div>";
		}
	}else{
		h += "<h4>Ящик исходящих сообщений пуст</h4>";
	}	
	return h;
}



function send_message(rcp)
{
	var topic = (($(".messagesLayout span.topic")[0]) ? ("Re: " + $(".messagesLayout span.topic").html()) : ($(".messagesLayout input.topic").val()));
	$('.messagesLayout .answer a.answer').replaceWith("<img style='margin-left:215px;margin-bottom:25px;margin-top:7px;' src='/media/images/beta-pics/loaders/universal_loader_01.gif'/>");
	$.post("/messages/send/",{
		to: rcp,
		title: topic,
		message: $(".messagesLayout .answer textarea").val()
	}, function(data){
		var json =   data;
		if(json.success == 1){
			$('.messagesLayout .answer img').replaceWith("<span style='float:left;width:100%;text-align:center;margin-bottom:25px;margin-top:7px;'>Сообщение отправлено.</span>");
			setTimeout(function(){
				goToUrl("messages");
			}, 1200);
			return false;
		}
	});
}

function new_message()
{
	$($('.messagesLayout .answer a.profileButton')[1]).remove();
	$('.messagesLayout .answer a.profileButton').replaceWith("<img style='margin-left:215px;margin-bottom:25px;margin-top:7px;' src='/media/images/beta-pics/loaders/universal_loader_01.gif'/>");
	$.post("/messages/send/",{to:$(".messagesLayout input.nick").val(), title:$(".messagesLayout input.title").val(), message:$(".messagesLayout .answer textarea").val()}, function(data){
		var json = data ;
		if(json.success == 1){
			$('.messagesLayout .answer img').replaceWith("<span style='float:left;width:100%;text-align:center;margin-bottom:25px;margin-top:7px;'>Сообщение отправлено.</span>");
			setTimeout(function(){
				goToUrl("messages");
			},1200);
			return false;
		}
	});
}


function delete_message(id, obj)
{
	if(!confirm("Вы уверены?")){
		return;
	}
	core.clrscr();
	$.post("/messages/delete/",{id:id}, function(data){
	var json =  data ;
		if(json.success == 1){
			check_mail();
			if(obj != 'inbox' && obj!='outbox'){
				core.refresh();
			}else {
				$('#messagesLayout').html('<h4>Сообщение удалено.</h4>');
				setTimeout(function(){
					if(obj == 'inbox'){
						goToUrl("messages");
					}else{
						goToUrl("messages/outbox");
					}
				}, 1200);
			}
		}
	});
}




function show_userlist()
{
	$('#choose').remove();
	$.get("/user/friends/", function(data){
		h = "<ul class='choose' id='choose'>"
		for(key=0;key<data.users.length;key++){
			h+='<li><a  href="javascript:;" onclick = "select_nick(this);">'+data.users[key].nick+'</a>';
			if(data.users[key].name!=''){
				h+=' - '+ data.users[key].name + ' ' + data.users[key].surname;
			}
			else {
				h+= "—  пользователь  не представился";
			}
			h+= '</li>';
		}
		h +="</ul>";
		$("body").append(h);
	});
}


function select_nick(obj)
{
	t = $(obj).text();
	$("#messagesLayout .answer .nick").val(t);
	$('#choose').remove();
}


function write_to_user(nick)
{
	rcp_user = nick;
	goToUrl("messages/new");
}



function check_mail() 
{
	$.getJSON('/messages/check/', function(data){
		if (data.newmsg > 0){
			if($('.userMenu .mailAlert').html()*1!=data.newmsg || $('.userMenu .mailAlert').css('display')=='none'){
				if( location.hash.indexOf('messages')!=-1 && location.hash.indexOf('outbox')==-1 && location.hash.indexOf('new')==-1 && location.hash.indexOf('read')==-1){
					core.refresh();
				}
			}
			$('.userMenu .mailAlert').html(data.newmsg).fadeIn();
		}
		
		if (data.newwallmsg > 0){
			if($('.userMenu .wallAlert').html()*1!=data.newwallmsg || $('.userMenu .wallAlert').css('display')=='none'){
				if( location.hash.indexOf('wall')!=-1){
					core.refresh();
				}
			}
			$('.userMenu .wallAlert').html(data.newwallmsg).fadeIn();
		}
		
		if (data.newmsg == 0) {
			$('.userMenu .mailAlert').hide();
		}
		if (data.newwallmsg == 0) {
			$('.userMenu .wallAlert').hide();
		}
	});
}





function pagingFuncs(options){
	this.options = options;
	this.pageNumber = options.curPage;
}

pagingFuncs.prototype = {
	build: function(obj){
		var t = this;
		if (!t.obj) {
			this.obj = obj;
		}
		
		var nPages = Math.ceil(t.options.nElems / t.options.itemsPerPage);
		if (!nPages || nPages < 2) 
			return;
		var h = '';
		
		if (t.pageNumber > 0) 
			h += '<span class="previousPage ' + t.options.color + 'Text"><a href="javascript:;">Влево</a></span>';
		else 
			h += '<span class="previousPage unactive">Влево</span>';
		
		h += '<span class="numbers">';
		var startPage = 0;
		if (nPages > 7) {
			if (t.pageNumber > 1) {
				startPage = t.pageNumber - 2;
			}
			
			if (t.pageNumber > nPages - 6) {
				startPage = nPages - 7;
			}
		}
		var j = 0;
		var flag = 0;
		for (i = startPage; i < nPages; i++) {
			if (nPages <= 7) {
				if (i == t.pageNumber) {
					h += '<span class="pageNumber ' + t.options.color + '">' + (i + 1) + '</span>';
				}
				else {
					h += '<a href="javascript:;" class="pageNumber">';
					h += i + 1;
					h += '</a>';
				}
			}
			else {
			
				if (startPage + 2 < nPages / 2) {
					if (i == t.pageNumber) {
						h += '<span class="pageNumber ' + t.options.color + '">' + (i + 1) + '</span>';
					}
					else {
						if ((nPages > 7 && j < 6) || i == nPages - 1) {
							h += '<a href="javascript:;" class="pageNumber">';
							h += i + 1;
							h += '</a>';
						}
						else {
							if (flag == 0) {
								h += '<span class="pageNumber">...</span>';
								flag = 1;
							}
						}
					}
				}
				else {
					if (flag == 0) {
						h += '<a href="javascript:;" class="pageNumber">1</a>';
						h += '<span class="pageNumber">...</span>';
						flag = 1;
					}
					if (i == t.pageNumber) {
						h += '<span class="pageNumber ' + t.options.color + '">' + (i + 1) + '</span>';
					}
					else {
						if (nPages > 7 && j > 0) {
							h += '<a href="javascript:;" class="pageNumber">';
							h += i + 1;
							h += '</a>';
						}
					}
				}
				j++;
			}
		}
		h += '</span>';
		if (t.pageNumber == nPages - 1) 
			h += '<span class="nextPage unactive">Вправо</span>';
		else 
			h += '<span class="nextPage ' + t.options.color + 'Text "><a href="javascript:;">Вправо</a></span>';
		h += "<span class='howToWork' style='width:185px;left:445px;top:-37px;'><span class='cont' style='width:185px;'><span class='i-icon'></span><span class='cont' style='width:170px;margin-top:3px;height:12px;'>Нажмите Ctrl и → одновременно</span></span><span class='tale'></span></span>";
		$(t.obj).html(h);
		
		$(t.obj + ' a.pageNumber').click(function(){
			t.pageNumber = $(this).html() * 1 - 1;
			if (!t.options.func) {
				var parsedHash = location.hash.split('/');
				var rexp = /[0-9]/;
				for (i = 0; i < parsedHash.length; i++) {
					if (rexp.test(parsedHash[i])) {
						parsedHash[i] = t.pageNumber;
						i = -1;
						break;
					}
				}
				if (i != -1) 
					location.hash += '/' + t.pageNumber;
				else 
					location.hash = parsedHash.join('/');
			} else{
				t.options.func(t.pageNumber + 1);
			}
		});
		
		$(t.obj + ' .nextPage a').click(function(){
			t.pageNumber = $(t.obj + ' span.pageNumber').html() * 1;
			if (!t.options.func) {
				var parsedHash = location.hash.split('/');
				var rexp = /[0-9]/;
				for (i = 0; i < parsedHash.length; i++) {
					if (rexp.test(parsedHash[i])) {
						parsedHash[i] = t.pageNumber;
						break;
					}
				}
				if (i == parsedHash.length) 
					location.hash += '/' + t.pageNumber;
				else 
					location.hash = parsedHash.join('/');
			} else{
				t.options.func(t.pageNumber + 1);
			}
		});
		
		$(t.obj + ' .previousPage a').click(function(){
			t.pageNumber = $(t.obj + ' span.pageNumber').html() * 1 - 2;
			if (!t.options.func) {
				var parsedHash = location.hash.split('/');
				var rexp = /[0-9]/;
				for (i = 0; i < parsedHash.length; i++) {
					if (rexp.test(parsedHash[i])) {
						parsedHash[i] = t.pageNumber;
						break;
					}
				}
				if (i == parsedHash.length) 
					location.hash += '/' + t.pageNumber;
				else 
					location.hash = parsedHash.join('/');
			} else{
				t.options.func(t.pageNumber + 1);
			}
		});
		
		var cur_hash = location.hash;
		
		document.onkeydown = function(event){
			if (window.event) 
				event = window.event;
			if (event.ctrlKey) {
				switch (event.keyCode ? event.keyCode : event.which ? event.which : null) {
					case 0x25:
						$(t.obj + ' .previousPage a').trigger('click');
						break;
					case 0x27:
						$(t.obj + ' .nextPage a').trigger('click');
						break;
				}
			}
		}
	}
}

