document.ondragstart = function () {return false;};
isIE6=isIE7=false;

var cookie_lifetime=null;
var est_filter_timeout=600;

var si=false;
var sma=-1;
var ptv_cur=-1;

function getLeft(el)
{
	var res=0;
	while(el!=null)
	{
		res+=el.offsetLeft;
		el=el.offsetParent;
	}
	return res;
}

function getTop(el)
{
	var res=0;
	while(el!=null)
	{
		res+=el.offsetTop;
		el=el.offsetParent;
	}
	return res;
}

function isinrect(x,y,x0,y0,x1,y1)
{	return (x>=x0)&&(y>=y0)&&(x<x1)&&(y<y1);}

function isingap_shifted(x,x0,x1,shift)
{	var times=Math.floor((x-x0)/shift);
	x1+=times*shift;
	return (x1>=x);
}

function isdef(variable)
{
	return eval('(typeof('+variable+') != "undefined");');
}

function tls_over(n)
{	document.getElementById('tls'+n).src='/images/to'+n+'.png';
	return true;
}

function tls_out(n)
{
	document.getElementById('tls'+n).src='/images/t'+n+'.png';
	return true;
}

function tsearch_focus()
{
	var t=document.getElementById('tsearch');
	if(!si)
	{
		t.value='';
		t.style.color='black';
	}
	return true;
}

function tsearch_blur(s)
{
	var t=document.getElementById('tsearch');
	if(t.value=='')
	{
		t.style.color='#CCCCCC';
		t.value=s;
		si=false;
	}else si=true;
	return true;
}

function menu_out()
{
	if(sma!=-1)
	{
		document.getElementById('sm_'+sma).style.visibility='hidden';
		sma=-1;
	}
	return true;
}

function menu_over(m)
{	menu_out_do=false;	menu_out();	sma=m;
	var smw=document.getElementById('smw_'+m);
	document.getElementById('sml_'+m).style.height=document.getElementById('smr_'+m).style.height=smw.offsetHeight+'px';	document.getElementById('sm_'+m).style.visibility='visible';
	return true;
}

var menu_out_do;
function menu_out_act()
{	menu_out_do=true;	setTimeout(function(){if(menu_out_do)menu_out();},10);
}

function menu_over_act()
{	menu_out_do=false;
}

function sm_over(i,j)
{
	document.getElementById('smbar_'+i+'_'+j).style.display='block';
	return true;
}

function sm_out(i,j)
{
	document.getElementById('smbar_'+i+'_'+j).style.display='none';
	return true;
}

function fdirchanged(init)
{	var cnt,k,s,i;	if(isdef("roads"))
	{		s=document.filterfrm.road;
		s.options.length=0;
		s.options[0]=new Option(road_any+String.fromCharCode(160),0,true,true);
		k=document.filterfrm.direction.options[document.filterfrm.direction.selectedIndex].value;
		cnt=1;		for(i=0;i<roads.length;i++)
		{			if((k==0)||(roads_parents[i]==k))
			{				s.options[cnt]=new Option(roads[i]+String.fromCharCode(160),roads_ids[i],false,false);
				cnt++;
			}
		}
		if(!init)est_setRoad(document.filterfrm.road,true);
	}

	if(isdef("dplaces"))
	{
		s=document.filterfrm.dplace;
		s.options.length=0;
		s.options[0]=new Option(dplace_any+String.fromCharCode(160),0,true,true);
		k=document.filterfrm.direction.options[document.filterfrm.direction.selectedIndex].value;
		cnt=1;
		for(i=0;i<dplaces.length;i++)
		{
			if((k==0)||(dplaces_parents[i]==k))
			{				s.options[cnt]=new Option(dplaces[i]+String.fromCharCode(160),dplaces_ids[i],false,false);
				cnt++;
			}
		}
		if(!init)est_setDplace(document.filterfrm.dplace,true);
	}

	return true;
}

function fregchanged(init)
{
	var cnt,k,s,i;
	if(isdef("rplaces"))
	{
		s=document.filterfrm.rplace;
		s.options.length=0;
		s.options[0]=new Option(rplace_any+String.fromCharCode(160),0,true,true);
		k=document.filterfrm.region.options[document.filterfrm.region.selectedIndex].value;
		cnt=1;
		for(i=0;i<rplaces.length;i++)
		{
			if((k==0)||(rplaces_parents[i]==k))
			{
				s.options[cnt]=new Option(rplaces[i]+String.fromCharCode(160),rplaces_ids[i],false,false);
				cnt++;
			}
		}
		if(!init)est_setRplace(document.filterfrm.rplace,true);
	}

	return true;
}

function fchanged(field,init)
{	switch(field)
	{		case 'direction':
			fdirchanged(init);
			break;
		case 'region':
			fregchanged(init);
			break;
	}
}

function photoclicked(n)
{	if(curimg==n)return false;
	var cur=document.getElementById('photo_'+curimg);
	var nw=document.getElementById('photo_'+n);
	cur.style.background='url("/images/photos-bg.png") center center no-repeat';
	nw.style.background='url("/images/photos-a-bg.png") center center no-repeat';
	nw.style.cursor='default';
	cur.style.cursor='pointer';
    curimg=n;
    document.getElementById('photo').src=photos[n];
	return true;
}

function obm_over()
{
//	document.getElementById('obmborder').style.visibility='visible';
	obm_click();
	return true;
}

function obm_out()
{
//	document.getElementById('obmborder').style.visibility='hidden';
	return true;
}

function bb_over(n)
{	document.getElementById('bb_'+n).style.visibility='visible';
	return true;
}

function bb_out(n)
{
	document.getElementById('bb_'+n).style.visibility='hidden';
	return true;
}

var opacity_set;
function setOpacity(el,o)
{	opacity_set=true;	el.style.opacity=o;
//	el.style.filter='alpha(opacity='+Math.round(o*100)+')';
	return true;
}

function shide(c,t,o)
{	var m=document.getElementById('obmcont');
	if(m.style.opacity==1)return true;
	o-=c;
	if(o>0)
	{		setOpacity(m,o);		setTimeout("shide("+c+","+t+","+o+")",t);
	}else
	{		document.getElementById('obsmenu').style.visibility='hidden';  		setOpacity(m,1);
	}
	return true;
}

function obs_out(e)
{	var canvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
	if((canvas.scrollTop==0)&&(canvas.scrollLeft==0)&&((document.body.scrollTop!=0)||(document.body.scrollLeft!=0)))canvas=document.body;	if(!e)e=window.event;
	var x=e.clientX+canvas.scrollLeft;
	var y=e.clientY+canvas.scrollTop;
	var m=document.getElementById('obmcont');
	var x0=getLeft(m); var y0=getTop(m);
	var x1=x0+m.offsetWidth; var y1=y0+m.offsetHeight;
	if(!isinrect(x,y,x0,y0,x1,y1))
	{//		document.getElementById('obmborder').style.visibility='hidden';
		setOpacity(m,0.99);
		if(isIE6)
		{			shide(1,1,1);			ie_showSelects();
		}else
		{			var ie=sq_getIEVersion();
			if(ie==0||ie>8)
			{				opacity_set=false;
				sq_animate(document.getElementById('obmcont'),['opacity',1,0],125,25,function(){document.getElementById('obsmenu').style.visibility='hidden';},function(){if(!opacity_set)return true;setOpacity(document.getElementById('obmcont'),1);return false;});
			}else shide(0.02,1,1);
		}
	}
	return true;
}

function obm_click()
{	if(isIE6)ie_hideSelects();	document.getElementById('obsmenu').style.visibility='visible';
	return true;
}

function addOnLoad(f)
{
	if(typeof window.addEventListener!='undefined')
	    window.addEventListener('load',f,false);
	else if(typeof document.addEventListener!='undefined')
	    document.addEventListener('load',f,false);
	else if(typeof window.attachEvent!='undefined')
	    window.attachEvent('onload',f);
	return true;
}

var storage_supported=(('sessionStorage' in window)&&window['sessionStorage']!==null);

function setcookie_storage(c_name,value,expiredays)
{	if(storage_supported)return setstorage(c_name,value,expiredays);
	else return setcookie(c_name,value,expiredays);
}

function getcookie_storage(c_name)
{	if(storage_supported)return getstorage(c_name);
	else return getcookie(c_name);
}

function setcookie(c_name,value,expiredays)
{	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "; path=/" : "; path=/; expires="+exdate.toGMTString());
	return true;
}

function getcookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function setstorage(c_name,value,expiredays)
{	if(expiredays>=0)sessionStorage.setItem(c_name,value.toString());
	else sessionStorage.removeItem(c_name);
	return true;
}

function getstorage(c_name)
{	var v=sessionStorage.getItem(c_name);
	if(v!==null)return v;else return '';
}

function obm_view()
{	addOnLoad(function(){
		var el=document.getElementById('obmmel');
		el.onmouseover();
		if(el.addEventListener)
			el.addEventListener('mouseover',function(){setcookie("obm_viewed","1",3653)},false);
		else el.attachEvent('onmouseover',function(){setcookie("obm_viewed","1",3653)});
	});
}

function obmc_over()
{	setOpacity(document.getElementById('obmcont'),1);
	return true;
}

function cdist_click(lat0,long0,latlong1)
{	var latlong=latlong1.split(" ");
	var lat1=parseFloat(latlong[0]);
	var long1=parseFloat(latlong[1]);
    var direction=new GDirections(map);
    var points=new Array(2);
    points[0]=new GLatLng(lat0,long0);
    points[1]=new GLatLng(lat1,long1);
	GEvent.addListener(direction, "load", function() {    map.clearOverlays();
  	});
    direction.loadFromWaypoints(points);
	var bounds = new GLatLngBounds;
	bounds.extend(new GLatLng(lat0,long0));
	bounds.extend(new GLatLng(lat1,long1));
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	return true;
}

function cmetro_click(lat0,long0,lat1,long1)
{
    var direction=new GDirections(map);
    var points=new Array(2);
    points[0]=new GLatLng(lat0,long0);
    points[1]=new GLatLng(lat1,long1);
	GEvent.addListener(direction, "load", function() {
    map.clearOverlays();
  	});
    direction.loadFromWaypoints(points);
	var bounds = new GLatLngBounds;
	bounds.extend(new GLatLng(lat0,long0));
	bounds.extend(new GLatLng(lat1,long1));
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	return true;
}

function trim(str) {
	var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

var lastterm='';
function findterms()
{	if(lastterm==document.termsfrm.fterm.value)return;
	lastterm=document.termsfrm.fterm.value;	var s=trim(document.termsfrm.fterm.value.toLowerCase());
	var c=0;
    for(var i=0;i<terms.length;i++)
    {     	if((s=='')||(terms[i].search(s)!=-1))
     	{     		document.getElementById('term_'+i).style.display='block';
     		c++;
     	}else document.getElementById('term_'+i).style.display='none';
    }
    if(c==0)document.getElementById('noterm').style.display='block';else document.getElementById('noterm').style.display='none';
	return true;
}

function findterms_check()
{	findterms();
	setTimeout(findterms_check,1000);
}

function findterms_init()
{	setTimeout(findterms_check,1000);
}

function in_array(v,a)
{
	for(var i=0;i<a.length;i++)if(a[i]==v)return true;
	return false;
}

function numbersonly(myfield, e, dec)
{if(typeof e.which=='number'&&e.which==0)return true;
var key,keychar;
if(e.which)key=e.which;else if(window.event)key=window.event.keyCode;else return true;
var ctrl=((e&&e.ctrlKey)||(window.event&&window.event.ctrlKey));
keychar=String.fromCharCode(key);
if ((key==null)||(key==0)||(key==8)||(key==9)||(key==13)||
	(ctrl&&in_array(key,[90,67,86,88,122,99,118,120]))) // Ctrl + z/c/v/x for Opera/standard
   return true;
else if ((("0123456789").indexOf(keychar) > -1))
   return true;
else if (dec && ((keychar == ".")||(keychar == ",")))
   {
	return true;
   }
else
   return false;
}

function calc_cur_changed(s)
{    document.getElementById('init_cur').innerHTML=s.options[s.selectedIndex].text;
	return true;
}

var map_inited=false;
function initmap(tcontrol)
{GMarker.prototype.hide = function() {
  if (this.getPoint().lat() < 90) {
    try {
        this.savePoint = this.getPoint();
        this.setPoint(new GLatLng(90, 0));
    } catch (e) { }
  }
}

GMarker.prototype.show = function() {
  if (this.getPoint().lat() == 90) {
    if (this.savePoint) {
      try {
        this.setPoint(this.savePoint);
        this.savePoint = null;
      } catch (e) { }
    }
  }
}
	initcanvas();
	document.body.onmouseup=function(event)
	{
		if(naving)mm_circle_up();
		if(zooming)slider_up();
	}
	document.body.onmousemove=function(event)
	{
		if(naving){if(event)mm_circle_move(event);else mm_circle_move();}
		if(zooming){if(event)slider_move(event);else slider_move();}
	}
	function KonsControl(){}
	KonsControl.prototype=new GControl();
	KonsControl.prototype.initialize=function(map)
	{
		var cont=document.getElementById("map_control");
		map.getContainer().appendChild(cont);
		cont.style.display='block';
		return cont;
	}
	KonsControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7));
	}
	map=new GMap2(document.getElementById("map"));
	map.addControl(new KonsControl());
	if(tcontrol)map.addControl(new GMapTypeControl());
	GEvent.addListener(map,"moveend",function(){navmap();});
	GEvent.addListener(map,"zoomend",function(){map_zoomed();});
	GEvent.addListener(map,"maptypechanged",map_type_changed);

	var d;
	if(getcookie_storage('map_wheel')&&(d=document.getElementById('mm_scroll')))d.getElementsByTagName('area')[0].onclick();

	map_inited=true;
}

function initcanvas()
{	canvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
	if((canvas.scrollTop==0)&&(canvas.scrollLeft==0)&&((document.body.scrollTop!=0)||(document.body.scrollLeft!=0)))canvas=document.body;
	return canvas;
}

function canvas_scrollTop()
{	var canvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
	if((canvas.scrollTop==0)&&(canvas.scrollLeft==0)&&((document.body.scrollTop!=0)||(document.body.scrollLeft!=0)))canvas=document.body;
	return canvas.scrollTop;
}

function canvas_scrollLeft()
{
	var canvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
	if((canvas.scrollTop==0)&&(canvas.scrollLeft==0)&&((document.body.scrollTop!=0)||(document.body.scrollLeft!=0)))canvas=document.body;
	return canvas.scrollLeft;
}

function navmap()
{	if(!naving)return false;
  	var x=Math.round(map_x-26.5);
	var y=Math.round(map_y-25.5);
    map.panBy(new GSize(-x/2,-y/2));
//   	setTimeout("navmap()",10);
	return true;
}

function mm_circle_over()
{	document.body.style.cursor="pointer"; 	document.getElementById('mimg_circle').src="/images/map/circle-a.png";
 	return true;
}

function mm_circle_out()
{	document.body.style.cursor="default";
 	document.getElementById('mimg_circle').src="/images/map/circle.png";
 	return true;
}

function mm_circle_down(e)
{	if((canvas.scrollTop==0)&&(canvas.scrollLeft==0)&&((document.body.scrollTop!=0)||(document.body.scrollLeft!=0)))canvas=document.body;	if(!e)e=window.event;
	if(e.preventDefault)e.preventDefault();
	var c=document.getElementById('map_circle');
	map_cx=canvas.scrollLeft-getLeft(c);
	map_cy=canvas.scrollTop-getTop(c);
 	map_x=e.clientX+map_cx;
 	map_y=e.clientY+map_cy;
    naving=true;
    navmap();
	return true;
}

function mimg_circle_down(e)
{	if(!e)e=window.event;	if(e.preventDefault)e.preventDefault();
	return true;
}

function mm_circle_move(e)
{	if(!naving)return false;
	if(!e)e=window.event;
 	map_x=e.clientX+map_cx;
 	map_y=e.clientY+map_cy;
 	return true;
}

function mm_circle_up()
{
 	naving=false;
 	return true;
}

function zoomline_down(e)
{	if(e.preventDefault)e.preventDefault();
	return true;
}

function plusimg_down(e)
{
	if(e.preventDefault)e.preventDefault();
	return true;
}

function minusimg_down(e)
{
	if(e.preventDefault)e.preventDefault();
	return true;
}

function mm_plus_down(e)
{
	if(e.preventDefault)e.preventDefault();
	return true;
}

function mm_plus_over()
{
	document.body.style.cursor="pointer";
 	document.getElementById('map_plus').src="/images/map/plus-a.png";
 	return true;
}

function mm_plus_out()
{
	document.body.style.cursor="default";
 	document.getElementById('map_plus').src="/images/map/plus.png";
 	return true;
}

function mm_plus_click()
{	map.zoomIn();
	return true;
}

function mm_minus_down(e)
{
	if(e.preventDefault)e.preventDefault();
	return true;
}

function mm_minus_over()
{
	document.body.style.cursor="pointer";
 	document.getElementById('map_minus').src="/images/map/minus-a.png";
 	return true;
}

function mm_minus_out()
{
	document.body.style.cursor="default";
 	document.getElementById('map_minus').src="/images/map/minus.png";
 	return true;
}

function mm_minus_click()
{
	map.zoomOut();
	return true;
}

function map_zoomed()
{	document.getElementById('map_slider').style.top=(17+7*(19-map.getZoom()))+'px';
	return true;
}

function slider_down(e)
{
	if(e.preventDefault)e.preventDefault();
	zooming=true;
	map_sy=canvas_scrollTop()-getTop(document.getElementById('map_zoom'));
	return true;
}

function slider_move(e)
{
	if(!zooming)return false;
	if(!e)e=window.event;
 	map.setZoom(Math.round(19-(e.clientY+map_sy-22)/7));
 	return true;
}

function slider_up()
{	zooming=false;
	return true;
}

function zoomline_click(e)
{
	if(!e)e=window.event;
	map_sy=canvas_scrollTop()-getTop(document.getElementById('map_zoom'));
 	map.setZoom(Math.round(19-(e.clientY+map_sy-22)/7));
	return true;
}

function mm_type_over(n)
{	document.body.style.cursor="pointer";	document.getElementById('map_type_bg').src='/images/map/type-bg'+n+'.png';
	return true;
}

function mm_type_out()
{	document.body.style.cursor="default";
	document.getElementById('map_type_bg').src='/images/map/type-bg.png';
	return true;
}

function mm_type_click(n)
{	var mt;	if(n==1)mt=G_SATELLITE_MAP;else if(n==2)mt=G_HYBRID_MAP;else mt=G_NORMAL_MAP;
	map.setMapType(mt);
	return true;
}

function map_type_changed()
{	var mt=map.getCurrentMapType();
	if(mt==G_NORMAL_MAP)document.getElementById('map_type0').style.display='block';
	else document.getElementById('map_type0').style.display='none';
	if(mt==G_SATELLITE_MAP)document.getElementById('map_type1').style.display='block';
	else document.getElementById('map_type1').style.display='none';
	if(mt==G_HYBRID_MAP)document.getElementById('map_type2').style.display='block';
	else document.getElementById('map_type2').style.display='none';
	return true;
}

function mm_scroll_over()
{	document.body.style.cursor="pointer";	var ad;	if(wheel)ad='-on';else ad='';	document.getElementById('map_scroll').src="/images/map/scroll"+ad+"-a.png";
	return true;
}

function mm_scroll_out()
{	document.body.style.cursor="default";
	var ad;
	if(wheel)ad='-on';else ad='';
	document.getElementById('map_scroll').src="/images/map/scroll"+ad+".png";
	return true;
}

function mm_scroll_click(s1,s2)
{	wheel=!wheel;
	setcookie_storage('map_wheel',1,(wheel?cookie_lifetime:-1));
	if(wheel)
	{		document.getElementById('mma_scroll').title=s2;
		map.enableScrollWheelZoom();
	}else
	{		document.getElementById('mma_scroll').title=s1;		map.disableScrollWheelZoom();
	}
	var ad,ad2;
	if(wheel)ad='-on';else ad='';
	if(map_inited)ad2='-a';else ad2=''; // State saving in cookies
	document.getElementById('map_scroll').src="/images/map/scroll"+ad+ad2+".png";
	return true;
}

var map_filter_opened=false;

function mm_filter_over(isDelayed)
{	if(sq_ie_lte8&&!isDelayed)return sq_executeLast(function(){mm_filter_over(true);},10,'mm_filter_over/out');	document.body.style.cursor="pointer";	if(map_filter_opened)
	{		document.getElementById('map_filter_left').src='/images/map_filter/left-on-a.png';
		document.getElementById('map_filter_right').src='/images/map_filter/right-on-a.png';
		document.getElementById('map_filter_bg').style.background='url("/images/map_filter/bg-on-a.png")';
	}else
	{		document.getElementById('map_filter_left').src='/images/map_filter/left-a.png';
		document.getElementById('map_filter_right').src='/images/map_filter/right-a.png';
		document.getElementById('map_filter_text').style.color='#2b6589';
	}
}

function mm_filter_out(isDelayed)
{	if(sq_ie_lte8&&!isDelayed)return sq_executeLast(function(){mm_filter_out(true);},10,'mm_filter_over/out');	document.body.style.cursor="default";
	if(map_filter_opened)
	{
		document.getElementById('map_filter_left').src='/images/map_filter/left-on.png';
		document.getElementById('map_filter_right').src='/images/map_filter/right-on.png';
		document.getElementById('map_filter_bg').style.background='url("/images/map_filter/bg-on.png")';
	}else
	{
		document.getElementById('map_filter_left').src='/images/map_filter/left.png';
		document.getElementById('map_filter_right').src='/images/map_filter/right.png';
		document.getElementById('map_filter_text').style.color='#407295';
	}
}

function mm_filter_click(fromOutside,coords,skipFiltering)
{
	if(map_filter_opened)
	{		map_filter_opened=false;
		if(fromOutside)
		{			document.getElementById('map_filter_left').src='/images/map_filter/left.png';
			document.getElementById('map_filter_right').src='/images/map_filter/right.png';
			document.getElementById('map_filter_text').style.color='#407295';
		}else
		{
			document.getElementById('map_filter_left').src='/images/map_filter/left-a.png';
			document.getElementById('map_filter_right').src='/images/map_filter/right-a.png';
			document.getElementById('map_filter_text').style.color='#2b6589';
		}
		document.getElementById('map_filter_bg').style.background='url("/images/map_filter/bg.png")';
		map.removeOverlay(map_filter_overlay);
		est_setFilter('location','');
	}else
	{		map_filter_opened=true;
		document.getElementById('map_filter_left').src='/images/map_filter/left-on-a.png';
		document.getElementById('map_filter_right').src='/images/map_filter/right-on-a.png';
		document.getElementById('map_filter_bg').style.background='url("/images/map_filter/bg-on-a.png")';
		document.getElementById('map_filter_text').style.color='white';
		map_filter_overlay=new map_filter_rect(coords);
		map.addOverlay(map_filter_overlay);
		if(!skipFiltering)est_setFilter('location',map_filter_ne.lat()+';'+map_filter_ne.lng()+';'+map_filter_sw.lat()+';'+map_filter_sw.lng());
	}
}
map_filter_rect_minsize=19;
var map_filter_ne=-1,map_filter_sw=-1,map_filter_overlay;

function map_filter_update_coords()
{	var mapdiv=document.getElementById('map');
	var x=sq_getLeft(map_filter_overlay.div_)-sq_getLeft(mapdiv),y=sq_getTop(map_filter_overlay.div_)-sq_getTop(mapdiv);	map_filter_ne=map.fromContainerPixelToLatLng(new GPoint(x+map_filter_overlay.div_.offsetWidth,y));
	map_filter_sw=map.fromContainerPixelToLatLng(new GPoint(x,y+map_filter_overlay.div_.offsetHeight));
	est_setFilter('location',map_filter_ne.lat()+';'+map_filter_ne.lng()+';'+map_filter_sw.lat()+';'+map_filter_sw.lng());
}

var map_filter_change_dx,map_filter_change_dy,map_filter_change_right,map_filter_change_bottom,map_filter_change_max;

function map_filter_change_getMax()
{
	return Math.max(Math.floor(2*map_getEarthWidth()/3),parseInt(map_filter_overlay.div_.style.width));
}

// Moving

function map_filter_goMove(e)
{	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.left)-curpos.x;
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.top)-curpos.y;
	sq_addEvent('mouseup',map_filter_move_stop);
	sq_addEvent('mousemove',map_filter_move_move);
}

function map_filter_move_move(e)
{	sq_preventDefault(e);	var curpos=sq_getCursorPos(e);
	map_filter_overlay.div_.style.left=(curpos.x+map_filter_change_dx)+'px';
	map_filter_overlay.div_.style.top=(curpos.y+map_filter_change_dy)+'px';
	map_filter_update_coords();
}

function map_filter_move_stop()
{	sq_removeEvent('mousemove',map_filter_move_move);
	sq_removeEvent('mouseup',map_filter_move_stop);
	map.enableDragging();
}

// Up and down

function map_filter_goUp(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.top)-curpos.y;
	map_filter_change_bottom=parseInt(map_filter_overlay.div_.style.top)+parseInt(map_filter_overlay.div_.style.height);
	sq_addEvent('mouseup',map_filter_up_stop);
	sq_addEvent('mousemove',map_filter_up_move);
}

function map_filter_up_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var t=(curpos.y+map_filter_change_dy);
	if(map_filter_change_bottom-t<map_filter_rect_minsize)t=map_filter_change_bottom-map_filter_rect_minsize;
	map_filter_overlay.div_.style.top=t+'px';
	map_filter_overlay.div_.style.height=(map_filter_change_bottom-t)+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_up_stop()
{
	sq_removeEvent('mousemove',map_filter_up_move);
	sq_removeEvent('mouseup',map_filter_up_stop);
	map.enableDragging();
}

function map_filter_goDown(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.height)-curpos.y;
	sq_addEvent('mouseup',map_filter_down_stop);
	sq_addEvent('mousemove',map_filter_down_move);
}

function map_filter_down_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var h=(curpos.y+map_filter_change_dy);
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	map_filter_overlay.div_.style.height=h+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_down_stop()
{
	sq_removeEvent('mousemove',map_filter_down_move);
	sq_removeEvent('mouseup',map_filter_down_stop);
	map.enableDragging();
}

// Left and right

function map_filter_goLeft(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.left)-curpos.x;
	map_filter_change_right=parseInt(map_filter_overlay.div_.style.left)+parseInt(map_filter_overlay.div_.style.width);
	map_filter_change_max=map_filter_change_getMax();
	sq_addEvent('mouseup',map_filter_left_stop);
	sq_addEvent('mousemove',map_filter_left_move);
}

function map_filter_left_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var t=(curpos.x+map_filter_change_dx);
	if(map_filter_change_right-t<map_filter_rect_minsize)t=map_filter_change_right-map_filter_rect_minsize;
	if(map_filter_change_right-t>map_filter_change_max)t=map_filter_change_right-map_filter_change_max;
	map_filter_overlay.div_.style.left=t+'px';
	map_filter_overlay.div_.style.width=(map_filter_change_right-t)+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_left_stop()
{
	sq_removeEvent('mousemove',map_filter_left_move);
	sq_removeEvent('mouseup',map_filter_left_stop);
	map.enableDragging();
}

function map_filter_goRight(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.width)-curpos.x;
	map_filter_change_max=map_filter_change_getMax();
	sq_addEvent('mouseup',map_filter_right_stop);
	sq_addEvent('mousemove',map_filter_right_move);
}

function map_filter_right_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var h=(curpos.x+map_filter_change_dx);
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	if(h>map_filter_change_max)h=map_filter_change_max;
	map_filter_overlay.div_.style.width=h+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_right_stop()
{
	sq_removeEvent('mousemove',map_filter_right_move);
	sq_removeEvent('mouseup',map_filter_right_stop);
	map.enableDragging();
}

// Two directions

function map_filter_goUpRight(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.width)-curpos.x;
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.top)-curpos.y;
	map_filter_change_bottom=parseInt(map_filter_overlay.div_.style.top)+parseInt(map_filter_overlay.div_.style.height);
	map_filter_change_max=map_filter_change_getMax();
	sq_addEvent('mouseup',map_filter_upright_stop);
	sq_addEvent('mousemove',map_filter_upright_move);
}

function map_filter_upright_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var t=(curpos.y+map_filter_change_dy);
	var h=(curpos.x+map_filter_change_dx);
	if(map_filter_change_bottom-t<map_filter_rect_minsize)t=map_filter_change_bottom-map_filter_rect_minsize;
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	if(h>map_filter_change_max)h=map_filter_change_max;
	map_filter_overlay.div_.style.top=t+'px';
	map_filter_overlay.div_.style.width=h+'px';
	map_filter_overlay.div_.style.height=(map_filter_change_bottom-t)+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_upright_stop()
{
	sq_removeEvent('mousemove',map_filter_upright_move);
	sq_removeEvent('mouseup',map_filter_upright_stop);
	map.enableDragging();
}

function map_filter_goDownRight(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.height)-curpos.y;
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.width)-curpos.x;
	map_filter_change_max=map_filter_change_getMax();
	sq_addEvent('mouseup',map_filter_downright_stop);
	sq_addEvent('mousemove',map_filter_downright_move);
}

function map_filter_downright_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var h=(curpos.y+map_filter_change_dy);
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	map_filter_overlay.div_.style.height=h+'px';
	h=(curpos.x+map_filter_change_dx);
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	if(h>map_filter_change_max)h=map_filter_change_max;
	map_filter_overlay.div_.style.width=h+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_downright_stop()
{
	sq_removeEvent('mousemove',map_filter_downright_move);
	sq_removeEvent('mouseup',map_filter_downright_stop);
	map.enableDragging();
}

//

function map_filter_goDownLeft(e)
{
	map.disableDragging();
	var curpos=sq_getCursorPos(e);
	map_filter_change_dy=parseInt(map_filter_overlay.div_.style.height)-curpos.y;
	map_filter_change_dx=parseInt(map_filter_overlay.div_.style.left)-curpos.x;
	map_filter_change_right=parseInt(map_filter_overlay.div_.style.left)+parseInt(map_filter_overlay.div_.style.width);
	map_filter_change_max=map_filter_change_getMax();
	sq_addEvent('mouseup',map_filter_downleft_stop);
	sq_addEvent('mousemove',map_filter_downleft_move);
}

function map_filter_downleft_move(e)
{	sq_preventDefault(e);
	var curpos=sq_getCursorPos(e);
	var h=(curpos.y+map_filter_change_dy);
	var t=(curpos.x+map_filter_change_dx);
	if(h<map_filter_rect_minsize)h=map_filter_rect_minsize;
	if(map_filter_change_right-t<map_filter_rect_minsize)t=map_filter_change_right-map_filter_rect_minsize;
	if(map_filter_change_right-t>map_filter_change_max)t=map_filter_change_right-map_filter_change_max;
	map_filter_overlay.div_.style.height=h+'px';
	map_filter_overlay.div_.style.left=t+'px';
	map_filter_overlay.div_.style.width=(map_filter_change_right-t)+'px';
	map_filter_checkSides();
	map_filter_update_coords();
}

function map_filter_downleft_stop()
{
	sq_removeEvent('mousemove',map_filter_downleft_move);
	sq_removeEvent('mouseup',map_filter_downleft_stop);
	map.enableDragging();
}


var map_filter_sides_tb,map_filter_sides_lr;
function map_filter_checkSides()
{	var minsize=36;
	var w=parseInt(map_filter_overlay.div_.style.width),h=parseInt(map_filter_overlay.div_.style.height);
	if(w<minsize&&map_filter_sides_tb)
	{		map_filter_sides_tb=false;		document.getElementById('map_filter_ct').style.display='none';
		document.getElementById('map_filter_cb').style.display='none';
	}else if(w>=minsize&&!map_filter_sides_tb)
	{		map_filter_sides_tb=true;		document.getElementById('map_filter_ct').style.display='block';
		document.getElementById('map_filter_cb').style.display='block';
	}
	if(h<minsize&&map_filter_sides_lr)
	{		map_filter_sides_lr=false;
		document.getElementById('map_filter_cl').style.display='none';
		document.getElementById('map_filter_cr').style.display='none';
	}else if(h>=minsize&&!map_filter_sides_lr)
	{
		map_filter_sides_lr=true;
		document.getElementById('map_filter_cl').style.display='block';
		document.getElementById('map_filter_cr').style.display='block';
	}
}

function map_filter_rect(coords)
{	if(coords)
	{        map_filter_ne=new GLatLng(coords[0],coords[1]);
        map_filter_sw=new GLatLng(coords[2],coords[3]);
	}else
	{		var margin=80;
		var mapdiv=document.getElementById('map');
		var x,y;
		x=mapdiv.offsetWidth-margin,y=margin;
		map_filter_ne=map.fromContainerPixelToLatLng(new GPoint(x,y));
		x=margin,y=mapdiv.offsetHeight-margin;
		map_filter_sw=map.fromContainerPixelToLatLng(new GPoint(x,y));
	}
	map_filter_sides_tb=map_filter_sides_lr=true;}

function map_getEarthWidth()
{	return G_NORMAL_MAP.getProjection().getWrapWidth(map.getZoom());
}

function map_getFilterBounds()
{	var c1=map.fromLatLngToDivPixel(map_filter_ne);
	var c2=map.fromLatLngToDivPixel(map_filter_sw);
	while(c1.x<c2.x)c1.x+=map_getEarthWidth();
	return [c1,c2];
}

function est_map_filter_init()
{
	map_filter_rect.prototype = new GOverlay();

	map_filter_rect.prototype.initialize = function(map) {		var div=document.createElement("div");
		div.className='map_filter_rect';
		div.innerHTML='<div class="c_interior" onmousedown="map_filter_goMove(event)"></div><div class="c_t" id="map_filter_ct"><div onmousedown="map_filter_goUp(event)"></div></div><div class="c_b" id="map_filter_cb"><div onmousedown="map_filter_goDown(event)"></div></div><div class="c_l" id="map_filter_cl"><div onmousedown="map_filter_goLeft(event)"></div></div><div class="c_r" id="map_filter_cr"><div onmousedown="map_filter_goRight(event)"></div></div><div class="c_tr" onmousedown="map_filter_goUpRight(event)"></div><div class="c_br" onmousedown="map_filter_goDownRight(event)"></div><div class="c_bl" onmousedown="map_filter_goDownLeft(event)"></div><div class="c_close"><img src="/images/map_filter/close.png" alt="" id="map_filter_close" usemap="#map_filter_close_map" /></div><map id="map_filter_close_map" name="map_filter_close_map"><area shape="circle" coords="8,8,7" href="#" onclick="mm_filter_click(true);return false" onmouseover="document.getElementById(\'map_filter_close\').style.cursor=\'pointer\';document.getElementById(\'map_filter_close\').src=\'/images/map_filter/close-a.png\'" onmouseout="document.getElementById(\'map_filter_close\').style.cursor=\'default\';document.getElementById(\'map_filter_close\').src=\'/images/map_filter/close.png\'"></map>';
		map.getPane(G_MAP_OVERLAY_LAYER_PANE).appendChild(div);
		this.div_=div;
		map_filter_checkSides();
	}

	map_filter_rect.prototype.remove = function() {		map_filter_ne=map_filter_sw=-1;
		this.div_.parentNode.removeChild(this.div_);
	}

	map_filter_rect.prototype.copy = function() {
		return false;
	}

	map_filter_rect.prototype.redraw = function(force) {
	  if(!force)return;
	  var minsize=map_filter_rect_minsize;
	  var c=map_getFilterBounds(),c1=c[0],c2=c[1];
	  var w=c1.x-c2.x;
	  var h=c2.y-c1.y;
	  if(w<minsize)
	  {	  	c2.x-=Math.floor((minsize-w)/2);
	  	w=minsize;
	  }
	  if(h<minsize)
	  {
	  	c1.y-=Math.floor((minsize-h)/2);
	  	h=minsize;
	  }
	  this.div_.style.width=w+"px";
	  this.div_.style.height=h+"px";
	  this.div_.style.left=c2.x+"px";
	  this.div_.style.top=c1.y+"px";
	  map_filter_checkSides();
	}
}



function cont_map_resize()
{	var bfrom=document.getElementById('bycar_from');
	var bbtn=document.getElementById('bycar_btn');
	bfrom.style.width=(bfrom.offsetWidth+document.getElementById('switch1_div').offsetWidth-(bbtn.offsetLeft+bbtn.offsetWidth)-5)+'px';
	return true;
}

function switchto(n)
{	document.getElementById('switch'+(1-n)).style.display='none';
	document.getElementById('switch'+(1-n)+'_div').style.display='none';	document.getElementById('switch'+n).style.display='block';
	document.getElementById('switch'+n+'_div').style.display='block';
	if((n==1)&&(!map_init))
	{		map_init=true;
		document.getElementById('map').style.height='500px';
		var bfrom=document.getElementById('bycar_from');
		var bbtn=document.getElementById('bycar_btn');
		var w=(bfrom.offsetWidth+document.getElementById('switch1_div').offsetWidth-(bbtn.offsetLeft+bbtn.offsetWidth)-6);
 		bfrom.style.width=w+'px';
  		bfrom.focus();
		initmap(false);
		map_center=map.getCenter();
		GEvent.addListener(map, "moveend", function(){map_center=map.getCenter()});
		addEvent('resize',function(){cor_map();cor_cont();},window);
		var point=new GLatLng(55.770634984267154,37.679994106292725);
		map.setCenter(point,16);
		var gicon=new GIcon(G_DEFAULT_ICON);
		gicon.image="/images/map/konsicon.png";
		gicon.shadow="/images/estate/icon-shadow.png";
		gicon.iconSize=new GSize(19,34);
		gicon.shadowSize=new GSize(35,34);
		gicon.iconAnchor=new GPoint(9,33);
		map.addOverlay(new GMarker(point,{icon:gicon}));
	}
	return true;
}

function bycar_click(mess)
{
    var direction=new GDirections(map);
	GEvent.addListener(direction, "load", function() {
    map.clearOverlays();
  	});
	GEvent.addListener(direction, "error", function() {		if(with_prefix)
		{
  	 		alert(error_mess);
			var bfrom=document.getElementById('bycar_from');
			bfrom.select();
			bfrom.focus();
		}else
		{			with_prefix=true;		    direction.load("from: "+prefix+" "+document.getElementById('bycar_from').value+" to: Москва, ул. Бауманская, 43, строение 2");
		}
  	});
  	with_prefix=false;
    direction.load("from: "+document.getElementById('bycar_from').value+" to: Москва, ул. Бауманская, 43, строение 2");
	return true;
}

function bycar_down(e)
{	if(!e)e=window.event;
	if(e.keyCode==13)bycar_click();
	return true;
}

function getIEVersion()
{
    var ua = navigator.userAgent;
    var MSIEOffset = ua.indexOf("MSIE ");
    if (MSIEOffset == -1) {
        return 0;
    } else {
        return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
    }
}
var ie=getIEVersion();

function close_photos()
{	var sup=document.getElementById('super');
	var mapdiv;
	if(mapdiv=document.getElementById('map'))
	{		mapdiv.style.display='none';
		sup.appendChild(mapdiv);
	}else ptv_cur=-1;
	sup.removeChild(document.getElementById('ptv_cont'));
	sup.removeChild(document.getElementById('ptv_bg'));
	return true;
}

function view_photo(n)
{	if(n<0)n=photos_tv.length-1;	if(n>=photos_tv.length)n=0;	ptv_cur=n;	var rarrow=document.getElementById('ptv_right');
	var larrow=document.getElementById('ptv_left');
	if(n+1<photos_tv.length)rarrow.style.visibility='visible';else rarrow.style.visibility='hidden';
	if(n>0)larrow.style.visibility='visible';else larrow.style.visibility='hidden';
	var img=document.getElementById('ptv_img');
	var loading=document.getElementById('ptv_loading');
	img.style.visibility='hidden';
	loading.style.visibility='visible';
	var v=photos_tv[n].split("||");
    img.style.marginTop=Math.round((480-v[2])/2)+'px';
	img.onload=function() {document.getElementById('ptv_loading').style.visibility='hidden'; document.getElementById('ptv_img').style.visibility='visible';}
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var ieversion=new Number(RegExp.$1); if(ieversion<7)img.onreadystatechange = function() {var img=document.getElementById('ptv_img'); if(!img.complete)return false;document.getElementById('ptv_loading').style.visibility='hidden'; document.getElementById('ptv_img').style.visibility='visible';}}
	img.src='/_images/'+v[0];
    img.style.height=v[2];
    img.style.width=v[3];
	var p=document.getElementById('ptv_p');
	p.innerHTML=v[1];
	if(photos_tv.length>1)
	{
		n++;
		if(n>=photos_tv.length)n=0;
		var v2=photos_tv[n].split("||");
  		preloadImages(new Array('/_images/'+v2[0]));
	}
	return true;
}

function view_photos(n)
{	var ie=getIEVersion();
	var canvas=initcanvas();	var sup=document.getElementById('super');
	var bg=document.createElement('img');
	bg.id="ptv_bg";
	bg.src="/images/ptv_bg.png";
	bg.style.position='absolute';
	bg.style.zIndex='1001';
	bg.style.left=bg.style.top='0px';
	bg.style.width=bg.style.height='100%';
	if(ie>0&&ie<8)bg.style.height=sup.offsetHeight+'px';
	var cont=document.createElement('div');
	cont.id="ptv_cont";
	cont.style.position='absolute';
	cont.style.zIndex='1002';
	cont.style.left=Math.max(10,Math.round(canvas_scrollLeft()+(canvas.offsetWidth-700)/2))+'px';
	cont.style.top=Math.max(10,Math.round(canvas_scrollTop()+(canvas.offsetHeight-580)/2))+'px';
	cont.style.width='700px';
	cont.style.height='580px';
	cont.style.background='white';
	var cont_bg=document.createElement('div');
	cont_bg.id="ptv_cont_bg";
	cont_bg.style.position='absolute';
	cont_bg.style.left='-10px';
	cont_bg.style.top='-7px';
	cont_bg.style.width='720px';
	cont_bg.style.height='600px';
	cont_bg.style.background="url('/images/ptv_cbg.png')";
	cont.appendChild(cont_bg);
	var close=document.createElement('img');
	close.src="/images/ptv_close.png";
	close.style.position='absolute';
	close.style.right=close.style.top='10px';
	close.style.width=close.style.height='11px';
	close.style.cursor='pointer';
	close.onclick=close_photos;
	close.onmouseover=function(){this.src="/images/ptv_close-a.png";};
	close.onmouseout=function(){this.src="/images/ptv_close.png";};
	cont.appendChild(close);
	var img_cont=document.createElement('div');
	img_cont.style.position='absolute';
	img_cont.style.top='29px';
	img_cont.style.left='29px';
	img_cont.style.width='642px';
	img_cont.style.height='482px';
	if(n!='map')
		img_cont.innerHTML='<div style="position: absolute; top: 0px; left: 0px; width: 640px; height: 480px" align="center"></div>';
	else
	{		var mapdiv=document.getElementById('map');
		img_cont.appendChild(mapdiv);
		mapdiv.style.display='block';
	}
	cont.appendChild(img_cont);
	if(n!='map')
	{		var img=document.createElement('img');
		img.id='ptv_img';
		img.style.border='1px solid #666666';
		if(photos_tv.length>1)
		{
			img.style.cursor='pointer';
			img.onclick=function() {view_photo(ptv_cur+1);};
		}
		img_cont.getElementsByTagName('div')[0].appendChild(img);
		var loading=document.createElement('img');
	    loading.id='ptv_loading';
	    loading.src='/images/loading.gif';
	    loading.style.position='absolute';
	    loading.style.left='306px';
	    loading.style.top='226px';
	    loading.style.width=loading.style.height='28px';
	    img_cont.appendChild(loading);
		var rarrow=document.createElement('div');
		var larrow=document.createElement('div');
		rarrow.id='ptv_right';
		larrow.id='ptv_left';
		rarrow.style.background='url("/images/ptv_right.png")';
		larrow.style.background='url("/images/ptv_left.png")';
		rarrow.style.cursor=larrow.style.cursor='pointer';
		rarrow.style.position=larrow.style.position='absolute';
		rarrow.style.right='30px';
		larrow.style.left='30px';
		rarrow.style.bottom=larrow.style.bottom='20px';
		rarrow.style.width=larrow.style.width='15px';
		rarrow.style.height=larrow.style.height='28px';
		rarrow.style.visibility=larrow.style.visibility='hidden';
		rarrow.onmouseover=function() {document.getElementById('ptv_right').style.background='url("/images/ptv_right_a.png")';}
		larrow.onmouseover=function() {document.getElementById('ptv_left').style.background='url("/images/ptv_left_a.png")';}
		rarrow.onmouseout=function() {document.getElementById('ptv_right').style.background='url("/images/ptv_right.png")';}
		larrow.onmouseout=function() {document.getElementById('ptv_left').style.background='url("/images/ptv_left.png")';}
		rarrow.onclick=function() {view_photo(ptv_cur+1);};
		larrow.onclick=function() {view_photo(ptv_cur-1);};
		cont.appendChild(rarrow);
		cont.appendChild(larrow);
	}
 	var p=document.createElement('p');
 	p.id='ptv_p';
 	p.style.position='absolute';
 	p.style.margin='0px';
 	p.style.left='80px';
 	p.style.width='540px';
 	p.style.top='536px';
 	p.style.textAlign='center';
 	if(n!='map')
 		p.style.fontStyle='italic';
 	cont.appendChild(p);
	sup.appendChild(bg);
	sup.appendChild(cont);
 	if(n!='map')
 		view_photo(n);
 	else { 		p.innerHTML=arguments[3]; 		if(map_ft)
 		{ 			initmap(false);
 			map_ft=false;
 		}else
 			map.clearOverlays();
 		var point=new GLatLng(arguments[2],arguments[1]);		map.setCenter(point,15);
		var gicon=new GIcon(G_DEFAULT_ICON);
		gicon.image="/images/map/insticon.png";
		gicon.shadow="/images/estate/icon-shadow.png";
		gicon.iconSize=new GSize(19,34);
		gicon.shadowSize=new GSize(35,34);
		gicon.iconAnchor=new GPoint(9,33);
		map.addOverlay(new GMarker(point,{icon:gicon}));
 	}
 	return true;
}

function preImages(path,for_preloading)
{
	var imgs=new Array(
	path+"images/m-left-o.png",
	path+"images/m-right-o.png",
	path+"images/m-left-c.png",
	path+"images/m-right-c.png",
	path+"images/mshadow-l.png",
	path+"images/mshadow-r.png",
	path+"images/mshadow-br.png",
	path+"images/mshadow-bl.png",
	path+"images/mshadow-b.png",
	path+"images/mshadow-b-ie.png",
	path+"images/to1.png",
	path+"images/to2.png",
	path+"images/to3.png",
	path+"images/bbar.png",
	path+"images/bar.png",
	path+"images/submenu-bottom.png",
	path+"images/submenu-lb.png",
	path+"images/submenu-left.png",
	path+"images/submenu-rb.png",
	path+"images/submenu-right.png",
	path+"images/obm.png",
	path+"images/map/circle.png",
	path+"images/map/circle-a.png",
	path+"images/map/plus.png",
	path+"images/map/plus-a.png",
	path+"images/map/minus.png",
	path+"images/map/minus-a.png",
	path+"images/map/type-bg0.png",
	path+"images/map/type-bg1.png",
	path+"images/map/type-bg2.png",
	path+"images/map/type0.png",
	path+"images/map/type1.png",
	path+"images/map/type2.png",
	path+"images/map/scroll.png",
	path+"images/map/scroll-a.png",
	path+"images/map/scroll-on.png",
	path+"images/map/scroll-on-a.png",
	path+"images/ptv_bg.png",
	path+"images/ptv_cbg.png",
	path+"images/ptv_close.png",
	path+"images/ptv_close.png",
	path+"images/ptv_close-a.png",
	path+"images/ptv_right.png",
	path+"images/ptv_right_a.png",
	path+"images/ptv_left.png",
	path+"images/ptv_left_a.png",
	path+"images/loading.gif",
	path+"images/application/cap-l.png",
	path+"images/application/cap-r.png",

	path+"images/popup/1/t.png",
	path+"images/popup/1/b.png",
	path+"images/popup/1/l.png",
	path+"images/popup/1/r.png",
	path+"images/popup/1/tl.png",
	path+"images/popup/1/tr.png",
	path+"images/popup/1/bl.png",
	path+"images/popup/1/br.png",
	path+"images/popup/2/t.png",
	path+"images/popup/2/b.png",
	path+"images/popup/2/l.png",
	path+"images/popup/2/r.png",
	path+"images/popup/2/tl.png",
	path+"images/popup/2/tr.png",
	path+"images/popup/2/bl.png",
	path+"images/popup/2/br.png",

	path+"images/subway.png",

	path+"images/slider/left.png",
	path+"images/slider/right.png",
	path+"images/slider/bg.png",
	path+"images/slider/abg.png",
	path+"images/slider/bg-in.png",
	path+"images/slider/abg-in.png",

	path+"images/search/next.png",
	path+"images/search/next-o.png",
	path+"images/search/next-a.png",
	path+"images/search/prev.png",
	path+"images/search/prev-o.png",
	path+"images/search/prev-a.png",

	path+"images/map_filter/bg.png",
	path+"images/map_filter/bg-on.png",
	path+"images/map_filter/bg-on-a.png",
	path+"images/map_filter/left.png",
	path+"images/map_filter/left-a.png",
	path+"images/map_filter/left-on.png",
	path+"images/map_filter/left-on-a.png",
	path+"images/map_filter/right.png",
	path+"images/map_filter/right-a.png",
	path+"images/map_filter/right-on.png",
	path+"images/map_filter/right-on-a.png",
	path+"images/map_filter/close.png",
	path+"images/map_filter/close-a.png",
	path+"images/map_filter/diagonal-plus.png",
	path+"images/map_filter/diagonal-minus.png",
	path+"images/map_filter/horizontal.png",
	path+"images/map_filter/vertical.png",

	path+"horse_partner/img/sort_asc_selected.gif",
	path+"horse_partner/img/sort_desc_selected.gif"
	);
	preloadImages(imgs);
	if(for_preloading!="")
	{		var imgs2=new Array(
		path+"images/estate/"+for_preloading+"/obmbg.png",
		path+"images/estate/"+for_preloading+"/obmbgie.png",
		path+"images/estate/"+for_preloading+"/obmb.png",
		path+"images/estate/"+for_preloading+"/obmt.png"
		);
		preloadImages(imgs2);
	}
	return true;
}

function addOnLoad(f)
{
	if(typeof window.addEventListener!='undefined')
	    window.addEventListener('load',f,false);
	else if(typeof document.addEventListener!='undefined')
	    document.addEventListener('load',f,false);
	else if(typeof window.attachEvent!='undefined')
	    window.attachEvent('onload',f);
	return true;
}

function addEvent(en,f,el)
{
	if(arguments.length<3)var el=document;
	if(el.addEventListener)el.addEventListener(en,f,false);
	else el.attachEvent('on'+en,f);
}

var map_center=0;

function cor_map(){if(typeof(map)!="undefined")setTimeout("map.setCenter(map_center)",100);}
function cor_cont()
{	var bfrom=document.getElementById('bycar_from');
	var bbtn=document.getElementById('bycar_btn');
	var w=document.getElementById('switch1_div').offsetWidth-(bbtn.offsetWidth+36);
	bfrom.style.width=w+'px';
}

function mleftover(el){el.src='/images/m-left-o.png';}
function mleftout(el){el.src='/images/m-left.png';}
function mleftdown(el){el.src='/images/m-left-c.png';}

function mrightover(el){el.src='/images/m-right-o.png';}
function mrightout(el){el.src='/images/m-right.png';}
function mrightdown(el){el.src='/images/m-right-c.png';}

var mmove=false,mmwidth=0,mmel;
var mstep=25,mtime=450;

function mleft_(t)
{
	t+=mstep;
	if(t>mtime)t=mtime;
	if(t<mtime/2)mmel.scrollLeft=mmwidth-Math.round((4*t*t/(mtime*mtime))*mmwidth/2);
	else mmel.scrollLeft=mmwidth-Math.round(mmwidth-(4*(mtime-t)*(mtime-t)/(mtime*mtime))*mmwidth/2);
	if(t==mtime)mmoveend();
	else setTimeout("mleft_("+t+")",mstep);
}

function mleft()
{
	if(mmove)return false;
	mmovebegin();
	mmel=document.getElementById('msbox_c05');
	mmwidth=mmel.getElementsByTagName('div')[1].offsetWidth;
	var divs=mmel.getElementsByTagName('div');
	var i=divs.length-2;
	while(divs[i].className!='mprop')i--;
	divs[0].insertBefore(divs[i],divs[1]);
	mmel.scrollLeft=mmwidth;
	mleft_(0);
}

function mright_(t)
{	t+=mstep;
	if(t>mtime)t=mtime;
	if(t<mtime/2)mmel.scrollLeft=Math.round((4*t*t/(mtime*mtime))*mmwidth/2);
	else mmel.scrollLeft=Math.round(mmwidth-(4*(mtime-t)*(mtime-t)/(mtime*mtime))*mmwidth/2);
	if(t==mtime)
	{		var divs=mmel.getElementsByTagName('div');
		divs[0].insertBefore(divs[1],divs[divs.length-1]);
		mmel.scrollLeft=0;		mmoveend();
	}else setTimeout("mright_("+t+")",mstep);
}

function mright()
{
	if(mmove)return false;
	mmovebegin();
	mmel=document.getElementById('msbox_c05');
	mmwidth=mmel.getElementsByTagName('div')[1].offsetWidth;
	mright_(0);
}

function mmovebegin()
{	mmove=true;
	document.getElementById('msc_l').getElementsByTagName('div')[0].style.visibility='visible';
	document.getElementById('msc_r').getElementsByTagName('div')[0].style.visibility='visible';
}

function mmoveend()
{
	document.getElementById('msc_l').getElementsByTagName('div')[0].style.visibility='hidden';
	document.getElementById('msc_r').getElementsByTagName('div')[0].style.visibility='hidden';
	mmove=false;
}

function elcclick(n,t,s1,s2)
{	var el=document.getElementById('mpropt_'+n);
	if(el.style.visibility=='')
	{		el.style.visibility='visible';
		t.innerHTML=s2;
	}else
	{		el.style.visibility='';
		t.innerHTML=s1;
	}
}

var map_contvis=0;
function map_hidecontrols(){map_contvis=(new Date).getTime(); document.getElementById('map_control').style.display='none';}
function map_showcontrols(){if((new Date).getTime()-map_contvis>100)document.getElementById('map_control').style.display='block';}

function elitc(el){if(elitc_)elitc_(el);}

function application_show()
{	document.getElementById('application_link').style.display='none';
	document.getElementById('application').style.display='block';
	var inp=document.getElementById('application').getElementsByTagName('form')[0].name;
	inp.select();
	inp.focus();
	if(ie>0&&ie<7)
	{		document.getElementById('super').style.width='99%';
		document.getElementById('super').style.width='100%';		setProperSizesIE();
	}
}

function application_hide()
{
	document.getElementById('application').style.display='none';
	document.getElementById('application_link').style.display='block';
	if(ie>0&&ie<7)
	{		document.getElementById('super').style.width='99%';
		document.getElementById('super').style.width='100%';		setProperSizesIE();
	}
}

function table_clear()
{	var itable=document.getElementById('itable'),trs=itable.getElementsByTagName('tr');
	var used=new Array();
	for(var i=2;i<trs.length;i++)
	{		var tds=trs[i].getElementsByTagName('td');
		for(var j=0;j<tds.length;j++)
			if(tds[j].innerHTML.toLowerCase()!='<p>—</p>')used[j]=true;
	}
	var cur=0;
	var tds=trs[0].getElementsByTagName('td');
	for(var i=0;i<tds.length;i++)
	{		if(!used[cur]) tds[i].style.display='none';		cur+=tds[i].colSpan;
	}
	for(var i=2;i<trs.length;i++)
	{		var tds=trs[i].getElementsByTagName('td');
		for(var j=0;j<tds.length;j++)
			if(!used[j])tds[j].style.display='none';
	}
}

function quest_go()
{	setTimeout(function(){	document.questfrm.name.select();
	document.questfrm.name.focus();
	}, 50);
}

function soft_submit(frm)
{	var inps=frm.getElementsByTagName('input');
	for(var i=0;i<inps.length;i++)if(inps[i].type.toLowerCase()=='submit')
	{		if(inps[i].disabled)return false;else
		{			frm.submit();			return true;
		}
	}
}

function ctrl_enter(el,e)
{    e=e||window.event;
	if(e.ctrlKey&&(e.keyCode==13||e.keyCode==10))soft_submit(el.form);
}


var reply_div;
function correct_reply_div_init()
{	reply_div=sq_getElementsByClassName('reply_div')[0];
	correct_reply_div();
	sq_addEvent('resize',correct_reply_div,window);
}
function correct_reply_div()
{	var w=document.getElementById('super').offsetWidth;	reply_div.style.marginLeft=Math.max(0,Math.round((1100-w)/10))+'px';
}

function quest_click(n)
{	var a=document.getElementById('qp_'+n).getElementsByTagName('a')[0],d=document.getElementById('qd_'+n);
	if(d.sq_opened)
	{		d.style.display='none';
		a.style.fontSize='13px';
		a.style.fontWeight='normal';
		a.style.borderBottom='1px dashed';
		d.sq_opened=false;
		window.location.hash='#_';
	}else
	{		a.style.borderBottom='none';
		a.style.fontWeight='bold';
		a.style.fontSize='15px';
		d.style.display='block';		d.sq_opened=true;
	}
	if(ie==6)
	{		document.getElementById('super').style.width='99%';		document.getElementById('super').style.width='100%';
	}
	return d.sq_opened;
}

function quest_init()
{	if(window.location.hash.length<2)return;
	var h=window.location.hash.substr(1).toLowerCase();
	var ps=document.getElementById('quest_list').getElementsByTagName('p');
	for(var i=0;i<ps.length;i++)if(ps[i].className=='c0'&&ps[i].id.toLowerCase()=='qp_'+h)
	{		ps[i].getElementsByTagName('a')[0].onclick();		return;
	}
}

function captcha_new()
{	var img=document.getElementById('captcha');
	ccaptcha=(ccaptcha+1)%5;
	img.src='/captcha/?id='+captchas[ccaptcha];
	document.getElementById('captcha_id').value=captchas[ccaptcha];
	sq_feedback_check(sq_getElementsByClassName('feedback',document,'form')[0]);
}

function trySubmit(frm)
{	var inps=frm.getElementsByTagName('input');
	for(var i=0;i<inps.length;i++)if(inps[i].type.toLowerCase()=='submit')return !inps[i].disabled;
	return false;
}

function comment_go()
{
	setTimeout(function(){
	document.commentfrm.name.select();
	document.commentfrm.name.focus();
	}, 50);
}

function calcError(w)
{	var p=document.getElementById('calc_error');
	p.innerHTML=w;
	p.style.display='block';	return false;
}

function calcSubmit(frm,w_price,w_init,w_price_init,w_rate,w_period)
{	if(!trySubmit(frm))return false;

	var price_v=sq_trim(frm.price.value);
	if(parseInt(price_v).toString()!=price_v||parseInt(price_v)<=0)
		return calcError(w_price);

	var init_v=sq_trim(frm.init.value);
	if(init_v=='')init_v=0;
	if(parseInt(init_v).toString()!=init_v||parseInt(init_v)<0)
		return calcError(w_init);

	if(parseInt(price_v)<=parseInt(init_v))
		return calcError(w_price_init);

	var rate_v=sq_trim(frm.rate.value).replace(/,/g,'.');
	if(parseFloat(rate_v).toString()!=rate_v||parseFloat(rate_v)<0)
		return calcError(w_rate);

	var period_v=sq_trim(frm.period.value);
	if(parseInt(period_v).toString()!=period_v||parseInt(period_v)<=0)
		return calcError(w_period);

	document.getElementById('calc_error').style.display='none';
	return true;
}

function messagefrm_init()
{	if(window.location.hash=='#message')sq_addOnLoad(function(){document.messagefrm.name.focus()});
}

function estate_img_over(el,sw,sh,path,lw,lh)
{	sq_executeLast(function(){estate_img_over_(el,sw,sh,path,lw,lh);},250,'estate_img');}

var estate_img_span=false;
function estate_img_over_(el,sw,sh,path,lw,lh)
{
	var sp=document.createElement('span');
	estate_img_span=sp;
	var shift_w=Math.floor((lw-sw)/2),shift_h=Math.floor((lh-sh)/2);
	sp.className='c0';
	sp.style.left=(-16-sw-shift_w-5)+'px';
	sp.style.top=(-shift_h-5)+'px';
	sp.innerHTML='<span class="c_t"></span><span class="c_b"></span><span class="c_l"></span><span class="c_r"></span><span class="c_tl"></span><span class="c_tr"></span><span class="c_bl"></span><span class="c_br"></span><img class="c1" src="'+path+'" style="width:'+lw+'px;height+'+lh+'px" /><span class="c1" style="width:'+sw+'px;height:'+sh+'px;left:'+(shift_w+5)+'px;top:'+(shift_h+5)+'px" onmouseover="estate_img_show=true" onmouseout="estate_img_out(this.parentNode)"></span>';
	el.parentNode.appendChild(sp);
	if(ie&&ie<=7)
	{
		el.parentNode.parentNode.style.zIndex='2';
		sp.style.cursor='pointer';
		sq_addEvent('click',function(){ie7_a_click(sp);},sp);
	}
}


function estate_img_el_out(el,e)
{	sq_executeLast(function(){},250,'estate_img');
	if(estate_img_span&&!isIE6&&!isIE7) // Close image when user scrolled out (especially for Chrome)
	{		var coords=sq_getCursorPos(e);
		var l=sq_getLeft(el),r=sq_getTop(el),w=el.offsetWidth,h=el.offsetHeight;
		if(!isinrect(coords.x,coords.y,l-10,r-10,l+w+10,r+h+10))estate_img_out(estate_img_span);
	}
}

function estate_img_out(el)
{	if(!el)return;
	estate_img_span=false;	if(ie&&ie<=7&&el.parentNode.style)el.parentNode.style.zIndex='1';
	sq_removeElement(el);
}

function estate_sort_cmp(a,b)
{	if(a[1]==0)return 1;else if(b[1]==0)return -1;	if(estate_sort_order)
	{		if(a[1]<b[1])return 1;else
		if(a[1]>b[1])return -1;else
		return 0;
	}else
	{		if(a[1]<b[1])return -1;else
		if(a[1]>b[1])return 1;else
		return 0;
	}
}

function wordForm(word,cnt,onlyform)
{	var f;	if(lang=='rus')
	{
		switch(word)
		{
			case 'propositions':
				var r=cnt%100;
				if(r>=11&&r<=20)f='предложений';
				else if(r%10>=2&&r%10<=4)f='предложения';
				else if(r%10==1)f='предложение';
				else f='предложений';
				return onlyform?f:cnt+'&nbsp;'+f;
		}
	}
}

var estate_sort_field='',estate_sort_order=0,est_beforeFade_sort=false;
function estate_sort(field,a,dontFade)
{	if(dontFade)         // Needed for initializing (init_sort)
	{		if(sq_hold('estate_sort'))return;
	}else
	{		if(!est_beforeFade_sort)
		{
			if(sq_hold('estate_sort'))return;

			est_fade(true);
			est_beforeFade_sort=true;
			return setTimeout(function(){estate_sort(field,a);},10);
		}else
			est_beforeFade_sort=false;
	}
	var el;	if(el=document.getElementById('estate_sort_span'))
	{		sq_removeElement(el);
		var old_a=document.getElementById('estate_sort_a');
		old_a.style.color='';;
		old_a.id='';
	}
	var span=document.createElement('span');
	span.id='estate_sort_span';
	a.id='estate_sort_a';
	a.style.color=span.style.color=est_color;	if(estate_sort_field!=field||estate_sort_order==1)
	{		span.innerHTML='&nbsp;&darr;';
		estate_sort_order=0;
	}else
	{		span.innerHTML='&nbsp;&uarr;';
		estate_sort_order=1;
	}
	sq_insertAfter(span,a);
	estate_sort_field=field;

	if((field.indexOf('r_')==0&&est['min'+field.substr(2)])||(field.indexOf('r_')!=0&&est[field]))
	{
		var toSort=new Array();
		if(field.indexOf('r_')==0)
		{			var v,mins='min'+field.substr(2),maxs='max'+field.substr(2);
			for(var i=0;i<est['sq_num_id'].length;i++)
			{				if(est[mins][i]==0)v=est[maxs][i];else v=est[mins][i];				toSort.push([est['sq_num_id'][i],v]);
			}
		}else
			for(var i=0;i<est['sq_num_id'].length;i++)toSort.push([est['sq_num_id'][i],est[field][i]]);
		toSort.sort(estate_sort_cmp);

		var s='';
		for(var i=0;i<toSort.length;i++)
		{			var oldTr=document.getElementById('item_'+toSort[i][0]);			s+='<tr class="estate_item" id="item_'+toSort[i][0]+'"'+(oldTr.style.display=='none'?' style="display: none"':'')+'>'+oldTr.innerHTML+'</tr>';
		}

		var tmp=document.createElement('span');
		tmp.innerHTML='<table><tbody>'+s+'</tbody></table>';
		var itable=document.getElementById('itable');

		itable.replaceChild(tmp.getElementsByTagName('tbody')[0],itable.getElementsByTagName('tbody')[0]);
	}

	setcookie_storage(est_part+"_sort",estate_sort_field,cookie_lifetime);
	setcookie_storage(est_part+"_sortorder",estate_sort_order,cookie_lifetime);

	if(!dontFade)est_defade();
	sq_free('estate_sort');
}

function est_init_sort()
{	var f=getcookie_storage(est_part+"_sort");
	if(f)
	{		var a=sq_getElementsByClassName('est_a_'+f,document,'a');
		if(a.length>0)
		{			if(getcookie_storage(est_part+"_sortorder").toString()=='1')estate_sort_field=f;
			estate_sort(f,a[0],true);
		}
	}
}

function select_get_index(s,v)
{
	v=v.toString();	for(var i=0;i<s.options.length;i++)if(s[i].value==v)return i;
	return -1;
}

function est_init_filter_external()
{	var p=window.location.hash.indexOf('_');
	if(p==-1)return;	var par=window.location.hash.substr(1,p-1),value=parseInt(window.location.hash.substr(p+1));
	switch(par)
	{		case 'type':
		case 'category':
			setcookie_storage(est_part+"_"+par,value,cookie_lifetime);
			break;		case 'country':
			setcookie_storage(est_part+"_scountry",value,cookie_lifetime);
			break;
	}
}

function est_init_filter()
{	est_init_filter_external();	for(var i in est)
	{		var v;		if(i=='type'||i=='metro1'||i=='location')v=getcookie_storage(est_part+"_"+i)||'';
		else v=parseFloat(getcookie_storage(est_part+"_"+i))||0;

		var d,ind;
		switch(i)
		{			case 'category':
				if(d=document.getElementById('est_'+i+'_'+v))sq_addClass(d,'c0');else
				{					v=0;
					sq_addClass(document.getElementById('est_'+i+'_0'),'c0');				}
				break;
			case 'situation':
				if(d=document.getElementById('est_'+i+'_'+v))sq_addClass(d,'c0');else
				{					v=0;
					sq_addClass(document.getElementById('est_'+i+'_0'),'c0');				}
				est_situationChange(parseInt(v));
				break;
			case 'district':
			case 'direction':
			case 'region':
			case 'road':
			case 'dplace':
			case 'rplace':
				if((d=document.getElementById('est_'+i))&&((ind=select_get_index(d,v)))>0)d.selectedIndex=ind;else v=0;
				fchanged(i,true);
				break;
			case 'type':
				var types=v.split(',');
				if(v=='')types=[];
				var types2=[]; for(var j=0;j<types.length;j++)if(est_getType(types[j])>-1)types2.push(types[j]);
				v=types2.join(',');

				est_types_set(v);
				break;
			case 'metro1':
				var metro=v.split(',');
				if(v=='')metro=[];
				var metro2=[]; for(var j=0;j<metro.length;j++)if(est_getMetro(metro[j])>-1)metro2.push(metro[j]);
				v=metro2.join(',');

				est_metro_set(v);
				break;
			case 'scountry':
				if(est_getCountry(v)==-1)v=0;
				filter[i]=v;
				est_set(i);
				break;
			case 'mdistance1':
				document.getElementById('est_'+i+'_field').value=(v>0?v:'');
				est_setClose(i);
				est_set(i);
				break;
			case 'ring1':
				if(v>0&&v<=3)document.getElementById('est_ring'+v).checked=true;else
				{					v=0;
					document.getElementById('est_ring0').checked=true;
				}
				break;
			case 'cdistance':
			case 'area':
			case 'minarea':
			case 'tarea':
			case 'larea':
			case 'karea':
			case 'barea':
			case 'parea':
			case 'minparea':
			case 'floor':
			case 'floors':
			case 'aps':
				var v0=parseFloat(getcookie_storage(est_part+"_"+i+"0"))||0;
				var v1=getcookie_storage(est_part+"_"+i+"1");
				v1=(v1.length>0)?parseFloat(v1):-1;
				if(v1>=0&&v0>v1)v0=v1;
				document.getElementById('est_'+i+'_field0').value=(v0>0?v0:'');
				document.getElementById('est_'+i+'_field1').value=(v1>=0?v1:'');
				est_setClose(i);
				filter[i+'0']=v0;
				filter[i+'1']=v1;
				est_set(i);
				break;
			case 'rooms':
			case 'minrooms':
				v=Math.round(v);
				if(v<0||v>15)v=0;
				for(var k=0;k<4;k++)document.getElementById('est_'+i+'_'+k).checked=((v>>k)%2)?true:false;
				est_setClose(i);
				est_set(i);
				break;
			case 'price':
			case 'minprice':
			case 'mprice':
			case 'minmprice':
			case 'monthprice':
			case 'minmonthprice':
			case 'minyearmprice':
				var v0=parseFloat(getcookie_storage(est_part+"_"+i+"0"))||0;
				var v1=getcookie_storage(est_part+"_"+i+"1");
				v1=(v1.length>0)?parseFloat(v1):-1;
				if(v1>=0&&v0>v1)v0=v1;
				document.getElementById('est_'+i+'_field0').value=(v0>0?v0:'');
				document.getElementById('est_'+i+'_field1').value=(v1>=0?v1:'');

				var ve=parseInt(getcookie_storage(est_part+"_"+i+"_e"))||0,ve_order=ve%10,ve_currency=Math.floor(ve/10);
				d=document.getElementById('est_'+i+'_order');
				if(select_get_index(d,ve_order)==-1)ve_order=parseInt(d.options[0].value);
				if(ve_currency<0||ve_currency>2)ve_currency=0;
				document.getElementById('est_'+i+'_order').selectedIndex=select_get_index(d,ve_order);
				document.getElementById('est_'+i+'_'+ve_currency).checked=true;

				var scale=1;
				for(var j=0;j<ve_order;j++)scale*=1000;
				scale*=crates[ve_currency];
				slider_setScale(i,scale,crates[ve_currency]);

				est_setClose(i);
				filter[i+'0']=v0;
				filter[i+'1']=v1;
				filter[i+'_e']=ve_currency*10+ve_order;
				est_set(i);
				break;
			case 'location':
				if(v!='')
				{					document.getElementById('est_map_switch_del').style.display='block';
					mm_filter_click(true,v.split(';'),true);
				}
				break;
		}
		filter[i]=v;
	}
	est_filter();
}

function firstToUpper(s)
{	if(s=='')return '';
	return s.substr(0,1).toUpperCase()+s.substr(1);
}

var est_fading=false;
function est_fade(onlyTable)
{	if(!sq_ie_lte8||est_fading)return;
	est_fading=true;	var d=document.createElement('div');
	d.id='est_fade';
	d.className='est_fade';
	d.innerHTML='<div><img src="/images/loading.gif" alt="" /></div>';
	var est_info=document.getElementById('est_info');
	if(onlyTable)
	{		var itable=document.getElementById('itable');	// onlyTable passed only while sorting, so table is always visible
		if(!isIE6)
		{			d.style.top=(sq_getTop(itable)-sq_getTop(est_info))+'px';
			d.style.height=itable.offsetHeight;
		}
	}
	if(isIE6)
	{		var alt_main=document.getElementById('alt_main');		d.style.left=(sq_getLeft(est_info)-sq_getLeft(alt_main))+'px';
		d.style.width=est_info.offsetWidth+'px';
		if(!onlyTable)
		{			d.style.top=(sq_getTop(est_info)-sq_getTop(alt_main))+'px';
			d.style.height=est_info.offsetHeight+'px';
		}else
		{			d.style.top=(sq_getTop(itable)-sq_getTop(alt_main))+'px';
			d.style.height=itable.offsetHeight+'px';
		}
	}
	est_info.appendChild(d);
}

function est_defade()
{	if(!sq_ie_lte8)return;	var d=document.getElementById('est_fade');
	if(d)sq_removeElement(d);
	est_fading=false;
}

var est_beforeFade_cf=false;
function est_clear_filter()
{	if(!est_beforeFade_cf)
	{		sq_executeLastCancel('est_filter');
		if(sq_hold('est_filter'))return sq_executeLast(est_clear_filter,est_filter_timeout,'est_filter');
		sq_hold('est_clear_filter');

		est_fade();
		est_beforeFade_cf=true;
		return setTimeout(est_clear_filter,10);
	}else
		est_beforeFade_cf=false;

	for(var i in est)
	{
		switch(i)
		{
			case 'category':
			case 'situation':
				eval('est_set'+firstToUpper(i)+'(0)');
				break;
			case 'district':
			case 'direction':
			case 'region':
			case 'road':
			case 'dplace':
			case 'rplace':
				if(d=document.getElementById('est_'+i))d.selectedIndex=0;
				fchanged(i);
				eval('est_set'+firstToUpper(i)+'(d)');
				break;
			case 'type':
				est_types_set('');
				est_setFilter(i,'');
				break;
			case 'metro1':
				est_metro_set('');
				est_setFilter(i,'');
				break;
			case 'ring1':
				document.getElementById('est_ring0').checked=true;
				est_ring(0);
				break;
			case 'scountry':
			case 'mdistance1':
			case 'cdistance':
			case 'area':
			case 'minarea':
			case 'tarea':
			case 'larea':
			case 'karea':
			case 'barea':
			case 'parea':
			case 'minparea':
			case 'floor':
			case 'floors':
			case 'aps':
			case 'rooms':
			case 'minrooms':
			case 'price':
			case 'minprice':
			case 'mprice':
			case 'minmprice':
			case 'monthprice':
			case 'minmonthprice':
			case 'minyearmprice':
				est_close2(i);
				break;
			case 'location':
				if(filter['location'])map_filter_remove();
				break;
		}
	}
	{											// Resetting map
		map.setCenter(map_initCenter);
		map.setZoom(map_initZoom);
		est_map_savePosition();
	}
	sq_free('est_clear_filter');
	sq_free('est_filter');
	est_filter(); // Defading inside here
}

var est_loaded=false;
var sliders_minmax=new Array();

function est_checkFilterState(field)
{	var d=document.getElementById('estf_'+field);
	if(!d||d.style.display=='')return true;
}

var est_beforeFade_filter=false;
function est_filter()
{	if(!est_beforeFade_filter)
	{
		sq_executeLastCancel('est_filter');
		if(sq_hold('est_filter'))return sq_executeLast(est_filter,est_filter_timeout,'est_filter');

		est_fade();
		est_beforeFade_filter=true;
		return setTimeout(est_filter,10);
	}else
		est_beforeFade_filter=false;

	var ids=[],processSlider=[],withSliders=[],withSliders_in=[],fields_to_process_pre=[],fields_to_process=[],passed_ids=[],id2index=[];

	var withSliders=['area','tarea','larea','karea','barea','parea','price','mprice','monthprice','minarea','minparea','minprice','minmprice','minmonthprice','minyearmprice'];
	for(var i=0;i<withSliders.length;i++)withSliders_in[withSliders[i]]=true;
	for(var i in est)if(est_checkFilterState(i))fields_to_process_pre.push(i);
	for(var i=0;i<fields_to_process_pre.length;i++)if(!withSliders_in[fields_to_process_pre[i]])fields_to_process.push(fields_to_process_pre[i]);
	for(var i=0;i<fields_to_process_pre.length;i++)if(withSliders_in[fields_to_process_pre[i]])
	{		fields_to_process.push(fields_to_process_pre[i]);
		processSlider[fields_to_process_pre[i]]=true;
	}

	for(var j=0;j<est['sq_num_id'].length;j++)
	{
		var id=est['sq_num_id'][j];
		passed_ids.push(id);
		ids[id]=[];
		id2index[id]=j;
	}

	for(var ind=0;ind<fields_to_process.length;ind++)
	{		var i=fields_to_process[ind];		var v=filter[i];		switch(i)
		{			case 'category':
			case 'situation':
			case 'district':
			case 'direction':
			case 'region':
			case 'road':
			case 'dplace':
			case 'rplace':
			case 'scountry':
				if(v)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]==v))ids[id].push(i);
				}
				break;
			case 'metro1':
				if(v!="")
				{					var metro=v.split(","),metro_in=new Array();
					for(var j=0;j<metro.length;j++)metro_in[parseInt(metro[j])]=true;
					for(var j=0;j<passed_ids.length;j++)
					{						var id=passed_ids[j];
						var jj=id2index[id];
						if(!((est['metro1']&&metro_in[est['metro1'][jj]])||(est['metro2']&&metro_in[est['metro2'][jj]])||(est['metro3']&&metro_in[est['metro3'][jj]])||(est['metro4']&&metro_in[est['metro4'][jj]])||(est['metro5']&&metro_in[est['metro5'][jj]])))
							ids[id].push(i);
					}
				}
				break;
			case 'mdistance1':
				if(v>0)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i][jj]<=v))ids[id].push(i);
				}
				break;
			case 'type':
				if(v!="")
				{
					var items=v.split(","),items_in=new Array();
					for(var j=0;j<items.length;j++)items_in[parseInt(items[j])]=true;
					for(var j=0;j<passed_ids.length;j++)
					{
						var id=passed_ids[j];
						var jj=id2index[id];
						if(!items_in[est[i][jj]])ids[id].push(i);
					}
				}
				break;
			case 'ring1':
				if(v>0&&v<4)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est['ring'+v]&&est['ring'+v][jj]>0))ids[id].push(i);
				}
				break;
			case 'area':
			case 'tarea':
			case 'larea':
			case 'karea':
			case 'barea':
			case 'parea':
			case 'cdistance':
			case 'floor':
			case 'floors':
			case 'aps':
				var failed=[];
				var v0=filter[i+'0'],v1=filter[i+'1'];
				if(v0>0)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>=v0))failed[id]=true;
				}
				if(v1>=0)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i][jj]<=v1))failed[id]=true;
				}
				if(v0>0||v1>=0)for(var j=0;j<passed_ids.length;j++)
				{					var id=passed_ids[j];					if(failed[id])ids[id].push(i);
				}
				break;
			case 'price':
			case 'mprice':
			case 'monthprice':
				var failed=[];
				var v0=filter[i+'0'],v1=filter[i+'1'],ve=filter[i+'_e'];
				var v_order=ve%10,v_currency=Math.floor(ve/10);
				for(var j=0;j<v_order;j++)
				{					v0*=1000;
					v1*=1000;
				}
				v0*=crates[v_currency];
				v1*=crates[v_currency];
				if(v1<0)v1=-1;
				if(v0>0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>=v0))failed[id]=true;
				}
				if(v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i][jj]<=v1))failed[id]=true;
				}
				if(v0>0||v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					if(failed[id])ids[id].push(i);
				}
				break;
			case 'minarea':
			case 'minparea':
				var failed=[];
				var i2='max'+i.substr(3);
				var v0=filter[i+'0'],v1=filter[i+'1'];
				if(v0>0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i2][jj]>=v0))failed[id]=true;
				}
				if(v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i][jj]<=v1))failed[id]=true;
				}
				if(v0>0||v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					if(failed[id])ids[id].push(i);
				}
				break;
			case 'minprice':
			case 'minmprice':
			case 'minmonthprice':
			case 'minyearmprice':
				var failed=[];
				var i2='max'+i.substr(3);
				var v0=filter[i+'0'],v1=filter[i+'1'],ve=filter[i+'_e'];
				var v_order=ve%10,v_currency=Math.floor(ve/10);
				for(var j=0;j<v_order;j++)
				{
					v0*=1000;
					v1*=1000;
				}
				v0*=crates[v_currency];
				v1*=crates[v_currency];
				if(v1<0)v1=-1;
				if(v0>0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i2][jj]>=v0))failed[id]=true;
				}
				if(v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					var jj=id2index[id];
					if(!(est[i][jj]>0&&est[i][jj]<=v1))failed[id]=true;
				}
				if(v0>0||v1>=0)for(var j=0;j<passed_ids.length;j++)
				{
					var id=passed_ids[j];
					if(failed[id])ids[id].push(i);
				}
				break;
			case 'rooms':
				if(v>0)
				{					var in_appropriate=[];
					for(var j=0;j<4;j++)if((v>>j)%2)in_appropriate[j]=true;					for(var j=0;j<passed_ids.length;j++)
					{
						var id=passed_ids[j];
						var jj=id2index[id];
						var amount;
						if(est[i][jj]==0)amount=-1;else if(est[i][jj]>3)amount=0;else amount=est[i][jj];
						if(!in_appropriate[amount])ids[id].push(i);
					}
				}
				break;
			case 'minrooms':
				if(v>0)
				{					var i2='max'+i.substr(3);
					var in_appropriate=[];
					for(var j=0;j<4;j++)if((v>>j)%2)in_appropriate[j]=true;
					for(var j=0;j<passed_ids.length;j++)
					{
						var id=passed_ids[j];
						var jj=id2index[id];
						if(!(est[i][jj]>0&&(
							(in_appropriate[0]&&est[i2][jj]>=4)||(in_appropriate[1]&&est[i][jj]<=1&&est[i2][jj]>=1)||(in_appropriate[2]&&est[i][jj]<=2&&est[i2][jj]>=2)||(in_appropriate[3]&&est[i][jj]<=3&&est[i2][jj]>=3)
						)))ids[id].push(i);
					}
				}
				break;
			case 'location':
				if(v!='')
				{					var coords=map_getFilterBounds(),earthWidth=map_getEarthWidth();
					for(var j=0;j<passed_ids.length;j++)
					{
						var id=passed_ids[j];
						var jj=id2index[id];
						var cur=map.fromLatLngToDivPixel(new GLatLng(est[i][jj][0],est[i][jj][1]));
						if(!(cur.y>=coords[0].y&&cur.y<=coords[1].y&&isingap_shifted(cur.x,coords[1].x,coords[0].x,earthWidth)))
							ids[id].push(i);
					}
				}
				break;
		}

		var passed_ids_2=[],max_allowed=withSliders_in[i]?1:0;
  		for(var j=0;j<passed_ids.length;j++)
  		{  			var id=passed_ids[j];  			if(ids[id].length<=max_allowed)passed_ids_2.push(id);
  		}
  		passed_ids=passed_ids_2;
	}

	var passed_ids_in=[];
	for(var i=0;i<passed_ids.length;i++)passed_ids_in[passed_ids[i]]=true;

	for(var i in processSlider)
	{		var min=-1,max=-1;
		var i2=(i.indexOf('min')==0)?'max'+i.substr(3):false;		for(var j=0;j<est['sq_num_id'].length;j++)if(est[i][j]>0)
		{
			var id=est['sq_num_id'][j];
			if(passed_ids_in[id]&&(ids[id].length==0||ids[id][0]==i))
			{				if(min==-1||min>est[i][j])min=est[i][j];
				if(i2)
				{
					if(max<est[i2][j])max=est[i2][j];
				}else
					if(max<est[i][j])max=est[i][j];
			}
		}
		sliders_minmax[i]=[min,max];
	}
	est_correct_sliders(true);

	if(est['sq_num_id'].length>0)
	{
		var trs=document.getElementById('itable').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
		var cnt=0;
		for(var i=0;i<trs.length;i++)
		{			var id=parseInt(trs[i].id.substr(5));			if(ids[id].length==0)
			{				trs[i].style.display='';
				markers[marker_indices[id]].show();
				cnt++;
			}else
			{				trs[i].style.display='none';
				markers[marker_indices[id]].closeInfoWindow();
				markers[marker_indices[id]].hide();
			}
		}
	}
	if(cnt>0)
	{		document.getElementById('estate_none').style.display='none';
		document.getElementById('found_cnt').innerHTML='<b>'+cnt+'</b>&nbsp;'+wordForm('propositions',cnt,true);
		document.getElementById('found_cnt_p').style.display='';
		document.getElementById('itable').style.display='';
	}else
	{		document.getElementById('itable').style.display='none';
		document.getElementById('found_cnt_p').style.display='none';
		document.getElementById('estate_none').style.display='block';
	}
	est_defade();
	correctIE();
	sq_free('est_filter');
}

function est_setLoaded()
{	document.getElementById('est_container').style.visibility='visible';
	est_loaded=true;
}

function est_setFilter(field,value,immediate,skipFiltering)
{	if(field!='type'&&field!='metro1'&&field!='location')value=parseFloat(value);
	if((typeof value=='number'&&isNaN(value))||value==0||value=='0')setcookie_storage(est_part+"_"+field,'',-1);
	else setcookie_storage(est_part+"_"+field,value,cookie_lifetime);	filter[field]=value;
	if(immediate)
	{		if(!skipFiltering)est_filter();
	}else
	{		correctIE();
		if(!skipFiltering)sq_executeLast(est_filter,est_filter_timeout,'est_filter');
	}
}

function correctIE()
{	if(isIE6)
	{		document.getElementById('super').style.width='99%';
		document.getElementById('super').style.width='100%';		setProperSizesIE();
	}
}

function est_setCategory(id)
{
	var d=document.getElementById('est_category_'+id);
	var ds=sq_getElementsByClassName('esttype c0',d.parentNode);
	if(ds[0])sq_removeClass(ds[0],'c0');
	sq_addClass(d,'c0');
	est_setFilter('category',id,true);
}

function est_situationChange(id)
{	var idToName=['','moscow','suburb','region'],cls='c_'+idToName[id];
	var toHide=sq_getElementsByClassName('c_hide',document.getElementById('filter'));
	for(var i=0;i<toHide.length;i++)
	if(id==0||!sq_hasClass(toHide[i],cls))
		toHide[i].style.display='none';
	else toHide[i].style.display='';
}

function est_setSituation(id)
{
	var d=document.getElementById('est_situation_'+id);
	var ds=sq_getElementsByClassName('esttype c0',d.parentNode);
	if(ds[0])sq_removeClass(ds[0],'c0');
	sq_addClass(d,'c0');
	est_situationChange(id);
	est_setFilter('situation',id,true);
}

function est_setDistrict(el)
{
	est_setFilter('district',el.options[el.selectedIndex].value,true);
}

function est_setDirection(el)
{	est_setFilter('direction',el.options[el.selectedIndex].value,true);
}

function est_setRegion(el)
{
	est_setFilter('region',el.options[el.selectedIndex].value,true);
}

function est_setRoad(el,skipFiltering)
{
	est_setFilter('road',el.options[el.selectedIndex].value,true,skipFiltering);
}

function est_setDplace(el,skipFiltering)
{	est_setFilter('dplace',el.options[el.selectedIndex].value,true,skipFiltering);
}

function est_setRplace(el,skipFiltering)
{
	est_setFilter('rplace',el.options[el.selectedIndex].value,true,skipFiltering);
}

function est_setPExtra(field)
{	var sel=document.getElementById('est_'+field+'_order');	var order=parseInt(sel.options[sel.selectedIndex].value),currency=0;
	for(var i=1;i<3;i++)if(document.getElementById('est_'+field+'_'+i).checked)
	{		currency=i;
		break;
	}
	var v=currency*10+order;

	var scale=1;
	for(var j=0;j<order;j++)scale*=1000;
	scale*=crates[currency];
	slider_setScale(field,scale,crates[currency]);

	var v0=filter[field+'0'],v1=filter[field+'1'];
	slider_left_setValue(field,v0?v0:0);
	slider_right_setValue(field,v1>=0?v1:-1);

	est_setFilter(field+'_e',v);
}


function popup_close_over(el)
{
	el.style.background="url('/images/ptv_close-a.png')";
}

function popup_close_out(el)
{
	el.style.background="url('/images/ptv_close.png')";
}

popup_beforeClose=false;
function popup_close()
{	if(popup_beforeClose)
	{		popup_beforeClose();
		popup_beforeClose=false;	}
	sq_removeEvent('keydown',popup_key);
	sq_removeElement(document.getElementById('popup'));
	sq_removeElement(document.getElementById('popup_bg'));
	if(isIE6)ie_showSelects();
}

function popup_key(e)
{
	e=e||window.event;
	var k=e.keyCode?e.keyCode:e.which?e.which:null;
	if(k==27)popup_close();
}

function popup_correct_bg()
{	var bg=document.getElementById('popup_bg'),sup=document.getElementById('super'),div=document.getElementById('popup');	bg.style.height=Math.max(sup.offsetHeight,sq_getTop(div)+div.offsetHeight+40)+'px';
}

function est_metro_fitness(columns,bcnt)
{	var max=0;
	for(var i=0;i<columns.length;i++)
	{		var cur=0;
		for(var j=0;j<columns[i].length;j++)cur+=bcnt[columns[i][j]];
		cur+=columns[i].length*2; // Captions + margins
		max=Math.max(max,cur);
	}
	return max;
}

function est_metro_switchList(el,short,full)
{	if(metro_shortList)
	{		el.innerHTML=short;
		document.getElementById('metro_branches2').style.display='none';
		document.getElementById('metro_branches').style.display='block';
	}else
	{		el.innerHTML=full;
		document.getElementById('metro_branches').style.display='none';
		document.getElementById('metro_branches2').style.display='block';
	}
	metro_shortList=!metro_shortList;
	popup_correct_bg();
	est_metro_search(document.getElementById('est_metro_search').value,true);
}

function preg_quote(str)
{
    // Quote regular expression characters plus an optional character
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/preg_quote
    // +   original by: booeyOH
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, '\\$1');
}

function metro_count_makePadding()
{	var inp=document.getElementById('est_metro_search'),sp=document.getElementById('metro_search_count');
	var padding=sp.offsetWidth;
	inp.style.paddingRight=padding+'px';
	inp.style.width=(161-padding)+'px';
}

var metro_shortList;

function est_metro_click(caption,search,ok,cancel,short,full,noStations,next,prev,from)
{	if(isIE6)ie_hideSelects();

	est_metro_search_bs=[];
	var metro_used=new Array();
	for(var i=1;i<=5;i++)if(est['metro'+i])for(var j=0;j<est['metro'+i].length;j++)metro_used[est['metro'+i][j]]=true;

	var filter_metro=filter['metro1'].split(","),filter_metro_in=new Array();
	if(filter['metro1']!='')
		for(var i=0;i<filter_metro.length;i++)filter_metro_in[filter_metro[i]]=true;
	var div=document.createElement('div'),sup=document.getElementById('super');

	var bg=document.createElement('div');
	bg.id='popup_bg';
	bg.className='popup_bg';
	sup.appendChild(bg);

	var winWidth=860;
	var lft=Math.floor((sup.offsetWidth-(winWidth+60))/2);
    div.id='popup';
    div.className='popup';

	popup_beforeClose=function(){sq_removeEvent('scroll',metro_search_check,window);}

    div.style.width=winWidth+'px';
    div.style.left=lft+'px';
    div.style.top='36px';
    var s='<div class="c_t"></div><div class="c_b"></div><div class="c_l"></div><div class="c_r"></div><div class="c_tl"></div><div class="c_tr"></div><div class="c_bl"></div><div class="c_br"></div><div class="c_close" onmouseover="popup_close_over(this)" onmouseout="popup_close_out(this)" onclick="popup_close()"></div>';
	s+='<p class="metro_caption"><img src="/images/subway.png" alt="" />'+caption+'</p>';
	s+='<p class="metro_control"><span class="c_supercontainer c0 c_hide_arrows" id="est_metro_search_scontainer"><label for="est_metro_search">'+search+': </label><span class="c_container"><input type="text" value="" id="est_metro_search" onkeyup="est_metro_search(this.value)" onfocus="est_metro_search_focused=true;metro_search_check()" onblur="est_metro_search_focused=false;metro_search_check()" /><span class="c_count" id="metro_search_count" onclick="document.getElementById(\'est_metro_search\').focus()"><span id="metro_search_span_cur">0</span> '+from+' <span id="metro_search_span_total">0</span></span></span><span class="c_ms_next" id="ms_next" onmouseover="metro_next_over(this)" onmouseout="metro_next_out(this)" onmousedown="metro_next_down(this,event)" onmouseup="metro_next_up(this)" onclick="metro_next_click(event)"></span><span class="c_ms_prev" onmouseover="metro_prev_over(this)" onmouseout="metro_prev_out(this)" onmousedown="metro_prev_down(this,event)" onmouseup="metro_prev_up(this)" onclick="metro_prev_click(event)"></span><a class="c_ms_close" href="#" onclick="est_metro_search_close();return false">&times;</a></span><input type="text" value="" class="c_aux" /><a class="c_list" href="#" onclick="est_metro_switchList(this,\''+short+'\',\''+full+'\');return false">'+full+'</a></p>';

	s+='<div id="metro_search_window" class="metro_search_window popup" style="left:'+(lft+18)+'px;display:none">';
	s+='<div class="c_t"></div><div class="c_b"></div><div class="c_l"></div><div class="c_r"></div><div class="c_tl"></div><div class="c_tr"></div><div class="c_bl"></div><div class="c_br"></div>';
	s+='<p><label for="est_metro_search">'+search+': </label><input type="text" value="" /><span class="c_ms_next"></span><span class="c_ms_prev"></span><a class="c_ms_close" href="#">&times;</a></p>';
	s+='</div>';

	metro_shortList=true;

	var keys=[]; // est_branches keys — needed for preserving same order of keys in different browsers
	for(var i in est_branches)keys.push(i);
	keys.sort();
// Full list

	s+='<div class="metro_branches" id="metro_branches" style="display: none">';

	var bcnt=new Array(),branches=new Array();
	for(var ind=0;ind<keys.length;ind++)
	{
		var i=keys[ind];		branches.push(i);		bcnt[i]=0;
		for(var j=0;j<est_metro.length;j++)for(var k=0;k<est_metro_branches[j].length;k++)if(est_metro_branches[j][k]==i)
		{
			bcnt[i]++;
			break;
		}
	}

	var colcnt=4,columns=new Array();
	for(var i=0;i<colcnt;i++)columns[i]=[];
	var cnt=0;
	for(var ind=0;ind<keys.length;ind++)
	{		var i=keys[ind];		columns[cnt%colcnt].push(i);		cnt++;
	}

	var b=true;
	while(b)
	{		b=false;
		var fitness=est_metro_fitness(columns,bcnt);		for(var i=0;i<colcnt-1;i++)for(var j=i+1;j<colcnt;j++)for(var k=0;k<columns[i].length;k++)for(var l=0;l<columns[j].length;l++)
		{			var t=columns[i][k];
			columns[i][k]=columns[j][l];
			columns[j][l]=t;
			var cfitness=est_metro_fitness(columns,bcnt);
			if(cfitness<fitness)
			{				b=true;
				fitness=cfitness;
			}else
			{				t=columns[i][k];
				columns[i][k]=columns[j][l];
				columns[j][l]=t;
			}
		}

		for(var i=0;i<colcnt-2;i++)for(var j=i+1;j<colcnt-1;j++)for(var ii=i+2;ii<colcnt;ii++)for(var k=0;k<columns[i].length;k++)for(var l=0;l<columns[j].length;l++)for(var kk=0;kk<columns[ii].length;kk++)
		{
			var t=columns[i][k];
			columns[i][k]=columns[j][l];
			columns[j][l]=columns[ii][kk];
			columns[ii][kk]=t;
			var cfitness=est_metro_fitness(columns,bcnt);
			if(cfitness<fitness)
			{
				b=true;
				fitness=cfitness;
			}else
			{
				t=columns[i][k];
				columns[i][k]=columns[j][l];
				columns[j][l]=columns[ii][kk];
				columns[ii][kk]=t;
				cfitness=est_metro_fitness(columns,bcnt);
				if(cfitness<fitness)
				{
					b=true;
					fitness=cfitness;
				}else
				{					t=columns[i][k];
					columns[i][k]=columns[j][l];
					columns[j][l]=columns[ii][kk];
					columns[ii][kk]=t;
				}
			}
		}

	}

	for(var col=0;col<colcnt;col++)
	{		s+='<div class="c0">';
		for(var kk=0;kk<columns[col].length;kk++)
		{
			var i=columns[col][kk];			s+='<p class="c0" style="color:'+est_branches[i][2]+'">'+est_branches[i][0]+'</p>'
			for(var j=0;j<est_metro.length;j++)for(var k=0;k<est_metro_branches[j].length;k++)if(est_metro_branches[j][k]==i)
			{				s+='<p'+(metro_used[est_metro[j][1]]?'':' class="c_gray"')+'><input onclick="document.getElementById(\'metro2_'+i+'_'+j+'\').checked=this.checked" class="c_'+est_metro[j][1]+'" type="checkbox" id="metro_'+i+'_'+j+'"'+(filter_metro_in[est_metro[j][1]]?' checked="checked"':'')+' /><label for="metro_'+i+'_'+j+'"> <span>'+est_metro[j][0]+'</span></label></p>';
				break;
			}
		}
		s+='</div>';
	}
	s+='<div class="clear"></div>';
	s+='</div>';

// Short list

	s+='<div class="metro_branches" id="metro_branches2">';

	var bcnt=new Array(),branches=new Array();
	for(var ind=0;ind<keys.length;ind++)
	{		var i=keys[ind];
		branches.push(i);
		bcnt[i]=0;
		for(var j=0;j<est_metro.length;j++)if(metro_used[est_metro[j][1]])for(var k=0;k<est_metro_branches[j].length;k++)if(est_metro_branches[j][k]==i)
		{
			bcnt[i]++;
			break;
		}
		if(bcnt[i]==0)bcnt[i]=2;  // Depends on length of noStations
	}

	var colcnt=4,columns=new Array();
	for(var i=0;i<colcnt;i++)columns[i]=[];
	var cnt=0;
	for(var ind=0;ind<keys.length;ind++)
	{		var i=keys[ind];		columns[cnt%colcnt].push(i);
		cnt++;
	}

	var b=true;
	while(b)
	{
		b=false;
		var fitness=est_metro_fitness(columns,bcnt);
		for(var i=0;i<colcnt-1;i++)for(var j=i+1;j<colcnt;j++)for(var k=0;k<columns[i].length;k++)for(var l=0;l<columns[j].length;l++)
		{
			var t=columns[i][k];
			columns[i][k]=columns[j][l];
			columns[j][l]=t;
			var cfitness=est_metro_fitness(columns,bcnt);
			if(cfitness<fitness)
			{
				b=true;
				fitness=cfitness;
			}else
			{
				t=columns[i][k];
				columns[i][k]=columns[j][l];
				columns[j][l]=t;
			}
		}

		for(var i=0;i<colcnt-2;i++)for(var j=i+1;j<colcnt-1;j++)for(var ii=i+2;ii<colcnt;ii++)for(var k=0;k<columns[i].length;k++)for(var l=0;l<columns[j].length;l++)for(var kk=0;kk<columns[ii].length;kk++)
		{
			var t=columns[i][k];
			columns[i][k]=columns[j][l];
			columns[j][l]=columns[ii][kk];
			columns[ii][kk]=t;
			var cfitness=est_metro_fitness(columns,bcnt);
			if(cfitness<fitness)
			{
				b=true;
				fitness=cfitness;
			}else
			{
				t=columns[i][k];
				columns[i][k]=columns[j][l];
				columns[j][l]=columns[ii][kk];
				columns[ii][kk]=t;
				cfitness=est_metro_fitness(columns,bcnt);
				if(cfitness<fitness)
				{
					b=true;
					fitness=cfitness;
				}else
				{
					t=columns[i][k];
					columns[i][k]=columns[j][l];
					columns[j][l]=columns[ii][kk];
					columns[ii][kk]=t;
				}
			}
		}

	}

	for(var col=0;col<colcnt;col++)
	{
		s+='<div class="c0">';
		for(var kk=0;kk<columns[col].length;kk++)
		{
			var i=columns[col][kk];
			s+='<p class="c0" style="color:'+est_branches[i][2]+'">'+est_branches[i][0]+'</p>';
			var atLeastOne=false;
			for(var j=0;j<est_metro.length;j++)if(metro_used[est_metro[j][1]])for(var k=0;k<est_metro_branches[j].length;k++)if(est_metro_branches[j][k]==i)
			{
				s+='<p><input onclick="document.getElementById(\'metro_'+i+'_'+j+'\').checked=this.checked" class="c_'+est_metro[j][1]+'" type="checkbox" id="metro2_'+i+'_'+j+'"'+(filter_metro_in[est_metro[j][1]]?' checked="checked"':'')+' /><label for="metro2_'+i+'_'+j+'"> <span>'+est_metro[j][0]+'</span></label></p>';
				atLeastOne=true;
				break;
			}
			if(!atLeastOne)s+='<p class="c_none">'+noStations+'</p>';
		}
		s+='</div>';
	}
	s+='<div class="clear"></div>';
	s+='</div>';



	s+='<p class="metro_bottom"><input type="button" value="'+ok+'" onclick="est_metro_ok()" /><a href="#" onclick="popup_close();return false">'+cancel+'</a>';
	div.innerHTML=s;
	sup.appendChild(div);

	est_metro_search_top=sq_getTop(document.getElementById('est_metro_search'));

	metro_count_makePadding();

	popup_correct_bg();

	est_metro_search_active=false;
	est_metro_search_focused=true;

	window.scroll(getScrollLeft(),0);

	sq_addEvent('scroll',metro_search_check,window);

	document.getElementById('est_metro_search').focus();
	sq_addEvent('keydown',popup_key);
}

var est_metro_search_topMargin=6; // CSS-dependent

function metro_search_check()
{	var shouldBeActive=(est_metro_search_focused||est_metro_search_text!='')&&(est_metro_search_top-getScrollTop()<=est_metro_search_topMargin);
	if(shouldBeActive&&!est_metro_search_active)
	{		est_metro_search_active=true;		var sp=document.getElementById('est_metro_search_scontainer');		document.getElementById('metro_search_window').style.display='block';		sp.style.left=sq_getLeft(sp)+'px';
		sq_addClass(sp,'c_ms_inwindow');
	}else if(!shouldBeActive&&est_metro_search_active)
	{		est_metro_search_active=false;		var sp=document.getElementById('est_metro_search_scontainer');		sp.style.left='auto';
		sq_removeClass(sp,'c_ms_inwindow');
		document.getElementById('metro_search_window').style.display='none';
	}
}

function metro_better_search(s)
{	return s.replace(/(е|ё)/gi,"(е|ё)").replace(/( | |&nbsp;)/gi,"( | |&nbsp;)");
}

var est_metro_search_text='',est_metro_search_bs=[],est_metro_search_cur,est_metro_search_active,est_metro_search_focused,est_metro_search_top;
function est_metro_search(v,doAnyway)
{	v=sq_trim(v);
	if(est_metro_search_text==v&&!doAnyway)return;

	var scontainer=document.getElementById('est_metro_search_scontainer');
	if(est_metro_search_text==''&&v!='')
		sq_removeClass(scontainer,'c0');
	else if(est_metro_search_text!=''&&v=='')
		sq_addClass(scontainer,'c0');
	est_metro_search_text=v;

	var list=document.getElementById('metro_branches'+(metro_shortList?'2':''));
	var d=list.getElementsByTagName('span');
	for(var i=0;i<d.length;i++)
	{
		d[i].innerHTML=d[i].innerHTML.replace(/<\/?b>/gi,'');
		if(v!='')d[i].innerHTML=d[i].innerHTML.replace(new RegExp('('+metro_better_search(preg_quote(v))+')','i'),"<b>$1</b>");
	}

	est_metro_search_cur=0;
	var bs=list.getElementsByTagName('b'),bs2=new Array();
	for(var i=0;i<bs.length;i++)bs2.push([bs[i],sq_getTop(bs[i]),sq_getLeft(bs[i])]);
	bs2=bs2.sort(function(a,b){if(a[1]==b[1])return a[2]-b[2];else return a[1]-b[1];});
	est_metro_search_bs=[];
	for(var i=0;i<bs2.length;i++)est_metro_search_bs.push(bs2[i][0]);
	document.getElementById('metro_search_span_cur').innerHTML='0';
	document.getElementById('metro_search_span_total').innerHTML=est_metro_search_bs.length;
	metro_count_makePadding();

	if(est_metro_search_bs.length>0&&sq_hasClass(scontainer,'c_hide_arrows'))
		sq_removeClass(scontainer,'c_hide_arrows');
	else if(est_metro_search_bs.length==0&&!sq_hasClass(scontainer,'c_hide_arrows'))
		sq_addClass(scontainer,'c_hide_arrows');

	if(!isIE6&&!isIE7&&est_metro_search_bs.length>0)document.getElementById('ms_next').onclick();
}

function est_metro_search_close()
{	document.getElementById('est_metro_search').value='';
	est_metro_search('');
}

function getScrollLeft()
{
    if(typeof pageXOffset!='undefined')return pageXOffset;else
    {
        var B=document.body;
        var D=document.documentElement;
        D=(D.clientHeight)?D:B;
        return D.scrollLeft;
    }
}

function getScrollTop()
{
    if(typeof pageYOffset!='undefined')return pageYOffset;else
    {
        var B=document.body;
        var D=document.documentElement;
        D=(D.clientHeight)?D:B;
        return D.scrollTop;
    }
}

function getWindowHeight()
{	var windowHeight=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight;
	return windowHeight;
}

function metro_next_over(el){el.style.background="url('/images/search/next-o.png')";}
function metro_next_out(el){el.style.background="url('/images/search/next.png')";}
function metro_next_down(el,e){sq_preventDefault(e);el.style.background="url('/images/search/next-a.png')";}
function metro_next_up(el){el.style.background="url('/images/search/next-o.png')";}

function metro_next_click(e)
{
	sq_preventDefault(e);
	if(est_metro_search_bs.length>0)
	{		if(est_metro_search_cur>0)			est_metro_search_bs[est_metro_search_cur-1].innerHTML=est_metro_search_bs[est_metro_search_cur-1].innerHTML.replace(/<\/?b>/gi,'');		est_metro_search_cur++;
		if(est_metro_search_cur>est_metro_search_bs.length)est_metro_search_cur=1;

		document.getElementById('metro_search_span_cur').innerHTML=est_metro_search_cur;
		metro_count_makePadding();

		est_metro_search_bs[est_metro_search_cur-1].innerHTML='<b>'+est_metro_search_bs[est_metro_search_cur-1].innerHTML+'</b>';
		var t=sq_getTop(est_metro_search_bs[est_metro_search_cur-1]),h=est_metro_search_bs[est_metro_search_cur-1].offsetHeight;
		var scrollTop=getScrollTop(),scrollLeft=getScrollLeft(),windowHeight=getWindowHeight();
		if(scrollTop+50>t||scrollTop+windowHeight<t+h)
			window.scroll(scrollLeft,Math.max(est_metro_search_top-est_metro_search_topMargin,Math.floor(t-(windowHeight-h)/2)));	}
}

function metro_prev_over(el){el.style.background="url('/images/search/prev-o.png')";}
function metro_prev_out(el){el.style.background="url('/images/search/prev.png')";}
function metro_prev_down(el,e){sq_preventDefault(e);el.style.background="url('/images/search/prev-a.png')";}
function metro_prev_up(el){el.style.background="url('/images/search/prev-o.png')";}

function metro_prev_click(e)
{
	sq_preventDefault(e);
	if(est_metro_search_bs.length>0)
	{
		if(est_metro_search_cur>0)
			est_metro_search_bs[est_metro_search_cur-1].innerHTML=est_metro_search_bs[est_metro_search_cur-1].innerHTML.replace(/<\/?b>/gi,'');
		est_metro_search_cur--;
		if(est_metro_search_cur<=0)est_metro_search_cur=est_metro_search_bs.length;

		document.getElementById('metro_search_span_cur').innerHTML=est_metro_search_cur;
		metro_count_makePadding();

		est_metro_search_bs[est_metro_search_cur-1].innerHTML='<b>'+est_metro_search_bs[est_metro_search_cur-1].innerHTML+'</b>';
		var t=sq_getTop(est_metro_search_bs[est_metro_search_cur-1]),h=est_metro_search_bs[est_metro_search_cur-1].offsetHeight;
		var scrollTop=getScrollTop(),scrollLeft=getScrollLeft(),windowHeight=getWindowHeight();
		if(scrollTop+50>t||scrollTop+windowHeight<t+h)
			window.scroll(scrollLeft,Math.max(est_metro_search_top-est_metro_search_topMargin,Math.floor(t-(windowHeight-h)/2)));
	}
}


function est_getMetro(id)
{	id=parseInt(id);	for(var i=0;i<est_metro.length;i++)if(est_metro[i][1]==id)return i;
	return -1;
}

function est_metro_ok()
{	var metro=new Array(),s='';
	var inps=document.getElementById('metro_branches').getElementsByTagName('input');
	for(var i=0;i<inps.length;i++)if(inps[i].checked)metro[inps[i].className.substr(2)]=true;
	for(var i in metro)s+=','+i;
	if(s.length>0)s=s.substr(1);	popup_close();
	est_metro_set(s);
	est_setFilter('metro1',s,true);
}

function est_metro_set(fs)
{	var metro=fs.split(",");
	if(fs=='')metro=[];

	if(metro.length==0)
	{		document.getElementById('est_metro_list').style.display='none';
		document.getElementById('est_metro').style.display='inline';
	}else
	{		var d=document.getElementById('est_metro_list');
		var s='<p>';
		for(var i=0;i<metro.length;i++)
		{			if(i>0)s+='<br />';			var m=est_getMetro(metro[i]);
			var img_cnt=0;			for(var j=0;j<est_metro_branches[m].length;j++)if(est_branches[est_metro_branches[m][j]][1])
			{				s+='<img src="'+est_branches[est_metro_branches[m][j]][1]+'" alt=""'+(img_cnt>0?' style="margin-left:2px"':'')+' />';
				img_cnt++;
			}
			s+=' '+est_metro[m][0]+' <a href="#" onclick="est_metro_remove('+metro[i]+');return false">&times;</a>';
		}
		s+='</p>';
		d.innerHTML=s;		document.getElementById('est_metro').style.display='none';
		d.style.display='block';
	}
}

function est_metro_remove(id)
{	id=id.toString();	var metro=filter['metro1'].split(','),metro2=new Array();
	for(var i=0;i<metro.length;i++)if(metro[i]!=id)metro2.push(metro[i]);
	var s=metro2.join(',');
	est_metro_set(s);
	est_setFilter('metro1',s,true);
}

function est_countries_click(all_selected)
{	if(isIE6)ie_hideSelects();

	var div=document.createElement('div'),sup=document.getElementById('super');

	var bg=document.createElement('div');
	bg.id='popup_bg';
	bg.className='popup_bg';
	sup.appendChild(bg);

    div.id='popup';
    div.className='popup';
    div.style.width='300px';
    var fdiv=document.getElementById('filter');
    div.style.left=(sq_getLeft(fdiv)+fdiv.offsetWidth-20)+'px'; //Math.floor((sup.offsetWidth-300)/2)+'px';
    div.style.top=sq_getTop(document.getElementById('est_scountry_a'))+'px';
    var s='<div class="c_t"></div><div class="c_b"></div><div class="c_l"></div><div class="c_r"></div><div class="c_tl"></div><div class="c_tr"></div><div class="c_bl"></div><div class="c_br"></div><div class="c_close" onmouseover="popup_close_over(this)" onmouseout="popup_close_out(this)" onclick="popup_close()"></div>';

    s+='<div class="popup_list">';
    cnt=0;
    for(var i=0;i<est_countries.length;i++)if(est_countries[i][1]!=filter['scountry'])
    {    	s+='<p><a href="#" onclick="est_countries_select('+est_countries[i][1]+');return false">'+(est_countries[i][2]?'<img src="'+est_countries[i][2]+'" alt="" />':'')+est_countries[i][0]+'</a></p>';
    	cnt++;
    }
    if(cnt==0)s+='<p>'+all_selected+'</p>';
    s+='</div>';

	div.innerHTML=s;
	sup.appendChild(div);

	popup_correct_bg();

	sq_addEvent('keydown',popup_key);
}

function est_countries_select(id)
{	filter['scountry']=id;
	popup_close();
	est_set('scountry');
	est_setFilter('scountry',id,true);
}

function est_getCountry(id)
{	id=parseInt(id);
	for(var i=0;i<est_countries.length;i++)if(est_countries[i][1]==id)return i;
	return -1;
}

function est_types_click(all_selected)
{
	if(isIE6)ie_hideSelects();

	var filter_types=filter['type'].split(","),filter_types_in=new Array();
	if(filter['type']!='')
		for(var i=0;i<filter_types.length;i++)filter_types_in[filter_types[i]]=true;

	var div=document.createElement('div'),sup=document.getElementById('super');

	var bg=document.createElement('div');
	bg.id='popup_bg';
	bg.className='popup_bg';
	sup.appendChild(bg);

    div.id='popup';
    div.className='popup';
    div.style.width='300px';
    var fdiv=document.getElementById('filter');
    div.style.left=(sq_getLeft(fdiv)+fdiv.offsetWidth-20)+'px'; //Math.floor((sup.offsetWidth-300)/2)+'px';
    div.style.top=sq_getTop(document.getElementById('est_types_a'))+'px';
    var s='<div class="c_t"></div><div class="c_b"></div><div class="c_l"></div><div class="c_r"></div><div class="c_tl"></div><div class="c_tr"></div><div class="c_bl"></div><div class="c_br"></div><div class="c_close" onmouseover="popup_close_over(this)" onmouseout="popup_close_out(this)" onclick="popup_close()"></div>';

    s+='<div class="popup_list">';
    cnt=0;
    for(var i=0;i<est_types.length;i++)if(!filter_types_in[est_types[i][1]])
    {
    	s+='<p><a href="#" onclick="est_types_select('+est_types[i][1]+');return false">'+(est_types[i][2]?'<img src="'+est_types[i][2]+'" alt="" />':'')+est_types[i][0]+'</a></p>';
    	cnt++;
    }
    if(cnt==0)s+='<p>'+all_selected+'</p>';
    s+='</div>';

	div.innerHTML=s;
	sup.appendChild(div);

	popup_correct_bg();

	sq_addEvent('keydown',popup_key);
}

function est_types_select(id)
{
	var s=filter['type'];
	if(s=='')s=id.toString();else s+=','+id.toString();
	popup_close();
	est_types_set(s);
	est_setFilter('type',s,true);
}

function est_getType(id)
{
	id=parseInt(id);
	for(var i=0;i<est_types.length;i++)if(est_types[i][1]==id)return i;
	return -1;
}

function est_types_set(fs)
{
	var types=fs.split(",");
	if(fs=='')types=[];

	if(types.length==0)
	{
		document.getElementById('est_types_list').style.display='none';
		document.getElementById('est_types').style.display='inline';
	}else
	{
		var d=document.getElementById('est_types_list');
		var s='<p>';
		for(var i=0;i<types.length;i++)
		{
			if(i>0)s+='<br />';
			var m=est_getType(types[i]);
			if(est_types[m][2])
				s+='<img src="'+est_types[m][2]+'" alt="" />';
			s+=' '+est_types[m][0]+'&nbsp;<a href="#" onclick="est_types_remove('+types[i]+');return false">&times;</a>';
		}
		s+='</p>';
		d.innerHTML=s;
		document.getElementById('est_types').style.display='none';
		d.style.display='block';
	}
}

function est_types_remove(id)
{
	id=id.toString();
	var types=filter['type'].split(','),types2=new Array();
	for(var i=0;i<types.length;i++)if(types[i]!=id)types2.push(types[i]);
	var s=types2.join(',');
	est_types_set(s);
	est_setFilter('type',s,true);
}

function est_par_click(par,el)
{	est_correct_sliders(true);	if(!el.sq_opened)
	{		el.sq_opened=true;		el.className='c0';
		document.getElementById('est_'+par+'_span').style.display='none';
		var d=document.getElementById('est_'+par+'_div'),inps=d.getElementsByTagName('input');
		d.style.display='block';
		if(!sq_hold('est_clear_filter',true)&&inps[0])
		{			inps[0].select();
			inps[0].focus();
		}
	}else
	{		el.sq_opened=false;		est_set(par);		document.getElementById('est_'+par+'_div').style.display='none';		document.getElementById('est_'+par+'_span').style.display='';
		el.className='';
	}
	correctIE();
}

function est_setClose(field)
{	switch(field)
	{
		case 'mdistance1':
            document.getElementById('est_'+field+'_close').style.display=(sq_trim(document.getElementById('est_'+field+'_field').value)=='')?'none':'inline';
			break;
		case 'cdistance':
		case 'area':
		case 'minarea':
		case 'tarea':
		case 'larea':
		case 'karea':
		case 'barea':
		case 'parea':
		case 'minparea':
		case 'floor':
		case 'floors':
		case 'aps':
		case 'price':
		case 'minprice':
		case 'mprice':
		case 'minmprice':
		case 'monthprice':
		case 'minmonthprice':
		case 'minyearmprice':
            document.getElementById('est_'+field+'_close').style.display=(sq_trim(document.getElementById('est_'+field+'_field0').value)==''&&sq_trim(document.getElementById('est_'+field+'_field1').value)=='')?'none':'inline';
            break;
  		case 'rooms':
  		case 'minrooms':
  			document.getElementById('est_'+field+'_close').style.display=(document.getElementById('est_'+field+'_0').checked||document.getElementById('est_'+field+'_1').checked||document.getElementById('est_'+field+'_2').checked||document.getElementById('est_'+field+'_3').checked)?'inline':'none';
			break;
	}
}

function est_integer(field,el,sliderMode,skipFiltering,immediate) // sliderMode: 0 — standard processing, 1 — omit processing, 2 — process sliders only
{
	sliderMode=sliderMode||0;	var v=parseInt(sq_trim(el.value));
	var lst=field.substr(field.length-1),field_=field.substr(0,field.length-1);

	if(field=='mdistance1')
	{		lst='';
		field_='mdistance1';
	}

	if(sliderMode!=1)
	{
		if(lst=='0'&&filter[field_+'1']>-1&&filter[field_+'1']<v)v=filter[field_+'1'];
		if(lst=='1'&&filter[field_+'0']>0&&filter[field_+'0']>v)v=filter[field_+'0'];
		if(lst=='0')slider_left_setValue(field_,v?v:0);
		if(lst=='1')slider_right_setValue(field_,v>=0?v:-1);
	}

	est_setClose(field_);

	if(sliderMode!=2)est_setFilter(field,v,immediate,skipFiltering);
}

function est_get_units(par)
{	var s;	switch(par)
	{		case 'price':
		case 'minprice':
		case 'mprice':
		case 'minmprice':
		case 'monthprice':
		case 'minmonthprice':
		case 'minyearmprice':
			var ord=document.getElementById('est_'+par+'_order')			s=ord.options[ord.selectedIndex].text;
			if(s==' '||s==' '||s=='&nbsp;')s='';
			for(var i=0;i<3;i++)if(document.getElementById('est_'+par+'_'+i).checked)
			{				s+=document.getElementById('est_'+par+'_currency_'+i).innerHTML;
				break;
			}
			break;
		default:
			s=document.getElementById('est_'+par+'_units').innerHTML;
			break;
	}
	if(s=='')return '';else return '&nbsp;'+s;
}

var est_curCountry=0;
var est_pars_any=new Array();
function est_set(par)
{	var sp=document.getElementById('est_'+par+'_span');	if(!est_pars_any[par])est_pars_any[par]=sp.innerHTML;

	var close='<span id="est_'+par+'_close2" class="est_close2">&nbsp;<a href="#" onclick="est_close2(\''+par+'\');return false">&times;</a></span>';

	switch(par)
	{		case 'scountry':
			var v=filter[par],s='';
			var id=v;
			if(v>0)
			{				v=est_getCountry(filter[par]);
				if(v>-1)s=est_countries[v][0];else id=0;
			}
			if(id>0)sp.innerHTML=s+close;else sp.innerHTML=est_pars_any[par];
			if(est_curCountry>0)document.getElementById('est_country_'+est_curCountry).style.display='none';
			est_curCountry=id;
			if(est_curCountry>0)document.getElementById('est_country_'+est_curCountry).style.display='block';
			break;		case 'mdistance1':
			var v=parseInt(sq_trim(document.getElementById('est_'+par+'_field').value));
			if(v>0)sp.innerHTML=printInteger(v)+est_get_units(par)+close;else sp.innerHTML=est_pars_any[par];
			break;
		case 'cdistance':
		case 'area':
		case 'minarea':
		case 'tarea':
		case 'larea':
		case 'karea':
		case 'barea':
		case 'parea':
		case 'minparea':
		case 'floor':
		case 'floors':
		case 'aps':
		case 'price':
		case 'minprice':
		case 'mprice':
		case 'minmprice':
		case 'monthprice':
		case 'minmonthprice':
		case 'minyearmprice':
			var v0=parseInt(sq_trim(document.getElementById('est_'+par+'_field0').value));
			var v1=parseInt(sq_trim(document.getElementById('est_'+par+'_field1').value));
			if(v0>0&&v1>=0&&v0!=v1)sp.innerHTML='<span class="nobr">'+printInteger(v0)+'&mdash;'+printInteger(v1)+est_get_units(par)+close+'</span>';
			else if(v0>0&&v0==v1)sp.innerHTML=printInteger(v0)+est_get_units(par)+close;
			else if(v0>0)sp.innerHTML=units['from']+'&nbsp;'+printInteger(v0)+est_get_units(par)+close;
			else if(v1>=0)sp.innerHTML=units['to']+'&nbsp;'+printInteger(v1)+est_get_units(par)+close;
			else sp.innerHTML=est_pars_any[par];
			break;
		case 'rooms':
		case 'minrooms':
			var v=0;
			for(var i=0;i<4;i++)if(document.getElementById('est_'+par+'_'+i).checked)v+=1<<i;
			if(v>0)sp.innerHTML=units['cbo'][v-1]+close;
			else sp.innerHTML=est_pars_any[par];
			break;
	}
}

function est_ring(r)
{	est_setFilter('ring1',r,true);
}

function est_setChecks(field,immediate)
{	var v=0;
	for(var i=0;i<4;i++)if(document.getElementById('est_'+field+'_'+i).checked)v+=1<<i;
	est_setClose(field);	est_setFilter(field,v,immediate);
}

function printInteger(i)
{
	var sep='<i></i>';
	i=parseInt(i);
	var m='';
	if(i<0){m='&minus;'; i=-i;}
	i=String(i);
	if(i.length>=5)
	{
		var c=0,r="";
		for(var j=i.length-1;j>=0;j--)
		{
			if(c%3==0)if(c>0)r=sep+r;
			r=i.charAt(j)+r;
			c++;
		}
		return m+r;
	}else return m+i;
}

function numToMillions(v)
{	v=Math.round(v/100000);
	if(v%10==0)return Math.floor(v/10);
	else if(Math.floor(v/10).toString().length<3)return Math.floor(v/10)+units['decimal_point']+v%10;
	else return Math.round(v/10);
}

var slider_scales=new Array(),slider_visualScales=new Array();
function slider_setScale(field,scale,visualScale)
{	slider_scales[field]=scale;
	slider_visualScales[field]=visualScale;
	slider_mark(field);
}

function slider_mark(i)
{	var points=(Math.round(slider_vscaled(i,slider_value(i,1)))<10000?8:6);
	var slider=document.getElementById('slider_'+i);

	var marks=sq_getElementsByClassName('c_point',slider);
	for(var j=marks.length-1;j>=0;j--)sq_removeElement(marks[j]);

	for(var j=0;j<points;j++)
	{
		var point=document.createElement('div');
		point.className='c_point';
		point.style.left=Math.round(j*100/(points-1))+'%';
		point.style.height=((j==0||j==points-1)?10:4)+'px';

		var p=document.createElement('p');
		var v=Math.round(slider_vscaled(i,slider_value(i,Math.round(j*100/(points-1))/100))),vs;
		if(v>=10000&&v<100000)v=Math.round(v/100)*100;
		if(v>=100000&&v<1000000)v=Math.round(v/1000)*1000;
		if(v>=1000000&&v<10000000)v=Math.round(v/10000)*10000;
		if(v<1000000)vs=printInteger(v);else vs=numToMillions(v)+'&nbsp;'+units['million'];
		p.innerHTML='<span style="left:-'+Math.round(j*100/(points-1))+'%">'+vs+'</span>';

		point.appendChild(p);
		slider.appendChild(point);
	}
}

var sliders=new Array();
function est_init_sliders()
{	for(var i in sliders)
		slider_mark(i);
	sq_addEvent('resize',est_correct_sliders,window);
}

var ers_correct_sliders_width=0;
function est_correct_sliders(push)
{	var w=document.getElementById('super').offsetWidth;
	same_width=(w==ers_correct_sliders_width);
	if(!push&&same_width)return;
	ers_correct_sliders_width=w;
	for(var i in sliders)
	{		var slider=document.getElementById('slider_'+i);
		slider.parentNode.style.width=slider.style.width=(document.getElementById('filter').offsetWidth-48)+'px'; // CSS-dependent

		var slider_a=document.getElementById('slider_a_'+i),slider=document.getElementById('slider_'+i),min=sliders_minmax[i][0],max=sliders_minmax[i][1];
		slider_a.style.width='0px';
		slider_a.style.left='0px';
		if(min>-1)
		{
			var l=Math.round(slider_position(i,min)*parseInt(slider.style.width)),r=Math.round(slider_position(i,max)*parseInt(slider.style.width));
			slider_a.style.left=l+'px';
			slider_a.style.width=(r>l)?(r-l)+'px':'1px';
		}

		est_integer(i+'0',document.getElementById('est_'+i+'_field0'),2);
		est_integer(i+'1',document.getElementById('est_'+i+'_field1'),2);
	}
}

function slider_value(sname,spoint)
{	var n=sliders[sname].length;
	if(spoint>=1)return sliders[sname][n-1];	var spoint_left_ind=Math.floor(spoint*n)-1,spoint_left_w=1-(spoint*n-Math.floor(spoint*n)),spoint_left=(spoint_left_ind>=0)?sliders[sname][spoint_left_ind]:0;
	return spoint_left*spoint_left_w+sliders[sname][spoint_left_ind+1]*(1-spoint_left_w);
}

function slider_position(sname,svalue)
{
	var n=sliders[sname].length,l,r,m,lw,rw;
	if(svalue<0)return 0;else
	if(svalue<=sliders[sname][0])return svalue/(n*sliders[sname][0]);else
	if(svalue>=sliders[sname][n-1])return 1;else
	{		l=0; r=n-1;
		while(r-l>1)
		{			m=Math.round((l+r)/2);
			if(svalue<=sliders[sname][m])r=m;else l=m;
		}
		rw=(svalue-sliders[sname][l])/(sliders[sname][r]-sliders[sname][l]);
		lw=1-rw;
		return lw*(l+1)/n+rw*(r+1)/n;
	}

}

function slider_scaled(field,v)
{	if(slider_scales[field])return v/slider_scales[field];else return v;
}

function slider_vscaled(field,v)
{
	if(slider_visualScales[field])return v/slider_visualScales[field];else return v;
}

function slider_unscaled(field,v)
{
	if(slider_scales[field])return v*slider_scales[field];else return v;
}

var slider_m_start,slider_m_el,slider_m_extr,slider_m_width,slider_m_input,slider_m_field;

function slider_left(field,e)
{	sq_preventDefault(e);	var p=sq_getCursorPos(e);	var slider=document.getElementById('slider_'+field);
	slider_m_field=field;
	slider_m_el=sq_getElementsByClassName('c_left',slider)[0];
	slider_m_start=[p.x,slider_m_el.offsetLeft];	slider_m_width=slider.offsetWidth;
	slider_m_extr=sq_getElementsByClassName('c_right',slider)[0].offsetLeft;
	slider_m_input=document.getElementById('est_'+field+'_field0');	sq_addEvent('mouseup',slider_left_up);	sq_addEvent('mousemove',slider_left_move);
}

function slider_left_move(e)
{	sq_preventDefault(e);	var p=sq_getCursorPos(e);
	var px=p.x-slider_m_start[0]+slider_m_start[1];
	px=Math.max(px,0);
	px=Math.min(px,slider_m_extr);
	slider_left_set(slider_m_field,px+'px',slider_m_el);
	var v=Math.round(slider_scaled(slider_m_field,slider_value(slider_m_field,px/slider_m_width)));
	slider_m_input.value=(v>0)?v:'';
	est_integer(slider_m_field+'0',slider_m_input,1);
}

function slider_left_up()
{	sq_removeEvent('mouseup',slider_left_up);
	sq_removeEvent('mousemove',slider_left_move);
}

function slider_right(field,e)
{	sq_preventDefault(e);
	var p=sq_getCursorPos(e);
	var slider=document.getElementById('slider_'+field);
	slider_m_field=field;
	slider_m_el=sq_getElementsByClassName('c_right',slider)[0];
	slider_m_start=[p.x,slider_m_el.offsetLeft];
	slider_m_width=slider.offsetWidth;
	slider_m_extr=sq_getElementsByClassName('c_left',slider)[0].offsetLeft;
	slider_m_input=document.getElementById('est_'+field+'_field1');
	sq_addEvent('mouseup',slider_right_up);
	sq_addEvent('mousemove',slider_right_move);
}

function slider_right_move(e)
{	sq_preventDefault(e);
	var p=sq_getCursorPos(e);
	var px=p.x-slider_m_start[0]+slider_m_start[1];
	px=Math.min(px,slider_m_width);
	px=Math.max(px,slider_m_extr);
	slider_right_set(slider_m_field,px+'px',slider_m_el);
	var v=Math.round(slider_scaled(slider_m_field,slider_value(slider_m_field,px/slider_m_width)));
	slider_m_input.value=(v<Math.round(slider_scaled(slider_m_field,sliders[slider_m_field][sliders[slider_m_field].length-1])))?v:'';
	est_integer(slider_m_field+'1',slider_m_input,1);
}

function slider_right_up()
{
	sq_removeEvent('mouseup',slider_right_up);
	sq_removeEvent('mousemove',slider_right_move);
}

function slider_left_set(field,px,el)
{	if(!document.getElementById('slider_'+field))return;	if(typeof px=='number')px=Math.round(parseInt(document.getElementById('slider_'+field).style.width)*px)+'px';	if(!el)el=sq_getElementsByClassName('c_left',document.getElementById('slider_'+field))[0];
	el.style.left=px;
	var sa=document.getElementById('slider_a_'+field),sb=document.getElementById('slider_b_'+field),sc=document.getElementById('slider_c_'+field);
	{		var lft=parseInt(sq_getElementsByClassName('c_right',document.getElementById('slider_'+field))[0].style.left);
		if(isNaN(lft))return;
		sb.style.left=px;
		sb.style.width=(lft-parseInt(px))+'px';

		var scl=Math.max(parseInt(sa.style.left),parseInt(px)),scr=Math.min(parseInt(sa.style.left)+parseInt(sa.style.width),lft);
		if(scl>=scr)
		{			sc.style.width='0px';
			sc.style.left='0px';
		}else
		{			sc.style.left=scl+'px';
			sc.style.width=(scr-scl)+'px';
		}
	}
}

function slider_right_set(field,px,el)
{	if(!document.getElementById('slider_'+field))return;	if(typeof px=='number')px=Math.round(parseInt(document.getElementById('slider_'+field).style.width)*px)+'px';	if(!el)el=sq_getElementsByClassName('c_right',document.getElementById('slider_'+field))[0];
	el.style.left=px;
	var sa=document.getElementById('slider_a_'+field),sb=document.getElementById('slider_b_'+field),sc=document.getElementById('slider_c_'+field);
	{		var lft=parseInt(sq_getElementsByClassName('c_left',document.getElementById('slider_'+field))[0].style.left);
		if(isNaN(lft))return;
		sb.style.left=lft+'px';
		sb.style.width=(parseInt(px)-lft)+'px';

		var scl=Math.max(parseInt(sa.style.left),lft),scr=Math.min(parseInt(sa.style.left)+parseInt(sa.style.width),parseInt(px));
		if(scl>=scr)
		{			sc.style.width='0px';
			sc.style.left='0px';
		}else
		{			sc.style.left=scl+'px';
			sc.style.width=(scr-scl)+'px';
		}
	}
}

function slider_left_setValue(field,value)
{	if(!document.getElementById('slider_'+field))return;	var ol=sq_getElementsByClassName('c_left',document.getElementById('slider_'+field))[0].offsetLeft;
	var p=(Math.round(slider_scaled(field,slider_value(field,ol/document.getElementById('slider_'+field).offsetWidth)))==value)?ol+'px':slider_position(field,slider_unscaled(field,value));	slider_left_set(field,p);
}

function slider_right_setValue(field,value)
{	if(!document.getElementById('slider_'+field))return;
	var slider=sq_getElementsByClassName('c_right',document.getElementById('slider_'+field))[0];	var ol=slider.offsetLeft;
	if(value>=0)
	{		var p=(Math.round(slider_scaled(field,slider_value(field,ol/document.getElementById('slider_'+field).offsetWidth)))==value)?ol+'px':slider_position(field,slider_unscaled(field,value));
	}else
	{		var p=(ol<=slider.parentNode.offsetWidth&&Math.round(slider_scaled(field,slider_value(field,ol/document.getElementById('slider_'+field).offsetWidth)))==Math.round(slider_scaled(field,sliders[field][sliders[field].length-1])))?ol+'px':1;
	}
	slider_right_set(field,p);
}

function est_close(field)
{	switch(field)
	{		case 'scountry':
			filter['scountry']=0;
			est_set('scountry');
			est_setFilter('scountry',0,true);
			break;		case 'mdistance1':
            var f=document.getElementById('est_'+field+'_field');
            f.value='';
            var a=document.getElementById('est_'+field+'_a');
            a.onclick(); // Such a thing is needed for clearing filter
            est_integer(field,f,0,false,true);
			break;
		case 'cdistance':
		case 'area':
		case 'minarea':
		case 'tarea':
		case 'larea':
		case 'karea':
		case 'barea':
		case 'parea':
		case 'minparea':
		case 'floor':
		case 'floors':
		case 'aps':
		case 'price':
		case 'minprice':
		case 'mprice':
		case 'minmprice':
		case 'monthprice':
		case 'minmonthprice':
		case 'minyearmprice':
            var f0=document.getElementById('est_'+field+'_field0'),f1=document.getElementById('est_'+field+'_field1');
            f0.value=f1.value='';
            var a=document.getElementById('est_'+field+'_a');
            a.onclick();
            est_integer(field+'0',f0,0,true);
            est_integer(field+'1',f1,0,false,true);
			break;
		case 'rooms':
		case 'minrooms':
			for(var i=0;i<4;i++)document.getElementById('est_'+field+'_'+i).checked=false;
            var a=document.getElementById('est_'+field+'_a');
            a.onclick();
            est_setChecks(field,true);
			break;
	}
}

function est_close2(field)
{	document.getElementById('est_'+field+'_a').sq_opened=true;	est_close(field,true);
}

function ie_area_over(id)
{	if(isIE6||isIE7)
		document.getElementById(id).style.cursor='pointer';
}

function ie_area_out(id)
{
	if(isIE6||isIE7)
		document.getElementById(id).style.cursor='';
}

var swWidth=-1;
function est_mapSwitchAlign()
{	var sw=document.getElementById('map_switch');
	var cap=document.getElementById('caption_span');
	var parLeft=sq_getLeft(sw.parentNode);
	var swLeft=sq_getLeft(sw),swImgLeft=sq_getLeft(sw.getElementsByTagName('img')[0]);
	if(swWidth<0)swWidth=swLeft+sw.offsetWidth-swImgLeft;
	var lft=Math.floor((sq_getLeft(cap)+cap.offsetWidth+parLeft+sw.parentNode.offsetWidth-swWidth)/2-parLeft+swLeft-swImgLeft);
	if(isIE6||isIE7)lft-=100; // maybe CSS-dependent
	sw.style.left=lft+'px';
}

function est_map_getAppropriateHeight()
{	return Math.max(320,getWindowHeight()-sq_getTop(document.getElementById('est_info').parentNode)-16); // parentNode needed because sq_getTop(document.getElementById('est_info')) depends on whether the map div is shown
}

function est_map_switch(a,show,hide)
{	if(a.sq_shown)
	{		setcookie_storage(est_part+'_map_show',0,-1);		a.sq_shown=false;
		a.getElementsByTagName('span')[0].innerHTML=show;
		if(map_filter_opened)document.getElementById('est_map_switch_del').style.display='block';
		est_mapSwitchAlign();
		var mapdiv=document.getElementById('map');
		mapdiv.className='est_map est_map_c0';
	}else
	{		setcookie_storage(est_part+'_map_show',1,cookie_lifetime);		a.sq_shown=true;
		a.getElementsByTagName('span')[0].innerHTML=hide;
		if(map_filter_opened)document.getElementById('est_map_switch_del').style.display='none';
		est_mapSwitchAlign();
		var mapdiv=document.getElementById('map');
		mapdiv.className='est_map';
		mapdiv.style.height=est_map_getAppropriateHeight()+'px';
		map.checkResize();
		cor_map();
	}
	correctIE();
	if(isIE7)
	{		var ps=sq_getElementsByClassName('itimg',document.getElementById('itable'),'p');
		for(var i=0;i<ps.length;i++)
		{			ps[i].style.display='none';
			ps[i].style.display='block';
		}
	}
}

function est_map_savePosition()
{	map_center=map.getCenter();	setcookie_storage(est_part+'_map_pos',map_center.lat()+';'+map_center.lng()+';'+map.getZoom(),cookie_lifetime);
}

var map_initCenter,map_initZoom;
function est_init_map_pos(pos)
{	map_initCenter=map.getCenter();
	map_initZoom=map.getZoom();
	if(pos=='')return;
	pos=pos.split(';');
	map.setCenter(new GLatLng(parseFloat(pos[0]),parseFloat(pos[1])));
	map.setZoom(parseInt(pos[2]));
}

function map_limitZoom()
{	var mt=map.getMapTypes();
	for(var i=0;i<mt.length;i++)
	{		var min=mt[i].getMinimumResolution();		eval('mt[i].getMinimumResolution=function(){return '+Math.max(min,3)+';}');
	}
}

function map_filter_remove()
{	document.getElementById('est_map_switch_del').style.display='none';
	mm_filter_click(true);
}
