/*
  NIPOKAZAUBA!!!!!!!!!!1
  НИПОКАЗАУБА!!!1!!!!11
   ##   # # ###   ##  # #  ##  ####  ##  #  # ###   ##  #
   # #  # # #  # #  # ##  #  #   #  #  # #  # #__# #  # #
   #  # # # ###  #  # ##  ####  #   #### #  # #  # #### 
   #   ## # #     ##  # # #  # #### #  #  ##  ###  #  # #
   
 AAAHAHAAAAAAA!!!11!
 AAAAAAAAAHAHAHAAAAAHA!11!!!1!!
*/
/**jaaulde.utils - cookie works
 * Copyright (c) 2005 - 2010, James Auldridge
 * All rights reserved.
 * Licensed under the BSD, MIT, and GPL (your choice!) Licenses:
 *  http://code.google.com/p/cookies/wiki/License
 *
 */
var jaaulde=window.jaaulde||{};jaaulde.utils=jaaulde.utils||{};jaaulde.utils.cookies=(function(){var resolveOptions,assembleOptionsString,parseCookies,constructor,defaultOptions={expiresAt:null,path:'/',domain:null,secure:false};resolveOptions=function(options){var returnValue,expireDate;if(typeof options!=='object'||options===null){returnValue=defaultOptions;}else
{returnValue={expiresAt:defaultOptions.expiresAt,path:defaultOptions.path,domain:defaultOptions.domain,secure:defaultOptions.secure};if(typeof options.expiresAt==='object'&&options.expiresAt instanceof Date){returnValue.expiresAt=options.expiresAt;}else if(typeof options.hoursToLive==='number'&&options.hoursToLive!==0){expireDate=new Date();expireDate.setTime(expireDate.getTime()+(options.hoursToLive*60*60*1000));returnValue.expiresAt=expireDate;}if(typeof options.path==='string'&&options.path!==''){returnValue.path=options.path;}if(typeof options.domain==='string'&&options.domain!==''){returnValue.domain=options.domain;}if(options.secure===true){returnValue.secure=options.secure;}}return returnValue;};assembleOptionsString=function(options){options=resolveOptions(options);return((typeof options.expiresAt==='object'&&options.expiresAt instanceof Date?'; expires='+options.expiresAt.toGMTString():'')+'; path='+options.path+(typeof options.domain==='string'?'; domain='+options.domain:'')+(options.secure===true?'; secure':''));};parseCookies=function(){var cookies={},i,pair,name,value,separated=document.cookie.split(';'),unparsedValue;for(i=0;i<separated.length;i=i+1){pair=separated[i].split('=');name=pair[0].replace(/^\s*/,'').replace(/\s*$/,'');try
{value=decodeURIComponent(pair[1]);}catch(e1){value=pair[1];}if(typeof JSON==='object'&&JSON!==null&&typeof JSON.parse==='function'){try
{unparsedValue=value;value=JSON.parse(value);}catch(e2){value=unparsedValue;}}cookies[name]=value;}return cookies;};constructor=function(){};constructor.prototype.get=function(cookieName){var returnValue,item,cookies=parseCookies();if(typeof cookieName==='string'){returnValue=(typeof cookies[cookieName]!=='undefined')?cookies[cookieName]:null;}else if(typeof cookieName==='object'&&cookieName!==null){returnValue={};for(item in cookieName){if(typeof cookies[cookieName[item]]!=='undefined'){returnValue[cookieName[item]]=cookies[cookieName[item]];}else
{returnValue[cookieName[item]]=null;}}}else
{returnValue=cookies;}return returnValue;};constructor.prototype.filter=function(cookieNameRegExp){var cookieName,returnValue={},cookies=parseCookies();if(typeof cookieNameRegExp==='string'){cookieNameRegExp=new RegExp(cookieNameRegExp);}for(cookieName in cookies){if(cookieName.match(cookieNameRegExp)){returnValue[cookieName]=cookies[cookieName];}}return returnValue;};constructor.prototype.set=function(cookieName,value,options){if(typeof options!=='object'||options===null){options={};}if(typeof value==='undefined'||value===null){value='';options.hoursToLive=-8760;}else if(typeof value!=='string'){if(typeof JSON==='object'&&JSON!==null&&typeof JSON.stringify==='function'){value=JSON.stringify(value);}else
{throw new Error('cookies.set() received non-string value and could not serialize.');}}var optionsString=assembleOptionsString(options);document.cookie=cookieName+'='+encodeURIComponent(value)+optionsString;};constructor.prototype.del=function(cookieName,options){var allCookies={},name;if(typeof options!=='object'||options===null){options={};}if(typeof cookieName==='boolean'&&cookieName===true){allCookies=this.get();}else if(typeof cookieName==='string'){allCookies[cookieName]=true;}for(name in allCookies){if(typeof name==='string'&&name!==''){this.set(name,null,options);}}};constructor.prototype.test=function(){var returnValue=false,testName='cT',testValue='data';this.set(testName,testValue);if(this.get(testName)===testValue){this.del(testName);returnValue=true;}return returnValue;};constructor.prototype.setOptions=function(options){if(typeof options!=='object'){options=null;}defaultOptions=resolveOptions(options);};return new constructor();})();(function(){if(window.jQuery){(function($){$.cookies=jaaulde.utils.cookies;var extensions={cookify:function(options){return this.each(function(){var i,nameAttrs=['name','id'],name,$this=$(this),value;for(i in nameAttrs){if(!isNaN(i)){name=$this.attr(nameAttrs[i]);if(typeof name==='string'&&name!==''){if($this.is(':checkbox, :radio')){if($this.attr('checked')){value=$this.val();}}else if($this.is(':input')){value=$this.val();}else
{value=$this.html();}if(typeof value!=='string'||value===''){value=null;}$.cookies.set(name,value,options);break;}}}});},cookieFill:function(){return this.each(function(){var n,getN,nameAttrs=['name','id'],name,$this=$(this),value;getN=function(){n=nameAttrs.pop();return!!n;};while(getN()){name=$this.attr(n);if(typeof name==='string'&&name!==''){value=$.cookies.get(name);if(value!==null){if($this.is(':checkbox, :radio')){if($this.val()===value){$this.attr('checked','checked');}else
{$this.removeAttr('checked');}}else if($this.is(':input')){$this.val(value);}else
{$this.html(value);}}break;}}});},cookieBind:function(options){return this.each(function(){var $this=$(this);$this.cookieFill().change(function(){$this.cookify(options);});});}};$.each(extensions,function(i){$.fn[i]=this;});})(window.jQuery);}})();
//----------------------------------------------------

function Init()
{
	disel = jaaulde.utils.cookies.get('disabled_elems');
	if(!disel) disel = new Array(false);//not found
	for(i=0;i<disel.length;i++)
	{
		elem = El(disel[i]);
		if(elem)
		{
			elem.style.display = "none";
		}
	}
	InitEffects();
}

function El(id){
return document.getElementById(id);
}
function GetPosts(){
var posts = new Array();
posts = document.getElementsByClassName('post');
return posts;
}
function GetMsgs(){
var msgs = new Array();
msgs = document.getElementsByClassName('msg');
return msgs;
}

function UserStat(stat){
	document.write("<input type='text' value='"+stat+"' />");
}

// Ввод параметров
function ask(act, msg){
	var ans = prompt(msg,'');
	if(ans == '' || ans == null || ans == undefined) return '';
	else return (' '+act+'="'+ans+'"');
}
function ask2(msg){
	var ans = prompt(msg,'');
	if(ans == '' || ans == null || ans == undefined) return '';
	else return ans;
}
//Бинарные функции для работы с группами
function Bin2Dec(binnum)
{
	numlen=binnum.length;
	answer=0;
	place=numlen-1;
	for(x=0; x < numlen; x++)
	{
		if(binnum.substr(x, 1) == 1)

		{
			answer = answer + Math.pow(2, place)
		}
		else if(binnum.substr(x, 1) != 0) 
		{
			return 0;
		}
		place--;
	}
	return answer;
}

function Dec2Bin(dec) 
{
	if (dec == "")
	{
		return 0;
	}
	else 
	{
		return bnr(dec);
	}
}

function bnr(decm)
{
	var dec=new Number();dec=decm;i=dec;
	var hit="";
	while(i >= 1)
	{
		var m=(i*10)/4;
		while(m > 1){m=m-5;};
		if(m < 0){i=(i-1)/2;hit+="1";}else{i=i/2;hit+="0";};
	}
	var b ="";
	var bin;
	bin=hit.length;
	for(a=hit.length;a>=0;a--)
	{
		b += hit.substring(a-1,a);
	}
	return b;
}

function RecountStats(id)
{
	var a = "";
	var i;
	for (i=0; i<16; i++)
	{
		if (((i > 4) && (i < 13)) || (i == 0)) {a = a.concat("0");continue;}
		a = a.concat(document.getElementById('sc_'+id+i).checked ? "1" : "0");
	}
	var de = Bin2Dec(a);
	document.getElementById('si_'+id).value = de;
	return 0;
}
/***************************************/

// Вставка в текстформу
/***************************************/
function Paste(dest,before,after)
{
	var el = document.getElementById(dest);
	el.focus();
	if (el.selectionStart == null){
		el.value = el.value + before + after;
	} else {
		el.value = el.value.substring(0,el.selectionStart) +
		before +
		el.value.substring(el.selectionStart,el.selectionEnd) +
		after +
		el.value.substring(el.selectionEnd);
	}
}
// Кнопка текстформы
function Button(title,action){
	document.write("<input type=\"button\" value=\""+title+"\" onclick=\""+action+"\">");
}
// Ввод картинки
function InsertImg(tx){
	var tag = ask('src','Ссылка на изображение:\n\nhttp://');
	if(tag){
		tag = "<img" + tag + ask('alt','Описание (не обязательно):') + " />";
		Paste(tx,tag,"");
	}
}
// Ввод флешки
function InsertEmbed(tx){
	var tag = ask('src','Ссылка на флешку:\n\nhttp://');


	if(tag){
		tag = "<embed type='application/x-shockwave-flash' " + tag +
		ask('width','Ширина (не обязательно):') + 
		ask('height','Высота (не обязательно):') + " />";
		Paste(tx,tag,"");
	}
}
// Ввод мп3
function InsertMp3(tx){
	var tag = ask2('Ссылка на мп3-файл\n\nhttp://***/file.mp3');
	if(tag){
		tag =  '<object class="playerpreview" type="application/x-shockwave-flash" data="http://otake.ru/medias/player_mp3.swf" width="200" height="20"><param name="movie" value="http://otake.ru/medias/player_mp3.swf" /><param name="FlashVars" value="mp3='+tag+'&amp;showstop=1&amp;showvolume=1&amp;bgcolor1=189ca8&amp;bgcolor2=085c68" /></object>'
		Paste(tx,tag,"");		
	}
}
// Ввод ссылки
function InsertA(tx){
	var tag = ask('href','Ссылка:\n');
	if(tag){
		var txt = ask2('Текст:');
		if(!txt) txt="";
		tag = "<a" + tag + " target=_blank>" + txt;
		Paste(tx,tag,"</a>");
	}
}
// Ввод шрифта
function InsertFont(tx){
	var tag = ask('color','Цвет (не обязательно):');
	tag += ask('size','Размер (не обязательно):');
	if(tag){
		tag = "<font" + tag + ">";
		Paste(tx,tag,"</font>");
	}
}
// Ввод цитаты
function InsertQuote(tx){
	var tag = ask('user','Юзернейм (не обязательно):');
	if(tag){
		tag = "<quote" + tag + ">";
		Paste(tx,tag,"</quote>");
	}
}
// Ввод фона
function InsertBg(tx){
	var tag = ask('bgcolor','Цвет фона (не обязательно):');
	tag += ask('background','Ссылка на картинку (не обязательно):');
	if(tag){
		tag = "<table><tr><td" + tag + ">";
		Paste(tx,tag,"</td></tr></table>");
	}

}
// Ввод движения
function InsertMove(tx){
	var tag = ask('behavior','Тип движения (не обязятельно):\n\nalternate - в обе стороны\nscroll - в одну сторону\nslide - до остановки');
	tag += ask('direction','Направление (не обязательно):\n\nleft | right | up | down');
	tag += ask('scrollamount','Скорость (не обязательно):\n\nРекомендуется: 10 - 100');
	tag += ask('bgcolor','Цвет фона (не обязательно):');
	tag = "<marquee" + tag + ">";
	Paste(tx,tag,"</marquee>");
}
// набор кнопок
function ButtonSet(tx){
	Button("Жърне",			"Paste('"+tx+"','<b>','</b>');");
	Button("Курсив",		"Paste('"+tx+"','<i>','</i>');");
	Button("Подчеркнуте",	"Paste('"+tx+"','<u>','</u>');");
	Button("Зачеркнуте",	"Paste('"+tx+"','<s>','</s>');");
	Button("БКБ",			"Paste('"+tx+"','<bkb>','</bkb>');");
	Button("Телетайп",		"Paste('"+tx+"','<tt>','</tt>');");
	Button("Эпилепсия",		"Paste('"+tx+"','<effect>','</effect>');");
	Button("Мигалка",		"Paste('"+tx+"','<blink>','</blink>');");
document.write("&nbsp;");
	Button("Коде",			"Paste('"+tx+"','<code>','</code>');");
	Button("Цитате",		"InsertQuote('"+tx+"')");
document.write("&nbsp;");
	Button("Центре",		"Paste('"+tx+"','<center>','</center>');");
	Button("Сверху",		"Paste('"+tx+"','<sup>','</sup>');");
	Button("Снизу",			"Paste('"+tx+"','<sub>','</sub>');");

	Button("Ссылка",		"InsertA('"+tx+"')");
	Button("Картинка",		"InsertImg('"+tx+"')");
	Button("Флеш",			"InsertEmbed('"+tx+"')");
	Button("mp3",			"InsertMp3('"+tx+"')");
document.write("&nbsp;");
	Button("Шрифт",			"InsertFont('"+tx+"')");
	Button("Фон",			"InsertBg('"+tx+"')");
	Button("Движение",		"InsertMove('"+tx+"')");
document.write("&nbsp;");
	Button("Линия",			"Paste('"+tx+"','<hr>','');");
document.write("<br />");
}

//Определение браузера
function getBrowser() 
{
 var ua = navigator.userAgent.toLowerCase();
 // Определим Internet Explorer
 if (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1)
 {
   return "msie"
 }
 // Opera
 if (ua.indexOf("opera") != -1)
 {
   return "opera"
 }
 // Gecko = Firefox + Netscape
 if (ua.indexOf("gecko") != -1)
 {
   return "gecko";
 }
 // Safari, используется в MAC OS
 if (ua.indexOf("safari") != -1)
 {
   return "safari";
 }
 // Konqueror, используется в UNIX-системах
 if (ua.indexOf("konqueror") != -1) 
 {
   return "konqueror";
 }
 return "unknown";
}
//-------------------JX(modif)----------------------
function RndStr(len)
{
	var s = "";
	while(len--) s += (Math.floor(Math.random()*36.1)).toString(36);
	return s;
}

jx = {
	getHTTPObject : function() {
		var http = false;
		if(typeof ActiveXObject != 'undefined') {
			try {http = new ActiveXObject("Msxml2.XMLHTTP");}
			catch (e) {
				try {http = new ActiveXObject("Microsoft.XMLHTTP");}
				catch (E) {http = false;}
			}
		} else if (window.XMLHttpRequest) {
			try {http = new XMLHttpRequest();}
			catch (e) {http = false;}
		}
		return http;
	},
	load : function (url,callback,param,mode) 
	{
                url = document.location.href + url;
		var http = this.init();
		if(!http||!url) return;
		if (http.overrideMimeType) http.overrideMimeType('text/html');

		if(!format) var format = "text";
		format = format.toLowerCase();

		var now = "randm=" + new Date().getTime();
		url += (url.indexOf("?")+1) ? "&" : "?";
		url += now;
		http.open("POST", url, (mode != 5));
		http.onreadystatechange = function () 
		{
			if (http.readyState == 4)
			{
					var result = "";
					if(http.responseText) result = http.responseText;
					if(callback)
					{
						switch(mode)
						{
							case 1:callback(result);break;
							case 2:callback(result,param);break;
							case 3:callback(result,param,http.status);break;
							default:callback(result,param);break;
						}
					}
			}
		}
		http.send(null);
		if(mode == 5)
		{
			if(http.responseText) result = http.responseText;
					if(callback)
					{
						switch(mode)
						{
							case 1:callback(result);break;
							case 2:callback(result,param);break;
							case 3:callback(result,param,http.status);break;
							default:callback(result,param);break;
						}
					}
		}	
	},
	post: function(url,callback,param,mode,data)
	{
		var http = this.init();
		http.open("POST",url,true);
		//Send the proper header information along with the request
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http.setRequestHeader("Content-length", data.length);
		http.setRequestHeader("Connection", "close");

		http.onreadystatechange = function() 
		{
			if(http.readyState == 4) 
			{
				var result = "";
				if(http.responseText) result = http.responseText;
				if(callback)
				{
					switch(mode)
					{
						case 1:callback(result);break;
						case 2:callback(result,param);break;
						case 3:callback(result,param,http.status);break;
						default:callback(result,param,http.status);break;
					}
				}
			}
		}
		http.send(data);
		return true;
	},
	mp_post: function(url,data){
		var bound = RndStr(23);//alert(bound);
		var veselushki ="------------"+bound+"\r\n"+data+"------------"+bound+"--\r\n";
		var http = this.init();
		http.open("POST",url,true);
		http.setRequestHeader("Content-Type", "multipart/form-data; boundary=----------"+bound);
		http.setRequestHeader("Content-Length", veselushki.length);
		http.setRequestHeader("Connection","Close");//alert(veselushki);
		http.onreadystatechange = function() 
		{
			if(http.readyState == 4) alert('всё.');
		}
		http.send(veselushki);
		
		return true;
		},
	init : function() {return this.getHTTPObject();}
}
//-------------------/JX---------------------------
function isuint(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function ValidatePM(obj)
{
	var un = (obj.pm_uname.value.replace('\\','')).replace('/','');//filtering
	if (un == '') return false;

	obj.pm_s.style.display = 'none';
	obj.pm_load.style.display = 'block';
	
	jx.load('user/'+un+'/check',function(data,param){
		var d = data;
		if(isuint(data))
		{param.pm_uid.value = d;param.submit();}
		else
		{param.pm_uname.value="Такого юзера нет!";param.pm_s.style.display = 'block';param.pm_load.style.display = 'none';}
		return true;
	},obj,2);
	return false;
}
//-----------------messages------------------------
function setElementOpacity(sElemId, nOpacity)
{
  var opacityProp = getOpacityProperty();
  var elem = document.getElementById(sElemId);

  if (!elem || !opacityProp) return; // Если не существует элемент с указанным id или браузер не поддерживает ни один из известных функции способов управления прозрачностью
  
  if (opacityProp=="filter")  // Internet Exploder 5.5+
  {
    nOpacity *= 100;
	
    // Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
    var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
    if (oAlpha) oAlpha.opacity = nOpacity;
    else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")"; // Для того чтобы не затереть другие фильтры используем "+="
  }
  else // Другие браузеры
    elem.style[opacityProp] = nOpacity;
}

function getOpacityProperty()
{
  if (typeof document.body.style.opacity == 'string') // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
    return 'opacity';
  else if (typeof document.body.style.MozOpacity == 'string') // Mozilla 1.6 и младше, Firefox 0.8 
    return 'MozOpacity';
  else if (typeof document.body.style.KhtmlOpacity == 'string') // Konqueror 3.1, Safari 1.1
    return 'KhtmlOpacity';
  else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) // Internet Exploder 5.5+
    return 'filter';

  return false; //нет прозрачности
}

function ShowInfo(text,type)
{
	var i = 0;
	var newid;
	var obj;
	
	while(El("shinfo"+i)){i++;} //find the last one
	newid = "shinfo"+i; //non-existing
	
	obj = document.createElement('div');
	obj.setAttribute('class', (type?'shinfo sherror':'shinfo'));
	obj.setAttribute('id', newid);
	obj.style.display = 'none';
	obj.style.position = "fixed";
	obj.innerHTML = text;
	document.body.appendChild(obj);
	obj.style.display = 'block';
	var t=0; //infoblock height
	for(var x=0;x<i;x++)
	{
		t += El("shinfo"+i).offsetHeight*1;
	}
	obj.style.top = t+"px";
	setElementOpacity(newid, 0); // hide
	InfoOpacity(newid,1); //on
	return true;
}

function InfoOpacity(id,mode)
{
	var op = El(id).style[getOpacityProperty()]*1;
	var speed = 0.1; //10 frames
	speed = (mode?speed:-speed); //fade in/out
	var step = 100; //100ms
	var delay = 2000; //2000ms //pause
	if (op+speed>1)
	{
		op = 1;
		setElementOpacity(id,op);
		setTimeout('InfoOpacity("'+id+'",0)',delay);
		return false;
	}
	else if(op+speed < 0)
	{
		op = 0;
		setElementOpacity(id,op);
		DeleteElem(id);
		return true;
	}
	else
	{
		op = op + speed;
		setElementOpacity(id,op);
		setTimeout('InfoOpacity("'+id+'",'+mode+');',step);
		return true;
	}
	return true;
}

function ToHtml(type,msg,code,http)
{
	switch(type)
	{
		case 'wait':
			return "<div class='wait'>\n"+
			"<h1>Подождите</h1>\n"+
			"<p>"+msg+"</p>\n"+
			"</div>\n";
		break;
		case 'error':
			return "<div class='error'>\n"+
			"<img src='/img/error/error.png' alt='"+code+"' />\n"+
			"<h1>"+code+" "+http+"</h1>\n"+
			"<p>"+msg+"</p>\n"+
			"</div>\n";
		break;
		default:
		case 'msg':
			return "<div class='alert'>\n"+
			"<img src='/img/error/warning.png' alt='Сообщение' />\n"+
			"<p>"+msg+"</p>\n"+
			"</div>\n";
		break;
	}
}
function BigMsg(text) //to remove call BigMsg("")
{
	var shadow, wind, fr = false;
	shadow = El('shadow');
	wind = El('shbox');
	if (!shadow)
	{
		fr = true;
		shadow = document.createElement('span');
		shadow.setAttribute('class', 'shadow');
		shadow.setAttribute('id', 'shadow');
	}
	if (!wind)
	{
		fr = true;
		wind = document.createElement('div');
		wind.setAttribute('class', 'shbox');
		wind.setAttribute('id', 'shbox');
	}
	
	if (!text)
	{
		wind.style.display='none';
		shadow.style.display='none';
		DeleteElem('shadow');DeleteElem('shbox');
		return false;
	}
	wind.innerHTML = text;
	if (fr) //не повторный запуск
	{
		document.body.appendChild(shadow);//темно
		document.body.appendChild(wind);//окошко
	}
	return true;
}

//взять значение свойства
function getStyle(el, cssprop)
{
    if (document.defaultView && document.defaultView.getComputedStyle) 
    {//Normal
        if (cssprop == 'float') cssprop = 'cssFloat';
        return document.defaultView.getComputedStyle(el, '')[cssprop];
    }
    else
    {
        if (el.currentStyle)
        {//IE
            if (cssprop == 'float') cssprop = 'styleFloat';
            return el.currentStyle[cssprop];
        }
    }
}

function getPos(inputElement) {
    var coords =  new Object();
    coords.x = 0;
    coords.y = 0;
    try {
        targetElement = inputElement;
        if(targetElement.x && targetElement.y) {
            coords.x = targetElement.x;
            coords.y = targetElement.y;
        } else {
            if(targetElement.offsetParent) {
                coords.x += targetElement.offsetLeft;
                coords.y += targetElement.offsetTop;
                while(targetElement = targetElement.offsetParent) {
                    coords.x += targetElement.offsetLeft;
                    coords.y += targetElement.offsetTop;
                }
            } else {
               return 0;
            }
        }
        return coords;
    } catch(error) {
        //alert(error.msg);
        return coords;
    }
}

//-------------------elements----------------------------------
function DeleteElem(id)
{
	var obj = El(id);
	if (obj) obj.parentNode.removeChild(obj);
	return true;
}

function ToggleElem(id,remember)
{
	var obj = El(id);
	obj.style.display = (obj.style.display=="none")?"block":"none";
	//remember in cookies
	if(remember)
	{
		disel = jaaulde.utils.cookies.get('disabled_elems');//array
		if(!disel) disel = new Array(false);//not found
		len = (disel.length?disel.length*1:1);
		used = false;
		i=0;
		while(i<=len)
		{
			//find corresponding id or empty element
			if(!disel[i] || (disel[i]==id))
			{
				if(obj.style.display=="none" && (!used)) //remember
				{
					disel[i]=id;
					used=true;
				}
				else disel[i]=false; //forget
			}
			i++;
		}
		//while(!disel[i--] && i>0) disel[i]=null;//clean
		_host = location.href.substring(location.href.indexOf("/")+2);
		_path = _host.substring(_host.indexOf("/")+1);
		date=new Date();
		date.setDate(date.getDate()+5); //hold for 5 days
		options = {/*path:_path,*/expires:date};//TODO: UNSAFE!!!!!!!
		//alert(options);
		jaaulde.utils.cookies.set('disabled_elems',disel,options);
	}
	return obj.style.display;
}

function SwitchElem(id,pos)
{
	var obj = El(id);
	switch(pos)
	{
		case 0:pos='none';break;
		case 1:pos='block';break;
		case 2:pos='table';break;
		default:pos='';
	}
	obj.style.display = pos;
	return obj.style.display;
}

function NewElem(tag,id,_class,inner,parent)
{
	if(!tag) tag='div';
	if(!parent) parent=document.body;
	if(!id) id='';
	if(!_class) _class='';
	if(!inner) inner = '';
	var elem = wind = document.createElement(tag);
	elem.setAttribute('class', _class);
	elem.setAttribute('id', id);
	parent.appendChild(elem);
	elem.innerHTML = inner;
	return elem;
}
//--------------------menu control-------------------------
/*
function MoveMenu(posx)
{
	var obj = El("menu");
	obj.style.position = "fixed";
	var menupos = obj.style.top.substring(0,obj.style.top.length-2)*1; //px
	if (posx == menupos) return true;
	var speed;
	if(posx>menupos)
	speed = 22;
	else speed = -22;
	if (posx - menupos < speed)
	{
		obj.style.top = posx + "px";
		return true;
	}
	obj.style.top = (menupos + speed) + "px";
	setTimeout("MoveMenu("+posx+");",30);
	return false;
}*/

//------------------hash--------------------------------------
function GetHashSync()
{
	hash = El('hash');
	if (!hash)
	{
		hash = document.createElement('input');
		hash.setAttribute('type', 'hidden');
		hash.setAttribute('id', 'hash');
		hash.setAttribute('value', '');
		document.body.appendChild(hash);
	}
	jx.load('/hash.[upyachka]',function(data,param)
		{
			if(data=='') {ShowInfo("Хэш не получен!",1);}
			if(data.substring(0,1) =='{') //JSON
			{
				try 
				{
					var o= eval('('+data+')');
					El('hash').value = '';
					BigMsg(ToHtml(o.type,o.msg,o.code,o.http));
				}
				catch(a) 
				{
					El('hash').value = '';
					alert("Ошибка в ответе сервера.\nСкажите админам, что получение хеша глючит.");
				}
			}
			else
			El('hash').value = data;
		}
		,hash,5);
	return hash.value;
}

//----------------Submitters-----------------------------
function Pack(form,val_id,exclude)
{
	if(!form) return false;
	var e = 0;
	var data = "";
	var val = "";
	var cond = false;
	for(var i=0;i<form.elements.length;i++)
	{
		e = form.elements[i];
		cond = (val_id?(e.id.substring(0,val_id.length) == val_id):e.name);
		if(cond)
		{
			var tag = e.tagName.toLowerCase();
			switch(tag)
			{
			case "input":
				switch(e.type.toLowerCase())
				{
				case "checkbox":
					if(e.checked) val=1;
					else val=0;
					break;
				default:
					val = e.value;
				}
			break;
			case "file":
			case "textarea":
			case "select":
			default:
				val = e.value;
			}
			var skip = false;
			if(typeof(exclude)=='array')
			{
				for(var g=0;g<exclude.length;g++) {if(val==exclude[g]) skip = true;}
			}
			else if(exclude)
			{
				if(val==exclude) skip = true;
			}
			if(skip) continue;
			if (data == "") data = (val_id?e.id.substring(val_id.length):e.name)+"="+encodeURIComponent(val);
			else data = data+"&"+(val_id?e.id.substring(val_id.length):e.name)+"="+encodeURIComponent(val);
		}
	}
	return data;
}

function SubmitForm(form,nohash)
{
	var m=0;
	switch(form.method.toLowerCase())
	{
		case 'post':
			if(form.enctype)
				if(form.enctype.toLowerCase().indexOf("multipart") != -1)
				m=2;break;
			m=0;break;
		case 'get':m=1;break;
		default:return true;break;
	}//alert(m);
	var data = Pack(form);
	BigMsg(ToHtml('msg',"Подача запроса...",0,0));
	var call = function(data,param)
	{
		var obj;
		try
		{obj = eval('('+data+')');if(!obj.type) throw(2);}
		catch(a)
		{alert('Ошибка в ответе; передайте админам:\n\n'+data);obj=eval("({type: 'error', msg: 'Ошибка в ответе сервера', code: 500, http: 'Internal Server Error'})");}
		BigMsg(ToHtml(obj.type,obj.msg,obj.code,obj.http));
		if((obj.type.indexOf("error") != -1) && (!obj.redirect)) //err
		{setTimeout("BigMsg('');",2000);}
		else
		{setTimeout("document.location."+(obj.redirect?"href='"+obj.redirect+"'":"reload(true)")+";",2000);}
	}
	if(!nohash)
	{
		try {var h = GetHashSync();if(!h) return;h=".["+h+"]";}
		catch(a){call("{type: 'error', msg: 'Ошибка получения хеша.', code: 500, http: 'Internal Server Error'}",0);return false;}
	}
	else h = "";
	//alert(h);
	switch(m)
	{
		case 0:
                    var url = form.action+h;
                    jx.post(url,call,0,2,data);break;
		case 1:jx.load(form.action+h+"?"+data,call,0,2);break;
		case 2:jx.mp_post(form.action+h,data);break;
		default:alert('SubmitForm FFUUUUUU');return true; //wtf? No wai.
	}
	return false;
}

function RqstLink(obj)
{
	var h=GetHashSync();
	if(!h) return;
	var href = obj.href+".["+h+"]";
	jx.load(href,function(data,param){
		var o;
			try {o= eval('('+data+')');} catch(a) {alert('Ошибка в ответе сервера. Передайте админам:\n\n'+data);ShowInfo("Ошибка в ответе сервера.",1);return false;}
		if(o.type.indexOf('error') != -1)
		{ShowInfo(o.msg,1);}//err
		else
		{
			ShowInfo(o.msg,0);
			var as = obj.href.lastIndexOf("/")+1;
			switch(o.action)
			{
				case 'del': //hide post
					ToggleElem(param.parentNode.parentNode.id);
				break;
				case 'delnews': //hide news
					ToggleElem('n'+o.nid);
				break;
				case 'vote':
					El('bljsloe'+o.postid).innerHTML=o.mark;
					El('blvopl'+o.postid).style.display='none';
					El('blvomi'+o.postid).style.display='none';
				break;
				default:
				//	ShowInfo(o.action,1);
			}
			if(o.redirect) setTimeout("document.location.href='"+o.redirect+"';",2000);
		}
	},obj,2);
	return false;
}
function SelectAll(id,state)
{
	var form = El(id);
	if(!form) return false;
	for(var i=0;i<form.elements.length;i++)
	{
		e = form.elements[i];
		if((e.tagName.toLowerCase()=='input') && (e.type.toLowerCase()=='checkbox'))
		{
			e.checked = ((state==-1)?(!e.checked):state);
		}
	}
}
function MuSubmit(formid,val_id,resid,action,nohash)
{
	var f=El(formid);if(!f) return false;
	var res=El(resid);if(!res) return false;
	res.value = Pack(f,val_id, new Array('0'));
	if(action) f.action=action;
	if(nohash) f.submit();
	else return f.onsubmit();
}
function NewThemePage(formid,countid)
{
    var counter = El(countid);
    var form = El(formid);
    if(!counter || !form) return false; //TODO: create counter
    var cv = counter.value*1 + 1;
    counter.value = cv;
    var cnt = "<tr id='nth_pg"+cv+"_0'><th>Линк</th><td><input id='nth_page"+cv+"_0' type='text'/></td></tr>\r\n"+
        "<tr id='nth_pg"+cv+"_1'><th>Шаблон</th><td><textarea id='nth_page"+cv+"_1' rows='10'></textarea></td></tr>\r\n"+
        "<tr id='nth_pg"+cv+"_2'><th>Content-type</th><td><input id='nth_page"+cv+"_2' type='text'/></td></tr>\r\n";
    var ne = NewElem('table', 'nth_pg'+cv.toString(), 'dform', cnt, form);
    return ne;
}

