/*******************************************
********************************************
    * www.resident.ru * www.eatlas.ru *
Remote API Web Map Service javascript client
		    * Milok Zbrozek *
		milokz [doggy] gmail.com
		    * ZAO Resident *
   			   AJAX
********************************************
*******************************************/
<!--
    // www.eAtlas.ru (c) www.Resident.ru
	

	//для домов
	rows_count = 4;

	// методы поиска
    var Search_Method_Strings = new Array("По карте","Организации","Маршруты");
	
	// для хинтов
	var BalloonMsgs = new Array();
	BalloonMsgs[0] = new Object();
	BalloonMsgs[0].text = "Введите ваш запрос для поиска";
	BalloonMsgs[0].obj = "mask";
	BalloonMsgs[0].top  = 22;
	BalloonMsgs[1] = new Object();
	BalloonMsgs[1].text = "Укажите где искать<br/>(адрес или название)";
	BalloonMsgs[1].obj = "in_obj";
	BalloonMsgs[1].top  = 22;
	BalloonMsgs[2] = new Object();
	BalloonMsgs[2].text = "Укажите что искать<br/>(например: кафе фото интернет)";
	BalloonMsgs[2].obj = "in_where";
	BalloonMsgs[2].top  = 22;
	BalloonMsgs[3] = new Object();
	BalloonMsgs[3].text = "Выберите радиус для поиска";
	BalloonMsgs[3].obj = "selrad";
	BalloonMsgs[3].top  = 22;
	BalloonMsgs[4] = new Object();
	BalloonMsgs[4].text = "Начальная точка маршрута<br/>(Укажите адрес или название)";
	BalloonMsgs[4].obj = "in_s1";
	BalloonMsgs[4].top  = 22;
	BalloonMsgs[5] = new Object();
	BalloonMsgs[5].text = "Конечная точка маршрута<br/>(Укажите адрес или название)";
	BalloonMsgs[5].obj = "in_s2";
	BalloonMsgs[5].top  = 22;
	BalloonMsgs[6] = new Object();
	BalloonMsgs[6].text = "Введите ваш запрос для поиска";
	BalloonMsgs[6].obj = "org";
	BalloonMsgs[6].top  = 22;
	
	// Initializate Map
	var dragnav   = false; // click по навигатору?
	var ACTION    = "SHIFT"; // def action
	var site_url  = "/testwebmap/api.rem"; // "http://192.168.0.145/testwebmap/"
	var route_url = ""; // do not set
 	 var scale_url = ""; // do not set
	 var scale_x = new Array();
	 var scale_y = new Array();
	 var scale_l = new Array();
	var mapw = 210, maph = 170, cx = 0, cy = 0, cx_def = 0, cy_def = 0, zoom = 0, markerx=0, markery=0, markerscrx=0, markerscry=0, idm = 0, minzoom = 0, maxzoom = 0, zoomh = 0, maxzoomh = 0; // map center, zoom, marker
	var vis = '', lay = '', id = '', TrackURL = "", TypeURL = "", label = '', markert = '';
	var ext_arr = new Array(); var ext_arr_sel = new Array();
	var ext_arr_img = "";
	var my_cat = "";
	
	
	// инициализация страницы
	function InitPage()
	{
		MM_preloadImages('oldstyle/print_over.gif','oldstyle/mail_over.gif','oldstyle/favorites_over.gif','oldstyle/email_over.gif');
	};
	
	// выводим наименование карты
	function set_map_name(name)
	{
		gE("map_name").innerHTML = name;	
		if(gE("subs_tabs_map")) gE("subs_tabs_map").innerHTML = name;	
	}
	function set_copyright(text)
	{
		gE("cprt").innerHTML = text;	
	}
	
	// устанавливаем размер карты
	function InitMapSize(wi,he)
	{
		gE("outer").style.left = 0;
		gE("cover").style.left = 0;
		mapw = wi;
		maph = he;
		gE("map1").style.width = mapw;
		gE("map0").style.width = mapw;
		gE("map1").style.height = maph;
		gE("map0").style.height = maph;
		gE("outer").style.width = mapw+2;
		gE("cover").style.width = mapw+2;
		gE("outer").style.height = maph+2;
		gE("cover").style.height = maph+2;
        gE("canv").style.width = mapw+2;
        gE("canv").style.height = maph+2;
		if(gE("panel0").style.visibility == 'hidden')
		{
			gE("panel1").style.top = 123-22+20;
			gE("legendadiv").style.height = maph - 9 - 15;
		}
		else
		{
			gE("panel1").style.top = 257-22+20;
			gE("legendadiv").style.height = maph - 143 - 15;
		};
		if(gE("routetxt"))  //описание маршрута
		{
			gE("routetxt").style.height = maph - 195;
		};
		gE("SearchRES").style.height = maph;
		
		gE("panelD").style.top = getObjPos(gE("map"+phase)).y+2+maph;
		gE("panelD").style.left = getObjPos(gE("map"+phase)).x+2;
	}
	
	// выбираем метод для поиска
	var prevtmpMyWayTxt_ = 0;
	var MyWayTxt_ = new Array('','','');
	function set_search_method(id)
	{
	    MyWayTxt_[prevtmpMyWayTxt_] = gE("SearchRES").innerHTML;
		for(x=0;x<3;x++)
		{
			gE("search_md_"+x).innerHTML = "";
			if(MAP.allowsearch[x] == 0) continue;
			if (x == id) 
			{
//				gE("search_md_"+x).style.background = "url(newstyle2/sb_sel.gif)";
				gE("search_md_"+x).innerHTML = '<span style="method_btn link3" style="cursor:default;" style="color:#032d56;"><b>'+Search_Method_Strings[x]+'</b></span>';
				gE("SearchBar"+x).style.display = "";
			}
			else 
			{
//				gE("search_md_"+x).style.background = "url(newstyle2/sb_clear.gif)";
				gE("search_md_"+x).innerHTML = '<a href="javascript:SetLoc();" onClick="javascript:set_search_method('+x+');" class="method_btn link3" style="color:#1363d1;"><u>'+Search_Method_Strings[x]+'</u></a>';
				gE("SearchBar"+x).style.display = "none";
			};
		};
		gE("SearchRES").innerHTML = MyWayTxt_[id];
		prevtmpMyWayTxt_ = id;
		
		  var day = new Date();
		  day.setDate(day.getDate()+90) ;
		  setCookie("selected_search_method", id, day);
	}
	
	// отображение подсказки
	function showhint(identity)
	{
		gE("balloontext").innerHTML = BalloonMsgs[identity].text;
		gE("hintballoon").style.left = getObjPos(gE(BalloonMsgs[identity].obj)).x + BalloonMsgs[identity].top;
		gE("hintballoon").style.top = getObjPos(gE(BalloonMsgs[identity].obj)).y + BalloonMsgs[identity].top;
		gE("hintballoon").style.visibility = "visible";
	}
	function hidehint() { gE("hintballoon").style.visibility = "hidden"; }
	
	// Панели
	function openPanel(toplvl)
	{
		gE("panel"+toplvl).style.visibility = "";
		if(toplvl < 2) gE("panelbtn"+toplvl).src = "newstyle/pan_open.gif";
		if(toplvl == 0) 
		{
			gE("navrect").style.visibility = "";
			gE("panel1").style.top = 257-20-1;
			gE("panel0").style.top = 123-20-1;
			if(op) gE("panel0").style.top = 136-20-1;
			if(op) gE("panel1").style.top = 270-20-1;
			gE("legendadiv").style.height = maph - 143 - 15;
		};
		if(toplvl == 1 && gE("panel0").style.visibility == "hidden") 
		{
			gE("panel1").style.top = 123-20-1;
			if(op) gE("panel1").style.top = 136-20-1;
			gE("legendadiv").style.height = maph - 9 - 15;
		};	
		var day = new Date();
		day.setDate(day.getDate()+90) ;
		setCookie("lastPanel"+toplvl, true, day);
	}
	function closePanel(toplvl)
	{
		gE("panel"+toplvl).style.visibility = "hidden";
		if(toplvl < 2) gE("panelbtn"+toplvl).src = "newstyle/pan_close.gif";
		if(toplvl == 0) 
		{
			gE("navrect").style.visibility = "hidden";
			gE("panel1").style.top = 123-20-1;
			if(op) gE("panel1").style.top = 136-20-1;
			gE("legendadiv").style.height = maph - 9 - 15;
		};
		deleteCookie("lastPanel"+toplvl);
	}
	function changePanel(toplvl)
	{
		if(gE("panel"+toplvl).style.visibility == "") closePanel(toplvl); else openPanel(toplvl);
	}
	
	// изменение окна
	function resized()
	{
		gE("map1").style.height = maph;
		gE("map0").style.height = maph;
		gE("map1").style.width = mapw;
		gE("map0").style.width = mapw;
		var ww1=mapw + 2;
		var ww2=getPos(document.images["pixel"]).x-getPos(document.images["map"+phase]).x;
		if (ww2<ww1) ww1=ww2;
		if (ww1<500) ww1=500;
		gE("NavToolBar").style.width = ww1;
		
		CloseMarker();
		closePanel(2);closePanel(3);closePanel(4);
		gE("panel2").style.visibility = "hidden";
		  
		WW = (GetWindowHW(false) - 200) < (getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2) ? (GetWindowHW(false) - 200) : (getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2 - 200);
		if ((getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2) > GetWindowHW(false)) WW = (getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2 - 200);
		if ((getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2 + 200) < GetWindowHW(false)) WW = (getObjPos(gE("map"+phase)).x + gE("map"+phase).width + 2);
		gE("panel0").style.left = WW;
		if(op) gE("panel0").style.left = (GetWindowHW(false) - 200);
		gE("panel1").style.left = WW;
		if(op) gE("panel1").style.left = (GetWindowHW(false) - 200);
		gE("panelB").style.left = getObjPos(gE("map"+phase)).x + 5;
		gE("panelB").style.top = getObjPos(gE("map"+phase)).y + 5;
		gE("panelB").style.visibility = 'visible';
		
		gE("navrect").style.left = - 200;
        gE("loading").style.left = getObjPos(gE("map"+phase)).x + 44;
        gE("loading").style.top = getObjPos(gE("map"+phase)).y + 5;
						
		gE("panelD").style.top = getObjPos(gE("map"+phase)).y+2+maph;
		gE("panelD").style.left = getObjPos(gE("map"+phase)).x+2;
	}
	
	function SetVis_(n,z)
	{
		var v=vis, nn;
		if (vis.length<n)
		{
			nn=n-vis.length-1;
			for (var i=0; i<nn; i++)
			{
				vis+='0';
			}
			vis+=z;
		}
		else
		{
			vis=vis.substring(0,n-1)+z;
			if (v.length>n)
				vis+=v.substring(n,v.length);
		}
	}

	function LoadVis_()
	{
		for (var i=0; i<10; i++)
		{
			var v=gE("vis"+i);
			if (v!=null)
			{
				if (vis.substring(i,i+1)==0) v.checked=false;
				if (vis.substring(i,i+1)==1) v.checked=true;
			}
			else
				return;
		}
	}
	
	// загрузка легенды  dgdgdg
	function load_legendadiv()
	{
		var myo = new WMSClient();
	    myo.setUrl(site_url);
		lays = legend_From_File("legenda_msk.xml"); // legenda_msk.xml file
		//lays = myo.RequestUserLayers(MAP.name); // SQL QUERY
		if(lays.error == true) alert("Error #"+lays.code+": "+lays.string);
		var txt = "";
		if (lays.length > 0)
		{
			txt += '<table width="100%" cellspacing="0" cellpadding="0"><tr><td width="100%" align="right"><span class="link0 legend" class="searchreq" onClick="set_vis_0(true);"><SUP>скрыть все</SUP></span> &nbsp;</td></tr></table>';
			ext_arr = new Array(); ext_arr_sel = new Array();
			ext_gps = new Array();
			ext = 0;
			
			if (MAP.name=='MskMO_')
			{
				var ch='';
				if (is_layer_vis(0,false)) ch=' checked'; else ch="";
				txt+='<div><input id="vis0" type="checkbox"'+ch+' value="" onclick="if (this.checked) SetVis_(1,1);else SetVis_(1,0);SetZoomLev(GetLev(true));SetMap();"><img style="position:relative;top:2px" src="../mskmo/legenda/salute.gif" width="20" height="20" border="0" alt=""><span class="link3 legend">&nbsp;Места проведения салюта</span></div>';
				//if (is_layer_vis(1,false)) ch=' checked'; else ch="";
				//txt+='<div><input id="vis1" type="checkbox"'+ch+' value="" onclick="if (this.checked) SetVis_(2,1);else SetVis_(2,0);SetZoomLev(GetLev(true));SetMap();"><img style="position:relative;top:2px" src="../mskmo/legenda/beach_soley.gif" width="20" height="20" border="0" alt=""><span class="link3 legend">&nbsp;Зоны отдыха</span></div>';
				txt+="<br>";
			}
			// Двухуровневая схема
			// LEVEL 2
			for(i=0;i<lays.length;i++)
			if(lays[i].external) 
			if(lays[i].layer_id == lays[i].layer_group)
			{
				var tmp = new Object();
				tmp.self = lays[i];
				tmp.cata = new Array();
				tmp.catc = 0;
				ext_gps["g"+lays[i].layer_id] = tmp;
				ext_arr_sel["g"+lays[i].layer_id] = 0;
			};
			
			// LEVEL 1
			for(i=0;i<lays.length;i++)
			{
				ext = 0;
				if(lays[i].external) 
				{
					if(lays[i].layer_id == lays[i].layer_group) continue;
					if(lays[i].layer_visible) ext_arr[ext++] = lays[i].layer_id;
					ext_gps["g"+lays[i].layer_group].cata[ext_gps["g"+lays[i].layer_group].catc++] = lays[i];
				};
			};

			// OUT LEVEL 2 -> LEVEL 1
			
			for(itm in ext_gps)
			{
				txt += '<table width="100%" cellspacing="0" cellpadding="0"><tr><td width="100%">';
				txt += '<div onClick="if(gE(\'ext_gps_'+itm+'\').style.display == \'none\') {gE(\'ext_gps_'+itm+'\').style.display = \'\'; gE(\'ext_gps_img_'+itm+'\').src=\'../images/l_minus.gif\';} else {gE(\'ext_gps_'+itm+'\').style.display = \'none\'; gE(\'ext_gps_img_'+itm+'\').src=\'../images/l_plus.gif\';}" class="catname catname2" style="cursor:pointer;"><img id="ext_gps_img_'+itm+'" src="../images/l_plus.gif" width="12" height="12" border="0" alt="">&nbsp;<b>' + ext_gps[itm].self.layer_name + '</b></div></td>';
				txt += '<td valign="middle" id="ext_gps_'+itm+'_m" class="catname catname2" style="color:#111111;">'+(ext_arr_sel[itm] > 0 ? ext_arr_sel[itm]+'/' : '&nbsp;')+'</td>';
				txt += '<td valign="middle" class="catname catname2">'+ext_gps[itm].catc+'&nbsp;&nbsp;</td></tr></table>';
				txt += '<div id="ext_gps_'+itm+'" class="catname2" style="display:none;">';
				for(i=0;i<ext_gps[itm].cata.length;i++)
				{
					if(ext_gps[itm].cata[i].layer_name == 'Благотворительность') ext_gps[itm].cata[i].layer_name = 'Благотвор-ть';
					img = "";
					img = '<i style="margin-top: 0.2em;background: url(\''+MAP.ext_images_dir+'all.gif\') no-repeat;width: 20px; height: 20px;position: absolute;background-position: 0 -'+(tmp_var_4_load_legenda_images_after_map_count*20)+'px;"></i>';
					tmp_var_4_load_legenda_images_after_map[tmp_var_4_load_legenda_images_after_map_count] = img;
					img = '<span style="position: relative; height:20px;" id="liam'+(tmp_var_4_load_legenda_images_after_map_count++)+'"></span>';
					txt += '<div style="width:100%"><span><input id="chkbxvislay_'+(ext_gps[itm].cata[i].external+'_'+ext_gps[itm].cata[i].layer_id)+'" onClick="set_vis_lays('+ext_gps[itm].cata[i].layer_id+','+ext_gps[itm].cata[i].external+',\''+itm+'\')" type="checkbox"'+'>'+img+'</span><span><span class="link3 legend" class="searchreq" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + ext_gps[itm].cata[i].layer_name + "</span></span>"+'<span id="leg_lay_'+ext_gps[itm].cata[i].external+'_'+ext_gps[itm].cata[i].layer_id+'"></span></div>';
				};
				txt += "<div style=\"height:2px;width:100%\"></div></div>";
			};
		};
		gE("legendadiv").innerHTML = txt;
		LoadVis_();
	}
	
	var tmp_var_4_load_legenda_images_after_map = new Array();
	var tmp_var_4_load_legenda_images_after_map_count = 0;
	
	function load_legendagif(asmenu)
	{
		var txt = "";
		if(asmenu)
		{
			txt += '<hr align="center" style="height:1px;width:75%;color:red;"/><div id="sld" class="catname " onClick="ChangeMapL();"><img id="imsld" src="images/l_plus.gif" border="0"/>&nbsp;Обозначения карты</div>';
		};
		if (MAP.name=='RusEur')
		{
			var ch='';
			if (is_layer_vis(0,false)) ch=' checked'; else ch="";
			txt+='<div><input id="vis0" type="checkbox"'+ch+' value="" onclick="if (this.checked) SetVis_(1,1);else SetVis_(1,0);SetZoomLev(GetLev(true));SetMap();"><img style="position:relative;top:2px" src="../ruseur/legenda/wonder.gif" width="21" height="21" border="0" alt=""><span class="link3 legend">&nbsp;Чудеса России (финалисты)</span></div>';
		}			
		txt += '<div id="legendagif" style="visibility:'+(asmenu ? 'hidden' : '')+';display:'+(asmenu ? 'none' : 'block')+';"><img src="'+MAP.legendagif+'" border="0"/></div>';
		gE("legendadiv").innerHTML += txt;
	}
	
	function load_legenda(map_obj)
	{
		if(map_obj.legenda) load_legendadiv();
		  // load legenda after map first load
		if(firstboot)
		{
			load_legenda_after_map(MAP);
			firstboot = false;
		};

	}
	
	function load_legenda_after_map(map_obj)
	{		
		if(tmp_var_4_load_legenda_images_after_map_count > 0)
		for(ind = 0; ind < tmp_var_4_load_legenda_images_after_map_count; ind++) gE("liam"+ind).innerHTML = tmp_var_4_load_legenda_images_after_map[ind];
		if(MAP.legendagif != "") load_legendagif(map_obj.legenda);
	}
	
	function ChangeMapL()
	{
		if(gE("legendagif").style.visibility == '')
		{
			gE("legendagif").style.visibility = 'hidden';
			gE("legendagif").style.display = 'none';
			gE("imsld").src = 'images/l_plus.gif';
		}
		else
		{
			gE("legendagif").style.visibility = '';
			gE("legendagif").style.display = 'block';
			gE("imsld").src = 'images/l_minus.gif';
		};
	}
	
	// обнуление видимости слоев
	function set_vis_0(ext)
	{
		for(current_lay in ext_arr) 
		{
			gE('chkbxvislay_'+ext+'_'+ext_arr[current_lay]).checked = '';
		};
		for(current_par in ext_arr_sel) 
		{
			ext_arr_sel[current_par] = 0;
			gE('ext_gps_'+current_par+'_m').innerHTML = "&nbsp;";
		};
		ext_arr = new Array(); 
		ext = 0;
		vis = "";
		SetMap();
	}
	
	// Управление видимостью
	function set_vis_lays(current_lay,ext,parent_node)
	{
		
		if(ext)
		{
			ext_arr_tmp = new Array();
			ext_arr_tmp_c = 0;
			for(i=0;i<ext_arr.length;i++)
			if(ext_arr[i] != current_lay) ext_arr_tmp[ext_arr_tmp_c++] = ext_arr[i]; 
			if(ext_arr_tmp.length == ext_arr.length) ext_arr_tmp[ext_arr_tmp_c++] = current_lay;
			ext_arr = ext_arr_tmp;
			if(parent_node)
			{
				if(is_layer_vis(current_lay,ext)) 
					ext_arr_sel[parent_node]++;
				else ext_arr_sel[parent_node]--;
					gE('ext_gps_'+parent_node+'_m').innerHTML = (ext_arr_sel[parent_node] > 0) ? ext_arr_sel[parent_node]+"/" : "&nbsp;";
			};
		}
		else
		{
			if(current_lay >= vis.length) return;
			changeto = "0";
			if(vis.substring(current_lay,current_lay+1) == "0") changeto = "1";
			vis = vis.substring(0,current_lay) + changeto + vis.substring(current_lay+1,vis.length);
		}
		
		if (is_layer_vis(current_lay,ext)) 
		{
			var day = new Date();
  			day.setDate(day.getDate()+90) ;
		}
		else
		{
		};
		SetZoomLev(GetLev(true));
		SetMap();
	}
	
	// видим ли слой?
	function is_layer_vis(current_lay,ext)
	{
		if(ext)
		{
			ext_arr_tmp = new Array();
			ext_arr_tmp_c = 0;
			for(i=0;i<ext_arr.length;i++)
			if(ext_arr[i] != current_lay) ext_arr_tmp[ext_arr_tmp_c++] = ext_arr[i]; 
			return (ext_arr_tmp.length != ext_arr.length);
		}
		else
		{
			if(current_lay >= vis.length) return false;
			return (vis.substring(current_lay,current_lay+1) == "1");
		}
	}
	
	// определение координат объекта
	function getObjPos(el)
	{
		for (var lxx=0,lyy=0;el!=null;) lxx+=el.offsetLeft,lyy+=el.offsetTop,el=el.offsetParent;
	    return {x:lxx,y:lyy};
	}
	
	// окно загрузкт
	function setLoading(visible, txt)
	{
		if(txt) gE("loadingtext").innerHTML = txt; else gE("loadingtext").innerHTML = 'Загрузка...';
		if(visible == false) 
		{
			gE("loading").style.zIndex = 0;
			gE("loading").style.visibility = "hidden";
			SetLoc();
		}
		else 
		{
			gE("loading").style.zIndex = 100; //
			sleep(25);
			gE("loading").style.visibility = "visible";
		};
	};
	
	// Расстояние между координатами
	function dist(x1,y1,x2,y2)
	{
		return Math.round(Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)));	
	}
	
	// проверка синтаксиса запроса поиска
	function checksyntax(txt) // копия функции сервера
	{	
		if(txt.length < 2) return false;
		if(txt.indexOf("&") > -1) return false;
		//if(txt.indexOf("\"") > -1) return false;
		if(txt.indexOf("^") > -1) return false;
		if(txt.indexOf("~") > -1) return false;
		if(txt.indexOf("*") > -1) return false;
		if(txt.indexOf("%") > -1) return false;
		if(txt.indexOf("?") > -1) return false;
		if(txt.indexOf("!") > -1) return false;
		var cc = 0;
		for(i=0;i<txt.length;i++) { if(txt.substring(i,i+1) == " ") cc++; };
		if (cc == txt.length) return false;
		return true;
	}
	
	// Получение XY по layer и id
	function GetXYByID(lay,id)
	{
		var myo = new WMSClient();
	 	myo.setUrl(site_url);
	    var res = myo.RequestZoomPoint(MAP.name,lay,parseInt(id));
		if(res.error == true) alert("Error #"+res.code+": "+res.string);
		return res;
	}
	
	var ns_empty = "empty"; var ns_empty1 = "empty"; var ns_empty2 = "empty";
	var ns_cx0 = 0; var ns_cx1 = 0; var ns_cx2 = 0;
	var ns_cy0 = 0; var ns_cy1 = 0; var ns_cy2 = 0;
	
	function selectobjM(ecx,ecy,ezoom,efull,eidil,elayer,emycat,ttli)
	{
		clearTimeout(itt_timeout); //itt_timeout = setTimeout('itt_close(10)',1); itt_over_flag=false; 
		gE('infotooltip').style.width = 0;
		gE('infotooltip').style.visibility = 'hidden';
	
		var _scale = zoom / mapw;
						
		var _minx = cx - mapw * _scale / 2;
		var _maxx = cx + mapw * _scale / 2;
		var _miny = cy - maph * _scale / 2;						
		var _maxy = cy + maph * _scale / 2;
		
		cx = ecx;
		cy = ecy;
		
		if (ezoom != 0) zoom = ezoom;
		
		markert = '';
		if(elayer == '')
		{
			markert = efull;  //-- no server marker
			markerx = cx;
			markery = cy;
		}
		else
		{
			var myo = new WMSClient();
			myo.setUrl(site_url);
			var res = myo.RequestZoomPoint(MAP.name,elayer,parseInt(eidil));
			if(!res.error) if(res.squared) if(zoom<res.sqzoom) zoom = res.sqzoom;
		};
		
		id      = eidil;
		lay     = elayer;
		label   = efull; 
		my_cat  = emycat;
				
		SetZoomLev(GetLev(true));
		SetMap();
		Selsres(ttli);
	}
	
	// Выбор где искать
	function selectobj0(name,x,y,lay,id)
	{	
		var ax = x;
		var ay = y;
	    if (lay != '' && id != 0) 
		{
			var res = GetXYByID(lay,id);
			ax = res.center_x;
			ay = res.center_y;
		};
		gE("in_obj_div").innerHTML = '<input type="text" cx="'+ax+'" cy="'+ay+'" id="in_obj" name="in_obj" value="'+name+'" empty="'+name+'" onKeyUp="colorize(\'SearchForm1\',0)" class="search_1" style="width:165px;color:#0000CC;" onMouseOver="showhint(1);" onMouseOut="hidehint()">';
		set_search_method(2);
		if(ns) { ns_empty = name; ns_cx0 = ax; ns_cy0 = ay; };
		try
		{
			document.forms[2].elements[0].focus();
			document.forms[2].elements[0].select();
		} catch (e) {};
	}
	
	var r1 = false;
	var r2 = false;
	var gnx1 = 0;
	var gnx2 = 0;
	var gny1 = 0;
	var gny2 = 0;
	
	// Выбор начала->конец маршрута
	var FselObj = false;
	var FselObjTO = false;
	function  selectobjSF(b_fromInfoTool)
	{
		var myo = new WMSClient();
	 	myo.setUrl(site_url);
		route_url = (r1 ? myo.RouteStartMarker(MAP.name,MAP.graph,parseInt(gnx1),parseInt(gny1)) : '') + (r2 ? myo.RouteFinishMarker(MAP.name,MAP.graph,parseInt(gnx2),parseInt(gny2)) : '');	
		set_search_method(2);
		//if(r1 && r2) SearchRoute(); else SetMap();			
		//setTimeout('SearchRoute()',100);
		SearchRoute(b_fromInfoTool);
		if(FselObjTO) clearTimeout(FselObjTO);
		FselObj = true;
		if(!r1 || !r2) SetMap();
		FselObjTO = setTimeout('FselObj=false',200);
	}
	
	// Выбор начала маршрута
	var select_obj_route_s_desc = '';
	var select_obj_route_f_desc = '';
	function selectobjS(name,x,y,lay,id,desc)
	{
		var b_fromInfoTool = false;
		if(desc) 
		{
			if(desc == -127)
			 b_fromInfoTool = true;
			else
			 select_obj_route_s_desc = desc; 
		} 
		else select_obj_route_s_desc = '';
		if(name.indexOf('<') > 0) name = name.substr(0,name.indexOf('<'));
		var ax = x;
		var ay = y;
	    if (lay != '' && id != 0) 
		{
			var res = GetXYByID(lay,id);
			ax = res.center_x;
			ay = res.center_y;
		};
		r1 = true;
		gnx1 = ax; gny1 = ay;
		gE("fromT").innerHTML = '<input type="text" cx="'+ax+'" cy="'+ay+'" id="in_s1" name="in_s1" value="'+name+'" class="Search_1" style="width:186px;" empty="'+name+'" onKeyUp="colorize(\'SearchForm2\',0)" onMouseOver="showhint(4);" onMouseOut="hidehint();">';
		if(ns) { ns_empty1 = name; ns_cx1 = ax; ns_cy1 = ay; };
		selectobjSF(b_fromInfoTool);
		try
		{
			document.forms[1].elements[1].focus();
			document.forms[1].elements[1].select();
		} catch (e) {};
	}
	
	// Выбор конца маршрута
	function selectobjF(name,x,y,lay,id,desc)
	{
		var b_fromInfoTool = false;
		if(desc) 
		{
			if(desc == -127)
			 b_fromInfoTool = true;
			else
			 select_obj_route_f_desc = desc; 
		} 
		else select_obj_route_f_desc = '';
	    if(name.indexOf('<') > 0) name = name.substr(0,name.indexOf('<'));
		var ax = x;
		var ay = y;
	    if (lay != '' && id != 0) 
		{
			var res = GetXYByID(lay,id);
			ax = res.center_x;
			ay = res.center_y;
		};
		r2 = true;
		gnx2 = ax; gny2 = ay;
		gE("toR").innerHTML = '<input type="text" cx="'+ax+'" cy="'+ay+'" id="in_s2" name="in_s2" value="'+name+'" class="Search_1" style="width:185px;" empty="'+name+'" onKeyUp="colorize(\'SearchForm2\',1)" onMouseOver="showhint(5);" onMouseOut="hidehint();">';	
		if(ns) { ns_empty2 = name; ns_cx2 = ax; ns_cy2 = ay; };
		selectobjSF(b_fromInfoTool);
		try
		{
			document.forms[1].elements[0].focus();
			document.forms[1].elements[0].select();
		} catch (e) {};
	}
	
	
	// Выбор конец->начало маршрута
	function selectobjFS(name,x,y,name2,x2,y2)
	{
		r1 = true; r2 = true;
		gnx1 = x; gny1 = y; gnx2 = x2; gny2 = y2;
		gE("fromT").innerHTML = '<input type="text" cx="'+x+'" cy="'+y+'" id="in_s1" name="in_s1" value="'+name+'"  empty="'+name+'" onKeyUp="colorize(2,0)" class="Search_1" style="width:186px;" onKeyUp="colorize(\'SearchForm2\',0)" onMouseOver="showhint(4);" onMouseOut="hidehint();">';	
		gE("toR").innerHTML = '<input type="text" cx="'+x2+'" cy="'+y2+'" id="in_s2" name="in_s2" value="'+name2+'"  empty="'+name2+'" onKeyUp="colorize(2,1)" class="Search_1" style="width:185px;" onKeyUp="colorize(\'SearchForm2\',1)" onMouseOver="showhint(5);" onMouseOut="hidehint();">';	
		if(ns) { ns_empty1 = name; ns_cx1 = x; ns_cy1 = y; };
		if(ns) { ns_empty2 = name2; ns_cx2 = x2; ns_cy2 = y2; };
		selectobjSF();
	}
	
	<!-- /* code by Milo[k] (milokz [doggy] gmail.com) */ --> 
	
	// подсветка измененного текста
	function colorize(frm,elm)
	{
		try
		{
			document.forms[frm].elements[elm].style.color = document.forms[frm].elements[elm].value.toLowerCase()  == document.forms[frm].elements[elm].empty.toLowerCase()  ? '#0000CC' : '#000000';
		}
		catch (e) {};
		if(frm == 1 && elm == 0) 
		{
			if (document.forms[frm].elements[elm].value == "") document.forms[frm].elements[elm].style.background = 'url(oldstyle/_redesign_find_where.gif)';
			else document.forms[frm].elements[elm].style.background = "#FFFFFF";
		};
		if(frm == 1 && elm == 1) 
		{
			if (document.forms[frm].elements[elm].value == "") document.forms[frm].elements[elm].style.background = 'url(oldstyle/_redesign_find_what.gif)';
			else document.forms[frm].elements[elm].style.background = "#FFFFFF";
		};
		if(frm == 2 && elm == 0) 
		{
			if (document.forms[frm].elements[elm].value == "") document.forms[frm].elements[elm].style.background = 'url(oldstyle/_redesign_route_start.gif)';
			else document.forms[frm].elements[elm].style.background = "#FFFFFF";
		};
		if(frm == 2 && elm == 1) 
		{
			if (document.forms[frm].elements[elm].value == "") document.forms[frm].elements[elm].style.background = 'url(oldstyle/_redesign_route_finish.gif)';
			else document.forms[frm].elements[elm].style.background = "#FFFFFF";
		};
	}
	
	/* SEARCH FUNCTIONS */
	/**/
	//
	//

	// свертывание/развертывание категорий
	function collapseCat(val)
	{
		if(gE("cat_s"+val).style.display == "none")
		{
			gE("cat_s"+val).style.display = "";
			gE("cat_i"+val).src = "newstyle/pan_open.gif";
		}
		else
		{
		    gE("cat_s"+val).style.display = "none";
			gE("cat_i"+val).src = "newstyle/pan_close.gif";
		};
	};
	
	
	// поиск по названию
	function SearchAddr(par,t) // 1 - where; 2 - from; 3 - to
	{
		if(par == null) par = 0;
		exitRes = new Array();
		
		document.forms["SearchForm"+t].elements[0].value = ReplaceString(document.forms["SearchForm"+t].elements[0].value,"'","`");
		document.forms["SearchForm"+t].elements[0].value = ReplaceString(document.forms["SearchForm"+t].elements[0].value,'"',"``");
     	var list = gE("SearchRES");
		if(!checksyntax(document.forms["SearchForm"+t].elements[0].value)) { alert("Вы ввели недопустимый запрос для поиска!"); list.innerHTML = ""; return;};
		setLoading(true);
		list.innerHTML = "Подождите...";
		window.status = "Загрузка данных, подождите..."
		var myo = new WMSClient();
	    myo.setUrl(site_url);
		
		// поисковая битовая маска
		var bitmask = 0;
		if (t==0)
		{
			// objects
			if(MAP.objects) bitmask += Math.pow(2,1);
			// address
			if(MAP.address) bitmask += Math.pow(2,0);
			// houses + street houses
			if(MAP.address && MAP.houses) bitmask += Math.pow(2,4) + Math.pow(2,5);
		}
		else
		{
		// content
			if(MAP.kontent) bitmask += Math.pow(2,2);
		}
		// zoom
		var bitmask_call = bitmask + Math.pow(2,3);
		
	    var res; 
		if (MAP.name=='MskMO')
		{ 
			//if (document.forms["SearchForm"+t].elements[0].value=='зона отдыха' || document.forms["SearchForm"+t].elements[0].value=='пляж' || document.forms["SearchForm"+t].elements[0].value=='зоны отдыха' || document.forms["SearchForm"+t].elements[0].value=='пляжи') 
				//res=Search_From_File('zo.xml');
			//else
				if (document.forms["SearchForm"+t].elements[0].value=='места проведения салюта') 
					res=Search_From_File('so.xml');
				else
					res = myo.SearchGEOB(MAP.name,document.forms["SearchForm"+t].elements[0].value,0, bitmask_call);
		}
		else
			if (MAP.name=='RusEur' && document.forms["SearchForm"+t].elements[0].value=='чудеса')
				res=Search_From_File('wofin.xml');
			else
			{
				res = myo.SearchGEOB(MAP.name,document.forms["SearchForm"+t].elements[0].value,0, bitmask_call);
			}
		window.status = '';
		if(res.error == true)
		{
			 alert("Error #"+res.code+": "+res.string); 
			 list.innerHTML = "Ошибка, повторите операцию позже<br/>";
	    }
		else 
		{
			var day = new Date();
  			day.setDate(day.getDate()+90) ;
			if (t==0)
				setCookie("map_"+mapID+"_SearchAddr", document.forms["SearchForm"+t].elements[0].value, day);
			else
				setCookie("map_"+mapID+"_SearchContent", document.forms["SearchForm"+t].elements[0].value, day);
			var xml = res.getElementsByTagName("results")[0];
			var addr = getElementsByTagName2(xml,"addresses");
			var nota = getElementsByTagName2(xml,"not-addresses");
			var kont = getElementsByTagName2(xml,"kontent");
			  var tmpttl = 0;
			  if(addr.length > 0) tmpttl += getElementsByTagName2(xml,"addresses")[0].getAttribute('items');
			  if(nota.length > 0) tmpttl += getElementsByTagName2(xml,"not-addresses")[0].getAttribute('items');
			  if(kont.length > 0) tmpttl += getElementsByTagName2(xml,"kontent")[0].getAttribute('items');
		   if(tmpttl == 0)
		   {
		   		var tmpres = '<table class="findreslnk" border="0" width="100%" cellpadding="0" cellspacing="0" ><tr><td colspan="2" align="left">&nbsp;&nbsp;Вы искали: <span class="searchreq" style="cursor:pointer;" onClick="document.forms[\'SearchForm'+t+'\'].elements[0].value=\''+document.forms["SearchForm"+t].elements[0].value.toLowerCase()+'\';">' + document.forms["SearchForm"+t].elements[0].value.toLowerCase()  + '</span></td></tr><tr><td style="border-top:solid 1px #cccccc">&nbsp;&nbsp;Найдено объектов:</td><td align="right" style="border-top:solid 1px #cccccc">0&nbsp;&nbsp;&nbsp;</tr></td></tr></table><br/>';
				
				if(par != 0)
				{
					setLoading(false);
					return tmpres;
				} else list.innerHTML = tmpres;
		   }
		   else
		   {	
				var ttl = 0;
				if(addr.length > 0) ttl += parseInt(addr[0].getAttribute('items'));
				if(nota.length > 0) for(i=0;i<nota.length;i++) ttl += parseInt(nota[i].getAttribute('items'));
				if(kont.length > 0) for(i=0;i<kont.length;i++) ttl += parseInt(kont[i].getAttribute('items'));
		   
				if(par == 0) gE("in_s2").value = document.forms[0].elements[0].value.toLowerCase();
		   
		   		var zer = 0;
		   		var txt = '<a name="cat"></a>';
				if(par == 0)
				txt += '<table class="findreslnk" border="0" width="100%" cellpadding="0" cellspacing="0" ><tr><td colspan="2" align="left">&nbsp;&nbsp;Вы искали: <span class="searchreq" style="cursor:pointer;" onClick="document.forms[\'SearchForm'+t+'\'].elements[0].value=\''+document.forms["SearchForm"+t].elements[0].value.toLowerCase()+'\';">' + document.forms["SearchForm"+t].elements[0].value.toLowerCase()  + '</span>';
				if(par == 0)
				txt += '</td></tr><tr><td style="border-top:solid 1px #cccccc">&nbsp;&nbsp;Найдено объектов:</td><td align="right" style="border-top:solid 1px #cccccc"><span id="reslength">'+ttl+'</span>&nbsp;&nbsp;&nbsp;</tr></td></tr></table><br/>';
				var catvc = 0;
				var ttli = 0;
				
				if(par == 0) txt += "<span style=\"color:red;\"><smaller>Уточните объект:</smaller></span><br/>";
				
				var navigate_first_ok = false;
				var navigate_first_obj = '';
				
				
				//АДРЕСА++
				ttt = 0;
				if(parseInt(addr[0].getAttribute('items')) > 0)
				{
					var alads = getElementsByTagName2(addr[0],"item");
					// HEADER
					txt += '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table"><tr onClick="collapseCat('+catvc+');"><td style="cursor:default;" style="cursor:pointer;">&nbsp;<img id="cat_i'+catvc+'" src="newstyle/pan_close.gif" border="0" class="catname" vspace="2"></td><td width="100%" valign="middle" style="cursor:pointer;"><a name="cat'+catvc+'" style="cursor:pointer;"></a>&nbsp;<span class="catname" onMouseUp="NoMenu('+catvc+');">Адреса и улицы</span></td><td align="right" style="cursor:pointer;">&nbsp;&nbsp;&nbsp;</td><td align="right" width="40" class="catname"><span id="strs'+(x == 0 ? '0' : '')+'">'+parseInt(addr[0].getAttribute('items'))+'</span>&nbsp;</td></tr></table>';
					// BODY
					txt += '<cat:begin><span id="cat_s'+catvc+'" '+((nota.length.length + kont.length) == 0 ? '' : 'style="display:none;"')+'>';				   for(i=0;i<alads.length;i++) 
					{
						var elem = alads[i];
						// STREETS
						txt+= '<b>'+(i+1)+'</b>. &nbsp;';
						txt+= '<span id="sres'+ttli+'">';
						//
						
						todo = "selectobjM("+parseInt(elem.getAttribute("cx"))+','+parseInt(elem.getAttribute("cy"))+','+(elem.getAttribute("number") == "" ? Math.round(parseInt(elem.getAttribute("zoom"))*2.5) : 4000)+',\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+parseInt(elem.getAttribute("idil"))+',\''+elem.getAttribute("layer")+'\',\'адреса и улица\','+ttli+')';
						if(par == 1) todo = "selectobj0('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+relem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+");SearchNear();";
				 
						if(par == 2) todo = "selectobjS('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				 
						if(par == 3) todo = "selectobjF('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				  
						if(par == 0) todohint = 'Показать объект'; else todohint = 'Выбрать объект';
						
						if(!navigate_first_ok)
						{
							navigate_first_ok = true;
							navigate_first_obj = todo;
						};
				  
						txt += '<span id="sres'+ttli+'">&nbsp;<a onMouseOver="ittShow(event,\'sres'+ttli+'\',\''+ReplaceQuotes(elem.getAttribute("name"))+'\',\'адреса и улицы\',\''+elem.getAttribute("parent")+'\');"  onMouseOut="ittHide(event,\'sres'+ttli+'\');" id="url'+ttli+'" id="url'+ttli+'" onMouseMove="window.status=\''+todohint+'\';" href="javascript:'+todo+'"  onMouseUp="RPDAMENU(this,\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+elem.getAttribute("cx")+','+elem.getAttribute("cy")+',\''+elem.getAttribute("layer")+'\','+elem.getAttribute("idil")+');">'+ReplaceQuotes(elem.getAttribute("full"))+'</a></span><br/><small style="color:#333333;">'+elem.getAttribute("parent")+'</small><br/>';
						txt += '</span>';
						txt += '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td width="50%" align="left">&nbsp;';
				  
						if(par == 0) txt += SearchMenu(ReplaceQuotes(elem.getAttribute("full")),elem.getAttribute("cx"),elem.getAttribute("cy"),elem.getAttribute("layer"),elem.getAttribute("idil"),MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1,true);
						
						txt += '</td><td width="50%" align="right">&nbsp;';
						
						var hss = parseInt(elem.getAttribute("houses"));
						if(hss > 0)
						{
							txt += '<span id="cc'+ttli+'_h" align="right"><a style="color:#0000AA;" href="javascript:SetLoc();" onClick="cchange('+ttli+');"><sub>список зданий...</sub></a>&nbsp;</span></td></tr><td colspan="2">';
							
							txt += '<address:begin><div id="cc'+ttli+'" style="display:none;" align="center">';
							txt += '<table cellspacing="0" cellpadding="0" class="house"><tr>';
							var houses = getElementsByTagName2(elem,"house");
							var rcount = 1;
							for(ii=0;ii<hss;ii++)
							{
								ttli++;
								var xxx = 1; var hh = houses[ii];
								if(ii == hss-1) xxx = rcount*rows_count-hss+1;
								
								// here the house*++
								todo = "selectobjM("+parseInt(hh.getAttribute("cx"))+','+parseInt(hh.getAttribute("cy"))+',4000,\''+ReplaceQuotes(elem.getAttribute("name"))+', '+hh.getAttribute("number")+'\','+parseInt(hh.getAttribute("idil"))+',\''+hh.getAttribute("layer")+'\',\'адреса и улица\','+ttli+')';
								
								if(par == 1) todo = "selectobj0('"+ReplaceQuotes(elem.getAttribute("name")) + ', ' + hh.getAttribute("number")+"',"+hh.getAttribute("cx")+","+hh.getAttribute("cy")+",'"+hh.getAttribute("layer")+"',"+hh.getAttribute("idil")+");SearchNear();";
				 
								if(par == 2) todo = "selectobjS('"+ReplaceQuotes(elem.getAttribute("name")) + ', ' + hh.getAttribute("number")+"',"+hh.getAttribute("cx")+","+hh.getAttribute("cy")+",'"+hh.getAttribute("layer")+"',"+hh.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				 
								if(par == 3) todo = "selectobjF('"+ReplaceQuotes(elem.getAttribute("name")) + ', ' + hh.getAttribute("number")+"',"+hh.getAttribute("cx")+","+hh.getAttribute("cy")+",'"+hh.getAttribute("layer")+"',"+hh.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				  
								if(par == 0) todohint = 'Показать объект'; else todohint = 'Выбрать объект';
								
								txt += '<td colspan="'+xxx+'" height="22" width="40" align="left" valign="middle" onMouseOver="this.style.background=\'#CCCCCC\'; ittShow(event,\'sres'+ttli+'\',\''+ReplaceQuotes(elem.getAttribute("name"))+', '+hh.getAttribute("number")+'\',\'адреса и улицы\',\''+elem.getAttribute("parent")+'\');" id="url'+ttli+'" id="url'+ttli+'00'+ii+'" onMouseMove="window.status=\''+todohint+'\';" onMouseOut="this.style.background=\'#FFFFFF\'; ittHide(event,\'sres'+ttli+'\');" onMouseUp="RPDAMENU(this,\''+ReplaceQuotes(elem.getAttribute("name")) + ', ' + hh.getAttribute("number")+'\','+hh.getAttribute("cx")+','+hh.getAttribute("cy")+',\''+hh.getAttribute("layer")+'\','+hh.getAttribute("idil")+');" onMouseDown="if(ie) if(event.button == 1) '+todo+';" style="'+(ie ? 'cursor:pointer;' : '')+'">';
								
								txt += '<span id="sres'+ttli+'"><a href="javascript:'+todo+'">'+hh.getAttribute("number")+'&nbsp;</a></span>';
								// here the house*--
								
								txt +='</td>';
								if(rcount*rows_count == ii+1) 
								{	
									rcount++;
									if(ii+1 < hss) txt+='</tr><tr>';
								};
							};
							//
							//
							txt += '</tr></table></div></address:begin>';
						};
						txt += '</td></tr></table>';
						if(i<(alads.length-1)) txt += '<hr style="height=1px;color:#DFDFDF">';
						ttli++;
					};
					txt += '</span></cat:begin>';
					catvc++;
				};
				//АДРЕСА--
				
				//GEOB++
				if(nota.length > 0)
				for(nota_x=0;nota_x<nota.length;nota_x++)
				{
					var alads = getElementsByTagName2(nota[nota_x],"item");
					// HEADER
					txt += '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table"><tr onClick="collapseCat('+catvc+');"><td style="cursor:default;" style="cursor:pointer;">&nbsp;<img id="cat_i'+catvc+'" src="newstyle/pan_close.gif" border="0" class="catname" vspace="2"></td><td width="100%" valign="middle" style="cursor:pointer;"><a name="cat'+catvc+'" style="cursor:pointer;"></a>&nbsp;<span class="catname" onMouseUp="NoMenu('+catvc+');">'+nota[nota_x].getAttribute('type')+'</span></td><td align="right" style="cursor:pointer;">&nbsp;&nbsp;&nbsp;</td><td align="right" width="40" class="catname"><span id="strs'+(x == 0 ? '0' : '')+'">'+parseInt(nota[nota_x].getAttribute('items'))+'</span>&nbsp;</td></tr></table>';
					// BODY
					txt += '<cat:begin><span id="cat_s'+catvc+'" style="display:none;">';
					if(par != 0) if(nota[nota_x].getAttribute('type').substr(0,3) == 'нас') ttt = catvc;
					for(i=0;i<alads.length;i++) 
					{
						var elem = alads[i];
						// ITEMS
						txt+= '<b>'+(i+1)+'</b>. &nbsp;';
						txt+= '<span id="sres'+ttli+'">';
						//
						todo = "selectobjM("+parseInt(elem.getAttribute("cx"))+','+parseInt(elem.getAttribute("cy"))+','+elem.getAttribute("zoom")+',\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+parseInt(elem.getAttribute("idil"))+',\''+elem.getAttribute("layer")+'\',\''+nota[nota_x].getAttribute('type')+'\','+ttli+')';
						if(par == 1) todo = "selectobj0('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+relem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+");SearchNear();";
				 
						if(par == 2) todo = "selectobjS('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				 
						if(par == 3) todo = "selectobjF('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+elem.getAttribute("parent")+"');";
				  
						if(par == 0) todohint = 'Показать объект'; else todohint = 'Выбрать объект';
						
						if(!navigate_first_ok)
						{
							navigate_first_ok = true;
							navigate_first_obj = todo;
						};
				  		var tridname='';
						if (elem.getAttribute("tridname")!='') tridname='('+elem.getAttribute("tridname")+')';
						txt += '<span id="sres'+ttli+'">&nbsp;<a onMouseOver="ittShow(event,\'sres'+ttli+'\',\''+ReplaceQuotes(elem.getAttribute("full"))+'\',\''+nota[nota_x].getAttribute('type')+' <br/>'+tridname+'\',\''+elem.getAttribute("parent")+'\');" onMouseOut="ittHide(event,\'sres'+ttli+'\');" id="url'+ttli+'" onMouseMove="window.status=\''+todohint+'\';" href="javascript:'+todo+'"  onMouseUp="RPDAMENU(this,\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+elem.getAttribute("cx")+','+elem.getAttribute("cy")+',\''+elem.getAttribute("layer")+'\','+elem.getAttribute("idil")+');">'+ReplaceQuotes(elem.getAttribute("full"))+(nota[nota_x].getAttribute('type') != 'населенные пункты0' ? ', <small>'+elem.getAttribute("tridname")+'</small>' : '')+'</a></span><br/><small style="color:#333333;">'+elem.getAttribute("parent")+'</small><br/>';
				  
				  	txt += '</span>';
				  
						txt += '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td width="50%" align="left">&nbsp;';
				  
						if(par == 0) txt += SearchMenu(elem.getAttribute("full"),elem.getAttribute("cx"),elem.getAttribute("cy"),elem.getAttribute("layer"),elem.getAttribute("idil"),MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1,true);
						
						txt += '</td><td width="50%" align="right">&nbsp;</td></tr></table>';
						
						if(i<(alads.length-1)) txt += '<hr style="height=1px;color:#DFDFDF">';
						ttli++;
					};
					txt += '</span></cat:begin>';
					catvc++;
				};
				//GEOB--
				
				//kontent++
				if(kont.length > 0)
				for(kont_x=0;kont_x<kont.length;kont_x++)
				{
					var alads = getElementsByTagName2(kont[kont_x],"item");
					// HEADER
					txt += '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table"><tr onClick="collapseCat('+catvc+');"><td style="cursor:default;" style="cursor:pointer;">&nbsp;<img id="cat_i'+catvc+'" src="newstyle/pan_close.gif" border="0" class="catname" vspace="2"></td><td width="100%" valign="middle" style="cursor:pointer;"><a name="cat'+catvc+'" style="cursor:pointer;"></a>&nbsp;<span class="catname" onMouseUp="NoMenu('+catvc+');">'+kont[kont_x].getAttribute('type')+'</span></td><td align="right" style="cursor:pointer;">&nbsp;&nbsp;&nbsp;</td><td align="right" width="40" class="catname"><span id="strs'+(x == 0 ? '0' : '')+'">'+parseInt(kont[kont_x].getAttribute('items'))+'</span>&nbsp;</td></tr></table>';
					// BODY
					txt += '<cat:begin><span id="cat_s'+catvc+'" style="display:none;">';
					for(i=0;i<alads.length;i++) 
					{
						var elem = alads[i];
						// ITEMS
						txt+= '<b>'+(i+1)+'</b>. &nbsp;';
						txt+= '<span id="sres'+ttli+'">';
						//
						todo = "selectobjM("+parseInt(elem.getAttribute("cx"))+','+parseInt(elem.getAttribute("cy"))+','+elem.getAttribute("zoom")+',\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+parseInt(elem.getAttribute("idil"))+',\''+elem.getAttribute("layer")+'\',\''+kont[kont_x].getAttribute('type')+'\','+ttli+')';
						if(par == 1) todo = "selectobj0('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+relem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+");SearchNear();";
				 
						if(par == 2) todo = "selectobjS('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+ReplaceQuotes(elem.getAttribute("address"))+"');";
				 
						if(par == 3) todo = "selectobjF('"+ReplaceQuotes(elem.getAttribute("full"))+"',"+elem.getAttribute("cx")+","+elem.getAttribute("cy")+",'"+elem.getAttribute("layer")+"',"+elem.getAttribute("idil")+",'"+ReplaceQuotes(elem.getAttribute("address"))+"');";
				  
						if(par == 0) todohint = 'Показать объект'; else todohint = 'Выбрать объект';
						
						if(!navigate_first_ok)
						{
							navigate_first_ok = true;
							navigate_first_obj = todo;
						};
				  
						txt += '<span id="sres'+ttli+'">&nbsp;<a onMouseOver="ittShow(event,\'sres'+ttli+'\',\''+ReplaceQuotes(elem.getAttribute("full"))+'\',\''+kont[kont_x].getAttribute('type')+'\',\''+ReplaceQuotes(elem.getAttribute("address"))+'\');"  id="url'+ttli+'" onMouseOut="ittHide(event,\'sres'+ttli+'\');" id="url'+ttli+'" onMouseMove="window.status=\''+todohint+'\';" href="javascript:'+todo+'"  onMouseUp="RPDAMENU(this,\''+ReplaceQuotes(elem.getAttribute("full"))+'\','+elem.getAttribute("cx")+','+elem.getAttribute("cy")+',\''+elem.getAttribute("layer")+'\','+elem.getAttribute("idil")+');">'+ReplaceQuotes(elem.getAttribute("full"))+'</a></span>' + (elem.getAttribute("address") != '' ? ', ': '')+ '<small style="color:#333333;">'+ReplaceQuotes(elem.getAttribute("address"))+'</small><br/>';
				  
						txt += '</span>';
				  
						txt += '<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td width="50%" align="left">&nbsp;';
				  
						if(par == 0) txt += SearchMenu(elem.getAttribute("full"),elem.getAttribute("cx"),elem.getAttribute("cy"),elem.getAttribute("layer"),elem.getAttribute("idil"),MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1,true);
						
						txt += '</td><td width="50%" align="right">&nbsp;</td></tr></table>';
						
						if(i<(alads.length-1)) txt += '<hr style="height=1px;color:#DFDFDF">';
						
						ttli++;
					};
					txt += '</span></cat:begin>';
					catvc++;
				};
				//kontent--
				txt += '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table_end"><tr><td>&nbsp;&nbsp;<a name="catb" href="javascript:document.location=\'#cat\';SetLoc();"><img name="catb" src="oldstyle/_redesign_up.gif" border="0" alt="Перейти вверх"/></a></td><td align="right"><a name="catb" href="javascript:document.location=\'#cat\';SetLoc();"><img name="catb" src="oldstyle/_redesign_up.gif" border="0" alt="Перейти вверх"/></a>&nbsp;&nbsp;</td></tr></table>';
				if(par == 0) list.innerHTML = txt + "<br/>";
				if(par == 2) 
				{
					setLoading(false);
					SetLoc();
					return txt;
				};
				if(par == 3) 
				{
					setLoading(false);
					SetLoc();
					return txt;
				};
				
				//пляжи
				if(navigate_first_ok && !beachFlag) setTimeout(navigate_first_obj,100);
				
				if(catvc > 0) collapseCat(0);
				
				exitRes = res;
		   };
		}; 
/*

*/
		setLoading(false);
		if (t==0)
			SetLoc("&s=" + (document.forms['SearchForm0'].elements[0].value));
		else
			SetLoc("&c=" + (document.forms['SearchForm1'].elements[0].value));
		return exitRes;
	}	
	
	function SearchAddr_old(par) // 1 - where; 2 - from; 3 - to
	{
		if(par == null) par = 0;
		exitRes = new Array();

		document.forms["SearchForm0"].elements[0].value = ReplaceString(document.forms["SearchForm0"].elements[0].value,"'","`");
		document.forms["SearchForm0"].elements[0].value = ReplaceString(document.forms["SearchForm0"].elements[0].value,'"',"``");		
		if(!checksyntax(document.forms["SearchForm0"].elements[0].value)) { alert("Вы ввели недопустимый запрос для поиска!"); return;};
     	var list = gE("SearchRES");
		setLoading(true);
		list.innerHTML = "Подождите...";
		window.status = "Загрузка данных, подождите..."
		var myo = new WMSClient();
	    myo.setUrl(site_url);
	    var res = myo.SearchGlobal(MAP.name,document.forms["SearchForm0"].elements[0].value,0);
		window.status = '';
		if(res.error == true)
		{
			 alert("Error #"+res.code+": "+res.string); 
			 list.innerHTML = "Ошибка, повторите операцию позже<br/>";
	    }
		else 
		{
			var day = new Date();
  			day.setDate(day.getDate()+90) ;
			setCookie("map_"+mapID+"_SearchAddr", document.forms["SearchForm0"].elements[0].value, day);
			
		   if((res.length) == 0)
		   {
		   		list.innerHTML = '<table class="findreslnk" border="0" width="100%" cellpadding="0" cellspacing="0" ><tr><td colspan="2" align="left">&nbsp;&nbsp;Вы искали: <span class="searchreq" style="cursor:pointer;" onClick="document.forms[\'SearchForm'+t+'\'].elements[0].value=\''+document.forms["SearchForm"+t].elements[0].value.toLowerCase()+'\';">' + document.forms[0].elements[0].value.toLowerCase()  + '</span></td></tr><tr><td style="border-top:solid 1px #cccccc">&nbsp;&nbsp;Найдено объектов:</td><td align="right" style="border-top:solid 1px #cccccc">0&nbsp;&nbsp;&nbsp;</tr></td></tr></table><br/>';
		   }
		   else
		   {	
		   		var zer = 0;
		   		var txt = '<a name="cat"></a>'
				txt += '<table class="findreslnk" border="0" width="100%" cellpadding="0" cellspacing="0" ><tr><td colspan="2" align="left">&nbsp;&nbsp;Вы искали: <span class="searchreq" style="cursor:pointer;" onClick="document.forms[\'SearchForm0\'].elements[0].value=\''+document.forms["SearchForm0"].elements[0].value.toLowerCase()+'\';">' + document.forms[0].elements[0].value.toLowerCase()  + '</span>';
				var cat = ''; var catv = new Array(); var catvn = new Array(); // для категорий
				// для категорий
				catvc = -1;
				for(x=0;x<res.length;x++) 
				{
  				  if(cat != res[x].cathegory)
				  {
					cat = res[x].cathegory;
					catvc ++;
					//txt += ''+cat+'<br/>';
					catv[catvc] = 1;
					catvn[catvc] = cat;
				  } else { catv[catvc]++; };
				};
				cat = '';
				catvc = -1;	
				txt += '</td></tr><tr><td style="border-top:solid 1px #cccccc">&nbsp;&nbsp;Найдено объектов:</td><td align="right" style="border-top:solid 1px #cccccc"><span id="reslength">'+res.length+'</span>&nbsp;&nbsp;&nbsp;</tr></td></tr></table><br/>';
				
				// for same street address
				var prev_a = ''; var ccount = 0; var cindex = 0; var cbeg = false;
				
		   		for(x=0;x<res.length;x++)
				{
				  var PS = new sPictSize(mapw,maph);
				  var SO = new sShowObj(res[x].layer_name,res[x].object_id, false,"",res[x].cathegory);
				  var SS = new sShowSigned(res[x].zoom_point.center_x,res[x].zoom_point.center_y,res[x].object_name);
				  
				  // для категорий
				  change_cathegory = false;
				  if(cat != res[x].cathegory)
				  {
				    change_cathegory = true;
					cat = res[x].cathegory;
					catvc++;
					
					// для улиц
					if (ccount > 0 && cbeg) { cbeg = false; txt += ((nulled > 0 && nulled < rows_count)? '<td colspan="'+(rows_count-nulled)+'">&nbsp;</td>' : '') +'</tr></table></address></div><hr style="height=1px;color:#DFDFDF">'; }	
					
					ccount = 0;
					cbeg = false;
					
					if(x > 0) txt += '</span></cat>'; // МАРКЕР КАТЕГОРИЙ
					zer = x;
					txt += '<table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table"><tr onClick="collapseCat('+catvc+');"><td style="cursor:default;" style="cursor:pointer;">&nbsp;<img id="cat_i'+catvc+'" src="newstyle/pan_close.gif" border="0" class="catname" vspace="2"></td><td width="100%" valign="middle" style="cursor:pointer;"><a name="cat'+catvc+'" style="cursor:pointer;"></a>&nbsp;<span class="catname" onMouseUp="NoMenu('+catvc+');">' + cat.toLowerCase() + '</span></td><td align="right" style="cursor:pointer;">&nbsp;&nbsp;&nbsp;</td><td align="right" width="40" class="catname"><span id="strs'+(x == 0 ? '0' : '')+'">'+catv[catvc]+'</span>&nbsp;</td></tr></table><cat:begin><span id="cat_s'+catvc+'" '+(catv.length == 1 ? '' : 'style="display:none;"')+'><br/>';
				  };
				  
				  // для улиц
				  if(res[x].object_name.indexOf("&sbquo;") > -1 || res[x].object_name.indexOf("&nbsp;") > -1)
				  {
				  	tmp = res[x].object_name.substring(0,res[x].object_name.indexOf("&nbsp;")-1);
				  	if(res[x].object_name.indexOf("&sbquo;") > -1) tmp = res[x].object_name.substring(0,res[x].object_name.indexOf("&sbquo;")-1);
					if(tmp == prev_a && change_cathegory == false) 
					{
						ccount++;
						if(ccount == 1) 
						{	
							
							txt = txt.substring(0,txt.length - 37);
							txt += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="cc'+cindex+'_h" align="right"><a style="color:#0000AA;" href="javascript:SetLoc();" onClick="cchange('+cindex+');"><sub>список зданий...</sub></a>&nbsp;</span>';
							txt += '<address:begin><div id="cc'+cindex+'" style="display:none;">';
							txt += '<table cellspacing="0" cellpadding="0" class="house"><tr>';
							cbeg = true;
						};
					};
					if(tmp != prev_a || change_cathegory == true)
					{
						ccount = 0;
						cindex++;
					};
				  	prev_a = tmp;

				  };	
				  if (ccount == 0 && cbeg) { cbeg = false; txt += ((nulled > 0 && nulled < rows_count)? '<td colspan="'+(rows_count-nulled)+'">&nbsp;</td>' : '') +'</tr></table></address></div><hr style="height=1px;color:#DFDFDF">'; }				  

				res[x].full_name = res[x].object_name;
				if(cbeg) 
				{
					nulled++;
					res[x].object_name = res[x].object_name.substring(res[x].object_name.indexOf("&sbquo;")+8,res[x].object_name.length);
					if(nulled == (rows_count+1)) { nulled = 1; txt +='</tr><tr>'; };
					txt += '<td height="22" width="40" align="center" valign="middle" onMouseOver="this.style.background=\'#CCCCCC\';" onMouseOut="this.style.background=\'#FFFFFF\';" onMouseUp="RPDAMENU(this,\''+res[x].full_name+'\','+res[x].zoom_point.center_x+','+res[x].zoom_point.center_y+',\''+res[x].layer_name+'\','+res[x].object_id+');">';
				}
				else
				{
					nulled = 0;
					index_b = res[x].object_name.indexOf("(");
					index_e = res[x].object_name.indexOf(")");
					index_t = res[x].object_name.substring(index_b,index_e+1);
					res[x].object_name = res[x].object_name.substring(0,index_b) + res[x].object_name.substring(index_e+1,255) + ' <small style=\'color:#666666;\'>' + index_t + '</small>';
					txt += '<b>'+(res[x].cathegory.toLowerCase() == 'адреса и улицы' ? (cindex > 0 ? cindex : x+1-zer) : (x+1-zer)) + '</b>. ';
				};
				
				 todo = 'cx='+res[x].zoom_point.center_x+';cy='+res[x].zoom_point.center_y+(res[x].zoom_point.zoom == 0 ? '' : ';zoom='+res[x].zoom_point.zoom)+';markert='+(res[x].layer_name == '' ? '\''+res[x].full_name + '\';markerx=cx;markery=cy' : '\'\'')+';id='+res[x].object_id+';lay=\''+res[x].layer_name+'\';label=\''+res[x].full_name+'\';my_cat=\''+res[x].cathegory+'\';SetMap();Selsres('+x+')';
				 
				 if(par == 1) todo = "selectobj0('"+ReplaceQuotes(res[x].full_name)+"',"+res[x].zoom_point.center_x+","+res[x].zoom_point.center_y+",'"+res[x].layer_name+"',"+res[x].object_id+");SearchNear();";
				 
				 if(par == 2) todo = "selectobjS('"+ReplaceQuotes(res[x].full_name)+"',"+res[x].zoom_point.center_x+","+res[x].zoom_point.center_y+",'"+res[x].layer_name+"',"+res[x].object_id+");";
				 
				  if(par == 3) todo = "selectobjF('"+ReplaceQuotes(res[x].full_name)+"',"+res[x].zoom_point.center_x+","+res[x].zoom_point.center_y+",'"+res[x].layer_name+"',"+res[x].object_id+");";
				  
				  if(par == 0) todohint = 'Показать объект'; else todohint = 'Выбрать объект';
				  
				  txt += '<span id="sres'+x+'">&nbsp;<a id="url'+x+'" onMouseMove="window.status=\''+todohint+'\';" href="javascript:'+todo+'"  onMouseUp="RPDAMENU(this,\''+res[x].full_name+'\','+res[x].zoom_point.center_x+','+res[x].zoom_point.center_y+',\''+res[x].layer_name+'\','+res[x].object_id+');">'+res[x].object_name+'</a>&nbsp;</span><br/>';
				  
				  if(par == 0 && !cbeg) txt += SearchMenu(res[x].object_name,res[x].zoom_point.center_x,res[x].zoom_point.center_y,res[x].layer_name,res[x].object_id,MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1);
				  
				  if(!cbeg) txt += '<hr style="height=1px;color:#DFDFDF">'; else txt += '</td>';			
				  
				  // для улиц
				};
				
				// для улиц
				if (ccount > 0 && cbeg) { cbeg = false; txt += ((nulled > 0 && nulled < rows_count) ? '<td colspan="'+(rows_count-nulled)+'">&nbsp;</td>' : '') +'</tr></table></address></div><hr style="height=1px;color:#DFDFDF">'; }	
				
				txt += '</span></cat><table border="0" width="100%" cellpadding="0" cellspacing="0" class="cat_table_end"><tr><td>&nbsp;&nbsp;<a name="catb" href="javascript:document.location=\'#cat\';SetLoc();"><img name="catb" src="oldstyle/_redesign_up.gif" border="0" alt="Перейти fвверх"/></a></td><td align="right"><a name="catb" href="javascript:document.location=\'#cat\';SetLoc();"><img name="catb" src="oldstyle/_redesign_up.gif" border="0" alt="Перейти вверх"/></a>&nbsp;&nbsp;</td></tr></table><br/>';
				if(par == 0 || res.length != 1) 
				{
					list.innerHTML = txt;
					// улиц + всего
					if(catvn[0].toLowerCase() == 'адреса' && cindex > 0) 
					{
						gE("strs0").innerHTML = cindex;
						gE("reslength").innerHTML = (res.length - catv[0] + cindex);
					};
				};
				exitRes = res;
		   };
		}; 
/*

*/
		setLoading(false);
		return exitRes;
	}	
		
	/////////////// МАРШРУТЫ
	function Way()
	{
		this.start = new Object();
		this.end = new Object();
		this.text = "";
		return this;
	};
	Way.prototype = {};
	Way.prototype.Prepare = function()
	{
		this.SetText('');
	};
	
	var ttt = 0;
	Way.prototype.SetText = function(text)
	{
		gE("SearchRES").innerHTML = text;
		if(gE("cat_s0")) collapseCat(ttt);
	};	
	
	Way.prototype.Search = function(start)
	{
		var tmp0 = document.forms["SearchForm0"].elements[0].value;
		document.forms["SearchForm0"].elements[0].value = start ? this.start : this.end;
		exitRes = SearchAddr(start ? 2 : 3, 0);
		document.forms["SearchForm0"].elements[0].value = tmp0;
		this.text = exitRes;
	};
	
	Way.prototype.SelStart = function(text)
	{
		this.start = text;
		this.Search(true);
		return this.text;
	};
	
	Way.prototype.SelEnd = function(text)
	{
		this.end = text;
		this.Search(false);
		return this.text;
	};
	
	function ReplaceWay()
	{
		if(!ns) ns_empty1 = gE("in_s1").empty;
		if(!ns) ns_empty2 = gE("in_s2").empty;
		
		if(!ns) { ns_cx1 = gE("in_s1").cx; ns_cy1 = gE("in_s1").cy; ns_cx2 = gE("in_s2").cx; ns_cy2 = gE("in_s2").cy; };
		
		if(ns_empty1 == 'empty' || ns_empty1 != gE("in_s1").value)
		{
			if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value)
			{
				var tmp = gE("in_s1").value; 
				gE("in_s1").value = gE("in_s2").value;
				gE("in_s2").value = tmp;
				return false;
			}
			else
			{
				var tmp = gE("in_s1").value; 
				var tm2 = gE("in_s2").value;
				gE("in_s2").value = tmp;
				r2 = false;
				selectobjS(tm2,ns_cx2,ns_cy2,'',0);
				return;
			};
		}
		else
		{
			if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value)
			{
				var tmp = gE("in_s2").value; 
				var tm1 = gE("in_s1").value;
				gE("in_s1").value = tmp;
				r1 = false;
				selectobjF(tm1,ns_cx1,ns_cy1,'',0);
				return;
			};
		};
		ReverseWay();		
	};
	
	function ReverseWay()
	{
		return false;
	};
	
	function NewWay()
	{
		gE("in_s1").value = "";
		gE("in_s2").value = "";
		route_url='';
		SetMap();
		try
		{
			document.forms[2].elements[0].select();
			document.forms[2].elements[0].focus();
		} catch (e) {};
	};
	
	var pt = '';
	function PWay()
	{
		if(gE("pppt").innerHTML == 'убрать с карты') 
		{
			pt = route_url;
			route_url = '';
			gE("pppt").innerHTML = 'показать на карте';
			gE("h2hide").innerHTML = '';
			gE("h3hide").innerHTML = '';
			SetMap();
		}
		else
		{
			route_url = pt;
			gE("pppt").innerHTML = 'убрать с карты';
			gE("h2hide").innerHTML = '<u>во всю карту</u>';
			gE("h3hide").innerHTML = ', ';
			SetMap();
		};
		setLoading(false);
	};
	/////////////// МАРШРУТЫ
	
	function SearchRoute(b_fromInfoTool)
	{
		if(mapID == 4) 
		{
			alert('Тестовая версия!\nМаршруты временно недоступны!\n\nПриносим свои извинения.');
			return;
		};
		
		if(b_fromInfoTool) 
		{
			if(gE("in_s2").value == '' || gE("in_s1").value == '') 
			{
				setLoading(true); 
				SetMap();
				return;
			};
		};
		
		clearTimeout(itt_timeout); //itt_timeout = setTimeout('itt_close(10)',1); itt_over_flag=false; 
		gE('infotooltip').style.width = 0;
		gE('infotooltip').style.visibility = 'hidden';
		
		if(!ns) ns_empty1 = gE("in_s1").empty;
		if(!ns) ns_empty2 = gE("in_s2").empty;
		var xxt = 0;
		if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value) xxt++;
		if(ns_empty1 == 'empty' || ns_empty1 != gE("in_s1").value) xxt++;
		if(xxt > 0) 
		{
			setLoading(true); 
		}
		else 
		{
			setLoading(true,'Построение маршрута...');
			//setTimeout('SetMap()',25); //отобр значка
		
			var aaa = "<b>Маршрут</b><br/>";
			aaa += '<span style="color:#343264;"><b>От</b></span> &nbsp;&nbsp;'+gE("in_s1").value+'<br/>';
			if(select_obj_route_s_desc) aaa += '<sup  style="line-height:1.2;">'+select_obj_route_s_desc+'</sup><br/>';
			aaa += '<span style="color:#343264;"><b>До</b></span> &nbsp;&nbsp;'+gE("in_s2").value+'<br/>';
			if(select_obj_route_f_desc) aaa += '<sup  style="line-height:1.2;">'+select_obj_route_f_desc+'</sup><br/>';
			gE("SearchRES").innerHTML = aaa;
			
			var day = new Date();
  			day.setDate(day.getDate()+90) ;
  			setCookie("map_"+mapID+"_lastRouteS", gE("in_s1").value, day);
			setCookie("map_"+mapID+"_lastRouteF", gE("in_s2").value, day);
		};

		setTimeout('SearchRouteA()',100);
	}
	
	function SearchRouteA()
	{
		//return;
		var way = new Way();
		//way.Prepare();
		if(!ns) ns_empty1 = gE("in_s1").empty;
		if(!ns) ns_empty2 = gE("in_s2").empty;
		var step_s = gE("in_s1").value; if(step_s.length < 1) step_s = "...";
		var step_e = gE("in_s2").value; if(step_e.length < 1) step_e = "...";
		var step = "";
		if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value) step = "(Шаг <b>2</b>)";
		if(ns_empty1 == 'empty' || ns_empty1 != gE("in_s1").value) 
		{
			step = "(Шаг <b>2</b>)";
			if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value) step = "(Шаг <b>1</b>)";
		};
		
		var txt = "<b>Маршрут</b> "+step+"<br/>";
		txt += '<span style="color:#343264;"><b>От</b></span> &nbsp;&nbsp;'+gE("in_s1").value+'<br/>';
		if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value)
		if(select_obj_route_s_desc) txt += '<sup style="line-height:1.2;">'+select_obj_route_s_desc+'</sup><br/>';
		if(ns_empty1 == 'empty' || ns_empty1 != gE("in_s1").value)
		{
			txt += "<br/><span style=\"color:red;\"><smaller>Уточните <b>начало</b> маршрута:</smaller></span><br/>";
			// choose Form
				txt += way.SelStart(step_s) + "<br/>";
			//
			txt += '<span style="color:#343264;"><b>До</b></span> &nbsp;&nbsp;'+gE("in_s2").value+'<br/>';
			if(select_obj_route_f_desc) txt += '<sup style="line-height:1.2;">'+select_obj_route_f_desc+'</sup><br/>';
			way.SetText(txt);
			return false;
		};
		
		//return false;
		
		document.forms["SearchForm0"].elements[0].value = gE("in_s1").value;
		
		txt += '<span style="color:#343264;"><b>До</b></span> &nbsp;&nbsp;'+gE("in_s2").value+'<br/>';
		if(ns_empty1 == 'empty' || ns_empty1 != gE("in_s1").value)
		if(select_obj_route_f_desc) txt += '<sup style="line-height:1.2;">'+select_obj_route_f_desc+'</sup><br/>';
		if(ns_empty2 == 'empty' || ns_empty2 != gE("in_s2").value)
		{
			txt += "<br/><span style=\"color:red;\"><smaller>Уточните <b>окончание</b> маршрута:</smaller></span><br/>";
			// choose Form
				txt += way.SelEnd(step_e) + "<br/>";
			//
			way.SetText(txt);
			return false;
		};
		//all is set ok//
		
		setLoading(true);
		window.status = "Загрузка данных, подождите..."
		var myo = new WMSClient();
	    myo.setUrl(site_url);
	
		if(!ns) { ns_cx1 = gE("in_s1").cx; ns_cy1 = gE("in_s1").cy; ns_cx2 = gE("in_s2").cx; ns_cy2 = gE("in_s2").cy; };
		var res = myo.RouteCalculate(MAP.name,MAP.graph,parseInt(ns_cx1),parseInt(ns_cy1),parseInt(ns_cx2),parseInt(ns_cy2),true);
		window.status = "";
		if(res.error == true)
		{
			 alert("Error #"+res.code+": "+res.string); 
			 txt += "<br/><b>Ошибка, повторите операцию позже</b><br/>Если ошибка будет повторятся, обратитесь к системному администратору!";
			 way.SetText(txt);
			 setLoading(false);
			 return false;
	    }
		else
		{
			if (!res.ok) 
			{ 
			  txt += "<br/><b>Не удалось построить маршрут!</b>";	
			  way.SetText(txt);
			  setLoading(false);
			  alert("Не удалось построить маршрут!"); 
			  return false;
			};
		};
		//setLoading(true);
		CloseMarker2();
		txt = "<b>Маршрут</b> "+step+"<br/>";
		
		ccx = Math.round((res.maxx - res.minx)/2);
		ccy = Math.round((res.maxy - res.miny)/2);
		ccz = (ccx > ccy ? Math.round(ccx * 3) : Math.round(ccy * 3)) + 8000;
		var fl = '<a onMouseMove="window.status=\'Показать объект\';" href="javascript:SetMap();SetLoc();" onClick="markert=\'\';cx='+(res.minx+ccx)+';cy='+(res.miny+ccy)+';zoom='+(ccz)+';">';
		
		//во весь экран
		cx=res.minx+ccx;
		cy=res.miny+ccy;
		zoom=ccz;
		ReverseWay = new Function('','selectobjFS(\''+gE("in_s2").value+'\','+ns_cx2+','+ns_cy2+',\''+gE("in_s1").value+'\','+ns_cx1+','+ns_cy1+');return false;');
		
		GetRoute = new Function('','window.open("/getpict/route_exp.aspx?map='+escape(MAP.name)+'&gn='+escape(MAP.graph)+'&fx='+ns_cx1+'&fy='+ns_cy1+'&tx='+ns_cx2+'&ty='+ns_cy2+'&ft='+escape(gE("in_s1").value)+'&tt='+escape(gE("in_s1").value)+'","Export","height=300,width=370,SCROLLBARS=NO");');
		
		// проложить: <a href="javascript:SetLoc();" onClick="NewWay();" onMouseMove="window.status=\'проложить новый маршрут\'" title="проложить новый маршрут"><u>новый</u></a> | 
		txt += '<table border="0" width="100%" cellpadding="0" cellspacing="3"><tr><td align="right"><sub>';		
		txt += '<a href="javascript:SetLoc();" onClick="setLoading(true,\'Построение маршрута...\');setTimeout(\'ReverseWay()\',50);" onMouseMove="window.status=\'проложить обратный маршрут\'" title="проложить обратный маршрут"><u>обратный</u></a>, '+fl+'<span id="h2hide"><u>во всю карту</u>,</span></a> <span id="h3hide"></span> <a href="javascript:PWay();SetLoc();" onMouseMove="window.status=\'убрать с карты маркеры и маршрут\'" title="убрать с карты маркеры и маршрут"><u><span id="pppt">убрать с карты</span></u></a>';
		//txt += ', <a href="javascript:GetRoute();" onMouseMove="window.status=\'Получить маршрут\'" title="Получить маршрут"><u>экспорт</u></a>';
		txt += '</sup></td></tr></table><br/>';		
		if(!ns) { ns_cx1 = gE("in_s1").cx; ns_cy1 = gE("in_s1").cy; ns_cx2 = gE("in_s2").cx; ns_cy2 = gE("in_s2").cy; };
		
		txt += '<span style="color:#343264;"><b>От</b></span> &nbsp;&nbsp;<a onMouseMove="window.status=\'Показать объект\';" href="javascript:SetMap();SetLoc();" onClick="markerx='+ns_cx1+';markery='+ns_cy1+';markert=\''+gE("in_s1").value+'\';cx=markerx;cy=markery;"  onMouseUp="RPDAMENU(this,\''+gE("in_s1").value+'\','+ns_cx1+','+ns_cy1+',\'\',0);">'+gE("in_s1").value+'</a>&nbsp;&nbsp;<br/><sup style="line-height:1.2;">'+select_obj_route_s_desc+'</sup><br/>';//+SearchMenu(gE("in_s1").value,ns_cx1,ns_cy1,'','',MAP.allowsearch[0] == 1,false)+'<br/>';
		txt += '<span style="color:#343264;"><b>До</b></span> &nbsp;&nbsp;<a onMouseMove="window.status=\'Показать объект\';" href="javascript:SetMap();SetLoc();" onClick="markerx='+ns_cx2+';markery='+ns_cy2+';markert=\''+gE("in_s2").value+'\';cx=markerx;cy=markery;" onMouseUp="RPDAMENU(this,\''+gE("in_s2").value+'\','+ns_cx2+','+ns_cy2+',\'\',0);">'+gE("in_s2").value+'</a>&nbsp;&nbsp;<br/><sup style="line-height:1.2;">'+select_obj_route_f_desc+'</sup><br/>';//+SearchMenu(gE("in_s2").value,ns_cx2,ns_cy2,'','',MAP.allowsearch[0] == 1,false)+'<br/>';
		var ttm = Math.round(res.time);
		var ttm_d = parseInt(ttm / 60 / 24);
		var ttm_h = parseInt((ttm - ttm_d * 60 * 24) / 60)
		var ttm_m = parseInt(ttm - ttm_d * 60 * 24  - ttm_h * 60);
		if (ttm_m < 10) ttm_m = '0'+ttm_m;
		ttm_d = ttm_d > 0 ? ttm_d + ' дн. ' : '';
		
		txt += '<span style="color:#343264;"><b>Время</b></span><span> &nbsp;&nbsp;'+ttm_d+' '+ttm_h+' ч. '+ttm_m+' м.</span><br/>';
		len = Math.round(res.length/10)/100;
		txt += '<span style="color:#343264;"><b>Расстояние</b></span><span> &nbsp;&nbsp;'+len+' км</span><br/>';
		txt += '<span style="color:#343264;"><b>Средняя скорость</b></span><span> &nbsp;&nbsp;'+(Math.round(36*(res.length/(res.time*60)))/10)+' км/ч</span><br/>';
		txt += '<span style="color:#343264;"><small><b>Экспорт точек</b></span><span>';
		txt += ' - <a href="javascript:GetRoute();"><u>выбрать формат</u></a>...</small>';
		txt += '</span><br/>';
		//ОПИСАНИЕ
		txt += '<table border="0" width="100%" cellpadding="0" cellspacing="3"><tr><td align="center"><sub><a href="javascript:SetLoc();" onClick="showroute();" onMouseMove="window.status=\'описание маршрута\'" title="описание маршрута"><u><span id="dhide">показать описание</span></u></a></sup></td></tr></table><br/>';	
		
		var vtxt = '<div id="routetxtzone" style="display:none;visible:hidden;"><table id="routetxttable" style="font-size:9px;color:#343264;font-weight:bold;border:solid 1px #edd57b;background:#fcf2bd;width:242px;" border="0" cellspacing="0" cellpadding="0" width="242"><tr>'+
			'<td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="21">&nbsp;№</td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="41">&nbsp;Км</td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="53">&nbsp;Время</td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="45">&nbsp;Опис.</td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td>&nbsp;Дорога</td></tr></table>'+
			'<div id="routetxt" style="display:compact;overflow:auto;height:'+(maph-230)+'px;width:100%;">'+			
			'<table id="routetxttable" style="font-size:9px;color:black;border:solid 1px #edd57b;width:242px;" border="0" cellspacing="0" cellpadding="0" width="242">'+
			''
			;
			
			vtxt += '<tr valign="middle">'+
			'<td width="20"><div align="right" style="width:20px;display:block;overflow:hidden;font-size:8px;margin-right:2px;">&nbsp;0</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="40"><div align="right" style="width:40px;display:block;overflow:hidden;margin-right:1px;">&nbsp;</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="50"><div align="right" style="width:50px;display:block;overflow:hidden;margin-right:3px;">&nbsp;00:00</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="45"><div style="width:45px;display:block;overflow:hidden;">&nbsp;СТАРТ</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>' +
			'<td width="75"><div style="width:75px;display:block;overflow:hidden;">&nbsp;'+(res.RouteXML[0].road)+'</div></td></tr>';
			for(ii=1;ii<res.RouteXML.length;ii++)
			{
				var dd = res.RouteXML[ii].dist;
				dd = dd.substr(0,dd.length-3);
				dd = '<a href="javascript:SetMap();SetLoc();" onClick="markerx='+res.RouteXML[ii].x+';markery='+res.RouteXML[ii].y+';markert=\''+dd+' км, '+res.RouteXML[ii].type+'\';cx=markerx;cy=markery;"><u>'+dd+'</u></a>';
				
				var ttttt = '';
				if(res.RouteXML[ii].img1 != '') ttttt += '<img src="newstyle2/route_imgs/'+res.RouteXML[ii].img1+'"/> '; else ttttt += 'ФИНИШ';
				if(res.RouteXML[ii].img2 != '') ttttt += '<img src="newstyle2/route_imgs/'+res.RouteXML[ii].img2+'"/>';
				
				var tmp_time = res.RouteXML[ii].time;
				tmp_time_hh = tmp_time.substring(0,tmp_time.indexOf(':'));
				if(tmp_time_hh.length == 1) tmp_time_hh = '0'+tmp_time_hh;
				tmp_time_mm = tmp_time.substring(tmp_time.indexOf(':')+1,tmp_time.indexOf(':')+3);
				if(tmp_time_mm.length == 1) tmp_time_mm = '0'+tmp_time_mm;
				tmp_time = tmp_time_hh + ':' + tmp_time_mm;
				
				vtxt += '<tr valign="middle">'+
			'<td width="20"><div align="right" style="width:20px;display:block;overflow:hidden;font-size:8px;margin-right:2px;">&nbsp;'+(ii)+'</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="40"><div align="right" style="width:40px;display:block;overflow:hidden;margin-right:1px;">&nbsp;<b>'+(dd)+'</b></div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			'<td width="50"><div align="right" style="width:50px;display:block;overflow:hidden;margin-right:3px;">&nbsp;'+(tmp_time)+'</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>'+
			(mapID == 1 ? ('<td width="45"><div style="width:45px;display:block;overflow:hidden;">&nbsp;'+(res.RouteXML[ii].type)+'</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>') : ('<td width="45"><div style="width:45px;display:block;overflow:hidden;">&nbsp;'+ttttt+'</div></td><td width="1" style="background:#edd57b;"><img src="newstyle/devider.gif"/ width="1"></td>')) +
			'<td width="75"><div style="width:75px;display:block;overflow:hidden;">&nbsp;'+(res.RouteXML[ii].road)+'</div></td></tr>';
			};
		vtxt+='</table>'+
			'</div></div>';
		txt += vtxt;
		
		//alert(res.RouteXML.length);
		way.SetText(txt);

		route_url = res.url_params;		
		SetMap();
		
		setLoading(false);
		
		return false;
	};
		
	var routevis = false;
	function showroute()
	{
		if(routevis)
		{
			gE("routetxtzone").style.visible = "hidden";
			gE("routetxtzone").style.display = "none";
			gE("dhide").innerHTML = "показать описание";
		}
		else
		{
			gE("routetxtzone").style.visible = "";
			gE("routetxtzone").style.display = "block";
			gE("dhide").innerHTML = "скрыть описание";
		};
		routevis = !routevis;
	};
		
	
	//функции меню
	function NoMenu(catvc)
	{
		try{
		if(event.button != 2) return;
		} catch (e) { return; };
		popup_menu = true;
		collapseCat(catvc);
		return false;
	}
	
	
	// отображение категорий
	function cchange(cindex)
	{
		if (gE("cc"+cindex).style.display == 'none') 
		{
			gE("cc"+cindex).style.display = '';
		}
		else 
		{
			gE("cc"+cindex).style.display = 'none';
		};
	}
	
	
	function SetEx(par,t)
	{
		document.forms["SearchForm"+t].elements[0].value = par;	
		set_search_method(t);
	}
	function SetExS(parS,parF)
	{
		gE("in_s1").value = parS;	
		gE("in_s2").value = parF;	
		set_search_method(2);
	}
	
	///////////////////
	///////////////////
	//
	//
	//
	
	MapList.prototype = {};
	MapList.prototype.getMap = function(id)
	{
		for(i=0;i<this.mapList.length;i++) if(this.mapList[i].id == id) return this.mapList[i];
		return null;
	}
	MapList.prototype.getMapByName = function(name)
	{
		for(i=0;i<this.mapList.length;i++) if(this.mapList[i].name == name) return this.mapList[i];
		return null;
	}
	MapList.prototype.getMapByCaption = function(caption)
	{
		for(i=0;i<this.mapList.length;i++) if(this.mapList[i].caption == caption) return this.mapList[i];
		return null;
	}
	MapList.prototype.getMapByGraph = function(graph)
	{
		for(i=0;i<this.mapList.length;i++) if(this.mapList[i].graph == graph) return this.mapList[i];
		return null;
	}
	function MapList()
	{
		var xmlDoc;
		if(ie)
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async="false";
			xmlDoc.load("maps.xml");
		} 
		else if(ns)
		{
			myXMLHTTPRequest = new XMLHttpRequest();
			myXMLHTTPRequest.open("GET", "maps.xml", false);
			myXMLHTTPRequest.send(null);
			xmlDoc = myXMLHTTPRequest.responseXML;
		}
		else
		{
			xmlDoc = getXMLDoc(getXMLfile("maps.xml"));
		};
		this.mapList = new Array();
		if (xmlDoc.documentElement.nodeName == "maps")
		{
			skipped = 0;
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
			{
				// node.nodename, node.text
				node = xmlDoc.documentElement.childNodes.item(i);
				if(node.nodeName != "map") { skipped++; continue; };
				this.mapList[i-skipped] = new Object();
				this.mapList[i-skipped].id         = parseInt(node.getAttribute('id'));
				this.mapList[i-skipped].caption    = node.getAttribute('caption');
				this.mapList[i-skipped].name       = node.getAttribute('name');
				this.mapList[i-skipped].graph      = node.getAttribute('graph');
				this.mapList[i-skipped].mapgif0    = node.childNodes.item(ie ? 0 : 1).getAttribute('mapgif0');
				this.mapList[i-skipped].mapgif1    = node.childNodes.item(ie ? 0 : 1).getAttribute('mapgif1');
				this.mapList[i-skipped].images_file  =  "";
				this.mapList[i-skipped].ext_images_dir = "";
				this.mapList[i-skipped].ext_images_ext = "";
				for(x=0;x<node.childNodes.length;x++)
				{
					if(node.childNodes.item(x).nodeName == "copyright")
					{
						this.mapList[i-skipped].copyright = node.childNodes.item(x).childNodes[0].nodeValue;
					};
					if(node.childNodes.item(x).nodeName == "navi")
					{
						this.mapList[i-skipped].changemap  = parseInt(node.childNodes.item(x).getAttribute('changemap'));
						this.mapList[i-skipped].x0         = parseInt(node.childNodes.item(x).getAttribute('x0'));
						this.mapList[i-skipped].y0         = parseInt(node.childNodes.item(x).getAttribute('y0'));
						this.mapList[i-skipped].x1         = parseInt(node.childNodes.item(x).getAttribute('x1'));
						this.mapList[i-skipped].y1         = parseInt(node.childNodes.item(x).getAttribute('y1'));
						this.mapList[i-skipped].zoomchange = parseInt(node.childNodes.item(x).getAttribute('zoomchange'));
					};
					if(node.childNodes.item(x).nodeName == "custom")
					{
						this.mapList[i-skipped].legenda = parseInt(node.childNodes.item(x).getAttribute('legenda')) == 1;
						this.mapList[i-skipped].legendagif = node.childNodes.item(x).getAttribute('legendagif');
						this.mapList[i-skipped].address = parseInt(node.childNodes.item(x).getAttribute('address')) == 1;
						this.mapList[i-skipped].kontent = parseInt(node.childNodes.item(x).getAttribute('kontent')) == 1;
						this.mapList[i-skipped].objects = parseInt(node.childNodes.item(x).getAttribute('objects')) == 1;
						this.mapList[i-skipped].houses  = parseInt(node.childNodes.item(x).getAttribute('houses')) == 1;
					};
					if(node.childNodes.item(x).nodeName == "searchdata")
					{
						this.mapList[i-skipped].allowsearch = new Array();
						this.mapList[i-skipped].allowsearch[0] = parseInt(node.childNodes.item(x).getAttribute('allowsearch0'));
						// не спрашивайте почему так криво в файле 2-маршрут, 1-где, в коде наоборот
						this.mapList[i-skipped].allowsearch[2] = parseInt(node.childNodes.item(x).getAttribute('allowsearch2'));
						this.mapList[i-skipped].allowsearch[1] = parseInt(node.childNodes.item(x).getAttribute('allowsearch1'));
					};
					if(node.childNodes.item(x).nodeName == "int_layers_images") this.mapList[i-skipped].images_file = node.childNodes.item(x).getAttribute('xml_file') 
					if(node.childNodes.item(x).nodeName == "ext_layers_images") 
					{
						this.mapList[i-skipped].ext_images_dir = node.childNodes.item(x).getAttribute('dir');
						this.mapList[i-skipped].ext_images_ext = node.childNodes.item(x).getAttribute('extention');
					};
					if(node.childNodes.item(x).nodeName == "kontent_provider")
					{
						this.mapList[i-skipped].kontent_provider = new Object();
						this.mapList[i-skipped].kontent_provider.hint = node.childNodes.item(x).getAttribute('hint');
						this.mapList[i-skipped].kontent_provider.info = node.childNodes.item(x).getAttribute('info');
						this.mapList[i-skipped].kontent_provider.layer = node.childNodes.item(x).getAttribute('layer');
					};
					if(node.childNodes.item(x).nodeName == "def")
					{
						this.mapList[i-skipped].def = new Object();
						this.mapList[i-skipped].def.text = "";
						this.mapList[i-skipped].def.search1 = node.childNodes.item(x).getAttribute('search1');
						this.mapList[i-skipped].def.search2 = node.childNodes.item(x).getAttribute('search2');
						this.mapList[i-skipped].def.route1 = node.childNodes.item(x).getAttribute('route1');
						this.mapList[i-skipped].def.route1l = node.childNodes.item(x).getAttribute('route1l');
						this.mapList[i-skipped].def.route2 = node.childNodes.item(x).getAttribute('route2');
						this.mapList[i-skipped].def.route2l = node.childNodes.item(x).getAttribute('route2l');
						if(node.childNodes.item(x).getAttribute('text')) this.mapList[i-skipped].def.text = node.childNodes.item(x).getAttribute('text');
					};
				};
			};
		};
		return this;
	}

	// легенда карты
	function load_map_images_file(filename)
	{
		var xmlDoc;
		if(ie)
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async="false";
			xmlDoc.load(filename);
		}
		else if(ns)
		{
			myXMLHTTPRequest = new XMLHttpRequest();
			myXMLHTTPRequest.open("GET", filename, false);
			myXMLHTTPRequest.send(null);
			xmlDoc = myXMLHTTPRequest.responseXML;
		}
		else
		{
			xmlDoc = getXMLDoc(getXMLfile(filename));
		};
	
		mimgs = new Array();
		if (xmlDoc.documentElement.nodeName == "images")
		{
			dir  = xmlDoc.documentElement.getAttribute("dir");
			chkd = xmlDoc.documentElement.getAttribute("checked");
			if(chkd != '') ext_arr_img = dir+chkd;
			skipped = 0;
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
			{
				// node.nodename, node.text
				node = xmlDoc.documentElement.childNodes.item(i);
				if(node.nodeName != "layer") { skipped++; continue; };
				// `i-skipped` vs parseInt(node.getAttribute('id'))
				mimgs[parseInt(node.getAttribute('id'))]          = new Object();
				mimgs[parseInt(node.getAttribute('id'))].name     = node.getAttribute('name');
				if(node.getAttribute('filename') != '')
					mimgs[parseInt(node.getAttribute('id'))].filename = dir+node.getAttribute('filename');
				else
				    mimgs[parseInt(node.getAttribute('id'))].filename = "";
			};
		};
		return mimgs;
	}
	
	// размер экрана
	function GetWindowHW(H)
	{
	  var x,y;	// общий синтаксис	
	  if (self.innerHeight) 
	  {	    
	  	x = self.innerWidth;	    
		y = self.innerHeight;	
		// IE 6 Strict Mode	
	  } 
	  else if (document.documentElement && document.documentElement.clientHeight) 
	  {
	  	    x = document.documentElement.clientWidth;//clientWidth;	    
			y = document.documentElement.clientHeight;	
			// Остальные версии IE	
	  } else if (document.body) 
	  {
	  	    x = document.body.clientWidth;//clientWidth;	    
			y = document.body.clientHeight;	
	  };
	  return H ? y : x;
	}
	
	
	//подсветка линка
	prev_sres = -1;
	function Selsres(sres)
	{
		if(gE("sres"+prev_sres)) 
		{
			gE("sres"+prev_sres).style.background = "";	
			gE("sres"+prev_sres).style.border = "";
		};
		gE("sres"+sres).style.background = "#ffffcc";	
		gE("sres"+sres).style.border = "dashed 1px #000000";
		prev_sres = sres;
	}
	
	function CreateBookmarkLink(title,url) 
	{ 
		if (window.sidebar) 
		{ 
			// Mozilla Firefox Bookmark		
			window.sidebar.addPanel(title, url,"");	
		} 
		else if( window.external ) 
		{ 
			// IE Favorite		
			window.external.AddFavorite(url, title); 
		}	
		else if(window.opera && window.print) 
		{ 
			// Opera
			var mbm = document.createElement('a');
		    mbm.setAttribute('rel','sidebar');
		    mbm.setAttribute('href',url);
		    mbm.setAttribute('title',title);
		    mbm.click();
		} ;
	};

function gE(id) 
{
	if(document.getElementById)return document.getElementById(id);
	if(document.all)return document.all(id);
	if(document.layers)return document.layers(id);
}
	
function showMapMenu()  
{
	var d=gE("mapMenu");
	var dd=d.style.display;
	if (dd=='block')
		d.style.display='none';
	else
		d.style.display='block';
}

function closeMapMenu()  
{
	gE("mapMenu").style.display='none';
}

var mapNames = new Array();

function AddMap(name, id) {
	var i=mapNames.length;
	mapNames[i] = new Object();
	mapNames[i].name = name;
	mapNames[i].id = id;
}

AddMap('<b>Москва&nbsp;и&nbsp;область&nbsp;<img src="images/car.gif" width="9" height="8" border="0" alt=""></b>', 1);
AddMap('<b>Санкт-Петербург</b>', 60);
AddMap('Абакан', '83&cx=10179131&cy=7079172&zm=33000&vi=');
AddMap('Аксай', 93);
AddMap('Азов', 94);
AddMap('Александров', 39);
AddMap('Барнаул', 32);
AddMap('Батайск', 95);
AddMap('Белгород', 40);
AddMap('Бор', 5);
AddMap('Брянск', 67);
AddMap('Великий Новгород', 6);
AddMap('Верхняя Пышма', '10&cx=6744018&cy=7718225&zm=20000&vi=');
AddMap('Владивосток', 30);
AddMap('Владимир', 20);
AddMap('Волгоград', 53);
AddMap('Волгодонск', 88);
AddMap('Волжский', 53);
AddMap('Вологда', 47);
AddMap('Воронеж', 54);
AddMap('Дзержинск', '5&cx=4840023&cy=7572520&zm=30000&vi=');
AddMap('Ейск', 79);
AddMap('Екатеринбург', 10);
AddMap('Елец', 96);
AddMap('Жигулевск', 87);
AddMap('Иваново', 41);
AddMap('Йошкар-Ола', 68);
AddMap('Казань', 15);
AddMap('Калининград', 42);
AddMap('Калуга', 29);
AddMap('Кемерово', 97);
AddMap('Кола', 98);
AddMap('Комсомольск-на-Амуре', 16);
AddMap('Кострома', 21);
AddMap('Краснодар', 28);
AddMap('Красноярск', 22);
AddMap('Курган', 48);
AddMap('Курск', 34);
AddMap('Лабытнанги', 81);
AddMap('Ливны', 62);
AddMap('Липецк', 61);
AddMap('Магнитогорск', 27);
AddMap('Махачкала', 37);
AddMap('Минусинск', '83&cx=10207087&cy=7078646&zm=22000&vi=');
AddMap('Мурманск', 43);
AddMap('Мценск', 63);
AddMap('Набережные Челны', 18);
AddMap('Нижневартовск', 59);
AddMap('Нижний Новгород', 5);
AddMap('Новокуйбышевск', '36&cx=5559966&cy=6970402&zm=40000&vi=');
AddMap('Новосибирск', 33);
AddMap('Новочебоксарск', 91);
AddMap('Новочеркасск', 92);
AddMap('Омск', 70);
AddMap('Орел', 23);
AddMap('Орск', 24);
AddMap('Пенза', 44);
AddMap('Переславль-Залесский', 51);
AddMap('Пермь', 8);
AddMap('Петрозаводск', 38);
AddMap('Псков', 45);
AddMap('Ростов-на-Дону', 35);
AddMap('Рязань', 46);
AddMap('Самара', 36);
AddMap('Санкт-Петербург', 2);
AddMap('Саранск', 17);
AddMap('Саратов', 50);
AddMap('Смоленск', 52);
AddMap('Сочи', 82);
AddMap('Старый Оскол', 64);
AddMap('Суздаль', 65);
AddMap('Сургут', 59);
AddMap('Таганрог', 85);
AddMap('Тамбов', 71);
AddMap('Тверь', 31);
AddMap('Тольятти', 57);
AddMap('Томск', 80);
AddMap('Тула', 19);
AddMap('Тюмень', 56);
AddMap('Ульяновск', 73);
AddMap('Уфа', 49);
AddMap('Цимлянск', 89);
AddMap('Чебоксары', 69);
AddMap('Челябинск', 7);
AddMap('Череповец', 9);
AddMap('Черногорск', '83&cx=10161606&cy=7101170&zm=26000&vi=');
AddMap('Шахты', 90);
AddMap('Энгельс', 50);
AddMap('Ярославль', 72);
AddMap('Европейская&nbsp;часть&nbsp;России', 4);
AddMap('Россия&nbsp;и&nbsp;Европа&nbsp;<img src="images/car.gif" width="9" height="8" border="0" alt="">', 3);
AddMap('Египет', 74);
AddMap('Кипр', 75);
AddMap('Мальдивы', 76);
AddMap('Таиланд', 77);
AddMap('Турция', 78);



function DrawMapCall()
{
	for (var i=0; i<mapNames.length; i++)
	{
		if (mapNames[i].id==4) document.writeln('<div style="width: 100%; height: 1px; background-color: 003399; margin-bottom: 5px;"><img src="images/js_pixel.gif" width="1" height="1" border="0" alt=""></div>');
		document.writeln('<div style="height:20px;"><a class="aMapMenu" href="index.aspx#map='+mapNames[i].id+'">'+mapNames[i].name+'</a></div>');
		if (mapNames[i].id==2) document.writeln('<div style="width: 100%; height: 1px; background-color: 003399; margin-bottom: 5px;"><img src="images/js_pixel.gif" width="1" height="1" border="0" alt=""></div>');
	}
}

-->
