/*******************************************
********************************************
    * www.resident.ru * www.eatlas.ru *
Remote API Web Map Service javascript client
		    * Milok Zbrozek *
		milokz [doggy] gmail.com
		    * ZAO Resident *
   			   AJAX
********************************************
*******************************************/

<!--
var isDrag=false;
var x1,x2,y1,y2,dx,dy;
var X0point, Y0point, Xpoint, Ypoint, ObjPos, ObjPos_zoomer;

var ua = navigator.userAgent;
var ns = ((ua.indexOf("etscape") > 0) || (ua.indexOf("irefox") > 0));
var ie = (ua.indexOf("MSIE") > 0);
var op = (ua.indexOf("pera") > 0);
if(op) ns = true;
//if (ie) ns=false; else ns=true;
var markerFlag = false;
var copylink = false;

	  

	if (ns)	document.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);
	document.onmousemove = map1_drag;
	document.onmouseup   = map1_dragend;
	document.onmousedown = map1_dragstart;
	document.onclick     = map1_click;
	//document.onmouseup   = dkxce_mouseup;
    document.oncontextmenu = dkxce_menu;


var popup_menu = false;	
function dkxce_mouseup()
{
	if(!ns) if(event.button == 2) return false;
}

var mouseX;
var mouseY;
var mouse0 = false;
function dkxce_menu()
{
	if (ns)  // ++FireFox
	{
		if(mouseO != false) 
		{
			RPDAMENU_OK(mouseO.obj,mouseO.name,mouseO.x,mouseO.y,mouseO.lay,id);
			mouseO = false;
			return false;
		};
	}; // --FireFox
	return !popup_menu;
}


function pLink()
{
	var url = gE("map"+phase).src;
	while(url.indexOf("&") > 0) 
	{
		var str = url.substr(0,url.indexOf("&")) + "%26";
		str = str + url.substr(url.indexOf("&")+1,url.length);
		url = str;
	};
	window.open("mapprint.aspx?image="+url+"%26print="+escape(label != '' ? label : markert));
}

function wLink()
{

	var myo = new WMSClient();
	myo.setUrl(site_url);
	var url = document.location + '';
	var res = myo.GetShortUrlID(url);
	if(res.error == true) alert("Error #"+res.code+": "+res.string) 
	else 
	{
		url = document.location.pathname;
		url = url.substring(0,url.indexOf('index.aspx'))+'mapshort.aspx'+url.substring(url.indexOf('index.aspx')+10,1024);
		url = 'http://'+document.location.hostname+'/'+url+'?image='+res;
		url = "mailto:?subject=Ссылка%20на%20карту&body=Фрагмент%20карты%3A%20"+url;
		window.open(url);
	};
	

}

function sLink()
{

	var myo = new WMSClient();
	myo.setUrl(site_url);
	var url = document.location + '';
	var res = myo.GetShortUrlID(url);
	if(res.error == true) alert("Error #"+res.code+": "+res.string) 
	else 
	{
		url = document.location.pathname;
		url = url.substring(0,url.indexOf('index.aspx'))+'mapshort.aspx'+url.substring(url.indexOf('index.aspx')+10,1024);
		url = 'http://'+document.location.hostname+'/'+url+'?image='+res;
		ShowCopyArea(url);
	};
}

function SetNavRect() {
  if (!gE("navrect")) return;
  var z=MAP.zoomchange, x=MAP.x1, y=MAP.y1;
  if (z==0) z=maxzoom, x=MAP.x0, y=MAP.y0;
  
  if (MAP.changemap == 1)
  {
  	  var im = MAP.mapgif1;
	  if (zoom>MAP.zoomchange || cx>MAP.x1*MAP.changemap+MAP.zoomchange/2 || cx<MAP.x1*MAP.changemap-MAP.zoomchange/2 || cy>MAP.y1*MAP.changemap+(MAP.zoomchange * maph/mapw)/2 || cy<MAP.y1*MAP.changemap-(MAP.zoomchange * maph/mapw)/2)
	  {	
    	z=maxzoom;
	    im = MAP.mapgif0;
		x=MAP.x0;
		y=MAP.y0;
	  }
	  gE('navi').src=im;
  }
  else
  {
  	  var im = MAP.mapgif0;
	  z=maxzoom;
	  x=MAP.x0;
	  y=MAP.y0;
	  gE('navi').src=im;
  }
  var NRwidth, NRheight;
  var NRleft, NRtop;
  var NRdx, NRdy;

  NRwidth = Math.round(zoom*106/z);  if (NRwidth>106) NRwidth=106;
  NRheight = Math.round(NRwidth*maph/mapw);  
  if (NRheight>82) NRheight=82;
  NRdx=Math.round((106*(cx-x)/z)+106/2-NRwidth/2);
  if (NRdx<0) 
  {
    NRwidth=NRwidth+NRdx;
    if (NRwidth<0) NRwidth=5;
    NRdx=0;
  }
  NRdy=Math.round((82*(y-cy)/(z*maph/mapw))+82/2-NRheight/2);
  if (NRdy<0)
  {
    NRheight=NRheight+NRdy;
    if (NRheight<0) NRheight=5;
    NRdy=0;
  }

  if (NRdx>106) 
  {
    NRwidth=NRwidth+NRdx;
	if (NRwidth<0) NRwidth=5;
	NRdx=106-5;
  }
  if (NRdy>82)
  {
	NRheight=5;
    NRdy=82-5;
  }

  NRleft=NRdx;
  NRtop=NRdy;


  if (NRtop+NRheight>82) { NRheight=82-NRtop+1; };
  if (NRleft+NRwidth>106) NRwidth=106-NRleft+1;  
  
  
  movex = getPos(gE("Navi")).x;
  movey = getPos(gE("Navi")).y;
  if(ns) 
  {
      movex = getPos(gE("panel0")).x + 45; //5; // 45;
      movey = getPos(gE("panel0")).y + 34; //33; //34;
  };
  
  gE("navrect").style.top = movey + NRtop;
  gE("navrect").style.left = movex + NRleft;
  gE("navrect").style.width = NRwidth;
  gE("navrect").style.height = NRheight;
}

function CloseMarker()
{   
   	gE('marker').style.visibility='hidden';
  	gE('marker').style.display='none';
}

function CloseMarker2()
{   
   	gE('marker2').style.visibility='hidden';
  	gE('marker2').style.display='none';
	markerx=0;
	markery=0;
	label='';
	markert = '';
}

function getPos(el)
{
  for (var lxx=0,lyy=0;el!=null;)
	lxx+=el.offsetLeft,lyy+=el.offsetTop,el=el.offsetParent;
  return {x:lxx,y:lyy}
}

function getEventPos(evnt)
{
  var ex, ey;
  if (ns) {
    ex=evnt.clientX;
    ey=evnt.clientY;
  }
  else {
    ex=event.clientX;
    ey=event.clientY;
  }
  return {x:ex,y:ey}
}

function SelTooll(act) 
{
  var doc=document;
  //doc.images[ACTION].src= 'oldstyle/' + ACTION + '.gif';
  var t=doc.images[ACTION];
  t.border=0;
  t.style.borderColor='';
  t.style.backgroundColor='';
  ACTION=act;
  t=doc.images[ACTION];
  t.border=1;
  t.style.borderColor='eed47c';
  t.style.backgroundColor='FFFFFF';
  //doc.images[ACTION].src= 'oldstyle/' + ACTION + '_s' + '.gif';
  
  if(act.toLowerCase() == "shift") gE("map1").style.cursor = "pointer";
  if(act.toLowerCase() == "zoomin") gE("map1").style.cursor = "url(cursors/zoom_in.cur), crosshair";
  if(act.toLowerCase() == "zoomout") gE("map1").style.cursor = "url(cursors/zoom_out.cur), crosshair";
  if(act.toLowerCase() == "info") gE("map1").style.cursor = "help";
  if(act.toLowerCase() == "scale") gE("map1").style.cursor = "default";
  
  if(act.toLowerCase() == "shift") gE("map0").style.cursor = "pointer";
  if(act.toLowerCase() == "zoomin") gE("map0").style.cursor = "url(cursors/zoom_in.cur), crosshair";
  if(act.toLowerCase() == "zoomout") gE("map0").style.cursor = "url(cursors/zoom_out.cur), crosshair";
  if(act.toLowerCase() == "info") gE("map0").style.cursor = "help";
  if(act.toLowerCase() == "scale") gE("map0").style.cursor = "default";
  
  var day = new Date();
  day.setDate(day.getDate()+90) ;
  setCookie("lastAction", ACTION, day);
  return false;
}


var mapclickpos = new Object();
	mapclickpos.x = 0;
	mapclickpos.y = 0;

function map1_click(evnt)
{
  popup_menu = false;	
  closePanel(4);
  if(!ns) if(event.button == 2) return;
  
  if (markerFlag) return;
  if (itt_over_flag) return;
  if (copylink) return;
  if (FselObj) return;
  ObjPos = getPos(document.images["map"+phase]);
  ObjPosNavi = getPos(document.images["navi"]);
  var e,cond,cond_navi,ObjPosNavi;
  e=getEventPos(evnt);
  dx = document.body.scrollLeft-2;
  dy = document.body.scrollTop-2; 
  if (dragnav) 
  {
  		 if (gE("navrect").style.visibility == "hidden") return true;
		 tmpz=MAP.zoomchange;
		 tmpx=MAP.x1*MAP.changemap;
		 tmpy=MAP.y1*MAP.changemap;
		 
		 var navix=e.x-ObjPosNavi.x+dx;
		 var naviy=e.y-ObjPosNavi.y+dy;
		 if(navix < 0 || navix > 104 || naviy < 0 || naviy > 80) return true;
		 
    	 if (zoom>MAP.zoomchange || cx>MAP.x1*MAP.changemap+MAP.zoomchange/2 || cx<MAP.x1*MAP.changemap-MAP.zoomchange/2 || cy>MAP.y1*MAP.changemap+(MAP.zoomchange * maph/mapw)/2 || cy<MAP.y1*MAP.changemap-(MAP.zoomchange * maph/mapw)/2) 
		 {
			 tmpz=maxzoom;
			 tmpx=MAP.x1; 
			 tmpy=MAP.y1;
		 };
		 cx=Math.round(tmpx+navix*tmpz/106-tmpz/2);
		 cy=Math.round((82-naviy)*((tmpz*maph/mapw)/82)+tmpy-(tmpz*maph/mapw)/2);
		 SetMap();
		 return true;
  }



  cond=e.x>ObjPos.x-dx && e.y>ObjPos.y-dy && e.x<ObjPos.x-dx+mapw && e.y<ObjPos.y-dy+maph;
  if (!cond) return true;
  if (ACTION == "SHIFT") return false;
  var DragX=e.x;
  var DragY=e.y;
  if (ACTION == "TRACK")
  {
    var tr_x, tr_y;
	tr_x=Math.round(cx-zoom/2+zoom/mapw*(DragX-ObjPos.x));
	tr_y=Math.round(cy-zoomh/2+zoomh-zoomh/maph*(DragY-ObjPos.y));
	TrackURL+="&trx="+tr_x+"&try="+tr_y;
	markerx=tr_x;
	markery=tr_y;
	if (MAP.name!='rus_mail')
	{
		if (trx_0!=0 && try_0!=0) len+=Math.sqrt((trx_0-tr_x)*(trx_0-tr_x)+(try_0-tr_y)*(try_0-tr_y));
		if (len>1000) label=(len/1000).toFixed(2) + ' км';
		else label=Math.round(len) + ' м';
	}
	else
	{
		gE('dist').src='ruler.asp?gst='+MAP.name+TrackURL;
	}
	trx_0=tr_x;
	try_0=tr_y;
  	SetMap();
  }

  if (ACTION == "SCALE") 
  {
    DrawSteps(DragX,DragY,ObjPos);
  };
  
  if (ACTION == "INFO") 
  {
	  var myo = new WMSClient();
	  myo.setUrl(site_url);
	  var ZP = new sZoomPnt(cx,cy,zoom);
	  var PS = new sPictSize(mapw,maph);
	  var CPX = e.x-ObjPos.x+dx;
	  var CPY = e.y-ObjPos.y+dy;
//	  vis = "";
	  var res = myo.RequestObjectInfo(MAP.name,ZP,PS,vis,ext_arr,CPX,CPY);
 	  if(res.error == true) alert("Error #"+res.code+": "+res.string); 
	  
	  if(res.length == 0)
	  {
		  alert("Нет информации о выбранном объекте");
	  }
	  else  // iii
	  {
	  
	  var msg = '<table border="0" cellpadding="0" cellspacing="2" width="100%">';
	  var rowcount = 0;
	  var itm = "";
	  var obj_x = 0;
	  var obj_y = 0;
	  var obj_id = 0;
	  var layer_name = "";
	  var marker_priority = 10; 
	  var marker_text = "";
	  var marker_type = "";
	  var im='';
	  for(x=0;x<res.length;x++) 
	  {
	    try
		{
			if (res[x].value.toLowerCase() != "undefined")
			{
				if (res[x].key.toLowerCase() == "наименование" && marker_priority > 0) {marker_priority=0;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "название" && marker_priority > 0) {marker_priority=0;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "наим. орг."  && marker_priority > 1) {marker_priority=1;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "организация" && marker_priority > 2) {marker_priority=2;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "name"        && marker_priority > 3) {marker_priority=3;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "text"        && marker_priority > 4) {marker_priority=4;marker_text=res[x].value;};		
				if (res[x].key.toLowerCase() == "адрес"		  && marker_priority > 5) {marker_priority=5;marker_text=res[x].value;};	
				if (res[x].key.toLowerCase() == "fulladres"   && marker_priority > 6) {marker_priority=6;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "тип объекта" ) {marker_priority=7;marker_type=res[x].value;};
				if (res[x].key.toLowerCase() == "категория" ) {marker_priority=7;marker_type=res[x].value;};
				if (res[x].key.toLowerCase() == "type"        && marker_priority > 8) {marker_priority=8;marker_text=res[x].value;};
				if (res[x].key.toLowerCase() == "место") {marker_text+='<div style="width:250px;font-size:11px;">'+res[x].value+'</div>';};
				if (res[x].key.toLowerCase() == "image2") {marker_text= '<a href="'+res[x].value+'" target="_blank">'+im+'</a>'+marker_text;}
				if (res[x].key.toLowerCase() == "image1") {im='<img align="left" src="'+res[x].value+'" border=0 onMouseOver="dragnav=true;" onMouseOut="dragnav=false;">';}
			};
		} catch(e) {};
		
		try
		{
			var tmpv = res[x].key.toLowerCase();
			if      (tmpv == "centerx") { obj_x = parseInt(res[x].value); }
			else if (tmpv == "centery") { obj_y = parseInt(res[x].value); }
			else if (tmpv == "layer_name") layer_name = res[x].value;
			else if (tmpv == "id" || tmpv == "object_id") obj_id = res[x].value;
			else if (tmpv == "image2") tmpv == "image2";
			else if (tmpv == "image1") tmpv == "image1";
			else  
			{
				var msg_tmp = filter_in(tmpv,res[x].key,res[x].value);
				if(msg_tmp != "") rowcount++;
				msg += msg_tmp;
			};
		}
		catch(e) {};
      };
	  if(layer_name == MAP.kontent_provider.layer && MAP.kontent_provider.info != '') 
	  {
		msg += filter_in("-1","Источник данных",find_url(MAP.kontent_provider.info));
		rowcount++;
	  };
	  msg += "</table>"
	  if (marker_text == "") marker_text="<i>"+marker_type+"</i><br>&nbsp;";
	  else {marker_text+="<br>&nbsp;<i>"+marker_type+"</i>";}
	  if(marker_text == "") marker_text = "Выбранная точка на карте";
	  if(res.length>5 && im=='')
	  	gE("dopinfo").innerHTML="Подробнее";
	  else
	  	gE("dopinfo").innerHTML="";
	  closePanel(2);
	  msg += '<div align="right">' + SearchMenu(marker_text,obj_x,obj_y,layer_name,obj_id,MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1) + "</div>";
	  gE("NAVINFO_L").innerHTML = msg;
	  
	  mapclickpos.x = getEventPos(evnt).x;
	  mapclickpos.y = getEventPos(evnt).y;

	  var vvv = SearchMenu(marker_text,obj_x,obj_y,layer_name,obj_id,MAP.allowsearch[2] == 1,MAP.allowsearch[2] == 1, true);
	  sssss = ('<span>'+marker_text+'</span>');
	  if(layer_name == MAP.kontent_provider.layer && MAP.kontent_provider.hint != '') vvv += '<br/><small>'+MAP.kontent_provider.hint+'</small>';

	  ShowMarker(CPX,CPY,sssss,evnt,vvv);
	  }; 
  }
  return true;
}

function find_url(str)
{
	var tmps = str;
	if(tmps.indexOf('http://') > -1)
	{
		var si = tmps.indexOf('http://');
		var s2 = tmps.substr(si,1024);
		var se = s2.indexOf(' ') > -1 ? si+s2.indexOf(' ') : si+s2.length;
		var s3 = tmps.substr(si,se-si);
		var s4 = tmps.substr(se,1024);
		tmps = tmps.substr(0,si)+'<a href="'+s3+'" target="_blank">'+s3+'</a>'+s4;
	};
	return tmps;
}

// FILTER
function filter_in(tmpv,str_name,str_val)
{
	if(!str_val)  str_val = "&nbsp;";
	var FA = new Array("object_id","geo_ref","id_source","house_id","adr_dop","source","last_data","status","parent_id","bk","bt","tm");
	
	for(i=0;i<FA.length;i++) if (tmpv == FA[i]) return "";
	if(tmpv == "web") return '<tr><td valign="top" class="catname3">Web:</td><td class="catname3"><a href="ref.aspx?url='+coderef(str_val) + '" target="_blank">'+str_val+'</a>\n\r</td></tr>'; 
	return '<tr><td valign="top" class="catname3">'+str_name+':</td><td class="catname3">'+str_val + "\n\r</td></tr>";
}

function coderef(ref)
{
	return ref;	
}

var org_s_x; var org_s_x_rule; var org_s_x_mOne;
var org_s_y; var org_s_y_rule; var org_s_y_mOne;
function map1_dragstart(evnt)
{
  if(ie) // Чтобы нормально работали скроллы
  {
	if(event.x > document.body.clientWidth)  return;
	if(event.y > document.body.clientHeight) return;
  };

  if (markerFlag || dragnav || itt_over_flag || copylink || FselObj) return;
  ObjPos = getPos(document.images["map"+phase]);
  var e,cond;
  e=getEventPos(evnt);
  dx = document.body.scrollLeft-2;
  dy = document.body.scrollTop-2;
  cond=e.x>ObjPos.x-dx && e.y>ObjPos.y-dy && e.x<ObjPos.x-dx+mapw && e.y<ObjPos.y-dy+maph;
  if ((ACTION=="ZOOMIN" || ACTION=="ZOOMOUT" ||  ACTION=="SHIFT") && cond) 
  {
	
	org_s_x = parseInt(gE('marker2').style.left);
	org_s_y = parseInt(gE('marker2').style.top);
	org_s_x_rule = parseInt(gE('ruleid').style.left);
	org_s_y_rule = parseInt(gE('ruleid').style.top);
	org_s_x_mOne = parseInt(gE('marker').style.left);
	org_s_y_mOne = parseInt(gE('marker').style.top);
	
    isDrag=true;
    Y0point = e.y;
    X0point = e.x;
    x1=X0point;
    x2=X0point;
    y1=Y0point;
    y2=Y0point;	
  }
}

function map1_dragend(evnt)
{
  if (!isDrag) return true;
  isDrag=false;
  
  var dX, dY, M;
  if (ACTION=="ZOOMIN" || ACTION=="ZOOMOUT") 
  {
	cx=Math.round(cx-zoom/2+zoom/mapw*((x1+x2-2*ObjPos.x)/2));
	cy=Math.round(cy-zoomh/2+zoomh-zoomh/maph*((y1+y2-2*ObjPos.y)/2));
	if (Math.abs(x1-x2)>10 && Math.abs(y1-y2)>10) 
	{
	  dX = mapw/Math.abs(x1-x2);
	  dY = maph/Math.abs(y1-y2);
	  if (dX>dY) 
		M=dY; 
	  else
		M=dX;
	}
	else 
	  M  = 2;
	if (ACTION=="ZOOMIN") 
	  zoom=Math.round(zoom/M);
	if (ACTION=="ZOOMOUT") 
	zoom=Math.round(zoom*M);
    gE('zoomrect').style.visibility='hidden';
    gE('zoomrect').style.display='none';
  };
  if (ACTION=="SHIFT") 
  {
   	cx=Math.round(cx-zoom/2+zoom/mapw*(mapw/2-parseInt(document.images["map"+phase].style.left)));
	cy=Math.round(cy-zoomh/2+zoomh-zoomh/maph*(maph/2-parseInt(document.images["map"+phase].style.top)));
  };
	phase = 1 - phase;
    phaseFlag = true;
  //
//ruler_();

  
  if (zoom>maxzoom) zoom=maxzoom;
  if (zoom<minzoom) zoom=minzoom;
  

  SetMap();
}



function map1_drag(evnt)
{
  if(ns) // ++FireFox
  {
	  mouseX = evnt.pageX;	  
      mouseY = evnt.pageY;
  };     // --FireFox
	
  var e,cond;
  e=getEventPos(evnt);
  if(!isDrag) return true;
  if (ACTION=="ZOOMIN" || ACTION=="ZOOMOUT") 
  {
    Xpoint = e.x;
    Ypoint = e.y;

    if (Xpoint-ObjPos.x+dx>mapw) Xpoint=mapw+ObjPos.x-dx;
    if (Xpoint-ObjPos.x+dx<0)    Xpoint=ObjPos.x-dx;
    if (Ypoint-ObjPos.y+dy>maph) Ypoint=maph+ObjPos.y-dy;
    if (Ypoint-ObjPos.y+dy<0)    Ypoint=ObjPos.y-dy;

    x1 = (Xpoint-X0point>0) ? (X0point) : (Xpoint);
    x2 = (Xpoint-X0point>0) ? (Xpoint) : (X0point);
    y1 = (Ypoint-Y0point>0) ? (Y0point) : (Ypoint);
    y2 = (Ypoint-Y0point>0) ? (Ypoint) : (Y0point);

    x1+=dx; x2+=dx; y1+=dy; y2+=dy;

    gE('zoomrect').style.left=x1;
    gE('zoomrect').style.top=y1;
    gE('zoomrect').style.width=x2-x1;
	var h=y2-y1;
	if (h==0) h=1;
    gE('zoomrect').style.height=h;
    gE('zoomrect').style.visibility='visible';
    gE('zoomrect').style.display='block';
  }
  if (ACTION=="SHIFT") 
  {
    Xpoint = e.x;
    Ypoint = e.y;
    document.images["map"+phase].style.left=Xpoint-X0point;
    document.images["map"+phase].style.top=Ypoint-Y0point;
    gE('canv').style.left=Xpoint-X0point;
    gE('canv').style.top=Ypoint-Y0point;
		
	// marker2
	if(gE('marker2').style.visibility != 'hidden')
	{
		gE('marker2').style.left = org_s_x+(Xpoint-X0point);
		gE('marker2').style.top =  org_s_y+(Ypoint-Y0point);
	};
	//marker
	if(gE('marker').style.visibility != 'hidden')
	{
		gE('marker').style.left = org_s_x_mOne + (Xpoint-X0point);
		gE('marker').style.top =  org_s_y_mOne + (Ypoint-Y0point);
	};
	//ruleid
	if(gE('ruleid').style.visibility != 'hidden')
	{
		gE('ruleid').style.left = org_s_x_rule+(Xpoint-X0point);;
		gE('ruleid').style.top = org_s_y_rule+(Ypoint-Y0point);;
	};
	
	nx = org_s_x+(Xpoint-X0point);
	ny = org_s_y+(Ypoint-Y0point);
	mx = getPos(gE('outer')).x;
	my = getPos(gE('outer')).y;
	if(nx < mx || nx > (mx+mapw-50) || ny < my || ny > (my+maph-25))
	{
		gE('marker2').style.visibility = 'hidden';
	} else if(label!='' || markert!='') gE('marker2').style.visibility = '';
  }
  return !isDrag;
}

function markerToTop(elem)
{
//	gE("ruleid").style.zIndex = top_marker_zIndex - 1;
	gE("marker").style.zIndex = top_marker_zIndex - 1;
	gE("marker2").style.zIndex = top_marker_zIndex - 1;
	gE(elem).style.zIndex = top_marker_zIndex;
}

var phase = 1;
var phaseFlag = false;

var mx2 = 0;
var my2 = 0;

function SetMap()
{
  setLoading(true);
	
  document.images["map"+phase].onload = mapLoad;
  document.images["map"+phase].style.left=0;
  document.images["map"+phase].style.top=0;
  document.images["map"+phase].style.visibility = 'hidden';
  document.images["map"+phase].src = "";
  if (phaseFlag)
  {
	   var elem=gE("outer");
 	   elem.appendChild(gE("map"+(phase)));
       
       phaseFlag = false;
  };
  

      var myo = new WMSClient();
	  myo.setUrl(site_url);
	  var ZP = new sZoomPnt(cx,cy,zoom);
	  var PS = new sPictSize(mapw,maph);
	  idm = id;
	  if(id == "") idm = 0;

	  var SO = new sShowObj(lay,idm, lay == "" ? false : true,TrackURL+TypeURL,my_cat);
	  var mmm = "";
	  try
	  {
		  mmm = markert;
	  }
	  catch (e) { };
	  var SS = new sShowSigned(markerx,markery,mmm); 
	  var res = myo.GetPict(MAP.name,ZP,PS,vis,ext_arr,SO,SS);
	  if(res.error == true) 
	  {
		  alert("Error #"+res.code+": "+res.string); 
	  };

  CloseMarker();	  
  closePanel(2);

  if ((cx!=res.center_x || cy!=res.center_y) && (label!='' || markert!=''))
  {
  	  markerx=res.center_x;
  	  markery=res.center_y;
  };
  mx2 = res.markerx;
  my2 = res.markery;
	  cx = res.center_x;
	  cy = res.center_y;
	  zoom = res.zoom;

  document.images["map"+(phase)].src = res.url + route_url + scale_url;

  zoomh=zoom*maph/mapw;
  SetNavRect();
  LoadVis_();
  //закрыть меню всех карт
  closeMapMenu();
}

function SetLoc(samp)
{
	// #loc
	var tmploc = "#map="+mapID+"&cx="+cx+"&cy="+cy+"&zm="+zoom+"&vi="+vis;
	
	if( markert != '' ) 
	{
		tmploc += "&mt="+(markert);
		if(markerx != 0) tmploc += "&mx="+markerx;
		if(markery != 0) tmploc += "&my="+markery;
	}
	else if( label != '' ) 
	{
		tmploc += "&id="+id+"&ly="+lay+"&la="+(label);	
		if(markerx != 0) tmploc += "&mx="+markerx;
		if(markery != 0) tmploc += "&my="+markery;		
	};
	
	if (samp) tmploc += samp;
	
	document.location = tmploc;
}

function ChangeMap(mapNo)
{
	document.location.replace('#map='+mapNo);
	document.location.reload();
}

function ShowMarker(xv,yv,tt,ev,ink)
{
  ObjPos = getPos(document.images["map"+phase]);
  if (tt.toLowerCase() != 'undefined')
  {
	var scale=zoom/mapw;
	if(ink)
		gE('marker_text').innerHTML='&nbsp;'+tt+' '+ink;
	else
		gE('marker_text').innerHTML='&nbsp;'+tt;
	SetMarker(ev);
  }
  else
  {
   	gE('marker').style.visibility='hidden';
  	gE('marker').style.display='none';
  }
}

function ShowMarkerXY()
{
  ObjPos = getPos(document.images["map"+phase]);
  dx = document.body.scrollLeft-2;
  dy = document.body.scrollTop-2;
  if ((label!='' || markert!='') && markerx<cx+zoom/2 && markerx>cx-zoom/2 && markery<cy+zoomh/2 && markery>cy-zoomh/2)
  {
	var scale=zoom/mapw;
    markerscrx=mapw/2-Math.round((cx-markerx)/scale);
    markerscry=maph/2+Math.round((cy-markery)/scale);
	
	gE('marker2').style.left=ObjPos.x+mapw/2+mx2;
  	gE('marker2').style.top=ObjPos.y+maph/2+my2-29;

  	gE('marker2').style.visibility='visible';
  	gE('marker2').style.display='block';
	gE('marker2_text').innerHTML=(markert == '' ? label : markert);
  }
  else
  {
   	gE('marker2').style.visibility='hidden';
  	gE('marker2').style.display='none';
  }
}

//-------------------------------------------------------------------------------------------------
function SetMarker(evnt)
{
	var hArr=16;
	var wClose=12;
	var m=gE('marker').style;
  	m.display='block';
   	m.visibility='hidden';
	ee=getEventPos(evnt);
	var cc=gE('close');
	var aa=gE('arr');
	var p=gE('map'+phase);
	var arr=gE('arr');
	var arrs=arr.style;
	m.left=ee.x;
	m.top=ee.y;
	arrs.left=0;
	arrs.top=-1;
	var ll='left';
	var tt='down';
	p=getPos(p);
	c=getPos(cc);
	a=getPos(aa);
	var dx=c.x-a.x - document.body.scrollLeft + 2;
	var dy=a.y-c.y - document.body.scrollTop + 2;
	m.left=ee.x;
	m.top=ee.y-(dy+hArr);
	c=getPos(cc);
	
	var my_x = parseInt(gE('marker').style.left);
	var my_y = parseInt(gE('marker').style.top) - 5;

	gE('panel2').style.left = - 600;
	gE('panel2').style.top = - 600;
	
	if(my_x > (p.x+mapw/2))
	{
		gE('panel2').style.width = 600;
		gE('panel2tab').style.width = 600;
		gE('panel2al').align = "right";
		gE('panel2').style.left = my_x-600-2;
	}
	else
	{
 	    gE('panel2al').align = "left";
	    gE('panel2').style.width = 100;
	    gE('panel2tab').style.width = 100;
	    gE('panel2').style.left = mapclickpos.x;
	};
	if( (!ns && (my_y > (p.y+maph/2.5))) || (ns && (mapclickpos.y > (p.y+maph/2.5))) )
	{
		gE('panel2al').vAlign = "bottom";
		gE('panel2').style.height = 600;
		gE('panel2tab').style.height = 600;
		if(my_x > (p.x+mapw/2))
			gE('panel2').style.top = mapclickpos.y - 600 + (ns ? 10 : 0);
		else
			gE('panel2').style.top = (ns ? mapclickpos.y : my_y) - 600 + (ns ? 10 : 3);
	}
	else
	{
		gE('panel2al').valign = "top";
		gE('panel2').style.height = 100;
		gE('panel2tab').style.height = 100;
		gE('panel2').style.top = mapclickpos.y + 2;
	};
	
	if (c.y<p.y)
	{
		m.top=ee.y+hArr;
		tt='up';
		arrs.top=-dy-hArr;
	}
	if (c.x>p.x+mapw-wClose)
	{
		m.left=ee.x-dx-2-wClose;
		ll='right';
		arrs.left=dx;
	}
	if (c.y+dy>maph)
	{
	};
	arr.src='images/hint/arr_'+ll+tt+'.gif';
   	m.visibility='visible';
}
//--------------------------------------------------------------------------
function cutParam(s,param) 
{
  if(s==null) return null;
  j=s.indexOf(param);
  if(j>-1) 
  {
	s=s.substr(0,j)+s.substr(j+param.length)
  }
  return s;
}

function GetLev(switch_phase)
{
	if(switch_phase)
	{
		phase = 1 - phase;
		phaseFlag = true;
	};
	
  var lev=1;
  for (var i=1; i<zoomz.length; i++) if (zoom*1<=zoomz[i]*1) lev=i;
  return lev;
}

function SetZoomLev(lev) 
{
  var doc=document;
  for(var j=1;j<zoomz.length;j++) 
  {
    if (doc.images['zm_s'+j]) doc.images['zm_s'+j].src = "oldstyle/_s1.gif";
    if (!doc.images['zm_'+j]) break;
    doc.images['zm_'+j].src='oldstyle/_s0.gif';
	if (gE("zma_"+j)) gE("zma_"+j).className="";
  }
  if (lev!=null) 
  {
	if (doc.images['zm_s'+lev]) doc.images['zm_s'+lev].src='oldstyle/_sA.gif';
  	doc.images['zm_'+lev].src='oldstyle/_sA.gif';
	if (gE("zma_"+lev)) gE("zma_"+lev).className="zm_bold";
  }
}

var firstboot = true;
function mapLoad()
{   
  document.images["map"+(1-phase)].onload = null;
  document.images["map"+(1-phase)].style.visibility = 'hidden';
  document.images["map"+(1-phase)].style.left=0;
  document.images["map"+(1-phase)].style.top=0;
  document.images["map"+(phase)].style.visibility = 'visible';

  var aind=nMapHistory;
  aind--;
  aind=CheckMapHistoryIndex(aind);
  if (x_arr[aind]!=cx || y_arr[aind]!=cy || zoom_arr[aind]!=zoom || lay_arr[aind]!=lay || id_arr[aind]!=id || label_arr[aind]!=label || track_arr[aind]!=TrackURL || vis_arr[aind]!=vis) 
  {
    x_arr[nMapHistory]=cx;
    y_arr[nMapHistory]=cy;
    zoom_arr[nMapHistory]=zoom;
    lay_arr[nMapHistory]=lay;
    id_arr[nMapHistory]=id;
    label_arr[nMapHistory]=label;
    track_arr[nMapHistory]=TrackURL;
    vis_arr[nMapHistory]=vis;
	markerx_arr[nMapHistory]=markerx;
	markery_arr[nMapHistory]=markery;
    use[nMapHistory]=true;
    nMapHistory++;
    nMapHistory=CheckMapHistoryIndex(nMapHistory);
    use[nMapHistory]=false;
  }
  ObjPos = getPos(document.images["map"+phase]);
  SetNavRect();
  SetZoomLev(GetLev());
  setLoading(false);
  DrawRuler();
  ShowMarkerXY();

  waitnext_scroll = false;
}

var x_arr = new Array();
var y_arr = new Array();
var zoom_arr = new Array();
var lay_arr = new Array();
var id_arr = new Array();
var label_arr = new Array();
var track_arr = new Array();
var vis_arr = new Array();
var markerx_arr = new Array();
var markery_arr = new Array();
var use = new Array();
var nMapHistory=0;
var MaxMapPos=50;

function CheckMapHistoryIndex(aind)
{
  if(aind<0) aind=MaxMapPos-1;
  return aind%MaxMapPos;
}

function CheckMapHistoryUndo()
{
  var aind=nMapHistory;
  aind-=2;
  aind=CheckMapHistoryIndex(aind);
  return use[aind];
}

function CheckMapHistoryRedo()
{
  return use[nMapHistory];
}

function bUndoClick()
{
  var aind=nMapHistory;
  aind-=2;
  aind=CheckMapHistoryIndex(aind);
  if(!use[aind]) return;
  setMapParameters(aind);
  SetMap();
  nMapHistory=CheckMapHistoryIndex(aind+1);
  //return false;
}

function bRedoClick()
{
  if(!use[nMapHistory]) return;
  setMapParameters(nMapHistory);
  SetMap();
  nMapHistory=CheckMapHistoryIndex(nMapHistory+1);
  //return false;
}


function setMapParameters(i)
{
    cx=x_arr[i];
    cy=y_arr[i];
    zoom=zoom_arr[i];
    lay=lay_arr[i];
    id=id_arr[i];
    label=label_arr[i];
    TrackURL=track_arr[i];
    vis=vis_arr[i];
	markerx=markerx_arr[i];
	markery=markery_arr[i];
}

function strEncode(s) 
{
  var res='',c,c0='?'.charCodeAt(0);
  for(j=0;j<s.length;j++) {
    c=s.charCodeAt(j);
    if ((c>=c0) && (c!=1025) && (c!=1105)) {
      c=c-c0+192;
      res=res+'%'+c.toString(16);
    }
    else {
   	  if ((c==1025) || (c==1105))
        res=res+'%b8';
	  else 
        res=res+escape(s.charAt(j));
	}
  }
  return res;
}

function wOpen(str,u,flag,w,h)
{

  var sname=str+'.asp?'+URL+'&x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+label+TrackURL+TypeURL+u+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis;
  sname=sname.replace('map.asp?','');
  if (flag) sname+='&name='+new Date().getTime();
  var s='resizable=yes,scrollbars=yes';
  if (w>0 && h>0) s+=',width='+w+',height='+h;
  window.open(sname,str,s);
}

function mail(res)
{
	window.open('mailto:?Subject='+label+'&Body=Посмотреть карту: "'+res+'"','ss','');
}

function mailFrame()
{
  gE('refr').src='mail.asp?'+URL+'&x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+label+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+'&name='+new Date().getTime();
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.gE(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
	
-->
