var isDrag=false;
var x1,x2,y1,y2,dx,dy;
var X0point, Y0point, Xpoint, Ypoint, ObjPos, ObjPos_zoomer;
var wbig=700, wmiddle=500, wsmall=320, hbig=525, hmiddle=375, hsmall=240;
var oldpage=1;
var pictWhalf=11, pictHhalf=16;
var ua = navigator.userAgent;
var ns = ((ua.indexOf("Netscape") > 0) || (ua.indexOf("Firefox") > 0));
var ie = (ua.indexOf("MSIE") > 0);
var op = (ua.indexOf("Opera") > 0);
if (ie) ns=false; else ns=true;
var markerFlag=false;
var len=0,trx_0=0,try_0=0;
var wprop='resizable=yes,scrollbars=yes,menubar=yes';
var wprops='resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes';
var PageCount=0;
var objects=new Array();
var alls=new Array();
var objW=22;

function SetVis() {
    var elem;
    var frm=getElement("legFrm");
	vis='';
    for(var j=0;j<frm.elements.length;j++) {
      elem=frm.elements[j];
      if(elem.checked) vis=vis+'1'; else vis=vis+'0';
    }
    SetMap(false);
    //return false;
}

function LoadVis(ngroup)
{
    var elem, v;
    var frm=getElement("legFrm");
	if (vis=='' || !vis) return;
	var flag=false;
    if(!vis) return;
    for(var j=0;j<frm.elements.length;j++) {
      if(j>vis.length-1) return;
      elem=frm.elements[j];
	  v=vis.charAt(j);
      elem.checked=!(v=='0');
	  if (v!='0') flag=true;
    }
	OpenAll(flag, ngroup);
}

function ShowAll(flag, ngroup) {
    var elem;
    var frm=getElement("legFrm");
	vis='';
    for(var j=0;j<frm.elements.length;j++) {
      elem=frm.elements[j];
      elem.checked=flag;
    }
	OpenAll(flag, ngroup);
	SetVis();
}

function OpenAll(flag, ngroup)  
{
    for (var i=0; i<ngroup; i++)
	{
	  var elem=getElement("div"+i);
	  var img=getElement("img"+"div"+i);
	  if (flag)
	    openGroup(elem,img);
	  else
	    closeGroup(elem,img);
	}
}

var nrw=108-2, nrh=115-2;
function SetNavRect() {
  if (!getElement("navrect")) return;
  var z=maxzoom_msk, x=xx_msk, y=yy_msk;
  if (z==0) z=maxzoom, x=xx, y=yy;
  var NRwidth, NRheight;
  var NRleft, NRtop;
  var NRdx, NRdy;

  NRwidth=Math.round(zoom*nrw/z);
  NRheight=Math.round(NRwidth*maph/mapw);
  if (NRwidth>nrw) NRwidth=nrw;
//  NRheight=Math.round(NRwidth*117/110);
  if (NRheight>nrh) NRheight=nrh;
  NRdx=Math.round((nrw*(cx-x)/z)+nrw/2-NRwidth/2);
  if (NRdx<0) 
  {
    NRwidth=NRwidth+NRdx;
	NRdx=0;
  }
  NRdy=Math.round((nrh*(y-cy)/(z*nrh/nrw))+nrh/2-NRheight/2);
  if (NRdy<0)
  {
    NRheight=NRheight+NRdy;
    NRdy=0;
  }
  NRleft=NRdx;
  NRtop=NRdy;
//  if (zoom>=z) 
//  {
//    NRwidth=106;
//    NRheight=82;
//    NRleft=0;
//    NRtop=0;
//  }
  if (NRtop+NRheight>nrh) NRheight=nrh-NRtop;
  if (NRleft+NRwidth>nrw) NRwidth=nrw-NRleft;
  getElement("navrect").style.top=NRtop+12+'px';
  getElement("navrect").style.left=NRleft+13+'px';
  getElement("navrect").style.width=NRwidth+'px';
  getElement("navrect").style.height=NRheight+'px';
}

function CloseMarker()
{
   	getElement('marker').style.visibility='hidden';
  	getElement('marker').style.display='none';
	if (len>0 || label=='0 м')
	{
		len=0;
		trx_0=0;
		try_0=0;
		TrackURL='';
		SetMap(false);
	}
	label='';
}

function changesize(w,h,s)
{
  mapw=w;
  maph=h;
  showBanks(true);
  //location.href="?"+GetURL();
  return;
  getElement("map1").src="http://www.banki.ru/map/images/js_pixel.gif";
  getElement("map1").width=w;
  getElement("map1").height=h;
  getElement("view_container").style.width=w+'px';
  getElement("view_container").style.height=h+'px';
  getElement("view_div").style.width=w+'px';
  getElement("view_div").style.height=h+'px';
  getElement("map_image").style.width=w+'px';
  getElement("map_image").style.height=h+'px';
  getElement("cover").style.width=w+'px';
  getElement("cover").style.height=h+'px';
  SetMap(); 
  var ss=getElement('sz').innerHTML;
  ss=ss.toLowerCase();
  ss=ss.replace('</a><span class="checksize"><b>большая</b></span>','большая</a>');
  ss=ss.replace('</a><span class="checksize"><b>малая</b></span>','малая</a>');
  ss=ss.replace('</a><span class="checksize"><b>средняя</b></span>','средняя</a>');
  ss=ss.replace('</a><span class=checksize><b>большая</b></span>','большая</a>');
  ss=ss.replace('</a><span class=checksize><b>малая</b></span>','малая</a>');
  ss=ss.replace('</a><span class=checksize><b>средняя</b></span>','средняя</a>');
  ss=ss.replace(s+'</a>','</a><span class=checkSize><b>'+s+'</b></span>');
  getElement('sz').innerHTML=ss;
  document.cookie='mapw='+w+';expires='+cookieGMT(1)+';path=/';
  document.cookie='maph='+h+';expires='+cookieGMT(1)+';path=/';
  ObjPos = getPos(getElement('view_div'));
  getElement("ref").style.left=ObjPos.x+"px";
  getElement("ref").style.top=ObjPos.y+maph-82+"px";
}

function ShowAddressOnMap(xx,yy,lab,bank_id,id_type)
{
  if (location.href.indexOf('print.asp')>0) return;
  cx=xx;
  cy=yy;
  zoom=2000;
  label=lab;
  markerx=xx;
  markery=yy;
  if (len>0)
  {
	len=0;
	TrackURL='';
	trx_0=0;
	try_0=0;
  }
  if (lay=='objects')
  {
	var frm=getElement("legend");
    for(var j=0;j<frm.elements.length;j++) 
	{
      elem=frm.elements[j];
	  if (elem.type=='checkbox') elem.checked=false;
	  if (elem.type=='select-multiple') elem.selectedIndex=0;
    }
	getElement("type5").className='office';
//	getElement("type2").className='office';
//	getElement("type3").className='office';
	getElement("type4").className='cashMachine';
	page=1;
	bankurl='&bankid='+bank_id;
	typeurl='&type='+id_type;
	address=0;
	wo='';
  }
  ClearAddress();
  //SetMap(false);
  //var s='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+strEncode(label)+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+bankurl+typeurl+wo+'&page='+page+'&npage='+npage;
  location.href="?"+GetURL();
}

function FindByMask(mask)
{
  if (mask=='') return false;
  if (mask.length<2) {alert("Введите более 1 символа для поиска объекта"); return false;}
  var s=wprops+',width=530,height=400';
  location.href='search.asp?map='+gst+'&mask='+strEncode(mask)+'&'+GetURL();
  return false;
}

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 SetCursor(act)
{
	var cur='default';
	switch(act)
	{
	case "shift":
     cur='url(http://www.banki.ru/map/images/cursors/move.cur), move';
     break;
	case "zoomin":
     cur='url(http://www.banki.ru/map/images/cursors/zoom_in.cur), crosshair';
     break;
	case "zoomout":
     cur='url(http://www.banki.ru/map/images/cursors/zoom_out.cur), crosshair';
     break;
	case "inf":
     cur='help';
     break;
	case "track":
     cur='crosshair';
     break;
	default:
    cur='default';
    break;
	}
	document.images["map1"].style.cursor=cur;
	document.images["arr"].style.cursor=cur;
	getElement("cover").style.cursor=cur;
}

function SelTooll(act) 
{
  var doc=document;
  doc.images[ACTION].src='http://www.banki.ru/map/images/'+ACTION+'.gif';
  ACTION=act;
  doc.images[ACTION].src='http://www.banki.ru/map/images/'+ACTION+'_s'+'.gif';
  SetCursor(ACTION);
}

function info_map1(scrx,scry) {
 var addURL;
 addURL = "&scrx=" + scrx;
 addURL += "&scry=" + scry;
// ObjPos = getPos(document.images["map1"]);
 ObjPos = getPos(getElement('view_div'));
 //getElement('info').src='info.asp?gst='+gst+addURL+'&x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+label+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+bankurl+typeurl+wo+'&page='+oldpage+'&npage='+npage;
 getElement('info').src='info.asp?gst='+gst+addURL+'&'+GetURL();
 if (scrx>mapw-100) scrx=mapw-150;
 getElement('inf').style.left=ObjPos.x+scrx+'px';
 getElement('inf').style.top=ObjPos.y+scry+'px';
 getElement('inf').style.visibility='visible';
 getElement('inf').style.display='block';
// wOpen('info',addURL, false, 300,200);
}

function hideInfo()
{
 getElement('inf').style.visibility='hidden';
 getElement('inf').style.display='none';
 getElement('inf_body').innerHTML='';
}

function hideRef()
{
 getElement('ref').style.visibility='hidden';
 getElement('ref').style.display='none';
 getElement('refbody').innerHTML='';
}

function map1_click(evnt)
{
  if (markerFlag) return;
// ObjPos = getPos(document.images["map1"]);
  ObjPos = getPos(getElement('view_div'));
  ObjPosNavi = getPos(document.images["navi"]);
  var e,cond,cond_navi,ObjPosNavi;
  e=getEventPos(evnt);
  dx = document.documentElement.scrollLeft-2;
  dy = document.documentElement.scrollTop-2;
  cond_navi=e.x>ObjPosNavi.x-dx && e.y>ObjPosNavi.y-dy && e.x<ObjPosNavi.x-dx+110 && e.y<ObjPosNavi.y-dy+117;
  if (cond_navi) 
  {
    var z=maxzoom_msk,x=xx_msk,y=yy_msk;
    if (zoom>maxzoom_msk || cx>xx_msk+maxzoom_msk/2 || cx<xx_msk-maxzoom_msk/2 || cy>yy_msk+maxzoomh_msk/2 || cy<yy_msk-maxzoomh_msk/2) {z=maxzoom; x=xx; y=yy;}
	var navix=e.x-ObjPosNavi.x+dx;
	var naviy=e.y-ObjPosNavi.y+dy;
	cx=Math.round(x+navix*z/nrw-z/2);
	cy=Math.round((nrh-naviy)*((z*nrh/nrw)/nrh)+y-(z*nrh/nrw)/2);
    ClearAddress();
	SetMap(false);
	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 == "inf") {info_map1(e.x-ObjPos.x+dx, e.y-ObjPos.y+dy); return false};
  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+dx));
	tr_y=Math.round(cy-zoomh/2+zoomh-zoomh/maph*(DragY-ObjPos.y+dy));
	TrackURL+="&trx="+tr_x+"&try="+tr_y;
	markerx=tr_x;
	markery=tr_y;
	if (gst!='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
	{
		getElement('dist').src='ruler.asp?gst='+gst+TrackURL;
	}
	trx_0=tr_x;
	try_0=tr_y;
	ClearAddress();
  	SetMap(false);
  }
  return true;
}

function map1_dragstart(evnt)
{
  if (location.href.indexOf('print.asp')>0) return;
  if (markerFlag) return;
// ObjPos = getPos(document.images["map1"]);
  ObjPos = getPos(getElement('view_div'));
  var e,cond;
  e=getEventPos(evnt);
  dx = document.documentElement.scrollLeft-2;
  dy = document.documentElement.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) 
  {
    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);
    getElement('zoomrect').style.visibility='hidden';
    getElement('zoomrect').style.display='none';
  }
  if (ACTION=="shift") 
  {
//	cx=Math.round(cx-zoom/2+zoom/mapw*(mapw/2-parseInt(document.images["map1"].style.left)));
//	cy=Math.round(cy-zoomh/2+zoomh-zoomh/maph*(maph/2-parseInt(document.images["map1"].style.top)));
	cx=Math.round(cx-zoom/2+zoom/mapw*(mapw/2-parseInt(getElement('view_div').style.left)));
	cy=Math.round(cy-zoomh/2+zoomh-zoomh/maph*(maph/2-parseInt(getElement('view_div').style.top)));
  }
  ClearAddress();
  SetMap(false);
}


var i=0

function map1_drag(evnt)
{

  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;

    getElement('zoomrect').style.left=x1+'px';
    getElement('zoomrect').style.top=y1+'px';
    getElement('zoomrect').style.width=x2-x1+'px';
	var h=y2-y1;
	if (h==0) h=1;
    getElement('zoomrect').style.height=h+'px';
    getElement('zoomrect').style.visibility='visible';
    getElement('zoomrect').style.display='block';
  }
  if (ACTION=="shift") 
  {
    Xpoint = e.x;
    Ypoint = e.y;
//    document.images["map1"].style.left=Xpoint-X0point;
//    document.images["map1"].style.top=Ypoint-Y0point;
    getElement('view_div').style.left=(Xpoint-X0point)+'px';
    getElement('view_div').style.top=(Ypoint-Y0point)+'px';
//	for (var i=0; i<objects.length; i++)
//		SetObject(objects[i],i,(Xpoint-X0point),(Ypoint-Y0point))
  }
  return !isDrag;
}

function getElement(id) 
{
	if(document.getElementById)return document.getElementById(id);
	if(document.all)return document.all(id);
	if(document.layers)return document.layers(id);
}

function ClearAddress()
{
	getElement('metro').options.selectedIndex=0;
	getElement("address").value='';
	SetAddress(2);
	getElement("rb02").checked=true;
}

function SetMap(f)
{
  page=1;
  var s, sm;
  if (zoom>maxzoom) zoom=maxzoom;
  if (zoom<minzoom) zoom=minzoom;
  if (cx>xx+maxzoom/2) cx=Math.round(xx+maxzoom/2);
  if (cx<xx-maxzoom/2) cx=Math.round(xx-maxzoom/2);
  if (cy>yy+maxzoomh/2) cy=Math.round(yy+maxzoomh/2);
  if (cy<yy-maxzoomh/2) cy=Math.round(yy-maxzoomh/2);
  setXYZoomByMetro();
  setXYZoomByAddress();
  //s='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+label+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+bankurl+typeurl+wo+'&page='+page+'&npage='+npage;
  sm='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph;
  document.images["map1"].src = URL+'&'+sm;
  BankList(GetURL());
  //oldpage=page;
  if (f) 
  {
  	page=1;
  }
  hideInfo();
//  SetZoomLev(GetLev());
}


function BankList(s)
{
  var Response = "";
  var showFlag=true;
  if (s.indexOf('=objects')>0) showFlag=false;
  if (s.indexOf('type')>0)
  	Response=makeRPCCall('http://'+hostname+'/bankiru_db/Default.aspx?'+s);
  var ol="", ff="";
  if (Response!='')
  {
    var xml=getXMLDoc(Response);
	var count=xml.getElementsByTagName("count")[0].childNodes[0].nodeValue;
	ol=BankListPrint(xml, showFlag);
	BankListAll(xml);
  }
  else
  {
	if (s.indexOf('type')>0)
    	ff='<strong>На отображаемом участке карты не найдено ни одного объекта, удовлетворяющего условиям поиска.</strong> Попробуйте изменить параметры или район поиска.';
	for (var i=0; i<npage; i++)
    {
	  var a=getElement(i+'object');
	  a.style.display='none';
	  a.style.visibility='hidden';
    }
  }
  var n=count/npage;
  if (Math.floor(n)!=n) n=Math.floor(n)+1;
  var str='',str0='';
  PageCount=n;
  if (n>1)
	  {
	  str0='<strong>Страницы</strong>';
	  if (page==1)
		  str0+='<nobr><span class="arrow unactive"><span><span>&larr;</span> Ctrl </span>предыдущая</span>';
	  else
		  str0+='<nobr><span class="arrow"><span><span>&larr;</span> Ctrl </span><a href="javascript:page='+(page-1)+'; ShowPage();">предыдущая</a></span>';
	  if (page==n)
		  str0+='<span class="arrow">следующая<span> Ctrl <span>&rarr;</span></span></span></nobr>';
	  else
		  str0+='<span class="arrow unactive"><a href="javascript:page='+(page+1)+'; ShowPage();">следующая</a> <span> Ctrl <span>&rarr;</span></span></span></nobr>';
	  str+='<div class="numbers">';
	  if (page>1)
		  str+='<a href="javascript:page=1; ShowPage();">&lt;&lt;</a>';
	  var nn=7, nn1, nn2, str2='';
	  nn1=page-nn;
	  if (nn1<2) nn1=1;
	  else str+='<a href="javascript:page='+(nn1-1)+'; ShowPage();">&hellip;</a>';
	  nn2=page+nn;
	  if (nn2>n-1) nn2=n;
	  else str2='<a href="javascript:page='+(nn2+1)+'; ShowPage();">&hellip;</a>';
	  for (var i=nn1; i<=nn2; i++)
	  {
  		if (page==i)
	  		str+='<span class="active">'+i+'</span>';
		else
		  	str+='<a href="javascript:page='+i+'; ShowPage();">'+i+'</a>';
	  }
	  if (page<n)
		  str+=str2+'<a href="javascript:page='+n+'; ShowPage();">&gt;&gt;</a></div>';
  }
  var nn=(page-1)*npage+1;
  if (n>0 && showFlag)
  {
  	ff='<strong><nobr>Найдено объектов: '+count+'.</nobr></strong>';
	if (n>1)
	{
		if (page==PageCount)
		  ff+=' <nobr>Показаны '+nn+'&mdash;'+(count)+'</nobr>';
		else
		  ff+=' <nobr>Показаны '+nn+'&mdash;'+(nn+npage-1)+'</nobr>';
	}
  }
  getElement('ffind').innerHTML=ff;
  getElement('fobj').innerHTML=ol;
  getElement('fobj').start=nn;
  zoomh=zoom*maph/mapw;
  if (location.href.indexOf('print.asp')>0) return;
  getElement('pages').innerHTML=str0+str;
  getElement('pagestop').innerHTML=str;
}

function SetObjectAll(obj, i, dx, dy)
{
	var a=getElement(i+'all');
	if (!a) return;
	var scale=zoom/mapw;
    var vx=mapw/2-Math.round((cx-obj.x)/scale)+dx;
    var vy=maph/2+Math.round((cy-obj.y)/scale)+dy;
	a.style.display='block';
	a.style.visibility='visible';
	a.style.left=vx-6+'px';
	a.style.top=vy-6+'px';
	//a.alt=obj.id_obj+'_'+i;
	switch(obj.id_type)
	{
		case 4:
			a.src="http://www.banki.ru/map/images/icons/atm_dot.png";
		    break;
		default:
			if (obj.head)
				a.src="http://www.banki.ru/map/images/icons/headoffice_dot.png";
			else
				a.src="http://www.banki.ru/map/images/icons/office_dot.png";
		    break;
	}
}

function BankListAll(xml)
{
    alls=new Array();
    var objs=xml.getElementsByTagName("all");
    var str, _id_obj, _name, _bankname, _type, _wo, _tel, _fax, _regime, _address, _info, _bank_id, _icon, _id_type, _head;

    for (var i=0; i<objs.length; i++)
    {
	    var obj = new Object();
	    for (var j=0; j<objs[i].childNodes.length; j++)
	    {
		    str='';
		    if (objs[i].childNodes[j].childNodes[0]!=null)
			    str=objs[i].childNodes[j].childNodes[0].nodeValue;
		    switch (objs[i].childNodes[j].nodeName)
		    {
			    case "id_obj":    _id_obj = parseInt(str);      break;
			    case "x":	  _x = str; break;
			    case "y":	  _y = str; break;
			    case "id_type": _id_type = parseInt(str); break;
			    case "head":	  if (str=='True') _head = true; else _head=false; break;
			    case "name": 	  _name = str; break;
			    case "id_bank": _bank_id = parseInt(str); break;
		    }
	    }
	    obj.id_obj=_id_obj;
	    obj.x=_x;
	    obj.y=_y;
	    obj.id_type=_id_type;
	    obj.head=_head;
	    obj.id_bank=_bank_id;
	    obj.name=_name;
	    alls[i]=obj;
	    
	    SetObjectAll(obj, i, 0, 0);
	}
    for (var i=alls.length; i<M+npage; i++)
    {
	  var a=getElement(i+'all');
	  a.style.display='none';
	  a.style.visibility='hidden';
    }
}

function BankListPrint(xml, flag)
{
	var ol="";
  	var objs=xml.getElementsByTagName("object");
	var str, _id_obj, _name, _bankname, _type, _wo, _tel, _fax, _regime, _address, _info, _bank_id, _icon, _id_type, _head;
	objects=new Array();

  	for (var i=0; i<objs.length; i++)
	{
		var obj = new Object();
		for (var j=0; j<objs[i].childNodes.length; j++)
		{
			str='';
			if (objs[i].childNodes[j].childNodes[0]!=null)
				str=objs[i].childNodes[j].childNodes[0].nodeValue;
			switch (objs[i].childNodes[j].nodeName)
			{
				case "id_obj":    _id_obj = parseInt(str);      break;
				case "name": 	  _name = str; break;
				case "bankname":  _bankname = str; break;
				case "type":  	  _type = str; break;
				case "wo-day-off":_wo = parseInt(str); break;
				case "tel":		  _tel = str; break;
				case "fax":		  _fax = str; break;
				case "regime":	  _regime = str; break;
				case "address":	  _address = str; break;
				case "info":	  _info = str; break;
				case "x":	  _x = str; break;
				case "y":	  _y = str; break;
				case "id_bank": _bank_id = parseInt(str); break;
				case "id_type": _id_type = parseInt(str); break;
				case "icon":	  if (str=='True') _icon = true; else _icon=false; break;
				case "head":	  if (str=='True') _head = true; else _head=false; break;
			}
		}
		if (_id_obj!='' && _x!='' && _y!='')
		{
//			if (_name!='') _name=' «'+_name+'»';
//			if (_bankname!='') _bankname=_bankname+'. '
//			if (_type.toLowerCase().indexOf('отделение')>-1) _type='Отделение';
//			ol+='<li><a href="javascript:lay=\'objects\';id='+_id_obj+';ShowAddressOnMap('+_x+','+_y+',\'$'+_bankname+'$ %'+_type+' '+_name+'\');">'+_bankname+'. '+_type+_name+'</a>';
			ol+='<li>';
			if (flag)
				ol+='<a onmouseover="ShowHint('+i+')" onmouseout="CloseHint()" href="javascript:lay=\'objects\';id='+_id_obj+';ShowAddressOnMap('+_x+','+_y+',\''+_name+'\','+_bank_id+','+_id_type+');">'+_name+'</a>';
			else
				ol+='<b>'+_name+'</b>';
		}
		if (_address!='')
			ol+='<div>'+_address+'</div>';
		if (_tel!='' || _fax!='')
		{
			var ttt='';
			if (_tel!='') ttt+=_tel;
			if (_fax!='') ttt+=', '+_fax
			ol+='<div class="iconInfo"><img src="http://www.banki.ru/map/images/ico_phone_12x12.gif" class="ico12x12" alt="телефон" />'+ttt+'</div>';
		}
		if (_regime!='')
			ol+='<div class="iconInfo"><img src="http://www.banki.ru/map/images/ico_clock_12x12.gif" class="ico12x12" alt="режим работы" />'+_regime+'</div></li>';
		if (id!=0 && lay=='objects' && _info!='')
			ol+='<div class="addInfo">'+_info+'</div>';
			
		obj.id_obj=_id_obj;
		obj.name=_name;
		obj.bankname=_bankname;
		obj.type=_type;
//		obj.wo-day-off=_wo;
		obj.tel=_tel;
		obj.fax=_fax;
		obj.regime=_regime;
		obj.address=_address;
		obj.info=_info;
		obj.x=_x;
		obj.y=_y;
		obj.bank_id=_bank_id;
		obj.num=(page-1)*npage+1+i;
		obj.icon=_icon;
		obj.head=_head;
		obj.id_type=_id_type;
		objects[i]=obj;
		SetObject(obj, i, 0, 0);
	}
	for (var i=objects.length; i<npage; i++)
    {
	  var a=getElement(i+'object');
	  a.style.display='none';
	  a.style.visibility='hidden';
    }
	return ol;
}

function SetObject(obj, i, dx, dy)
{
	var a=getElement(i+'object');
	a.style.display='block';
	a.style.visibility='visible';
	var scale=zoom/mapw;
    var vx=mapw/2-Math.round((cx-obj.x)/scale)+dx;
    var vy=maph/2+Math.round((cy-obj.y)/scale)+dy;
	a.style.left=vx-pictWhalf+'px';
	a.style.top=vy-pictHhalf+'px';
	var a=getElement('numobj'+i);
	a.innerHTML=obj.num;
	var a=getElement('imobj'+i);
	var b=getElement('imbgr'+i);
	switch(obj.id_type)
	{
		case 4:
			if (obj.icon)
				a.src="http://www.banki.ru/map/images/icons/banks/"+obj.bank_id+".gif";
			else
				a.src="http://www.banki.ru/map/images/icons/atm.gif";
			b.src="http://www.banki.ru/map/images/icons/atm_bg.gif";
		    break;
		default:
			if (obj.icon)
			{
				a.src="http://www.banki.ru/map/images/icons/banks/"+obj.bank_id+".gif";
				if (obj.head)
					b.src="http://www.banki.ru/map/images/icons/headoffice_bg.gif";
				else
					b.src="http://www.banki.ru/map/images/icons/office_bg.gif";
			}
			else
			{
				if (obj.head)
				{
					a.src="http://www.banki.ru/map/images/icons/headoffice.gif";
					b.src="http://www.banki.ru/map/images/icons/headoffice_bg.gif";
				}
				else
				{
					a.src="http://www.banki.ru/map/images/icons/office.gif";
					b.src="http://www.banki.ru/map/images/icons/office_bg.gif";
				}
			}
		    break;
	}
}

function DrawObjects()
{
  for (var i=0; i<npage; i++)
  {
	var a=document.createElement("div");
	a.className='obj';
	a.id=i+'object';
	a.style.top='0px';
	a.style.left='0px';
	a.style.position='absolute';
	a.style.visibility='hidden';
	a.style.display='none';
	a.style.cursor='help';
	a.onmouseover=ShowHint2;
	a.onmouseout=CloseHint;
	a.onclick=ShowObj;
	//a.innerHTML='<div><img id="imobj'+i+'" src="_ar/i/i_ico_32x32.gif" hspace="1" vspace="1"></div>';
	//a.innerHTML+='<div class="number" id="numobj'+i+'"></div>';
	var h='<img id="imbgr'+i+'" class="objBg" />';
	h+='<table class="objIcon"><tr><td><img id="imobj'+i+'" class="objIcon" /></td></tr>';
	h+='<tr><td class="digits" id="numobj'+i+'"></td></tr>	</table>';
	a.innerHTML=h;
	a.style.zIndex=npage-i;
	getElement('view_div').appendChild(a);
  }	
  for (var i=0; i<M+npage; i++)
  {
    var a=document.createElement("img");
    a.id=i+'all';
    a.style.top='0px';
    a.style.left='0px';
    a.style.position='absolute';
    a.style.visibility='hidden';
    a.style.display='none';
    a.style.cursor='help';
    a.onclick=ShowObjAll;
    a.onmouseover=mflagTrue;
    a.onmouseout=mflagFalse;
    getElement('view_div').appendChild(a);
  }
}

function mflagTrue()
{
    markerFlag=true;
}

function mflagFalse()
{
    markerFlag=false;
}

function ShowHint2(e)
{
	var i=parseInt(this.id);
	ShowHint(i);
}

function ShowObj(e)
{
	var i=parseInt(this.id);
	lay='objects';
	id=objects[i].id_obj;
	ShowAddressOnMap(objects[i].x,objects[i].y,objects[i].name,objects[i].bank_id,objects[i].id_type);	
}

function ShowObjAll(e)
{
	var i=parseInt(this.id);
	lay='objects';
	id=alls[i].id_obj;
	ShowAddressOnMap(alls[i].x,alls[i].y,alls[i].name,alls[i].bank_id,alls[i].id_type);	
}

function lenPx(s)
{
	var ss=s;
	while (ss.indexOf("&laquo;")>-1)
	{
		ss=ss.replace('&laquo;','а')
	}
	while (ss.indexOf("&nbsp;")>-1)
	{
		ss=ss.replace('&nbsp;','а')
	}
	while (ss.indexOf("&#8470;")>-1)
	{
		ss=ss.replace('&#8470;','а')
	}
	while (ss.indexOf("&raquo;")>-1)
	{
		ss=ss.replace('&raquo;','а')
	}
	return ss;
}

var currentHint=-1;
function ShowHint(i)
{
	var l1, l2, l3, ss;
	markerFlag=true;
	ObjPos = getPos(getElement('view_div'));
	var div=getElement(i+'object');
	var hint_body=getElement('hint_body');
	var h='';
	s=objects[i].name;
	ss=lenPx(s);
	l1=ss.length*6;
	if (s!='') h='<b>'+s+'</b><br>';
	s=objects[i].address;
	ss=lenPx(s);
	l2=ss.length*4.8;
	if (s!='') h=h+s;
	hint_body.innerHTML=h;
	var hint=getElement('hint');
	var l=parseInt(div.style.left);
	var t=parseInt(div.style.top);
	if (t<maph/4-20)
		hint.style.top=ObjPos.y+t+22+'px';
	else
		hint.style.top=ObjPos.y+t-47+'px';
	if (l1>l2) l3=l1; else l3=l2; 
	l3=Math.round(l3);
	if (l>2*mapw/3)
		hint.style.left=ObjPos.x+l-l3+'px';
	else
		if (l>mapw/3)
			hint.style.left=ObjPos.x+l-Math.round(l3/2)+'px';
		else
			hint.style.left=ObjPos.x+l+20+'px';
	hint.style.visibility='visible';
	hint.style.display='block';
	div.style.zIndex=100;
	div.className="obj select"
	currentHint=div;
}

function CloseHint(e)
{
	markerFlag=false;
	var hint=getElement('hint');
	hint.style.visibility='hidden';
	hint.style.display='none';
	currentHint.style.zIndex=npage-parseInt(currentHint.id);
	currentHint.className="obj"
}

var markerLength=240;
function ShowMarker()
{
// ObjPos = getPos(document.images["map1"]);
  ObjPos = getPos(getElement('view_div'));
  dx = document.documentElement.scrollLeft-2;
  dy = document.documentElement.scrollTop-2;
  if (label!='' && markerx<cx+zoom/2 && markerx>cx-zoom/2 && markery<cy+zoomh/2 && markery>cy-zoomh/2)
  {
  	var label2=label
	var scale=zoom/mapw;
    markerscrx=mapw/2-Math.round((cx-markerx)/scale);
    markerscry=maph/2+Math.round((cy-markery)/scale);
	
	if (lay=='objects')
	{
	var pnt=label2.indexOf('.')
	if (pnt>0)
	{
		label2='<strong>'+label2.substring(0,pnt)+'</strong>'+label2.substring(pnt, label2.length)
	}
	getElement('marker').className='';
	if (markerscrx>2*mapw/3)
	{
		markerscrx-=markerLength-11;
		getElement('divArr').style.textAlign="right";
	}
	else
		if (markerscrx>mapw/3)
		{
			markerscrx-=markerLength/2-6;
			getElement('divArr').style.textAlign="center";
		}
		else
			getElement('divArr').style.textAlign="left";
	}
	else
		getElement('marker').className='address';
  	getElement('marker').style.left=ObjPos.x+markerscrx+'px';
  	getElement('marker').style.top=ObjPos.y+markerscry+2+'px';
  	getElement('marker').style.visibility='visible';
  	getElement('marker').style.display='block';
	while (label2.indexOf('%')>-1)
		label2=label2.replace('%','<br>');
	label2=label2.replace('$','<b>');
	label2=label2.replace('$','</b>');
	getElement('marker_text').innerHTML=label2;
  }
  else
  {
   	getElement('marker').style.visibility='hidden';
  	getElement('marker').style.display='none';
  }
}

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()
{
  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;
  if (location.href.indexOf('print.asp')>0) return;
  for(var j=1;j<50;j++) 
  {
    if (!doc.images['zm_'+j]) break;
    doc.images['zm_'+j].src='http://www.banki.ru/map/images/grey.gif';
	if (getElement("zma_"+j)) getElement("zma_"+j).className="";
  }
  if (lev!=null) 
  {
  	doc.images['zm_'+lev].src='http://www.banki.ru/map/images/green.gif';
	if (getElement("zma_"+lev)) getElement("zma_"+lev).className="zm_bold";
  }
}

function mapLoad()
{
//  document.images["map1"].style.left=0;
//  document.images["map1"].style.top=0;
  getElement('view_div').style.left='0px';
  getElement('view_div').style.top='0px';
// ObjPos = getPos(document.images["map1"]);
  ObjPos = getPos(getElement('view_div'));
  if (location.href.indexOf('print.asp')>0)
  {
  	if (objects.length>1 || objects.length==0) ShowMarker();
	else CloseMarker();
  }
  else
	ShowMarker();
  if (location.href.indexOf('print.asp')>0) return;
  SetNavRect();
  SetZoomLev(GetLev());
  SetCursor(ACTION);
}

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(false);
  nMapHistory=CheckMapHistoryIndex(aind+1);
  UndoRedoDisabled();
  //return false;
}

function bRedoClick()
{
  if(!use[nMapHistory]) return;
  setMapParameters(nMapHistory);
  SetMap(false);
  nMapHistory=CheckMapHistoryIndex(nMapHistory+1);
  UndoRedoDisabled();
  //return false;
}

function UndoRedoDisabled()
{
  if (CheckMapHistoryUndo()) 
  {
  	getElement('undo').src="http://www.banki.ru/map/images/undo_s.gif";
	getElement('undo_a').className="";
  } 
  else 
  {
  	getElement('undo').src="http://www.banki.ru/map/images/undo.gif";
	getElement('undo_a').className="hidd";
  }
  if (CheckMapHistoryRedo()) 
  {
  	getElement('redo').src="http://www.banki.ru/map/images/redo_s.gif";
	getElement('redo_a').className="";
  } 
  else 
  {
  	getElement('redo').src="http://www.banki.ru/map/images/redo.gif";
	getElement('redo_a').className="hidd";
  }
//  getElement('undo').disabled=!CheckMapHistoryUndo();
//  getElement('redo').disabled=!CheckMapHistoryRedo();
}

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 wOpen(str,u,flag,w,h)
{
//alert(label)
//  var encode_label=strEncode(label)
  //var sname=str+'.asp?'+URL+'&x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+strEncode(label)+TrackURL+TypeURL+u+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+bankurl+typeurl+wo+'&page='+oldpage+'&npage='+npage;;
  var sname=str+'.asp?'+URL+'&'+GetURL();
  sname=sname.replace('map.asp?','');
//  alert(strEncode(label))
  if (flag) sname+='&name='+new Date().getTime();
  var s='resizable=yes,scrollbars=yes,menubar=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()
{
  //getElement('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();
  getElement('refr').src='mail.asp?'+URL+'&'+GetURL();
}

function cookieGMT(d) {
  var curdt=new Date();
  if (curdt.getMonth()==12)  curdt=new Date(curdt.getYear(),d,curdt.getDate());
    curdt=new Date(curdt.getYear(),curdt.getMonth()+d,curdt.getDate());
    return curdt.toGMTString();
}

function getParam(s,param,delim) {
    if (s==null) return null;

    var params=s.split(delim);
    for(j=0;j<params.length;j++) {
      var v=params[j];
      var pos=v.indexOf(param+'=');
      if(pos!=0) continue;

      v=v.substring(param.length+1);
      if(v.length==0) return null;
      return unescape(v);
    }
    return null;
}

function getWH()
{
	var ww=null, hh=null;
	if (document.cookie)
	{
		ww=getParam(document.cookie,'mapw','; ');
		hh=getParam(document.cookie,'maph','; ');
	}
	if (ww==null || hh==null)
	{
		if (window.screen)
		{
			if (window.screen.width>800) {ww=wmiddle;hh=hmiddle;}
			if (window.screen.width>1000) {ww=wbig;hh=hbig;}
			else {ww=wsmall;hh=hsmall;}
		}
		else {ww=wsmall;hh=hsmall;}
	}
	ww=parseInt(ww);
	hh=parseInt(hh);
	return {w:ww,h:hh}
}

var altt=false;
function alt_down(evnt)
{
	var e;
	if (ns) e=evnt; else e=event;
	if (!e.altKey || altt) return;
	altt=true;
	check_alt(evnt);
}

function alt_up(evnt)
{
	var e;
	if (ns) e=evnt; else e=event;
	altt=false;
	check_alt(evnt);
}

function check_alt(evnt)
{
	var act;
	if (!(ACTION=='ZOOMIN' || ACTION =='ZOOMOUT')) return;
	if (ACTION=='ZOOMIN') act='ZOOMOUT'; else act='ZOOMIN';
	SelTooll(act);
}

function SetWO(flag, id)
{
	if (flag) wo='&wo=1'; else wo='';
	getElement("wo_td"+id).className="selectTab";
	getElement("wo_td"+(1-id)).className="tab";
	getElement("wo_href"+id).className="";
	getElement("wo_href"+(1-id)).className="jsGray";
}

function ClearLabStyle()
{
	for (var i=1; i<5; i++)
		getElement("lab"+i).className="";
}

function SetAddress(id)
{
	address=id;
	ClearLabStyle();
	getElement("lab"+id).className="checkedView";
	var m=getElement("metro").style;
	var a=getElement("address").style;
	switch(address)
	{
		case 3:
    		m.visibility='visible';
			m.display='block';
    		a.visibility='hidden';
			a.display='none';
     		break;
		case 4:
    		a.visibility='visible';
			a.display='block';
    		m.visibility='hidden';
			m.display='none';
     		break;
		default:
    		m.visibility='hidden';
			m.display='none';
    		a.visibility='hidden';
			a.display='none';
		    break;
	}
}

function selectAllTypes()
{
	var frm=getElement("legend");
    for(var j=0;j<frm.elements.length;j++) 
	{
      elem=frm.elements[j];
	  if (elem.type=='checkbox') elem.checked=true;
	  if (elem.type=='select-multiple') elem.selectedIndex=0;
    }
	SetWO(false, 0);
	for (var j=1; j<4; j++)
		getElement('type'+j).className='office checked';
	getElement('type4').className='cashMachine checked';
}

function showBanks(notshow)
{
    page=1;
	var frm=getElement("legend");
	bankurl=getSelections(frm.bankid);
	typeurl='';
	for(var j=0;j<frm.elements.length;j++) 
	{
      elem=frm.elements[j];
	  if (elem.type=='checkbox' && elem.name!='wo' && elem.checked) typeurl+='&type='+elem.value;
	  if (elem.type=='checkbox' && elem.name=='wo' && elem.checked) wo='&wo=1';
	}
	lay='';
	id=0;
	CloseMarker();
	if (address==1)
	{
		cx=xx;
		cy=yy;
		zoom=maxzoom;
	}
//	SetMap(false);
	setXYZoomByMetro();
	setXYZoomByAddress();
	var t="?"+GetURL();
	if (notshow) t+='&show=no';
	location.href=t;
	return false;
}

function ShowPage()
{
	location.href="?"+GetURL();
}

function GetURL()
{
	//var s='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+'&label='+strEncode(label)+TrackURL+TypeURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+'&vis='+vis+bankurl+typeurl+wo+'&page='+page+'&npage='+npage+'&address='+address;
	var s='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+TrackURL+TypeURL+'&w='+mapw+'&h='+maph+bankurl+typeurl+wo+'&page='+page+'&npage='+npage+'&address='+address+'&markerx='+markerx+'&markery='+markery+'&label='+strEncode(label);
	if (address==4) s+='&addrvalue='+strEncode(getElement("address").value);
	if (address==3) s+='&metrovalue='+getElement('metro').options.selectedIndex;
	return s;
}

function getSelections(list) 
{
    var selected='';
    for (var i = 0; i < list.options.length; i++)
        if (list.options[i].selected) 
		{
            selected+='&bankid='+list.options[i].value;
        }
    return selected;
}

function setXYZoomByMetro()
{
	if (address!=3) return;
  	var frm=getElement("legend");
	var selected='';
	var list=getElement('metro');
	selected=list.options[list.options.selectedIndex].value
    if (selected!='every') 
	{
    	selected=selected.split(',');
		cx=selected[0];
		cy=selected[1];
		zoom=2000;
    }
}

function setXYZoomByAddress()
{
	if (address!=4) return;
	var addr=getElement("address").value+'';
	if (addr=='') return;
	var Response;
	Response = makeRPCCall('http://'+hostname+'/addr.asp?address='+strEncode(addr));
	if (Response!='')
	{
		zoom=1000;
		cx=getXMLDoc(Response).getElementsByTagName("x")[0].childNodes[0].nodeValue;
		cy=getXMLDoc(Response).getElementsByTagName("y")[0].childNodes[0].nodeValue;
	}
}

function strEncode0(s) 
{
    var res='',c,c0='А'.charCodeAt(0);
    for(j=0;j<s.length;j++) {
      c=s.charCodeAt(j);
	  if (s.charAt(j)=='№')
	  	res=res+'%B9';
	  else
	  {
	  	if (s.charAt(j)=='ё')
	  	 res=res+'%B8';
		else
		{
	      if (c>=c0) {
    	    c=c-c0+192;
        	res=res+'%'+c.toString(16);
	      }
    	  else
        	res=res+escape(s.charAt(j));
		}
	  }
    }

    return res;
}   

function strEncode(s) 
{
    var res='',c,c0='А'.charCodeAt(0);
	var ttt;
    for(j=0;j<s.length;j++) {
      c=s.charCodeAt(j);
	  if (s.charAt(j)=='№')
	  	res=res+'%B9';
	  else
	  {
	  	if (s.charAt(j)=='ё')
	  	 res=res+'%B8';
		else
		{
	      if (c>=c0) {
    	    c=c-c0+192;
			ttt=c.toString(16);
			if (ttt.length<3)
	        	res=res+'%'+ttt;
			if (ttt=='1cc4')
				res+='-';
	      }
    	  else
		  {
			ttt=escape(s.charAt(j));
			if (ttt=='%A0') ttt='%20';
        	res=res+ttt;
		  }
		}
	  }
    }
    return res;
}  

function makeRPCCall(url){
    var httpReq = false;
    if (typeof XMLHttpRequest!='undefined') {
        httpReq = new XMLHttpRequest();
    } else {
        try {
            httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0");
        } catch (e) {
            try {
                httpReq = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (ee) {
                try {
                    httpReq = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (eee) {
                    httpReq = false;
                }
            }
        }
    }
    httpReq.open("GET", url, false);
	httpReq.setRequestHeader('Content-Type', 'text/xml');
	httpReq.send(null);
	if (httpReq.status == 200) {return httpReq.responseText;} else
	{
		if (httpReq.status == 500) alert("Server Exception: "+httpReq.status);
		return httpReq.status;
	}
  }

  // Get XML Parser for this browser
function getXMLDoc(xmldata){
	var xmlDoc = false;
	// Internet Explorer
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); //new ActiveXObject("Msxml­2.DOMDocument.3.0");+
		xmlDoc.loadXML(xmldata);
		if (xmlDoc.parseError.errorCode)
		{
			alert('IE XML ERROR: '+xmlDoc.parseError.reason+' ('+xmlDoc.parseError.errorCode+')');
			return false;
		};
		return xmlDoc;
	}
	// Mozilla, Opera
	if (document.implementation && document.implementation.createDocument)
	{
		// xmlDoc = document.implementation.createDocument("","",null);
		var parser = new DOMParser();
		xmlDoc = parser.parseFromString(xmldata, "text/xml");
		return xmlDoc;
	};
	alert('Your browser cannot handle this script!');
    return false;
}

function Pages(e)
{
	if (!e) e = window.event;
	var k = e.keyCode;
	if (e.ctrlKey && k==37 && page>1) {page--;ShowPage();}
	if (e.ctrlKey && k==39 && page<PageCount) {page++;ShowPage();}
}

function GetRef()
{
  var sname='ref.asp?'+URL+'&'+GetURL();
  sname=sname.replace('map.asp?','');
  sname+='&name='+new Date().getTime();
  var Response = makeRPCCall('http://'+hostname+'/'+sname);
  if (Response!='')
  {
    var xml=getXMLDoc(Response);
	var str=xml.getElementsByTagName("root")[0].childNodes[0].nodeValue;
	getElement("refbody").innerHTML='<a id="refref" href="'+str+'">'+str+'</a>';
	getElement("ref").style.visibility="visible";
	getElement("ref").style.display="block";
	ObjPos = getPos(getElement('view_div'));
	getElement("ref").style.left=ObjPos.x+"px";
	getElement("ref").style.top=ObjPos.y+maph-82+"px";
  }
}

function copy2clipb() 
{
  window.clipboardData.setData("Text",getElement("refref").innerHTML);
  getElement("clip").innerHTML="Скопировано!";
}

function ClearSearchParams()
{
	location.href="?w="+mapw+'&h='+maph;
}

function SendErr()
{
	location.href="http://www.banki.ru/info/feedback/?serviceName=%C1%E0%ED%EA%E8+%ED%E0+%EA%E0%F0%F2%E5"+'&'+GetURL();
}

