var request,abortRequest,// ajax request object
	imgopened = false,	// images
	fbopen = 0,			// feedback
	el,					// iframe
	mfs = false, // is map fullscreened?
	i = document.cookie, a='';

// removeNode для Firefox
if( window.Node && !Node.prototype.removeNode ) {
    Node.prototype.removeNode = function(remove) {
        var range;
        return !! this.parentNode && ( remove ? this.parentNode.removeChild(this) : (
            this.nodeType == 1 && (
                range = document.createRange(),
                range.selectNodeContents(this),
                this.parentNode.replaceChild(range.extractContents(), this)
            )
        ));
    }
}

// ----- checkboxes

/* Check checkboxes */
function checkall( f, s ) {
	var t = (eval("document." + f + ".elements"));
	for (var i = 0; i < t.length; i++) {
    	if(t[i].type == "checkbox") {
            if( t[i].checked == s )
                t[i].checked = !s;
            else
                t[i].checked = s;
   		}
  	}
}

// ----- images:
function imgopen(s,t) { // s - путь к картинке, t - текстовая подпись
	if(imgopened) bloff();
	s=s||'';t=t||'';
	var tmp = new Image();
	tmp.onload = function() {
		blon();
		var l = $('imgopen');
		l.innerHTML = '<div id="imgbox" onClick="bloff()"><img onClick="bloff()"'
			+' width="'+tmp.width+'" height="'+tmp.height+'"'
			+' alt="'+htmlspec(t)+'" src="'+s+'"><br>' + htmlspec(t) + '</div>';
		var windowWidth = document.documentElement.clientWidth-40;
		var windowHeight = document.documentElement.clientHeight-40;
		l.style.position = 'absolute';
		var tp = (document.documentElement.scrollTop + (windowHeight-tmp.height)/2);
		var lft = (document.documentElement.scrollLeft + (windowWidth-tmp.width)/2);
		l.style.top  = (tp>0?tp:0) + 'px';
		l.style.left =  (lft>0?lft:0) + 'px';
		l.style.width = 'auto';
		l.style.display = 'block';
		rebody();
	 }
	tmp.onerror = function(){alert2('Нет картинки!');};
	tmp.src = s;
	//if (tmp && tmp.onload && tmp.complete) tmp.onload();
}
function bldo()
{
  if(imgopened)
   {
	var b = $('imgback');
	if(b.style.opacity && b.style.opacity<0.7)
	 {
	  b.style.opacity = parseFloat(b.style.opacity) + 0.01;
	  setTimeout("bldo()",100);
	 }
   }
}
function blon(mode) // 2-запретить Esc
{
	var b = $('imgback'), a=b.style;
	if(mode!=2)
	  if(b.addEventListener) b.addEventListener("click", bloff, false);
					  else b.onclick = bloff;
	a.top = '0px';
	a.left = '0px';
	a.display = 'block';
	a.width = "100%";
//	var c=document.body.offsetHeight,d=document.documentElement.clientHeight;
//	a.height = (c>d?c:d) +'px';
	imgopened = true;
	setTimeout("bldo()",300);
}
function bloff()
{
	var a = $('imgopen').style, b = $('imgback').style;
	b.height = b.width = a.height = a.width = '0px';
	b.display = a.display = 'none';
	imgopened = false;
}
cg = function(a,b){return a.charCodeAt(b);};
// карта
function rzm() // resize map
{
  var mws = $('m').style, mes = $('me').style, height;
  if(!mws||!mes) return;
  if(mfs) // fullscreen
   {
	meclose();

	height = document.documentElement.clientHeight;
	mws.top = 0;

	map.addControl(lo);
	map.addControl(l2o);
	map.removeControl(n3d);
	map.addControl(n3d, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,65)) );
   }
  else // in window
   {
	if(me)meopen();
  
	mws.top = mes.top;
  	height = document.documentElement.clientHeight - $('m').offsetTop;

	map.removeControl(lo);
	map.removeControl(l2o);
	map.removeControl(n3d);
	map.addControl(n3d, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,7)) );
   }
  mws.height = height + 'px';
  mes.height = height - 10 + 'px';
  mws.width = document.documentElement.clientWidth - (me?$('me').offsetWidth+20:0) + 'px';
  melupd();
}
function mfso() // map full screen on/off
{
	mfs = !mfs;
	rzm(); // resize map
}

function escPressed() // нажат Esc
{
	if(el != null) // убрать iframe
	 {
	  el.parentNode.removeChild(el);
	  el = null;
	  return;
	 }
	bloff(); // убрать картинку, снять затемнение
	if( mfs ) // свернуть карту
	  mfso();
	alert_cl(); // убрать алерт
	fbcl();
}

function rebody() // on body.onload
{
	if(true)//document.body.offsetHeight < document.documentElement.clientHeight)
	 {
	 	var a = document.documentElement.clientHeight, b=$('imgopen').offsetTop+$('imgopen').offsetHeight, c=document.body.offsetHeight, e = document.documentElement.clientWidth; 
		$('imgback').style.height = (a<b?(b<c?c:b):(a<c?c:a))+20+'px';
		if($('imgopen').offsetWidth>e)
		  $('imgback').style.width = $('imgopen').offsetWidth + 'px';
		/*
		$('content').style.height = document.documentElement.clientHeight
			- $('logo').offsetHeight
			- ($('mainmenu')?$('mainmenu').offsetHeight:0)
			- $('bott').offsetHeight -30 + 'px';*/
		//alert($('content').style.height);
	 }	
}
function rzw() // on resize window
{
	rebody(); // resize body
	if($('m'))rzm(); // resize map
	fbcl();
}

$ = function(a){return document.getElementById(a);};
$e = function(a){return encodeURIComponent(a);};

if (document.addEventListener)
  document.addEventListener("keypress", function(e){if(e.keyCode==27) escPressed();}, false);
else if(document.attachEvent)
  document.attachEvent('onkeypress', function(){if(window.event.keyCode==27)escPressed();} );

if (window.addEventListener)
 {
  window.addEventListener('resize', rzw, false);
  window.addEventListener('load', rebody, false);
 }
else if(window.attachEvent)
 {
  window.attachEvent('onresize', rzw);
  window.attachEvent('onload', rebody);
}
 
// alert2( Сообщение, режим, функция по ОК-получает введенный текст, функция для кнопки2, функция3)
//  режим (mode) может быть "confirm", тогда будет две кнопки ОК и Отмена
//			   а может быть "ync", тогда будет три кнопки "Да" "Нет" "Отмена"
//  соответственно нужно указать функции для каждой кнопки
var alert_funcs;
function alert2(m,mode,f1,f2,f3)
{
	var a=$('al'),ac=$('alc'),b,d=document.documentElement;
	var w = d.clientWidth-40;
	var h = d.clientHeight-40;
	alert_funcs = [];
	if(f1) alert_funcs[1] = f1;
	if(f2) alert_funcs[2] = f2;
	if(f3) alert_funcs[3] = f3;
	if(mode && mode.length) // может быть передан массив из кнопок и функций, например, такой:
	 {
	  //  [ 'Сохранить',	function(){save();clear();},
	  //	'Не сохранять',	function(){clear();} ,
	  //	'Отмена ]
	  b = '';
	  for(var i=0,j=1; i<mode.length; i+=2,j++)
	   {
	    b += '<input type="button" value="' +mode[i]+ '" onClick="alert_cl('+j+')">&nbsp;';
	    if(mode[i+1] && mode[i+1]!='undefined')
	      alert_funcs[j] = mode[i+1]; 
	   }
	 }
	else if(mode=='ync')
	 {
	  b  = '<input type="button" value="Да" onClick="alert_cl(1)">&nbsp;'
		 + '<input type="button" value="Нет" onClick="alert_cl(2)">&nbsp;'
		 + '<input type="button" value="Отмена" onClick="alert_cl(3)">';
	 }
	else
	 {
	  b = '<input type="button" value="ОК" onClick="alert_cl(1)">';
	  if(mode=='confirm')
		b += ' &nbsp; <input type="button" value="Отмена" onClick="alert_cl(2)">';
	 }
/*	var icon = (mode=='warning'?'i04':(mode=='alert'?'i03':(mode=='confirm'?'i03':'i02')));
	ac.innerHTML = '<span class="ni"><img src="/i/b.gif" class="'+icon+'" width="32" height="32" border="0" alt="" align="left" hspace="10" vspace="5"></span>*/
	ac.innerHTML = m + '<div>'+ b +'</div>';
	a.style.display = 'block';
	a.style.top  = (d.scrollTop + (h-a.scrollHeight)/2) + 'px';
	a.style.left = (d.scrollLeft + (w-a.scrollWidth)/2) + 'px';

	blackened_on(2);//mode=='confirm'?2:0);
}
function alert_cl(b)
{
	$('al').style.display = 'none';
	bloff();
	if(alert_funcs && alert_funcs[b])
	  alert_funcs[b]();
}
//
// prompt2( Сообщение, текст в поле ввода, функция по ОК-получает введенный текст, функция по Cancel)
// Не надо забывать, что с текстом, который поступает на вход, она делает htmlspec, то есть заменяет
// все " и < на &nbsp; и &lt; и т.п. Соответственно, такой он и выходит назад.
// Пример:
//   prompt( 'Введите имя', 'Вася',
//		function(txt){alert2('Введено '+txt);},
//		function(){alert2('Ну и зря!');} 
//	  );
// Пример типичного использования:
//   prompt( 'Введите имя', $('name').value, function(t){$('name').value=t;});
//
var prompt_func1='',prompt_func2='';
prompt2 = function(m,txt,f1,f2) 
{
	var a=$('pr'),d=document.documentElement;
	var w = d.clientWidth-40;
	var h = d.clientHeight-40;
	prompt_func1 = f1; prompt_func2 = f2;
	$('prc').innerHTML = m + '<br>' 
	  + '<form style="margin:0" onSubmit="prompt_cl(1);return false;">'
	  + '<input type="text" id="prtxt" size="50" value="'+htmlspec(txt)+'"></form>'
	  + '<div>'
	  + '<input type="button" value="OК" onClick="prompt_cl(1)">&nbsp;&nbsp;'
	  + '<input type="button" value="Отмена" onClick="prompt_cl(2)">'
	  + '</div>';
	a.style.display = 'block';
	a.style.top  = (d.scrollTop + (h-a.scrollHeight)/2) + 'px';
	a.style.left = (d.scrollLeft + (w-a.scrollWidth)/2) + 'px';
	$('prtxt').focus();

	blackened_on(2);
}
function prompt_cl(button)
{
	$('pr').style.display = 'none';
	bloff();
	var t = $('prtxt').value;
	if(button==1 && prompt_func1)
	  prompt_func1(t);
	else if(button==2 && prompt_func2)
	  prompt_func2(t);
}

// --------- iframe code

function select_box_open(tb)
{
	if(el != null)
	 {
	  el.parentNode.removeChild(el);
	  el = null;
	  return;
	 }
	el = document.createElement("iframe");
	el.id='ifrm';
	el.style.top		= tb.offsetTop + 20 + 'px';
	el.style.left		= tb.offsetLeft + 'px';
	document.body.appendChild(el);
}
function select_box_url(url,tb) // что открывать, элемент-кнопка
{
	select_box_open(tb);
	if(!el) return;
	el.setAttribute('src', url);
}
function select_box_txt(txt,tb) // что открывать, элемент-кнопка
{
	select_box_open(tb);
	if(!el) return;
	el.contentDocument.open();
	el.contentDocument.writeln( txt );
	el.contentDocument.close();
}

// --------- date

function date_swap(obj) {
  var a = obj.title;
  obj.title = obj.innerHTML;
  obj.innerHTML = a;
}

function q() {
	var c=' ', e, n='=';
	n = c+'q'+n;c += i;
	var o=c.indexOf(n);
	if (o != -1) {
		o += n.length;
		e = c.indexOf(";", o);
		return unescape(c.substring(o, e==-1?c.length:e));
	}
	return null;
}

// --------- ajax funcs

function ajaxPost(url, data, statefunc) {
	request = window.ActiveXObject ? new ActiveXObject ("Microsoft.XMLHTTP") : 
				(window.XMLHttpRequest ? new XMLHttpRequest() : null);
	if(!request) return;
	request.open("POST", url, true);
	request.onreadystatechange = statefunc;
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", data.length);
	request.setRequestHeader("Connection", "close");
	request.send(data);
}
function ajax_get(url,statefunc) {
	//if(request && request.readyState) alert(request.readyState);
	abortRequest = setTimeout("request.abort();", 10000);
	request = window.ActiveXObject ? new ActiveXObject ("Microsoft.XMLHTTP") : 
				(window.XMLHttpRequest ? new XMLHttpRequest() : null);
	if(!request) return;
	request.onreadystatechange = statefunc;
	request.open("GET", url, true);
	request.send();
}

// Get request state text function
function getRequestStateText(code) {
	switch (code) {
	case 0: return "Uninitialized."; break;
	case 1: return "Loading..."; break;
	case 2: return "Loaded."; break;
	case 3: return "Interactive..."; break;
	case 4: return "Complete."; break;
	}
}
var vid;
function votes_func()
{
	if (request.readyState == 4) // если выполнен
	{
		clearTimeout(abortRequest);
		vid = vid.substr(0,vid.length-1);		
		if (request.status == 200) { // если успешно
			if(request.responseText.substr(0,3)=='ok,')
			 {
			  var a = request.responseText.split(',');
			  $(vid+'m').innerHTML = a[1]; 
			  $(vid+'p').innerHTML = a[2]; 
			 }
			 else
			 {
			  $(vid).innerHTML = request.responseText;
			  $(vid).className = 'vmess';
			 }
		} else { // не успешно
		  $(vid).innerHTML = 'Ошибка! '+request.statusText;
		  $(vid).className = 'vmess';
		}
	}
	// иначе, если идет загрузка или в процессе - показываем слой "Загружаются данные"
	else if (request.readyState >= 2 && request.readyState <4) {
		$(vid).innerHTML = '<img src="/i/w.gif" width="20" height="20" alt="Загрузка..." border="0">';
	}
}
function cc(c){return String.fromCharCode(c);};
a=cc(11+a+3);
function x(e) { return e.offsetParent ?	e.offsetLeft + x( e.offsetParent ) : e.offsetLeft;}
function y(e) { return e.offsetParent ?	e.offsetTop + y( e.offsetParent ) :	e.offsetTop;}

function vote(t,id,v) // t - тип rec_type, id (rec_id), rez - m/p
{
  vid = 'vote'+id+v;
  ajax_get('/v.php?v='+t+','+id+','+v, votes_func);
}

function htmlspec(txt){
	if(!txt)return '';
	var string=txt.toString();
	var __specialChars=[{html:/\&/g,htmlSC:"&amp;"},{html:/\"/g,htmlSC:"&quot;"},{html:/\</g,htmlSC:"&lt;"},{html:/\>/g,htmlSC:"&gt;"}];
	for(var i=0;i<__specialChars.length;i++){
		string=string.replace(__specialChars[i].html,__specialChars[i].htmlSC);
	}
	return string;
}
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */
function md5(a){return rstr2hex(rstr_md5(str2rstr_utf8(a)))}function rstr_md5(a){return binl2rstr(binl_md5(rstr2binl(a),a.length*8))}function rstr_hmac_md5(c,f){var e=rstr2binl(c);if(e.length>16){e=binl_md5(e,c.length*8)}var a=Array(16),d=Array(16);for(var b=0;b<16;b++){a[b]=e[b]^909522486;d[b]=e[b]^1549556828}var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8);return binl2rstr(binl_md5(d.concat(g),512+128))}function rstr2hex(c){var f="0123456789abcdef";var b="";var a;for(var d=0;d<c.length;d++){a=cg(c,d);b+=f.charAt((a>>>4)&15)+f.charAt(a&15)}return b}function str2rstr_utf8(c){var b="";var d=-1;var a,e;while(++d<c.length){a=cg(c,d);e=d+1<c.length?cg(c,d+1):0;if(55296<=a&&a<=56319&&56320<=e&&e<=57343){a=65536+((a&1023)<<10)+(e&1023);d++}if(a<=127){b+=cc(a)}else{if(a<=2047){b+=cc(192|((a>>>6)&31),128|(a&63))}else{if(a<=65535){b+=cc(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))}else{if(a<=2097151){b+=cc(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))}}}}}return b}function rstr2binl(b){var a=Array(b.length>>2);for(var c=0;c<a.length;c++){a[c]=0}for(var c=0;c<b.length*8;c+=8){a[c>>5]|=(cg(b,c/8)&255)<<(c%32)}return a}function binl2rstr(b){var a="";for(var c=0;c<b.length*32;c+=8){a+=cc((b[c>>5]>>>(c%32))&255)}return a}function binl_md5(p,k){p[k>>5]|=128<<((k)%32);p[(((k+64)>>>9)<<4)+14]=k;var o=1732584193;var n=-271733879;var m=-1732584194;var l=271733878;for(var g=0;g<p.length;g+=16){var j=o;var h=n;var f=m;var e=l;o=md5_ff(o,n,m,l,p[g+0],7,-680876936);l=md5_ff(l,o,n,m,p[g+1],12,-389564586);m=md5_ff(m,l,o,n,p[g+2],17,606105819);n=md5_ff(n,m,l,o,p[g+3],22,-1044525330);o=md5_ff(o,n,m,l,p[g+4],7,-176418897);l=md5_ff(l,o,n,m,p[g+5],12,1200080426);m=md5_ff(m,l,o,n,p[g+6],17,-1473231341);n=md5_ff(n,m,l,o,p[g+7],22,-45705983);o=md5_ff(o,n,m,l,p[g+8],7,1770035416);l=md5_ff(l,o,n,m,p[g+9],12,-1958414417);m=md5_ff(m,l,o,n,p[g+10],17,-42063);n=md5_ff(n,m,l,o,p[g+11],22,-1990404162);o=md5_ff(o,n,m,l,p[g+12],7,1804603682);l=md5_ff(l,o,n,m,p[g+13],12,-40341101);m=md5_ff(m,l,o,n,p[g+14],17,-1502002290);n=md5_ff(n,m,l,o,p[g+15],22,1236535329);o=md5_gg(o,n,m,l,p[g+1],5,-165796510);l=md5_gg(l,o,n,m,p[g+6],9,-1069501632);m=md5_gg(m,l,o,n,p[g+11],14,643717713);n=md5_gg(n,m,l,o,p[g+0],20,-373897302);o=md5_gg(o,n,m,l,p[g+5],5,-701558691);l=md5_gg(l,o,n,m,p[g+10],9,38016083);m=md5_gg(m,l,o,n,p[g+15],14,-660478335);n=md5_gg(n,m,l,o,p[g+4],20,-405537848);o=md5_gg(o,n,m,l,p[g+9],5,568446438);l=md5_gg(l,o,n,m,p[g+14],9,-1019803690);m=md5_gg(m,l,o,n,p[g+3],14,-187363961);n=md5_gg(n,m,l,o,p[g+8],20,1163531501);o=md5_gg(o,n,m,l,p[g+13],5,-1444681467);l=md5_gg(l,o,n,m,p[g+2],9,-51403784);m=md5_gg(m,l,o,n,p[g+7],14,1735328473);n=md5_gg(n,m,l,o,p[g+12],20,-1926607734);o=md5_hh(o,n,m,l,p[g+5],4,-378558);l=md5_hh(l,o,n,m,p[g+8],11,-2022574463);m=md5_hh(m,l,o,n,p[g+11],16,1839030562);n=md5_hh(n,m,l,o,p[g+14],23,-35309556);o=md5_hh(o,n,m,l,p[g+1],4,-1530992060);l=md5_hh(l,o,n,m,p[g+4],11,1272893353);m=md5_hh(m,l,o,n,p[g+7],16,-155497632);n=md5_hh(n,m,l,o,p[g+10],23,-1094730640);o=md5_hh(o,n,m,l,p[g+13],4,681279174);l=md5_hh(l,o,n,m,p[g+0],11,-358537222);m=md5_hh(m,l,o,n,p[g+3],16,-722521979);n=md5_hh(n,m,l,o,p[g+6],23,76029189);o=md5_hh(o,n,m,l,p[g+9],4,-640364487);l=md5_hh(l,o,n,m,p[g+12],11,-421815835);m=md5_hh(m,l,o,n,p[g+15],16,530742520);n=md5_hh(n,m,l,o,p[g+2],23,-995338651);o=md5_ii(o,n,m,l,p[g+0],6,-198630844);l=md5_ii(l,o,n,m,p[g+7],10,1126891415);m=md5_ii(m,l,o,n,p[g+14],15,-1416354905);n=md5_ii(n,m,l,o,p[g+5],21,-57434055);o=md5_ii(o,n,m,l,p[g+12],6,1700485571);l=md5_ii(l,o,n,m,p[g+3],10,-1894986606);m=md5_ii(m,l,o,n,p[g+10],15,-1051523);n=md5_ii(n,m,l,o,p[g+1],21,-2054922799);o=md5_ii(o,n,m,l,p[g+8],6,1873313359);l=md5_ii(l,o,n,m,p[g+15],10,-30611744);m=md5_ii(m,l,o,n,p[g+6],15,-1560198380);n=md5_ii(n,m,l,o,p[g+13],21,1309151649);o=md5_ii(o,n,m,l,p[g+4],6,-145523070);l=md5_ii(l,o,n,m,p[g+11],10,-1120210379);m=md5_ii(m,l,o,n,p[g+2],15,718787259);n=md5_ii(n,m,l,o,p[g+9],21,-343485551);o=safe_add(o,j);n=safe_add(n,h);m=safe_add(m,f);l=safe_add(l,e)}return Array(o,n,m,l)}function md5_cmn(h,e,d,c,g,f){return safe_add(bit_rol(safe_add(safe_add(e,h),safe_add(c,f)),g),d)}function md5_ff(g,f,k,j,e,i,h){return md5_cmn((f&k)|((~f)&j),g,f,e,i,h)}function md5_gg(g,f,k,j,e,i,h){return md5_cmn((f&j)|(k&(~j)),g,f,e,i,h)}function md5_hh(g,f,k,j,e,i,h){return md5_cmn(f^k^j,g,f,e,i,h)}function md5_ii(g,f,k,j,e,i,h){return md5_cmn(k^(f|(~j)),g,f,e,i,h)}function safe_add(a,d){var c=(a&65535)+(d&65535);var b=(a>>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}function bit_rol(a,b){return(a<<b)|(a>>>(32-b))};
function cq(g)
{
  var a,e='';
  for(var i=0,l=g.length,j=0;i<l;i++,j++)
   {
    if(j==c.length)j=0;
    a = cg(g,i+1) - ( g[i+1]>='a' ? 87 : 48 );
    a += (cg(g,i) - ( g[i]>='a' ? 87 : 48 )) * 25;
    a -= cg(c,j);
	e += cc(a+(a>191?800+48:0));
	i++;
   }
  return e;
}

function unhtmlspec(txt){
	var string=txt.toString();
	var __specialChars=[{html:/\&amp;/g,htmlSC:"&"},{html:/\&quot;/g,htmlSC:'"'},{html:/\&lt;/g,htmlSC:"<"},{html:/\&gt;/g,htmlSC:">"}];
	for(var i=0;i<__specialChars.length;i++){
		string=string.replace(__specialChars[i].html,__specialChars[i].htmlSC);
	}
	return string;
}

function setCursor(object,cursorStyle) {
    try {
        object.style.cursor=cursorStyle;
    }
    catch(c) {
		if ( cursorStyle=="pointer" ) {
			setCursor(object,"hand")
		}
    }
}

/*  login  ---------------------    */

function login_form(){
	var tb = $('login1'), lf = $('loginform');
	lf.style.display="block";
	lf.style.top  = tb.offsetTop-25 + 'px';
	lf.style.right = Math.max(0,document.documentElement.clientWidth-tb.offsetLeft-190,0) + 'px';
}

var closed_login_form = false;
function close_login_form() {
	$('loginform').style.display="none";
	closed_login_form = true;
}

function gotologin(login,pass){
  var login, pass, save;
  login = $('loginform1').value;
  pass  = $('loginform2').value;
  save  = $('loginsave').checked;
  $('loginbutton').disabled = true;
  ajaxPost('/login.php',
  	'login='+$e(login)+
  	'&md5pass='+$e(md5(pass))+//'&pass='+$e(pass)+
  	'&loginsave='+(save?1:0) , gotologin_status );
}

function gotologin_status()
{
	// если выполнен
	if (request.readyState == 4)
	{
		$('loginbutton').disabled = false;
		clearTimeout(abortRequest);
		if (request.status == 200) { // если успешно
			if(request.responseText.substring(0,3)=='ERR')
			 {
			  // Что-то не так с данными
			  $('loginerror').innerHTML = request.responseText.substring(3);
			 }
			else {
			  // что делать если успешно
			  /*if(true)//window.location.toString().indexOf('/map/'))
			  {
			  	$('login1').style.display = 'none';
			  	$('loginform').style.visibility = 'hidden';
			  	//$('login2').style.display = 'block';
			  	$('login_nickname').innerHTML = htmlspec($('loginform1').value);
			  } else*/ window.location.reload();
			 }
		} else {
			// что делать если ошибка
			$('loginerror').innerHTML = request.responseText;
		}
		// спрятать "загружаются данные"
		//$("loading").style.display = 'none';
	}
	// иначе, если идет загрузка или в процессе
	// - показываем слой "Загружаются данные"
//	else if (request.readyState == 3 || request.readyState == 1) {
//		$("loading").style.display = 'block';
//	}
}

/*  upload  ---------------------    */

var uifr,ufrm;

// Инициализация - создание тэгов для поля выбора файла

function upload_init(fld,url_str)
{
	// Создание iframe с формой
	var inp,id=new Date().getTime().toString().substr(8);
	uifr = document.createElement('iframe');
	uifr.style.display = 'none';
	uifr.id = uifr.name = 'iframe'+id;
	$('upl').appendChild(uifr);
	// Форма
	ufrm = document.createElement('form');
	ufrm.id = 'form'+id;
	ufrm.method = 'post';
	ufrm.enctype = 'multipart/form-data';
	ufrm.action = '/edit/upload_photos1.php?'+url_str;
	ufrm.target = uifr.id;
	// Создание input type=file
	inp = document.createElement('input');
	inp.type = inp.name = 'file';
	inp.id = 'upf';
	inp.onchange = function(){upload_start(this.value);};
	if(typeof inp.style.filter != 'undefined') inp.style.filter = 'alpha(opacity=0)';
	ufrm.appendChild(inp);
	$(fld).appendChild(ufrm);
}

// файл выбран - загружаем

function upload_start(filename)
{
	$('uplp').innerHTML = 'Отправка файла...<br><img src="/i/w.gif">';
	uifr.onload = function(){upload_complete();};
	ufrm.submit();
}

// файл загружен, получаем ответ

function upload_complete()
{
	var data = uifr.contentWindow.document.body.innerHTML.toString();
	if(data.substr(0,2)=='ok')
	 {
	  $('uploaddiv').innerHTML += data.substr(2);
	  $('uplp').innerHTML = '';
	 }
	else
	 {
	  $('uplp').innerHTML = data;
	  $('uplp').style.color = '#f00';
	 }
}

// Изменение описания фотки

function uploaded_descr(id,txt) {
	prompt2('Введите подпись',txt,function(txt2){uploaded_descr2(id,txt2);});
}
function uploaded_descr2(id,txt) {
	if(txt==null) return;
	ajax_get('/edit/upload_photos2.php?id='+id+'&txt='+$e(txt), uploaded_descr_status);
}
function uploaded_descr_status(){
	if (request.readyState == 4) // если выполнен
	{
		clearTimeout(abortRequest);		
		if (request.status == 200) { // если успешно
			var rez = request.responseText;
			if(rez.substr(0,2)=='ok')
			 {
				rez = rez.substr(2); 
				document.getElementById("uploaded_descr"+rez.substr(0,rez.indexOf(','))).innerHTML = rez.substr(rez.indexOf(',')+1);
			 }
			else
				alert2(rez);
		} else { // не успешно
			alert2('Ошибка во время сохранения: '+request.status);
		}
	}
}

// Удаление фотки

function uploaded_del(id) {
	txt=confirm('Удалить фото? Вы уверены?');
	if(txt)
		ajax_get('/edit/upload_photos3.php?id='+id, uploaded_del_status);
}
function uploaded_del_status()
{
	if (request.readyState == 4) // если выполнен
	{
		clearTimeout(abortRequest);		
		if (request.status == 200) { // если успешно
			var rez = request.responseText;
			if(rez.substr(0,2)=='ok')
			 {
				var id = rez.substr(2);
				$("uploaded"+id).removeNode(true);
			 }
			else
				alert2(rez);
		} else { // не успешно
			alert2('Ошибка во время удаления: '+request.status);
		}
	}
}

////////////////

function newsm(a) // раскрытие/скрытие категорий новостей
{
	var fld = 'newss' + a.id.substring(5);
	if(a.id.substring(6)=='00')
	 {
	  if($(fld).style.display=='block')
	    window.location=a.href;
	   else
	   {
		$(fld).style.display = $(fld).style.display=='none'?'block':'none';
		$(a.id).className = $(fld).style.display=='none'?'p':'m';
	   }
	 }
	else window.location=a.href;
	return false;
}
function newse(id)
{
	$('p'+id).style.display = 'none';
	$('ex'+id).style.display = 'inline';
	ajax_get('/vn.php?t=1&id='+id,function(){});
	return false;
}
function fbcl()
{
	$('fb_a').className = 'a';
	$('fbdiv').style.display='none';
	fbopen=0;
}
function fb()
{
  if(!fbopen)
   {
	$('fb_a').className = 'fbbut';
	$('fbinner').style.display='none';
	$('fbmess').style.display='none';
	$('fbdiv').style.display='block';
	fbshow(274,230);
   }
}
function fbshow(w,h)
{
	var a=$('fb_a'), b=$('fbdiv').style;
	fbopen++;
	b.right=document.documentElement.clientWidth-x(a)-a.offsetWidth+'px';
	b.bottom=document.documentElement.clientHeight-y(a)+'px';
	b.width=w*fbopen/10+'px';
	b.height=h*fbopen/10+'px';
	if(fbopen<10)
		setTimeout('fbshow('+w+','+h+')',30);
	else
		$('fbinner').style.display='block';
}
function fbsend()
{
	var a=$('fbtxt').value;
	if(a.length==0) {alert('Введите ваше сообщение');$('fbtxt').focus();return;}
	ajaxPost('/feedback.php',a,fbsend_func);
	$('fbinner').style.display='none';
	$('fbmess').innerHTML = 'Отправка сообщения...<br><img src="/i/w.gif" alt="">';
	$('fbmess').style.display='block';
	$('fbdiv').style.width='150px';
	$('fbdiv').style.height='50px';
}
function fbsend_func()
{
	// если выполнен
	if (request.readyState == 4)
	{
		clearTimeout(abortRequest);
		if (request.status == 200) { // если успешно
			$('fbmess').innerHTML = 'Спасибо за отзыв!';
			$('fbtxt').value = '';
		} else {
			$('fbmess').innerHTML = 'Ошибка отправки :(';
		}
	}
}