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 pictWhalf=9, pictHhalf=9;
var radius=12;

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 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='move';
     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='i/'+ACTION+'.gif';
  ACTION=act;
  doc.images[ACTION].src='i/'+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 map1_click(evnt)
{
  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 (!cond) return true;
//  info_map1(e.x-ObjPos.x+dx, e.y-ObjPos.y+dy);
//  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 (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)))/1.7;
	if (len>1000) label=(len/1000).toFixed(2) + ' êì';
	else label=Math.round(len) + ' ì';
	trx_0=tr_x;
	try_0=tr_y;
  	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=="shift") 
  {
	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)));
  }
  SetMap(false);
}


var i=0

function map1_drag(evnt)
{

  var e,cond;
  e=getEventPos(evnt);
  if(!isDrag) return true;
  if (ACTION=="shift") 
  {
    Xpoint = e.x;
    Ypoint = e.y;
    getElement('view_div').style.left=(Xpoint-X0point)+'px';
    getElement('view_div').style.top=(Ypoint-Y0point)+'px';
  }
  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 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);
  sm='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+TrackURL+'&markerx='+markerx+'&markery='+markery+'&w='+mapw+'&h='+maph+layUrl;
  document.images["map1"].src = URL+'&'+sm;
}


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);
	
  	getElement('marker').style.left=markerscrx+'px';
  	getElement('marker').style.top=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='i/zm_'+j+'.gif';
  }
  if (lev!=null) 
  {
  	doc.images['zm_'+lev].src='i/zm_cur'+lev+'.gif';
  }
}

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;
  SetZoomLev(GetLev());
  SetCursor(ACTION);
  SetObjects();
  zoomh=zoom*maph/mapw;
}

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()+layUrl;
  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 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 GetURL()
{
	var s='x='+cx+'&y='+cy+'&zoom='+zoom+'&lay='+lay+'&id='+id+TrackURL+'&w='+mapw+'&h='+maph+'&markerx='+markerx+'&markery='+markery+'&label='+strEncode(label)+layUrl;
	return s;
}

function strEncode(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 DrawObject(id, im, z, i, url)
{
	var a=document.createElement("div");
//	a.className='obj';
	a.id=id;
	a.style.top='0px';
	a.style.left='0px';
	a.style.position='absolute';
	a.style.visibility='hidden';
	a.style.display='none';
	if (url!='')
	{
		a.onclick=ShowObj;
		a.style.cursor='pointer';
	}
	a.onmouseover=ShowHint;
	a.onmouseout=CloseHint;
	var h;
	if (im)
	{
		h='<img src="'+im+'"/>';
		a.style.filter='alpha(opacity=70)';
		a.style.MozOpacity='.70'; 
		a.style.opacity='.70';
	}
	else
		h='<img id="imobj'+i+'"/>';
	a.innerHTML=h;
	a.style.zIndex=z;
	getElement('view_div').appendChild(a);
}

function DrawObjects()
{
  var sho='';
  for (var i=0; i<objects.length; i++)
  {
    if (objects[i].url!='') sho='ShowObj';
	DrawObject(i+'shadow', 'legend/fon.gif', objects.length-i, i, objects[i].url);
	DrawObject(i+'object', null, objects.length-i, i, objects[i].url);
  }	
}

function ShowHint()
{
	var i=parseInt(this.id);
	h=getElement('hint');
	a=getElement(i+'object');
	h.style.top=a.style.top;
	h.style.left=a.style.left;
	getElement('hint_text').innerHTML=objects[i].name;
	h.style.display='block';
}

function CloseHint()
{
	getElement('hint').style.display='none';
}

function ShowObj(e)
{
	var i=parseInt(this.id);
	window.open(objects[i].url,'');
}

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;
    var rx=0; ry=0;
	if (objects[i].ind>0)
    {
        rx=radius*Math.cos(objects[i].ind*2*Math.PI/9);
        ry=radius*Math.sin(objects[i].ind*2*Math.PI/9);
        rx=Math.round(rx);
        ry=Math.round(ry);
    }
	a.style.left=vx+rx-pictWhalf+'px';
	a.style.top=vy+ry-pictHhalf+'px';
	var a=getElement('imobj'+i);
	a.src="legend/"+obj.im+".gif";
	var a=getElement(i+'shadow');
	a.style.display='block';
	a.style.visibility='visible';
	a.style.left=vx+rx-3-pictWhalf+'px';
	a.style.top=vy+ry+3-pictHhalf+'px';
}

function AddIndex()
{
	var sss='';
	var scale=(zoom/mapw)*(pictWhalf);
    for (var i=1; i<objects.length; i++)
        for (var j=0; j<i; j++)
        {
            if (Math.abs(objects[i].x-objects[j].x)<scale && Math.abs(objects[i].y-objects[j].y)<scale)
                objects[i].ind++;
        }
}

function SetObjects()
{
  //AddIndex();
  for (var i=0; i<objects.length; i++)
  	SetObject(objects[i], i, 0, 0)
} 
