//a c00l globl variabel, that wii can chek 2 kno if DOM iz rdy
var globalDOMReady = false;

addDOMLoadEvent(function() {
	setTimeout("globalDOMReady = true;", 0);
});

String.prototype.trim = function() {
	return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
}

var Loaded = false;
function _init(){
	// For IE Flash data border
   if (document.getElementsByTagName) {
      var objs = document.getElementsByTagName("object");
      for (i=0; i<objs.length; i++) {
         objs[i].outerHTML = objs[i].outerHTML;
      }
   }
}

// позиционирование формы авторизации: вешаем на onresize
function AuthFormPosition (){
   a=$('auth',1);
   b=$('back',1);
   if (!(navigator.appName.indexOf('Internet')!=-1)){
  		a.left = ($width()/2-190);
  		a.top = ($height()/2-160);
   }
}

function AuthFormInit (){
   a=$('auth',1);
  // a.visibility='hidden';
   a.display='none';
   b=$('back',1);
   //b.visibility='hidden';
   b.display='none';
   if (!(navigator.appName.indexOf('Internet')!=-1)){
    	a.left = ($width()/2-190);
  		a.top = ($height()/2-160);
   }
}

function _show(){
   AuthFormInit();
   toggle('auth','back');
   set_opacity(0.08,0.5);
   $('login',0).focus();
}

firefoxFlashBannerFix = function(id) {
	if($(id,1).width=='100%'){
		$(id,1).width='0%'; $(id,1).height='0%';
	}
	else{
		$(id,1).width='100%'; $(id,1).height='100%';
	}
}

function fuckingIEBackgroundFix(direction){
	if (navigator.appName.indexOf('Internet')!=-1){
		if(direction<1){
			document.getElementsByTagName("body")[0].style.background='url(\'/img/prozr.gif\') 0 0 no-repeat';
			document.getElementsByTagName("body")[0].style.backgroundAttachment='fixed';
		}
		else{
			document.getElementsByTagName("body")[0].style.background='url(\'/img/bg111.gif\')';
			document.getElementsByTagName("body")[0].style.backgroundAttachment='';
		}
	}
}


function toggle(){
   var length = toggle.arguments.length;
   var direct = 0;
   var ffbannerfix = false;
   for (var i = 0; i < length; i++){
      var el = $(toggle.arguments[i],1);

      if (toggle.arguments[i] == 'back') ffbannerfix = true;

      if(el.display){
         if (el.display=='block') {
           // el.visibility='hidden';
            //el.overflow = 'hidden';
            el.display='none';

            direct = 1;
         }
         else if(el.display=='' || el.display=='none' || el.display=='null'){
            //el.visibility='visible';
           // el.overflow = 'visible';
            el.display='block';
         }
      }
      else{
         //el.visibility=='visible';
         //el.overflow = 'visible';
         el.display='block';
      }
   }
   if (navigator.appName.indexOf('Netscape')!=-1  && ffbannerfix){
   	firefoxFlashBannerFix('back');
   }

   //fuckingIEBackgroundFix(direct);
}

var timerID = null;
var timerRunning = false;
var u = 0;
d_u = 'undefined';

function set_opacity (left,right){
   var back = $('back',1);
   if(typeof back.MozOpacity != d_u) back.MozOpacity = left;
   else if(typeof back.filter != d_u)	back.filter = "Alpha(opacity="+parseInt(100*left)+")";
   else back.opacity = left;
   if(left<=right){
      left+=0.07;
      timerID = setTimeout("set_opacity("+left+","+right+")",10)
   }
   timerRunning = true;
}


// Переход на сайт пользователя с учетом протокола
function Go(location){
   var url = /(\w+):\/\/([\w.]+)/;
   var res = location.match(url);
   if(res != null){
      if(res[1]=='http'){
        //window.location=location;
        window.open(location,"",'');
      }
   }
   else {
      try {  window.open('http://'+location,"",'');} catch (e){}
   }
}

// Форма обратной связи
//
function Check_feedback(){
   var form = document.feedback;

   if(form.fio.value == "")
   {
      alert('Пожалуйста, введите имя!');
      form.fio.focus();
      return false;
   }

   if(form.email.value == "")
   {
      	alert('Вы забыли указать email адрес!');
      	form.email.focus();
      	return false;
   }

   if(!form.email.value.match(/^[a-zA-Z0-9_\-\.]+\@[a-zA-Z0-9_\-\.]+\.[a-zA-Z]+$/))
   {
   		alert('Вы ввели несуществующий email!');
   		form.email.focus();
   		return false;
   }

   if(form.department.value == 0)
   {
      	alert('Вы забыли указать отдел.');
      	form.department.focus();
      	return false;
   }

   if(form.message.value == "")
   {
      alert('Пожалуйста, введите текст сообщения!');
      form.message.focus();
      return false;
   }

   if(form.code.value == "")
   {
      alert('Ведите, пожалуйста, код подтверждения.');
      form.code.focus();
      return false;
   }

}

// Форма вопросов и ответов
//
function Check_q_and_a(){
   var form = document.q_and_a;

   if(form.fio.value == "")
   {
      alert('Пожалуйста, введите имя!');
      form.fio.focus();
      return false;
   }

   if(form.question.value == "")
   {
      	alert('Пожалуйста, введите текст вопроса!');
      	form.question.focus();
      	return false;
   }

}

// Регистрационная форма
//
function Check_register(){
   var form = document.registration;
   var pass = hex_md5(form.password.value);

   if(form.login.value == ""){
      alert('Пожалуйста, введите логин!');
      form.login.focus();
      return false;
   }

   else if(form.login.value.length < 4){
      alert('Слишком короткое имя!');
      form.login.focus();
      return false;
   }

   if(form.password.value == ""){
      alert('Пожалуйста, введите пароль!');
      form.password.focus();
      return false;
   }

   else if(form.password.value.length < 5){
      alert('Длина пароля должна быть более 5 символов!');
      form.password.focus();
      return false;
   }

   if(form.email.value == ""){
      alert('Вы забыли указать email адрес!');
      form.email.focus();
      return false;
   }

   if(!form.email.value.match(/^[a-zA-Z0-9_\-\.]+\@[a-zA-Z0-9_\-\.]+\.[a-zA-Z]+$/)){
   	alert('Вы ввели несуществующий email!');
   	form.email.focus();
   	return false;
	}

	if(form.agree.checked==0){
		alert('Для регистрации Вы должны ознакомиться и принять пользовательское соглашение.');
   	return false;
	}

if (form.submit.action != ""){
   form.submit.disabled=true;
}
}

//  Авторизация
//
function Check_auth(){
   var form = document.auth;
   var pass = hex_md5(form.password.value);
   if(form.login.value == ""){
      alert('Пожалуйста, введите логин!');
      form.login.focus();
      return false;
   }
   else if(form.password.value == ""){
      alert('Пожалуйста, введите пароль!');
      form.password.focus();
      return false;
   }
   else {
      form.pass.value=pass;
      form.password.blur();
      form.password.value='';
      $("subm").innerHTML='Пожалуйста, подождите...';
      /*
      form.login.disabled=true;
      form.password.disabled=true;
      */
      return true;
   }
}
//

function Chk(){
   var f = $('comment_form');
   if(f.comment.value=='') {
      alert('Вы забыли написать сообщение!');
      return false;
   }
   else {
   	  $('cmt_submit_buttoncontainer').innerHTML='Отправка...';
      f.submit();
      return true;
   }
}

function ValidateAddBlogForm(obj){
   var f = obj;
   var error ="";
   var chk=false;

   ////iframe2textarea();

   if(f.theme.value == ""){
      error+="-- Вы забыли ввести заголовок\n";
   }
   if(f.ed_textarea.value == ""){
      error+="-- Вы не написали сообщение\n";
   }

   var reg1=/JJ_import,/gi
   var reg2=/JJ_import/gi
   f.tags.value=f.tags.value.replace(reg1, "")
   f.tags.value=f.tags.value.replace(reg2, "")

   if(f.tags.value.trim() == "") error+="-- Вам следует указать хотя бы одну рубрику\n";

   if (f.submit.action != ""){
      if(error==""){

         return true;
      }
      else{
         alert("\nВ процессе обработки формы произошли ошибки!\n\n"+error+"\n\n");
         return false;
      }
   }
}

function ValidateUserSearchForm(){
   var f = document.UserSearchForm;
   var error ="";

   if(f.q.value == ""){
      error+="-- Пожалуйста, введите поисковый запрос\n";
   }

   if(f.q.value!=="" && f.q.value.length < 3){
      error+="-- Минимальная длина запроса - 3 символа\n";
   }

   if (f.submit.action != ""){
      if(error==""){
         return true;
      }
      else{
         alert("\n"+error+"\n\n");
         return false;
      }
   }
}

function ValidateUserDataForm(obj){
   var error ="";
   if(obj.username.value == ""){
      error+="-- Вы забыли указать своё имя\n";
   } else if(!obj.username.value.match(/^[A-Za-zА-Яа-я'\-]{3,}$/))
   {
      error+="-- Имя введено неправильно (мин. длина - 3 символа)\n";
   }

   if(obj.surname.value==""){
      error+="-- Вы забыли указать свою фамилию\n";
   } else if(!obj.surname.value.match(/^[A-Za-zА-Яа-я'\-]{3,}$/))
   {
      error+="-- Фамилия введена неправильно (мин. длина - 3 символа)\n";
   }

   if(obj.telephone.value==""){
      error+="-- Пожалуйста, укажите свой контактный телефон (не публикуется)\n";
   } else if(!obj.telephone.value.match(/^\+?\d+$/))
   {
      error+="-- Телефон введен неправильно (используйте формат +ХХХХХХХХХХ или 8ХХХХХХХХХХ)\n";
   }

   if(obj.icq.value!="" && !obj.icq.value.match(/^\d+$/))
   {
	    error+="-- Номер ICQ введен неправильно (допускаются только цифры)\n";
   }


   if(obj.day.selectedIndex==0 || obj.month.selectedIndex==0 || obj.year.selectedIndex==0){
      error+="-- Вы забыли указать дату рождения\n";
   }

   if(obj.www.value!="" && !obj.www.value.match(/^[A-Za-z:\/.\-]+\.[A-Za-z]{2,4}/))
   {
	    error+="-- Адрес сайта введен неправильно\n";
   }


   if (obj.submit.action != ""){
      if(error==""){
         return true;
      }
      else{
          alert("\nВ процессе обработки формы произошли ошибки!\n\n"+error+"\n\n");
         return false;
      }
   }
}


function ValidateLen(){
   maxlength = 1000;
   var msg = document.add_blog.addblog.value;
   var curlength = document.add_blog.addblog.value.length;
   var delt=(maxlength-curlength);
   $('sleft').innerHTML=delt;
   if (curlength>maxlength){
      document.add_blog.addblog.value = msg.substring(0,maxlength);
      $('sleft').innerHTML=maxlength-document.add_blog.addblog.value.length;
   }
}


function LoginAccessibility(login) {
   var form = document.registration;
   var req = new Subsys_JsHttpRequest_Js();
   var msg = $("msg",0);
   if(login.length>2){
      req.onreadystatechange = function() {
         if (req.readyState == 4) {
            if (req.responseJS) {
               form.login.style.background=(req.responseJS.state=='0')?"#FF0000":"#FFFFFF";
               form.submit.disabled=(req.responseJS.state=='0')?true:false;
               form.login.title = (req.responseJS.state=='0')?"Логин занят":""
            }

         }
      }
      req.caching = true;
      req.open('POST', '/xmlhttp/', true);
      req.send({ login: login});
   }
}




function $(objectID,withStyle){
    if(withStyle){
        if(document.getElementById){
		if(document.getElementById(objectID))
		return (document.getElementById(objectID).style);
	}
        else if (document.all) return (document.all[objectID].style);
        else if ((navigator.appName.indexOf('Netscape')!=-1) && (parseInt(navigator.appVersion)==4)) return (document.layers[objectID]);
    }
    else{
        if(document.getElementById) return (document.getElementById(objectID));
        else if (document.all) return (document.all[objectID]);
        else if((navigator.appName.indexOf('Netscape')!=-1) && (parseInt(navigator.appVersion)==4)) return (document.layers[objectID]);
    }
}

function addHandler(object, event, handler){
  if (typeof object.addEventListener != 'undefined') object.addEventListener(event, handler, false);
  else if (typeof object.attachEvent != 'undefined') object.attachEvent('on' + event, handler);
  else throw "Incompatible browser";
}

function removeHandler(object, event, handler){
  if (typeof object.removeEventListener != 'undefined') object.removeEventListener(event, handler, false);
  else if (typeof object.detachEvent != 'undefined')    object.detachEvent('on' + event, handler);
  else throw "Incompatible browser";
}

Function.prototype.bind = function(object){
    var method = this
    return function() {
        return method.apply(object, arguments)
    }
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';

	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


var timerID_ = null
var timerRunning_ = false
var OnlineTimeout_ = 1000*120*1;

function str(id){
   rst();
   n_post(id);
}

function rst(){
   if(timerRunning_){
      clearTimeout(timerID_);
   }
   timerRunning_ = false;
}





// global variable (window open)
var _w=0;

function DeleteFromContactList(userid, ignore){
   var req = new Subsys_JsHttpRequest_Js();
   req.onreadystatechange = function() {
    if (req.readyState == 4) {
         if (req.responseJS) {

       		$("messenger_div").innerHTML = req.responseJS;
       		ApplyMessengerHandlers();
       		changeMsgView();
      	}
   	}
   }
	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	if(ignore)
	req.send({ setignoreincontactlist: userid});
	else
	req.send({ deletefromcontactlist: userid});
}

function ApplyMessengerHandlers() {

	$j(".msgLogin").click(function(){
		//setTimeout('appearFx.hide();', 500);
		showMessengerByUser(this.id,false,false,false,this.cmc);
	});

	//$j(".msgLogin").mouseover(function(){
	//	ShowUsr(this,this.id);
	//});

	//$j(".msgLogin").mouseout(function(){
	//	HideUsr();
	//});
	//<input class="ok_inp" type="submit" value="" onclick="return Chk();" style="border: 0pt none ; margin: 0pt 0pt 0pt 10px; padding: 0pt; vertical-align: middle; font-size: 12px; background-position: 0pt 0pt; background-image: url(/img/button_send.gif); width: 97px; height: 22px; cursor: pointer;"/>
	          	$j("#messengerFilter").focus(function(){
	          		if (this.value=='поиск контактов')
			        	this.value = '';
			    });

			    $j('.msgDelete').click(function(){
			    	$j.facebox('<div id="msgDeleteUserDialog" style="text-align:center; font-family:tahoma; font-size:12px; color:#FFFFFF;"> \
				        Удалить пользователя из списка контактов? \
				        <form method="POST" action="" class="msgDelDialogForm" style="margin-top:20px;"> \
				        <input type="hidden" id="userToDelete" name="userToDelete"> \
				        <input class="ok_inp" type="submit" value="" style="border: 0pt none ; margin: 0pt 0pt 0pt 10px; padding: 0pt; vertical-align: middle; font-size: 12px; background-position: 0pt 0pt; background-image: url(/img/button_udalit.gif); width: 98px; height: 23px; cursor: pointer;"> \
				        <input class="ok_inp" type="button" value="" style="border: 0pt none ; margin: 0pt 0pt 0pt 10px; padding: 0pt; vertical-align: middle; font-size: 12px; background-position: 0pt 0pt; background-image: url(/img/button_otmena.gif); width: 98px; height: 23px; cursor: pointer;" onclick="$j(document).trigger(\'close.facebox\');" > \
				        <label for="msgIgnoreChk" style="color:#919191; margin-left:10px; font-size:11px;">В игнор<input type="checkbox" name="msgIgnoreChk" id="msgIgnoreChk"></label> \
				        </form> \
				        </div>');
			    	$j('#userToDelete').val(parseInt(this.id));
			    	$j('.msgDelDialogForm').submit(function () {
			    	var ignore = $j('#msgIgnoreChk').is(':checked');

			    	DeleteFromContactList($j('#userToDelete').val(), ignore);
			    	$j(document).trigger('close.facebox');
			    	return false;
			    });
			    });
			    $j('#messengerFilter').search('#scrollableMsgDiv .msgUserDiv');
}

function UpdateMessengerContacts(){
	var req = new Subsys_JsHttpRequest_Js();
   req.onreadystatechange = function() {
    if (req.readyState == 4) {
         if (req.responseJS) {
       		$("messenger_div").innerHTML = req.responseJS;
       		ApplyMessengerHandlers();
       		changeMsgView();
      	}
   	}
   }
	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	req.send({ getcontactlist_html: 1});
}

function n_post(id) {
   var req = new Subsys_JsHttpRequest_Js();
//   var online = $("online");
   var ok=0;

   req.onreadystatechange = function() {
      if (req.readyState == 4) {
         if (req.responseJS) {
//            online.innerHTML = (req.responseJS.state||'no response');
            // Есть новые сообщения
            if (req.responseJS.newmessage){
/*            	if(played==0){
            		play();
            		played=1;
            	}*/
               var response = req.responseJS.newmessage;
               var len = response.length;
               var needtoupdatecontacts = false;
//               alert(response[0].user_id);
               for(i=0;i<len;i++){
               	// если элемент имеется

                  if($("env_pas_"+response[i].user_id)) {
                  	$("env_pas_"+response[i].user_id).src="/i/msg/env_active.gif";
                  	/*if(_w==0) {
                  		ForcedOpenWin(response[i].user_id);
                  	}*/
                  }else{
                  	if( !($("env"+response[i].user_id) || $("env_pas_"+response[i].user_id)) )
                  	needtoupdatecontacts = true;
                  }
               }
               if(needtoupdatecontacts==true) UpdateMessengerContacts();
               //window.blur();
               document.title='У вас новое сообщение...';
            }
         }
      }
   }
   if(req.status == 200) ok=1;
   if(ok==1){
   	req.caching = false;
    	req.open('POST', '/xmlhttp/', true);
	   req.send({ user_id: id, online_action: 1});
   	timerID_ = setTimeout("n_post("+id+")",OnlineTimeout_);
    	timerRunning_ = true;
   }
   else {
   	clearTimeout(timerID_);
   	timerRunning_ = false;
   }
}



// full-ajax messenger implementation
//
var autoSendInterval;
var inetrvalSet;
var ajaxRequestNotCompleted=0;

function showMessengerByUser(user_id,closeFlag,dialogs,view_hist,curUserMessagesCount,isLast) {
	// set global variable at 'On' state
	_w = 1;
	dataReceived=false;

	if(!view_hist) view_hist = 0;


	var element_id = $("message_window");
	// эфир не занят
	if((!closeFlag || closeFlag==0) && ajaxRequestNotCompleted==0){
		var req = new Subsys_JsHttpRequest_Js();
		// эфир занят 0_o
		ajaxRequestNotCompleted = 1;

		if(!view_hist){
			toggle("message_window","back")
			set_opacity(0.08,0.6);
		}

/*		// Анимация конвертов. DEPRECATED
		if(typeof(dialogsSummary)!=='undefined'){
		if(dialogs){
		dialogs--;
		dialogsSummary = dialogs;
		}
		else{
		dialogsSummary=0;
		}
		// Верхний конверт
		if(dialogsSummary==0){ $("lope_active").src = "/i/msg/envelope_big_passive.gif"; }
		}*/

		element_id.innerHTML= ('<center><div style="background-color:#1f1f1f;width:500px;height:300px;border:1px solid black;"><br /><br /><br /><br /><span class="bt" style="vertical-align:middle;">Пожалуйста, подождите<br /><br /><br />Идет загрузка данных...</span></div></center>');

		if(user_id>0){

			// Конверт напротив имени пользователя
			if($("env"+user_id)){
				$("env"+user_id).src="/i/msg/env_passive.gif";
			}
			else if ($("env_pas_"+user_id)) {
				$("env_pas_"+user_id).src="/i/msg/env_passive.gif";
			}
			// позиционируем слой
			if (!(navigator.appName.indexOf('Internet')!=-1)){
				element_id.style.left = ($width()/2-250);
				element_id.style.top = ($height()/2-200);
			}

			if(inetrvalSet) {
				clearInterval(autoSendInterval);
				inetrvalSet = false;
			}

			req.onreadystatechange = function() {
				if (req.readyState == 4) {
					if (req.responseJS) {
						if(req.responseJS.html)
						{
							dataReceived=true;
							element_id.innerHTML = req.responseJS.html;


							// прикрепляем обработчики
							addHandler(document,'keydown', function(e) { if (!e) e = window.event; if (e.ctrlKey && e.keyCode == 13 ) {	return sendAsyncMessage(document.form_msg); } } );

							// Фокус на последнее сообщение в списке
							if($('b_'+req.responseJS.lastMsgId)) $('b_'+req.responseJS.lastMsgId).focus();
							$('msg_textarea').focus();

							// если уже существовало - прибиваем, чтобы не грузить БД
							clearInterval(autoSendInterval);
							inetrvalSet = false;

							if( dataReceived==true){
								autoSendInterval = setInterval(function(){
									var f = document.form_msg;
									// Режим холостого хода
									sendAsyncMessage(document.form_msg,true);
								},
								10*1000);
								inetrvalSet = true;
							}

							//alert('Ajax request completed: can click another button!');
							ajaxRequestNotCompleted = 0;
						}
						else dataReceived=false;
					}
				}
			}
			if(req.status == 200) ok=1;
			if(ok==1){

				// первоначальная загрузка сообщений
				req.caching = false;
				req.open('POST', '/xmlhttp/', true);
				x = req.send({ action:'getNewMsg', user_id: user_id, history: view_hist });
			}
			else{
				// если уже существовало - прибиваем, чтобы не грузить БД
				clearInterval(autoSendInterval);
				inetrvalSet = false;
			}
		}


		if(typeof(countOfNotRead)!=='undefined' && countOfNotRead>1){
			if(curUserMessagesCount<=countOfNotRead){
				var cur  = parseFloat($('countOfNotRead').innerHTML);
				if(curUserMessagesCount<countOfNotRead){
					var rightValue = curUserMessagesCount>1?(curUserMessagesCount-1):curUserMessagesCount;
					$('countOfNotRead').innerHTML = cur - (rightValue);
				}
				else {
					$('nextUnread',1).display='none';
				}
				countOfNotRead = parseFloat($('countOfNotRead').innerHTML);
			}
		}


		// закрытие окна посл. сообщения - организует обратную связьдвумя способами ответа на сообщение
		if(typeof(countOfSingleUsersLeft)!=='undefined'){
			// сообщения только от одного пользователя: закрываем всё
			if(countOfSingleUsersLeft==0){
				$('LastMessageHint',1).display='none';
			}
			countOfSingleUsersLeft--;
		}
		if(isLast) $('answer',1).display='none';

	}
	else if (ajaxRequestNotCompleted==0 && closeFlag){
		toggle("message_window","back")
		$('message_window',1).display='none';
		if(inetrvalSet)clearInterval(autoSendInterval);
		inetrvalSet = false;
		removeHandler(document,'keydown', function(e) { if (!e) e = window.event; if (e.ctrlKey && e.keyCode == 13 ) {	return sendAsyncMessage(document.form_msg); } } );
	}
}

function readNextHintMsg(user_id,message_id,curUsermessagesLeft){
	var req = new Subsys_JsHttpRequest_Js();
	var display_none ='';

	// Скрываем мигающий конверт напротив имени пользователя, если сообщение - последнее
	if(curUsermessagesLeft<1){
		if($("env"+user_id)){
			$("env"+user_id).src="/i/msg/env_passive.gif";
		}
		else if ($("env_pas_"+user_id)) {
			$("env_pas_"+user_id).src="/i/msg/env_passive.gif";
		}
	}

	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.responseJS.message) {
				$('last_message').innerHTML = '<div><a href=/user/'+req.responseJS.message.login+'/ style="color:white;font-weight:bold;">'+req.responseJS.message.login+'</a> '+req.responseJS.message.date+'</div>'
				+'<div style="padding-top:5px;float:none;clear:both;color:white;font-size:12px;">'+req.responseJS.message.body+'</div><div style="padding-top:10px;float:left;">'
				+'<a href="javascript:void(0);" id="answer" onclick="showMessengerByUser('+req.responseJS.message.sender_id+',false,false,false,0,true);" class="header">Ответить</a>'
				+'</div>';

				countOfNotRead = req.responseJS.message.notReadCount;

				countOfSingleUsersLeft = req.responseJS.message.countOfSingleUsersLeft;

				curUserMessagesCount = req.responseJS.message.curUserMessagesCount;

				if(req.responseJS.message.curUserMessagesCount>0 || req.responseJS.message.notReadCount>0 ){

					if(countOfNotRead==0) display_none='display:none;';

					$('last_message').innerHTML +='<div style="padding-left:50px;text-align:right;'+display_none+'" id="nextUnread">'
					+'<a href="javascript:void(0);" onClick="readNextHintMsg('+req.responseJS.message.sender_id+','+req.responseJS.message.message_id+','+req.responseJS.message.curUserMessagesCount+');" title="Читать следующее">'
					+'<span style="color:white;"><img alt="След. непрочитанное сообщение" src="/i/msg/env_active.gif" width="13" height="9" style="vertical-align:middle;margin:4;margin-bottom:5px;" border="0"><b><span id="countOfNotRead">'+req.responseJS.message.notReadCount+'</span></b></span></a> <img src="/i/msg/next.gif" style="margin:10 2 -2 2;"/></div>';
				}
			}
		}
	}
	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	req.send({receiver_id:user_id, message_id: message_id});
}



/*
object form - Форма с подготовленными свойствами
bool flag Отвечает за "Холостой ход" функции
*/
function sendAsyncMessage(form,flag) {
   if(!form) return;
   var sender_id = form.sender_id.value;
   var receiver_id = form.receiver_id.value;
   var message = (!flag)?form.message.value:'null';
   var req = new Subsys_JsHttpRequest_Js();

   if(sender_id && receiver_id && message!=''){

      if(message.length>1500) {
      	alert('Маскимальная длина сообщения - 1500 символов!');
      	return false;
      }
      else{
      	if(message.length<1500 && message.length>=1 && message!=='null'){
      		$('sendasyncMessageButton').src = '/i/ajx-redgrad.gif';
      	}

      	// callback function, which calls when request state changes
      	req.onreadystatechange = function() {
         var target_div = $('msg_block');

         //if (req.readyState !== 4) {try{document.body.style.cursor="wait";}catch(e){} /* emulate in ie ordinary form submit */}

         if (req.readyState == 4) {

         	var response_ban = req.responseJS.toomuch;
         	if(req.responseJS && response_ban>0){
         		alert('Превышено количество сообщений.');
         		$('sendasyncMessageButton').src = '/img/send.gif';
         		return false;
         	}


            var response = req.responseJS.newmessages;

            if (req.responseJS && response) {
               var len = response.length;
               for(i=0;i<len;i++){
                  var notread='';
                  // New opponent message - so we should erase 'unread message' notices
                  if(sender_id !== response[i].sender_id){
                     elements = document.getElementsByTagName("sub");
                     for(k = 0;k<elements.length;k++){
                        elements[k].innerHTML='';
                     }
                     var userState = (response[i].online>0)?1:0;
                     switch(userState){
                        case(1):
                           $('online',1).display='';
                           $('offline',1).display='none';
                        break;
                        case(0):
                           $('online',1).display='none';
                           $('offline',1).display='';
                        break;
                     }
                     var userdiv = $j('#msgUserDiv'+response[i].sender_id);
					 if(!userdiv.hasClass("msgUserInRecent")){
                  	 	$j(userdiv).insertBefore('.msg_sep');
                  	 	$j(userdiv).addClass("msgUserInRecent");
                  	 }
                  }
                  else{
                     //notread = (response[i].read>0)?'':' <sub class="numbers">не прочитано</sub>';
                  }
                  // Forming message Html code
                  /*if(response[i].body){
                    target_div.innerHTML +='<div class="msg_block_item"><div><a href="/user/'+response[i].login+'/" name="div_'+response[i].mid+'" class="link_in_message" target="_blank">'+'<b>'+response[i].login+'</b></a> <span class="date_in_messenger status_span">'+response[i].date+'</span></div><div class="message_item inline" id="div_'+response[i].mid+'">'+response[i].body+notread+'</div></div>'+'<div class="sep3"><img src="/img/p.gif"></div><div class="sep4"><img src="/img/p.gif">'+'</div><a id="b_'+response[i].mid+'" href="javascript:void(0);"></a>';
                  }*/

                  if(response[i].html){
                  	target_div.innerHTML += response[i].html;
                  }
               }
               if(len>0){
               	$('sendasyncMessageButton').src = '/img/send.gif';
                  var id = response[response.length-1].mid;
                  $('b_'+id+'').focus();
                  window.focus();
                  $('msg_textarea').focus();

               }
              // try{document.body.style.cursor="default";}catch(e){}


            }


         }
      }
      req.caching = false;
      req.open('POST', '/xmlhttp/', true);
      req.send({sender_id:sender_id,receiver_id:receiver_id,message:message});
      if(!flag)form.message.value='';
      }
   }
   return false; /* Must retrieve false cos we don't actually submit form */
}





function $height(){
   if(window.innerHeight!=null) return window.innerHeight;
   if(document.body.clientHeight!=null) return document.body.clientHeight
   if(screen.availHeight!=null) return screen.availHeight;
   return null;
}

function $width(){
   if(window.innerWidth!=null) return window.innerWidth;
   if(document.body.clientWidth!=null) return document.body.clientWidth;
   if(screen.availWidth!=null) return screen.availWidth;
   return null;
}

function zoom (img,w,h){
   var x=screen.width;
   var y=screen.height;
   var left=(x-w)/2;
   var top=(y-h)/2;
   win = window.open("", "",'left='+left+', top='+top+', width='+w+', height='+h);
   win.document.write("<html><head><title>&#160;Фото пользователя</title><meta http-equiv='Content-TYPE' content='text/html; charset=UTF-8'></head><body topmargin='0' leftmargin='0' bottommargin='0' rightmargin='0'><div style='cursor:hand;background-image:url("+img+"?tx="+Math.random()+");width:"+w+";height:"+h+";' title='Закрыть' onclick='window.close()'><img src="+img+"?tx="+Math.random()+"></div></body></html>");
}

function OpenWin(src,id,dialogs){
   var x=screen.width;
   var y=screen.height;
   var left=x/2-250;
   var top=y/2-200;

   if(typeof(dialogsSummary)!=='undefined'){
      if(dialogs){
         dialogs--;
         dialogsSummary = dialogs;
      }
      else{
         dialogsSummary--;
      }
      // Верхний конверт
      if(dialogsSummary==0){
         $("envelope_active").src = "/i/msg/envelope_big_passive.gif";
      }
   }

   // Конверт напротив имени пользователя
   if($("env"+id)) $("env"+id).src="/i/msg/env_passive.gif";
   else if ($("env_pas_"+id)) $("env_pas_"+id).src="/i/msg/env_passive.gif";


   win = window.open(src,"Messenger_"+id,'left='+left+', top='+top+', width=500, height=400,scrollbars=no,status=no,toolbar=no,resizable=no');
   win.focus();
   return win;
}

light = function(id){ $(id,1).border = '2px solid red'; }


function imgRollOver() {
   var gallery = document.getElementById("gallery")
   if(gallery != null){
      items=document.getElementById("gallery").getElementsByTagName("div");
      for (i = 0; i < items.length; i++) {
         if (items[i].className == "passive") {
            items[i].onmouseover = function(){
               this.className="active";
            }
            items[i].onmouseout = function(){
               this.className = this.className.replace("active", "passive");
            }
         }
      }
   }
}

function ShowRubric(id) {
   var gallery = document.getElementById("gallery")
   if(gallery != null){
      items=document.getElementById("gallery").getElementsByTagName("div");
      for (i = 0; i < items.length; i++) {
         if (items[i].className == "passive") {
            items[i].onmouseover = function(){
               this.className="active";
            }
            items[i].onmouseout = function(){
               this.className = this.className.replace("active", "passive");
            }
         }
      }
   }
}


function EnableRollOver(){
   var classes = new Array('thumb','5b','_events_rating','_spys','_left_spys');
   for (var i = 0; i < classes.length; i++) {
      number = classes[i].toString();
      items=getElementsByClass('passive'+number);
      for (var j = 0; j < items.length; j++) {
         items[j].onmouseover = function(){
            this.className = this.className.replace('passive', 'active');
         }
         items[j].onmouseout = function(){
            this.className = this.className.replace('active', 'passive');
         }
      }
   }
}

function show(id){
   var items = document.getElementById("shortinfo").getElementsByTagName("DIV");

   for (i = 0; i < items.length; i++) {
      items[i].className="hidden";
   }
   document.getElementById(id).className="visible";
}

function setGlobalOnLoad(f) {
   var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null
   if (root){
      if(root.addEventListener) root.addEventListener("load", f, false)
      else if(root.attachEvent) root.attachEvent("onload", f)
   }
   else {
      if(typeof window.onload == 'function'){
         var existing = window.onload
         window.onload = function(){
            existing()
            f()
         }
      }
      else window.onload = f;
   }
}

function BuildThumbs(){
   var ritems = $("r_thumb").getElementsByTagName("A");
   var litems = $("l_thumb").getElementsByTagName("A");
   var width = $width();
   var count_to_show = width>990?Math.ceil((width-640)/170):3;


   if(ritems!=null){
      for (i=0;i<ritems.length;i++){
         if(i<count_to_show) {ritems[i].style.display="";}
         else {ritems[i].style.display="none";}
      }
   }
   if(litems!=null){
      for (j=litems.length-1;j>=0;j--){
         if(j>=(litems.length-count_to_show)) {litems[j].style.display="";}
         else {litems[j].style.display="none";}
      }
   }
}

function BuildIndex(){
   var t = getElementsByClass("t",$('one'));
   var b = getElementsByClass("b",$('two'));
   var width = $width();
   var defaultFont = 12;
   var ResDelta = 0;

   // Trying to change font size dynamicly
   ResDelta = Math.round((width-980)/140);
   $("announce",1).fontSize = (defaultFont+ResDelta) + 'px';

   //Count of thumbnails in row to show
   count_to_show = width>990?Math.ceil((width-475)/165):4;
   delta=0;

   for (i=0;i<t.length;i++){
      if(i<count_to_show) {
         redraw(buf,b);
         t[i].style.display="block";
         if(typeof b[i]!='undefined') b[i].style.display="block";
      }
      else {
         for (j=delta;j<buf.length-1;j++){
            k = j-delta;
            b[j+1].innerHTML= buf[k];
         }
         b[delta].innerHTML = t[i].innerHTML;
         delta++;
         t[i].style.display="none";
         if(typeof b[i]!='undefined') b[i].style.display="none";
      }
   }
}

function redraw(x,y){
   for (j=0;j<x.length;j++){
      y[j].innerHTML= x[j];
   }
}

function setCookie(name, value, path, expires, domain, secure) {
   var curCookie = name + "=" + escape(value) +
   ((expires) ? "; expires=" + expires.toGMTString() : "") +
   ((path) ? "; path=" + path : "; path=/") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
   document.cookie = curCookie;
}

function getCookie(name) {
   var prefix = name + "=";
   var cookieStartIndex = document.cookie.indexOf(prefix);
   if (cookieStartIndex == -1) return null;
   var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
   if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
   return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

function post(varHash) {
   var form = document.createElement("form"), tmp;
   form.action = self.location;
   form.method = "post";
   for (var param in varHash) {
      tmp = document.createElement("input");
      tmp.type = "hidden";
      tmp.name = param;
      tmp.value = varHash[param];
      form.appendChild(tmp);
   }
   document.body.appendChild(form);
   form.submit();
}


function CheckReason(){

   if($('reason',1).display=='none'){
      $('reason',1).display="";
   }
   else{
      if($('reason_msg').value!=='' && $('reason_msg').value!=='Ваше сообщение.'){
         $('_PostBack_Friends').msg.value=$('reason_msg').value;

         if($('reasoncaptchacode'))
         	$('_PostBack_Friends').code.value=$('reasoncaptchacode').value;

         $('reason').innerHTML = 'Пожалуйста, подождите...';
         //$('reason',1).display="none";
         $('_PostBack_Friends').submit();
      }
      else{
         alert('Пожалуйста, напишите пользователю\nпочему вы хотите пригласить его в свой круг.');
         $('reason_msg').focus();
      }
   }
}

function iframe2textarea(textarea_id,iframe_id)
{
    var ua = navigator.userAgent.toLowerCase();
	var safari = (ua.indexOf('safari') != -1);



	if(safari)
		doc = document.getElementById(iframe_id).contentDocument;
	else
		doc = document.getElementById(iframe_id).contentWindow.document;

    document.getElementById(textarea_id).value = doc.body.innerHTML;
};

function BlogDoSubmit(form)
{
	iframe2textarea('ed_textarea','ed_textarea_ifr');
	if(ValidateAddBlogForm(form))
	{
		is_form_submit=true;
		form.submit();
	}
		return false;

}

// Копирование текста из textarea в iframe
function wysiwyg_textarea2iframe(textarea_id, iframe_id){
   try{
      document.getElementById(iframe_id).contentWindow.document.body.innerHTML = document.getElementById(textarea_id).value
   }catch(e){
      setTimeout("wysiwyg_textarea2iframe('" + textarea_id + "', '" + iframe_id + "')", 0)
   }
}

// Функции инициализации на вход мы даем id составляющих редактор textarea и iframe
function wysiwyg_init(textarea_id, iframe_id){
   var textarea = document.getElementById(textarea_id)
   var iframe = document.getElementById(iframe_id)
   $('editloading',1).display = 'none';
   $('wysiwyg_iframe',1).display = 'block';
   // Проверим на существование iframe и textarea
   // Через offsetWidth проверим видимость iframe – то есть редактор находится в визуальном режиме
   if(iframe && textarea && iframe.offsetWidth){

	  iframe.contentEditable = "true";

	var ua = navigator.userAgent.toLowerCase();
	var safari = (ua.indexOf('safari') != -1);
	if(!safari)
	  iframe.contentWindow.document.designMode = "on";

	  // Для Gecko устанавливаем такой режим, чтобы форматирование ставилось тегами, а не стилями
      // Чтобы MSIE не выдавал ошибку, прячем это в конструкцию try-catch
      try{
         iframe.contentDocument.execCommand("useCSS", false, true)
      }catch(e){}



      // Копируем текст из textarea в iframe
      wysiwyg_textarea2iframe(textarea_id, iframe_id)
   }
}





function editInsertImage()
{
	var iframe = document.getElementById('wysiwyg_iframe')
   var wysiwyg = iframe.contentWindow.document
   var imgurl = prompt("Введите адрес изображения:", "http://")
   if(imgurl&&(imgurl!=''))
   	wysiwyg.execCommand('InsertImage', false, imgurl)
   iframe.focus;
}

function editInsertLink()
{
	var iframe = document.getElementById('wysiwyg_iframe')
   var wysiwyg = iframe.contentWindow.document;

   var myselectionlink = '';
	var wysiwygwindow = iframe.contentWindow;
	if ( wysiwygwindow.getSelection ) {
 		myselectionlink = wysiwygwindow.getSelection() + '';
	}
	else if ( wysiwyg.selection ) {
 		myselectionlink = wysiwyg.selection.createRange().text;
	}
	else if ( wysiwyg.getSelection ) {
 		myselectionlink = wysiwyg.getSelection() + '';
	}
	if(myselectionlink=='')
	{
		alert('Пожалуйста выделите текст ссылки');
		return false;
	}

   var linkurl = prompt("Введите адрес:", "http://");
   if(linkurl&&(linkurl!=''))
   	wysiwyg.execCommand('CreateLink', false, linkurl);
   iframe.focus;

}


function editMakeBold()
{
	var iframe = document.getElementById('wysiwyg_iframe')
   var wysiwyg = iframe.contentWindow.document
   wysiwyg.execCommand('Bold', false, true)
   iframe.focus;
}

function editMakeItalic()
{
	var iframe = document.getElementById('wysiwyg_iframe')
   var wysiwyg = iframe.contentWindow.document
   wysiwyg.execCommand('Italic', false, true)
   iframe.focus;
}



var timerOn = false;
var timerID;

function startTime()
{
	if (timerOn == false)
	{
		timerID=setTimeout( function(){$('rubricsuggestmenu').style.visibility='hidden';} , 1500);
		timerOn = true;
	}
}

function stopTime()
{
	 if (timerOn)
	 {
		clearTimeout(timerID);
		timerID = null;
		timerOn = false;
	 }
}

function SuggestSubmit(thisobj){
	$('rubricinput').value = thisobj.innerHTML;
	AddRubricToForm();
}

function RubricsSuggest(){
   var suggestsearch = $('rubricinput').value;
   var rubricmenu = $('rubricsuggestmenu');
	var req = new Subsys_JsHttpRequest_Js();
	var temp;
   req.onreadystatechange = function() {
         if (req.readyState == 4) {
            if (req.responseJS) {
               var response = req.responseJS.suggestresult;
               var len = response.length;

               if (len>0){
               	rubricmenu.style.visibility = "visible";
               }else{
               	rubricmenu.style.visibility = "hidden";
               }
              	while (rubricmenu.firstChild)
					{
						rubricmenu.removeChild(rubricmenu.firstChild);
					}
               for(i=0;i<len;i++){
                  temp = document.createElement('a');
                  temp.href = "javascript:void(0);";
                  temp.id = "suggestlink" + i;
                  temp.onclick = function(){ SuggestSubmit(this) };
                  rubricmenu.appendChild(temp);
                  temp.innerHTML = response[i].name;
                  temp = document.createElement('br');
                  rubricmenu.appendChild(temp);
               }
            } else { rubricmenu.style.visibility = "hidden"; }
         }
      }
      req.caching = true;
      req.open('POST', '/xmlhttp/', true);
      req.send({ suggestsearch: suggestsearch});
}

function AddRubricToForm(){
	var newrubricsspan = $('newrubrics');
	var rubricinputbox = $('rubricinput');
	var checkboxes = document.getElementsByName('cat[]');
	var checkboxtitles = document.getElementsByName('rubr');
	if (rubricinputbox.value == '' || rubricinputbox.value.match(/^ +$/)){
		alert("Введите название рубрики!\n");
		return false;
	}

	$('rubricsuggestmenu').style.visibility = "hidden";
	for(i=0;i<checkboxes.length;i++){
		if(checkboxtitles[i].innerHTML.toLowerCase() == rubricinputbox.value.toLowerCase())
		{
			checkboxes[i].checked="checked";
			rubricinputbox.value = '';
			return false;
		}
	}
	newrubricsspan.innerHTML = newrubricsspan.innerHTML +
										'<span style="width:50px;"><nobr>' + '<input type="checkbox" class="checkbox" name="cat[]" value="_' + rubricinputbox.value + '" checked="checked">' + '&nbsp;<span id="rubr" name="rubr">' + rubricinputbox.value + '</span></nobr></span>';
	rubricinputbox.value = '';
	return false;
}

function OpenSuggestTop (){
   var x=screen.width;
   var y=screen.height;
   var left=(x-500)/2;
   var top=(y-300)/2;
   win = window.open("/suggesttop.php", "",'left='+left+', top='+top+', width='+500+', height='+300);
}

function CreateRubricForm(){
	var rubricspan = $('addrubriclink');
	var newform, temp;
	newform = document.createElement("form");
	newform.action = self.location;
   newform.method = "post";
   newform.id = "addrubricform";
	newform.onsubmit = AddRubricToForm;
	rubricspan.replaceChild(newform, rubricspan.lastChild);

	temp = document.createElement("input");
	temp.type = "text";
	temp.id = "rubricinput";
	temp.onkeyup = RubricsSuggest;
	temp.size = "8";
	temp.maxLength="40";
	newform.appendChild(temp);

	temp.focus();

	temp = document.createElement("input");
	temp.type = ("submit");
	temp.align = ("absmiddle");
	temp.style.backgroundImage = "url('/img/addrubric.gif')";
	temp.style.border = "0px";
	temp.style.width = "21px";
	temp.style.height = "20px";
	temp.value = "";
	newform.appendChild(temp);


}

function BlogShowHide(id){
	if (document.getElementById) {
		img1 = new Image();
		img1.src='//';
		body = document.getElementById('body_' + id);
		shortbody = document.getElementById('shortbody_' + id);
		link = document.getElementById('morelink_' + id);
		if (body.style.display == "none"){
			body.style.display = 'block';
			shortbody.style.display = 'none';
			link.innerHTML = '<img class ="noborder" valign="absmiddle" src="/img/triangleup.gif">&nbsp;Скрыть';
			//filter(("img"+id),'imgin');
		} else {
			//filter(("img"+id),'imgout');
			body.style.display = 'none';
			shortbody.style.display = 'block';
			link.innerHTML = '<img class ="noborder" valign="absmiddle" src="/img/triangledown.gif">&nbsp;Подробнее...';
		}
	}
}

function BlogToggleToolTip(obj){
	var ttdiv = $('tooltipdiv');
	if(ttdiv){
		obj.removeChild(ttdiv);
	}else{
		var newdiv;
		newdiv = document.createElement("div");
		newdiv.id = "tooltipdiv";
		newdiv.className = "uvidem";
		newdiv.style.position = "relative";
		newdiv.style.left = "-15px";
		newdiv.style.top = "19px";
		newdiv.style.background = "black"
		newdiv.innerHTML = 'Добавить в избранное';
		obj.appendChild(newdiv);
	}
}

function AddToFavorites(objtype, objid,block_id){
	var x = (block_id)?block_id: 'addfavoritediv';
	SendRequest(true, { object_type:objtype, object_id:objid, element_id: x });
}

function applyHandlersToSearchLinks(){
	var elements = getElementsByClass('srch_link');
	for (i = 0; i < elements.length; i++) {
		elements[i].onclick = function(){
			elements_i = getElementsByClass('srch_link');
			for (j = 0; j < elements_i.length; j++) {
				elements_i[j].style.borderBottom = '';
				elements_i[j].style.color = '#D1D1D1';
			}
			this.blur();
			this.style.borderBottom = '2px solid white';
			this.style.color = 'white';
			if(this.getAttribute('ancestor')!=='null'){
				$('searchForm').where.value=this.getAttribute('ancestor');
				$('searchForm').whereInRussian.value = this.innerHTML;
				$('searchForm').action = this.getAttribute('ancestor')+'name='+escape($('searchForm').namesearch.value);
			}
		}
	}
}

		var resolutionHack  = function(){
			if($('soon_block_4')) $('soon_block_4',1).display = (document.body.clientWidth <= 1000)?'none':'';
		}

		function applyHandlersToMainMenu() {
			var elements = getElementsByClass('men_link');
			for (i = 0; i < elements.length; i++) {
				elements[i].onclick = function(){
					this.blur();
					var act_elements = getElementsByClass('active');
					for (j = 0; j < act_elements.length; j++){
						act_elements[j].className="men_link";
					}
					this.className = this.className.replace("men_link", "active"); }
			}
		}




		function toggleFilter(obj){
			if(obj.className == 'filter1')
				obj.className = 'filter2';
			else
				obj.className = 'filter1';

			checkFilterAll(obj.parentNode);
		}

		function toggleFilterAll(obj){
			elements = obj.parentNode.childNodes;

			for (e in elements)
			{

				if((elements[e].id != 'filterall') && (elements[e].className != 'fsep')&& (elements[e].tagName == 'SPAN')){
    				elements[e].className = 'filter1';
				}else if(elements[e].id == 'filterall'){
					var filterall = elements[e];
				}
			}
			filterall.className = 'filter2';
		}

		function checkFilterAll(obj){

			elements = obj.childNodes;

			var allselected = true;
			for (e in elements)
			{
				if(elements[e].id != 'filterall'){
					if(elements[e].className == 'filter2'){
						allselected = false;
					}
				}else{
					var filterall = elements[e];
				}
			}
			if(allselected)
				filterall.className = 'filter2';
			else
				filterall.className = 'filter1';
		}

		function createFilterString(objid){
			var obj = document.getElementById(objid);
			var str = '';
			elements = obj.childNodes;
			for (e in elements)
			{
				if((elements[e].id != 'filterall') && (elements[e].className == 'filter2')){
    				str = str + elements[e].id + ',';
				}
			}
			return str.substr(0, str.length - 1);
		}

		function createSearchRequestString(arr){
			ret = ''
			for (e in arr)
			{
				if((arr[e]+'').trim()!='')
					ret += e + '=' + arr[e] + '|';
			}
			return ret.substr(0, ret.length - 1);
		}


function ToggleTagInInput(tag, elementid, replace){
	if(elementid == null)
		elementid = 'tags';

	var trimmedtag = tag.trim();
	var Input = document.getElementById(elementid);
	var alltags = Input.value.split(",");
	var tagfound = false;
	var temptext = '';
	if(Input.value.trim().length >0){

		for(var i=0; i < alltags.length; i++){
			if(alltags[i].trim() != trimmedtag){
				if(alltags[i].trim() != '' && alltags[i].trim() != replace)
				temptext = temptext + alltags[i].trim() + ', ';
			}
			else
			tagfound = true;
		}
		if(tagfound!=true)
		temptext = temptext + trimmedtag + ', ';
		Input.value = temptext.substring(0,temptext.length-2);
	}else{
		Input.value = tag.trim();
	}
}


function toggleDisplay(){
   var length = toggleDisplay.arguments.length;
   var direct = 0;
   for (var i = 0; i < length; i++){
      var el = $(toggleDisplay.arguments[i],1);
      if(el.display){
         if (el.display=='block') {
            el.display='none';
            //direct = 1;
         }
         else{
            el.display='block';
         }
      }
      else{
         el.display=='block';
      }
   }
}


function setCharAt(str,index,char) {
	if(index > str.length-1) return str;
		return str.substr(0,index) + char + str.substr(index+1);
}

function escapeEx(str)
{
    var ret = '';

    for (i=0; i<str.length; i++)
    {
        var n = str.charCodeAt(i);
        if (n >= 0x410 && n <= 0x44F)
            n -= 0x350;
        else if (n == 0x451)
            n = 0xB8;
        else if (n == 0x401)
            n = 0xA8;
        if ((n < 65 || n > 90) && (n < 97 || n > 122) && n < 256)
        {
            if (n < 16)
                ret += '%0'+n.toString(16);
            else
                ret += '%'+n.toString(16);
        }
        else
            ret += String.fromCharCode(n);
    }

    return ret;
}


function swapimage(imgid,first_img, second_img){
		image = document.getElementById(imgid);
		image.src = image.src.match(first_img) ? second_img : first_img;

		return true;
	}

//returns the absolute position of some element within document
function GetElementAbsolutePos(element) {
	var __isFireFox = navigator.userAgent.match(/gecko/i);
	var res = new Object();
	res.x = 0; res.y = 0;
	if (element !== null) {
		res.x = element.offsetLeft;
		res.y = element.offsetTop;

		var offsetParent = element.offsetParent;
		var parentNode = element.parentNode;

		while (offsetParent !== null) {
			res.x += offsetParent.offsetLeft;
			res.y += offsetParent.offsetTop;

			if (offsetParent != document.body && offsetParent != document.documentElement) {
				res.x -= offsetParent.scrollLeft;
				res.y -= offsetParent.scrollTop;
			}
			//next lines are necessary to support FireFox problem with offsetParent
			if (__isFireFox) {
				while (offsetParent != parentNode && parentNode !== null) {
					res.x -= parentNode.scrollLeft;
					res.y -= parentNode.scrollTop;

					parentNode = parentNode.parentNode;
				}
			}
			parentNode = offsetParent.parentNode;
			offsetParent = offsetParent.offsetParent;
		}
	}
    return res;
}
//4px
    	//new messenger functions
			if (navigator.appName.indexOf('Internet')!=-1){
				var msgInfoOffsetX = -232;
				var msgInfoOffsetY = 2;
			}else{
				var msgInfoOffsetX = -229;
				var msgInfoOffsetY = 5;
			}
			var infopopuptimeout;
			var showinfopopuptimeout;
			var appearFx;





			function msgFxInit(){
				//appearFx = new fx.Opacity('msginfodiv', { duration: 200 });
        //appearFx.hide();

			}


			function beginShowUsr(obj,userid){
				var infodiv = document.getElementById('msginfodiv');
				var pos = GetElementAbsolutePos(obj);

				infodiv.style.top = pos.y + msgInfoOffsetY;
				infodiv.style.left = pos.x + msgInfoOffsetX;


				var userinfo = msgUserData[userid];

				document.getElementById('msgInfoRealName').innerHTML = userinfo.realname;
				document.getElementById('msgInfoStatus').innerHTML = userinfo.userstatus + ' ' + userinfo.years + ' ' + userinfo.occupation;

				if(userinfo.avatar==1)
					document.getElementById('msgInfoAvatar').src = '/images/users/' + userid + '/avatar.jpg';
				else
					document.getElementById('msgInfoAvatar').src = '/img/nofoto.gif';

				//if(appearFx.now == 0)
					//appearFx.custom(0,1);

				clearTimeout(infopopuptimeout);
			}

			function ShowUsr(obj,userid){
				if(globalDOMReady){
					/*if(appearFx.now == 0)
						showinfopopuptimeout = setTimeout(function(){beginShowUsr(obj, userid);}, 500);
					else
						beginShowUsr(obj,userid);*/
				}
			}

			function HideUsr(){
				if(globalDOMReady){
					/*if(appearFx.now == 0)
						clearTimeout(showinfopopuptimeout);
					else{
						clearTimeout(infopopuptimeout);
						infopopuptimeout = setTimeout("if(appearFx.now < 1) appearFx.hide();appearFx.custom(1,0);", 500);
					}*/
				}
			}

		function limitText(limitField, limitNum) {
	 	  if (limitField.value.length > limitNum) {
	        limitField.value = limitField.value.substring(0, limitNum);
	    }
		}
        		    function userSubmitInvite(event_id, accept, reload) {
        		    	reload = typeof(reload) != 'undefined' ? reload : false;

        		    	acceptval = (accept==true ? 1 : 0);

        		    	$('ebuttons' + event_id).innerHTML = '<img style="cursor:auto" src="/i/ajx-redongray.gif">';

						var req = new Subsys_JsHttpRequest_Js();
							req.accept = accept;
							req.reload = reload;
							req.onreadystatechange = function() {
								if (req.readyState == 4) {
									if (req.responseJS) {

									}
									if(req.reload==true)
										window.location.reload( true );
									if(req.accept==true)
        		    					$('ebuttons' + event_id).innerHTML = 'Приглашение принято';
        		    				else
        		    					$('ebuttons' + event_id).innerHTML = 'Приглашение отклонено';
								}
							}
							req.caching = true;
							req.open('POST', '/xmlhttp/', true);
							req.send({ usersubmitinvite: event_id, accept: acceptval});
					}
					//for poster
					function fillInviteList (data, filter) {
						var invitediv = $('eventinvitediv');
						var tempvar = '';
						var avatarstring = '';


						//alert(obj[0].login.toUpperCase().indexOf(filter.toUpperCase));
						for(var i = 0; i < data.length; i++){
							obj = data[i];

							if(filter == undefined){
								avatarstring = (obj.avatar==1 ? "/images/users/" + obj.user_id + "/avatar.jpg" : "/img/nofoto.gif");

								tempvar +=	'<div class="passive_spys inviteuser" style="cursor:pointer;float:left;width:219px;margin:2px" id="' + obj.user_id + 'invite" onClick="toggleUserDivSelected(this);">'+'<div class="ank3">' + '<img width="30" hspace="4" height="30" class="avatar ank_img" src="' + avatarstring + '"/>' + '<strong class="ank_st">' + obj.login + '</strong><br>' + obj.fio + '</div></div>';

							}else{
								if(obj.login.toUpperCase().indexOf(filter.toUpperCase()) != -1 ||
								obj.fio.toUpperCase().indexOf(filter.toUpperCase()) != -1 || filter == '')
								{
									$(obj.user_id + 'invite').style.display = 'block';

								}else{
									$(obj.user_id + 'invite').style.display = 'none';
								}
							}
						}
						if(filter == undefined)
						invitediv.innerHTML = tempvar;

					}

function getInviteFriends() {
	var req = new Subsys_JsHttpRequest_Js();
							req.onreadystatechange = function() {
								if (req.readyState == 4) {
									if (req.responseJS) {
										$('invitefilter').data = req.responseJS.friends;
										fillInviteList(req.responseJS.friends);
									}
								}
							}
							req.caching = true;
							req.open('POST', '/xmlhttp/', true);
							req.send({ getinvitefriendsevent: globalEventId});
							$('invitefriendsspan').innerHTML = '<h5 style="color:#888"> Пригласить друзей </h5>';
							$('eventinvitecontainer').style.display = 'block';

					}

					function sendEventInvites() {
						var usersarray = new Array();

						var userdivs = $j(".passive_spys.inviteuser");

						for (var i=0; i < userdivs.length ;i++){
							if (userdivs[i].userselected == 1)
								usersarray.push(parseInt(userdivs[i].id));
						}
						a
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								$('eventinvitecontainer').innerHTML = '<div style="text-align:center;padding:8px">Приглашения высланы</div>';
							}
						}
						if(usersarray.length > 0) {
							req.caching = false;
							req.open('POST', '/xmlhttp/', true);
							req.send({ sendinvitesevent: globalEventId, sendinvitesusers: usersarray});
						}
					}

					function toggleUserDivSelected(obj) {
						if(obj.userselected == 1){
							obj.userselected = 0;
							obj.style.backgroundColor = "#191919";
						}else{
							obj.userselected = 1;
							obj.style.backgroundColor = "#434343";
						}

					}

					function sendOrderPhoto(photo_id, user_id) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								$('order_photo_'+photo_id).innerHTML = '<div style="text-align:center;padding:8px">Заказ на печать фото отправлен.</div>';
							}
						}

						req.caching = false;
						req.open('POST', '/xmlhttp/', true);
						req.send({ order_photo: photo_id});
					}

					function sendOrderPublicPhoto(photo_id, photo_name) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								$('order_photo_'+photo_id).innerHTML = '<div style="text-align:center;padding:8px">Заказ на печать фото отправлен.</div>';
							}
						}

						req.caching = false;
						req.open('POST', '/xmlhttp/', true);
						req.send({ order_public_photo: photo_name});
					}

					function SaveRecord(text, title) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								CurTime = new Date();
								$('is_save').innerHTML = 'Текст заметки сохранен в '+CurTime.toLocaleTimeString();
							}
						}
						req.caching = false;
						req.open('POST', '/xmlhttp/', true);
						req.send({ save_record: text, title: title});
					}

					function SaveAsDraft(text, title) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
							}
						}
						req.caching = false;
						req.open('POST', '/xmlhttp/', true);
						req.send({ save_as_draft: text, title: title});

					}

					function sendUserOrderPhoto(photo_path,source_file,ev_id,ev_dt) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								$('order_photo_div').innerHTML = '<br>Фото добавлено в <a class=header href=/basket>корзину.</a>';
							}
						}

						req.caching = false;
						req.open('POST', '/xmlhttp/', true);
						req.send({ user_order_photo: photo_path, order_source_file:source_file, event_id:ev_id, event_date:ev_dt });
					}


					function DelUserPhoto(photo_id) {
						var req = new Subsys_JsHttpRequest_Js();
						req.onreadystatechange = function() {
							if (req.readyState == 4) {
								if (req.responseJS) {

								}
								window.location.reload();
							}
						}

						req.caching = false;
						req.open('GET', '/xmlhttp/', true);
						req.send({ del_user_order_photo: photo_id});
					}

//4 new celebs

							//var celebList = {};
                 	function getCelebsToAdd(photo_id) {

						var req = new Subsys_JsHttpRequest_Js();
							req.onreadystatechange = function() {
								if (req.readyState == 4) {
									if (req.responseJS) {

										$('celebfilter').data = req.responseJS.celebs;

										fillCelebList(req.responseJS.celebs);
										//alert('executed');
									}
								}
							}
							req.caching = true;
							req.open('POST', '/xmlhttp/', true);
							req.send({ getadminattachcelebs: photo_id});
							$('addcelebspan').innerHTML = 'Подписать селебов';
							$('addcelebcontainer').style.display = 'block';

					}

                  	function fillCelebList (data, filter) {
                  		var celebdiv = $('admincelebdiv');
                  		var tempvar = '';

							for(var i = 0; i < data.length; i++){
								obj = data[i];

								if(filter == undefined){
									if(obj.onphoto != null){
										selected = 'background-color:#434343';
										selected2 = ' userselected="1" ';
									}
									else
									{
										selected = '';
										selected2 = '';
									}

									tempvar +=	'<div class="passive_spys inviteuser" ' + selected2 + ' style="cursor:pointer;float:left;width:145px;margin:1px;' + selected + '" id="' + obj.id + 'celeb" onClick="toggleUserDivSelected(this);">'+'<div class="ank3">' + '<strong class="ank_st">' + obj.surname + '</strong><br>' + obj.name + ' ('+obj.id+')</div></div>';
								}else{
									if(obj.name.toUpperCase().indexOf(filter.toUpperCase()) != -1 ||
										obj.surname.toUpperCase().indexOf(filter.toUpperCase()) != -1 || filter == '')
										{
											$(obj.id + 'celeb').style.display = 'block';

										}else{
											$(obj.id + 'celeb').style.display = 'none';
										}
								}
							}
							if(filter == undefined){
								celebdiv.innerHTML = tempvar;

								var userdivs = $j(".passive_spys.inviteuser");

								for (var i=0; i < userdivs.length ;i++){
									if (userdivs[i].attributes.userselected != undefined )
										if(userdivs[i].attributes.userselected.value == 1)
											userdivs[i].userselected = 1;
								}
							}

                  	}

					function submitCelebAttach() {
						var userdivs = $j(".passive_spys.inviteuser");


						for (var i=0; i < userdivs.length ;i++){
							if (userdivs[i].userselected == 1){
								var hiddenInput = document.createElement("input");
								hiddenInput.setAttribute("type", "hidden");
								hiddenInput.setAttribute("name", "on_photo[]");
								hiddenInput.setAttribute("value", parseInt(userdivs[i].id));

								document.forms['attachcelebform'].appendChild(hiddenInput);
							}
						}
						return true;
					}



/**
 * Retrieve the absolute coordinates of an element.
 *
 * @param element
 *   A DOM element.
 * @return
 *   A hash containing keys 'x' and 'y'.
 */
function getAbsolutePosition(element) {
  var r = { x: element.offsetLeft, y: element.offsetTop };
  if (element.offsetParent) {
    var tmp = getAbsolutePosition(element.offsetParent);
    r.x += tmp.x;
    r.y += tmp.y;
  }
  return r;
};

/**
* Retrieve the coordinates of the given event relative to the center
* of the widget.
*
* @param event
*   A mouse-related DOM event.
* @param reference
*   A DOM element whose position we want to transform the mouse coordinates to.
* @return
*    A hash containing keys 'x' and 'y'.
*/
function getRelativeCoordinates(event, reference) {
	var x, y;
	event = event || window.event;
	var el = event.target || event.srcElement;

	if (!window.opera && typeof event.offsetX != 'undefined') {
		// Use offset coordinates and find common offsetParent
		var pos = { x: event.offsetX, y: event.offsetY };

		// Send the coordinates upwards through the offsetParent chain.
		var e = el;
		while (e) {
			e.mouseX = pos.x;
			e.mouseY = pos.y;
			pos.x += e.offsetLeft;
			pos.y += e.offsetTop;
			e = e.offsetParent;
		}

		// Look for the coordinates starting from the reference element.
		var e = reference;
		var offset = { x: 0, y: 0 }
		while (e) {
			if (typeof e.mouseX != 'undefined') {
				x = e.mouseX - offset.x;
				y = e.mouseY - offset.y;
				break;
			}
			offset.x += e.offsetLeft;
			offset.y += e.offsetTop;
			e = e.offsetParent;
		}

		// Reset stored coordinates
		e = el;
		while (e) {
			e.mouseX = undefined;
			e.mouseY = undefined;
			e = e.offsetParent;
		}
	}
	else {
		// Use absolute coordinates
		var pos = getAbsolutePosition(reference);
		x = event.pageX  - pos.x;
		y = event.pageY - pos.y;
	}
	// Subtract distance to middle
	return { x: x, y: y };
}

//for new onphoto
function fillOnPhotoFriendsList (data, filter) {
	var invitediv = $('friendsdiv');

	var tempvar = '';
	var avatarstring = '';


	//alert(obj[0].login.toUpperCase().indexOf(filter.toUpperCase));
	for(var i = 0; i < data.length; i++){
		obj = data[i];

		if(filter == undefined){
			tempvar +=	'<div class="inviteuser" style="cursor:pointer;width:140px;height:27px;margin:2px" id="' + obj.user_id + 'friend" onClick="sendOnPhoto(' + obj.user_id + ');">'+'<span id="' + obj.user_id + 'login"><strong class="ank_st">' + obj.login + '</strong></span><br>' + obj.fio + '</div>';

		}else{
			if(obj.login.toUpperCase().indexOf(filter.toUpperCase()) != -1 ||
			obj.fio.toUpperCase().indexOf(filter.toUpperCase()) != -1 || filter == '')
			{
				$(obj.user_id + 'friend').style.display = 'block';

			}else{
				$(obj.user_id + 'friend').style.display = 'none';
			}
		}
	}

	if(filter == undefined)
	invitediv.innerHTML = tempvar;

}

function getOnPhotoFriends() {
	var req = new Subsys_JsHttpRequest_Js();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.responseJS) {
				$('friendsfilter').data = req.responseJS.friends;
				fillOnPhotoFriendsList(req.responseJS.friends);
        FB_getFriendsInto('friendsdiv'); //Добавляем друзей из facebooka
			}
		}
	}
	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	req.send({ onphoto_action: 'onphoto_ajax'});
}




function sendOnPhoto(user_id) {
	var usersarray = new Array();

	var userdivs = $j(".passive_spys.inviteuser");

	for (var i=0; i < userdivs.length ;i++){
		if (userdivs[i].userselected == 1)
		usersarray.push(parseInt(userdivs[i].id));
	}

	var req = new Subsys_JsHttpRequest_Js();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.responseJS) {
				if(req.responseJS.answer == 'ok'){
					$('onphoto_text').innerHTML = req.responseJS.onphotohtml;
					$('onphoto_on_image').innerHTML = req.responseJS.boxeshtml;
					applyHandlersToOnPhotoLinks();
					closeOnPhotoInterface();
				}else if(req.responseJS.answer == 'alreadyonphoto'){
					$(user_id + 'friend').style.backgroundColor = '#600';
					$(user_id + 'login').innerHTML += ' уже отмечен';
				}
			}
		}
	}

	var x = parseInt($('onphoto_box').style.left);
	var y = parseInt($('onphoto_box').style.top);
	var w = parseInt($('onphoto_box').style.width);
	var h = parseInt($('onphoto_box').style.height);

	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	req.send({ onphoto_action: 'onphoto_ajax', user_id: user_id, photo_id: onphoto_photo_id, x:x, y:y, w:w, h:h});
}


function sendOnPhotoFB(user_id,fb_name) {

  var usersarray = new Array();

  var userdivs = $j(".passive_spys.inviteuser");

  for (var i=0; i < userdivs.length ;i++){
    if (userdivs[i].userselected == 1)
    usersarray.push(parseInt(userdivs[i].id));
  }

  var req = new Subsys_JsHttpRequest_Js();
  req.onreadystatechange = function() {
    if (req.readyState == 4) {
      if (req.responseJS) {
        if(req.responseJS.answer == 'ok'){
          $('onphoto_text').innerHTML = req.responseJS.onphotohtml;
          $('onphoto_on_image').innerHTML = req.responseJS.boxeshtml;
          applyHandlersToOnPhotoLinks();
          closeOnPhotoInterface();

        }else if(req.responseJS.answer == 'alreadyonphoto'){
          $(user_id + 'friend').style.backgroundColor = '#600';
          $(user_id + 'login').innerHTML += ' уже отмечен';
        }
      }
    }
  }

  var x = parseInt($('onphoto_box').style.left);
  var y = parseInt($('onphoto_box').style.top);
  var w = parseInt($('onphoto_box').style.width);
  var h = parseInt($('onphoto_box').style.height);

  callPublishPhoto(user_id,'',null,null);
  req.caching = false;
  req.open('POST', '/xmlhttp/', true);
  req.send({ onphoto_action: 'onphoto_ajax_fb', user_id: user_id, photo_id: onphoto_photo_id, x:x, y:y, w:w, h:h,fb_name:fb_name});

}


function ajaxDeleteOnPhoto(photo_id, user_id){
	var req = new Subsys_JsHttpRequest_Js();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.responseJS) {
				if(req.responseJS.answer == 'ok'){
					$('onphoto_text').innerHTML = req.responseJS.onphotohtml;
					$('onphoto_on_image').innerHTML = req.responseJS.boxeshtml;
					applyHandlersToOnPhotoLinks();
				}
			}
		}
	}

	req.caching = false;
	req.open('POST', '/xmlhttp/', true);
	req.send({ ajaxdeleteonphoto_user_id: user_id, ajaxdeleteonphoto_photo_id: photo_id});
}


function ajaxDeleteOnPhotoFB(photo_id, user_id){
  var req = new Subsys_JsHttpRequest_Js();
  req.onreadystatechange = function() {
    if (req.readyState == 4) {
      if (req.responseJS) {
        if(req.responseJS.answer == 'ok'){
          $('onphoto_text').innerHTML = req.responseJS.onphotohtml;
          $('onphoto_on_image').innerHTML = req.responseJS.boxeshtml;
          applyHandlersToOnPhotoLinks();
        }
      }
    }
  }

  req.caching = false;
  req.open('POST', '/xmlhttp/', true);
  req.send({ ajaxdeleteonphoto_user_fb_id: user_id, ajaxdeleteonphoto_photo_id: photo_id});
}

function coordIsWithinObject (coord, obj){
	var x1 = parseInt(obj.style.left);
	var y1 = parseInt(obj.style.top);
	var x2 = parseInt(obj.style.left) + parseInt(obj.offsetWidth);
	var y2 = parseInt(obj.style.top) + parseInt(obj.offsetHeight);


	if( coord.x > x1 && coord.y > y1 &&
		coord.x < x2 && coord.y < y2)
		return true;
		else
		return false;
}

function applyHandlersToOnPhotoLinks(){
	var links = getElementsByClassName("onphoto_user_link");
	for (var i=0; i < links.length ;i++){
		var el = $('box' + links[i].id);
		if(el){
			links[i].onmouseover = function () {	$('box' + this.id).style.visibility='visible'; 	};
			links[i].onmouseout = function () {	$('box' + this.id).style.visibility='hidden' };
		}
	}
	var boxes = getElementsByClassName("onphoto_user_on_image");
	if(boxes){
		$('large_img').boxes = boxes;
		$('large_img').onmousemove = function (event) {

					var coords = getRelativeCoordinates(event, this);
					for(var i = 0; i < this.boxes.length; i++){
						if(coordIsWithinObject(coords, this.boxes[i]))
						this.boxes[i].style.visibility = 'visible';
						else
						this.boxes[i].style.visibility = 'hidden';
					}
		}
		for(var i = 0; i < boxes.length; i++){
			boxes[i].onmouseout = function (event) {
				this.style.visibility = 'hidden';
			}
		}
	}
}


function openOnPhotoInterface(){
	getOnPhotoFriends();
	$('onphoto_area').style.display = "block";
	$('onphoto_box').style.display = "block";
	$('onphoto_box').style.left = Math.ceil((parseInt($('onphoto_area').style.width) - parseInt($('onphoto_box').style.width)) / 2 );
	$('onphoto_box').style.top = 0;
	//$('onphoto_box').style.top = Math.ceil((parseInt($('onphoto_area').style.height) - parseInt($('onphoto_box').style.height)) / 2 - 60);

	$('onphoto_friends').style.display = "block";

	updateBoxBackground();

	var evt = new Object();

	evt.target = $('onphoto_box');
	dragresize.mouseDown(evt);
	dragresize.mouseUp(evt);
}


function closeOnPhotoInterface(){
  if($('onphoto_area')){
	 $('onphoto_area').style.display = "none";
  }
  if($('fbcontactlist')){
    jcrop_api.destroy();
   }
}

function updateBoxBackground(){
	$('onphoto_box').style.backgroundPosition = "-" + $('onphoto_box').style.left + " -" + $('onphoto_box').style.top;
	$('onphoto_friends').style.left = parseInt($('onphoto_box').style.left) + parseInt($('onphoto_box').style.width) + 10;
	$('onphoto_friends').style.top = parseInt($('onphoto_box').style.top);
}

function onPhotoAreaClick(event){
	var targetid;
	if(event.srcElement)
		targetid = event.srcElement.id;
	else
		targetid = event.target.id;

	if(targetid == 'onphoto_darken'){
		var clickcoords = getRelativeCoordinates(event, $('onphoto_area'));

		var boxDeltaX = parseInt($('onphoto_area').style.width) - parseInt($('onphoto_box').style.width);
		var boxDeltaY = parseInt($('onphoto_area').style.height) - parseInt($('onphoto_box').style.height);

		$('onphoto_box').style.left = clickcoords.x+1;
		$('onphoto_box').style.top = clickcoords.y+1;



		if(clickcoords.x > boxDeltaX)
			$('onphoto_box').style.left = boxDeltaX;

		if(clickcoords.y > boxDeltaY)
			$('onphoto_box').style.top = boxDeltaY;

		updateBoxBackground();


		$('onphoto_box').style.display = "block";
		$('onphoto_friends').style.display = "block";

	}
}

function appl(){
	var elements = getElementsByClass('srch');
	for (i = 0; i < elements.length; i++) {
		elements[i].onclick = function(){
			elements_i = getElementsByClass('srch');
			for (j = 0; j < elements_i.length; j++) {
				elements_i[j].className = 'favor_gold srch';
				$(elements_i[j].id+'div',1).display='none';
			}
			this.className = 'favor_gold_act srch';
			$(this.id+'div',1).display='block';
		}
	}
}

							 	/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
 getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

	function process(img,direction){
		 	var pr_index= index;

		 	if(direction==1){
		 		index++;
		 		pr_index = index+1
		 	}
		 	else {
		 		index--;
		 		pr_index = index-1
		 	}
		 	if(photos[index]==undefined){
		 		index=0; // обнуляем если достигли конца
		 	}
		 	$('link_2_photo').href=link+'/'+ids[index];
		 	$('fast_image').src = photos[index];

		 	new Image().src = photos[pr_index]; //preload nex pic

		}

		function linsear(v,t){ var k=0;for (var i=0; i <= v.length-1; i++){	 if (v[i] == t){ k=i; break; } }	 return k; }

	function fv_init (){
	   a=$('fast_view',1);
	   a.display='none';
	   b=$('back',1);
	   b.display='none';
	   if (!(navigator.appName.indexOf('Internet')!=-1)){
	    	a.left = ($width()/2-350);
	  		a.top = ($height()/2-270);
	   }
	}

	function fv_show(){
		window.scrollTo(0,0);
		   fv_init();
		   toggle('fast_view','back');
		   set_opacity(0.08,0.85);
	}

	function fv_stat(){
	 		var req = new Subsys_JsHttpRequest_Js();
	 		req.caching = false;
	 		req.open('POST', '/xmlhttp/faststat.php', true);
	 		req.send({oh: 'hai'  });
	}