// Copyright 2005 Google
function ii(Bg,Vf,Eh)
{
	this.type=Bg;
	this.version=Vf;
	this.os=Eh
}


;
var m=new ii(0,0,null);
var Eb=navigator.userAgent.toLowerCase();
if(Eb.indexOf("msie")!=-1&&document.all)
{
	m.type=1;
	if(Eb.indexOf("msie 5"))m.version=5
}

else if(Eb.indexOf("safari")!=-1)
{
	m.type=3;
	if(Eb.indexOf("safari/125")!=-1)m.version=1
}

else if(Eb.indexOf("mozilla")!=-1)
{
	m.type=2
}

if(Eb.indexOf("x11;
")!=-1)
{
	m.os=1
}

;
var _timeoutCounter=0;
Object.prototype.setTimeout=function(ae,Rh)
{
	var be="tempVar"+_timeoutCounter;
	_timeoutCounter++;
	eval(be+" = this;
	");
	var jh=ae.replace(/\\/g,"\\\\").replace(/\"/g,'\\"');
	return window.setTimeout(be+'._setTimeoutDispatcher("'+jh+'");
	'+be+" = null;
	",Rh)
}


;
Object.prototype._setTimeoutDispatcher=function(ae)
{
	eval(ae)
}


;
Object.prototype.eventHandler=function(Xf)
{
	var h=this;
	h=h;
	return function(b)
	{
		if(!b)b=window.event;
		if(b&&!b.target)b.target=b.srcElement;
		h[Xf](b)
	}
	
	
	
}


;
String.prototype.xmlEscape=function()
{
	return this.replace(/&/g,"&
	").replace(/</g,"&lt;
	").replace(/>/g,"&gt;
	")
}


;
String.prototype.jsEscape=function()
{
	return this.replace(/\\/g,"\\\\").replace(/\'/g,'\\"').xmlEscape()
}


;
Array.prototype.clear=function()
{
	while(this.length>0)this.pop()
}


;
document.getElementsByClassName=function(ja)
{
	var ec=document.all;
	if(!ec)ec=document.getElementsByTagName("*");
	var he=new Array();
	for(var a=0;
	a<ec.length;
	a++)
	{
		if(ec[a].className==ja)
		{
			he[he.length]=ec[a]
		}
		
		
	}
	
	return he
}


;
function o()
{
	
}


o.createElement=function(C,ac)
{
	var f;
	if(m.type==1)
	{
		f=document.createElement("DIV");
		f.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+C+(ac?'",sizingMethod=crop)':'")')
	}
	
	else
	{
		f=document.createElement("IMG");
		f.src=C
	}
	
	return f
}


;
o.create=function(C,g,k,K,top,Ga,ac,xa)
{
	return zb.create(C,g,k,K,top,Ga,ac,xa,o.createElement)
}


;
function zb()
{
	
}


zb.create=function(C,g,k,K,top,Ga,ac,xa,rf)
{
	var f;
	if(!rf)
	{
		f=document.createElement("IMG");
		if(C)f.src=C
	}
	
	else
	{
		f=rf(C,ac)
	}
	
	if(g&&k)
	{
		f.style.width=yb(g);
		f.style.height=yb(k);
		f.width=g;
		f.height=k
	}
	
	if(top||(K||(top==0||K==0)))
	{
		f.style.position="absolute";
		f.style.left=yb(K);
		f.style.top=yb(top)
	}
	
	if(Ga||Ga==0)
	{
		f.style.zIndex=Ga
	}
	
	if(m.type==1)
	{
		f.unselectable="on";
		f.onselectstart=Td
	}
	
	else
	{
		f.className="noselect"
	}
	
	f.oncontextmenu=Td;
	if(xa)
	{
		Nb(f,xa)
	}
	
	return f
}


;
function le(bf,ja,sf)
{
	if(m.type==1)
	{
		bf.attachEvent("on"+ja,sf)
	}
	
	else
	{
		bf.addEventListener(ja,sf,false)
	}
	
	
}


function aa(b)
{
	if(m.type==1)
	{
		window.event.cancelBubble=true
	}
	
	else
	{
		b.cancelBubble=true;
		b.preventDefault();
		b.stopPropagation()
	}
	
	
}


function Yg(Fb,gi)
{
	var ld=window.document.createElement("a");
	ld.href="javascript:void(0)";
	ld.onclick=gi;
	ld.appendChild(window.document.createTextNode(Fb));
	return ld
}


if(!Array.prototype.push)
{
	Array.prototype.push=function(Ve)
	{
		this[this.length]=Ve
	}
	
	
	
}

function Ve(F)
{
	return document.getElementById(F)
}


function yb(x)
{
	return x+"px"
}


function Nb(c,xa)
{
	if(c.className)
	{
		c.className+=" "+xa
	}
	
	else
	{
		c.className=xa
	}
	
	
}


function qh(D)
{
	var l=0;
	while(D)
	{
		l+=D.offsetTop;
		D=D.offsetParent
	}
	
	return l
}


function sc(ba)
{
	this.size=0;
	if(ba)
	{
		for(var a=ba.length-1;
		a>=0;
		a--)this.add(ba[a])
	}
	
	
}


sc.prototype.add=function(kb)
{
	if(!this.contains(kb))
	{
		this[":"+kb]=1;
		this.size++
	}
	
	
}


;
sc.prototype.remove=function(kb)
{
	if(this.contains(kb))
	{
		delete this[":"+kb];
		this.size--
	}
	
	
}


;
sc.prototype.contains=function(kb)
{
	return this[":"+kb]==1
}


;
function Td()
{
	return false
}


;
var q="http://www.google.com/mapfiles/";
var De="http://maps.google.com";
var Rc=new Array("q","ll","spn","z","t","sll","sspn","vp","f","output","deb");
function Ja()
{
	this.args=new Object();
	this.reset()
}


Ja.prototype.setValue=function(ja,Q)
{
	this.args[ja]=Q
}


;
Ja.prototype.setAllMapValues=function(p)
{
	this.setValue("ll",this.getLatLngArg(p.getCenterLatLng()));
	this.setValue("spn",this.getSpanArg(p.getSpanLatLng()));
	this.setValue("z",p.zoomLevel);
	this.setValue("t",this.getSpecArg(p.spec))
}


;
Ja.prototype.getLatLngArg=function(j)
{
	return cd(j.y)+","+cd(j.x)
}


;
Ja.prototype.getSpanArg=function(Ma)
{
	return cd(Ma.height)+","+cd(Ma.width)
}


;
Ja.prototype.getSpecArg=function(Ub)
{
	return Ub==Cc?null:"i"
}


;
Ja.prototype.reset=function()
{
	for(var a=0;
	a<Rc.length;
	a++)
	{
		this.args[Rc[a]]=null
	}
	
	if(window._df&&window._df.length>0)
	{
		this.setValue("deb",window._df)
	}
	
	
}


;
Ja.prototype.getURL=function(Mh)
{
	var Kd=new Array();
	for(var a=0;
	a<Rc.length;
	a++)
	{
		var ja=Rc[a];
		if(this.args[ja])
		{
			Kd.push(ja+"="+encodeURIComponent(this.args[ja]))
		}
		
		
	}
	
	var lb="/maps";
	if(Kd.length>0)lb+="?"+Kd.join("&");
	if(Mh)return De+lb;
	return lb
}


;
function cd(fb)
{
	if(fb.toFixed)
	{
		return fb.toFixed(6).toString()
	}
	
	else
	{
		return fb.toString()
	}
	
	
}


;
var db=new Object();
function qa(F,Ba)
{
	this.id=F;
	this.ticketClass=Ba
}


qa.create=function(Ba)
{
	if(!Ba)Ba="_dtc";
	if(!db[Ba])db[Ba]=1;
	else db[Ba]++;
	return new qa(db[Ba],Ba)
}


;
qa.invalidateAll=function()
{
	for(var a in db)
	{
		try
		{
			db[a]++
		}
		
		catch(b)
		{
			
		}
		
		
	}
	
	
}


;
qa.invalidate=function(xa)
{
	db[xa]++
}


;
qa.prototype.isValid=function()
{
	return db[this.ticketClass]==this.id
}


;
function Yd()
{
	
}


Yd.create=function()
{
	if(m.type==1)
	{
		var Vd=m.version==5?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP";
		return new ActiveXObject(Vd)
	}
	
	else
	{
		return new XMLHttpRequest()
	}
	
	
}


;
function Z(Vc)
{
	if(m.type==1)
	{
		this.stylesheet=Vc
	}
	
	else if(m.type!=3)
	{
		this.processor=new XSLTProcessor();
		this.processor.importStylesheet(Vc)
	}
	
	
}


Z.cache_=new Object();
Z.create=function(Vc)
{
	return new Z(Vc)
}


;
Z.getCached=function(lb)
{
	return Z.cache_[lb]
}


;
Z.cache=function(lb,Tf)
{
	Z.cache_[lb]=Tf
}


;
Z.prototype.transformToHTML=function(qc,vb)
{
	if(this.stylesheet)
	{
		vb.innerHTML=qc.transformNode(this.stylesheet)
	}
	
	else
	{
		var ai=this.processor.transformToFragment(qc,window.document);
		vb.innerHTML="";
		vb.appendChild(ai)
	}
	
	
}


;
Z.asynchronousTransform=function(qc,vb,kc,Nc,Ba)
{
	if(m.type==3)return;
	var cc=Z.getCached(kc);
	if(cc)
	{
		cc.transformToHTML(qc,vb);
		if(Nc)Nc();
		return
	}
	
	var yc=qa.create(Ba);
	var sa=Yd.create();
	nd('<a href="'+kc.xmlEscape()+'">'+kc.xmlEscape()+"</a>",0);
	sa.open("GET",kc,true);
	sa.onreadystatechange=function()
	{
		if(sa.readyState==4)
		{
			if(yc.isValid())
			{
				try
				{
					var Db=sa.responseXML;
					var cc=Z.create(Db);
					Z.cache(kc,cc);
					cc.transformToHTML(qc,vb);
					if(Nc)Nc()
				}
				
				catch(b)
				{
					
				}
				
				
			}
			
			
		}
		
		
	}
	
	
	;
	sa.send(null)
}


;
function ah(c)
{
	while(c.hasChildNodes())
	{
		c.removeChild(c.lastChild)
	}
	
	
}


function lg(str)
{
	if(m.type==1)
	{
		var Vd=m.version==5?"Microsoft.XmlDom":"Msxml2.XmlDom";
		var Db=new ActiveXObject(Vd);
		Db.loadXML(str);
		return Db
	}
	
	else
	{
		return(new DOMParser()).parseFromString(str,"text/xml")
	}
	
	
}


;
function nd(Yh,ka)
{
	
}


Object.prototype.trace=function(Yh,ka,oi)
{
	
}


;
function I()
{
	
}


I.start=function()
{
	
}


;
I.end=function()
{
	
}


;
I.addTime=function(ve)
{
	
}


;
function n(x,l)
{
	this.x=x;
	this.y=l
}


n.prototype.toString=function()
{
	return"("+this.x+", "+this.y+")"
}


;
n.prototype.equals=function(S)
{
	if(!S)return false;
	return this.x==S.x&&this.y==S.y
}


;
n.prototype.distanceFrom=function(S)
{
	var va=this.x-S.x;
	var za=this.y-S.y;
	return Math.sqrt(va*va+za*za)
}


;
n.prototype.approxEquals=function(S)
{
	if(!S)return false;
	return zc(this.x,S.x)&&zc(this.y,S.y)
}


;
function M(g,k)
{
	this.width=g;
	this.height=k
}


M.prototype.toString=function()
{
	return"("+this.width+", "+this.height+")"
}


;
M.prototype.equals=function(S)
{
	if(!S)return false;
	return this.width==S.width&&this.height==S.height
}


;
M.prototype.approxEquals=function(S)
{
	if(!S)return false;
	return zc(this.width,S.width)&&zc(this.height,S.height)
}


;
function zc(rg,wh)
{
	return Math.round(rg*1000000)==Math.round(wh*1000000)
}


function U(Uh,Pg,ed,Jc)
{
	this.minX=Uh;
	this.minY=Pg;
	this.maxX=ed;
	this.maxY=Jc
}


U.prototype.toString=function()
{
	return"Bounds("+this.minX+","+this.minY+","+this.maxX+","+this.maxY+")"
}


;
U.prototype.containsSegment=function(md,Pc)
{
	if(this.minX>md.x&&this.minX>Pc.x)return false;
	if(this.maxX<md.x&&this.maxX<Pc.x)return false;
	if(this.minY>md.y&&this.minY>Pc.y)return false;
	if(this.maxY<md.y&&this.maxY<Pc.y)return false;
	return true
}


;
U.prototype.containsBounds=function(pd)
{
	return this.minX<pd.minX&&(this.maxX>pd.maxX&&(this.minY<pd.minY&&this.maxY>pd.maxY))
}


;
function Wb(Yf)
{
	this.ticks=Yf;
	this.tick=0
}


Wb.prototype.reset=function()
{
	this.tick=0
}


;
Wb.prototype.next=function()
{
	this.tick++;
	var Ta=Math.PI*(this.tick/this.ticks-0.5);
	return(Math.sin(Ta)+1)/2
}


;
Wb.prototype.more=function()
{
	return this.tick<this.ticks
}


;
function Tg(Q,ba)
{
	if(!ba)ba=new Array();
	while(Q>=32)
	{
		ba.push(String.fromCharCode((32|Q&31)+63));
		Q>>=5
	}
	
	ba.push(String.fromCharCode(Q+63));
	return ba
}


function Mb(Q,ba)
{
	return Tg(Q<0?~(Q<<1):Q<<1,ba)
}


function Lb(gh,yd,ie,Dd)
{
	this.numLevels=ie;
	this.zoomFactor=Dd;
	this.decodePolyline(gh);
	this.decodeLevels(yd);
	this.minTolerance=1.0E-5
}


Lb.prototype.decodePolyline=function(Vb)
{
	I.start("Polyline","decodePolyline");
	var Ih=Vb.length;
	var pb=0;
	var ba=new Array();
	var Ka=0;
	var Pa=0;
	while(pb<Ih)
	{
		var ub;
		var oc=0;
		var Fa=0;
		do
		{
			ub=Vb.charCodeAt(pb++)-63;
			Fa|=(ub&31)<<oc;
			oc+=5
		}
		
		while(ub>=32);
		Ka=Ka+(Fa&1?~(Fa>>1):Fa>>1);
		ba.push(Ka);
		oc=0;
		Fa=0;
		do
		{
			ub=Vb.charCodeAt(pb++)-63;
			Fa|=(ub&31)<<oc;
			oc+=5
		}
		
		while(ub>=32);
		Pa=Pa+(Fa&1?~(Fa>>1):Fa>>1);
		ba.push(Pa)
	}
	
	this.points=ba;
	this.numPoints=this.points.length>>1;
	I.end("Polyline","decodePolyline")
}


;
Lb.prototype.decodeLevels=function(Vb)
{
	I.start("Polyline","decodeLevels");
	var Xc=new Array(this.numLevels);
	for(var qe=0;
	qe<this.numLevels;
	++qe)Xc[qe]=new Array();
	var a=0;
	for(var V=0;
	V<this.numPoints;
	++V)
	{
		var wb=Vb.charCodeAt(a++)-63;
		while(wb>=0)
		{
			var Ob=Xc[wb--];
			while(Ob.length<V)
			{
				Ob.push(V)
			}
			
			
		}
		
		
	}
	
	for(var wb=0;
	wb<this.numLevels;
	++wb)
	{
		var Ob=Xc[wb];
		for(var V=Ob.length;
		V<this.numPoints;
		++V)
		{
			Ob.push(this.numPoints)
		}
		
		
	}
	
	this.nextPointIndexAtLevel=Xc;
	I.end("Polyline","decodeLevels")
}


;
Lb.prototype.getPoint=function(pb,j)
{
	if(j==null)j=new n();
	pb<<=1;
	j.y=this.points[pb]*1.0E-5;
	j.x=this.points[pb+1]*1.0E-5;
	return j
}


;
Lb.prototype.getVectors=function(A,J,v)
{
	I.start("Polyline","getVectors");
	if(v==null)v=new Array();
	this.getVectorsHelper(A,0,this.numPoints-1,this.numLevels-1,J,v);
	I.end("Polyline","getVectors");
	return v
}


;
Lb.prototype.getVectorsHelper=function(A,Xh,tb,ka,Gf,v)
{
	var vc=7.62939453125E-6;
	for(var a=ka;
	a>0;
	--a)
	{
		vc*=this.zoomFactor
	}
	
	var _expandedBounds=new U();
	_expandedBounds.minX=Math.floor((A.minX-vc)*100000);
	_expandedBounds.minY=Math.floor((A.minY-vc)*100000);
	_expandedBounds.maxX=Math.ceil((A.maxX+vc)*100000);
	_expandedBounds.maxY=Math.ceil((A.maxY+vc)*100000);
	var bc=Xh;
	var mc;
	var la=new n();
	la.y=this.points[bc<<1];
	la.x=this.points[(bc<<1)+1];
	var na=new n();
	while((mc=this.nextPointIndexAtLevel[ka][bc])<=tb)
	{
		na.y=this.points[mc<<1];
		na.x=this.points[(mc<<1)+1];
		if(_expandedBounds.containsSegment(la,na))
		{
			if(ka>Gf)
			{
				this.getVectorsHelper(A,bc,mc,ka-1,Gf,v)
			}
			
			else
			{
				v.push(la.y*1.0E-5);
				v.push(la.x*1.0E-5);
				v.push(na.y*1.0E-5);
				v.push(na.x*1.0E-5)
			}
			
			
		}
		
		var Zd=la;
		la=na;
		na=Zd;
		bc=mc
	}
	
	
}


;
var ki=q+"markerTransparent.png";
function d(R,Ub,g,k,eg,ze)
{
	if(!R)return;
	this.container=R;
	this.disablePopups=eg;
	this.disableDragging=ze;
	this.zoomLevel=0;
	this.topLeftTile=null;
	this.currentPanOffset=new M(0,0);
	this.centerBitmap=new n(0,0);
	this.tilePaddingOffset=new M(0,0);
	this.tableSize=new M(0,0);
	this.overlays=new Array();
	this.locations=new Array();
	this.panDistance=new M(0,0);
	this.panKeys=new sc();
	this.setSpecification(Ub);
	this.container.style.overflow="hidden";
	if(this.container.style.position!="absolute")this.container.style.position="relative";
	this.container.style.backgroundColor=this.spec.backgroundColor;
	if(!g||!k)
	{
		g=this.container.offsetWidth;
		k=this.container.offsetHeight
	}
	
	this.viewSize=new M(g,k);
	if(m.type==1)
	{
		this.container.onresize=this.eventHandler("onResize");
		window.onblur=this.eventHandler("onWindowBlur")
	}
	
	else
	{
		window.addEventListener("resize",this.eventHandler("onResize"),false);
		window.addEventListener("blur",this.eventHandler("onWindowBlur"),false)
	}
	
	this.div=this.createMapDiv();
	this.container.appendChild(this.div);
	if(!this.disablePopups)
	{
		this.infoWindow=new t("14em",this.eventHandler("onInfoCloseClick"),this.div,50,20)
	}
	
	this.directionsDiv=document.createElement("div");
	this.directionsDiv.directionsBounds=new U(-Infinity,-Infinity,Infinity,Infinity);
	this.div.appendChild(this.directionsDiv);
	this.dragObject=new Na(this.div,0,0);
	this.dragObject.ondrag=this.eventHandler("onDrag");
	this.dragObject.ondragstart=this.eventHandler("onDragStart");
	this.dragObject.ondragend=this.eventHandler("onDragEnd");
	this.div.ondblclick=this.eventHandler("onDoubleClick");
	this.dragObject.onclick=this.eventHandler("onClick");
	if(ze)
	{
		this.dragObject.disable()
	}
	
	this.initializeMap();
	this.onzoom=null;
	this.onpan=null;
	this.onmousedown=null;
	this.onspecificationchange=null;
	this.oninfowindowclose=null;
	this.onresize=null;
	this.stateListeners=null
}


d.prototype.createMapDiv=function()
{
	var i=document.createElement("div");
	i.style.position="absolute";
	i.style.top="0px";
	i.style.left="0px";
	i.style.zIndex=0;
	i.style.backgroundColor=this.spec.backgroundColor;
	return i
}


;
d.prototype.loadTileImages=function()
{
	while(this.tileImages.length>this.tableSize.width)
	{
		var Xe=this.tileImages.pop();
		for(var a=0;
		a<Xe.length;
		a++)
		{
			this.div.removeChild(Xe[a])
		}
		
		
	}
	
	for(var a=this.tileImages.length;
	a<this.tableSize.width;
	a++)
	{
		this.tileImages.push(new Array())
	}
	
	for(var a=0;
	a<this.tileImages.length;
	a++)
	{
		while(this.tileImages[a].length>this.tableSize.height)
		{
			var f=this.tileImages[a].pop();
			this.div.removeChild(f)
		}
		
		for(var G=this.tileImages[a].length;
		G<this.tableSize.height;
		G++)
		{
			var f=zb.create(null,this.spec.tileSize,this.spec.tileSize,null,null,0,null,null);
			f.style.position="absolute";
			this.tileImages[a].push(f);
			this.div.appendChild(f);
			this.configureImage(f,a,G)
		}
		
		
	}
	
	
}


;
d.prototype.deleteTiles=function()
{
	if(this.tileImages)
	{
		for(var a=0;
		a<this.tileImages.length;
		a++)
		{
			if(this.tileImages[a])
			{
				for(var G=0;
				G<this.tileImages[a].length;
				G++)
				{
					this.div.removeChild(this.tileImages[a][G])
				}
				
				
			}
			
			
		}
		
		
	}
	
	this.tileImages=null
}


;
d.prototype.initializeMap=function()
{
	this.deleteTiles();
	this.tileImages=new Array();
	this.calculateTileMeasurements();
	this.loadTileImages()
}


;
d.prototype.getSpanLatLng=function(e)
{
	if(!e)e=new M(0,0);
	var wa=this.spec.getLatLng(this.centerBitmap.x-this.viewSize.width/2,this.centerBitmap.y-this.viewSize.height/2,this.zoomLevel);
	var ra=this.spec.getLatLng(this.centerBitmap.x+this.viewSize.width/2,this.centerBitmap.y+this.viewSize.height/2,this.zoomLevel);
	e.width=Math.abs(ra.x-wa.x);
	e.height=Math.abs(ra.y-wa.y);
	return e
}


;
d.prototype.getCenterLatLng=function(e)
{
	if(!e)e=new n(0,0);
	if(this.centerLatLng)
	{
		e.x=this.centerLatLng.x;
		e.y=this.centerLatLng.y;
		return e
	}
	
	if(this.lastLatLng)
	{
		var W=this.spec.getBitmapCoordinate(this.lastLatLng.y,this.lastLatLng.x,this.zoomLevel);
		if(W.equals(this.centerBitmap))
		{
			e.x=this.lastLatLng.x;
			e.y=this.lastLatLng.y;
			return e
		}
		
		
	}
	
	var j=this.spec.getLatLng(this.centerBitmap.x,this.centerBitmap.y,this.zoomLevel);
	e.x=j.x;
	e.y=j.y;
	return e
}


;
d.prototype.getBoundsBitmap=function(e)
{
	if(!e)e=new U(0,0,0,0);
	e.minX=this.centerBitmap.x-this.viewSize.width/2;
	e.minY=this.centerBitmap.y-this.viewSize.height/2;
	e.maxX=this.centerBitmap.x+this.viewSize.width/2;
	e.maxY=this.centerBitmap.y+this.viewSize.height/2;
	return e
}


;
d.prototype.getBoundsLatLng=function(e)
{
	e=this.getBoundsBitmap(e);
	var wa=this.spec.getLatLng(e.minX,e.minY,this.zoomLevel);
	var ra=this.spec.getLatLng(e.maxX,e.maxY,this.zoomLevel);
	e.minX=wa.x;
	e.minY=ra.y;
	e.maxX=ra.x;
	e.maxY=wa.y;
	return e
}


;
d.prototype.calculateTileMeasurements=function()
{
	var sh=Math.ceil(this.viewSize.width/this.spec.tileSize)+2;
	var Rg=Math.ceil(this.viewSize.height/this.spec.tileSize)+2;
	this.tableSize.width=sh;
	this.tableSize.height=Rg;
	var sb=Math.floor((this.tableSize.width*this.spec.tileSize-this.viewSize.width)/2);
	var jb=Math.floor((this.tableSize.height*this.spec.tileSize-this.viewSize.height)/2);
	this.tilePaddingOffset.width=sb;
	this.tilePaddingOffset.height=jb
}


;
d.prototype.configureImage=function(f,x,l)
{
	var Ag=(this.currentPanOffset.width+x)*this.spec.tileSize;
	var ci=(this.currentPanOffset.height+l)*this.spec.tileSize;
	var K=-this.tilePaddingOffset.width+Ag;
	var top=-this.tilePaddingOffset.height+ci;
	if(f.tileLeft!=K||f.tileTop!=top)
	{
		f.style.left=K+"px";
		f.style.top=top+"px";
		f.tileLeft=K;
		f.tileTop=top
	}
	
	if(!this.topLeftTile)
	{
		f.src=this.spec.emptyTileURL
	}
	
	else
	{
		var C=this.spec.getTileURL(this.topLeftTile.x+x,this.topLeftTile.y+l,this.zoomLevel);
		if(f.src!=C)
		{
			f.src=this.spec.emptyTileURL;
			f.src=C;
			f.style.display=""
		}
		
		
	}
	
	
}


;
d.prototype.onDrag=function()
{
	if(!this.topLeftTile)return;
	this.onMove();
	this.rotateTiles()
}


;
var _moveOffset=new M(0,0);
d.prototype.onMove=function()
{
	this.centerLatLng=null;
	var Aa=this.getCurrentOffset(_moveOffset);
	var x=this.topLeftTile.x*this.spec.tileSize+Math.floor(this.viewSize.width/2)+this.tilePaddingOffset.width-Aa.width;
	var l=this.topLeftTile.y*this.spec.tileSize+Math.floor(this.viewSize.height/2)+this.tilePaddingOffset.height-Aa.height;
	this.centerBitmap.x=x;
	this.centerBitmap.y=l;
	this.drawDirections(this.directions,this.directionsDiv);
	if(this.onpan)this.onpan(x,l)
}


;
var _rotateOffset=new M(0,0);
d.prototype.rotateTiles=function()
{
	var Aa=this.getCurrentOffset(_rotateOffset);
	if(Math.abs(this.dragObject.left)>10000000||Math.abs(this.dragObject.top)>10000000)
	{
		this.cancelPan();
		this.centerAtBitmap(this.centerBitmap);
		return
	}
	
	while(Aa.width<-this.tilePaddingOffset.width/2)
	{
		this.rotateRight();
		this.getCurrentOffset(Aa)
	}
	
	while(Aa.width>this.tilePaddingOffset.width/2)
	{
		this.rotateLeft();
		this.getCurrentOffset(Aa)
	}
	
	while(Aa.height<-this.tilePaddingOffset.height/2)
	{
		this.rotateDown();
		this.getCurrentOffset(Aa)
	}
	
	while(Aa.height>this.tilePaddingOffset.height/2)
	{
		this.rotateUp();
		this.getCurrentOffset(Aa)
	}
	
	
}


;
d.prototype.rotateLeft=function()
{
	this.currentPanOffset.width--;
	this.topLeftTile.x--;
	var Qa=this.tileImages.pop();
	if(Qa)
	{
		this.tileImages.unshift(Qa);
		for(var a=0;
		a<Qa.length;
		a++)
		{
			this.configureImage(Qa[a],0,a)
		}
		
		
	}
	
	
}


;
d.prototype.rotateRight=function()
{
	this.currentPanOffset.width++;
	this.topLeftTile.x++;
	var Qa=this.tileImages.shift();
	this.tileImages.push(Qa);
	var x=this.tileImages.length-1;
	for(var a=0;
	a<Qa.length;
	a++)
	{
		this.configureImage(Qa[a],x,a)
	}
	
	
}


;
d.prototype.rotateUp=function()
{
	this.currentPanOffset.height--;
	this.topLeftTile.y--;
	for(var a=0;
	a<this.tileImages.length;
	a++)
	{
		var f=this.tileImages[a].pop();
		this.tileImages[a].unshift(f);
		this.configureImage(f,a,0)
	}
	
	
}


;
d.prototype.rotateDown=function()
{
	this.currentPanOffset.height++;
	this.topLeftTile.y++;
	var l=this.tileImages[0].length-1;
	for(var a=0;
	a<this.tileImages.length;
	a++)
	{
		var f=this.tileImages[a].shift();
		this.tileImages[a].push(f);
		this.configureImage(f,a,l)
	}
	
	
}


;
d.prototype.getTotalOffset=function(c)
{
	if(!c)return new M(0,0);
	var kf=this.getTotalOffset(c.offsetParent);
	return new M(kf.width+c.offsetLeft,kf.height+c.offsetTop)
}


;
d.prototype.onDragStart=function(b)
{
	if(this.onmousedown)this.onmousedown(b)
}


;
d.prototype.onDragEnd=function(b)
{
	this.onStateChanged()
}


;
d.prototype.onDoubleClick=function(b)
{
	if(this.disableDragging)return;
	var j=this.getRelativeClickPoint(b,this.container);
	var xc=Math.floor(this.viewSize.width/2)-j.x;
	var Zb=Math.floor(this.viewSize.height/2)-j.y;
	this.pan(xc,Zb)
}


;
d.prototype.onClick=function(b)
{
	this.closeInfoWindow()
}


;
d.prototype.getRelativeClickPoint=function(b,wg,e)
{
	if(!e)e=new n();
	if(b.x||b.y)
	{
		e.x=b.x;
		e.y=b.y
	}
	
	else
	{
		var hd=this.getTotalOffset(wg);
		e.x=b.pageX-hd.width;
		e.y=b.pageY-hd.height
	}
	
	return e
}


;
d.prototype.reconfigureAllImages=function()
{
	if(this.tileImages.length==0)return;
	var Yc=new Array();
	for(var a=0;
	a<this.tileImages.length;
	a++)
	{
		for(var G=0;
		G<this.tileImages[a].length;
		G++)
		{
			f=this.tileImages[a][G];
			f.coordX=a;
			f.coordY=G;
			var Hf=Math.min(a,this.tileImages.length-a-1);
			var Te=Math.min(G,this.tileImages[a].length-G-1);
			if(Hf==0||Te==0)
			{
				f.priority=0
			}
			
			else
			{
				f.priority=Hf+Te
			}
			
			Yc.push(f)
		}
		
		
	}
	
	Yc.sort(function(Dg,Sh)
	{
		return Sh.priority-Dg.priority
	}
	
	
	);
	for(var a=0;
	a<Yc.length;
	a++)
	{
		var f=Yc[a];
		if(m.type==1)this.div.removeChild(f);
		this.configureImage(f,f.coordX,f.coordY);
		if(m.type==1)this.div.appendChild(f)
	}
	
	
}


;
d.prototype.pan=function(va,za)
{
	if(!this.topLeftTile)return;
	var Va=Math.sqrt(va*va+za*za);
	var uh=Math.max(10,Math.floor(Va/20));
	this.panSiner=new Wb(uh);
	this.panSiner.reset();
	this.panDistance.width=va;
	this.panDistance.height=za;
	this.panStart=new n(this.dragObject.left,this.dragObject.top);
	this.doPan()
}


;
d.prototype.doPan=function()
{
	var Ta=this.panSiner.next();
	this.dragObject.moveTo(this.panStart.x+this.panDistance.width*Ta,this.panStart.y+this.panDistance.height*Ta);
	this.onMove();
	if(this.panSiner.more())
	{
		this.panTimeout=this.setTimeout("this.doPan()",10);
		this.rotateTiles()
	}
	
	else
	{
		this.panTimeout=null;
		this.onStateChanged()
	}
	
	
}


;
d.prototype.cancelPan=function()
{
	if(this.panTimeout)
	{
		clearTimeout(this.panTimeout)
	}
	
	
}


;
d.prototype.recenterOrPanToLatLng=function(j)
{
	if(!this.topLeftTile)return;
	this.centerLatLng=new n(j.x,j.y);
	this.lastLatLng=this.centerLatLng;
	var j=this.spec.getBitmapCoordinate(this.centerLatLng.y,this.centerLatLng.x,this.zoomLevel);
	this.recenterOrPanToBitmap(j)
}


;
d.prototype.recenterOrPanToBitmap=function(j)
{
	if(!this.topLeftTile)return;
	var xc=this.centerBitmap.x-j.x;
	var Zb=this.centerBitmap.y-j.y;
	if(xc==0&&Zb==0)return;
	if(Math.abs(xc)<this.viewSize.width&&Math.abs(Zb)<this.viewSize.height)
	{
		this.pan(xc,Zb);
		return
	}
	
	this.centerAtBitmap(j);
	this.onStateChanged()
}


;
d.prototype.centerAndZoom=function(Hc,J)
{
	var Je=false;
	if(J!=this.zoomLevel)
	{
		var Xd=this.zoomLevel;
		this.zoomLevel=J;
		Je=true
	}
	
	this.centerAtLatLng(Hc);
	if(Je&&this.onzoom)this.onzoom(Xd,this.zoomLevel);
	this.onStateChanged()
}


;
d.prototype.centerAtLatLng=function(j)
{
	this.centerLatLng=new n(j.x,j.y);
	this.lastLatLng=this.centerLatLng;
	var j=this.spec.getBitmapCoordinate(this.centerLatLng.y,this.centerLatLng.x,this.zoomLevel);
	this.centerAtBitmap(j)
}


;
d.prototype.centerAtBitmap=function(j)
{
	this.centerBitmap.x=j.x;
	this.centerBitmap.y=j.y;
	var K=j.x-Math.floor(this.viewSize.width/2)-this.tilePaddingOffset.width;
	var top=j.y-Math.floor(this.viewSize.height/2)-this.tilePaddingOffset.height;
	var Qb=Math.floor(K/this.spec.tileSize);
	var gc=Math.floor(top/this.spec.tileSize);
	var sb=Qb*this.spec.tileSize-K;
	var jb=gc*this.spec.tileSize-top;
	if(sb<-this.tilePaddingOffset.width/2)
	{
		Qb++;
		sb+=this.spec.tileSize
	}
	
	else if(sb>this.tilePaddingOffset.width/2)
	{
		Qb--;
		sb-=this.spec.tileSize
	}
	
	if(jb<-this.tilePaddingOffset.height/2)
	{
		gc++;
		jb+=this.spec.tileSize
	}
	
	else if(jb>this.tilePaddingOffset.height/2)
	{
		gc--;
		jb-=this.spec.tileSize
	}
	
	if(!this.topLeftTile)
	{
		this.topLeftTile=new n(Qb,gc)
	}
	
	else
	{
		this.topLeftTile.x=Qb;
		this.topLeftTile.y=gc
	}
	
	this.currentPanOffset.width=0;
	this.currentPanOffset.height=0;
	this.reconfigureAllImages();
	this.repositionOverlays();
	this.dragObject.moveTo(sb,jb);
	this.onStateChanged()
}


;
d.prototype.addStateListener=function(bh)
{
	if(!this.stateListeners)this.stateListeners=new Array();
	this.stateListeners.push(bh)
}


;
d.prototype.onStateChanged=function()
{
	if(!this.topLeftTile)return;
	if(this.stateListeners)
	{
		for(var a=0;
		a<this.stateListeners.length;
		a++)
		{
			this.stateListeners[a].onMapStateChanged(this)
		}
		
		
	}
	
	
}


;
d.prototype.onResize=function(b)
{
	if(this.viewSize.width!=this.container.offsetWidth||this.viewSize.height!=this.container.offsetHeight)
	{
		this.viewSize.width=this.container.offsetWidth;
		this.viewSize.height=this.container.offsetHeight;
		this.calculateTileMeasurements();
		this.loadTileImages();
		this.centerAtBitmap(this.centerBitmap);
		if(this.onresize)this.onresize()
	}
	
	
}


;
d.prototype.getCurrentOffset=function(e)
{
	if(!e)e=new M(0,0);
	e.width=this.dragObject.left+this.currentPanOffset.width*this.spec.tileSize;
	e.height=this.dragObject.top+this.currentPanOffset.height*this.spec.tileSize;
	return e
}


;
d.prototype.switchSpecification=function(ab)
{
	if(this.spec==ab)return;
	var wd=this.spec;
	var B=this.getCenterLatLng();
	this.setSpecification(ab);
	this.div.style.backgroundColor=this.spec.backgroundColor;
	if(wd.tileSize!=ab.tileSize)
	{
		this.topLeftTile=null;
		this.initializeMap()
	}
	
	this.centerAtLatLng(B);
	if(this.onspecificationchange)this.onspecificationchange(wd,ab)
}


;
d.prototype.setSpecification=function(ab)
{
	this.spec=ab;
	var nh=new Image();
	nh.src=this.spec.emptyTileURL
}


;
d.prototype.zoomTo=function(ka)
{
	if(!this.topLeftTile)return;
	if(ka>=this.spec.numZoomLevels)
	{
		ka=this.spec.numZoomLevels-1
	}
	
	else if(ka<0)
	{
		ka=0
	}
	
	var Xd=this.zoomLevel;
	if(ka!=Xd)
	{
		var B=this.getCenterLatLng();
		this.centerAndZoom(B,ka)
	}
	
	
}


;
d.prototype.toggleTileBorders=function()
{
	if(this.tileImages)
	{
		for(var a=0;
		a<this.tileImages.length;
		a++)
		{
			if(this.tileImages[a])
			{
				for(var G=0;
				G<this.tileImages[a].length;
				G++)
				{
					var f=this.tileImages[a][G];
					if(f.hasBorder)
					{
						f.style.border="0";
						f.hasBorder=false
					}
					
					else
					{
						f.style.border="1px solid black";
						f.hasBorder=true
					}
					
					
				}
				
				
			}
			
			
		}
		
		
	}
	
	
}


;
d.prototype.addOverlay=function(ia)
{
	this.overlays.push(ia);
	this.locations.clear();
	for(var a=0;
	a<this.overlays.length;
	a++)
	{
		var ia=this.overlays[a];
		if(ia.locations)
		{
			for(var G=0;
			G<ia.locations.length;
			G++)
			{
				var r=ia.locations[G];
				if(r.icon.iconClass.name!="noicon")
				{
					this.locations.push(r)
				}
				
				
			}
			
			
		}
		
		
	}
	
	this.locations.sort(d.orderLocations);
	for(var a=0;
	a<this.locations.length;
	a++)
	{
		var r=this.locations[a];
		if(!r.marker)
		{
			r.marker=this.createLocalMarker(r);
			this.setMarkerPosition(r.marker,r.icon.iconClass,r.point)
		}
		
		r.marker.icon.style.zIndex=10+a;
		r.marker.transparentIcon.style.zIndex=30+a
	}
	
	if(this.locations.length==1)
	{
		this.clearInfoWindowArgs(r.xml);
		this.showInfoWindow(this.locations[0])
	}
	
	
}


;
function cb(X,Ib,Ua,p,Sb)
{
	this.icon=X;
	this.transparentIcon=Ib;
	this.shadow=Ua;
	this.layer=[X,Ib,Ua];
	this.map=p;
	this.mouseTarget=Sb
}


cb.prototype.addLayer=function(f)
{
	this.layer.push(f)
}


;
cb.prototype.setPosition=function(x,l)
{
	for(var a=0;
	a<this.layer.length;
	++a)
	{
		this.layer[a].style.left=yb(x);
		this.layer[a].style.top=yb(l)
	}
	
	
}


;
cb.prototype.appendTo=function(i)
{
	for(var a=0;
	a<this.layer.length;
	++a)
	{
		i.appendChild(this.layer[a])
	}
	
	
}


;
cb.prototype.removeFrom=function(i)
{
	for(var a=0;
	a<this.layer.length;
	++a)
	{
		i.removeChild(this.layer[a])
	}
	
	
}


;
cb.prototype.hide=function()
{
	for(var a=0;
	a<this.layer.length;
	++a)
	{
		this.layer[a].style.display="none"
	}
	
	
}


;
cb.prototype.show=function()
{
	for(var a=0;
	a<this.layer.length;
	++a)
	{
		this.layer[a].style.display=""
	}
	
	
}


;
cb.prototype.isVisible=function()
{
	return this.layer[0].style.display!="none"
}


;
d.prototype.createLocalMarker=function(r)
{
	var pa=this.createLocationMarker(r.icon.image,r.icon.iconClass);
	var h=this;
	pa.mouseTarget.onmousedown=function(b)
	{
		return h.onIconMouseDown(r,b)
	}
	
	
	;
	return pa
}


;
var _imageMapCounter=0;
d.prototype.createLocationMarker=function(We,s)
{
	var X=o.create(We,s.width,s.height,0,0,10,false,"noprint");
	var Ib=o.create(ki,s.width,s.height,0,0,30,false,"noprint");
	var Ua=o.create(s.shadowURL,s.shadowWidth,s.height,0,0,3,false,"noprint");
	var ag=m.type==2?"ff":"ie";
	var Qf=zb.create(We.replace(/\.png$/,ag+".gif"),s.width,s.height,0,0,10,false,"noscreen");
	var kg=s.shadowURL.replace(/[^\/]*$/,"dithshadow.gif");
	var Ig=zb.create(kg,s.shadowWidth,s.height,0,0,3,false,"noscreen");
	var p=null;
	var Sb=Ib;
	if(m.type==2)
	{
		var lf="map"+_imageMapCounter;
		_imageMapCounter++;
		p=document.createElement("map");
		p.setAttribute("name",lf);
		var z=document.createElement("area");
		z.setAttribute("shape","poly");
		z.setAttribute("alt","");
		z.setAttribute("coords",s.imageMap);
		z.setAttribute("href","javascript:void(0)");
		Sb=z;
		p.appendChild(z);
		this.div.appendChild(p);
		Ib.setAttribute("usemap","#"+lf)
	}
	
	else
	{
		Sb.style.cursor="pointer"
	}
	
	var Dc=new cb(X,Ib,Ua,p,Sb);
	Dc.addLayer(Qf);
	if(m.type!=2)
	{
		Dc.addLayer(Ig)
	}
	
	Dc.appendTo(this.div);
	return Dc
}


;
d.prototype.clearOverlays=function()
{
	this.lastPageCenter=this.getCenterLatLng();
	this.lastPageZoom=this.zoomLevel;
	for(var a=0;
	a<this.locations.length;
	a++)
	{
		var r=this.locations[a];
		r.marker.removeFrom(this.div);
		if(r.marker.map)this.div.removeChild(r.marker.map);
		r.marker=null
	}
	
	this.closeInfoWindow();
	this.overlays.clear();
	this.locations.clear();
	this.directions=null;
	this.drawDirections(null,this.directionsDiv)
}


;
d.prototype.getDivCoordinate=function(x,l,e)
{
	if(!e)e=new n(0,0);
	var Oh=x-this.topLeftTile.x*this.spec.tileSize-this.tilePaddingOffset.width+this.currentPanOffset.width*this.spec.tileSize;
	var zg=l-this.topLeftTile.y*this.spec.tileSize-this.tilePaddingOffset.height+this.currentPanOffset.height*this.spec.tileSize;
	e.x=Oh;
	e.y=zg;
	return e
}


;
d.orderLocations=function(af,Ae)
{
	if(af.point.y>Ae.point.y)return-1;
	if(af.point.y<Ae.point.y)return 1;
	return 0
}


;
d.prototype.repositionOverlays=function()
{
	for(var a=0;
	a<this.locations.length;
	a++)
	{
		var Sa=this.locations[a];
		this.setMarkerPosition(Sa.marker,Sa.icon.iconClass,Sa.point)
	}
	
	this.drawDirections(this.directions,this.directionsDiv,true);
	if(!this.disablePopups)
	{
		this.repositionInfoWindow();
		if(m.type!=1&&this.infoWindow.hasMask())this.addMarkersToInfoWindowMask()
	}
	
	
}


;
d.prototype.setMarkerPosition=function(pa,s,If)
{
	var Pb=this.spec.getBitmapCoordinate(If.y,If.x,this.zoomLevel);
	var wc=this.getDivCoordinate(Pb.x,Pb.y);
	var x=wc.x-s.pointCoord.x;
	var l=wc.y-s.pointCoord.y;
	pa.setPosition(x,l)
}


;
d.prototype.loadVPage=function(E,Bf,Ng)
{
	this.clearOverlays();
	var B=Bf?Bf:E.center;
	var P=Ng;
	if(P==null&&E.viewSpan)
	{
		P=this.spec.getLowestZoomLevel(E.viewSpan,this.viewSize.width,this.viewSize.height)
	}
	
	this.lastPageZoom=P;
	this.lastPageCenter=B;
	if(B)
	{
		if(!this.topLeftTile||P!=null&&P!=this.zoomLevel)
		{
			if(!P)P=4;
			this.centerAndZoom(B,P)
		}
		
		else
		{
			this.recenterOrPanToLatLng(B)
		}
		
		
	}
	
	for(var a=0;
	a<E.overlays.length;
	a++)
	{
		this.addOverlay(E.overlays[a])
	}
	
	this.directions=E.directions;
	this.drawDirections(this.directions,this.directionsDiv);
	this.onStateChanged()
}


;
d.prototype.registerKeyHandlers=function(C)
{
	if(m.type==1)
	{
		C.onkeydown=this.eventHandler("onKeyPress");
		C.onkeyup=this.eventHandler("onKeyUp")
	}
	
	else
	{
		C.addEventListener("keypress",this.eventHandler("onKeyPress"),false);
		C.addEventListener("keyup",this.eventHandler("onKeyUp"),false)
	}
	
	
}


;
d.prototype.onKeyPress=function(b)
{
	if(this.ignoreKeyEvent(b))return true;
	switch(b.keyCode)
	{
		case 38:case 40:case 37:case 39:this.panKeys.add(b.keyCode);
		this.startContinuousPan();
		return false;
		case 34:this.pan(0,-Math.floor(this.viewSize.height*0.75));
		return false;
		case 33:this.pan(0,Math.floor(this.viewSize.height*0.75));
		return false;
		case 36:this.pan(Math.floor(this.viewSize.width*0.75),0);
		return false;
		case 35:this.pan(-Math.floor(this.viewSize.width*0.75),0);
		return false;
		case 187:case 107:this.zoomTo(this.zoomLevel-1);
		return false;
		case 189:case 109:this.zoomTo(this.zoomLevel+1);
		return false
	}
	
	switch(b.which)
	{
		case 61:case 43:this.zoomTo(this.zoomLevel-1);
		return false;
		case 45:case 95:this.zoomTo(this.zoomLevel+1);
		return false
	}
	
	return true
}


;
d.prototype.onKeyUp=function(b)
{
	switch(b.keyCode)
	{
		case 38:case 40:case 37:case 39:this.panKeys.remove(b.keyCode);
		return false
	}
	
	
}


;
d.prototype.ignoreKeyEvent=function(b)
{
	if(b.ctrlKey||(b.altKey||b.metaKey))return true;
	if(b.target&&(b.target.nodeName=="INPUT"&&b.target.getAttribute("type").toLowerCase()=="text"||b.target.nodeName=="TEXTAREA"))
	{
		return true
	}
	
	return false
}


;
d.prototype.startContinuousPan=function()
{
	if(!this.topLeftTile)return;
	this.cancelPan();
	if(!this.continuousPanTimeout)
	{
		this.panSiner=new Wb(100);
		this.continuousPanTimeout=this.setTimeout("this.doContinuousPan()",5)
	}
	
	
}


;
d.prototype.doContinuousPan=function()
{
	if(this.panKeys.size>0)
	{
		var Qd=(this.panKeys.contains(37)?1:0)+(this.panKeys.contains(39)?-1:0);
		var te=(this.panKeys.contains(38)?1:0)+(this.panKeys.contains(40)?-1:0);
		var Ta=1;
		if(this.panSiner.more())Ta=this.panSiner.next();
		var fb=Qd>0?Math.floor:Math.ceil;
		var va=fb(7*Ta*Qd+5*Qd);
		fb=te>0?Math.floor:Math.ceil;
		var za=fb(7*Ta*te+5*te);
		this.dragObject.moveTo(this.dragObject.left+va,this.dragObject.top+za);
		this.onMove();
		this.rotateTiles();
		this.continuousPanTimeout=this.setTimeout("this.doContinuousPan()",10)
	}
	
	else
	{
		this.continuousPanTimeout=null;
		this.onStateChanged()
	}
	
	
}


;
d.prototype.onWindowBlur=function(b)
{
	if(this.panKeys.size>0)
	{
		this.panKeys=new sc()
	}
	
	
}


;
d.prototype.onIconMouseDown=function(r,b)
{
	aa(b);
	if(this.onmousedown)this.onmousedown();
	this.clearInfoWindowArgs(r.xml);
	this.showInfoWindow(r)
}


;
d.prototype.clearInfoWindowArgs=function(da)
{
	da.setAttribute("arg0","");
	da.setAttribute("arg1","");
	da.setAttribute("arg2","")
}


;
d.prototype.infoWindowNavigate=function(Mg,Qe,Jf,Ye)
{
	if(!this.openLocation||this.disablePopups)return;
	if(Qe)this.openLocation.xml.setAttribute("arg0",Qe);
	if(Jf)this.openLocation.xml.setAttribute("arg1",Jf);
	if(Ye)this.openLocation.xml.setAttribute("arg2",Ye);
	this.onInfoWindowLoad=Mg;
	this.showInfoWindow(this.openLocation)
}


;
var _infoBitmapCoord=new n(0,0);
var _infoDivCoord=new n(0,0);
d.prototype.showInfoWindow=function(r)
{
	if(this.disablePopups)return;
	if(!r.infoStyle)return;
	this.openLocation=r;
	var W=this.spec.getBitmapCoordinate(r.point.y,r.point.x,this.zoomLevel,_infoBitmapCoord);
	var ya=this.getDivCoordinate(W.x,W.y,_infoDivCoord);
	this.infoWindow.point=r.point;
	this.infoWindow.iconClass=r.icon.iconClass;
	var h=this;
	var Be=function()
	{
		h.showSizedInfoWindow(ya.x,ya.y,r.icon.iconClass)
	}
	
	
	;
	if(m.type!=3)
	{
		Z.asynchronousTransform(r.xml,this.infoWindow.offscreenArea,r.infoStyle,Be)
	}
	
	else
	{
		r.toHTML(this.infoWindow.offscreenArea);
		Be()
	}
	
	
}


;
d.prototype.addMarkersToInfoWindowMask=function()
{
	if(this.disablePopups||(!this.infoWindow.isVisible()||!this.infoWindow.point))return;
	this.infoWindow.clearMaskMap();
	var Da=new n(this.infoWindow.getOffsetLeft(),this.infoWindow.getOffsetTop());
	var hb=new n(Da.x+this.infoWindow.getTotalWidth(),Da.y+this.infoWindow.getTotalHeight());
	for(var a=0;
	a<this.locations.length;
	a++)
	{
		var pa=this.locations[a].marker;
		if(pa.icon.offsetTop>hb.y)break;
		this.addMarkerToInfoWindowMask(Da,hb,pa)
	}
	
	if(this.directionsMarkersAreVisible())
	{
		this.addMarkerToInfoWindowMask(Da,hb,this.directionsStart);
		this.addMarkerToInfoWindowMask(Da,hb,this.directionsEnd)
	}
	
	
}


;
d.prototype.addMarkerToInfoWindowMask=function(Da,hb,pa)
{
	var X=pa.icon;
	if(X.offsetLeft+X.width>=Da.x&&(X.offsetLeft<=hb.x&&(X.offsetTop+X.height>=Da.y&&X.offsetTop<=hb.y)))
	{
		var ne=N.get("local").translateImageMapArray(X.offsetLeft-Da.x,X.offsetTop-Da.y);
		this.infoWindow.addAreaToMaskMap(ne,pa.mouseTarget.onmousedown)
	}
	
	
}


;
d.prototype.showSizedInfoWindow=function(x,l,s,ad)
{
	qa.invalidate("infoWindowOffscreen");
	var yc=qa.create("infoWindowOffscreen");
	this.infoWindow.prepareOffscreen();
	var p=this;
	var Bh=function()
	{
		if(yc.isValid())
		{
			p.infoWindow.flipOffscreenArea();
			p.infoWindow.sizeToContent(ad);
			p.infoWindow.positionAt(x,l,s);
			if(m.type!=1&&p.infoWindow.hasMask())p.addMarkersToInfoWindowMask();
			p.infoWindow.show();
			p.panToInfoWindow();
			if(p.onInfoWindowLoad)
			{
				p.onInfoWindowLoad();
				p.onInfoWindowLoad=null
			}
			
			
		}
		
		
	}
	
	
	;
	window.setTimeout(Bh,0)
}


;
d.prototype.showMapBlowup=function(j,s)
{
	if(this.disablePopups)return;
	var W=this.spec.getBitmapCoordinate(j.y,j.x,this.zoomLevel,_infoBitmapCoord);
	var ya=this.getDivCoordinate(W.x,W.y,_infoDivCoord);
	this.infoWindow.point=j;
	this.infoWindow.iconClass=s?s:N.get("noicon");
	var R=document.createElement("div");
	R.style.border="1px solid silver";
	R.style.width="200px";
	R.style.height="200px";
	var jd=new d(R,this.spec,200,200,true,true);
	jd.directions=this.directions;
	jd.centerAndZoom(j,1);
	this.onspecificationchange=function(wd,ab)
	{
		jd.switchSpecification(ab)
	}
	
	
	;
	this.infoWindow.clearOffscreenArea();
	this.infoWindow.offscreenArea.appendChild(R);
	this.showSizedInfoWindow(ya.x,ya.y,this.infoWindow.iconClass,203);
	return jd
}


;
d.prototype.createSpecChangeLink=function(p,Fb,Ub)
{
	var Qg=function()
	{
		p.switchSpecification(Ub)
	}
	
	
	;
	return Yg(Fb,Qg)
}


;
d.prototype.onInfoCloseClick=function(b)
{
	this.closeInfoWindow()
}


;
d.prototype.closeInfoWindow=function()
{
	if(!this.disablePopups)
	{
		this.infoWindow.hide();
		if(this.oninfowindowclose)this.oninfowindowclose()
	}
	
	
}


;
d.prototype.panToInfoWindow=function()
{
	if(this.disablePopups)return;
	var W=this.spec.getBitmapCoordinate(this.infoWindow.point.y,this.infoWindow.point.x,this.zoomLevel,_infoBitmapCoord);
	var ya=this.getDivCoordinate(W.x,W.y,_infoDivCoord);
	var ma=new n(this.centerBitmap.x,this.centerBitmap.y);
	var K=this.infoWindow.left+(W.x-ya.x);
	var top=this.infoWindow.top+(W.y-ya.y);
	var Pf=Math.floor(this.viewSize.width/2);
	var td=Math.floor(this.viewSize.height/2);
	ma.y=Math.min(ma.y,top+td-25);
	ma.y=Math.max(ma.y,W.y-td+25);
	var fc=25;
	var Ef=W.y-this.infoWindow.getTotalHeightAboveGround()-(ma.y-td);
	if(Ef<55)fc=fc+50;
	else if(Ef<295)fc=fc+35;
	ma.x=Math.min(ma.x,K+Pf-fc);
	ma.x=Math.max(ma.x,K+this.infoWindow.getTotalWidth()-Pf+25);
	this.centerLatLng=null;
	this.recenterOrPanToBitmap(ma)
}


;
d.prototype.repositionInfoWindow=function()
{
	if(this.disablePopups||(!this.infoWindow.isVisible()||!this.infoWindow.point))return;
	var j=this.infoWindow.point;
	var W=this.spec.getBitmapCoordinate(j.y,j.x,this.zoomLevel,_infoBitmapCoord);
	var ya=this.getDivCoordinate(W.x,W.y,_infoDivCoord);
	this.infoWindow.positionAt(ya.x,ya.y,this.infoWindow.iconClass)
}


;
var _csStartPoint=new n(0,0);
var _csStartDivPoint=new n(0,0);
var _csBitmapPoint=new n(0,0);
d.prototype.getVMLPathString=function(y)
{
	I.start("Map","getVMLPathString");
	var u=new Array();
	u.push("m");
	u.push(y.polyline.points[0]);
	u.push(y.polyline.points[1]);
	u.push("l");
	u=u.concat(y.polyline.points);
	for(var a=0;
	a<y.segments.length;
	a++)
	{
		var V=y.segments[a].pointIndex<<1;
		var id=V+4;
		var Oe=u[id];
		var Ff=u[id+1];
		u[id]=Oe+" "+Ff+" e m";
		u[id+1]=Oe+" "+Ff+" l"
	}
	
	u.push("e");
	var str=u.join(" ");
	I.end("Map","getVMLPathString");
	return str
}


;
d.prototype.createRawVML=function(re,i,c)
{
	I.start("Map","createRawVML");
	var ua;
	var li=false;
	if(!c)
	{
		c=document.createElement("v:shape");
		ua=document.createElement("v:stroke");
		c.appendChild(ua);
		c.path=re;
		li=true
	}
	
	else
	{
		i.removeChild(c);
		ua=c.firstChild
	}
	
	var qb=this.centerBitmap;
	var uc=this.getDivCoordinate(qb.x,qb.y,_csStartDivPoint);
	c.unselectable="on";
	c.strokecolor="blue";
	c.strokeweight=5;
	c.fill=false;
	c.filled=false;
	var g=100;
	var k=100;
	c.style.position="absolute";
	c.style.width=g+"px";
	c.style.height=k+"px";
	c.style.left=uc.x+"px";
	c.style.top=uc.y-k+"px";
	c.style.rotation="-90";
	var Hc=this.getCenterLatLng();
	var Od=Hc.y*100000+" "+Hc.x*100000;
	c.coordorigin=Od;
	var Pe=this.spec.getPixelsPerDegree(this.zoomLevel);
	c.coordsize=100000*k/Pe.y+" "+100000*g/Pe.x;
	ua.joinstyle="round";
	ua.endcap="round";
	ua.opacity=0.45;
	I.end("Map","createRawVML");
	i.appendChild(c);
	return c
}


;
d.prototype.getBitmapVectors=function(eb,v,A)
{
	if(!v)v=new Array();
	if(!A)A=new U();
	A.minX=Infinity;
	A.minY=Infinity;
	A.maxX=-Infinity;
	A.maxY=-Infinity;
	for(var a=0;
	a<eb.length;
	)
	{
		var Ka=eb[a++];
		var Pa=eb[a++];
		var ha=this.spec.getBitmapCoordinate(Ka,Pa,this.zoomLevel,_csStartPoint);
		ha.x=Math.round(ha.x);
		ha.y=Math.round(ha.y);
		v.push(ha.x);
		v.push(ha.y);
		if(ha.x<A.minX)A.minX=ha.x;
		if(ha.y<A.minY)A.minY=ha.y;
		if(ha.x>A.maxX)A.maxX=ha.x;
		if(ha.y>A.maxY)A.maxY=ha.y
	}
	
	return v
}


;
d.prototype.getVectorPath=function(v,A)
{
	var u=new Array();
	var ic;
	var hc;
	for(var a=0;
	a<v.length;
	)
	{
		var ib=v[a++];
		var mb=v[a++];
		var Hb=v[a++];
		var xb=v[a++];
		if(mb!=ic||ib!=hc)
		{
			u.push("m");
			u.push(ib);
			u.push(mb);
			u.push("l")
		}
		
		u.push(Hb);
		u.push(xb);
		ic=xb;
		hc=Hb
	}
	
	u.push("e");
	return u.join(" ")
}


;
d.prototype.getEncodedImageSource=function(v,A)
{
	var u=new Array();
	var hc;
	var ic;
	for(var a=0;
	a<v.length;
	)
	{
		var ib=v[a++];
		var mb=v[a++];
		var Hb=v[a++];
		var xb=v[a++];
		if(ib==Hb&&mb==xb)
		{
			continue
		}
		
		if(ib!=hc||mb!=ic)
		{
			if(u.length>0)
			{
				Mb(9999,u)
			}
			
			Mb(ib-A.minX,u);
			Mb(mb-A.minY,u)
		}
		
		Mb(Hb-ib,u);
		Mb(xb-mb,u);
		ic=xb;
		hc=Hb
	}
	
	Mb(9999,u);
	return u.join("")
}


;
d.prototype.createVectorSegments=function(rb,Ab,La,fa)
{
	I.start("Map","createVectorSegments");
	var eb=rb.getVectors(Ab,La);
	var v=new Array();
	var ea=new U();
	this.getBitmapVectors(eb,v,ea);
	if(!fa)
	{
		fa=new U()
	}
	
	var Ca=new U(Math.max(fa.minX,ea.minX),Math.max(fa.minY,ea.minY),Math.min(fa.maxX,ea.maxX),Math.min(fa.maxY,ea.maxY));
	var c;
	if(v.length>0)
	{
		var qb=this.centerBitmap;
		var uc=this.getDivCoordinate(qb.x,qb.y,_csStartDivPoint);
		c=document.createElement("v:shape");
		c.unselectable="on";
		c.strokecolor="blue";
		c.strokeweight=5;
		c.fill=false;
		c.filled=false;
		var g=1;
		var k=1;
		c.style.position="absolute";
		c.style.width=g+"px";
		c.style.height=k+"px";
		c.style.left=uc.x+"px";
		c.style.top=uc.y+"px";
		var Od=qb.x+" "+qb.y;
		c.coordorigin=Od;
		c.coordsize=g+" "+k;
		c.path=this.getVectorPath(v,Ca);
		var ua=document.createElement("v:stroke");
		ua.joinstyle="round";
		ua.endcap="round";
		ua.opacity=0.45;
		c.appendChild(ua)
	}
	
	else
	{
		c=document.createElement("div")
	}
	
	c.sourceBounds=fa;
	I.end("Map","createVectorSegments");
	return c
}


;
d.prototype.createImageSegments=function(rb,Ab,La,fa)
{
	I.start("Map","createImageSegments");
	var u;
	var Ca;
	do
	{
		var eb=rb.getVectors(Ab,La);
		var v=new Array();
		var ea=new U();
		this.getBitmapVectors(eb,v,ea);
		ea.minX-=10;
		ea.minY-=10;
		ea.maxX+=10;
		ea.maxY+=10;
		if(!fa)
		{
			fa=new U()
		}
		
		Ca=new U(Math.max(fa.minX,ea.minX),Math.max(fa.minY,ea.minY),Math.min(fa.maxX,ea.maxX),Math.min(fa.maxY,ea.maxY));
		u=this.getEncodedImageSource(v,Ca);
		++La
	}
	
	while(u.length>900);
	var c;
	if(u.length>0)
	{
		var hf=this.getDivCoordinate(Ca.minX,Ca.minY,_csStartDivPoint);
		var g=Math.ceil(Ca.maxX-Ca.minX);
		var k=Math.ceil(Ca.maxY-Ca.minY);
		var C="http://www.google.com/maplinedraw?width="+g+"&height="+k+"&path="+u;
		nd('<a href="'+C.xmlEscape()+'">'+C.xmlEscape()+"</a>",0);
		if(m.type!=1)
		{
			g=null;
			k=null
		}
		
		var xa=m.type==2?"noprint":null;
		c=o.create(C,g,k,hf.x,hf.y,0,false,xa)
	}
	
	else
	{
		c=document.createElement("div")
	}
	
	c.sourceBounds=fa;
	I.end("Map","createImageSegments");
	return c
}


;
d.prototype.drawDirections=function(y,O,oh)
{
	if(!y&&!O.directions)return;
	var Zf=this.getBoundsBitmap();
	var ca=O.directionsBounds;
	if(!oh)
	{
		if(y==O.directions)
		{
			if(ca.containsBounds(Zf))
			{
				return
			}
			
			
		}
		
		
	}
	
	if(O.directions!=y)
	{
		while(O.hasChildNodes())
		{
			O.removeChild(O.lastChild)
		}
		
		O.directions=y;
		if(y&&(m.type==1&&(!this.forceImageSegments&&y.polyline.points.length<16000)))
		{
			var re=this.getVMLPathString(y);
			O.path=re
		}
		
		else
		{
			O.path=null
		}
		
		
	}
	
	if(y)
	{
		I.start("Map","drawDirections");
		var c=null;
		var Me=900;
		var g=Math.min(this.viewSize.width,Me);
		var k=Math.min(this.viewSize.height,Me);
		if(m.type==1&&!this.forceImageSegments)
		{
			g=5000;
			k=5000
		}
		
		ca.minX=this.centerBitmap.x-g;
		ca.minY=this.centerBitmap.y-k;
		ca.maxX=this.centerBitmap.x+g;
		ca.maxY=this.centerBitmap.y+k;
		var wa=this.spec.getLatLng(ca.minX,ca.minY,this.zoomLevel);
		var ra=this.spec.getLatLng(ca.maxX,ca.maxY,this.zoomLevel);
		var Ab=new U(wa.x,ra.y,ra.x,wa.y);
		if(O.path)
		{
			c=null;
			if(O.hasChildNodes())
			{
				c=O.firstChild
			}
			
			c=this.createRawVML(O.path,O,c)
		}
		
		else
		{
			while(O.hasChildNodes())
			{
				O.removeChild(O.lastChild)
			}
			
			var La=0;
			var Ma=new M(y.polyline.minTolerance,y.polyline.minTolerance);
			while(La<y.polyline.numLevels)
			{
				Ma.width*=y.polyline.zoomFactor;
				Ma.height*=y.polyline.zoomFactor;
				if(this.zoomLevel<this.spec.getLowestZoomLevel(Ma,2,2))
				{
					break
				}
				
				++La
			}
			
			if(m.type==1&&!this.forceImageSegments)
			{
				c=this.createVectorSegments(y.polyline,Ab,La,ca)
			}
			
			else
			{
				c=this.createImageSegments(y.polyline,Ab,La,ca)
			}
			
			O.appendChild(c)
		}
		
		c.style.zIndex=2;
		this.drawDirectionsMarkers();
		I.end("Map","drawDirections")
	}
	
	else
	{
		ca.minX=-Infinity;
		ca.minY=-Infinity;
		ca.maxX=Infinity;
		ca.maxY=Infinity;
		this.hideDirectionsMarkers()
	}
	
	
}


;
var hh=q+"dd-start.png";
var Kg=q+"dd-end.png";
d.prototype.drawDirectionsMarkers=function()
{
	if(!this.directionsStart||!this.directionsEnd)
	{
		this.directionsStart=this.createLocationMarker(hh,N.get("local"));
		this.directionsEnd=this.createLocationMarker(Kg,N.get("local"));
		var h=this;
		this.directionsStart.mouseTarget.onmousedown=function(b)
		{
			aa(b);
			h.showDirectionsStart()
		}
		
		
		;
		this.directionsEnd.mouseTarget.onmousedown=function(b)
		{
			aa(b);
			h.showDirectionsEnd()
		}
		
		
		
	}
	
	this.setMarkerPosition(this.directionsStart,N.get("local"),this.directions.polyline.getPoint(0));
	var tb=(this.directions.polyline.points.length>>1)-1;
	this.setMarkerPosition(this.directionsEnd,N.get("local"),this.directions.polyline.getPoint(tb));
	this.directionsStart.show();
	this.directionsEnd.show();
	var Ad=0;
	var Wd=0;
	if(this.directions.polyline.getPoint(0).y<this.directions.polyline.getPoint(tb).y)
	{
		Ad=1
	}
	
	else
	{
		Wd=1
	}
	
	this.directionsStart.icon.style.zIndex=10+Ad;
	this.directionsStart.transparentIcon.style.zIndex=30+Ad;
	this.directionsEnd.icon.style.zIndex=10+Wd;
	this.directionsEnd.transparentIcon.style.zIndex=30+Wd
}


;
d.prototype.showDirectionsStart=function()
{
	if(!this.directions)return;
	this.showMapBlowup(this.directions.polyline.getPoint(0),N.get("local"))
}


;
d.prototype.showDirectionsEnd=function()
{
	if(!this.directions)return;
	var tb=(this.directions.polyline.points.length>>1)-1;
	this.showMapBlowup(this.directions.polyline.getPoint(tb),N.get("local"))
}


;
d.prototype.showDirectionsStep=function(Kb)
{
	if(!this.directions)return;
	var j=this.directions.polyline.getPoint(Kb.pointIndex);
	var Bb=this.showMapBlowup(j);
	if(Kb.pointIndex!=0)
	{
		var Za=Bb.getDirIndicatorAngle(Kb.pointIndex);
		var ji=Bb.getDirIndicatorPath(Za);
		var Rb=12*Math.cos(Za);
		var jc=12*Math.sin(Za);
		Rb=Math.floor(-12-Rb);
		jc=Math.floor(-12-jc);
		var Pb=Bb.spec.getBitmapCoordinate(j.y,j.x,Bb.zoomLevel);
		var wc=Bb.getDivCoordinate(Pb.x,Pb.y);
		var pa=o.create(ji,24,24,wc.x+Rb,wc.y+jc,2,false);
		Bb.div.appendChild(pa)
	}
	
	
}


;
d.prototype.getDirIndicatorAngle=function(V)
{
	var Za=0;
	if(V>1)
	{
		var la=this.directions.polyline.getPoint(V-2);
		var na=this.directions.polyline.getPoint(V);
		la=this.spec.getBitmapCoordinate(la.y,la.x,this.zoomLevel);
		na=this.spec.getBitmapCoordinate(na.y,na.x,this.zoomLevel);
		Za=Math.atan2(na.y-la.y,na.x-la.x)
	}
	
	return Za
}


;
var di=q+"dir_";
d.prototype.getDirIndicatorPath=function(Za)
{
	var Xb=Math.round(Za*60/Math.PI)*3+90;
	while(Xb>=120)Xb-=120;
	while(Xb<0)Xb+=120;
	var C=di+Xb+".png";
	return C
}


;
d.prototype.hideDirectionsMarkers=function()
{
	if(this.directionsStart&&this.directionsEnd)
	{
		this.directionsStart.hide();
		this.directionsEnd.hide()
	}
	
	
}


;
d.prototype.directionsMarkersAreVisible=function()
{
	return this.directionsStart&&(this.directionsEnd&&(this.directionsStart.isVisible()&&this.directionsEnd.isVisible()))
}


;
d.prototype.createMapControl=function()
{
	var Y=document.createElement("div");
	this.createPanningControls(Y);
	this.createZoomControls(Y);
	this.createZoomSlider(Y);
	return Y
}


;
var xh=q+"zoom-plus.png";
var rh=q+"zoom-minus.png";
var vh=q+"sliderbar.png";
var ch=q+"slider.png";
d.prototype.createZoomControls=function(Y)
{
	var h=this;
	var Zc=o.create(xh,17,17,20,70,1,false);
	Zc.style.cursor="pointer";
	Zc.onclick=function(b)
	{
		h.zoomTo(h.zoomLevel-1);
		aa(b)
	}
	
	
	;
	Zc.title="Zoom in";
	Y.appendChild(Zc);
	var bd=o.create(rh,17,17,20,260,1,false);
	bd.style.cursor="pointer";
	bd.onclick=function(b)
	{
		h.zoomTo(h.zoomLevel+1);
		aa(b)
	}
	
	
	;
	bd.title="Zoom out";
	Y.appendChild(bd)
}


;
var Jg=q+"center.png";
var Fh=q+"east.png";
var ph=q+"west.png";
var Rf=q+"north.png";
var Ch=q+"south.png";
var Vh=q+"panshadow.png";
d.prototype.createPanningControls=function(Y)
{
	var h=this;
	var Ua=o.create(Vh,59,64,0,0,0,false);
	Y.appendChild(Ua);
	var Fc=o.create(Rf,17,17,20,0,1,false);
	Fc.style.cursor="pointer";
	Fc.onclick=function(b)
	{
		h.pan(0,Math.floor(h.viewSize.height*0.5));
		aa(b)
	}
	
	
	;
	Fc.title="Go up";
	Y.appendChild(Fc);
	var Ic=o.create(Fh,17,17,40,20,1,false);
	Ic.style.cursor="pointer";
	Ic.onclick=function(b)
	{
		h.pan(-Math.floor(h.viewSize.width*0.5),0);
		aa(b)
	}
	
	
	;
	Ic.title="Go right";
	Y.appendChild(Ic);
	var qd=o.create(Ch,17,17,20,40,1,false);
	qd.style.cursor="pointer";
	qd.onclick=function(b)
	{
		h.pan(0,-Math.floor(h.viewSize.height*0.5));
		aa(b)
	}
	
	
	;
	qd.title="Go down";
	Y.appendChild(qd);
	var Wc=o.create(ph,17,17,0,20,1,false);
	Wc.style.cursor="pointer";
	Wc.onclick=function(b)
	{
		h.pan(Math.floor(h.viewSize.width*0.5),0);
		aa(b)
	}
	
	
	;
	Wc.title="Go left";
	Y.appendChild(Wc);
	var B=o.create(Jg,17,17,20,20,1,false);
	B.style.cursor="pointer";
	B.onclick=function(b)
	{
		if(h.lastPageCenter)
		{
			if(h.lastPageZoom!=h.zoomLevel)
			{
				h.centerAndZoom(h.lastPageCenter,h.lastPageZoom)
			}
			
			else
			{
				h.recenterOrPanToLatLng(h.lastPageCenter)
			}
			
			
		}
		
		else if(h.lastLatLng)
		{
			h.recenterOrPanToLatLng(this.map.lastLatLng)
		}
		
		aa(b)
	}
	
	
	;
	B.title="Return to the last result";
	Y.appendChild(B)
}


;
var Eg=q+"slidershadow.png";
d.prototype.createZoomSlider=function(Y)
{
	var Ua=o.create(Eg,19,215,20,64,0,false);
	Y.appendChild(Ua);
	var Ia=document.createElement("div");
	Ia.style.position="absolute";
	Ia.style.left="21px";
	Ia.style.top="90px";
	Ia.style.width="15px";
	Ia.style.height="167px";
	var rd=o.create(vh,15,167,0,0,1,false);
	Ia.appendChild(rd);
	var rc=-1*Math.floor(3.5)+1;
	var ge=o.create(ch,22,14,rc,this.getRelativeZoomSliderPos(),2,false);
	ge.title="Drag to zoom";
	Ia.appendChild(ge);
	Y.appendChild(Ia);
	var A=new U(rc,1,rc+22,166);
	var Gd=new Na(ge,rc,this.getRelativeZoomSliderPos(),A);
	this.onzoom=function()
	{
		Gd.moveTo(rc,h.getRelativeZoomSliderPos())
	}
	
	
	;
	var h=this;
	Gd.ondragend=function()
	{
		var Qh=Gd.top+Math.floor(5.5);
		h.zoomTo(h.getZoomFromRelativeCoord(Qh))
	}
	
	
	;
	rd.style.cursor="pointer";
	rd.title="Click to set zoom level";
	rd.onclick=function(b)
	{
		var l;
		if(window.event)
		{
			l=window.event.offsetY
		}
		
		else
		{
			var hd=h.getTotalOffset(Ia);
			l=b.pageY-hd.height-2
		}
		
		aa(b);
		h.zoomTo(h.getZoomFromRelativeCoord(l))
	}
	
	
	
}


;
d.prototype.getRelativeZoomSliderPos=function()
{
	return 1+this.zoomLevel*11
}


;
d.prototype.getZoomFromRelativeCoord=function(l)
{
	var P=Math.floor((l-1)/11);
	return Math.max(0,Math.min(this.spec.numZoomLevels-1,P))
}


;
d.prototype.showCopyright=function()
{
	var fe=this.createCopyright("&copy;
	2005 Google");
	fe.style.left="3px";
	fe.style.bottom="3px";
	this.container.appendChild(fe);
	var zd=this.createCopyright("Map data &copy;
	2005 NAVTEQ&trade;
	, TeleAtlas");
	zd.style.right="3px";
	zd.style.bottom="3px";
	this.container.appendChild(zd)
}


;
d.prototype.createCopyright=function(T)
{
	var i=document.createElement("div");
	i.style.position="absolute";
	i.style.cursor="default";
	i.unselectable="on";
	i.onselectstart=Td;
	i.innerHTML=T;
	i.style.fontSize="11px";
	i.style.fontFamily="Arial, sans serif";
	Nb(i,"noselect");
	return i
}


;
function pc(p)
{
	this.anchorLevel=null;
	this.anchor=new n(0,0);
	this.spec=null;
	this.span=new M(Infinity,Infinity);
	this.points=null;
	this.map=p;
	this.map.addStateListener(this);
	this.map.onresize=this.eventHandler("onMapResize")
}


var _bPoint=new n(0,0);
pc.prototype.onMapStateChanged=function()
{
	if(this.anchorLevel!=this.map.zoomLevel||this.spec!=this.map.spec)
	{
		this.reset();
		this.addPoint(0,0,true);
		return
	}
	
	var B=this.map.getCenterLatLng(_bPoint);
	var Uc=Math.round((B.x-this.anchor.x)/this.span.width);
	var od=Math.round((B.y-this.anchor.y)/this.span.height);
	this.addPoint(Uc,od,true)
}


;
pc.prototype.onMapResize=function()
{
	this.reset();
	this.addPoint(0,0,false)
}


;
pc.prototype.reset=function()
{
	this.map.getCenterLatLng(this.anchor);
	this.map.getSpanLatLng(this.span);
	this.spec=this.map.spec;
	this.anchorLevel=this.map.zoomLevel;
	this.points=new Object()
}


;
pc.prototype.addPoint=function(Uc,od,Wg)
{
	var str=Uc+","+od;
	if(this.points[str])return;
	this.points[str]=1;
	if(Wg)
	{
		var w=new Ja();
		w.setAllMapValues(this.map);
		var Ud=_bPoint;
		Ud.x=this.anchor.x+Uc*this.span.width;
		Ud.y=this.anchor.y+od*this.span.height;
		w.setValue("vp",w.getLatLngArg(Ud));
		var ga=w.getURL();
		nd('<a href="'+ga.xmlEscape()+'">'+ga.xmlEscape()+"</a>",0);
		(new Image()).src=ga
	}
	
	
}


;
function Na(C,K,top,R)
{
	this.src=C;
	this.container=R;
	this.ondragstart=null;
	this.ondrag=null;
	this.ondragend=null;
	this.onmove=null;
	this.onclick=null;
	this.disabled=false;
	this.dragPoint=new n(0,0);
	this.clickStartPos=new n(0,0);
	this.src.style.position="absolute";
	this.moveTo(K,top);
	this.mouseDownHandler=this.eventHandler("onMouseDown");
	this.mouseMoveHandler=this.eventHandler("onMouseMove");
	this.mouseUpHandler=this.eventHandler("onMouseUp");
	if(m.type==2)
	{
		window.addEventListener("mouseout",this.eventHandler("onWindowMouseOut"),false)
	}
	
	this.eventSrc=this.src.setCapture?this.src:window;
	if(this.src.addEventListener)
	{
		this.src.addEventListener("mousedown",this.mouseDownHandler,false)
	}
	
	else
	{
		this.src.onmousedown=this.mouseDownHandler
	}
	
	
}


Na.prototype.moveTo=function(K,top)
{
	if(this.left!=K||this.top!=top)
	{
		this.left=K;
		this.top=top;
		this.src.style.left=this.left+"px";
		this.src.style.top=this.top+"px";
		if(this.onmove)this.onmove()
	}
	
	
}


;
Na.prototype.onMouseDown=function(b)
{
	if(b.cancelDrag)
	{
		return
	}
	
	var Ph=m.type==2?b.button==0:b.button==1;
	if(this.disabled||!Ph)
	{
		aa(b);
		return false
	}
	
	this.dragPoint.x=b.screenX;
	this.dragPoint.y=b.screenY;
	if(window.addEventListener)
	{
		this.eventSrc.addEventListener("mousemove",this.mouseMoveHandler,false);
		this.eventSrc.addEventListener("mouseup",this.mouseUpHandler,false)
	}
	
	else
	{
		this.eventSrc.onmousemove=this.mouseMoveHandler;
		this.eventSrc.onmouseup=this.mouseUpHandler
	}
	
	if(this.src.setCapture)this.src.setCapture();
	this.clickStartTime=(new Date()).getTime();
	this.clickStartPos.x=b.screenX;
	this.clickStartPos.y=b.screenY;
	if(this.ondragstart)this.ondragstart(b);
	this.originalCursor=this.src.style.cursor;
	this.src.style.cursor="move";
	aa(b)
}


;
Na.prototype.onMouseMove=function(b)
{
	if(m.os==1)
	{
		if(b==null)return;
		if(this.dragDisabled)
		{
			this.savedMove=new Object();
			this.savedMove.screenX=b.screenX;
			this.savedMove.screenY=b.screenY;
			return
		}
		
		this.setTimeout("this.dragDisabled = false;
		this.onMouseMove(this.savedMove)",30);
		this.dragDisabled=true;
		this.savedMove=null
	}
	
	var we=1;
	if(m.type==3&&m.version==1)
	{
		we=-1
	}
	
	var x=this.left+(b.screenX-this.dragPoint.x);
	var l=this.top+(b.screenY-this.dragPoint.y)*we;
	var va=0;
	var za=0;
	if(this.container)
	{
		var Ec=x;
		if(x<this.container.minX)
		{
			Ec=this.container.minX
		}
		
		else
		{
			var ed=this.container.maxX-this.src.offsetWidth;
			if(x>ed)
			{
				Ec=ed
			}
			
			
		}
		
		va=Ec-x;
		x=Ec;
		var Qc=l;
		if(l<this.container.minY)
		{
			Qc=this.container.minY
		}
		
		else
		{
			var Jc=this.container.maxY-this.src.offsetHeight;
			if(l>Jc)Qc=Jc
		}
		
		za=Qc-l;
		l=Qc
	}
	
	this.moveTo(x,l);
	this.dragPoint.x=b.screenX+va;
	this.dragPoint.y=b.screenY+za;
	if(this.ondrag)this.ondrag(b)
}


;
Na.prototype.onMouseUp=function(b)
{
	if(this.eventSrc.removeEventListener)
	{
		this.eventSrc.removeEventListener("mousemove",this.mouseMoveHandler,false);
		this.eventSrc.removeEventListener("mouseup",this.mouseUpHandler,false)
	}
	
	else
	{
		this.eventSrc.onmousemove=null;
		this.eventSrc.onmouseup=null
	}
	
	this.src.style.cursor=this.originalCursor;
	if(document.releaseCapture)document.releaseCapture();
	if(this.ondragend)this.ondragend(b);
	if(this.onclick)
	{
		var fh=(new Date()).getTime();
		if(fh-this.clickStartTime<=500&&(Math.abs(this.clickStartPos.x-b.screenX)<=2&&Math.abs(this.clickStartPos.y-b.screenY)<=2))
		{
			this.onclick(b)
		}
		
		
	}
	
	
}


;
Na.prototype.onWindowMouseOut=function(b)
{
	if(!b.relatedTarget)this.onMouseUp(b)
}


;
Na.prototype.disable=function()
{
	this.disabled=true
}


;
Na.prototype.enable=function()
{
	this.disabled=false
}


;
var ke="centerlat";
var me="centerlng";
function H(bb,Ya,Bc,Tc,B,Zg,dg,Gh,jg,z,Sc,y,nb,da)
{
	this.query=bb;
	this.title=Ya;
	this.error=Bc;
	this.spelling=Tc;
	this.center=B;
	this.viewSpan=Zg;
	this.searchCenter=dg;
	this.searchSpan=Gh;
	this.ads=jg;
	this.area=z;
	this.overlays=Sc;
	this.directions=y;
	this.debug=nb;
	this.xml=da
}


function Yb(kd,Sg,da)
{
	this.locations=kd;
	this.panelStyle=Sg;
	this.xml=da
}


function Lc(F,j,X,Hg,da)
{
	this.id=F;
	this.point=j;
	this.icon=X;
	this.infoStyle=Hg;
	this.xml=da
}


function se(f,s)
{
	this.image=f;
	this.iconClass=s
}


function Tb(rb,Oc,da)
{
	this.polyline=rb;
	this.segments=Oc;
	this.xml=da
}


function Ld(F,ue,V)
{
	this.id=F;
	this.description=ue;
	this.pointIndex=V
}


function N(ja,g,k,vg,Wh,og,kh,Gg,Cd)
{
	this.name=ja;
	this.width=g;
	this.height=k;
	this.pointCoord=vg;
	this.infoTipCoord=Wh;
	this.shadowTipCoord=og;
	this.shadowURL=kh;
	this.shadowWidth=Gg;
	this.imageMapArray=Cd;
	if(this.imageMapArray)
	{
		this.imageMap=this.imageMapArray.join(",")
	}
	
	else
	{
		this.imageMap=null
	}
	
	
}


N.prototype.translateImageMapArray=function(x,l)
{
	var Ra="";
	for(var a=0;
	a<this.imageMapArray.length;
	a+=2)
	{
		Ra+=this.imageMapArray[a]+x+","+(this.imageMapArray[a+1]+l)+(a<this.imageMapArray.length-2?",":"")
	}
	
	return Ra
}


;
N.classes=new Object();
N.load=function(s)
{
	N.classes[s.name]=s
}


;
N.get=function(ja)
{
	return N.classes[ja]
}


;
H.loadFromXML=function(c)
{
	I.start("Page","loadFromXML");
	var bb=null;
	var xf=c.getElementsByTagName("query");
	if(xf.length>0)
	{
		bb=H.getNodeValue(xf[0])
	}
	
	var Ya=null;
	var Ue=c.getElementsByTagName("title");
	if(Ue.length>0)
	{
		Ya=H.getNodeValue(Ue[0])
	}
	
	var Bc=null;
	var zf=c.getElementsByTagName("error");
	if(zf.length>0)
	{
		Bc=zf[0]
	}
	
	var Tc=null;
	var xe=c.getElementsByTagName("spelling");
	if(xe.length>0)
	{
		Tc=xe[0]
	}
	
	var B=null;
	var Nd=c.getElementsByTagName("center");
	if(Nd.length>0)
	{
		B=new n(parseFloat(Nd[0].getAttribute("lng")),parseFloat(Nd[0].getAttribute("lat")))
	}
	
	var Ma=null;
	var Bd=c.getElementsByTagName("span");
	if(Bd.length>0)
	{
		Ma=new M(parseFloat(Bd[0].getAttribute("lng")),parseFloat(Bd[0].getAttribute("lat")))
	}
	
	var Kf=null;
	var ee=c.getElementsByTagName("searchcenter");
	if(ee.length>0)
	{
		Kf=new n(parseFloat(ee[0].getAttribute("lng")),parseFloat(ee[0].getAttribute("lat")))
	}
	
	var jf=null;
	var Hd=c.getElementsByTagName("searchspan");
	if(Hd.length>0)
	{
		jf=new M(parseFloat(Hd[0].getAttribute("lng")),parseFloat(Hd[0].getAttribute("lat")))
	}
	
	var Sc=new Array();
	var gf=c.getElementsByTagName("overlay");
	for(var a=0;
	a<gf.length;
	a++)
	{
		Sc.push(Yb.loadFromXML(gf[a]))
	}
	
	var y=null;
	var Df=c.getElementsByTagName("directions");
	if(Df.length>0)
	{
		y=Tb.loadFromXML(Df[0])
	}
	
	var nb=null;
	var of=c.getElementsByTagName("debug");
	if(of.length>0)
	{
		nb=H.getNodeValue(of[0])
	}
	
	I.end("Page","loadFromXML");
	return new H(bb,Ya,Bc,Tc,B,Ma,Kf,jf,null,null,Sc,y,nb,c)
}


;
Yb.loadFromXML=function(c)
{
	var kd=new Array();
	var He=c.getElementsByTagName("location");
	for(var a=0;
	a<He.length;
	a++)
	{
		kd.push(Lc.loadFromXML(He[a]))
	}
	
	return new Yb(kd,c.getAttribute("panelStyle"),c)
}


;
Yb.prototype.getLocationById=function(F)
{
	for(var a=0;
	a<this.locations.length;
	a++)
	{
		if(this.locations[a].id==F)return this.locations[a]
	}
	
	return null
}


;
Lc.loadFromXML=function(c)
{
	var yf=c.getElementsByTagName("point")[0];
	var j=new n(parseFloat(yf.getAttribute("lng")),parseFloat(yf.getAttribute("lat")));
	var fi=c.getElementsByTagName("icon")[0];
	var X=se.loadFromXML(fi);
	return new Lc(c.getAttribute("id"),j,X,c.getAttribute("infoStyle"),c)
}


;
se.loadFromXML=function(c)
{
	var s=N.get(c.getAttribute("class"));
	if(s)
	{
		return new se(c.getAttribute("image"),s)
	}
	
	else
	{
		return null
	}
	
	
}


;
Tb.loadFromXML=function(c)
{
	var dd=c.getElementsByTagName("polyline")[0];
	var Og=H.getNodeValue(dd.getElementsByTagName("points")[0]);
	var yd=H.getNodeValue(dd.getElementsByTagName("levels")[0]);
	var ie=parseInt(dd.getAttribute("numLevels"));
	var Dd=parseInt(dd.getAttribute("zoomFactor"));
	var rb=new Lb(Og,yd,ie,Dd);
	var Oc=new Array();
	var mi=c.getElementsByTagName("segments")[0];
	var Re=mi.getElementsByTagName("segment");
	for(var a=0;
	a<Re.length;
	++a)
	{
		Oc.push(Ld.loadFromXML(Re[a]))
	}
	
	return new Tb(rb,Oc,c)
}


;
Tb.prototype.getSegmentById=function(F)
{
	for(var a=0;
	a<this.segments.length;
	a++)
	{
		if(this.segments[a].id==F)return this.segments[a]
	}
	
	return null
}


;
Ld.loadFromXML=function(c)
{
	var F=c.getAttribute("id");
	var V=parseInt(c.getAttribute("pointIndex"));
	var ue=H.getNodeValue(c);
	return new Ld(F,ue,V)
}


;
H.getNodeValue=function(D)
{
	if(m.type==1)return D.text;
	var Q="";
	if(D.nodeType==3||D.nodeType==4)return D.nodeValue;
	if(D.nodeType==1)
	{
		for(var Ea=D.firstChild;
		Ea!=null;
		Ea=Ea.nextSibling)
		{
			Q+=H.getNodeValue(Ea)
		}
		
		
	}
	
	return Q
}


;
var gg=q+"iws_nw.png";
var ei=q+"iws_n.png";
var yh=q+"iws_ne.png";
var qg=q+"iws_e.png";
var hg=q+"iws_c.png";
var lh=q+"iws_w.png";
var sg=q+"iws_sw.png";
var ff=q+"iws_s.png";
var mg=q+"iws_se.png";
var fg=q+"iws_tap.png";
var Jh=q+"iw_nw.png";
var mh=q+"iw_n.png";
var zh=q+"iw_ne.png";
var tg=q+"iw_e.png";
var yg=q+"iw_c.png";
var th=q+"iw_w.png";
var Lh=q+"iw_sw.png";
var cf=q+"iw_s.png";
var Uf=q+"iw_se.png";
var eh=q+"iw_tap.png";
function t(Dh,Kh,Cf,bg,Wf)
{
	this.oncloseclick=Kh;
	this.createWindow(bg);
	this.createShadow(Wf);
	if(m.type!=1)
	{
		this.createMask()
	}
	
	else
	{
		this.maskPng=null
	}
	
	this.createContentArea(Dh);
	this.createCloseButton();
	Cf.appendChild(this.windowDiv);
	Cf.appendChild(this.shadowDiv);
	this.setSize(208,69);
	this.hide()
}


t.prototype.setContentSize=function(g,k)
{
	this.setSize(g-(this.window.w.width-15)*2,k-(this.window.n.height-15)*2)
}


;
t.prototype.setSize=function(g,k)
{
	if(g<0)g=0;
	if(k<0)k=0;
	this.width=g;
	this.height=k;
	this.setWindowSize(g,k);
	this.setShadowSize(g,k);
	if(this.hasMask())this.setMaskSize();
	this.closeButton.style.left=this.getTotalWidth()-this.closeButton.width-10-1+"px";
	this.closeButton.style.top="10px"
}


;
t.prototype.getWindowHeight=function()
{
	return this.window.c.height+2*this.window.n.height
}


;
t.prototype.getTotalHeight=function()
{
	return this.height+this.window.pointer.height+this.window.n.height
}


;
t.prototype.getTotalHeightAboveGround=function()
{
	return this.getTotalHeight()+(this.iconClass.pointCoord.y-this.iconClass.infoTipCoord.y)
}


;
t.prototype.getTotalShadowHeight=function()
{
	return Math.floor(this.height/4)+this.shadow.pointer.height+this.shadow.nw.height
}


;
t.prototype.getTotalWidth=function()
{
	return this.width+this.window.w.width+this.window.e.width
}


;
t.prototype.getOffsetLeft=function()
{
	return this.windowDiv.offsetLeft
}


;
t.prototype.getOffsetTop=function()
{
	return this.windowDiv.offsetTop
}


;
t.prototype.setWindowSize=function(g,k)
{
	this.window.n.style.width=g+"px";
	this.window.e.style.height=k+"px";
	this.window.c.style.width=g+"px";
	this.window.c.style.height=k+"px";
	this.window.w.style.height=k+"px";
	var Ha=this.calculatePointerOffset(g);
	this.window.s1.style.width=Ha+"px";
	this.window.pointer.style.left=Ha+this.window.sw.width+"px";
	this.window.s2.style.left=Ha+this.window.pointer.width+this.window.sw.width+"px";
	this.window.s2.style.width=g-Ha-this.window.pointer.width+"px";
	var Gb=g+this.window.w.width+"px";
	this.window.ne.style.left=Gb;
	this.window.e.style.left=Gb;
	this.window.se.style.left=Gb;
	var ta=k+this.window.n.height+"px";
	this.window.sw.style.top=ta;
	this.window.s1.style.top=ta;
	this.window.pointer.style.top=ta;
	this.window.s2.style.top=ta;
	this.window.se.style.top=ta
}


;
t.prototype.setShadowSize=function(g,k)
{
	g-=15;
	var ob=Math.floor(k/4);
	var Gb=g+this.shadow.nw.width;
	var Ha=this.calculatePointerOffset(g)-41;
	var ta=ob+this.shadow.n.height+"px";
	var sd=ob+this.shadow.nw.height;
	this.shadow.s1Div.style.width=Ha+"px";
	this.shadow.pointer.style.left=Ha+this.shadow.sw.width+"px";
	this.shadow.s2Div.style.left=Ha+this.shadow.pointer.width+this.shadow.sw.width+"px";
	this.shadow.s2Div.style.width=g-Ha-this.shadow.pointer.width+"px";
	this.shadow.sw.style.top=ta;
	this.shadow.s1Div.style.top=ta;
	this.shadow.pointer.style.top=ta;
	this.shadow.s2Div.style.top=ta;
	this.shadow.se.style.top=ta;
	this.shadow.se.style.left=Gb+"px";
	var Ze=this.shadow.nw.height;
	var nf=Math.floor(k/2);
	this.shadow.wDiv.style.height=ob+"px";
	this.shadow.wDiv.style.left=Ze+"px";
	this.shadow.wDiv.style.width=nf+"px";
	this.shadow.w.style.left=ob-this.shadow.w.width+80+"px";
	var mf=this.shadow.nw.height+g+70;
	this.shadow.eDiv.style.height=ob+"px";
	this.shadow.eDiv.style.left=mf+"px";
	this.shadow.eDiv.style.width=k+"px";
	this.shadow.e.style.left=ob-this.shadow.w.width+80+"px";
	var Ge=Ze+nf;
	this.shadow.cDiv.style.width=mf-Ge+"px";
	this.shadow.cDiv.style.height=ob+"px";
	this.shadow.cDiv.style.left=Ge+"px";
	this.shadow.nw.style.left=sd+"px";
	this.shadow.nDiv.style.width=g-30+"px";
	this.shadow.nDiv.style.left=sd+this.shadow.nw.width+"px";
	this.shadow.ne.style.left=Gb+sd-30+"px"
}


;
t.prototype.setMaskSize=function()
{
	this.maskPng.style.width=this.getTotalWidth()+"px";
	this.maskPng.style.height=this.getTotalHeight()+"px";
	var Af=this.getTotalWidth();
	var Kc=this.getWindowHeight();
	var Vg=this.getTotalHeight();
	var oe=this.window.pointer.offsetLeft;
	var ig=oe+this.window.pointer.width;
	var Sf=oe+53;
	var xg=oe+4;
	var Oa=",";
	var p=this.getMaskMap();
	var z=p.firstChild;
	z.setAttribute("coords","0,0,0,"+Kc+Oa+Sf+Oa+Kc+Oa+xg+Oa+Vg+Oa+ig+Oa+Kc+Oa+Af+Oa+Kc+Oa+Af+",0")
}


;
t.prototype.hide=function()
{
	if(this.windowDiv)this.windowDiv.style.display="none";
	this.shadowDiv.style.display="none"
}


;
t.prototype.show=function()
{
	this.windowDiv.style.display="";
	this.shadowDiv.style.display="";
	this.windowDiv.style.visibility="visible";
	this.shadowDiv.style.visibility="visible";
	this.contentArea.style.visibility="visible"
}


;
t.prototype.isVisible=function()
{
	return this.windowDiv.style.display!="none"
}


;
t.prototype.sizeToContent=function(ad)
{
	var g=ad?ad:this.contentArea.offsetWidth;
	var k=this.contentArea.offsetHeight;
	this.setContentSize(Math.max(g,183),k)
}


;
t.prototype.positionAt=function(x,l,s)
{
	var Rb=this.calculatePointerOffset(this.width)+this.window.w.width+5;
	var jc=this.height+this.window.n.height+this.window.s1.height;
	this.left=x-Rb;
	this.top=l-jc;
	this.left+=s.infoTipCoord.x-s.pointCoord.x;
	this.top+=s.infoTipCoord.y-s.pointCoord.y;
	this.windowDiv.style.left=this.left+"px";
	this.windowDiv.style.top=this.top+"px";
	var qf=0;
	var wf=this.getTotalHeight()-this.getTotalShadowHeight();
	qf+=s.shadowTipCoord.x-s.infoTipCoord.x;
	wf+=s.shadowTipCoord.y-s.infoTipCoord.y;
	this.shadowDiv.style.left=this.left+qf+"px";
	this.shadowDiv.style.top=this.top+wf+"px"
}


;
t.prototype.calculatePointerOffset=function(g)
{
	return Math.floor(g/4)
}


;
t.prototype.createCroppingDiv=function(f)
{
	var i=window.document.createElement("div");
	i.style.overflow="hidden";
	i.style.position="absolute";
	i.style.width=f.width+"px";
	i.style.height=f.height+"px";
	i.style.left=f.style.left;
	i.style.top=f.style.top;
	i.style.zIndex=f.style.zIndex;
	f.style.left="0px";
	f.style.top="0px";
	i.appendChild(f);
	return i
}


;
t.prototype.createWindow=function(Ga)
{
	this.window=new Object();
	this.window.nw=o.create(Jh,25,25,0,0,0,false);
	this.window.n=o.create(mh,640,25,this.window.nw.width,0,0,true);
	this.window.ne=o.create(zh,25,25,0,0,0,false);
	this.window.w=o.create(th,25,640,0,this.window.nw.height,0,true);
	this.window.c=o.create(yg,640,640,this.window.w.width,this.window.n.height,0,true);
	this.window.e=o.create(tg,25,640,0,this.window.ne.height,0,true);
	this.window.sw=o.create(Lh,25,96,0,0,0,false);
	this.window.s1=o.create(cf,640,96,this.window.sw.width,0,0,true);
	this.window.pointer=o.create(eh,98,96,0,0,0,false);
	this.window.s2=o.create(cf,640,96,0,0,0,true);
	this.window.se=o.create(Uf,25,96,0,0,0,false);
	this.window.nw.onmousedown=this.onMouseDown;
	this.window.n.onmousedown=this.onMouseDown;
	this.window.ne.onmousedown=this.onMouseDown;
	this.window.w.onmousedown=this.onMouseDown;
	this.window.c.onmousedown=this.onMouseDown;
	this.window.e.onmousedown=this.onMouseDown;
	this.window.sw.onmousedown=this.onMouseDown;
	this.window.s1.onmousedown=this.onMouseDown;
	this.window.pointer.onmousedown=this.onMouseDown;
	this.window.s2.onmousedown=this.onMouseDown;
	this.window.se.onmousedown=this.onMouseDown;
	this.windowDiv=window.document.createElement("div");
	this.windowDiv.style.position="absolute";
	this.windowDiv.style.left="0px";
	this.windowDiv.style.top="0px";
	this.windowDiv.style.zIndex=Ga;
	Nb(this.windowDiv,"infowindow");
	this.windowDiv.appendChild(this.window.nw);
	this.windowDiv.appendChild(this.window.n);
	this.windowDiv.appendChild(this.window.ne);
	this.windowDiv.appendChild(this.window.w);
	this.windowDiv.appendChild(this.window.c);
	this.windowDiv.appendChild(this.window.e);
	this.windowDiv.appendChild(this.window.sw);
	this.windowDiv.appendChild(this.window.s1);
	this.windowDiv.appendChild(this.window.pointer);
	this.windowDiv.appendChild(this.window.s2);
	this.windowDiv.appendChild(this.window.se)
}


;
t.prototype.createShadow=function(Ga)
{
	this.shadow=new Object();
	this.shadow.nw=o.create(gg,70,30,0,0,0,false);
	this.shadow.n=o.create(ei,640,30,this.shadow.nw.width,0,0,false);
	this.shadow.ne=o.create(yh,70,30,0,0,0,false);
	this.shadow.w=o.create(lh,360,280,0,this.shadow.nw.height,0,false);
	this.shadow.c=o.create(hg,640,640,this.shadow.w.width,this.shadow.n.height,0,false);
	this.shadow.e=o.create(qg,360,280,0,this.shadow.ne.height,0,false);
	this.shadow.sw=o.create(sg,70,60,0,0,0,false);
	this.shadow.s1=o.create(ff,320,60,this.shadow.sw.width,0,0,false);
	this.shadow.pointer=o.create(fg,140,60,0,0,0,false);
	this.shadow.s2=o.create(ff,320,60,0,0,0,false);
	this.shadow.se=o.create(mg,70,60,0,0,0,false);
	this.shadow.nDiv=this.createCroppingDiv(this.shadow.n);
	this.shadow.wDiv=this.createCroppingDiv(this.shadow.w);
	this.shadow.eDiv=this.createCroppingDiv(this.shadow.e);
	this.shadow.s1Div=this.createCroppingDiv(this.shadow.s1);
	this.shadow.s2Div=this.createCroppingDiv(this.shadow.s2);
	this.shadow.cDiv=this.createCroppingDiv(this.shadow.c);
	this.shadowDiv=window.document.createElement("div");
	this.shadowDiv.style.position="absolute";
	this.shadowDiv.style.left="0px";
	this.shadowDiv.style.top="0px";
	this.shadowDiv.style.zIndex=0;
	this.shadowDiv.style.zIndex=Ga;
	Nb(this.shadowDiv,"infowindow");
	this.shadowDiv.appendChild(this.shadow.nw);
	this.shadowDiv.appendChild(this.shadow.nDiv);
	this.shadowDiv.appendChild(this.shadow.ne);
	this.shadowDiv.appendChild(this.shadow.wDiv);
	this.shadowDiv.appendChild(this.shadow.cDiv);
	this.shadowDiv.appendChild(this.shadow.eDiv);
	this.shadowDiv.appendChild(this.shadow.sw);
	this.shadowDiv.appendChild(this.shadow.s1Div);
	this.shadowDiv.appendChild(this.shadow.pointer);
	this.shadowDiv.appendChild(this.shadow.s2Div);
	this.shadowDiv.appendChild(this.shadow.se)
}


;
t.prototype.hasMask=function()
{
	return this.maskPng!=null
}


;
t.prototype.getMaskMap=function()
{
	return document.getElementById(this.maskMapId)
}


;
var Hh=q+"transparent.gif";
var Se=0;
t.prototype.createMask=function()
{
	var p=document.createElement("map");
	this.maskMapId="iwMap"+Se;
	p.setAttribute("id",this.maskMapId);
	p.setAttribute("name",this.maskMapId);
	Se++;
	this.windowDiv.appendChild(p);
	var z=document.createElement("area");
	z.setAttribute("shape","poly");
	z.setAttribute("coords","");
	z.setAttribute("href","");
	z.onclick=function()
	{
		return false
	}
	
	
	;
	z.onmousedown=this.onmousedown;
	p.appendChild(z);
	for(var a=0;
	a<10;
	a++)
	{
		var z=document.createElement("area");
		z.setAttribute("shape","poly");
		z.setAttribute("coords","");
		z.setAttribute("href","javascript:void(0)");
		z.onclick=function()
		{
			return false
		}
		
		
		;
		p.appendChild(z)
	}
	
	this.maskPng=o.create(Hh,0,0,0,0,0,false);
	this.windowDiv.appendChild(this.maskPng);
	this.maskPng.setAttribute("usemap","#"+this.maskMapId);
	this.nextMaskArea=1
}


;
t.prototype.addAreaToMaskMap=function(ne,cg)
{
	if(this.hasMask())
	{
		var p=this.getMaskMap();
		if(this.nextMaskArea<p.childNodes.length)
		{
			var z=p.childNodes[this.nextMaskArea];
			z.setAttribute("coords",ne);
			z.onmousedown=cg;
			this.nextMaskArea++
		}
		
		
	}
	
	
}


;
t.prototype.clearMaskMap=function()
{
	if(this.hasMask())
	{
		var p=this.getMaskMap();
		for(var a=1;
		a<p.childNodes.length;
		a++)
		{
			var z=p.childNodes[a];
			z.setAttribute("coords","");
			z.onmousedown=null
		}
		
		this.nextMaskArea=1
	}
	
	
}


;
t.prototype.getMaskLeft=function()
{
	return this.windowDiv.offsetLeft
}


;
t.prototype.getMaskTop=function()
{
	return this.windowDiv.offsetTop
}


;
t.prototype.createContentArea=function(g)
{
	var i=window.document.createElement("div");
	i.style.width=g;
	i.style.position="absolute";
	i.style.left="15px";
	i.style.top="15px";
	i.style.zIndex=3;
	i.style.cursor="auto";
	i.onmousedown=this.onMouseDown;
	this.windowDiv.appendChild(i);
	this.contentArea=i;
	this.contentArea.onmousedown=this.onMouseDown;
	i=window.document.createElement("div");
	i.style.width=g;
	i.style.position="absolute";
	i.style.left="15px";
	i.style.top="15px";
	i.style.zIndex=3;
	i.style.cursor="auto";
	i.style.visibility="hidden";
	this.windowDiv.appendChild(i);
	this.offscreenArea=i;
	this.offscreenArea.onmousedown=this.onMouseDown
}


;
t.prototype.prepareOffscreen=function()
{
	if(this.windowDiv.style.display=="none")
	{
		this.windowDiv.style.display="";
		this.shadowDiv.style.display="";
		this.windowDiv.style.visibility="hidden";
		this.shadowDiv.style.visibility="hidden";
		this.contentArea.style.visibility="hidden";
		this.offscreenArea.style.visibility="hidden"
	}
	
	
}


;
t.prototype.clearOffscreenArea=function()
{
	ah(this.offscreenArea)
}


;
t.prototype.flipOffscreenArea=function()
{
	var Zd=this.offscreenArea;
	this.offscreenArea=this.contentArea;
	this.contentArea=Zd;
	this.contentArea.style.visibility="visible";
	this.offscreenArea.style.visibility="hidden";
	this.clearOffscreenArea()
}


;
t.prototype.onMouseDown=function(b)
{
	if(b)
	{
		b.cancelDrag=true
	}
	
	else
	{
		aa(b)
	}
	
	
}


;
var Th=q+"close.gif";
t.prototype.createCloseButton=function()
{
	this.closeButton=zb.create(Th,14,13,null,null,4,null,null);
	this.closeButton.style.position="absolute";
	this.closeButton.style.cursor="pointer";
	this.closeButton.onmousedown=this.eventHandler("onCloseMouseDown");
	this.windowDiv.appendChild(this.closeButton)
}


;
t.prototype.onCloseMouseDown=function(b)
{
	aa(b);
	if(this.oncloseclick)this.oncloseclick(b)
}


;
var Mc=new n(-98.35,39.5);
var oa=new Array();
var _i;
for(_i=0;
_i<[131072,65536,32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8].length;
_i++)
{
	oa.push(new n([131072,65536,32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8][_i]*0.77162458338772,[131072,65536,32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8][_i]))
}

var Lg=q+"transparent.gif";
var Xg=q+"water.gif";
function gb(Ee)
{
	this.tileSize=128;
	this.backgroundColor="#f2efe9";
	this.emptyTileURL=Lg;
	this.numZoomLevels=oa.length;
	if(Ee)
	{
		this.baseURL=Ee
	}
	
	else
	{
		this.baseURL="http://mt.google.com/mt?";
		if(window._tv&&window._tv.length>0)
		{
			this.baseURL+="v="+encodeURIComponent(window._tv)+"&"
		}
		
		
	}
	
	
}


var Cc=new gb();
gb.prototype.getBitmapCoordinate=function(Ka,Pa,J,e)
{
	if(!e)e=new n(0,0);
	var x=Pa-Mc.x;
	var l=Mc.y-Ka;
	e.x=Math.floor(x*oa[J].x);
	e.y=Math.floor(l*oa[J].y);
	return e
}


;
gb.prototype.getLatLng=function(x,l,J,e)
{
	if(!e)e=new n(0,0);
	x/=oa[J].x;
	l/=oa[J].y;
	e.x=x+Mc.x;
	e.y=Mc.y-l;
	return e
}


;
gb.prototype.getTileCoordinate=function(Ka,Pa,J,e)
{
	var tc=this.getBitmapCoordinate(Ka,Pa,J,e);
	tc.x=Math.floor(tc.x/this.tileSize);
	tc.y=Math.floor(tc.y/this.tileSize);
	return tc
}


;
gb.prototype.getTileURL=function(x,l,J)
{
	if(x<Jb[J].minX||(x>Jb[J].maxX||(l<Jb[J].minY||l>Jb[J].maxY)))
	{
		return Xg
	}
	
	return this.baseURL+"x="+x+"&y="+l+"&zoom="+J
}


;
gb.prototype.getLowestZoomLevel=function(vf,Ce,Le)
{
	Ce+=4;
	Le+=4;
	for(var a=0;
	a<oa.length;
	a++)
	{
		if(oa[a].x*vf.width<=Ce&&oa[a].y*vf.height<=Le)
		{
			return a
		}
		
		
	}
	
	return oa.length-1
}


;
gb.prototype.getPixelsPerDegree=function(J)
{
	return oa[J]
}


;
var Jb=new Array();
for(_i=0;
_i<9;
_i++)
{
	Jb.push(new U(-Infinity,-Infinity,Infinity,Infinity))
}

for(_i=9;
_i<oa.length;
_i++)
{
	var wa=Cc.getTileCoordinate(85,-179.5,_i);
	var ra=Cc.getTileCoordinate(12,-50,_i);
	Jb.push(new U(wa.x,wa.y,ra.x,ra.y))
}

function ih(gd)
{
	if(window.clipboardData)
	{
		gd.onpaste=bi;
		gd.ondrop=Cg
	}
	
	return true
}


function bi(b)
{
	var nc=document.selection;
	if(nc)
	{
		var Cb=nc.createRange();
		if(Cb)
		{
			var Fb=window.clipboardData.getData("Text");
			if(Fb)
			{
				Cb.text=Ne(Fb,null);
				return false
			}
			
			
		}
		
		
	}
	
	return true
}


var Ac=null;
function Cg(b)
{
	if(!b)b=window.event;
	if(b.dataTransfer)
	{
		Ac=Ne(b.dataTransfer.getData("Text"),null);
		setTimeout("_finishDrop()",1)
	}
	
	return true
}


function _finishDrop()
{
	if(!Ac)return;
	var nc=document.selection;
	if(nc)
	{
		var Cb=nc.createRange();
		if(Cb)
		{
			Cb.text=Ac;
			Cb.select()
		}
		
		
	}
	
	Ac=null
}


function Ne(str,Fd)
{
	if(!Fd)Fd=", ";
	var Ra=str.replace(/^[ \r\n\t\v]+/g,"");
	Ra=Ra.replace(/[ \r\n\t\v]+$/g,"");
	Ra=Ra.replace(/[ \t\v]*\r?\n[\r\n]*[ \t\v]*/g,Fd);
	return Ra
}


function _pastebox(gd)
{
	ih(gd)
}


;
function L(Sd,Pd,xd,Jd,Id)
{
	this.map=null;
	this.mapContainer=Sd;
	this.panel=Pd;
	this.metaPanel=xd;
	this.permalink=Jd;
	this.feedbackLink=Id;
	this.urlMaker=new Ja();
	this.loadIconClasses();
	le(window,"resize",this.eventHandler("resizeMapView"));
	le(window,"beforeprint",this.eventHandler("beforePrint"));
	le(window,"afterprint",this.eventHandler("afterPrint"));
	this.resizeMapView()
}


L.prototype.beforePrint=function()
{
	var Lf=this.mapContainer.offsetWidth/window.screen.logicalXDPI;
	var Md=7;
	var uf=this.mapContainer.offsetHeight/window.screen.logicalYDPI;
	var Nf=5;
	var P=Md/Lf;
	if(uf*P>Nf)
	{
		P=Nf/uf
	}
	
	var ef=Lf*P;
	if(ef<Md)
	{
		var Nh=Math.floor(ef/Md*100);
		this.mapContainer.style.width=Nh+"%"
	}
	
	else
	{
		this.mapContainer.style.width="100%"
	}
	
	this.mapContainer.style.zoom=P;
	this.panel.style.zoom=0.8
}


;
L.prototype.afterPrint=function()
{
	this.mapContainer.style.zoom=1;
	this.mapContainer.style.width="auto";
	this.panel.style.zoom=1
}


;
L.prototype.loadMap=function(ni)
{
	this.map=new d(this.mapContainer,Cc);
	this.map.registerKeyHandlers(window.document);
	this.createMapControl();
	this.map.showCopyright();
	new pc(this.map,this);
	this.map.addStateListener(this)
}


;
L.prototype.createMapControl=function()
{
	var lc=this.map.createMapControl();
	lc.style.position="absolute";
	lc.style.left="8px";
	lc.style.top="8px";
	Nb(lc,"noprint");
	this.mapContainer.appendChild(lc)
}


;
L.prototype.onMapStateChanged=function()
{
	try
	{
		if(this.vpageDoc)
		{
			var B=this.map.getCenterLatLng();
			this.vpageDoc.getElementById(ke).value=B.y;
			this.vpageDoc.getElementById(me).value=B.x;
			this.vpageDoc.getElementById("zoom").value=this.map.zoomLevel
		}
		
		var ga=this.getPageURL();
		this.permalink.href=ga;
		this.feedbackLink.href="http://www.google.com/support/maps/bin/request.py?url="+encodeURIComponent(ga)+"&ua="+encodeURIComponent(navigator.userAgent)
	}
	
	catch(b)
	{
		
	}
	
	
}


;
var _windowSizeStorage;
L.prototype.resizeMapView=function()
{
	var Ah=this.getWindowSize(_windowSizeStorage);
	var k=Ah.height-qh(this.mapContainer)-10;
	this.mapContainer.style.height=k+"px";
	if(this.map)this.map.onResize()
}


;
L.prototype.getWindowSize=function(e)
{
	if(!e)e=new M(0,0);
	if(window.self&&self.innerWidth)
	{
		e.width=self.innerWidth;
		e.height=self.innerHeight;
		return e
	}
	
	if(document.documentElement&&document.documentElement.clientHeight)
	{
		e.width=document.documentElement.clientWidth;
		e.height=document.documentElement.clientHeight;
		return e
	}
	
	e.width=document.body.clientWidth;
	e.height=document.body.clientHeight;
	return e
}


;
L.prototype.loadIconClasses=function()
{
	var Cd=[9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0];
	N.load(new N("local",20,34,new n(9,34),new n(9,2),new n(17,23),q+"shadow50.png",37,Cd));
	N.load(new N("noicon",0,0,new n(0,0),new n(0,0),new n(0,0),null,0,null))
}


;
L.prototype.loadXML=function(Ug,Fg)
{
	qa.invalidateAll();
	this.clearSearchState();
	try
	{
		this.vpageDoc=Fg;
		var da=lg(Ug);
		this.loadVPage(da)
	}
	
	catch(b)
	{
		
	}
	
	
}


;
L.prototype.loadVPage=function(da)
{
	var E=H.loadFromXML(da,null,null);
	this.vpage=E;
	if(E.title)
	{
		window.document.title="Google Maps - "+E.title
	}
	
	else
	{
		window.document.title="Google Maps"
	}
	
	if(E.error||E.spelling)
	{
		if(m.type!=3)
		{
			Z.asynchronousTransform(E.xml,this.metaPanel,"/mapfiles/metapanel.xsl",null,"metaPanel")
		}
		
		else
		{
			E.metaToHTML(this.metaPanel)
		}
		
		this.metaPanel.style.display=""
	}
	
	if(E.overlays&&E.overlays.length>0)
	{
		var ia=E.overlays[0];
		if(ia.panelStyle&&ia.locations)
		{
			this.showOverlayPanel(ia)
		}
		
		
	}
	
	else if(E.directions)
	{
		this.showDirectionsPanel(E.directions)
	}
	
	if(E.debug)
	{
		var nb=document.createElement("pre");
		nb.appendChild(document.createTextNode(E.debug));
		this.metaPanel.appendChild(nb);
		this.metaPanel.style.display=""
	}
	
	var B=null;
	var P=null;
	if(this.vpageDoc)
	{
		var ud=this.vpageDoc.getElementById(ke);
		var vd=this.vpageDoc.getElementById(me);
		if(ud&&(vd&&(ud.value.length>0&&vd.value.length>0)))
		{
			B=new n(parseFloat(vd.value),parseFloat(ud.value))
		}
		
		var Rd=this.vpageDoc.getElementById("zoom");
		if(Rd&&Rd.value.length>0)
		{
			P=parseInt(Rd.value)
		}
		
		
	}
	
	this.map.loadVPage(E,B,P);
	this.lastSearchSpan=this.map.getSpanLatLng()
}


;
L.prototype.showOverlayPanel=function(ia)
{
	var h=this;
	window.showLocationInfo=function(F)
	{
		var r=ia.getLocationById(F);
		if(r)
		{
			h.map.clearInfoWindowArgs(r.xml);
			h.map.showInfoWindow(r)
		}
		
		
	}
	
	
	;
	if(m.type!=3)
	{
		Z.asynchronousTransform(ia.xml,this.panel,ia.panelStyle,null,"panel")
	}
	
	else
	{
		ia.toHTML(this.panel)
	}
	
	
}


;
L.prototype.showDirectionsPanel=function(y)
{
	this.highlightedTd=null;
	var h=this;
	window.showDirectionsSegment=function(F)
	{
		var Kb=y.getSegmentById(F);
		var Gc=document.getElementById(F);
		if(Kb)
		{
			h.map.showDirectionsStep(Kb);
			if(Gc)
			{
				if(this.highlightedTd)this.highlightedTd.style.backgroundColor="white";
				this.highlightedTd=Gc;
				Gc.style.backgroundColor="#eeeeee";
				h.map.oninfowindowclose=function()
				{
					h.highlightedTd=null;
					Gc.style.backgroundColor="white";
					h.map.oninfowindowclose=null
				}
				
				
				
			}
			
			
		}
		
		
	}
	
	
	;
	window.showDirectionsStart=function()
	{
		h.map.showDirectionsStart();
		if(this.highlightedTd)this.highlightedTd.style.backgroundColor="white";
		this.highlightedTd=null
	}
	
	
	;
	window.showDirectionsEnd=function()
	{
		h.map.showDirectionsEnd();
		if(this.highlightedTd)this.highlightedTd.style.backgroundColor="white";
		this.highlightedTd=null
	}
	
	
	;
	if(m.type!=3)
	{
		Z.asynchronousTransform(y.xml,this.panel,"/mapfiles/directionspanel.xsl",null,"panel")
	}
	
	else
	{
		y.toHTML(this.panel)
	}
	
	
}


;
L.prototype.search=function(bb,Zh,ug)
{
	qa.invalidateAll();
	this.clearSearchState();
	if(!bb||bb.length==0)return;
	this.panel.innerHTML="Searching...";
	this.urlMaker.reset();
	var w=this.urlMaker;
	w.setValue("sll",w.getLatLngArg(this.map.getCenterLatLng()));
	w.setValue("sspn",w.getSpanArg(this.map.getSpanLatLng()));
	w.setValue("z",this.map.zoomLevel);
	w.setValue("t",w.getSpecArg(this.map.spec));
	w.setValue("q",bb);
	w.setValue("f",ug);
	if(m.type!=3)
	{
		w.setValue("output","js");
		var ga=w.getURL();
		nd('<a href="'+ga.xmlEscape()+'">'+ga.xmlEscape()+"</a>",0);
		Zh.src=ga
	}
	
	else
	{
		w.setValue("output","xml");
		this.loadSafari(w.getURL())
	}
	
	
}


;
L.prototype.clearSearchState=function()
{
	this.map.clearOverlays();
	this.metaPanel.innerHTML="";
	this.metaPanel.style.display="none";
	this.panel.innerHTML="";
	this.vpage=null;
	this.vpageDoc=null
}


;
L.prototype.getPageURL=function()
{
	this.urlMaker.reset();
	var w=this.urlMaker;
	if(this.vpage&&this.vpageDoc)
	{
		w.setValue("q",this.vpage.query);
		var hi=parseFloat(this.vpageDoc.getElementById(ke).value);
		var pg=parseFloat(this.vpageDoc.getElementById(me).value);
		var df=new n(pg,hi);
		var ye=this.map.getSpanLatLng();
		var tf=this.vpage.center;
		if(this.vpage.searchCenter)
		{
			w.setValue("sll",w.getLatLngArg(this.vpage.searchCenter));
			tf=this.vpage.searchCenter
		}
		
		var ma=false;
		if(!df.approxEquals(tf))
		{
			ma=true;
			w.setValue("ll",w.getLatLngArg(df))
		}
		
		var je=this.lastSearchSpan;
		if(this.vpage.searchSpan)
		{
			w.setValue("sspn",w.getSpanArg(this.vpage.searchSpan));
			je=this.vpage.searchSpan
		}
		
		if(ma||je&&!ye.approxEquals(je))
		{
			w.setValue("spn",w.getSpanArg(ye))
		}
		
		
	}
	
	else
	{
		w.setAllMapValues(this.map)
	}
	
	return w.getURL()
}


;
L.prototype.email=function()
{
	var ga="mailto:?subject="+encodeURIComponent("Google Map")+"&body="+encodeURIComponent(De+this.getPageURL());
	window.location.href=ga
}


;
L.prototype.print=function()
{
	window.print()
}


;
L.prototype.initSafari=function()
{
	if(m.type==3)
	{
		this.urlMaker.reset();
		var w=this.urlMaker;
		w.setValue("output","xml");
		this.loadSafari(w.getURL())
	}
	
	
}


;
L.prototype.loadSafari=function(ga)
{
	try
	{
		var sa=Yd.create();
		sa.open("GET",ga,true);
		var yc=qa.create("xml");
		var h=this;
		sa.onreadystatechange=function()
		{
			if(sa.readyState==4)
			{
				if(yc.isValid())
				{
					try
					{
						h.clearSearchState();
						var Db=sa.responseXML;
						h.loadVPage(Db)
					}
					
					catch(b)
					{
						
					}
					
					
				}
				
				
			}
			
			
		}
		
		
		;
		sa.send(null)
	}
	
	catch(b)
	{
		
	}
	
	
}


;
function _app(Sd,Pd,xd,Jd,Id)
{
	return new L(Sd,Pd,xd,Jd,Id)
}


Yb.prototype.toHTML=function(R)
{
	var T="";
	if(this.locations.length>0)
	{
		var T="<table>";
		for(var a=0;
		a<this.locations.length;
		a++)
		{
			var Sa=this.locations[a];
			var Wa=Sa.xml.getElementsByTagName("info")[0];
			var Ya=dc(Wa.getElementsByTagName("title")[0],false);
			var Va=H.getNodeValue(Wa.getElementsByTagName("distance")[0]);
			var pe=H.getNodeValue(Wa.getElementsByTagName("phone")[0]);
			T+='<tr><td style="vertical-align: top;
			padding-right: 4px;
			"><a href="javascript:showLocationInfo(\''+Sa.id+"')\">"+'<img style="width:24px;
			height:38px" alt="" '+'src="'+q+"icon"+Sa.id+'.png"/></a></td>'+'<td style="padding-bottom: 0.5em;
			padding-top: 1px"><div>'+"<a href=\"javascript:showLocationInfo('"+Sa.id+"')\" "+'style="color: #0000cc">'+Ya+"</a></div>"+'<div style="font-size: smaller">'+pe+" - "+'<span style="color: #7777cc">'+Va+"</span></div>"+"</td></tr>"
		}
		
		T+="</table>"
	}
	
	R.innerHTML=T
}


;
Lc.prototype.toHTML=function(R)
{
	var Wa=this.xml.getElementsByTagName("info")[0];
	var Ya=H.getNodeValue(Wa.getElementsByTagName("title")[0]);
	var Va=H.getNodeValue(Wa.getElementsByTagName("distance")[0]);
	var pe=H.getNodeValue(Wa.getElementsByTagName("phone")[0]);
	var Xa=Wa.getElementsByTagName("line");
	var Ed="";
	var ce="";
	if(Xa.length>0)Ed=H.getNodeValue(Xa[0]);
	if(Xa.length>1)ce=H.getNodeValue(Xa[1]);
	var Ie=(Ed+", "+ce).jsEscape();
	var T="<div><b>"+Ya.xmlEscape()+"</b></div>"+'<div style="font-size: small">'+pe+"</div>"+'<div style="font-size: small"><div>'+Ed.xmlEscape()+"</div><div>"+ce.xmlEscape()+"</div></div>"+'<div style="font-size: small;
	margin-top: 0.4em">Directions:'+" <a href=\"javascript:directionsSearch(null, '"+Ie+"', false)\">To here</a> - "+"<a href=\"javascript:directionsSearch('"+Ie+"', null, false)\">From here</a></div>";
	R.innerHTML=T
}


;
H.prototype.metaToHTML=function(R)
{
	var T="";
	if(this.spelling)
	{
		var ng=dc(this.spelling,false);
		var str=H.getNodeValue(this.spelling);
		T+='<div style="color: #cc0000;
		margin-bottom: 1em">Did you mean: <a href="javascript:search(\''+str.jsEscape()+"')\">"+ng+"</a></div>"
	}
	
	if(this.error)
	{
		var str=dc(this.error,false);
		T+="<p>"+str+"</p>"
	}
	
	R.innerHTML=T
}


;
Tb.prototype.toHTML=function(R)
{
	var Mf=Ke(this.xml.getElementsByTagName("source")[0]);
	var pf=Ke(this.xml.getElementsByTagName("destination")[0]);
	var de=this.xml.getElementsByTagName("segments")[0];
	var Va=de.getAttribute("distance");
	var ve=de.getAttribute("time");
	var T='<table class="dirsummary"><tr><td class="name" onclick="showDirectionsStart()" style="cursor: pointer"><a href="javascript:void(0)" onclick="javascript:return true">Start from</a>:</td><td class="value" onclick="showDirectionsStart()" style="cursor: pointer">'+Mf.xmlEscape()+"</td></tr>"+'<tr><td class="name" onclick="showDirectionsEnd()" '+'style="cursor: pointer"><a href="javascript:void(0)" '+'onclick="javascript:return true">Arrive at</a>:</td>'+'<td class="value" onclick="showDirectionsEnd()" '+'style="cursor: pointer">'+pf.xmlEscape()+"</td></tr>"+'<tr><td class="name">Distance:</td><td class="value">'+Va+"(about "+ve+")</td></tr></table>"+'<div class="reverse"><a '+"href=\"javascript:javascript:directionsSearch('"+pf.jsEscape()+"', '"+Mf.jsEscape()+"', true)\">"+'Reverse directions</a></div><table class="directions">';
	var Of=de.getElementsByTagName("segment");
	for(var a=0;
	a<Of.length;
	a++)
	{
		var fd=Of[a];
		var F=fd.getAttribute("id");
		var Va=fd.getAttribute("distance");
		var dh=parseInt(fd.getAttribute("meters"));
		var str=dc(fd,false);
		T+='<tr id="'+F+'"><td class="num" '+"onclick=\"showDirectionsSegment('"+F+"', this)\">"+'<a href="javascript:void(0)" onclick="return true">'+(a+1)+'.</td><td class="desc" onclick="showDirectionsSegment(\''+F+"', true)\">"+str+" - go <b>"+Va+"</b></td></tr>";
		if(dh>16903)
		{
			T+='<tr><td colspan="2" class="gap"><div class="gap">&#8943;
			</div></td></tr>'
		}
		
		
	}
	
	T+="</table>";
	R.innerHTML=T
}


;
function Ke(D)
{
	var Xa=D.getElementsByTagName("line");
	var str="";
	for(var a=0;
	a<Xa.length;
	a++)
	{
		str+=H.getNodeValue(Xa[a]);
		if(a<Xa.length-1)str+=", "
	}
	
	return str
}


function dc(D,Fe)
{
	var Q="";
	if(D.nodeType==3||D.nodeType==4)return D.nodeValue;
	if(D.nodeType==1)
	{
		if(Fe&&D.tagName)Q+="<"+D.tagName+">";
		for(var Ea=D.firstChild;
		Ea!=null;
		Ea=Ea.nextSibling)
		{
			Q+=dc(Ea,true)
		}
		
		if(Fe&&D.tagName)Q+="</"+D.tagName+">"
	}
	
	return Q
}