﻿var geoPoint;


Object.extend = function(destination, source) {
	for (property in source) destination[property] = source[property];
	return destination;
}

Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this;
  return function(event) {
    return __method.call(object, event || window.event);
  }
}

function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	$c(arguments).each(function(el){
		elements.push(get$(el));
	});
	return elements;

	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}

function pinf(x,y,fs){
	var p={x:parseInt(x),y:parseInt(y)};
	var f=[];
	var fsa=fs.split(',');
	if(fsa.length==0 || fsa.length%2==1)return false;
	for(var i=0;i<fsa.length;i+=2){
		f.push({x:parseInt(fsa[i]),y:parseInt(fsa[i+1])});
	}
  if(f.length<=2)return false;
	
  var ar=0;
  var j= 0;
  for(var i=0;i<f.length;i++){
    if(i==f.length-1){j=0;}else{j=i+1;}
    if((((p.y>=f[i].y) && (p.y<f[j].y)) ||
			((p.y>=f[j].y) && (p.y<f[i].y))) &&
			(p.x<(f[j].x-f[i].x)*(p.y-f[i].y)/(f[j].y-f[i].y)+f[i].x)) {
			ar = ar+1;
		}
	}
  return ar%2==1;
}

AjaxPro.RequestQueue.prototype.abortMethod=function(method){
	if (this.timer != null) {
		clearTimeout(this.timer);
	}
	this.timer = null;
	for(var i=0;i<this.queue.length;i++){
		if(this.queue[i][1]==method)this.queue.splice(i--,1);
	}
	for(var i=0;i<this.requests.length;i++){
		if(this.requests[i].method==method && this.requests[i].isRunning==true){
			this.requests[i].abort();
		}
	}
}


var brws={
	init:function(){
		window.ns=navigator.appName.toLowerCase()=='netscape';
		window.op=navigator.userAgent.toLowerCase().indexOf('opera')>0;
		window.ie=navigator.userAgent.toLowerCase().indexOf('msie')>0&&!op;
		
		this.w=ie||ns?document.documentElement.clientWidth:document.body.clientWidth;
		this.h=ie||ns?document.documentElement.clientHeight:document.body.clientHeight;
		
		window.onresize=this.resize.bindAsEventListener(this);
		
	},
	
	resize:function(){
		if(window.allowresize==false)return false;
		window.allowresize=false;
		window.setTimeout(function(){window.allowresize=true;},10);
		
		var neww=ie||ns?document.documentElement.clientWidth:document.body.clientWidth;
		var newh=ie||ns?document.documentElement.clientHeight:document.body.clientHeight;
		
		if(this.w!=neww || this.h!=newh){
		    this.w=neww;
		    this.h=newh;
    		
		    this.onresize();
		}
	},
	
	onresize:function(){
		
	},
	
	getparam:function(){
		var p={};
		var href=location.href;
		if(href.indexOf('#')!=-1){
			var pstr=href.substring(href.indexOf('#')+1,href.length);
			p=this.getprmbs(pstr);
		}
		return p;
	},
	
	getprmbs:function(pstr){
		var p={};
		var pa=pstr.split('&');
		for(var i=0;i<pa.length;i++){
			var kv=pa[i].split('=');
			var k=kv[0];
			var v=unescape(kv[1]);
			if(v=='true')v=true;
			if(v=='false')v=false;
			if(v=='null')v=null;
			p[k]=v;
		}
		return p;
	}
	
}


var elm={
	toggle:function(elemid){
		with($(elemid).style)display=display=='none'?'':'none';
	},
	
	setalpha:function(obj,a){
		if(ie){
			obj.style.filter='alpha(opacity='+a+')';
		}
		else{
			obj.style.opacity=a/100;
		}
	},
	
	setbgcolor:function(obj,c){
		obj.style.backgroundColor=c;
	},
	
	setheight:function(obj,h){
		obj.style.height=h+'px';
	},
	
	getpbcn:function(obj,cn){
		if(obj==null)return null;
		if(obj.className==cn)return obj;
		while(obj.parentNode!=null && obj.parentNode!=document.body){
			obj=obj.parentNode;
			if(obj.className==cn)return obj;
		}
		return null;
	},
	
	inelm:function(obj,pobj){
		if(obj==null || pobj==null)return false;
		if(obj==pobj)return true;
		while(obj.parentNode!=null && obj.parentNode!=document.body){
			obj=obj.parentNode;
			if(obj==pobj)return true;
		}
		return false;
	}
}



var map={
	create:function(ctnid,ajaxobj,showpagehandler,blockurl,ajaxgeo){
	
	    var seln;
	    this.cl;
	    this.ghl=[];
	    
		this.opt={t:'2',z:8,x:0,y:0,rl:false,rn:false,ht:false};
		
		this.burl=blockurl;//'http://map.yoy360.com/Block.ashx';
		
		this.ctn=$(ctnid);
		
		this.ctn.style.cursor='url(/modules/map/images/openhand.cur)';
		
		this.ctn.onmousewheel=this.wheelHandle.bindAsEventListener(this);

		
		this.ctn.onmousedown=this.ctnmousedown.bindAsEventListener(this);
		this.ctn.ondblclick=this.ctndblclick.bindAsEventListener(this);
		this.ctn.ondragstart=function(){return false;}
		this.ctn.onselectstart=function(){return false;}
		this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
		this.ctn.onmouseout=this.ctnmouseout.bindAsEventListener(this);
		
		this.ajaxobj=ajaxobj;
		this.ajaxgeo=ajaxgeo;
		
		this.showpageHandler=showpagehandler;
		
		this.rlbtn=$('a_roadline');
		this.rnbtn=$('a_roadname');
		this.htbtn=$('a_mark');
		
		this.zoominbtn=$('d_zoomin');
		this.zoomoutbtn=$('d_zoomout');
		this.zoombtns=[{z:1,o:$('d_zoombtn1')},{z:2,o:$('d_zoombtn2')},{z:4,o:$('d_zoombtn4')},{z:8,o:$('d_zoombtn8')}];
		
		this.favbtn=$('a_fav');
		
		this.crossol=$('d_allmap').appendChild($('d_cross'));
		
		this.crossol.style.display='';
		
		this.loadingol=this.ctn.appendChild($('d_loading'));
		
		this.zoombox=this.ctn.appendChild($('d_zoombox'));
		
		this.mvl=this.ctn.appendChild($('d_mvl'));
		this.mvl.style.display='';
		
		this.mm=[];
		this.mmo=[];
		this.zm=[];
		this.rlm=[];
		this.rnm=[];
		this.rmo=[];
		
		
		this.hsol=this.ctn.appendChild($('d_hsol'));
		this.hsol.style.display='';
		
		this.hsinfo=[];
		this.currhs=null;
		
		this.hshint=$('d_hshint');
		
		this.adol=this.ctn.appendChild($('d_adol'));
		this.adol.style.display='';
		
		this.htol=this.ctn.appendChild($('d_htol'));
		this.htol.style.display='';
		
		this.htol.ondblclick=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		
		this.ht=[];
		this.hto=[];
		this.htinfo=[];
		
		this.schrsltht=[];
		this.schrslthto=[];
		this.schrsltli=[]
		this.schrsltlio=[];
		
		this.infohint=$('d_infohint');
		this.infohinttitle=$('td_infohint_t');
		this.infohintcontent=$('d_infohint_ctt');
		this.infohintloading=$('d_infohint_loading');
		this.infohintcpg=$('d_infohint_cpg');
		this.infohintc=$('d_infohint_c');
		this.infohinturli=$('i_infohint_url');
		this.infohinttabs=[$('d_infohint_baseinfo_s'),$('d_infohint_aound_s'),$('d_infohint_debug_s'),$('d_infohint_fc_s')];
		this.infohintpnls=[$('d_infohint_baseinfo'),$('d_infohint_around'),$('d_infohint_debug'),$('d_infohint_fc')];
		for(var i=0;i<this.infohinttabs.length;i++){
			this.infohinttabs[i]._index=i;
			this.infohinttabs[i].onclick=function(){map.showinfohintpnl(this._index);}
		}
		

		this.infohint2=$('d_infohint2');
		this.infohint2title=$('td_infohint2_t');
		this.infohint2content=$('d_infohint2_ctt');
		
		
		this.infohintbs=$('d_infohintbs');
		this.infohintbstt=$('d_infohintbs_tt');
		this.infohintbsctt=$('d_infohintbs_ctt');
		
		this.minimap=this.ctn.appendChild($('d_minimap'));
		this.minimaparea=$('d_minimaparea');
		this.minimaplocation=$('d_minimaplocation');
		this.minimapctn=$('d_minimapctn');
		this.minimapmvl=$('d_minimapmvl');
		this.minimap.style.display='';
		
		this.minimapo11=document.createElement('IMG');
		this.minimapo11.style.position='absolute';
		this.minimapo12=document.createElement('IMG');
		this.minimapo12.style.position='absolute';
		this.minimapo21=document.createElement('IMG');
		this.minimapo21.style.position='absolute';
		this.minimapo22=document.createElement('IMG');
		this.minimapo22.style.position='absolute';
		
		this.minimap.onmousedown=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.minimap.ondblclick=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.minimap.onmousemove=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.minimaplocation.onmousedown=this.minimaplocationmousedown.bindAsEventListener(this);
		
		
		this.pointer=this.mvl.appendChild($('d_pointer'));
		
		this.busstartp=this.mvl.appendChild($('d_bus_start_p'));
		this.busendp=this.mvl.appendChild($('d_bus_end_p'));
		
		this.locasch=$('d_allmap').appendChild($('d_locasch'));
		this.locaschhd=$('d_locasch_hd');
		this.locaschbd=$('d_locasch_bd');
		
		this.locasch.onmousedown=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.locasch.ondblclick=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.locasch.onmousemove=function(evt){if(this.locaschbd.style.display!=''){this.locaschbd.style.display='';}evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.locasch.onmouseout=function(){if(this.locaschbd.style.display!='none'){this.locaschbd.style.display='none';}}.bind(this);
		
		this.gettingposexternal=false;
		this.gettingposmsg=this.ctn.appendChild($('d_gettingpos'));
		this.gettingposmsg.onmousedown=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.gettingposmsg.ondblclick=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		
		this.fav=this.ctn.appendChild($('d_fav'));
		this.favctn=$('d_fav_ctn');
		this.favloading=$('d_fav_loading');
		this.fav.onmousedown=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.fav.ondblclick=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		this.fav.onmousemove=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		
	},
	
	wheelHandle:function(e){
	    var zoom=1;
            if(e.wheelDelta > 0)
            {
                zoom=map.opt.z/2;
            }
            else
            {
                zoom=map.opt.z*2;
            }
            if(zoom<1)zoom=1;
            if(zoom>8)zoom=8;
            map.czoom(zoom);

    },
	init:function(){
		this.czoombtn(this.opt.z);
		this.crlbtn(this.opt.rl);
		this.crnbtn(this.opt.rn);
		this.chtbtn(this.opt.ht);
	},
	
	reload:function(){
		this.czoombtn(this.opt.z);
		this.crlbtn(this.opt.rl);
		this.crnbtn(this.opt.rn);
		this.chtbtn(this.opt.ht);
		
		this.clearzm();
		this.clearrlm();
		this.clearrnm();
		
		this.hideinfohint();
		this.hideinfohint2();
		this.hideinfohintbs();
		
		this.setpos();
		this.sethtpos();
		this.setsrhtpos();
		
		this.loadminimap();
		this.loadmap();
		
	},
	
	reloadbprm:function(pstr){
    pstr=pstr.substring(pstr.indexOf('#')+1,pstr.length);
		Object.extend(this.opt,brws.getprmbs(pstr));
		this.reload(); 
	},
	
	getparamstr:function(){
		var str=''
		for(prop in this.opt){
			if(prop!='' && this.opt[prop]!=null){
				str+=prop+'='+escape(this.opt[prop])+'&';
			}
		}
		str=str.substring(0,str.length-1);
		return str;
	},
	
	czoombtn:function(z){
		for(var i=0;i<this.zoombtns.length;i++){
			var o=this.zoombtns[i];
			if(o.z==z)elm.setbgcolor(o.o,'#3366cc');
			else elm.setbgcolor(o.o,'#FFFFFF');
		}
	},
	
	crnbtn:function(b){
		this.rnbtn.className=(b?'maptb_on':'maptb_off');
	},
	
	crlbtn:function(b){
		this.rlbtn.className=(b?'maptb_on':'maptb_off');
	},
	
	chtbtn:function(b){
		this.htbtn.className=(b?'maptb_on':'maptb_off');
	},
	
	czoomin:function(){
	    if(this.opt.z==1)return false;
	    this.czoom(this.opt.z/2);
	},
	
	czoomout:function(){
	    if(this.opt.z==8)return false;
	    this.czoom(this.opt.z*2);
	},
	
	czoom:function(z){
	    if(z==this.opt.z)return false;
	    
		this.czoombtn(z);
		
		this.showzoomboxani(z);
		
		var oz=this.opt.z;
		this.opt.z=z;
		
		this.clearzm();
		
		for(var i=0;i<this.mm.length;i++){
			var x1=this.mm[i].x*256+128;
			var y1=this.mm[i].y*256+128;
			if(Math.abs(this.opt.x/oz-x1)<this.ctn.offsetWidth/2/oz*z+128 && Math.abs(this.opt.y/oz-y1)<this.ctn.offsetHeight/2/oz*z+128){
				this.mtzm(i--,z/oz);
			}
			else{
				this.rccmmo(i--);
			}
		}
		
		if(this.opt.rl)this.clearrlm();
		
		if(this.opt.rn)this.clearrnm();
		
		this.setpos();
		
		this.sethtpos();
		this.setsrhtpos();
		
		this.setinfohtpos();
		this.setinfoht2pos();
		this.setinfohtbspos();
		
		this.setbusppos();
		
		this.loadminimap();
		this.loadmap();
		
	},
	
	czoombp:function(z,x,y){
		this.setpos(x,y);
		this.czoom(z);
	},
	
	togglefav:function(){
		this.fav.style.display=this.fav.style.display=='none'?'':'none';
		this.favbtn.className=this.fav.style.display=='none'?'maptb_off':'maptb_on';
		if(this.fav.style.display==''){
			this.hideallinfohint();
			if(this.fav._loaded==null)this.loadfav();
		}
	},
	
	loadfav:function(){
		this.ajaxobj.LoadFavMenu(cb.bind(this),null,ld.bind(this));
		function cb(res){
			if(res.value.substring(0,5)=='<div>')this.fav._loaded=true;
			this.favctn.innerHTML=res.value;
		}
		function ld(e){
			this.favloading.style.display=e?'':'none';
		}
	},
	
	hidefav:function(){
		this.fav.style.display='none';
		this.favbtn.className='maptb_off';
	},
	
	loadmap:function(){
		

		
		//if(this.opt.rl)this.loadrlm();
			
		if(this.opt.rn)
		{
		    this.loadrnm();
		}
		else
		{
		    this.loadmm();
		}
		
		if(this.opt.ht)this.selmk(map.seln);
		
		this.loadad();
		
		this.onloadmap();
		
	},
	
	loadmm:function(){
		var l=Math.floor(this.opt.x/this.opt.z-this.ctn.offsetWidth/2);
		var t=Math.floor(this.opt.y/this.opt.z-this.ctn.offsetHeight/2);
		var r=l+this.ctn.offsetWidth;
		var b=t+this.ctn.offsetHeight;
		if(this.rnm.length!=0)
		{
		    for(var i=0;i<this.rnm.length;i++)
		    {
		        this.rccrnmo(i--);
		    }

		}
		this.rccmm(l,t,r,b);
		
		for(var y=Math.floor(t/256);y<=Math.floor(b/256);y++){
			for(var x=Math.floor(l/256);x<=Math.floor(r/256);x++){
				
				if(this.hasmm(x,y))continue;
			
				this.mm[this.mm.length]={
					x:x,
					y:y,
					objr:this.mvl.appendChild(this.getmmo(x,y))
				};
				
			}
		}
		
	},
	
	loadrlm:function(){
		var l=Math.floor(this.opt.x/this.opt.z-this.ctn.offsetWidth/2);
		var t=Math.floor(this.opt.y/this.opt.z-this.ctn.offsetHeight/2);
		var r=l+this.ctn.offsetWidth;
		var b=t+this.ctn.offsetHeight;
		
		this.rccrlm(l,t,r,b);
		
		for(var y=Math.floor(t/256);y<=Math.floor(b/256);y++){
			for(var x=Math.floor(l/256);x<=Math.floor(r/256);x++){
				
				if(this.hasrlm(x,y))continue;
			
				this.rlm[this.rlm.length]={
					x:x,
					y:y,
					objr:this.mvl.appendChild(this.getrlmo(x,y))
				};
				
			}
		}
	},
	
	loadrnm:function(){
		var l=Math.floor(this.opt.x/this.opt.z-this.ctn.offsetWidth/2);
		var t=Math.floor(this.opt.y/this.opt.z-this.ctn.offsetHeight/2);
		var r=l+this.ctn.offsetWidth;
		var b=t+this.ctn.offsetHeight;
		if(this.mm.length!=0)
		{
		    for(var i=0;i<this.mm.length;i++)
		    {
		        this.rccmmo(i--);
		    }
		}
		this.rccrnm(l,t,r,b);
		
		for(var y=Math.floor(t/256);y<=Math.floor(b/256);y++){
			for(var x=Math.floor(l/256);x<=Math.floor(r/256);x++){
				
				if(this.hasrnm(x,y))continue;
			
				this.rnm[this.rnm.length]={
					x:x,
					y:y,
					objr:this.mvl.appendChild(this.getrnmo(x,y))
				};
				
			}
		}
	},
	
	loadminimap:function(){
		this.clearminimap();
		if(this.opt.z==8){
			this.minimapo11.src='modules/map/minimap/1/0000_0000.PNG';
			this.minimapo11.style.left='0px';
			this.minimapo11.style.top='0px';
			this.minimapmvl.appendChild(this.minimapo11);
		}
		if(this.opt.z==4){
			this.minimapo11.src='modules/map/minimap/2/0000_0000.PNG';
			this.minimapo11.style.left='0px';
			this.minimapo11.style.top='0px';
			this.minimapmvl.appendChild(this.minimapo11);

			this.minimapo12.src='modules/map/minimap/2/0001_0000.PNG';
			this.minimapo12.style.left='256px';
			this.minimapo12.style.top='0px';
			this.minimapmvl.appendChild(this.minimapo12);

			this.minimapo21.src='modules/map/minimap/2/0000_0001.PNG';
			this.minimapo21.style.left='0px';
			this.minimapo21.style.top='256px';
			this.minimapmvl.appendChild(this.minimapo21);

			this.minimapo22.src='modules/map/minimap/2/0001_0001.PNG';
			this.minimapo22.style.left='256px';
			this.minimapo22.style.top='256px';
			this.minimapmvl.appendChild(this.minimapo22);
		}
		if(this.opt.z==2){
			var sx=Math.floor((0-this.minimapmvl.offsetLeft)/256);
			var sy=Math.floor((0-this.minimapmvl.offsetTop)/256);
			this.minimapo11.src='modules/map/minimap/4/000'+sx+'_000'+sy+'.PNG';
			this.minimapo11.style.left=sx*256+'px';
			this.minimapo11.style.top=sy*256+'px';
			this.minimapmvl.appendChild(this.minimapo11);
			this.minimapo12.src='modules/map/minimap/4/000'+(sx+1)+'_000'+(sy+0)+'.PNG';
			this.minimapo12.style.left=(sx+1)*256+'px';
			this.minimapo12.style.top=sy*256+'px';
			this.minimapmvl.appendChild(this.minimapo12);
			this.minimapo21.src='modules/map/minimap/4/000'+(sx+0)+'_000'+(sy+1)+'.PNG';
			this.minimapo21.style.left=sx*256+'px';
			this.minimapo21.style.top=(sy+1)*256+'px';
			this.minimapmvl.appendChild(this.minimapo21);
			this.minimapo22.src='modules/map/minimap/4/000'+(sx+1)+'_000'+(sy+1)+'.PNG';
			this.minimapo22.style.left=(sx+1)*256+'px';
			this.minimapo22.style.top=(sy+1)*256+'px';
			this.minimapmvl.appendChild(this.minimapo22);
		}
		if(this.opt.z==1){
			var sx=Math.floor((0-this.minimapmvl.offsetLeft)/256);
			var sy=Math.floor((0-this.minimapmvl.offsetTop)/256);
			this.minimapo11.src='modules/map/minimap/8/000'+sx+'_000'+sy+'.PNG';
			this.minimapo11.style.left=sx*256+'px';
			this.minimapo11.style.top=sy*256+'px';
			this.minimapmvl.appendChild(this.minimapo11);
			this.minimapo12.src='modules/map/minimap/8/000'+(sx+1)+'_000'+(sy+0)+'.PNG';
			this.minimapo12.style.left=(sx+1)*256+'px';
			this.minimapo12.style.top=sy*256+'px';
			this.minimapmvl.appendChild(this.minimapo12);
			this.minimapo21.src='modules/map/minimap/8/000'+(sx+0)+'_000'+(sy+1)+'.PNG';
			this.minimapo21.style.left=sx*256+'px';
			this.minimapo21.style.top=(sy+1)*256+'px';
			this.minimapmvl.appendChild(this.minimapo21);
			this.minimapo22.src='modules/map/minimap/8/000'+(sx+1)+'_000'+(sy+1)+'.PNG';
			this.minimapo22.style.left=(sx+1)*256+'px';
			this.minimapo22.style.top=(sy+1)*256+'px';
			this.minimapmvl.appendChild(this.minimapo22);
		}
	},
	
	loadhs:function(){
	
		var a=this.getcurrarea();
		
		AjaxPro.queue.abortMethod('getHotspots');
		this.ajaxobj.getHotspots(this.opt.t,this.opt.z,a[0]-128,a[1]-128,a[2]+128,a[3]+128,ajaxcb.bind(this),null,ajaxld.bind(this));
		
		function ajaxcb(res){
			this.hsinfo=eval(res.value);
		}
		
		function ajaxld(e){
			this.loadingol.style.display=e?'':'none';
		}

	},
	loadsch:function(kw,tp,isarea,page){
	    this.loadschparam=[kw,tp,isarea,page];
	    var area=isarea?this.getcurrarea().toString():'city';
	    
	    if(page==null)page=1;
	    
	    this.ajaxobj.getSearch(kw, tp, area, page, cb.bind(this), null, ld.bind(this));
	    
	    function cb(res){
	        eval('var rslt='+res.value);
	        var i2=0;
	        var lid=new Array();
	        while(i2<rslt.list.length)
	        {
	            lid[i2]=rslt.list[i2].id
	            i2++;
	        }
            this.ajaxgeo.GeoPoint(lid,cback);
           
            function cback(rest)
            {
                var rst=rest.value;
                var i3=0;
                while(i3<rslt.list.length)
                {
                    if(rst[i3][0]!=0)
                    {
                    rslt.list[i3].gx=rst[i3][0];
                    rslt.list[i3].gy=rst[i3][1];
                    }
                    else
                    {
                    rslt.list[i3].gx=(rslt.list[i3].x+27290834.207394682)/256748.16017256945;
                    rslt.list[i3].gy=-(rslt.list[i3].y-7603959.7259281958)/255154.09685751426;
                    }
                    i3++;
                }
                map.loadsrhtba(rslt.list,rslt.pgc,rslt.pg);

            }
	        
	              
	    }
	    
	    function ld(e){
	        this.loadingol.style.display=e?'':'none';
	    }
	},
	
	loadlastschwithpg:function(page){
	   this.loadschparam[this.loadschparam.length-1]=page;
	   this.loadsch.apply(this,this.loadschparam); 
	},
	
	loadschbus:function(id){
      this.ajaxobj.getBusLine(id,cb.bind(this),null,ld.bind(this));
	    function cb(res){
	        eval('var rslt='+res.value);
	        var i2=0;
	        var lid=new Array();
	        while(i2<rslt.length)
	        {
	            lid[i2]=rslt[i2].id
	            i2++;
	        }
            this.ajaxgeo.GeoBP(lid,cback);
           
            function cback(rest)
            {
                var rst=rest.value;
                var i3=0;
                while(i3<rslt.length)
                {
                    rslt[i3].gx=rst[i3][0];
                    rslt[i3].gy=rst[i3][1];
                    i3++;
                }
                map.loadsrhtba(rslt);

            }
	    }
	    function ld(e){
	        this.loadingol.style.display=e?'':'none';
	    }
	},
	
	closelocasch:function(){
	    this.clearsrht();
	    this.locasch.style.display='none';
	    geomap.removeAllGraphics();
	},
	
	viewsrhtn:function(i){
	    with(this.schrsltht[i]){
			txt.innerHTML=_n;
			style.zIndex=99;
		}
	},
	
	hidesrhtn:function(i){
	    with(this.schrsltht[i]){
			txt.innerHTML='';
			style.zIndex=2;
		}
	},
	
	loadsrhtba:function(list,pgc,pg){
	    this.geoPoint;
		this.locasch.style.display='';
		this.locaschbd.style.display='';
		geomap.removeAllGraphics();
		this.clearsrli();
		this.clearsrht();
		while(this.locaschbd.childNodes.length>0){
			this.locaschbd.removeChild(this.locaschbd.childNodes[0]);
		}
		if(list.length>20){
			this.locaschbd.style.height='340px';
			this.locaschbd.style.overflow='auto';
		}
		else{
			this.locaschbd.style.height='';
			this.locaschbd.style.overflow='';
		}
		if(pgc==null)pgc=1;
		if(pg==null)pg=1;
		var listi=0;
		if(list.length==0){
				this.locaschbd.innerHTML='没有结果';
		}
		else{
			if(pgc>1){
				var div=this.locaschbd.appendChild(document.createElement('DIV'));
				div.className='pg';
				var sp=div.appendChild(document.createElement('SPAN'));
				sp.innerHTML='页'+pg+'/'+pgc;
				var ap1=div.appendChild(document.createElement('A'));
				ap1.href='#';
				ap1.innerHTML='首页';
				ap1.onclick=pg==1?function(){return false;}:function(){map.loadlastschwithpg(1);return false;}
				var app=div.appendChild(document.createElement('A'));
				app.href='#';
				app.innerHTML='上页';
				app.onclick=pg==1?function(){return false;}:function(){map.loadlastschwithpg(pg-1);return false;}
				var apn=div.appendChild(document.createElement('A'));
				apn.href='#';
				apn.innerHTML='下页';
				apn.onclick=pg==pgc?function(){return false;}:function(){map.loadlastschwithpg(pg+1);return false;}
				var apl=div.appendChild(document.createElement('A'));
				apl.href='#';
				apl.innerHTML='末页';
				apl.onclick=pg==pgc?function(){return false;}:function(){map.loadlastschwithpg(pgc);return false;}
			}
			var tm=window.setInterval(function(){
				if(list.length==0){
						window.clearInterval(tm);
						return;
				}
				var i=listi++;
				var item=list.shift();
				
				var div=this.getsrlio(i,item.x,item.y,item.x2,item.y2,item.id,item.n,item.ct,item.tp,item.gx,item.gy);
				this.schrsltli[i]=this.locaschbd.appendChild(div);
				
				var hto=this.getsrhto(item.x,item.y,item.x2,item.y2,item.id,item.n,item.ic,item.ct,item.tp);
				this.schrsltht[i]=this.htol.appendChild(hto);
				
				dgp(item.gx,item.gy,item.n);
			}.bind(this),10);
		}
	},
	
	
	
	loadad:function(){
		if(this.opt.t=='2'){
			var a=this.getcurrarea();
			this.ajaxobj.getAD(a[0]-512,a[1]-512,a[2]+512,a[3]+512,cb.bind(this),null,ld.bind(this));
			clearouterad.apply(this);
		}
		else{
			this.adol.innerHTML='';
		}
		function cb(res){
			var adswf=eval(res.value);
			for(var i=0;i<adswf.length;i++){
				var o=adswf[i];
				var l=Math.floor((o.x-o.w/2)/this.opt.z);
				var t=Math.floor((o.y-o.h/2)/this.opt.z);
				var w=Math.floor(o.w/this.opt.z);
				var h=Math.floor(o.h/this.opt.z);
				if(adexists.apply(this,[o.id]))continue;
				var ado=this.adol.appendChild(document.createElement('DIV'));
				ado._id=o.id;
				ado._x=o.x;
				ado._y=o.y;
				ado._z=this.opt.z;
				ado.style.position='absolute';
				ado.style.left=l+'px';
				ado.style.top=t+'px';
				var fl=new sinaFlash(o.f, "ad"+i, w, h, "7", "#FFFFFF", false, "High");
				fl.addParam("wmode", "transparent");
				ado.innerHTML=fl.getFlashHTML();
			}
		}
		function ld(e){
			this.loadingol.style.display=e?'':'none';
		}
		function adexists(id){
			for(var i=0;i<this.adol.childNodes.length;i++){
				var ado=this.adol.childNodes[i];
				if(ado._id==id)return true;
			}
			return false;
		}
		function clearouterad(){
			for(var i=0;i<this.adol.childNodes.length;i++){
				var ado=this.adol.childNodes[i];
				var a=this.getcurrarea();
				if(ado._x<a[0]-512 || ado._y<a[1]-512 || ado._x>a[2]+512 || ado._y>a[3]+512 || ado._z!=this.opt.z){
					this.adol.removeChild(ado);
				}
			}
		}
	},
	
	getmmo:function(x,y){
		var o=(this.mmo.length>0)?this.mmo.pop():document.createElement('IMG');
		
		o.onload=function(){this.style.display='';};
		
		if(this.cacheobj){
			o.src=this.cacheobj.QueryMap( this.opt.t, 8/this.opt.z, x, y, 'jpg');
		}
		else{
			o.src=this.burl+'?type='+this.opt.t+'&zoom='+(8/this.opt.z)+'&x='+x+'&y='+y;
		}
		o.style.position='absolute';
		o.style.left=x*256+'px';
		o.style.top=y*256+'px';
		o.style.width='256px';
		o.style.height='256px';
		o.style.zIndex=2;
		
		return o;
	},
	
	getrlmo:function(x,y){
		var o=this.rmo.length>0?this.rmo.pop():document.createElement('IMG');
		
		o.onload=function(){this.style.display='';};
		
		var mapurl;
		if(this.cacheobj){
			mapurl=this.cacheobj.QueryMap( 'road', 8/this.opt.z, x, y, 'png'  );
		}
		else{
			mapurl=this.burl+'?type=road&zoom='+(8/this.opt.z)+'&x='+x+'&y='+y;
		}
		
		if(ie){
			o.src='/modules/map/images/null.gif';
			if(o.ai==null){
				o.ai=document.createElement('IMG');
			}
			o.ai.onload=function(){
				this.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+this.ai.src+'")';
			}.bindAsEventListener(o);
			o.ai.src=mapurl;	
		}
		else{
			o.src=mapurl;	
		}
		o.style.position='absolute';
		o.style.left=x*256+'px';
		o.style.top=y*256+'px';
		o.style.width='256px';
		o.style.height='256px';
		o.style.zIndex=3;
		
		return o;
	},
	
	getrnmo:function(x,y){
		var o=this.rmo.length>0?this.rmo.pop():document.createElement('IMG');
		
		o.onload=function(){this.style.display='';};
		
		var mapurl;
		if(this.cacheobj){
			mapurl=this.cacheobj.QueryMap( 'roadname', 8/this.opt.z, x, y, 'png');
		}
		else{
			mapurl=this.burl+'?type=roadname&zoom='+(8/this.opt.z)+'&x='+x+'&y='+y;
			
		}
		
		if(ie){
			o.src='/modules/map/images/null.gif';
			if(o.ai==null){
				o.ai=document.createElement('IMG');
			}
			o.ai.onload=function(){
				this.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+this.ai.src+'")';
			}.bindAsEventListener(o);
			o.ai.src=mapurl;	
		}
		else{
			o.src=mapurl;	
		}
		o.style.position='absolute';
		o.style.left=x*256+'px';
		o.style.top=y*256+'px';
		o.style.width='256px';
		o.style.height='256px';
		o.style.zIndex=4;
		
		return o;
	},
	
	gethto:function(x,y,x2,y2,id,n){
		var o;
		
		if(this.hto.length==0){
			o=document.createElement('DIV');
			o.style.position='absolute';
			o.style.zIndex=1;
			o.style.cursor='pointer';
			
			o.tb=o.appendChild(document.createElement('TABLE'));
			o.tb.cellPadding=0;
			o.tb.cellSpacing=0;
			o.tb.border=0;
			o.tb.style.height='17px';
			o.r1=o.tb.appendChild(document.createElement('TBODY')).appendChild(document.createElement('TR'));
			o.c1=o.r1.appendChild(document.createElement('TD'));
			o.c1.innerHTML='<img src="/modules/map/images/label1.gif" alt="" />';
			o.c2=o.r1.appendChild(document.createElement('TD'));
			o.c2.style.whiteSpace='nowrap';
			o.c2.style.backgroundImage='url(/modules/map/images/label2.gif)';
			o.c3=o.r1.appendChild(document.createElement('TD'));
			o.c3.innerHTML='<img src="/modules/map/images/label3.gif" alt="" />';
			
			o.className='ht';
		}
		else{
			o=this.hto.pop();
		}
		
		o.c2.innerHTML=n;
		
		o._x=x;
		o._y=y;
		o._x2=x2;
		o._y2=y2;
		o._id=id;
		o._n=n;
		
		o.onmousemove=this.htmousemove.bindAsEventListener(this);
		o.onmouseout=this.htmouseout.bindAsEventListener(this);
		
		return o;
	},
	
	getsrhto:function(x,y,x2,y2,id,n,ic,ct,tp){
		var o;
		
		if(this.schrslthto.length==0){
			o=document.createElement('DIV');
			o.style.position='absolute';
			o.style.zIndex=2;
			o.style.cursor='pointer';

			o.tb=o.appendChild(document.createElement('TABLE'));
			o.tb.cellPadding=0;
			o.tb.cellSpacing=0;
			o.tb.border=0;
			o.tb.style.height='31px';
			o.r1=o.tb.appendChild(document.createElement('TBODY')).appendChild(document.createElement('TR'));
			o.c1=o.r1.appendChild(document.createElement('TD'));
			o.c1.innerHTML='<img src="/modules/map/images/label0_01.gif" alt="" />';
			o.c2=o.r1.appendChild(document.createElement('TD'));
			o.c2.style.backgroundImage='url(/modules/map/images/label0_02.gif)';
			o.c2.style.verticalAlign='top';
			o.c3=o.r1.appendChild(document.createElement('TD'));
			o.c3.style.backgroundImage='url(/modules/map/images/label0_03.gif)';
			o.c3.style.verticalAlign='top';
			o.c3.style.whiteSpace='nowrap';
			o.c4=o.r1.appendChild(document.createElement('TD'));
			o.c4.innerHTML='<img src="/modules/map/images/label0_04.gif" alt="" />';
			o.icon=o.c2.appendChild(document.createElement('IMG'));
			o.icon.style.marginTop='3px';
			o.icon.style.marginLeft='1px';
			o.icon.style.marginRight='1px';
			o.icon.width=16;
			o.icon.height=16;
			o.txt=o.c3.appendChild(document.createElement('DIV'));
			o.txt.style.marginTop='4px';
			
			o.className='ht';
		}
		else{
			o=this.schrslthto.pop();
		}
		
		o.icon.src='iconimg.ashx?id='+ic;
		
		o._x=x;
		o._y=y;
		o._x2=x2;
		o._y2=y2;
		o._id=id;
		o._n=n;
		o._ct=ct;
		o._tp=tp;
		
		var x$=this.opt.t=='1'?o._x2:o._x;
		var y$=this.opt.t=='1'?o._y2:o._y;
		
		o.style.left=Math.floor(x$/this.opt.z-11)+'px';
		o.style.top=Math.floor(y$/this.opt.z-28)+'px';
		
		o.onmousemove=this.srhtmousemove.bindAsEventListener(this);
		o.onmouseout=this.srhtmouseout.bindAsEventListener(this);
		
		return o;
	},
	
	getsrlio:function(i,x,y,x2,y2,id,n,ct,tp,gx,gy){
		var div;
		if(this.schrsltlio.length==0){
			div=document.createElement('DIV');
			div.className='list';
			div.liimg=div.appendChild(document.createElement('IMG'));
			div.liimg.src='/modules/map/images/searchli2.gif';
			div.a=div.appendChild(document.createElement('A'));
			div.a.href='#';
			div.a.onclick=function(){
				if(this._tp=='bs'){
					map.showinfohintbs(this._x,this._y,this._x2,this._y2,this._id,this._n);
					geomap.setCenter(new MLatLng(this._geox,this._geoy));

				}
				else if(this._ct==null){
				    if($("d_map").style.display=='block')
				    {
					    map.showinfohint(this._x,this._y,this._x2,this._y2,this._id,this._n);
					}
					else
					{
					    geomap.setCenter(new MLatLng(this._geox,this._geoy));
					}
				}
				else{
				}
				return false;
			}
			div.a.onmouseover=function(){map.viewsrhtn(this._i);}
			div.a.onmouseout=function(){map.hidesrhtn(this._i);}
		}
		else{
			div=this.schrsltlio.shift();
		}
		div.a._x=x;
		div.a._y=y;
		div.a._x2=x2;
		div.a._y2=y2;
		div.a._id=id;
		div.a._n=n;
		div.a._ct=ct;
		div.a._tp=tp;
		div.a._i=i;
		div.a.innerHTML=n;
		div.a._geox=gx;
		div.a._geoy=gy;
		return div;
	},
	
	getcurrarea:function(){
		var l=(0-this.mvl.offsetLeft)*this.opt.z;
		var r=(this.ctn.offsetWidth-this.mvl.offsetLeft)*this.opt.z;
		var t=(0-this.mvl.offsetTop)*this.opt.z;
		var b=(this.ctn.offsetHeight-this.mvl.offsetTop)*this.opt.z;
		
		return [l,t,r,b];
	},
	
	hasmm:function(x,y){
		for(var i=0;i<this.mm.length;i++){
			if(this.mm[i].x==x && this.mm[i].y==y){
				return true;
			}
		}
		return false;
	},
	
	hasrlm:function(x,y){
		for(var i=0;i<this.rlm.length;i++){
			if(this.rlm[i].x==x && this.rlm[i].y==y){
				return true;
			}
		}
		return false;
	},
	
	hasrnm:function(x,y){
		for(var i=0;i<this.rnm.length;i++){
			if(this.rnm[i].x==x && this.rnm[i].y==y){
				return true;
			}
		}
		return false;
	},
	
	hasht:function(id){
		for(var i=0;i<map.ht.length;i++){
			if(map.ht[i]._id==id){
				return true;
			}
		}
		return false;
	},
	
	inht:function(obj){
		for(var i=0;i<this.ht.length;i++){
			if(this.ht[i]==obj)return true;
		}
		return false;
	},
	
	insrht:function(obj){
		for(var i=0;i<this.schrsltht.length;i++){
			if(this.schrsltht[i]==obj)return true;
		}
		return false;
	},
	
	rccmm:function(l,t,r,b){
		for(var i=0;i<this.mm.length;i++){
			if(this.mm[i].x*256+256<l || this.mm[i].x*256>r || this.mm[i].y*256+256<t || this.mm[i].y*256>b){
				this.rccmmo(i--);
			}
		}
	},
	
	rccrlm:function(l,t,r,b){
		for(var i=0;i<this.rlm.length;i++){
			if(this.rlm[i].x*256+256<l || this.rlm[i].x*256>r || this.rlm[i].y*256+256<t || this.rlm[i].y*256>b){
				this.rccrlmo(i--);
			}
		}
	},
	
	rccrnm:function(l,t,r,b){
		for(var i=0;i<this.rnm.length;i++){
			if(this.rnm[i].x*256+256<l || this.rnm[i].x*256>r || this.rnm[i].y*256+256<t || this.rnm[i].y*256>b){
				this.rccrnmo(i--);
			}
		}
	},
	
	rccht:function(l,t,r,b){
		for(var i=0;i<this.ht.length;i++){
			if(this.ht[i]._x<l || this.ht[i]._x>r || this.ht[i]._y<t || this.ht[i]._y>b){
				this.rcchto(i--);
			}
		}
	},
	
	rccmmo:function(i){
		var mmtmp=this.mm.splice(i,1)[0];
		mmtmp.objr.style.display='none';
		this.mmo.push(this.mvl.removeChild(mmtmp.objr));
	},
	
	rcczmo:function(i){
		var zmtmp=this.zm.splice(i,1)[0];
		zmtmp.objr.style.display='none';
		this.mmo.push(this.mvl.removeChild(zmtmp.objr));
	},
	
	rccrlmo:function(i){
		var rlmtmp=this.rlm.splice(i,1)[0];
		rlmtmp.objr.style.display='none';
		if(ie){
			rlmtmp.objr.style.filter='';
		}
		this.rmo.push(this.mvl.removeChild(rlmtmp.objr));
	},
	
	rccrnmo:function(i){
		var rnmtmp=this.rnm.splice(i,1)[0];
		rnmtmp.objr.style.display='none';
		if(ie){
			rnmtmp.objr.style.filter='';
		}
		this.rmo.push(this.mvl.removeChild(rnmtmp.objr));
	},
	
	rcchto:function(i){
		var httmp=this.ht.splice(i,1)[0];
		this.hto.push(this.htol.removeChild(httmp));
	},
	
	mtzm:function(i,zr){
		var mmtmp=this.mm.splice(i,1)[0];
		mmtmp.objr.style.left=mmtmp.x*256/zr+'px';
		mmtmp.objr.style.top=mmtmp.y*256/zr+'px';
		mmtmp.objr.style.width=256/zr+'px';
		mmtmp.objr.style.height=256/zr+'px';
		mmtmp.objr.style.zIndex=1;
		this.zm[this.zm.length]=mmtmp;
	},
	
	mtzm1:function(i){
		var mmtmp=this.mm.splice(i,1)[0];
		mmtmp.objr.style.zIndex=1;
		this.zm[this.zm.length]=mmtmp;
	},
	
	clearmm:function(){
		for(var i=0;i<this.mm.length;i++){
			this.rccmmo(i--);
		}
	},
	
	clearzm:function(){
		for(var i=0;i<this.zm.length;i++){
			this.rcczmo(i--);
		}
	},
	
	clearrlm:function(){
		for(var i=0;i<this.rlm.length;i++){
			this.rccrlmo(i--);
		}
	},
	
	clearrnm:function(){
		for(var i=0;i<this.rnm.length;i++){
			this.rccrnmo(i--);
		}
	},
	
	clearminimap:function(){
		if(this.minimapo11.parentNode==this.minimapmvl)this.minimapmvl.removeChild(this.minimapo11);
		if(this.minimapo12.parentNode==this.minimapmvl)this.minimapmvl.removeChild(this.minimapo12);
		if(this.minimapo21.parentNode==this.minimapmvl)this.minimapmvl.removeChild(this.minimapo21);
		if(this.minimapo22.parentNode==this.minimapmvl)this.minimapmvl.removeChild(this.minimapo22);
	},
	
	clearht:function(){
		for(var i=0;i<this.ht.length;i++){
			this.rcchto(i--);
		}
	},
	
	clearsrht:function(){
		while(this.schrsltht.length>0){
			var ht=this.schrsltht.pop();
			this.htol.removeChild(ht);
			this.schrslthto.push(ht);
		}
	},
	
	clearsrli:function(){
		while(this.schrsltli.length>0){
			var li=this.schrsltli.pop();
			this.locaschbd.removeChild(li);
			this.schrsltlio.push(li);
		}
	},
	
	clearhs:function(){
		
	},
	
	togglerl:function(){
		this.opt.rl=!this.opt.rl;
		this.crlbtn(this.opt.rl);
		if(this.opt.rl){
			this.loadrlm();
		}
		else{
			this.clearrlm();
		}
	},
	
	togglern:function(){
		this.opt.rn=!this.opt.rn;
		this.crnbtn(this.opt.rn);
		if(this.opt.rn){
			this.loadrnm();
		}
		else{
			this.clearrnm();
			this.loadmap();
		}
	},
	mark:function(){
	    this.opt.ht=!this.opt.ht;
		this.chtbtn(this.opt.ht);
	    if(this.htbtn.className=='maptb_on')
	    {
	        allmap.mark.style.display='block';
	    }
	    else
	    {
	        allmap.mark.style.display='none';
	        map.clearht();
	        geomap.removeAllGraphics();
 
	    }
	},
	selmk:function(c){
        this.seln=c;
        if($('d_map').style.display=='block')
        {
	        var a=this.getcurrarea();

            map.ajaxgeo.GetHt(c,a[0],a[1],a[2],a[3],cb1);
            function cb1(re){
                var res=re.value;
                var i4=0;
                var lht=new Array();	        
                while(i4<res.length)
                {
                    var p= new Object();
                    p.id=parseInt(res[i4][0]);
                    p.x=parseInt(res[i4][2]);
                    p.y=parseInt(res[i4][3]);
                    p.x2=parseInt(res[i4][4]);
                    p.y2=parseInt(res[i4][5]);
                    p.n=res[i4][1];
                    lht[i4]=p;
                    i4++;
                }
		        map.htinfo=lht;
		        window.setTimeout(showht.bind(this),10);
		    }
	    }
	    else
	    {
	        var g=garea();
	        map.ajaxgeo.GetGh(c,g[0],g[1],g[2],g[3],cb);
	        function cb(reg)
	        {
	            var res=reg.value;
	            var g1=garea();
	            map.rght(g1[0],g1[1],g1[2],g1[3]);
                for(var i=0;i<res.length;i++)
                {
                    if(!map.hasghl(res[i][0]))
                    {
                        var go=new Object();
                        go._id=res[i][0];
                        go._gx=res[i][6];
                        go._gy=res[i][7];
                        map.ghl.push(go);
                        dgp(parseFloat(res[i][6]),parseFloat(res[i][7]),res[i][1],parseInt(res[i][0]));
                    }
                }
	        }
	    
	    }
	    
		
		function showht(){
		
			map.rccht(a[0],a[1],a[2],a[3]);
			
			for(var i=0;i<map.htinfo.length;i++){
				var o=map.htinfo[i];
				
				if(!map.hasht(o.id)){
					var hto=map.gethto(o.x,o.y,o.x2,o.y2,o.id,o.n);
					
					map.ht.push(map.htol.appendChild(hto));
				}
			}
			
			map.sethtpos();
			
		}
	},
	rght:function(l,t,r,b){
		for(var i=0;i<this.ghl.length;i++){
			if(this.ghl[i]._gx<l || this.ghl[i]._gx>r || this.ghl[i]._gy>t || this.ghl[i]._gy<b){
				this.rghto(i--);
			}
		}
	},
	rghto:function(i){
		var ghtm=this.ghl.splice(i,1)[0]._id;
		geomap.removeShapeById(ghtm);
	},
	hasghl:function(id){
		for(var i=0;i<this.ghl.length;i++){
			if(this.ghl[i]._id==id){
				return true;
			}
		}
		return false;
	},
	showbl:function(c,d)
	{
	    $("lr").style.display="none";
	    $("lf").style.display="none";
	    $("ly").style.display="none";
	    $("gw").style.display="none";
	    $("qc").style.display="none";
	    $("yl").style.display="none";
	    $("fw").style.display="none";
	    if(ckbl(c))
	    {
	        $(c).style.display="block";
	    }
	    else
	    {
	        map.ajaxgeo.GetBsl(d,cb);
	        function cb(res)
	        {
	            var cl=res.value;
	            for(var i=0;i<cl.length;i++)
	            {
	                var div=map.crbl(i,cl[i])
	                $(c).appendChild(div);
	            }
	            $(c).style.display="block"
	        }
	    }
	    function ckbl(c)
	    {
	        if($(c).childNodes.length==0)
	        {
                return false;
	        }
	        else
	        {
                return true;
	        }
	    }
	},
	crbl:function(i,n)
	{
	    var div;
		div=document.createElement('DIV');
		div.className='list';
		div.liimg=div.appendChild(document.createElement('IMG'));
		div.liimg.src='/modules/map/images/searchli2.gif';
		div.a=div.appendChild(document.createElement('A'));
		div.a.href='#';
		div.a._n=n;
		div.a.innerHTML=n;		
		div.a.onclick=function(){
		    geomap.removeAllGraphics();
	        map.clearht();
            map.selmk(n);
		}
		return div;
	},
	clearbl:function()
	{
	    
	},
	
	hidebl:function(c)
	{
	    $(c).style.display="none";
	},
	toggleminimap:function(){
		with(this.minimaparea.style){
			display=display=='none'?'':'none';
			$('d_minimaptoggle').innerHTML=display=='none'?'N<br/>a<br/>v<br/>i<br/>g<br/>a<br/>t<br/>o<br/>r':'&gt;';
			$('d_minimaptoggle').style.paddingTop=display=='none'?'2px':'30px'
			
			if(display==''){
				this.setminimappos();
				this.loadminimap();
			}
		}
		this.fitminimap();
	},
	
	setpos:function(x,y){
		if(x!=null)this.opt.x=x;
		if(y!=null)this.opt.y=y;
		
		var mvx=Math.floor(this.ctn.offsetWidth/2-this.opt.x/this.opt.z);
		var mvy=Math.floor(this.ctn.offsetHeight/2-this.opt.y/this.opt.z);
		
		this.mvl.style.left=mvx+'px';
		this.mvl.style.top=mvy+'px';
		this.htol.style.left=mvx+'px';
		this.htol.style.top=mvy+'px';
		this.adol.style.left=mvx+'px';
		this.adol.style.top=mvy+'px';

		this.setminimappos();
	},
	
	setposani:function(x,y,onend){
		this.setposanionly(x,y,this.setminimappos.bind(this),onend);
	},
	
	setposanionly:function(x,y,onsetting,onend){
		this.ctn.onmousemove=function(){};
		this.hidehshint();
		this.currhs=null;
		
		this.hideinfohint();
		this.hideinfohint2();
		this.hideinfohintbs();
		
		this.clearzm();
		
		if(this.mvltimer!=null){
			window.clearInterval(this.mvltimer);
		}
		
		if(x!=null)this.opt.x=x;
		if(y!=null)this.opt.y=y;
		
		var mvltx=Math.floor(this.ctn.offsetWidth/2-this.opt.x/this.opt.z);
		var mvlty=Math.floor(this.ctn.offsetHeight/2-this.opt.y/this.opt.z);
		var mvlstepx=(mvltx-this.mvl.offsetLeft)/5;
		var mvlstepy=(mvlty-this.mvl.offsetTop)/5;
		var mvlstepi=0;
		
		this.mvltimer=window.setInterval(function(){
			var mvx=Math.floor(this.mvl.offsetLeft+mvlstepx);
			var mvy=Math.floor(this.mvl.offsetTop+mvlstepy);
			
			if(mvlstepi++==5){
				window.clearInterval(this.mvltimer);
				this.mvltimer=null;
				
				if(!this.opt.ht && !this.gettingposexternal){
					this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
				}
				
				onend();
				
				return;
			}
			
			this.mvl.style.left=mvx+'px';
			this.mvl.style.top=mvy+'px';
			this.htol.style.left=mvx+'px';
			this.htol.style.top=mvy+'px';
			this.adol.style.left=mvx+'px';
			this.adol.style.top=mvy+'px';
			
			onsetting(Math.floor((this.ctn.offsetWidth/2-mvx)*this.opt.z),Math.floor((this.ctn.offsetHeight/2-mvy)*this.opt.z));
			
		}.bind(this),20);
		
	},
	
	setminimappos:function(x,y){
		if(x==null)x=this.opt.x;
		if(y==null)y=this.opt.y;
		this.minimapmvl.style.left=Math.floor(this.minimapctn.offsetWidth/2-x/this.opt.z/64)+'px';
		this.minimapmvl.style.top=Math.floor(this.minimapctn.offsetHeight/2-y/this.opt.z/64)+'px';
	},
	
	setminimapposani:function(x,y,onsetting){
		if(x==null)x=this.opt.x;
		if(y==null)y=this.opt.y;
		
		var tx=Math.floor(this.minimapctn.offsetWidth/2-x/this.opt.z/64);
		var ty=Math.floor(this.minimapctn.offsetHeight/2-y/this.opt.z/64);
		
		var stx=(tx-this.minimapmvl.offsetLeft)/5;
		var sty=(ty-this.minimapmvl.offsetTop)/5;
		
		var sti=0;
		
		var tm=setInterval(doani.bind(this),80);
		
		function doani(){
			if(sti++==5){
				clearInterval(tm);
				return;
			}
			var x$=Math.floor(this.minimapmvl.offsetLeft+stx);
			var y$=Math.floor(this.minimapmvl.offsetTop+sty);
			
			this.minimapmvl.style.left=x$+'px';
			this.minimapmvl.style.top=y$+'px';
			
			onsetting();
		}
	},
	
	sethtpos:function(){
		for(var i=0;i<this.ht.length;i++){
			var o=this.ht[i];
			
			var x$=this.opt.t=='1'?o._x2:o._x;
			var y$=this.opt.t=='1'?o._y2:o._y;
			
			o.style.left=Math.floor(x$/this.opt.z-4)+'px';
			o.style.top=Math.floor(y$/this.opt.z-9)+'px';
		}
	},
	
	setsrhtpos:function(){
		for(var i=0;i<this.schrsltht.length;i++){
			var o=this.schrsltht[i];
			
			var x$=this.opt.t=='1'?o._x2:o._x;
			var y$=this.opt.t=='1'?o._y2:o._y;
			
			o.style.left=Math.floor(x$/this.opt.z-11)+'px';
			o.style.top=Math.floor(y$/this.opt.z-28)+'px';
		}
	},
	
	setinfohtpos:function(){
		if(this.infohint._x && this.infohint._y && this.infohint._x2 && this.infohint._y2){
			var x$=this.opt.t=='1'?this.infohint._x2:this.infohint._x;
			var y$=this.opt.t=='1'?this.infohint._y2:this.infohint._y;
			
			this.infohint.style.left=Math.floor(x$/this.opt.z)-2+this.mvl.offsetLeft+this.ctn.offsetLeft+'px';
			this.infohint.style.top=Math.floor(y$/this.opt.z)-162+this.mvl.offsetTop+this.ctn.offsetTop+'px';
		}
	},
	
	setinfoht2pos:function(){
		if(this.infohint2._x && this.infohint2._y){
			var x$=this.infohint2._x;
			var y$=this.infohint2._y;
		
			this.infohint2.style.left=Math.floor(x$/this.opt.z)-2+this.mvl.offsetLeft+this.ctn.offsetLeft+'px';
			this.infohint2.style.top=Math.floor(y$/this.opt.z)-132+this.mvl.offsetTop+this.ctn.offsetTop+'px';
		}
	},
	
	setinfohtbspos:function(){
		if(this.infohintbs._x && this.infohintbs._y && this.infohintbs._x2 && this.infohintbs._y2){
			var x$=this.opt.t=='1'?this.infohintbs._x2:this.infohintbs._x;
			var y$=this.opt.t=='1'?this.infohintbs._y2:this.infohintbs._y;
		
			this.infohintbs.style.left=Math.floor(x$/this.opt.z)-2+this.mvl.offsetLeft+this.ctn.offsetLeft+'px';
			this.infohintbs.style.top=Math.floor(y$/this.opt.z)-82+this.mvl.offsetTop+this.ctn.offsetTop+'px';
		}
	},
	setbusppos:function(){
	    if(this.busstartp._x!=null && this.busstartp._y!=null){
		    var ax=Math.floor(this.busstartp._x/this.opt.z)-9;
		    var ay=Math.floor(this.busstartp._y/this.opt.z)-22;
	        this.busstartp.style.left=ax+'px';
	        this.busstartp.style.top=ay+'px';
	    }
	    if(this.busendp._x!=null && this.busendp._y!=null){
		    var ax=Math.floor(this.busendp._x/this.opt.z)-9;
		    var ay=Math.floor(this.busendp._y/this.opt.z)-22;
	        this.busendp.style.left=ax+'px';
	        this.busendp.style.top=ay+'px';
	    }
	},
	
	fit:function(){
		this.crossol.style.left=Math.floor(this.ctn.offsetWidth/2-10)+'px';
		this.crossol.style.top=Math.floor(this.ctn.offsetHeight/2-10)+'px';
		this.loadingol.style.left=Math.floor(this.ctn.offsetWidth/2-70)+'px';
		this.loadingol.style.top=Math.floor(this.ctn.offsetHeight/2-12)+'px';
		this.fitminimap();
		this.setpos();
		this.setinfohtpos();
		this.setinfoht2pos();
		this.setinfohtbspos();
		window.setTimeout(function(){
			this.loadminimap();
			this.loadmap();
		}.bind(this),20);
	},
	
	fitminimap:function(){
		this.minimap.style.left=this.ctn.offsetWidth-this.minimap.offsetWidth+'px';
		this.minimap.style.top=this.ctn.offsetHeight-this.minimap.offsetHeight+'px';
		this.minimaplocation.style.width=this.ctn.offsetWidth/64+'px';
		this.minimaplocation.style.height=this.ctn.offsetHeight/64+'px';
		this.minimaplocation.style.left=Math.floor(this.minimaparea.offsetWidth/2-this.minimaplocation.offsetWidth/2)+'px';
		this.minimaplocation.style.top=Math.floor(this.minimaparea.offsetHeight/2-this.minimaplocation.offsetHeight/2)+'px';
	},
	
	showzoominbox:function(){
	    if(this.opt.z==1)return false;
	    this.showzoombox(this.opt.z/2);
	},
	
	showzoombox:function(z){
		if(z>=this.opt.z)return false;
		var zr=z/this.opt.z;
		this.zoombox.style.display='';
		this.zoombox.style.width=this.ctn.offsetWidth*zr+'px';
		this.zoombox.style.height=this.ctn.offsetHeight*zr+'px';
		this.zoombox.style.left=Math.floor((this.ctn.offsetWidth-this.zoombox.offsetWidth)/2)+'px';
		this.zoombox.style.top=Math.floor((this.ctn.offsetHeight-this.zoombox.offsetHeight)/2)+'px';
	},
	
	showzoomboxani:function(z){
		if(z>=this.opt.z)return false;
		var zr=z/this.opt.z;
		
		var r=(1-zr)/4
		
		var i=0;
		
		var tm=setInterval(function(){
			if(i++==4){
				clearInterval(tm);
				this.zoombox.style.display='none';
			}
			this.zoombox.style.width=this.ctn.offsetWidth*(zr+r*i)+'px';
			this.zoombox.style.height=this.ctn.offsetHeight*(zr+r*i)+'px';
			this.zoombox.style.left=Math.floor((this.ctn.offsetWidth-this.zoombox.offsetWidth)/2)+'px';
			this.zoombox.style.top=Math.floor((this.ctn.offsetHeight-this.zoombox.offsetHeight)/2)+'px';
		}.bind(this),20);
	},
	
	showinfohint:function(x,y,x2,y2,id,n,selfcall,nosetpos){
	
		this.hideinfohint2();
		this.hideinfohintbs();
		this.hidefav();
	
		if(selfcall==null){
			this.infohint.style.display='none';
		}
	
		this.infohint._x=x;
		this.infohint._y=y;
		this.infohint._x2=x2;
		this.infohint._y2=y2;
		this.infohint._id=id;
		
		var x$=this.opt.t=='1'?x2:x;
		var y$=this.opt.t=='1'?y2:y;
		
		if(nosetpos==null && (Math.abs(x$-this.opt.x)>4 || Math.abs(y$-this.opt.y)>4)){
			this.setposani(x$,y$,onmvend.bind(this));
		}
		else{
			this.infohint.style.display='';
			this.showinfohintpnl(0);
			this.setinfohtpos();
			
			showctt.apply(this);
		}
		
		function onmvend(){
			this.loadminimap();
			
			this.loadmap();
			
			this.infohint.style.display='';
			this.showinfohintpnl(0);
			this.setinfohtpos();
			
			showctt.apply(this);
		}
		
		function showctt(){
			
			this.infohinttitle.innerHTML=n;
			
			this.infohinturli.value=brws.baseurl+'?MO@'+id;
			
			this.showinfohintctt(id);
			
			if(selfcall==null)this.showinfohintc(id,0);
		}
		
	},
	
	showinfohintpnl:function(index){
		for(var i=0;i<this.infohinttabs.length;i++){
			if(i==index){
				this.infohinttabs[i].className='tabsel';
				this.infohintpnls[i].style.display='';
			}
			else
			{
				this.infohinttabs[i].className='tabnor';
				this.infohintpnls[i].style.display='none';
			}
		}
		if(index==3 && this.infohintpnls[3]._objid!=this.infohint._id){
			this.loadfcinfo();
		}
		if(index==2 && $('d_infohint_debug_list')._objid!=this.infohint._id){
			this.loaderrreport();
		}
	},
	
	scharound:function(cat){
		this.ajaxobj.searchAround(this.infohint._id,cat,cb.bind(this),null,ld.bind(this));
		function cb(res){
			var rslt=eval(res.value);
			this.loadsrhtba(rslt);
		}
		function ld(e){
			this.infohintloading.style.display=e?'':'none';
		}
	},
	
	loadfcinfo:function(){
		this.infohintpnls[3].innerHTML='';
		this.ajaxobj.loadFCInfo(this.infohint._id,1,cb.bind(this),null,ld.bind(this));
		function cb(res){
			this.infohintpnls[3].innerHTML=res.value;
			this.infohintpnls[3]._objid=this.infohint._id;
		}
		function ld(e){
			this.infohintloading.style.display=e?'':'none';
		}
	},
	
	selpicoferrreport:function(){
		var path=showModalDialog("_users/updatePageHolder.htm?res=image",window,'dialogHeight:250px;dialogWidth:440px;status:0; center:Yes; scroll:no; help:no;');
		if (path != null)$('i_infohint_debug_img').value=path;
	},
	
	submiterrreport:function(){
		if($('i_infohint_debug_info').value==''){
			alert('请填写错误描述');
			$('i_infohint_debug_info').focus();
			return;
		}
		this.ajaxobj.submitErrorReport($('i_infohint_debug_info').value, $('i_infohint_debug_uname').value, $('i_infohint_debug_img').value,this.infohint._id,cb.bind(this),null,ld.bind(this));
		function cb(res){
				if(res.value=='ok'){
						alert('纠错报告已提交,感谢您对YOY360的支持.');
						this.loaderrreport();
				}
				else{
						alert(res.value);
				}
		}
		function ld(e){
				this.infohintloading.style.display=e?'':'none';
		}
	},
	
	loaderrreport:function(){
		$('d_infohint_debug_list').innerHTML='';
		$('i_infohint_debug_info').value='';
		$('i_infohint_debug_img').value='';
		this.ajaxobj.loadErrReport(this.infohint._id,cb.bind(this),null,ld.bind(this));
		function cb(res){
			$('d_infohint_debug_list').innerHTML=res.value;
			$('d_infohint_debug_list')._objid=this.infohint._id;
		}
		function ld(e){
			this.infohintloading.style.display=e?'':'none';
		}
	},
	
	showinfohintctt:function(id){
		this.infohintcontent.innerHTML='&nbsp;';	
		AjaxPro.queue.abortMethod('getInfo');
		this.ajaxobj.getInfo(id,ajaxcb.bind(this),null,ajaxld.bind(this));
		
		function ajaxcb(res){
		    if(res.value == null)
		    {
		        window.status="地图数据服务器链接异常";
		        return;
	        }

			var o=eval(res.value)[0];
			var chtml='';
			if(o.eurl!=''){
				chtml+='<div style="float:left;width:102px;"><a href="'+o.eurl+'" target="_blank"><img src="desimg.ashx?id='+id+'" style="border:1px solid #999999;width:100px;height:100px;"/></a></div>';
				chtml+='<div style="padding-bottom:6px; color:red;">←点击图片打开主页☆☆☆</div>';
			}
			else{
				chtml+='<div style="float:left;width:102px;"><img src="desimg.ashx?id='+id+'" style="border:1px solid #999999;width:100px;height:100px;"/></div>';
			}
			chtml+='<div><div><strong>地址:</strong> '+o.add+'</div>';
			chtml+='<div style="margin-top:6px;"><strong>电话:</strong> '+o.tel+'</div>';
			chtml+='<div style="margin-top:6px;"><strong>网址:</strong> <a href="'+o.eurl+'" target="_blank">企业黄页</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="'+o.url+'" target="_blank">相关网站</a></div>';
			chtml+='<div style="margin-top:6px;"><strong>简介:</strong> '+o.des+'</div></div>';
			this.infohintcontent.innerHTML=chtml;
			
			if(o.ge)if(confirm('是"猎人助手"叫你来的吗？'))this.ajaxobj.continueGame(gamecb);
			
			function gamecb(res){
				if(res.value)showpage('_game/game_key.aspx');
			}
		}
		
		function ajaxld(e){
			this.infohintloading.style.display=e?'':'none';
		}
	},
	
	showinfohintc:function(id,p,selfcall){
		if(selfcall==null){
			this.infohintcpg.style.display='none';
			this.infohintc.style.display='none';
		}
		
		AjaxPro.queue.abortMethod('getChildren');
		this.ajaxobj.getChildren(id,p,ajaxcb.bind(this),null,ajaxld.bind(this));
		
		function ajaxld(e){
			this.infohintloading.style.display=e?'':'none';
		}
		
		function ajaxcb(res){
			eval('var o='+res.value);
			var html='',pghtml='';
			if(o.pgc>1){
				for(var i=0;i<o.pgc;i++){
					if(i==o.pg){
						pghtml+=' <strong>'+fn(i+1)+'</strong>';
					}
					else{
						pghtml+=' <a href="#" onclick="map.showinfohintc('+id+','+i+',true);return false;">'+fn(i+1)+'</a>';
					}
				}
				this.infohintcpg.innerHTML=pghtml;
				this.infohintcpg.style.display='';
			}
			if(o.c>0){
				for(var i=0;i<o.list.length;i++){
					var o1=o.list[i];
					html+='<div><a href="#" onclick="map.showinfohint('+o1.x+','+o1.y+','+o1.x2+','+o1.y2+','+o1.id+',\''+o1.n+'\',true);return false;">'+o.list[i].n+'</a></div>';
				}
				this.infohintc.innerHTML=html;
				this.infohintc.style.display='';
			}
		}
		
		function fn(i){
			if(i.toString().length==1){
				return '0'+i.toString();
			}
			return i.toString();
		}
	},
	
	addtofav:function(){
		this.ajaxobj.AddToFavor(this.infohint._id,cb.bind(this),null,ld.bind(this));
		function cb(res){
			if(res.value=='ok'){
				alert('已添加到收藏夹');
				this.loadfav();
			}
			else alert(res.value);
		}
		function ld(e){
			this.infohintloading.style.display=e?'':'none';
		}
	},
	
	showinfohint2:function(x,y,nm,ctt){
		this.hideinfohint();
		this.hideinfohintbs();
		this.hidefav();
	
		this.infohint2._x=x;
		this.infohint2._y=y;
		
		this.infohint2title.innerHTML=nm;
		this.infohint2content.innerHTML=ctt;
		
		this.infohint2.style.display='none';
		
    if(Math.abs(x-this.opt.x)>4 || Math.abs(y-this.opt.y)>4){
			this.setposani(x,y,onmvend.bind(this));
		}
		else{
			this.infohint2.style.display='';
			
		  this.setinfoht2pos();
		}		
		
		function onmvend(){
			this.loadminimap();
			
			this.loadmap();
			
			this.infohint2.style.display='';
			
		    this.setinfoht2pos();
		}
		
	},
	
	showinfohintbs:function(x,y,x2,y2,id,n){
		this.hideinfohint();
		this.hideinfohint2();
		this.hidefav();
		
		var x$=this.opt.t=='1'?x2:x;
		var y$=this.opt.t=='1'?y2:y;
		
		this.infohintbs._x=x;
		this.infohintbs._y=y;
		this.infohintbs._x2=x2;
		this.infohintbs._y2=y2;
		
		if(Math.abs(x$-this.opt.x)>4 || Math.abs(y$-this.opt.y)>4){
			this.setposani(x$,y$,onmvend.bind(this));
		}
		else{
			this.infohintbs.style.display='';
			this.infohintbstt.innerHTML=n;
			
		  this.setinfohtbspos();
			this.showinfohintbsctt(id,n);
			
		}
		
		function onmvend(){
			this.loadminimap();
			
			this.loadmap();
			
			this.infohintbs.style.display='';
			this.infohintbstt.innerHTML=n;
			
			this.setinfohtbspos();
			this.showinfohintbsctt(id,n);
		}

	},
	
	showinfohintbsctt:function(id,n){
		this.infohintbsctt.innerHTML='数据加载中...';

		AjaxPro.queue.abortMethod('getBusStationDetail');
		this.ajaxobj.getBusStationDetail(id,cb.bind(this),null,ld.bind(this));
		
		function cb(res){
			this.infohintbsctt.innerHTML=res.value;
		}
		function ld(e){
			this.loadingol.style.display=e?'':'none';
		}
		
	},
	showhshint:function(x,y,nm){
		this.hshint.style.left=(x+document.documentElement.scrollLeft+20)+'px';
		this.hshint.style.top=y+document.documentElement.scrollTop+'px';
		if(this.hshint.style.display=='none'){
		  this.hshint.innerHTML=nm;
		  this.hshint.style.display='';
		}
	},
	
	showpointer:function(x,y,flick){
		var ax=Math.floor(x/this.opt.z)-16;
		var ay=Math.floor(y/this.opt.z)-16;
		this.pointer.style.left=ax+'px';
		this.pointer.style.top=ay+'px';
		this.pointer.style.display='';
		if(flick!=null){
	        window.setTimeout(function(){
	            this.hidepointer();
	        }.bind(this),3000);
	    }
	},
	
	showbusp:function(t,x,y){
		var ax=Math.floor(x/this.opt.z)-9;
		var ay=Math.floor(y/this.opt.z)-22;
		if(t=='start'){
		    this.busstartp._x=x;
		    this.busstartp._y=y;
		    this.busstartp.style.left=ax+'px';
		    this.busstartp.style.top=ay+'px';
		    this.busstartp.style.display='';
		}
		else if(t=='end'){
		    this.busendp._x=x;
		    this.busendp._y=y;
		    this.busendp.style.left=ax+'px';
		    this.busendp.style.top=ay+'px';
		    this.busendp.style.display='';
		}
	},
	
	showpointerani:function(x,y,flick,callback){
		this.setposani(x,y,moveend.bind(this));
		
		function moveend(){
			this.loadminimap();
			this.loadmap();
		    this.showpointer(x,y);
		    if(flick!=null){
		        window.setTimeout(function(){
		            this.hidepointer();
		        }.bind(this),1000);
		    }
		    if(callback)callback(x,y);
		}
	},
	
	hidezoombox:function(){
		this.zoombox.style.display='none';
	},
	
	hideinfohint:function(){
		this.infohint.style.display='none';
	},
	
	hideinfohint2:function(){
		this.infohint2.style.display='none';
	},
	
	hideinfohintbs:function(){
		this.infohintbs.style.display='none';
	},
	
	hideallinfohint:function(){
		this.hideinfohint();
		this.hideinfohint2();
		this.hideinfohintbs();

	},
	
	hidehshint:function(){
		this.hshint.style.display='none';
	},
	
	hidepointer:function(){
		this.pointer.style.display='none';
	},
	
	hidebusp:function(t){
		if(t=='start'){
		    this.busstartp.style.display='none';
		}
		else if(t=='end'){
		    this.busendp.style.display='none';
		}
		else if(t==null){
		    this.busstartp.style.display='none';
		    this.busendp.style.display='none';
		}
	},
	
	getpos:function(callback){
	    this.gettingposexternal=true;
	    this.gettingposmsg.style.display='';
	    this.ctn.onmousemove=function(){};
		this.hidehshint();
		this.currhs=null;
	    this.ctn.style.cursor='default';
	    this.getPosExternal=cb.bind(this);
	    
	    function cb(x,y){
	        this.showpointerani(x,y,null,cb1.bind(this));
	    }
	    function cb1(x,y){
	        if(confirm('当前定点是否正确?')){
	            this.gettingposexternal=false;
	            this.gettingposmsg.style.display='none';
	            if(!this.opt.ht){
			        this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
		        }
	            this.ctn.style.cursor='url(/modules/map/images/openhand.cur),default';
	            this.hidepointer();
	            this.getPosExternal=null;
	            callback(x,y);
	        }
	        else{
	            this.hidepointer();
	        }
	    }
	},
	
	cancelgetpos:function(){
        this.gettingposexternal=false;
        this.gettingposmsg.style.display='none';
        if(!this.opt.ht){
	        this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
        }
        this.ctn.style.cursor='url(/modules/map/images/openhand.cur),default';
        this.hidepointer();
        this.getPosExternal=null;
	},
	
	ctnmousedown:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		if(evt.button==(ie?1:0)){
			this.mdx=evtx;
			this.mdy=evty;
			this.allowinvokedragstart=true;
			
			document.onmousemove=this.docmousemove.bindAsEventListener(this);
			document.onmouseup=this.docmouseup.bindAsEventListener(this);
		}
		
		return false;
	},
	
	ctndblclick:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		if(this.opt.z!=1){
			var cx=(evtx-this.mvl.offsetLeft-this.ctn.offsetLeft+document.documentElement.scrollLeft)*this.opt.z;
			var cy=(evty-this.mvl.offsetTop-this.ctn.offsetTop+document.documentElement.scrollTop)*this.opt.z;
			this.czoombp(1,cx,cy);
		}
	},
	
	docmousemove:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		if(Math.abs(evtx-this.mdx)>0 || Math.abs(evty-this.mdy)>0){
			if(this.allowinvokedragstart){
				this.allowinvokedragstart=false;
				if(ie)this.ctn.setCapture();
				this.ctn.style.cursor='url(/modules/map/images/closedhand.cur),move';
				this.ondragstart(evt);
			}
			document.onmousemove=this.docmousemove1.bindAsEventListener(this);
			document.onmouseup=this.docmouseup1.bindAsEventListener(this);
		}
		
		return false;
	},
	
	docmousemove1:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		if(ie){
			this.ondrag(evt);
		}
		else{
			if(evtx<this.ctn.offsetLeft || evtx>this.ctn.offsetLeft+this.ctn.offsetWidth ||evty<this.ctn.offsetTop || evty>this.ctn.offsetTop+this.ctn.offsetHeight){
				this.docmouseup1(evt);
			}
			else{
				this.ondrag(evt);
			}
		}

	},
	
	docmouseup:function(evt){
		document.onmousemove=null;
		document.onmouseup=null;
		
		this.onclick(evt);
		
		return false;
	},
	
	docmouseup1:function(evt){
		document.onmousemove=null;
		document.onmouseup=null;
		
		if(ie)this.ctn.releaseCapture();
		if(this.gettingposexternal){
		    this.ctn.style.cursor='default';
		}
		else{
		    this.ctn.style.cursor='url(/modules/map/images/openhand.cur),default';
		}
		this.ondrop(evt);
		
		return false;
	},
	
	onclick:function(evt){
		var src=evt.srcElement?evt.srcElement:evt.target;
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		if(ie)
	    {
    		var rect = this.ctn.getBoundingClientRect();
    		evtx=evtx-rect.left;
            evty=evty-rect.top;
        }
        else
        {
            var rect = this.cumulativeOffset(this.ctn);
            evtx=evtx-rect[0];
            evty=evty-rect[1];
        }
		
		var cx=(evtx+document.documentElement.scrollLeft-this.mvl.offsetLeft)*this.opt.z;
		var cy=(evty+document.documentElement.scrollTop-this.mvl.offsetTop)*this.opt.z;
		
		if(this.getPosExternal!=null){
			this.getPosExternal(cx,cy);
			return;
		}

		var htsrc=elm.getpbcn(src,'ht');
		var hs=this.currhs;
		
		if(hs!=null){
			this.showinfohint(hs.x,hs.y,hs.x2,hs.y2,hs.id,hs.n);
		}
		else if(htsrc!=null){
			if(htsrc._tp=='bs'){
				this.showinfohintbs(htsrc._x,htsrc._y,htsrc._x2,htsrc._y2,htsrc._id,htsrc._n);
			}
		  else if(htsrc._ct==null){
				this.showinfohint(htsrc._x,htsrc._y,htsrc._x2,htsrc._y2,htsrc._id,htsrc._n);
			}
			else{
				this.showinfohint2(htsrc._x,htsrc._y,htsrc._n,htsrc._ct);
			}
		}
		else{
			this.hideallinfohint();
			this.hidefav();
		}
	},
	
	ondragstart:function(evt){
	    if($(loadmk).style.display=='block')
	    {
	        $(loadmk).style.display="none";
	    }
	    	    
	    if($(lr).style.display=='block')
	    {
	        $(lr).style.display="none";
	    }	    
	    if($(lf).style.display=='block')
	    {
	        $(lf).style.display="none";
	    }	    
	    if($(ly).style.display=='block')
	    {
	        $(ly).style.display="none";
	    }	    
	    if($(gw).style.display=='block')
	    {
	        $(gw).style.display="none";
	    }	    
	    if($(qc).style.display=='block')
	    {
	        $(qc).style.display="none";
	    }	    
	    if($(yl).style.display=='block')
	    {
	        $(yl).style.display="none";
	    }	    
	    if($(fw).style.display=='block')
	    {
	        $(fw).style.display="none";
	    }
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		
		this.mvx=Math.floor(evtx+this.opt.x/this.opt.z);
		this.mvy=Math.floor(evty+this.opt.y/this.opt.z);
		
		this.clearzm();
		
		this.ctn.onmousemove=function(){};
		this.hidehshint();
		this.currhs=null;
		
		this.hideallinfohint();
		this.hidefav();
		
	},
	
	ondrag:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		
		this.opt.x=(this.mvx-evtx)*this.opt.z;
		this.opt.y=(this.mvy-evty)*this.opt.z;
		this.setpos();
		
	},
	
	ondrop:function(evt){
	
		this.loadminimap();
		this.loadmap();
		
		if(!this.opt.ht && !this.gettingposexternal){
			this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
		}
		
	},
	
	
	onloadmap:function(){
	
	},
	
	
	minimaplocationmousedown:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		
		this.mvx=evtx-this.minimaplocation.offsetLeft;
		this.mvy=evty-this.minimaplocation.offsetTop;
		
		if(ie)this.minimaplocation.setCapture();
		
		this.minimap.onmousemove=function(){};
		this.ctn.onmousemove=function(){};
		this.hidehshint();
		this.currhs=null;
		
		document.onmousemove=this.docmousemove2.bindAsEventListener(this);
		document.onmouseup=this.docmouseup2.bindAsEventListener(this);
	},
	
	docmousemove2:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		
		var x=evtx-this.mvx;
		var y=evty-this.mvy;
		
		var l=this.minimapctn.offsetLeft;
		var t=this.minimapctn.offsetTop;
		var r=this.minimapctn.offsetLeft+this.minimapctn.offsetWidth-this.minimaplocation.offsetWidth-33;
		var b=this.minimapctn.offsetTop+this.minimapctn.offsetHeight-this.minimaplocation.offsetHeight;
		
		var dir=0;
		
		if(x<l){
			if(this.minimapmvtm==null){
				this.minimapmvtm=window.setInterval(function(){
					this.minimapmvl.style.left=this.minimapmvl.offsetLeft+2+'px';
				}.bind(this),20);
			}
			x=l;
			dir++;
		}
		if(x>r){
			if(this.minimapmvtm==null){
				this.minimapmvtm=window.setInterval(function(){
					this.minimapmvl.style.left=this.minimapmvl.offsetLeft-2+'px';
				}.bind(this),20);
			}
			x=r;
			dir++
		}
		if(y<t){
			if(this.minimapmvtm==null){
				this.minimapmvtm=window.setInterval(function(){
					this.minimapmvl.style.top=this.minimapmvl.offsetTop+2+'px';
				}.bind(this),20);
			}
			y=t;
			dir++
		}
		if(y>b){
			if(this.minimapmvtm==null){
				this.minimapmvtm=window.setInterval(function(){
					this.minimapmvl.style.top=this.minimapmvl.offsetTop-2+'px';
				}.bind(this),20);
			}
			y=b;
			dir++
		}
		if(dir!=1 && this.minimapmvtm!=null){
			window.clearInterval(this.minimapmvtm);
			this.minimapmvtm=null;
		}
		
		this.minimaplocation.style.left=x+'px';
		this.minimaplocation.style.top=y+'px';
	},
	
	docmouseup2:function(evt){
		document.onmousemove=null;
		document.onmouseup=null;
		
		if(ie)this.minimaplocation.releaseCapture();
		this.minimap.onmousemove=function(evt){evt.cancelBubble=true;return false;}.bindAsEventListener(this);
		if(!this.opt.ht && !this.gettingposexternal){
			this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
		}
		
		
		if(this.minimapmvtm!=null){
			window.clearInterval(this.minimapmvtm);
			this.minimapmvtm=null;
		}
		
		var x=Math.floor((this.minimaplocation.offsetLeft-this.minimapctn.offsetLeft+this.minimaplocation.offsetWidth/2-this.minimapmvl.offsetLeft)*64*this.opt.z);
		var y=Math.floor((this.minimaplocation.offsetTop-this.minimapctn.offsetTop+this.minimaplocation.offsetHeight/2-this.minimapmvl.offsetTop)*64*this.opt.z);
		
		this.setposanionly(x,y,function(){},onmvend.bind(this));
		
		this.setminimapposani(x,y,onmoving.bind(this));
		
		var ox=this.minimaplocation.offsetLeft-this.minimapmvl.offsetLeft;
		var oy=this.minimaplocation.offsetTop-this.minimapmvl.offsetTop;
		
		function onmoving(){
			this.minimaplocation.style.left=ox+this.minimapmvl.offsetLeft+'px';
			this.minimaplocation.style.top=oy+this.minimapmvl.offsetTop+'px';
		}
		
		
		
		function onmvend(){
			this.loadminimap();
			this.loadmap();
			
		}
	},
	
	cumulativeOffset:function(element)   {  
          var valueT=0,valueL=0;  
          do {  
              valueT   +=   element.offsetTop     ||   0;  
              valueL   +=   element.offsetLeft   ||   0;  
              element   =   element.offsetParent;  
          }   while   (element);  
          return   [valueL,   valueT];
	},
	
	ctnmousemove:function(evt){
		var evtx=ie?evt.clientX-2:evt.clientX;
		var evty=ie?evt.clientY-2:evt.clientY;
		
		if(ie)
	    {
    		var rect = this.ctn.getBoundingClientRect();
    		evtx=evtx-rect.left;
            evty=evty-rect.top;
        }
        else
        {
            var rect = this.cumulativeOffset(this.ctn);
            evtx=evtx-rect[0];
            evty=evty-rect[1];
        }
		
		var ctnx=evtx-this.ctn.offsetLeft;
		var ctny=evty-this.ctn.offsetTop;
		
		var mx=ctnx-this.mvl.offsetLeft;
		var my=ctny-this.mvl.offsetTop;
		return false;
	},
	
	ctnmouseout:function(evt){
		this.hidehshint();
	},
	
	gethsinfobp:function(x,y){
		if(this.hsinfo){
			for(var i=0;i<this.hsinfo.length;i++){
				if(pinf(x,y,this.hsinfo[i].hs)){
					return this.hsinfo[i];
				}
			}
		}
		return null;
	},
	
	srhtmousemove:function(evt){
		var src=evt.srcElement?evt.srcElement:evt.target;
		
		src=elm.getpbcn(src,'ht');
		
		src.style.zIndex=99;
		
		src.txt.innerHTML=src._n;
		
		this.ctn.onmousemove=function(){};
		this.hidehshint();
		this.currhs=null;
		
		return false;
		
	},
	
	srhtmouseout:function(evt){
		var src=evt.srcElement?evt.srcElement:evt.target;
		
		src=elm.getpbcn(src,'ht');
		
		src.style.zIndex=2;
		
		src.txt.innerHTML='';
		
		if(!this.opt.ht && !this.gettingposexternal){
			this.ctn.onmousemove=this.ctnmousemove.bindAsEventListener(this);
		}
		
		return false;
		
	},
	
	
	htmousemove:function(evt){
		var src=evt.srcElement?evt.srcElement:evt.target;
		
		src=elm.getpbcn(src,'ht');
		
		src.style.zIndex=99;
	},
	
	htmouseout:function(evt){
		var src=evt.srcElement?evt.srcElement:evt.target;
		
		src=elm.getpbcn(src,'ht');
		
		src.style.zIndex=1;
	}
	
}
