var fleft = 10;
var ftop  = 12;
var bkmark_width = 20;
var rounded_page_top = 2;
var RightPartWidth = 300;
var fwidth;
var fheight;
var scroller_on = false;
var keepScrollerOn = false;
var ulist_timer;
var ignor_list = [];
var user_list = [];
var friends = [];
var pmessages = [];
var myrgbcolor;
var myrgbcolor_reg;
var user;
var tab_area_open = false;
var disableTabAreaEvents = false;// fix events glitches when open\closing privates
var xhr;//xml http request
var missedChecks;
var rrate = 8000;
var lastcopiednick;
var lastcopiednick_id;
var history_recipient_id;
var refresh; //interval timer
var prevNskTimeReading = 0;
var slideractivated = false;
var scroll_width = 17;//34;
var scroll_arrow_height = 0;// was 14; but I think arrows useless in our case. 2DO remove this from everywhere when 100% sure
var timestamp = 0;
var lastmsgcrc = 0;
var crc = 0;
var bkmark_height;
var boolk;
var json;
var mytext;


$(document).ready(function(){
	
	positionElements(true);
	
	// config sounds
	soundManager.url = 'sounds/';
	soundManager.debugMode = true;
	soundManager.waitForWindowLoad = true;
	
	soundManager.onload = function() {
		boolk = soundManager.createSound({ id: 'mySound',  url: 'sounds/boolk.mp3', volume: 30, autoPlay: false});
	}

	
	hideAllSideWidgets();
	$("#mysettings").hide();
	$("#newuser").hide();
	$("#duplo").hide();
	$("#waiter").show();
	// hide scroller at startup
	$("#scroller").fadeOut();
	

	// show\hide scroller on mousemove
	
	$("#frame").mouseover(function() {
		if (!scroller_on) {
			$("#scroller").fadeIn("normal");
			//$("#logo_placeholder").fadeOut("slow");
			scroller_on = true;
			}
		});
	//$("#inputarea_form").mouseover(function() {
	$("#rounded_inputarea").mouseover(function() {
		if (!keepScrollerOn && scroller_on) {
			$("#scroller").fadeOut("normal");
			//$("#logo_placeholder").fadeIn("normal");
			scroller_on = false;
			slideractivated = false; // this and 2 other places - make sure slideractivated = false anyway in case slider.mouseup did not fire correctly
		}
		});
	$("#rounded_sidearea").mouseover(function() {
		if (!keepScrollerOn && scroller_on) {
			$("#scroller").fadeOut("normal");
			//$("#logo_placeholder").fadeIn("normal");
			slideractivated = false;
			scroller_on = false;
		}
		});

	$("#rounded_loginarea").mouseover(function() {
		if (!keepScrollerOn && scroller_on) {
			$("#scroller").fadeOut("normal");
			//$("#logo_placeholder").fadeIn("normal");
			scroller_on = false;
			slideractivated = false;
		}
		});
	$("#slider").mousedown(function(){slideractivated = true;});
	$("#slider").mouseup(function(){slideractivated = false;});
	
// When layout is ready, start dealing with business functionality
	     // register events - on submit form
		 // Send new Message
	     $(document.forms[0]).submit(
	     function(){ 
		 clearInterval(refresh);
	       $.post("backend.php",{
	             			usertext: $("#msg").val(),
	             			name: $("#author").val(),
	             			action: "postmsg",
	             			timestamp: timestamp,
	             			crc: crc,
							italic: $("#italic").attr("checked")?1:0,
							bold: $("#bold").attr("checked")?1:0,
							rgb: myrgbcolor,
							recipient_id: getRecipientId()
	           		     }, 
	           		     function(new_data) {
						 	if (jQuery.isArray(new_data.messages[0]) && new_data.messages[0][0] == "Error") 
								alert(new_data.messages[0][1]);
							else {
								//$("#msg").empty();
								//$("#msg").select();
								//$("#msg").focus();
								addMessagesMy(new_data);
								refresh = setInterval(updateMsg,rrate);
								$("#msg").val("");
								$("#msg").focus();
							}
	                             },"json");
	       return false;
	     });


		 // login
	     $(document.forms[1]).submit(
	     function(){ 
	       $.post("backend.php",{
	             			password: $("#password").val(),
	             			username: $("#username").val(),
							remember: $("#rememberme").attr("checked")?1:0,
	             			action: "login"
	           		     }, 
	           		     function(new_data) {
				         			if (new_data == "true") {
										$("#rounded_loginarea").hide('drop', {
											direction: "right"
										});
										timestamp = 0;
										lastmsgcrc = 0;
										//$("#content").empty();
										initialRefresh();
										// get user settings and set color
										$.getJSON("backend.php", {
											action: 'getUserSettings'
										}, function(userdata){
											if (userdata.rgbcolor == 'undefined') userdata.rgbcolor = "#FFFFFF";
											myrgbcolor_reg = userdata.rgbcolor;
											myrgbcolor = userdata.rgbcolor;
											
											$('#colorSelector').css('background-color',userdata.rgbcolor);
											
											user = userdata;
											if (userdata.isitalic == 1) 
												$('#italic').attr('checked', 'checked');
											if (userdata.isbold == 1) 
												$('#bold').attr('checked', 'checked');
											$("#msg").focus();
											
										});
										// get friends
										$.getJSON("backend.php", {action: 'getFriends'}, function(myfriends){	friends = myfriends; })
									}
									else {
										$("#password").val(""),
	             						$("#username").val("")
										showError(new_data);
									}
	                             });
	       return false;
	     });
		 
		 // save user settings
		 $("#mysettings_submit").click(function(){
		 	$.post("backend.php",{
				action: "saveSettings",
				pwd1: $('#mysettings_pwd1').val(),
				pwd2: $('#mysettings_pwd1').val(),
				isitalic: $('#mysettings_isitalic').attr('checked')?1:0,
				isbold: $('#mysettings_isbold').attr('checked')?1:0,
				rgbcolor: myrgbcolor_reg,
				wantsound: $('#mysettings_wantsound').attr('checked')?1:0,
				dont_show_sleep: $('#mysettings_dont_show_sleep').attr('checked')?1:0,
				disable_email_notifications: $('#mysettings_stop_emails').attr('checked')?1:0,
				email: $('#mysettings_email').val(),
				name: $('#mysettings_name').val(),
				headpic: $('#mysettings_headpic').val(),
				show_picture: $('#mysettings_show_picture').attr('checked')?1:0
			},function(response){if (response != "success") {
				//showError(response);
				alert(response);
			}
			else {
				$("#mysettings").hide();
				$('#mycolorpickerwrapper_reg').hide();
				user.rgbcolor = myrgbcolor_reg;
				user.isbold = $('#mysettings_isbold').attr('checked') ? 1 : 0;
				user.isitalic = $('#mysettings_isitalic').attr('checked') ? 1 : 0;
				user.wantsound = $('#mysettings_wantsound').attr('checked') ? 1 : 0;
				user.dont_show_sleep = $('#mysettings_dont_show_sleep').attr('checked') ? 1 : 0;
				user.disable_email_notifications = $('#mysettings_stop_emails').attr('checked') ? 1 : 0;
				user.email = $('#mysettings_email').val();
				user.name = $('#mysettings_name').val();
				user.headpic = $('#mysettings_headpic').val();
				user.show_picture = $('#mysettings_show_picture').attr('checked') ? 1 : 0
				
			}})
		 });
		 
		 
		 // create new user
		 $("#newuser_submit").click(function(){

		 	$.post("backend.php",{
				action: "newUser",
				pwd1: $('#newuser_pwd1').val(),
				pwd2: $('#newuser_pwd1').val(),
				email: $('#newuser_email').val(),
				name: $('#newuser_name').val()
			},function(response){if (response != "success") 
				alert(response);
			else {
				$("#newuser").hide();
				alert("Поздравляем! Новый партизан зарегистрирован. \nДобро пожаловать в ряды !!!");
			}})
		 });
		 
		 
		 // configure photo upload button
		var upload = new AjaxUpload('upload_button', {
			action: 'backend.php', 
			name: 'pikcha', 
			data: {action: 'uploadphoto'}, 
			autoSubmit: true, 
			onSubmit: function(file, extension){$("#waiter_upload").show();}, 
			onComplete: function(file, response){
				$("#waiter_upload").hide();
				if (response != '<pre>success</pre>') {
					response = response.replace(/<pre>/i,'');
					response = response.replace(/<\/pre>/i,'');
					alert(response);
					//$("#mysettings_pikcha_span").html("Картинки пока нету никакой");
					//user.pic = "0";
				}
				else {
					
					user.pic = "1";
					$("#mysettings_pikcha_span").html(pikcha_span);
				}
				}
			});

		 
		// initialize font color picker
	    $('#colorSelector').mouseup(function(){ if ( $('#mycolorpickerwrapper').css('display') == 'none') $('#mycolorpickerwrapper').show(); else $('#mycolorpickerwrapper').hide();});
	    $('#mycolorpicker').farbtastic(function(){myrgbcolor = this.color; $('#testtext').css('color',this.color); $('#colorSelector').css('background-color',this.color)});
    	$('#mycolorpickerwrapper').hide();
		$('#colorSelector_reg').mouseup(function(){ if ( $('#mycolorpickerwrapper_reg').css('display') == 'none') $('#mycolorpickerwrapper_reg').show(); else $('#mycolorpickerwrapper_reg').hide();});
		$('#mycolorpicker_reg').farbtastic(function(){$('#color_code_reg').text(this.color); myrgbcolor_reg = this.color; $('#testtext_reg').css('color',this.color); $('#colorSelector_reg').css('background-color',this.color)});
		$('#mycolorpickerwrapper_reg').hide();
		 
		 
		 
		 // register onwindow resize events to adjust to screen change
		 $(window).resize(function(){
		 	// this is IE resize bug fix
			newfwidth = $(window).width() - RightPartWidth - 1;
			newfheight = $(window).height() - 120;
		 	if ((fwidth == newfwidth && fheight == newfheight) || (fwidth == 0 && fheight == 0)) return;
		 	$("#slider").draggable('destroy');
		 	positionElements(false);
			checkHeightAndMove();
			});

		// Auto-Login
		if ($("#username").val() != '' && $("#password").val() != '') {
			$("#rememberme").attr('checked','checked');
			$(document.forms[1]).triggerHandler("submit");
		} else	updateMsg(); // AJAX call to get current messages. We dont want to get messages if user logsin automatically to avoid dbl refresh
		
		// we want to delay this to 1) let other parts to load, 2) let autologin process, to avoid double refershing in this case
		setTimeout(initialRefresh,3000);
		// force refresh if stalled (just as precaution)
		setInterval(keepAlive,3000*60);
	    

	$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
		clearInterval(refresh);
		refresh = setInterval(updateMsg,rrate);
		});

});


/**************************************************************/
/********   END INITIALIZATIONS *******************************/
/**************************************************************/


function roundCorners(div_id){
        $("#"+div_id).wrap('<div id="rounded_'+div_id+'" class="dialog"><div class="bd"><div class="c"><div class="s"></div></div></div></div>');
	$("#rounded_"+div_id).prepend('<div class="hd"><div class="c"></div></div>').append('<div class="ft"><div class="c"></div></div>');

}


function addMessagesMy(json) {
		mytext = "";
		user_list = json.userlist;
		jml = json.messages.length;
		jpml = json.pmessages.length;
		myteststr = "";




		// reverse order - new at the bottom
		for (i=jml-1;i>=0;i--) {
		    jmsg = json.messages[i];
			if (user != null && user.id != null && jmsg.recipient_id == user.id && json.userlist.length>2) {
				hl = "msg-my";
				bl = "<img src=img/balloon.png>";
			}
			else {
				hl = "msg";
				bl = "";
			}
			// add if 1) not in ignor 2) not exist already (after parallel msg get by posting) - this approach still allows (in theory) duplicates for same seconds. Will have to rewrite probably.
			
			if (jQuery.inArray(jmsg.sender_id, ignor_list) == -1 && jmsg.tm >= timestamp && lastmsgcrc != jmsg.crc) {
				mytext += "<div class='" + hl + "'>" + bl + json.messages[i].msg + "</div>";
				//if (jml>0 && i==0) alert(json.messages[0].msg);
			}

			}
			$("#content").append(mytext);
			// TURN IT BACK ON or find better solution
			if (!slideractivated)
				checkHeightAndMove();

		for (i = 0; i < jpml; i++) {
			// avoid duplicates
			if (i==0 || (i>0 && json.pmessages[i-1].crc!=json.pmessages[i].crc))
				pmessages.push(json.pmessages[i]);
		}
		if (jpml>0) updateMsgBar();

		if (jml>0) {
			lastmsgcrc = json.messages[0].crc;// else lastmsgcrc=0;
			timestamp = json.messages[0].tm;
			}
		if (jpml > 0) {
			if (timestamp < json.pmessages[0].tm) {
				lastmsgcrc = json.pmessages[0].crc;
				timestamp = json.pmessages[0].tm;
			}
			}
			
//			if (jpml+jml>0 && user!=null && user.wantsound == "1") $("#playsound").html("<embed src='sounds/boolk.wav' hidden=true autostart=true loop=false>");
		if (jpml+jml>0 && boolk!=null && user!=null && user.wantsound == "1") boolk.play();
			
		
	}

function updateMsgBar(){		
			mystr="";
			for (i=0;i<pmessages.length;i++) if (i<8) mystr+="<img src='img/mesicon_m.gif'/><br/>"; else if (i==8) mystr+="+"+(pmessages.length-i);
			$("#tab_private_msgs_area_title").html(mystr).css("top","0px");//css("top",frame_height-$("#tab_private_msgs_area").height());
}

function updateMsg(){
	// restart if hang
	if (missedChecks > 5) {
		missedChecks = 0;
		clearInterval(refresh);
		setInterval(updateMsg, rrate)
	}
	// dont want to send request if we're still waiting
	if (xhr && xhr.readyState != 4 && xhr.readyState != 0) {
		missedChecks++;
		return;
	}
	     xhr = $.getJSON("backend.php",{ action: "refresh", timestamp: timestamp, crc:crc}, function(new_data) {     
		 	addMessagesMy(new_data);  
			$("#waiter").hide(); 
			$("#vNske").html("в Нске <br/>"+new_data.time);
			$("#vNske_s").html("в Нске <br/>"+new_data.time);
			//$("#msg").focus();
			});
	     //setTimeout('updateMsg()', 4000);
		 
	   }


function adjustFrameContent(position) {
	// when slider in pos arrow.height, we have content.top = 0, i.e. we see upper part of content
	// when slider in pos (frame.height-arrow.height-slider.height), we see lower part of content (default)

	lowest_slider_position = $("#scroller").height()-scroll_arrow_height-$("#slider").height();
	lowest_content_position = $("#frame").height()-$("#content").height();

	$("#content").css("top", parseInt(lowest_content_position*((position-scroll_arrow_height)/(lowest_slider_position-scroll_arrow_height)))+"px");
	$("#coord_content").val(position-scroll_arrow_height);// post coordinates

}

/*function adjustScrollerContent(position) {
	lowest_slider_position = $("#scroller").height()-scroll_arrow_height-$("#slider").height();
	lowest_content_position = $("#frame").height()-$("#content").height();
	$("#slider").css("top",parseInt((lowest_slider_position-scroll_arrow_height)*position/lowest_content_position+scroll_arrow_height)+"px");
}*/

function checkHeightAndMove(){
		//content_top = parseInt($("#content").css("top"));
		//moveto = content_top-($("#content").height()+content_top-$("#frame").height());
		moveto = $("#frame").height()-$("#content").height();
		$("#content").animate({top: moveto+"px"});
		// set slider in initial position
		$("#slider").css("top", (frame_height - scroll_arrow_height - 36) + "px");
}

/*function moveContentBy(y){
	ch = $("#content").height();
	ct = parseInt($("#content").css("top"));
	div_top = ct;
	if ((div_top+y) > 0) y = -1*div_top;
	if ((div_top+y) < $("#frame").height()-ch) y = frame_height - div_top - ch;
        moveto = ct + y;
	$("#content").animate({top: moveto+"px"});
	adjustScrollerContent(moveto);}*/
	
function positionElements(doRound){
	fwidth = $(window).width() - RightPartWidth - 1;//screen.width-RightPartWidth-1;//$('body').width()-RightPartWidth-1;//600;
	fheight = $(window).height() - 120;//screen.height-300;//500;

	bkmark_height = parseInt(fheight*0.32);
	$("#sidearea").height($(window).height() - 56);
	$("#inputarea").height(35);
	$("#loginarea").height(35);
	$('#msg').css('width', fwidth - 260 + "px");
	$('#vNskeWrapper').css('top','10px').css('left',fwidth-118+'px');
	$('#vNske').css('top','3px').css('left','7px');
	$('#vNske_s').css('top','5px').css('left','5px');
	
	if (doRound) {
		roundCorners("inputarea");
		roundCorners("loginarea");
		roundCorners("page");
		roundCorners("sidearea");
	}
	
	//position main frame
	$("#frame").css("left", fleft + "px").css("top", ftop + "px").css("width", fwidth + "px").css("height", fheight + "px");
	
	$("#rounded_page").width(fwidth + 24);
	$("#page").height(fheight - 72);
	// this is left coord of the whole thing
	$("#rounded_page").css("left", "0px").css("top", rounded_page_top + "px");
	
	$("#rounded_inputarea").css("top", ftop + fheight + 19 + "px").css("left", $("#rounded_page").css("left")).width($("#rounded_page").width());
	$("#rounded_loginarea").css("left", $("#rounded_inputarea").css("left")).css("top", $("#rounded_inputarea").css("top")).css("width", $("#rounded_inputarea").css("width"));
	$("#rounded_sidearea").css("left", fwidth + 22 + "px").css("top", $("#rounded_page").css("top")).css("width", RightPartWidth - 22 + "px");
	
	page_left = parseInt($("#rounded_page").css("left"));
	$("#content").width(fwidth-20+"px").css("overflow","visible");
	
	// position "waiting" message
	$("#waiter").css("top", fheight - fheight / 2 - 50 + "px").css("left", fwidth / 2 - 100 + "px");
	$("#waiter_side_content").css("top", "100px").css("left", "10px");//.width(250);
	$("#waiter_tab").css("top", fheight - fheight / 2 - 50 + "px").css("left", fwidth / 2 - 100 + "px").hide();
	
	// position error message placeholder
	$("#notification").css("top", fheight - fheight / 2 - 50 + "px").css("left", fwidth / 2 - 50 + "px").hide();
	
	// position scroller
	myleft = fwidth - scroll_width - 2 - bkmark_width;
	frame_height = $("#frame").height();
	$("#scroller").css("left", myleft + "px").css("top", "0px").height(frame_height + "px");
	//$("#downarrow").css("top", frame_height - scroll_arrow_height);
	
	
	// make slider draggable
	$("#slider").draggable({
		containment: [fwidth - 9 - bkmark_width, rounded_page_top + scroll_arrow_height + 12, fwidth - 9 - bkmark_width, rounded_page_top + fheight - 24],
		drag: function(event, ui){
			adjustFrameContent(ui.position.top)
		},
		start: function(){
			keepScrollerOn = true;
		},
		stop: function(){
			keepScrollerOn = false;
		}
	});
	
	// set slider in initial position
	$("#slider").css("top", (frame_height - scroll_arrow_height - 36) + "px"); // 36 is hight of the slider - for some reason it becomes 0 after resize

/*	$("#downarrow").click(function(){
		moveContentBy(-1 * parseInt(fheight / 2))	});
	$("#uparrow").click(function(){
		moveContentBy(parseInt(fheight / 2))	});	*/

	// move color picker
	$('#mycolorpickerwrapper').css('top', parseInt(fheight / 2) - 150 + "px").css('left', parseInt(fwidth / 2) - 100 + "px");
	$('#mycolorpickerwrapper_reg').css('top', parseInt(fheight / 2) - 150 + "px").css('left', "10px");
	
	// configure text 
	$("#dialog_text").dialog('destroy');
	$("#dialog_text").dialog({
		bgiframe: true,
		height: fheight + 45,
		modal: true,
		autoOpen: false,
		hide: 'blind',
		maxHeight: fheight,
		maxWidth: parseInt(fwidth * 0.85),
		//show: 'blind',
		width: parseInt(fwidth * 0.85),
		draggable: false,
		resizable: false,
		close: function(){$("#dialog_text").html("")}
	});
	
	$("#mysettings").css("height", "450px").css("width", "400px").css("top", "50px").css("left", parseInt(fwidth / 2) - 100 + "px");
	$("#newuser").css("height", "250px").css("width", "400px").css("top", "150px").css("left", parseInt(fwidth / 2) - 160 + "px");
	$("#duplo").css("height", "450px").css("width", "400px").css("top", "50px").css("left", parseInt(fwidth / 2) - 160 + "px");
	$("#side_content_gallery").height(fheight + 60);
	$("#side_content_board").height(fheight + 60);
	$("#side_content").height(fheight + 55);
	$("#side_content_complain").height(fheight + 75);
		
	// position privat messages area
	$("#tab_private_msgs_area").width(bkmark_width).css("top", fheight-bkmark_height+10+"px").css("left", fwidth - 10).height(bkmark_height);
	$("#tab_private_msgs_area_title").height(bkmark_height);
	//$("#tab_private_msgs_area_messages").hide();
	//$("#tab_private_msgs_area").show();
	// position "my and to me" area
	$("#tab_my_to_me").width(bkmark_width).css("top", parseInt(fheight/2-bkmark_height/2+10)+"px").css("left", fwidth - 10).height(bkmark_height);
	$("#tab_my_to_me_title").height(bkmark_height);
	//$("#mtm_messages").hide();
	//$("#tab_mtm_title").show();
	// position friends area
	$("#tab_ours").width(bkmark_width).css("top", "10px").css("left", fwidth - 10).height(bkmark_height);
	$("#tab_ours_title").height(bkmark_height);
	$("#tab_back_title").width(bkmark_width).css("top", "10px").css("left", fwidth - 10).height(fheight+90);
	
	/*
	registerTabEvent("private_msgs_area",fheight-bkmark_height+10,'getRenderedPrivateMessages()');
	registerTabEvent("my_to_me",parseInt(fheight/2-bkmark_height/2)+10,'getRenderedHistory()');
	registerTabEvent("ours",10,'getRenderedOurs()');
	*/
	registerTabEvent("private_msgs_area",2,'getRenderedPrivateMessages()');
	registerTabEvent("my_to_me",1,'getRenderedHistory()');
	registerTabEvent("ours",0,'getRenderedOurs()');
	
	
	
}
 
/*function randomString(string_length) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;}*/

function showError(message) {

$("#notification").html("<table width='100%' height='100%'><tr><td align=center valign=center>"+message+"</td></tr><tr><td align=center><a href='#' onclick='$(\"#notification\").hide()'>Закрыть</a></td></tr></table>").show();

}



function getRenderedUserList(){

	var u;
	ulist = "<table>";
	for (var i = 0; i < user_list.length; i++) {
		ulist += '<tr><td><a href="#" onclick="showUlistMsg(\''+user_list[i]['user_id']+'\')"><img src="img/mes.gif" border=0></a></td><td>' + user_list[i]['nick_p2h'] + '</td><td nowrap>';
		ulist += '&nbsp; <a href="javascript:void(0)" onclick="';
		arr_id	= jQuery.inArray(user_list[i]['user_id'],ignor_list);
		if (arr_id == -1) 
			ulist += 'ignor_list.push(\''+user_list[i]['user_id']+'\');getRenderedUserList()">В Игнор!</a>';
		else 			
			ulist += 'ignor_list['+arr_id+']=\'\';getRenderedUserList()"><font color=red>Из игнора!</font></a>'
			
		ulist += '</td><td>';
		if (user != null && jQuery.inArray(user_list[i]['user_id'],friends) == -1 && user.id!=user_list[i]['user_id']) ulist += '<img src=img/enlist.png title="Добавить к Своим" onclick="addToOurs(\''+user_list[i]['user_id']+'\')"/>';
		ulist += '</td></tr><tr><td colspan=4 align=right><div id="ulist_msg'+user_list[i]['user_id']+'"></div></td></tr>';
	}
	ulist+='</table>';
	
	$("#side_content_ulist").html(ulist);
	
}

function addToOurs(fid){
	friends.push(fid);
	$.get('backend.php',{action: 'addFriend', friend_id: fid});
	alert("Партизан успешно зачислен в \"свои\"");
}

function dropFromOurs(evt,fid){
	if (evt) disableEventPropagation(evt);
	for (var i=0;i<friends.length;i++) if (friends[i] == fid) friends[i] = '';
	$.get('backend.php',{action: 'dropFriend', friend_id: fid});
	alert("Партизан успешно отчислен из списка \"своих\"");
}
function showUlistMsg(id){
	clearInterval(ulist_timer);
	$mystr = "<textarea id='ulist_msg"+id+"_txt' style='width:230px; height: 100px'></textarea><div style='float:right'><a href='javascript:void(0)' onclick='hideUlistMsg(\""+id+"\")'>Не, не буду.</a>&nbsp;&nbsp;<input type=button value='Заслать' onclick='submitUlistMsg(\""+id+"\")'/></div>";
	$("#ulist_msg"+id).html($mystr);
}

function showPlistMsg(id){
	$("#plist_msg").remove();
	$mystr = "<div id='plist_msg'><textarea id='plist_msg_txt' style='width:200px; height: 120px'></textarea><div style='float:right'><a href='javascript:void(0)' onclick='hidePlistMsg(event)'>Не, не буду.</a>&nbsp;&nbsp;<input type=button value='Заслать' onclick='submitPlistMsg(\""+id+"\")'/></div></div>";
	$("#plist_row_"+id).append($mystr);}


function hideUlistMsg(id){
	$("#plist_msg").empty();;
	ulist_timer = setInterval("getRenderedUserList()",4000)
}

function hidePlistMsg(evt){
	if (evt) disableEventPropagation(evt);
	$("#plist_msg").remove()
}

function submitUlistMsg(id) {
	$.post("backend.php",{msg: $("#ulist_msg"+id+"_txt").val(),recipient: id, action: "postPrivateMsg"},function(response){
		if (response == "success") 			hideUlistMsg(id);		else 			alert(response);
	});
	
}

function submitPlistMsg(id) {
	$.post("backend.php",{msg: $("#plist_msg_txt").val(),recipient: id, action: "postPrivateMsg"},function(response){
		if (response == "success") hidePlistMsg(); else alert(response);
	});
	
}


function getRenderedComplainList(){
	ulist = "<table>";
	for (var i = 0; i < user_list.length; i++) {
		onclick = "getRenderedComplaintConfirmation('"+user_list[i]['nick_p2h']+"','"+user_list[i]['user_id']+"')";
		ulist += '<tr><td>'+user_list[i]['nick_p2h'] + '</td><td nowrap>';
		ulist += '&nbsp; <a href="javascript:void(0)" onclick="'+onclick+'">Пожаловаться</td></tr>';
	}
	ulist+='</table>';
	
	$("#side_content_complain_list").html(ulist);
}

function getRenderedComplaintConfirmation(violator,user_id){
	onclick = '$.get(\'backend.php\',{user_id: \''+user_id+'\',action: \'complain\'}, function(response){getRenderedComplaintConfirmationDone(response)})';
						 	
	mystr = '<p align=left>Дорогой партизан! <br/><br/> Вы желаете резрешить ситуацию с партизаном "'+violator+'".<br/>';
	mystr+= 'Если кто-то из санитаров в данный момент на посту, он(а) придет и вмешается. <br/> Ваши личные разногласия с кем-либо не являются поводом для жалобы.';
	mystr+= 'Стрелки будут принимать меры только в том случае, если нарушаются <strong>Правила</strong>.';
	mystr+= '<form><input type=button value="Отослать Извещение Санитарам" onclick="'+onclick+'"/></form></p>';
	$("#side_content_complain_list").html(mystr);
}

function getRenderedComplaintConfirmationDone(response){
	if (response == 'no session')
	mystr = '<font color="#FF0000">НЕ получилось послать сообщение. Сначала нужно зайти в чат с именем пользователя и паролем</font>'; else
	mystr = '<hr/><font color="FFFF00"><b>Ваш крик отправлен отправлен санитарам.</b></font><hr/><br/>Если кто-то из санитаров следит за сообщениями, он попытается материализоваться в чате.';
	$("#side_content_complain_list").html(mystr);
}

function hideAllSideWidgets(){
	$("#side_content_complain").hide();
	$("#side_content").hide();
	$("#side_content_gallery").hide();
	$("#side_content_board").hide();
}

function hidelogo(mycallback){$("#head").hide('slide',{direction: "up"},mycallback);};
function showlogo(){$("#head").show('slide',{direction: "up"});};

function displayIcons(){
	if ($("#smileselection").css("display") == "none") {
		$("#waiter").show();
		$("#smileselection").load("inc.smileselection.php", function(){
			$("#iconsaccordion").accordion({autoHeight: false});
			$("#smileselection").show(); 
			$("#waiter").hide();
		});
		} else {
			$("#smileselection").hide();
			$("#smileselection").html("");
			}
	
	
}

function inst(text)
{
$("#msg").val($("#msg").val()+text);
$("#smileselection").html("");
$("#smileselection").hide();
}

function displaySettings(){
	// logged in?
	if (user == null) {alert("Надо сперва зайти в чат.");return;}
	pikcha_span = "Моя пикча [<a href=# onClick='window.open(\"/UserPics/mypic"+user.id+".jpg\",\"partyzan\",\"width=400,height=500,scroll=yes\")'>посмотреть</a>]";
	
	$("#mysettings_name_display").html(user.name);
	$("#mysettings_name").val(user.name);
	if (user.rgbcolor == 'undefined') user.rgbcolor = "#FFFFFF";
	$('#colorSelector_reg').css('background-color',user.rgbcolor); 
	$("#mysettings_headpic").val(user.headpic);
	if (user.isitalic == 1) $('#mysettings_isitalic').attr('checked','checked');
	if (user.isbold == 1) $('#mysettings_isbold').attr('checked','checked');	
	if (user.wantsound == 1) $("#mysettings_wantsound").attr('checked','checked');
	if (user.dont_show_sleep == 1) $("#mysettings_dont_show_sleep").attr('checked','checked');
	if (user.disable_email_notifications == 1) $("#mysettings_stop_emails").attr('checked','checked');
	$("#mysettings_email").val(user.email);
	if (user.pic != "") $("#mysettings_pikcha_span").html(pikcha_span); else $("#mysettings_pikcha_span").html("Картинки пока нету никакой");
	if (user.show_picture == 1) $("#mysettings_show_picture").attr('checked','checked');

	$("#mysettings").fadeIn();

}

function initRoster(){
	$("#side_content_gallery").load("inc.partyzans.list.php",{},function(){
		$("a[rel^='prettyPhoto']").prettyPhoto({showTitle: false, theme: 'light_rounded'});
		
	});
	hidelogo(function(){$("#side_content_gallery").show()});
	
}

function processDuplo(){
	var email = $("#duplo_email").val();
	if (email.length<5)  
		alert("А кто емейл будет вводить?");  
	else {
		$.post("backend.php",{
			duplo_msg: $("#duplo_msg").val(),
			duplo_email: $("#duplo_email").val(),
			action: "sendduplo"
			},function(response){
				if (response=="OK") {alert("Ваше сообщение отправлено в вышестоящую инстанцию. Спасибо.");$("#duplo").hide(); } else {
					alert(response);
				}
				})
		};
}

function copynick(nick, rcpt_id){
	$("#msg").focus();
	$("#msg").val(nick+", ");
	//$("#msg").focus();
	lastcopiednick = nick+", ";
	lastcopiednick_id = rcpt_id;
	}

function getRecipientId(){
	mystr = $("#msg").val();
	if (lastcopiednick_id && mystr.substr(0,lastcopiednick.length) == lastcopiednick) return lastcopiednick_id; else return 0;
}

function getRenderedPrivateMessages(evt){
	//if (evt) evt.stopPropagation();
	if (evt) disableEventPropagation(evt);
	var mystr = "<div style='padding: 10px; color: #DDDD00;  font-weight: bold;'>Мои Засылки (Приватные сообщения) &nbsp; (<a href='javascript:void(0)' onclick='getRenderedPrivateMessages(event)'>Обновить</a>)</div>";
	var hl = "none";
	var mydate = new Date();
	for (i = 0; i < pmessages.length; i++) {
		hl = (hl=="none")?"#333333":"none";
		mydate.setTime(1000*pmessages[i].tm);
		mytime = mydate.getDate()+"/"+mydate.getMonth()+" "+mydate.getHours()+":"+mydate.getMinutes();
		mystr += "<div style='padding: 10px; background-color: " + hl + "'>" + mytime + " " + pmessages[i].msg + "<br/>" + "<div style='float:right'><a href='javascript:void(0)' onclick='processPMForget(event,"+pmessages[i].sender_id+","+pmessages[i].tm+"); '>Забыть</a> &nbsp;&nbsp;&nbsp; <a href='javascript:void(0)' onclick='showPrivateMsg(event,"+i+","+pmessages[i].sender_id+","+pmessages[i].tm+")'>Ответить</a></div><br/></div><div id=private_msg"+i+"></div>";
	}
	if (pmessages.length == 0) mystr+="<br/><br/>... пусто ...";
	$("#tab_private_msgs_area_messages").html(mystr);
}

function getRenderedHistory(){
	$("#waiter_tab").show();
	$("#tab_my_to_me_messages").load("inc.conv.history.php",function(){
		//$("#tab_my_to_me_messages").scrollTop(-1000)
		//$("#history_content").css("top","-200px")
		//$("#history_content").scrollTop = $("#history_content").scrollHeight;
		$("#tab_my_to_me_messages").scrollTop($("#tab_my_to_me_messages").height());
		$("#waiter_tab").hide();

		});
}

function getRenderedOurs(){
	$("#waiter_tab").show();
	$("#tab_ours_messages").load("inc.conv.ours.php",function(){
	$("#tab_ours_messages").scrollTop($("#tab_my_to_me_messages").height());
	$("#waiter_tab").hide();
	});
}


function processPMForget(evt,sender_id,tm){
	//if (evt) disableEventPropagation(evt);
	$.post("backend.php",{sender_id: sender_id, tm: tm, action: "forgetPrivateMsg"});
	for (i = 0; i < pmessages.length; i++) 
		if (pmessages[i].tm == tm && pmessages[i].sender_id == sender_id) pmessages.splice(i,1);

	getRenderedPrivateMessages();
	updateMsgBar();
	if (pmessages.length == 0) $("#tab_back_title").trigger('click');
	}

function showPrivateMsg(evt,id,sender_id,tm){
	//if (evt) disableEventPropagation(evt);
	$mystr = "<textarea id='pmsg"+id+"_txt' style='width:100%; height: 80px'></textarea><div ><input type=button value='Заслать' onclick='submitPrivateMsg(event,"+id+","+sender_id+","+tm+")'/> &nbsp;&nbsp;&nbsp; <a href='#' onclick='hidePrivateMsg(event,"+id+","+sender_id+")'>Хотя не, не буду.</a></div>";
	$("#private_msg"+id).html($mystr);
	$("#private_msg"+id).click(function(evt){evt.stopPropagation()});
}

function hidePrivateMsg(evt,id){
	//evt.stopPropagation();
	if (evt) disableEventPropagation(evt);
	$("#private_msg"+id).empty();
}

function submitPrivateMsg(evt,id,sender_id,tm) {
	//evt.stopPropagation();
	if (evt) disableEventPropagation(evt);
	//alert(id+"-"+sender_id);
	$.post("backend.php",{msg: $("#pmsg"+id+"_txt").val(),recipient: sender_id, action: "postPrivateMsg"},function(response){
		if (response == "success") processPMForget(evt,sender_id,tm); else alert(response);
	});
	
}

function boardShowForm(parent_id){$("#board_parent_id").val(parent_id);$("#board_form").css("top",parseInt(frame_height/2)-40+"px").show();}

function boardSubmit($brd){
	$mybrd = ($brd==1)?"inc.pine.php":"inc.oak.php";
	$.post("backend.php",{
		parent_id: $("#board_parent_id").val(), board: $brd, msg: $("#board_msg").val(), action: "postBoardMsg" 
		},function(response){if (response!='success') alert(response); else $("#side_content_board").load($mybrd);}
		)}
		
function disableEventPropagation(event) {
	if (event.stopPropagation) {
	// this code is for Mozilla and Opera
	event.stopPropagation();
	}
	else if (window.event) {
	// this code is for IE
	window.event.cancelBubble = true;
	}
}		
function initialRefresh(){
	clearInterval(refresh);
	updateMsg();
	refresh = setInterval(updateMsg,rrate);
}

function keepAlive(){
	if (prevNskTimeReading != $("#vNske").html()) 
		prevNskTimeReading = $("#vNske").html();
	else {
		initialRefresh();
	}
}

function registerTabEvent(tabname,order, cb){
//	$("#tab_"+tabname).unbind("click");
//alert("Register with: "+tabtop+"px");
	$("#tab_"+tabname+"_title").click(function(event){

			if ($("#tab_private_msgs_area_title").css("display")!="none") $("#tab_private_msgs_area").hide();
			if ($("#tab_my_to_me_title").css("display")!="none") $("#tab_my_to_me").hide();
			if ($("#tab_ours_title").css("display")!="none") $("#tab_ours").hide();

			
			$("#tab_"+tabname).animate({
				left: fleft + "px",
				width: fwidth - bkmark_width - 6 + "px",
				height: fheight + 90 + "px",
				top: "10px"
			
			}, "normal", "swing",function(){
			$("#tab_"+tabname+"_messages").height(fheight+35);
			$("#tab_back_title").show();
			$("#tab_"+tabname+"_messages").show();
			eval (cb);	
			});
			
		$("#tab_back_title").click(function(event){
				$("#tab_back_title").hide();
				$("#tab_"+tabname).show();
				
				$("#tab_"+tabname).animate({
					left: fwidth - 10 + "px",
					width: bkmark_width + "px",
					height: bkmark_height + "px",
					top: 10+parseInt(fheight/2-bkmark_height/2)*order+"px"
				}, "normal", "swing");
				
				//tab_area_open = false;
				$("#tab_"+tabname+"_messages").hide();
				$("#tab_"+tabname+"_messages").empty();
			
				$("#tab_private_msgs_area").show();
				$("#tab_my_to_me").show();
				$("#tab_ours").show();
				
			});

			
		//}
		
	});
}


function replyHistory(evt,el,nick,sender_id){
	//if (evt) disableEventPropagation(evt);
	
	myel1 = $(el).parent();
	myel2 = myel1.parent();
	$("#history_form").remove();
	myel2.after("<div id=history_form style='position_relative'>"+$("#history_form_template").html()+"</div>");
	
	//$("#history_form_template").css("top",parseInt(fheight/2)-50+"px");
	//$("#history_form_template").width(fwidth-120);
	//$("#history_form_template").show();
	$("#tab_my_to_me_messages").scrollTop($("#tab_my_to_me_messages").height());
	history_recipient_id = sender_id;
	$("#history_msg").val(nick+", ");
	$("#history_msg").focus();
	
}

function replyHistoryOurs(evt,el,nick,sender_id){
	
	myel1 = $(el).parent();
	myel2 = myel1.parent();
	$("#history_form_ours").remove();
	myel2.after("<div id=history_form_ours style='position_relative'>"+$("#history_form_template_ours").html()+"</div>");
	
	
	//$("#history_form_template_ours").css("top",parseInt(fheight/2)-50+"px");
	//$("#history_form_template_ours").width(fwidth-180);
	//$("#history_form_template_ours").show();
	//$("#tab_ours_messages").scrollTop($("#tab_ours_messages").height());
	history_recipient_id = sender_id;
	$("#history_msg_ours").val(nick+", ");
	$("#history_msg_ours").focus();
	
}


function submitHistoryForm(){
	$.post("backend.php",{
	             			usertext: $("#history_msg").val(),
	             			action: "postmsg",
	             			timestamp: timestamp,
	             			crc: crc,
							italic: $("#italic").attr("checked")?1:0,
							bold: $("#bold").attr("checked")?1:0,
							rgb: myrgbcolor,
							recipient_id: history_recipient_id
	           		     }, 
	           		     function(new_data) {
						 	if (jQuery.isArray(new_data.messages[0]) && new_data.messages[0][0] == "Error") 
								alert(new_data.messages[0][1]);
							else {
								$('#history_form').remove();
								alert("Сообщение послано");
							}
	                             },"json");
}

function submitHistoryOursForm(){
	$.post("backend.php",{
	             			usertext: $("#history_msg_ours").val(),
	             			action: "postmsg",
	             			timestamp: timestamp,
	             			crc: crc,
							italic: $("#italic").attr("checked")?1:0,
							bold: $("#bold").attr("checked")?1:0,
							rgb: myrgbcolor,
							recipient_id: history_recipient_id
	           		     }, 
	           		     function(new_data) {
						 	if (jQuery.isArray(new_data.messages[0]) && new_data.messages[0][0] == "Error") 
								alert(new_data.messages[0][1]);
							else {
								$('#history_form_ours').remove();
								alert("Сообщение послано");
							}
	                             },"json");
}
