function KMLObj(title,desc,op,fid){this.title=title;this.description=escape(desc);this.marks=[];this.folders=[];this.groundOverlays=[];this.open=op;this.folderid=fid}function Lance$(mid){return document.getElementById(mid)}var topwin=self;function GeoXml(myvar,map,url,opts){this.myvar=myvar;this.opts=opts||{};this.mb=new MessageBox(map,this,"mb",this.opts.messagebox);this.map=map;this.url=url;if(typeof url=="string"){this.urls=[url]}else{this.urls=url}this.mb.style=this.opts.messagestyle||{backgroundColor:"silver"};this.alwayspop=this.opts.alwaysinfopop||false;this.quiet=this.opts.quiet||false;this.titlestyle=this.opts.titlestyle||'style = "font-family: arial, sans-serif;font-size: medium;font-weight:bold;font-size: 100%;"';this.descstyle=this.opts.descstyle||'style = "font-family: arial, sans-serif;font-size: small;padding-bottom:.7em;"';this.directionstyle=this.opts.directionstyle||'style="font-family: arial, sans-serif;font-size: small;padding-left: 1px;padding-top: 1px;padding-right: 4px;"';this.sidebarfn=this.opts.sidebarfn||GeoXml.addSidebar;this.pointlabelopacity=this.opts.pointlabelopacity||100;this.polylabelopacity=this.opts.polylabelopacity||100;this.hilite=this.opts.hilite||{color:"#aaffff",opacity:0.3,textcolor:"#000000"};this.latestsidebar="";this.forcefoldersopen=false;if(typeof this.opts.allfoldersopen!="undefined"){this.forcefoldersopen=this.opts.allfoldersopen}this.clickablepolys=true;if(typeof this.opts.clickablepolys=="boolean"){this.clickablepolys=this.opts.clickablepolys}this.clickablemarkers=true;if(typeof this.opts.clickablemarkers=="boolean"){this.clickablemarkers=this.opts.clickablemarkers}this.clickablelines=true;if(typeof this.opts.clickablelines=="boolean"){this.clickablelines=this.opts.clickablelines}if(typeof this.opts.nolegend!="undefined"){this.nolegend=true}if(typeof this.opts.preloadHTML=="undefined"){this.opts.preloadHTML=true}this.hideall=false;if(typeof proxy!="undefined"){this.proxy=proxy}if(!this.proxy&&typeof getcapproxy!="undefined"){if(fixUrlEnd){getcapproxy=fixUrlEnd(getcapproxy)}}if(this.opts.hideall){this.hideall=this.opts.hideall}this.publishdirectory="http://maps.google.com/mapfiles/";topwin=top;try{topname=top.title}catch(err){topwin=self};if(topwin.publishdirectory){this.publishdirectory=topwin.publishdirectory}if(topwin.standalone){this.publishdirectory=""}this.plus="uploads/tr_menuplus.gif";this.moins="uploads/tr_menuminus.gif";this.kmlicon=this.publishdirectory+"images/ge.png";this.docicon=this.publishdirectory+"images/ge.png";this.foldericon=this.publishdirectory+"kml/pal3/icon56.png";this.gmlicon=this.publishdirectory+"images/geo.gif";this.rssicon=this.publishdirectory+"images/rssb.png";this.globalicon=this.publishdirectory+"images/geo.gif";this.WMSICON="<img src=\""+this.publishdirectory+"images/geo.gif\" style=\"border:none\" />";GeoXml.WMSICON=this.WMSICON;this.baseLayers=[];this.bounds=new GLatLngBounds();this.style={width:2,opacity:0.75,fillopacity:0.4};this.style.color=this.randomColor();this.style.fillcolor=this.randomColor();this.iwwidth=this.opts.iwwidth||400;this.lastmarker={};this.verySmall=0.0000001;this.progress=0;this.ZoomFactor=2;this.NumLevels=18;this.maxtitlewidth=0;this.styles=[];this.jsdocs=[];this.jsonmarks=[];this.polyset=[];this.polygons=[];this.polylines=[];this.multibounds=[];this.overlayman=new Clusterer(map,this);this.overlayman.rowHeight=20;if(this.opts.sidebarid){this.basesidebar=this.opts.sidebarid}this.kml=[new KMLObj("GeoXML","",true,0)];this.overlayman.folders.push([]);this.overlayman.subfolders.push([]);this.overlayman.folderhtml.push([]);this.overlayman.folderhtmlast.push(0);this.overlayman.folderBounds.push(new GLatLngBounds());this.wmscount=0;this.labels=new GTileLayerOverlay(G_HYBRID_MAP.getTileLayers()[1]);this.unnamedpath="un-named path";this.unnamedplace="un-named place";this.unnamedarea="un-named area"}GeoXml.prototype.showIt=function(str,h,w){var features="status=yes,resizable=yes,toolbar=0,height="+h+",width="+h+",scrollbars=yes";var myWin;if(topwin.widget){alert(str);this.mb.showMess(str)}else{myWin=window.open("","_blank",features);myWin.document.open("text/xml");myWin.document.write(str);myWin.document.close()}};GeoXml.prototype.clear=function(idx){for(var m=0;m<this.overlayman.markers.length;m++){this.overlayman.RemoveMarker(this.overlayman.markers[m])}this.kml=[new KMLObj("GeoXML","",true,0)];this.maxtitlewidth=0;this.styles=[];this.jsdocs=[];this.jsonmarks=[];this.polyset=[];this.polylines=[];this.multibounds=[];this.bounds=new GLatLngBounds();this.overlayman=new Clusterer(this.map,this);this.overlayman.rowHeight=20;if(typeof this.basesidebar!="undefined"&&this.basesidebar!=""){Lance$(this.basesidebar).innerHTML=""}this.overlayman.folders.push([]);this.overlayman.subfolders.push([]);this.overlayman.folderhtml.push([]);this.overlayman.folderhtmlast.push(0);this.overlayman.byname=[];this.overlayman.byid=[];this.overlayman.folderBounds.push(new GLatLngBounds());this.wmscount=0};GeoXml.prototype.createMarkerJSON=function(item,idx){var that=this;var style=that.makeIcon(style,item.href);var point=new GLatLng(item.y,item.x);that.overlayman.folderBounds[idx].extend(point);that.bounds.extend(point);if(item.shadow){style.shadow=item.shadow}else{style.shadow=null}if(!!that.opts.createmarker){that.opts.createmarker(point,item.title,unescape(item.description),null,idx,style,item.visibility,item.id)}else{that.createMarker(point,item.title,unescape(item.description),null,idx,style,item.visibility,item.id)}};GeoXml.prototype.createMarker=function(point,name,desc,style,idx,instyle,visible,kml_id){var myvar=this.myvar;var icon;var bicon=new GIcon();if(this.opts.baseicon){bicon.iconSize=this.opts.baseicon.iconSize;bicon.iconAnchor=this.opts.baseicon.iconAnchor;bicon.shadowSize=this.opts.baseicon.shadowSize;bicon.infoWindowAnchor=this.opts.baseicon.infoWindowAnchor}else{bicon.infoWindowAnchor=new GPoint(16,0);bicon.iconSize=new GSize(32,32);bicon.shadowSize=new GSize(32,32);bicon.iconAnchor=new GPoint(16,32)}var shadow;var href;if(this.opts.iconFromDescription){var text=desc;var pattern=new RegExp("<\\s*img","ig");var result;var pattern2=/src\s*=\s*[\'\"]/;var pattern3=/[\'\"]/;while((result=pattern.exec(text))!=null){var stuff=text.substr(result.index);var result2=pattern2.exec(stuff);if(result2!=null){stuff=stuff.substr(result2.index+result2[0].length);var result3=pattern3.exec(stuff);if(result3!=null){var imageUrl=stuff.substr(0,result3.index);href=imageUrl}}}shadow=null;if(!href){href="http://maps.google.com/mapfiles/kml/pal3/icon40.png"}icon=new GIcon(bicon,href,null,shadow)}else{href="http://maps.google.com/mapfiles/kml/pal3/icon40";if(instyle==null||typeof instyle=="undefined"){shadow=href+"s.png";href+=".png";if(this.opts.baseicon){href=this.opts.baseicon.image;shadow=this.opts.baseicon.shadow}}else{if(instyle.href){href=instyle.href}if(instyle.shadow){shadow=instyle.shadow}}icon=new GIcon(bicon,href,null,shadow)}var iwoptions=this.opts.iwoptions||{};var markeroptions=this.opts.markeroptions||{};var icontype=this.opts.icontype||"style";if(icontype=="style"){if(!!this.styles[style]){icon=new GIcon(bicon,this.styles[style].href,null,this.styles[style].shadow);icon.src=this.styles[style].href;href=this.styles[style].href}}if(!markeroptions.icon){markeroptions.icon=icon}markeroptions.title=name;var m=new GMarker(point,markeroptions);m.title=name;m.id=kml_id;var obj={"type":"point","title":name,"description":escape(desc),"href":href,"shadow":shadow,"visibility":visible,"x":point.x,"y":point.y,"id":m.id};this.kml[idx].marks.push(obj);if(this.opts.pointlabelclass){var l=new ELabel(point,name,this.opts.pointlabelclass,this.opts.pointlabeloffset,this.pointlabelopacity,true);m.label=l;this.map.addOverlay(l)}var html,html1,html2,html3,html4;var awidth=this.iwwidth;if(desc.length*8<awidth){awidth=desc.length*8}if(awidth<name.length*10){awidth=name.length*10}html="<div style = 'width:"+awidth+"px'>"+"<h1 "+this.titlestyle+">"+name+"</h1>"+"<div "+this.descstyle+">"+desc+"</div>";if(this.opts.directions){html1=html+'<div '+this.directionstyle+'>'+'Get Directions: <a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click2\');return false;">To Here</a> - '+'<a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click3\');return false;">From Here</a><br>'+'<a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click4\');return false;">Search nearby</a></div>';html2=html+'<div '+this.directionstyle+'>'+'Get Directions: To here - '+'<a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click3\');return false;">From Here</a><br>'+'Start address:<form action="http://maps.google.com/maps" method="get" target="_blank">'+'<input type="text" SIZE=35 MAXLENGTH=80 name="saddr" id="saddr" value="" />'+'<INPUT value="Go" TYPE="SUBMIT">'+'<input type="hidden" name="daddr" value="'+point.lat()+','+point.lng()+"("+name+")"+'"/>'+'<br><a href="# onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click\');return false;">&#171; Back</a></div>';html3=html+'<div '+this.directionstyle+'>'+'Get Directions: <a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click2\');return false;">To Here</a> - '+'From Here<br>'+'End address:<form action="http://maps.google.com/maps" method="get"" target="_blank">'+'<input type="text" SIZE=35 MAXLENGTH=80 name="daddr" id="daddr" value="" />'+'<INPUT value="Go" TYPE="SUBMIT">'+'<input type="hidden" name="saddr" value="'+point.lat()+','+point.lng()+"("+name+")"+'"/>'+'<br><a href="#" onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click\');return false;">&#171; Back</a></div>';html4=html+'<div '+this.directionstyle+'>'+'Search nearby: e.g. "pizza"<br>'+'<form action="http://maps.google.com/maps" method="get"" target="_blank">'+'<input type="text" SIZE=35 MAXLENGTH=80 name="q" id="q" value="" />'+'<INPUT value="Go" TYPE="SUBMIT">'+'<input type="hidden" name="near" value="'+name+' @'+point.lat()+','+point.lng()+'"/>'+'<br><a href="# onclick="GEvent.trigger('+this.myvar+'.lastmarker,\'click\');return false;">&#171; Back</a></div>';GEvent.addListener(m,"click2",function(){m.openInfoWindowHtml(html2+"</div>",iwoptions)});GEvent.addListener(m,"click3",function(){m.openInfoWindowHtml(html3+"</div>",iwoptions)});GEvent.addListener(m,"click4",function(){m.openInfoWindowHtml(html4+"</div>",iwoptions)})}else{html1=html}if(this.clickablemarkers){GEvent.addListener(m,"click",function(){eval(myvar+".lastmarker = m");m.openInfoWindowHtml(html1+"</div>",iwoptions)})}if(this.opts.domouseover){m.mess=html1+"</div>";m.geoxml=this;GEvent.addListener(m,"mouseover",function(point){if(!point){point=m.getPoint()}m.geoxml.mb.showMess(m.mess,5000)})}var nhtml="";var parm;if(this.opts.sidebarid){var folderid=this.myvar+"_folder"+idx;var n=this.overlayman.markers.length;var blob="&nbsp;<img style=\"vertical-align:text-top;padding:0;margin:0\" height=\"16\" border=\"0\" src=\""+href+"\">&nbsp;";parm=this.myvar+"$$$"+name+"$$$marker$$$"+n+"$$$"+blob+"$$$"+visible+"$$$null";m.sidebarid=this.myvar+"sb"+n;m.hilite=this.hilite;m.geoxml=this;GEvent.addListener(m,"mouseover",function(){var bar=Lance$(this.sidebarid);if(bar&&typeof bar!="undefined"){bar.style.backgroundColor=this.hilite.color;bar.style.color=this.hilite.textcolor}});GEvent.addListener(m,"mouseout",function(){var bar=Lance$(this.sidebarid);if(bar&&typeof bar!="undefined"){bar.style.background="none";bar.style.color=""}})}if(!!this.opts.addmarker){this.opts.addmarker(m,name,idx,parm,visible)}else{this.overlayman.AddMarker(m,name,idx,parm,visible)}};GeoXml.getDescription=function(node){var sub="";var n=0;var cn;if(document.all){for(;n<node.childNodes.length;n++){cn=node.childNodes.item(n);sub+=cn.xml}}else{var serializer=new XMLSerializer();for(;n<node.childNodes.length;n++){cn=serializer.serializeToString(node.childNodes.item(n));sub+=cn}}var s=sub.replace("<![CDATA[","");var u=s.replace("]]>","");u=u.replace(/\&amp;/g,"&");u=u.replace(/\&lt;/g,"<");u=u.replace(/\&quot;/g,'"');u=u.replace(/\&apos;/g,"'");u=u.replace(/\&gt;/g,">");return u};GeoXml.prototype.processLine=function(pnum,lnum,idx){var that=this;var op=this.polylines[pnum];var line=op.lines[lnum];var obj;var p;if(!line){return}var thismap=this.map;var iwoptions=this.opts.iwoptions||{};var polylineEncoder=new PolylineEncoder(this.NumLevels,this.ZoomFactor,this.verySmall,true);if(line.length>2){var result=polylineEncoder.dpEncode(line);obj={points:result.encodedPoints,levels:result.encodedLevels,color:op.color,weight:op.width,opacity:op.opacity,clickable:op.clickablepolys,zoomFactor:this.ZoomFactor,numLevels:this.NumLevels,type:"polyline"};p=new GPolyline.fromEncoded(obj)}else{obj={points:line,color:op.color,weight:op.width,opacity:op.opacity,type:"line",id:op.id};p=new GPolyline(line,op.color,op.width,op.opacity)}p.bounds=op.pbounds;p.id=op.id;var nhtml="";var n=this.overlayman.markers.length;this.polylines[pnum].lineidx.push(n);var parm;var awidth=this.iwwidth;var desc=op.description;if(desc.length*8<awidth){awidth=desc.length*8}if(awidth<op.name.length*12){awidth=op.name.length*12}var html="<div style='font-weight: bold; font-size: medium; margin-bottom: 0em;'>"+op.name;html+="</div>"+"<div style='font-family: Arial, sans-serif;font-size: small;width:"+awidth+"px;'>"+desc+"</div>";if(lnum==0){if(this.opts.sidebarid){var blob='&nbsp;&nbsp;<span style=";border-left:'+op.width+'px solid '+op.color+';">&nbsp;</span> ';parm=this.myvar+"$$$"+op.name+"$$$polyline$$$"+n+"$$$"+blob+"$$$"+op.visibility+"$$$"+pnum+"$$$";this.latestsidebar=this.myvar+"sb"+n}}if(lnum<line.length){setTimeout(this.myvar+".processLine("+pnum+","+(lnum+1)+",'"+idx+"');",15);if(this.opts.sidebarid){p.sidebar=this.latestsidebar}}if(this.opts.domouseover){p.mess=html}p.title=op.name;p.geoxml=this;p.strokeColor=op.color;p.strokeWeight=op.width;p.strokeOpacity=op.opacity;p.hilite=this.hilite;p.mytitle=p.title;p.map=this.map;p.idx=pnum;p.onOver=function(){var pline=this.geoxml.polylines[this.idx];for(var l=0;l<pline.lineidx.length;l++){var mark=this.geoxml.overlayman.markers[pline.lineidx[l]];mark.realColor=mark.strokeColor;mark.setStrokeStyle({color:this.hilite.color});mark.redraw(true)}if(this.sidebar){Lance$(this.sidebar).style.backgroundColor=this.hilite.color;Lance$(this.sidebar).style.color=this.hilite.textcolor}if(this.mess){this.geoxml.mb.showMess(this.mess,5000)}else{this.title="Click for more information about "+this.mytitle}};p.onOut=function(){var pline=this.geoxml.polylines[this.idx];for(var l=0;l<pline.lineidx.length;l++){var mark=this.geoxml.overlayman.markers[pline.lineidx[l]];mark.setStrokeStyle({color:this.realColor});mark.redraw(true)}this.geoxml.mb.hideMess();if(this.sidebar){Lance$(this.sidebar).style.background="none";Lance$(this.sidebar).style.color=""}};GEvent.addListener(p,"mouseout",p.onOut);GEvent.addListener(p,"mouseover",p.onOver);GEvent.addListener(p,"click",function(point){var doit=false;if(!point){point=this.getPoint();doit=true}if(this.geoxml.clickablelines||doit){this.map.openInfoWindowHtml(point,html,iwoptions)}});obj.name=op.name;obj.description=escape(op.description);if(that.hideall){op.visibility=false}obj.visibility=op.visibility;this.kml[idx].marks.push(obj);this.overlayman.AddMarker(p,op.name,idx,parm,op.visibility)};GeoXml.prototype.createPolyline=function(lines,color,width,opacity,pbounds,name,desc,idx,visible,kml_id){var p={};if(!color){p.color=this.randomColor()}else{p.color=color}if(!opacity){p.opacity=0.45}else{p.opacity=opacity}if(!width){p.width=2}else{p.width=width}p.idx=idx;p.visibility=visible;if(this.hideall){p.visibility=false}p.name=name;p.description=desc;p.lines=lines;p.lineidx=[];p.id=kml_id;this.polylines.push(p);setTimeout(this.myvar+".processLine("+(this.polylines.length-1)+",0,'"+idx+"');",15)};GeoXml.prototype.processPLine=function(pnum,linenum,idx){var p=this.polyset[pnum];var line=p.lines[linenum];var obj={};if(line&&line.length){var polylineEncoder=new PolylineEncoder(18,2,0.00001,true);var result=polylineEncoder.dpEncode(line);obj={};obj.points=result.encodedPoints;obj.levels=result.encodedLevels;obj.color=p.color;obj.weight=p.weight;obj.numLevels=18;obj.zoomFactor=2;obj.opacity=p.opacity;p.obj.polylines.push(obj)}if(linenum==p.lines.length-1){this.finishPolygon(p.obj,idx)}else{setTimeout(this.myvar+".processPLine("+pnum+","+(linenum+1)+",'"+idx+"');",5)}};GeoXml.prototype.finishPolygon=function(op,idx){op.type="polygon";this.finishPolygonJSON(op,idx,false)};GeoXml.prototype.finishPolygonJSON=function(op,idx,updatebound,lastpoly){var that=this;var iwoptions=that.opts.iwoptions||{};if(typeof op.visibility=="undefined"){op.visibility=true}if(that.hideall){op.visibility=false}var desc=unescape(op.description);op.opacity=op.fillOpacity;var p=new GPolygon.fromEncoded(op);var html="<div style='font-weight: bold; font-size: medium; margin-bottom: 0em;'>"+op.name+"</div>"+"<div style='font-family: Arial, sans-serif;font-size: small;width:"+this.iwwidth+"px'>"+desc+"</div>";var newgeom=(lastpoly!="p_"+op.name);if(newgeom&&this.opts.sidebarid){this.latestsidebar=that.myvar+"sb"+this.overlayman.markers.length}else{this.latestsidebar=""}if(that.opts.domouseover){p.mess=html}p.strokeColor=op.polylines[0].color;p.mb=that.mb;p.hilite=that.hilite;p.strokeOpacity=op.polylines[0].opacity;p.fillOpacity=op.opacity;p.fillColor=op.color;if(!op.fill){p.fillOpacity=0.0}if(that.domouseover){p.mess=html}p.geoxml=that;p.title=op.name;p.id=op.id;var n=this.overlayman.markers.length;if(newgeom){that.multibounds.push(new GLatLngBounds());that.polygons.push([])}var len=that.multibounds.length-1;that.multibounds[len].extend(p.getBounds().getSouthWest());that.multibounds[len].extend(p.getBounds().getNorthEast());that.polygons[that.polygons.length-1].push(n);p.polyindex=that.polygons.length-1;p.geomindex=len;p.sidebarid=this.latestsidebar;p.onOver=function(){if(this.sidebarid){var bar=Lance$(this.sidebarid);if(!!bar){bar.style.backgroundColor=this.hilite.color;bar.style.color=this.hilite.textcolor}}if(this.geoxml.clickablepolys){var poly=this.geoxml.polygons[this.polyindex];if(poly){for(var pg=0;pg<poly.length;pg++){var mark=this.geoxml.overlayman.markers[poly[pg]];mark.realColor=mark.fillColor;mark.setFillStyle({color:this.hilite.color});mark.redraw(true)}}}if(this.mess){p.geoxml.mb.showMess(this.mess,5000)}};p.onOut=function(){if(this.sidebarid){var bar=Lance$(this.sidebarid);if(!!bar){bar.style.background="none";bar.style.color=""}}var poly;if(this.geoxml.clickablepolys){poly=this.geoxml.polygons[this.polyindex]}if(poly){for(var pg=0;pg<poly.length;pg++){var mark=this.geoxml.overlayman.markers[poly[pg]];mark.setFillStyle({color:mark.realColor});mark.redraw(true)}}};GEvent.addListener(p,"mouseout",p.onOut);GEvent.addListener(p,"mouseover",p.onOver);op.description=escape(desc);this.kml[idx].marks.push(op);p.map=this.map;var bounds;GEvent.addListener(p,"click",function(point,overlay){if(!point&&this.geoxml.alwayspop){bounds=this.geoxml.multibounds[this.geomindex];this.map.setCenter(bounds.getCenter(),this.map.getBoundsZoomLevel(bounds));point=bounds.getCenter()}if(!point){this.geoxml.mb.showMess("Zooming to "+p.title,3000);bounds=this.geoxml.multibounds[this.geomindex];this.map.setZoom(this.map.getBoundsZoomLevel(bounds));this.map.panTo(bounds.getCenter())}else{if(this.geoxml.clickablepolys){this.map.openInfoWindowHtml(point,html,iwoptions)}}});if(this.opts.polylabelclass&&newgeom){var epoint=p.getBounds().getCenter();var off=this.opts.polylabeloffset;if(!off){off=new GSize(0,0)}off.x=-(op.name.length*6);var l=new ELabel(epoint," "+op.name+" ",this.opts.polylabelclass,off,this.polylabelopacity,true);p.label=l;this.map.addOverlay(l)}var nhtml="";var parm;if(this.basesidebar&&newgeom){var folderid=this.myvar+"_folder"+idx;var blob="<span style=\"background-color:"+op.color+";border:2px solid "+p.strokeColor+";\">&nbsp;&nbsp;&nbsp;&nbsp;</span> ";parm=this.myvar+"$$$"+op.name+"$$$polygon$$$"+n+"$$$"+blob+"$$$"+op.visibility+"$$$null"}if(updatebound){var ne=p.getBounds().getNorthEast();var sw=p.getBounds().getSouthWest();this.bounds.extend(ne);this.bounds.extend(sw);this.overlayman.folderBounds[idx].extend(sw);this.overlayman.folderBounds[idx].extend(ne)}this.overlayman.AddMarker(p,op.name,idx,parm,op.visibility);return op.name};GeoXml.prototype.finishLineJSON=function(po,idx,lastlinename){var m;var that=this;var thismap=this.map;if(po.type=="line"){m=new GPolyline(po.points,po.color,po.weight,po.opacity)}else{m=new GPolyline.fromEncoded(po)}m.mytitle=po.name;m.title=po.name;m.geoxml=this;m.strokeColor=po.color;m.strokeWeight=po.weight;m.strokeOpacity=po.opacity;m.hilite=this.hilite;var n=that.overlayman.markers.length;var lineisnew=false;var pnum;if(("l_"+po.name)!=lastlinename){lineisnew=true;that.polylines.push(po);pnum=that.polylines.length-1;that.polylines[pnum].lineidx=[];that.latestsidebar=that.myvar+"sb"+n}else{pnum=that.polylines.length-1;that.polylines[pnum].lineidx.push(n)}if(this.opts.basesidebar){m.sidebarid=that.latestsidebar}m.onOver=function(){if(!!this.sidebarid){var bar=Lance$(this.sidebarid);if(bar&&typeof bar!="undefined"){bar.style.backgroundColor=this.hilite.color}}this.realColor=this.strokeColor;if(mark&&typeof mark!="undefined"){mark.setStrokeStyle({color:this.hilite.color})}this.redraw(true);if(this.mess){this.geoxml.mb.showMess(this.mess,5000)}else{this.title="Click for more information about "+this.mytitle}};m.onOut=function(){if(!!this.sidebarid){var bar=Lance$(this.sidebarid);if(bar&&typeof bar!="undefined"){bar.style.background="none"}}if(mark&&typeof mark!="undefined")mark.setStrokeStyle({color:this.realColor});this.redraw(true);if(this.mess){this.geoxml.mb.hideMess()}};GEvent.addListener(m,"mouseover",m.onOver);GEvent.addListener(m,"mouseover",m.onOut);var parm="";that.kml[idx].marks.push(po);var desc=unescape(po.description);var awidth=this.iwwidth;if(desc.length*8<awidth){awidth=desc.length*8}if(awidth<po.name.length*12){awidth=po.name.length*12}var html="<div style='font-weight: bold; font-size: medium; margin-bottom: 0em;'>"+po.name;html+="</div><div style='font-family: Arial, sans-serif;font-size: small;width:"+awidth+"px'>"+desc+"</div>";m.map=this.map;if(this.clickablelines){GEvent.addListener(m,"click",function(point){if(!point){point=m.getPoint()}this.map.openInfoWindowHtml(point,html,that.opts.iwoptions)})}if(that.basesidebar&&lineisnew){var blob='&nbsp;&nbsp;<span style=";border-left:'+po.weight+'px solid '+po.color+';">&nbsp;</span> ';if(typeof po.visibility=="undefined"){po.visibility=true}parm=that.myvar+"$$$"+po.name+"$$$polyline$$$"+n+"$$$"+blob+"$$$"+po.visibility+"$$$"+(that.polylines.length-1)+"$$$"}var ne=m.getBounds().getNorthEast();var sw=m.getBounds().getSouthWest();that.bounds.extend(ne);that.bounds.extend(sw);that.overlayman.folderBounds[idx].extend(sw);that.overlayman.folderBounds[idx].extend(ne);that.overlayman.AddMarker(m,po.name,idx,parm,po.visibility);return(po.name)};GeoXml.prototype.handlePlaceObj=function(num,max,idx,lastlinename,depth){var that=this;var po=that.jsonmarks[num];var name=po.name;if(po.title){name=po.title}if(name.length+depth>that.maxtitlewidth){that.maxtitlewidth=name.length+depth}switch(po.type){case"polygon":lastlinename="p_"+that.finishPolygonJSON(po,idx,true,lastlinename);break;case"line":case"polyline":lastlinename="l_"+that.finishLineJSON(po,idx,lastlinename);break;case"point":that.createMarkerJSON(po,idx);lastlinename="";break}if(num<max-1){var act=that.myvar+".handlePlaceObj("+(num+1)+","+max+","+idx+",\""+lastlinename+"\","+depth+");";document.status="processing "+name;setTimeout(act,1)}else{lastlinename="";if(num==that.jsonmarks.length-1){that.progress--;if(that.progress<=0){if(!that.opts.nozoom){that.map.setZoom(that.map.getBoundsZoomLevel(that.bounds));that.map.setCenter(that.bounds.getCenter())}GEvent.trigger(that,"parsed");that.setFolders();if(!that.opts.sidebarid){that.mb.showMess("Finished Parsing",1000);that.ParseURL()}}}}};GeoXml.prototype.parseJSON=function(doc,title,latlon,desc,sbid){var that=this;that.overlayman.miStart=new Date();that.jsdocs=eval('('+doc+')');var bar=Lance$(that.basesidebar);if(bar){bar.style.display=""}that.recurseJSON(that.jsdocs[0],title,desc,that.basesidebar,0)};GeoXml.prototype.setFolders=function(){var that=this;var len=that.kml.length;for(var i=0;i<len;i++){var fid=that.kml[i].folderid;var fob=Lance$(fid);if(fob!==null&&fid!=that.opts.sidebarid){if(!!that.kml[i].open){fob.style.display='block'}else{fob.style.display='none'}}}};GeoXml.prototype.recurseJSON=function(doc,title,desc,sbid,depth){var that=this;var polys=doc.marks;var name=doc.title;if(!sbid){sbid=0}var description=unescape(doc.description);if(!description&&desc){description=desc}var keepopen=that.forcefoldersopen;if(doc.open){keepopen=true}var visible=true;if(typeof doc.visibility!="undefined"&&doc.visibility){visible=true}if(that.hideall){visible=false}var snippet=doc.snippet;var idx=that.overlayman.folders.length;if(!description){description=name}var folderid;var icon;that.overlayman.folders.push([]);that.overlayman.subfolders.push([]);that.overlayman.folderhtml.push([]);that.overlayman.folderhtmlast.push(0);that.overlayman.folderBounds.push(new GLatLngBounds());that.kml.push(new KMLObj(title,description,keepopen));if((!depth&&(doc.folders&&doc.folders.length>1))||doc.marks.length){if(depth<2||doc.marks.length<1){icon=that.globalicon}else{icon=that.foldericon}folderid=that.createFolder(idx,name,sbid,icon,description,snippet,keepopen,visible)}else{folderid=sbid}var parm,blob;var nhtml="";var html;var m;var num=that.jsonmarks.length;var max=num+polys.length;for(var p=0;p<polys.length;p++){var po=polys[p];that.jsonmarks.push(po);desc=unescape(po.description);m=null;if(that.opts.preloadHTML&&desc&&desc.match(/<(\s)*img/i)){var preload=document.createElement("span");preload.style.visibility="visible";preload.style.position="absolute";preload.style.left="-1200px";preload.style.top="-1200px";preload.style.zIndex=this.overlayman.markers.length;document.body.appendChild(preload);preload.innerHTML=desc}}if(that.groundOverlays){}if(polys.length){that.handlePlaceObj(num,max,idx,null,depth)}var fc=0;var fid=0;if(typeof doc.folders!="undefined"){fc=doc.folders.lenth;for(var f=0;f<doc.folders.length;++f){var nextdoc=that.jsdocs[doc.folders[f]];fid=that.recurseJSON(nextdoc,nextdoc.title,nextdoc.description,folderid,(depth+1));that.overlayman.subfolders[idx].push(fid);that.overlayman.folderBounds[idx].extend(that.overlayman.folderBounds[fid].getSouthWest());that.overlayman.folderBounds[idx].extend(that.overlayman.folderBounds[fid].getNorthEast());if(fid!=idx){that.kml[idx].folders.push(fid)}}}if(fc||polys.length){that.bounds.extend(that.overlayman.folderBounds[idx].getSouthWest());that.bounds.extend(that.overlayman.folderBounds[idx].getNorthEast())}return idx};GeoXml.prototype.createPolygon=function(lines,color,width,opacity,fillcolor,fillOpacity,pbounds,name,desc,folderid,visible,fill,outline,kml_id){var thismap=this.map;var p={};p.obj={"description":desc,"name":name};p.obj.polylines=[];p.obj.id=kml_id;p.obj.visibility=visible;p.obj.fill=fill;p.obj.outline=outline;p.fillcolor=fillcolor;p.obj.strokecolor=color;if(!color){p.color=this.style.color}else{p.color=color}if(!fillcolor){p.obj.color=this.randomColor()}else{p.obj.color=fillcolor}if(!opacity){p.obj.opacity=this.style.opacity}else{p.obj.opacity=opacity}if(typeof fillOpacity=="undefined"){p.obj.fillOpacity=this.style.fillOpacity}else{p.obj.fillOpacity=fillOpacity}if(!width){p.weight=this.style.width}else{p.weight=width}p.bounds=pbounds;p.lines=lines;p.sidebarid=this.opts.sidebarid;this.polyset.push(p);document.status="processing poly "+name;setTimeout(this.myvar+".processPLine("+(this.polyset.length-1)+",0,'"+folderid+"')",5)};GeoXml.prototype.toggleFolder=function(i){var f=Lance$(this.myvar+"_folder"+i);var tb=Lance$(this.myvar+"TB"+i);var img=document.getElementById("img_"+i);if(f.style.display=="none"){img.src=this.moins;f.style.display="";if(tb){tb.style.fontWeight="normal"}}else{img.src=this.plus;f.style.display="none";if(tb){tb.style.fontWeight="bold"}}};GeoXml.prototype.saveJSON=function(){if(topwin.standalone){var fpath=browseForSave("Select a directory to place your json file","JSON Data Files (*.js)|*.js|All Files (*.*)|*.*","JSON-DATA");if(typeof fpath!="undefined"){var jsonstr=JSON.stringify(this.kml);saveLocalFile(fpath+".js",jsonstr)}return}if(typeof JSON!="undefined"){var jsonstr=JSON.stringify(this.kml);if(typeof serverBlessJSON!="undefined"){serverBlessJSON(escape(jsonstr),"MyKJSON")}else{this.showIt(jsonstr)}}else{alert("No JSON methods currently available")}};GeoXml.prototype.hide=function(){this.toggleContents(1,false)};GeoXml.prototype.show=function(){this.toggleContents(1,true)};GeoXml.prototype.toggleContents=function(i,show){var f=this.overlayman.folders[i];var cb;var j;var m;if(typeof f=="undefined"){this.mb.showMess("folder "+f+" not defined");return}if(show){for(j=0;j<f.length;j++){m=this.overlayman.markers[f[j]];m.hidden=false;if(this.basesidebar){cb=Lance$(this.myvar+''+f[j]+'CB');if(cb&&typeof cb!="undefined"){cb.checked=true}}if(m.hide){m.show()}else{this.map.addOverlay(m)}if(!!m.label){m.label.show()}}}else{for(j=0;j<f.length;j++){m=this.overlayman.markers[f[j]];m.hidden=true;if(this.basesidebar){cb=Lance$(this.myvar+''+f[j]+'CB');if(cb&&typeof cb!="undefined"){cb.checked=false}}if(m.hide){m.hide()}else{this.map.removeOverlay(m)}if(!!m.label){m.label.hide()}}}var sf=this.overlayman.subfolders[i];if(typeof sf!="undefined"){for(j=0;j<sf.length;j++){if(sf[j]!=i){if(this.basesidebar){cb=Lance$(this.myvar+''+sf[j]+'FCB');if(cb&&typeof cb!="undefined"){cb.checked=(!!show)}}this.toggleContents(sf[j],show)}}}};GeoXml.prototype.showHide=function(a,show,p){var m,i;if(a!=null){if(show){this.overlayman.markers[a].show();this.overlayman.markers[a].hidden=false;if(!!this.overlayman.markers[a].label){this.overlayman.markers[a].label.show()}}else{this.overlayman.markers[a].hide();this.overlayman.markers[a].hidden=true;if(!!this.overlayman.markers[a].label){this.overlayman.markers[a].label.hide()}}}else{var ms=this.polylines[p];if(show){for(i=0;i<ms.lineidx.length;i++){m=this.overlayman.markers[ms.lineidx[i]];m.hidden=false;if(m.hide){m.show()}else{this.map.addOverlay(m)}if(!!m.label){m.show()}}}else{for(i=0;i<ms.lineidx.length;i++){m=this.overlayman.markers[ms.lineidx[i]];m.hidden=true;if(m.hide){m.hide()}else{this.map.removeOverlay(m)}if(!!m.label){m.hide()}}}}};GeoXml.prototype.toggleOff=function(a,show){if(show){this.map.addOverlay(this.overlayman.markers[a]);this.overlayman.markers[a].hidden=false}else{this.map.removeOverlay(this.overlayman.markers[a]);this.overlayman.markers[a].hidden=true}if(this.labels.onMap){this.map.removeOverlay(this.labels);this.map.addOverlay(this.labels)}};GeoXml.addSidebar=function(myvar,name,type,e,graphic,ckd,i){var check="checked";if(ckd=="false"){check=""}var h="";var mid=myvar+"sb"+e;switch(type){case"marker":h='<li id="'+mid+'" onmouseout="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'mouseout\');" onmouseover="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'mouseover\');" ><input id="'+myvar+''+e+'CB" name="'+myvar+''+e+'CB" type="checkbox" style="vertical-align:middle" '+check+' onclick="'+myvar+'.showHide('+e+',checked)"><label for="'+myvar+''+e+'CB" onclick="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'click\');return true;">'+graphic+name+'</label></li>';break;case"polyline":h='<li id="'+mid+'"  onmouseout="'+myvar+'.overlayman.markers['+e+'].onOut();" onmouseover="'+myvar+'.overlayman.markers['+e+'].onOver();" ><input id="'+myvar+''+e+'CB" type="checkbox" '+check+' onclick="'+myvar+'.showHide(null,this.checked,'+i+')"><span style="margin-top:6px;"><label for="'+myvar+''+e+'CB" onclick="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'click\');return true;">&nbsp;'+graphic+name+'</label></span></li>';break;case"polygon":h='<li id="'+mid+'"  onmouseout="'+myvar+'.overlayman.markers['+e+'].onOut();" onmouseover="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'mouseover\');"><input id="'+myvar+''+e+'CB" type="checkbox" '+check+' onclick="'+myvar+'.showHide('+e+',this.checked)"><span style="margin-top:6px;"><label for="'+myvar+''+e+'CB" onclick="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'click\');return true;">&nbsp;'+graphic+name+'</label></span></nobr></li>';break;case"groundoverlay":h='<li id="'+mid+'"><input id="'+myvar+''+e+'CB" type="checkbox" '+check+' onclick="'+myvar+'.showHide('+e+',this.checked)"><span style="margin-top:6px;"><label for="'+myvar+''+e+'CB" onclick="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'click\');return false;">&nbsp;'+graphic+name+'</label></span></li>';break;case"tiledoverlay":h='<li id="'+mid+'"><nobr><input id="'+myvar+''+e+'CB" type="checkbox" '+check+' onclick="'+myvar+'.toggleOff('+e+',this.checked)"><span style="margin-top:6px;"><label for="'+myvar+''+e+'CB" oncontextMenu="'+myvar+'.upgradeLayer('+i+');return false;" onclick="GEvent.trigger('+myvar+'.overlayman.markers['+e+'],\'zoomto\');return false;">'+GeoXml.WMSICON+'&nbsp;'+name+'</label><br />'+graphic+'</span></li>';break}return h};GeoXml.addDropdown=function(myvar,name,type,i,graphic){return'<option value="'+i+'">'+name+'</option>'};GeoXml.prototype.parse=function(titles){var that=this;var names=[];if(typeof titles!="undefined"){if(typeof titles!="string"){names=titles}else{names=titles.split(",")}}that.progress+=that.urls.length;for(var u=0;u<that.urls.length;u++){var title=names[u];if(typeof title=="undefined"||!title||title=="null"){var segs=that.urls[u].split("/");title=segs[segs.length-1]}that.mb.showMess("Loading "+title);var re=/\.js$/i;if(that.urls[u].search(re)!=-1){that.loadJSONUrl(this.urls[u],title)}else{that.loadXMLUrl(this.urls[u],title)}}};GeoXml.prototype.parseString=function(doc,titles,latlon){var names=[];if(titles){names=titles.split(",")}if(typeof doc=="string"){this.docs=[doc]}else{this.docs=doc}this.progress+=this.docs.length;for(var u=0;u<this.docs.length;u++){this.mb.showMess("Processing "+names[u]);this.processing(GXml.parse(this.docs[u]),names[u],latlon)}};GeoXml.prototype.parseXML=function(doc,titles,latlon){var names=[];if(typeof titles!="undefined"){if(typeof titles=="string"){names=titles.split(",")}else{names=titles}}if(typeof doc=="array"){this.docs=doc}else{this.docs=[doc]}this.progress+=this.docs.length;for(var u=0;u<this.docs.length;u++){this.mb.showMess("Processing "+names[u]);this.processing(this.docs[u],names[u],latlon)}};var currdeschead="";GeoXml.prototype.makeDescription=function(elem,title,depth){var d="";var len=elem.childNodes.length;var ln=0;var val;while(len--){var subelem=elem.childNodes.item(ln);var nn=subelem.nodeName;var sec=nn.split(":");var base="";if(sec.length>1){base=sec[1]}else{base=nn}if(base.match(/^(visible|visibility|boundedBy|StyleMap|styleUrl|posList|coordinates|Style|Polygon|LineString|Point|LookAt|Envelope|Box|MultiPolygon|where)/)){currdeschead=""}else{if(base.match(/#text|the_geom|SchemaData|ExtendedData|#cdata-section/)){}else{if(base.match(/Snippet/i)){}else{if(base.match(/SimpleData/)){base=subelem.getAttribute("name")}currdeschead="<b>&nbsp;"+base+"&nbsp;</b> :"}}val=subelem.nodeValue;if(nn=="link"){var href=subelem.getAttribute("href");if(href){val='<a href="'+href+'">'+href+'</a>'}}if(base.match(/(\S)*(name|title)(\S)*/i)){if(!val){val=GXml.value(subelem)}title=val;if(val&&typeof title!="undefined"&&title.length>this.maxtitlewidth){this.maxtitlewidth=title.length}currdeschead=""}else{if(val&&val.match(/(\S)+/)){if(val.match(/^http:\/\/|^https:\/\//i)){val='<a href="'+val+'">'+val+'</a>'}else{if(!title||title==""){title=val;if(val&&typeof title!="undefined"&&title.length>this.maxtitlewidth){this.maxtitlewidth=title.length}}}}if(val&&(val.match(/(\s)*/)!=true)){d+=currdeschead+"<span>"+val+"</span><br />";currdeschead=""}if(subelem.childNodes.length){var con=this.makeDescription(subelem,title,depth+1);if(con){d+=con.desc;if(typeof con.title!="undefined"&&con.title){title=con.title;if(title.length>this.maxtitlewidth){this.maxtitlewidth=title.length+depth}}}}}}ln++}var dc={};dc.desc=d;dc.title=title;return dc};GeoXml.prototype.randomColor=function(){var color="#";for(var i=0;i<6;i++){var idx=parseInt(Math.random()*16,10)+1;color+=idx.toString(16)}return color};GeoXml.prototype.handleGeomark=function(mark,idx,trans){var that=this;var desc,title,name,style;title="";desc="";var styleid=0;var lat,lon;var visible=true;if(this.hideall){visible=false}var fill=true;var outline=true;var width,color,opacity,fillOpacity,fillColor;var cor=[];var node,nv,cm;var coords="";var poslist=[];var point_count=0;var box_count=0;var line_count=0;var poly_count=0;var p;var points=[];var cc,l;var pbounds=new GLatLngBounds();var coordset=mark.getElementsByTagName("coordinates");if(coordset.length<1){coordset=mark.getElementsByTagName("gml:coordinates")}if(coordset.length<1){coordset=[];poslist=mark.getElementsByTagName("gml:posList");if(poslist.length<1){poslist=mark.getElementsByTagName("posList")}for(l=0;l<poslist.length;l++){coords=" ";cor=GXml.value(poslist.item(l)).split(' ');if(that.isWFS){for(cc=0;cc<(cor.length-1);cc++){if(cor[cc]&&cor[cc]!=" "&&!isNaN(parseFloat(cor[cc]))){coords+=""+parseFloat(cor[cc])+","+parseFloat(cor[cc+1]);coords+=" ";cc++}}}else{for(cc=0;cc<(cor.length-1);cc++){if(cor[cc]&&cor[cc]!=" "&&!isNaN(parseFloat(cor[cc]))){coords+=""+parseFloat(cor[cc+1])+","+parseFloat(cor[cc]);coords+=" ";cc++}}}if(coords){if(poslist.item(l).parentNode&&(poslist.item(l).parentNode.nodeName=="gml:LineString")){line_count++}else{poly_count++}cm="<coordinates>"+coords+"</coordinates>";node=GXml.parse(cm);if(coordset.push){coordset.push(node)}}}var pos=mark.getElementsByTagName("gml:pos");if(pos.length<1){pos=mark.getElementsByTagName("gml:pos")}if(pos.length){for(p=0;p<pos.length;p++){nv=GXml.value(pos.item(p));cor=nv.split(" ");if(!that.isWFS){node=GXml.parse("<coordinates>"+cor[1]+","+cor[0]+"</coordinates>")}else{node=GXml.parse("<coordinates>"+cor[0]+","+cor[1]+"</coordinates>")}if(coordset.push){coordset.push(node)}}}}var newcoords=false;point_count=0;box_count=0;line_count=0;poly_count=0;var dc=that.makeDescription(mark,"");desc="<ul>"+dc.desc+"</ul>";if(!name&&dc.title){name=dc.title;if(name.length>this.maxtitlewidth){this.maxtitlewidth=name.length}}if(newcoords&&typeof lat!="undefined"){coordset.push(""+lon+","+lat)}var lines=[];var point;var skiprender;var bits;for(var c=0;c<coordset.length;c++){skiprender=false;if(coordset[c].parentNode&&(coordset[c].parentNode.nodeName=="gml:Box"||coordset[c].parentNode.nodeName=="gml:Envelope")){skiprender=true}coords=GXml.value(coordset[c]);coords+=" ";coords=coords.replace(/\s+/g," ");coords=coords.replace(/^ /,"");coords=coords.replace(/, /,",");var path=coords.split(" ");if(path.length==1||path[1]==""){bits=path[0].split(",");point=new GLatLng(parseFloat(bits[1])/trans.ys-trans.y,parseFloat(bits[0])/trans.xs-trans.x);that.bounds.extend(point);if(!skiprender){if(typeof name=="undefined"){name=that.unnamedplace}if(!!that.opts.createmarker){that.opts.createmarker(point,name,desc,styleid,idx,null,visible)}else{that.createMarker(point,name,desc,styleid,idx,null,visible)}}}else{for(p=0;p<path.length-1;p++){bits=path[p].split(",");point=new GLatLng(parseFloat(bits[1])/trans.ys-trans.y,parseFloat(bits[0])/trans.xs-trans.x);points.push(point);pbounds.extend(point)}that.bounds.extend(pbounds.getNorthEast());that.bounds.extend(pbounds.getSouthWest());if(!skiprender){lines.push(points)}}}if(!lines||lines.length<1){return}var linestring=mark.getElementsByTagName("LineString");if(linestring.length<1){linestring=mark.getElementsByTagName("gml:LineString")}if(linestring.length||line_count>0){if(!!style){width=style.width;color=style.color;opacity=style.opacity}else{width=this.style.width;color=this.style.color;opacity=this.style.opacity}if(typeof name=="undefined"){name=that.unnamedpath}if(!!that.opts.createpolyline){that.opts.createpolyline(lines,color,width,opacity,pbounds,name,desc,idx,visible)}else{that.createPolyline(lines,color,width,opacity,pbounds,name,desc,idx,visible)}}var polygons=mark.getElementsByTagName("Polygon");if(polygons.length<1){polygons=mark.getElementsByTagName("gml:Polygon")}if(polygons.length||poly_count>0){if(!!style){width=style.width;color=style.color;opacity=style.opacity;fillOpacity=style.fillOpacity;fillColor=style.fillColor;fill=style.file;outline=style.outline}fillColor=this.randomColor();color=this.randomColor();fill=1;outline=1;if(typeof name=="undefined"){name=that.unnamedarea}if(!!that.opts.createpolygon){that.opts.createpolygon(lines,color,width,opacity,fillColor,fillOpacity,pbounds,name,desc,idx,visible,fill,outline)}else{that.createPolygon(lines,color,width,opacity,fillColor,fillOpacity,pbounds,name,desc,idx,visible,fill,outline)}}};GeoXml.prototype.handlePlacemark=function(mark,idx,depth,fullstyle){var that=this;var desc,title,name,style;title="";desc="";var styleid=0;var lat,lon;var visible=true;if(this.hideall){visible=false}var newcoords=false;var outline;var opacity;var fillcolor;var fillOpacity;var color;var width;var pbounds;var fill;var points=[];var lines=[];var bits=[];var point;var cor,node,cm,nv;var l,pos,p,j,k,cc;var kml_id=mark.getAttribute("id");var point_count=0;var box_count=0;var line_count=0;var poly_count=0;var coords="";l=mark.getAttribute("lat");if(typeof l!="undefined"){lat=l}l=mark.getAttribute("lon");if(typeof l!="undefined"){newcoords=true;lon=l}l=0;var coordset=mark.getElementsByTagName("coordinates");if(coordset.length<1){coordset=mark.getElementsByTagName("gml:coordinates")}if(coordset.length<1){coordset=[];var poslist=mark.getElementsByTagName("gml:posList");if(!poslist.length){poslist=mark.getElementsByTagName("posList")}for(l=0;l<poslist.length;l++){coords=" ";var plitem=GXml.value(poslist.item(l))+" ";plitem=plitem.replace(/(\s)+/g,' ');cor=plitem.split(' ');if(that.isWFS){for(cc=0;cc<(cor.length-1);cc++){if(!isNaN(parseFloat(cor[cc]))&&!isNaN(parseFloat(cor[cc+1]))){coords+=""+parseFloat(cor[cc])+","+parseFloat(cor[cc+1]);coords+=" ";cc++}}}else{for(cc=0;cc<(cor.length-1);cc++){if(!isNaN(parseFloat(cor[cc]))&&!isNaN(parseFloat(cor[cc+1]))){coords+=""+parseFloat(cor[cc+1])+","+parseFloat(cor[cc]);coords+=" ";cc++}}}if(coords){if(poslist.item(l).parentNode&&(poslist.item(l).parentNode.nodeName=="gml:LineString")){line_count++}else{poly_count++}cm="<coordinates>"+coords+"</coordinates>";node=GXml.parse(cm);if(coordset.push){coordset.push(node)}}}pos=mark.getElementsByTagName("gml:pos");if(pos.length<1){pos=mark.getElementsByTagName("gml:pos")}if(pos.length){for(p=0;p<pos.length;p++){nv=GXml.value(pos.item(p))+" ";cor=nv.split(' ');if(!that.isWFS){node=GXml.parse("<coordinates>"+cor[1]+","+cor[0]+"</coordinates>")}else{node=GXml.parse("<coordinates>"+cor[0]+","+cor[1]+"</coordinates>")}if(coordset.push){coordset.push(node)}}}}for(var ln=0;ln<mark.childNodes.length;ln++){var nn=mark.childNodes.item(ln).nodeName;nv=GXml.value(mark.childNodes.item(ln));var ns=nn.split(":");var base;if(ns.length>1){base=ns[1].toLowerCase()}else{base=ns[0].toLowerCase()}var processme=false;switch(base){case"name":name=nv;if(name.length+depth>this.maxtitlewidth){this.maxtitlewidth=name.length+depth}break;case"title":title=nv;if(title.length+depth>this.maxtitlewidth){this.maxtitlewidth=title.length+depth}break;case"desc":case"description":desc=GeoXml.getDescription(mark.childNodes.item(ln));if(!desc){desc=nv}if(that.opts.preloadHTML&&desc&&desc.match(/<(\s)*img/i)){var preload=document.createElement("span");preload.style.visibility="visible";preload.style.position="absolute";preload.style.left="-1200px";preload.style.top="-1200px";preload.style.zIndex=this.overlayman.markers.length;document.body.appendChild(preload);preload.innerHTML=desc}if(desc.match(/^http:\/\//i)){var flink=desc.split(/(\s)+/);if(flink.length>1){desc="<a href=\""+flink[0]+"\">"+flink[0]+"</a>";for(var i=1;i<flink.length;i++){desc+=flink[i]}}else{desc="<a href=\""+desc+"\">"+desc+"</a>"}}break;case"visibility":if(nv=="0"){visible=false}break;case"href":case"link":if(nv){desc+="<p><a target='_blank' href='"+nv+"'>link</a></p>"}else{var href=mark.childNodes.item(ln).getAttribute("href");if(href){var imtype=mark.childNodes.item(ln).getAttribute("type");if(imtype&&imtype.match(/image/)){desc+="<img style=\"width:256px\" src='"+href+"' />"}}}break;case"author":desc+="<p><b>author:</b>"+nv+"</p>";break;case"time":desc+="<p><b>time:</b>"+nv+"</p>";break;case"lat":lat=nv;break;case"long":lon=nv;newcoords=true;break;case"point":point_count++;processme=true;break;case"line":line_count++;processme=true;break;case"box":box_count++;processme=true;break;case"polygon":poly_count++;processme=true;break;case"styleurl":styleid=nv;break;case"stylemap":var found=false;node=mark.childNodes.item(ln);for(j=0;(j<node.childNodes.length&&!found);j++){var pair=node.childNodes[j];for(k=0;(k<pair.childNodes.length&&!found);k++){var pn=pair.childNodes[k].nodeName;if(pn=="Style"){style=this.handleStyle(pair.childNodes[k]);found=true}}}break;case"Style":case"style":style=this.handleStyle(mark.childNodes.item(ln));break}if(processme){cor=nv.split(' ');coords="";for(cc=0;cc<(cor.length-1);cc++){if(!isNaN(parseFloat(cor[cc]))&&!isNaN(parseFloat(cor[cc+1]))){coords+=""+parseFloat(cor[cc+1])+","+parseFloat(cor[cc]);coords+=" ";cc++}}if(coords!=""){node=GXml.parse("<coordinates>"+coords+"</coordinates>");if(coordset.push){coordset.push(node)}}}}if(!name&&title){name=title}if(fullstyle){style=fullstyle}if(styleid){style=this.styles[styleid]}if(typeof desc=="undefined"||!desc){var dc=that.makeDescription(mark,"");desc="<ul>"+dc.desc+"</ul>";if(!name&&dc.title){name=dc.title;if((name.length+depth)>this.maxtitlewidth){this.maxtitlewidth=name.length+depth}}}if(newcoords&&typeof lat!="undefined"){if(lat){var cs=""+lon+","+lat+" ";node=GXml.parse("<coordinates>"+cs+"</coordinates>");coordset.push(node)}}for(var c=0;c<coordset.length;c++){var skiprender=false;if(coordset[c].parentNode&&(coordset[c].parentNode.nodeName.match(/^(gml:Box|gml:Envelope)/i))){skiprender=true}coords=GXml.value(coordset[c]);coords+=" ";coords=coords.replace(/(\s)+/g," ");coords=coords.replace(/^ /,"");coords=coords.replace(/, /,",");var path=coords.split(" ");if(path.length==1||path[1]==""){bits=path[0].split(",");point=new GLatLng(parseFloat(bits[1]),parseFloat(bits[0]));this.overlayman.folderBounds[idx].extend(point);if(!skiprender){if(typeof name=="undefined"){name=that.unnamedplace}if(!!that.opts.createmarker){that.opts.createmarker(point,name,desc,styleid,idx,style,visible,kml_id)}else{that.createMarker(point,name,desc,styleid,idx,style,visible,kml_id)}}}else{points=[];pbounds=new GLatLngBounds();for(p=0;p<path.length-1;p++){bits=path[p].split(",");point=new GLatLng(parseFloat(bits[1]),parseFloat(bits[0]));points.push(point);pbounds.extend(point)}this.overlayman.folderBounds[idx].extend(pbounds.getSouthWest());this.overlayman.folderBounds[idx].extend(pbounds.getNorthEast());this.bounds.extend(pbounds.getSouthWest());this.bounds.extend(pbounds.getNorthEast());if(!skiprender){lines.push(points)}}}if(!lines||lines.length<1){return}var linestring=mark.getElementsByTagName("LineString");if(linestring.length<1){linestring=mark.getElementsByTagName("gml:LineString")}if(linestring.length||line_count>0){if(!!style){width=style.width;color=style.color;opacity=style.opacity}else{width=this.style.width;color=this.style.color;opacity=this.style.opacity}if(typeof name=="undefined"){name=unnamedpath}if(!!that.opts.createpolyline){that.opts.createpolyline(lines,color,width,opacity,pbounds,name,desc,idx,visible,kml_id)}else{that.createPolyline(lines,color,width,opacity,pbounds,name,desc,idx,visible,kml_id)}}var polygons=mark.getElementsByTagName("Polygon");if(polygons.length<1){polygons=mark.getElementsByTagName("gml:Polygon")}if(polygons.length||poly_count>0){if(!!style){width=style.width;color=style.color;opacity=style.opacity;fillOpacity=style.fillOpacity;fillcolor=style.fillcolor;fill=style.fill;outline=style.outline}if(typeof fill=="undefined"){fill=1}if(typeof color=="undefined"){color=this.style.color}if(typeof fillcolor=="undefined"){fillcolor=this.randomColor()}if(typeof name=="undefined"){name=that.unnamedarea}if(!!that.opts.createpolygon){that.opts.createpolygon(lines,color,width,opacity,fillcolor,fillOpacity,pbounds,name,desc,idx,visible,fill,outline,kml_id)}else{that.createPolygon(lines,color,width,opacity,fillcolor,fillOpacity,pbounds,name,desc,idx,visible,fill,outline,kml_id)}}};GeoXml.prototype.makeIcon=function(tempstyle,href){if(!!href){if(!!this.opts.baseicon){tempstyle=new GIcon(this.opts.baseicon,href);tempstyle.href=href}else{tempstyle=new GIcon(G_DEFAULT_ICON,href);tempstyle.iconSize=new GSize(32,32);tempstyle.shadowSize=new GSize(59,32);tempstyle.dragCrossAnchor=new GPoint(2,8);tempstyle.iconAnchor=new GPoint(16,32);tempstyle.href=href;if(this.opts.printgif){var bits=href.split("/");var gif=bits[bits.length-1];gif=this.opts.printgifpath+gif.replace(/.png/i,".gif");tempstyle.printImage=gif;tempstyle.mozPrintImage=gif}if(!!this.opts.noshadow){tempstyle.shadow=""}else{if(href.indexOf("/red.png")>-1||href.indexOf("/blue.png")>-1||href.indexOf("/green.png")>-1||href.indexOf("/yellow.png")>-1||href.indexOf("/lightblue.png")>-1||href.indexOf("/purple.png")>-1||href.indexOf("/orange.png")>-1||href.indexOf("/pink.png")>-1||href.indexOf("-dot.png")>-1){tempstyle.shadow="http://maps.google.com/mapfiles/ms/icons/msmarker.shadow.png"}else if(href.indexOf("-pushpin.png")>-1||href.indexOf("/pause.png")>-1||href.indexOf("/go.png")>-1||href.indexOf("/stop.png")>-1){tempstyle.shadow="http://maps.google.com/mapfiles/ms/icons/pushpin_shadow.png"}else{var shadow=href.replace(".png",".shadow.png");if(shadow.indexOf(".jpg")){shadow=""}tempstyle.shadow=shadow}}}}if(this.opts.noshadow){tempstyle.shadow=""}return tempstyle};GeoXml.prototype.handleStyle=function(style,sid){var icons=style.getElementsByTagName("Icon");var tempstyle,opacity;var aa,bb,gg,rr;var fill,href,color,colormode,outline;if(icons.length>0){href=GXml.value(icons[0].getElementsByTagName("href")[0]);tempstyle=this.makeIcon(tempstyle,href)}var linestyles=style.getElementsByTagName("LineStyle");if(linestyles.length>0){var width=parseInt(GXml.value(linestyles[0].getElementsByTagName("width")[0]),10);if(width<1){width=5}color=GXml.value(linestyles[0].getElementsByTagName("color")[0]);aa=color.substr(0,2);bb=color.substr(2,2);gg=color.substr(4,2);rr=color.substr(6,2);color="#"+rr+gg+bb;opacity=parseInt(aa,16)/256;if(!tempstyle){tempstyle={}}tempstyle.color=color;tempstyle.width=width;tempstyle.opacity=opacity}var polystyles=style.getElementsByTagName("PolyStyle");if(polystyles.length>0){fill=parseInt(GXml.value(polystyles[0].getElementsByTagName("fill")[0]),10);outline=parseInt(GXml.value(polystyles[0].getElementsByTagName("outline")[0]),10);color=GXml.value(polystyles[0].getElementsByTagName("color")[0]);colormode=GXml.value(polystyles[0].getElementsByTagName("colorMode")[0]);if(polystyles[0].getElementsByTagName("fill").length==0){fill=1}if(polystyles[0].getElementsByTagName("outline").length==0){outline=1}aa=color.substr(0,2);bb=color.substr(2,2);gg=color.substr(4,2);rr=color.substr(6,2);color="#"+rr+gg+bb;opacity=parseInt(aa,16)/256;if(!tempstyle){tempstyle={}}tempstyle.fill=fill;tempstyle.outline=outline;if(colormode!="random"){tempstyle.fillcolor=color}else{tempstyle.colortint=color}tempstyle.fillOpacity=opacity;if(!fill){tempstyle.fillOpacity=0}if(!outline){tempstyle.opacity=0}}if(sid){this.styles["#"+sid]=tempstyle}return tempstyle};GeoXml.prototype.processKML=function(node,marks,title,sbid,depth,paren){var that=this;var thismap=this.map;var icon;var grouptitle;var keepopen=this.forcefoldersopen;if(node.nodeName=="kml"){icon=this.docicon}if(node.nodeName=="Document"){icon=this.kmlicon}if(node.nodeName=="Folder"){icon=this.foldericon;grouptitle=title}var pm=[];var sf=[];var desc="";var snip="";var i;var visible=false;if(!this.hideall){visible=true}var boundsmodified=false;var networklink=false;var url;var ground=null;var opacity=1.0;var wmsbounds;var makewms=false;var wmslist=[];var mytitle;var color;var ol;var n,ne,sw,se;var html;var kml_id=node.getAttribute("id");for(var ln=0;ln<node.childNodes.length;ln++){var nextn=node.childNodes.item(ln);var nn=nextn.nodeName;var nv=nextn.nodeValue;switch(nn){case"name":case"title":title=GXml.value(nextn);if(title.length+depth>this.maxtitlewidth){this.maxtitlewidth=title.length+depth}break;case"Folder":case"Document":sf.push(nextn);break;case"GroundOverlay":url=GXml.value(nextn.getElementsByTagName("href")[0]);var north=parseFloat(GXml.value(nextn.getElementsByTagName("north")[0]));var south=parseFloat(GXml.value(nextn.getElementsByTagName("south")[0]));var east=parseFloat(GXml.value(nextn.getElementsByTagName("east")[0]));var west=parseFloat(GXml.value(nextn.getElementsByTagName("west")[0]));var attr=GXml.value(nextn.getElementsByTagName("attribution")[0]);sw=new GLatLng(south,west);ne=new GLatLng(north,east);this.bounds.extend(sw);this.bounds.extend(ne);color=GXml.value(nextn.getElementsByTagName("color")[0]);opacity=parseInt(color.substring(1,3),16)/256;mytitle=GXml.value(nextn.getElementsByTagName("name")[0]);var arcims=/arcimsproxy/i;if(url.match(arcims)){url+="&bbox="+west+","+south+","+east+","+north+"&response=img";wmsbounds=new GLatLngBounds(sw,ne);makewms=true;ol=this.makeWMSTileLayer(url,visible,mytitle,opacity,attr,title,wmsbounds);if(ol){ol.bounds=wmsbounds;ol.title=mytitle;ol.opacity=opacity;ol.visible=visible;ol.url=url;if(!this.quiet){this.mb.showMess("Adding Tiled ArcIms Overlay "+title,1000)}wmslist.push(ol)}}else{var rs=/request=getmap/i;if(url.match(rs)){url+="&bbox="+west+","+south+","+east+","+north;wmsbounds=new GLatLngBounds(sw,ne);makewms=true;ol=this.makeWMSTileLayer(url,visible,mytitle,opacity,attr,title,wmsbounds);if(ol){ol.bounds=wmsbounds;ol.title=mytitle;ol.opacity=opacity;ol.visible=visible;ol.url=url;if(!this.quiet){this.mb.showMess("Adding Tiled WMS Overlay "+title,1000)}wmslist.push(ol)}}else{wmsbounds=new GLatLngBounds(sw,ne);ground=new GGroundOverlay(url,wmsbounds);ground.bounds=wmsbounds;ground.getBounds=function(){return this.bounds};boundsmodified=true;makewms=false}}break;case"NetworkLink":url=GXml.value(nextn.getElementsByTagName("href")[0]);networklink=true;break;case"description":case"Description":desc=GeoXml.getDescription(nextn);break;case"open":if(GXml.value(nextn)=="1"){keepopen=true}if(GXml.value(nextn)=="0"){keepopen=this.forcefoldersopen}break;case"visibility":if(GXml.value(nextn)=="0"){visible=false}break;case"snippet":snip=GXml.value(nextn);break;default:for(var k=0;k<marks.length;k++){if(nn==marks[k]){pm.push(nextn)}}}}var folderid;var idx=this.overlayman.folders.length;var me=paren;if(sf.length>1||pm.length||ground||makewms){this.overlayman.folders.push([]);this.overlayman.subfolders.push([]);this.overlayman.folderhtml.push([]);this.overlayman.folderhtmlast.push(0);this.overlayman.folderBounds.push(new GLatLngBounds());this.kml.push(new KMLObj(title,desc,false,idx));me=this.kml.length-1;folderid=this.createFolder(idx,title,sbid,icon,desc,snip,true,visible)}else{folderid=sbid}if(node.nodeName=="Folder"||node.nodeName=="Document"){this.kml[me].open=keepopen;this.kml[me].folderid=folderid}if(ground||makewms){this.kml[this.kml.length-1].visibility=visible;this.kml[this.kml.length-1].groundOverlays.push({"url":url,"bounds":wmsbounds})}if(networklink){var re=/&amp;/g;url=url.replace(re,"&");var nl=/\n/g;url=url.replace(nl,"");this.progress++;if(!topwin.standalone){if(typeof this.proxy!="undefined"){url=this.proxy+escape(url)}}var comm=this.myvar+".loadXMLUrl('"+url+"','"+title+"',null,null,'"+sbid+"');";setTimeout(comm,1000);return}if(makewms&&wmslist.length){for(var wo=0;wo<wmslist.length;wo++){var ol=wmslist[wo];var blob="";if(this.basesidebar){var n=this.overlayman.markers.length;if(!this.nolegend){var myurl=ol.url.replace(/height=(\d)+/i,"height=100");myurl=myurl.replace(/width=(\d)+/i,"width=100");blob='<img src="'+myurl+'" style="width:100px" />'}}parm=this.myvar+"$$$"+ol.title+"$$$tiledoverlay$$$"+n+"$$$"+blob+"$$$"+ol.visible+"$$$"+(this.baseLayers.length-1);var html=ol.desc;var thismap=this.map;GEvent.addListener(ol,"zoomto",function(){thismap.setZoom(thismap.getBoundsZoomLevel(this.getBounds()));thismap.panTo(this.getBounds().getCenter())});this.overlayman.AddMarker(ol,title,idx,parm,true,true)}}if(ground){if(this.basesidebar){var n=this.overlayman.markers.length;var blob='<span style="background-color:black;border:2px solid brown;">&nbsp;&nbsp;&nbsp;&nbsp;</span> ';parm=this.myvar+"$$$"+title+"$$$polygon$$$"+n+"$$$"+blob+"$$$"+visible+"$$$null";var html=desc;var thismap=this.map;GEvent.addListener(ground,"zoomto",function(){thismap.setZoom(thismap.getBoundsZoomLevel(ground.getBounds()));thismap.panTo(ground.getBounds().getCenter())});this.overlayman.folderBounds[idx].extend(ground.getBounds().getSouthWest());this.overlayman.folderBounds[idx].extend(ground.getBounds().getNorthEast());boundsmodified=true;this.overlayman.AddMarker(ground,title,idx,parm,visible)}this.map.addOverlay(ground)}for(i=0;i<pm.length;i++){this.handlePlacemark(pm[i],idx,depth+1)}var fc=0;for(i=0;i<sf.length;i++){var fid=this.processKML(sf[i],marks,title,folderid,depth+1,me);if(typeof fid=="number"&&fid!=idx){var sub=this.overlayman.folderBounds[fid];if(!sub){this.overlayman.folderBounds[fid]=new GLatLngBounds()}else{var sw=this.overlayman.folderBounds[fid].getSouthWest();var ne=this.overlayman.folderBounds[fid].getNorthEast();this.overlayman.folderBounds[idx].extend(sw);this.overlayman.folderBounds[idx].extend(ne)}this.overlayman.subfolders[idx].push(fid);if(fid!=idx){this.kml[idx].folders.push(fid)}fc++}}if(fc||pm.length||boundsmodified){this.bounds.extend(this.overlayman.folderBounds[idx].getSouthWest());this.bounds.extend(this.overlayman.folderBounds[idx].getNorthEast())}if(sf.length==0&&pm.length==0&&!this.opts.basesidebar){this.ParseURL()}return idx};GeoXml.prototype.processGPX=function(node,title,sbid,depth){var icon;if(node.nodeName=="gpx"){icon=this.gmlicon}if(node.nodeName=="rte"||node.nodeName=="trk"||node.nodeName=="trkseg"){icon=this.foldericon}var pm=[];var sf=[];var desc="";var snip="";var i,lon,lat,l;var open=this.forcefoldersopen;var coords="";var visible=true;for(var ln=0;ln<node.childNodes.length;ln++){var nextn=node.childNodes.item(ln);var nn=nextn.nodeName;if(nn=="name"||nn=="title"){title=GXml.value(nextn);if(title.length+depth>this.maxtitlewidth){this.maxtitlewidth=title.length+depth}}if(nn=="rte"){sf.push(nextn)}if(nn=="trk"){sf.push(nextn)}if(nn=="trkseg"){sf.push(nextn)}if(nn=="trkpt"){pm.push(nextn);l=nextn.getAttribute("lat");if(typeof l!="undefined"){lat=l}l=nextn.getAttribute("lon");if(typeof l!="undefined"){lon=l;coords+=lon+","+lat+" "}}if(nn=="rtept"){pm.push(nextn);l=nextn.getAttribute("lat");if(typeof l!="undefined"){lat=l}l=nextn.getAttribute("lon");if(typeof l!="undefined"){lon=l;coords+=lon+","+lat+" "}}if(nn=="wpt"){pm.push(nextn)}if(nn=="description"||nn=="desc"){desc=GXml.value(nextn)}}if(coords.length){var nc="<?xml version=\"1.0\"?><Placemark><name>"+title+"</name><description>"+desc+"</description><LineString><coordinates>"+coords+"</coordinates></LineString></Placemark>";var pathnode=GXml.parse(nc).documentElement;pm.push(pathnode)}var folderid;var idx=this.overlayman.folders.length;if(pm.length||node.nodeName=="gpx"){this.overlayman.folders.push([]);this.overlayman.subfolders.push([]);this.overlayman.folderhtml.push([]);this.overlayman.folderhtmlast.push(0);this.overlayman.folderBounds.push(new GLatLngBounds());this.kml.push(new KMLObj(title,desc,open,idx));folderid=this.createFolder(idx,title,sbid,icon,desc,snip,true,visible)}else{folderid=sbid}for(i=0;i<pm.length;i++){this.handlePlacemark(pm[i],idx,depth+1)}for(i=0;i<sf.length;i++){var fid=this.processGPX(sf[i],title,folderid,depth+1);this.overlayman.subfolders[idx].push(fid);this.overlayman.folderBounds[idx].extend(this.overlayman.folderBounds[fid].getSouthWest());this.overlayman.folderBounds[idx].extend(this.overlayman.folderBounds[fid].getNorthEast())}if(this.overlayman.folderBounds[idx]){this.bounds.extend(this.overlayman.folderBounds[idx].getSouthWest());this.bounds.extend(this.overlayman.folderBounds[idx].getNorthEast())}return idx};GeoXml.prototype.ParseURL=function(){var query=topwin.location.search.substring(1);var pairs=query.split("&");var marks=this.overlayman.markers;for(var i=0;i<pairs.length;i++){var pos=pairs[i].indexOf("=");var argname=pairs[i].substring(0,pos).toLowerCase();var val=unescape(pairs[i].substring(pos+1));var m=0;var nae;if(val){switch(argname){case"openbyid":for(m=0;m<marks.length;m++){nae=marks[m].id;if(nae==val){this.overlayman.markers[m].show();this.overlayman.markers[m].hidden=false;GEvent.trigger(this.overlayman.markers[m],"click");break}}break;case"kml":case"url":case"src":case"geoxml":this.urls.push(val);this.parse();break;case"openbyname":for(m=0;m<marks.length;m++){nae=marks[m].title;if(nae==val){this.overlayman.markers[m].show();this.overlayman.markers[m].hidden=false;GEvent.trigger(this.overlayman.markers[m],"click");break}}break}}}};GeoXml.prototype.processing=function(xmlDoc,title,latlon,desc,sbid){this.overlayman.miStart=new Date();if(!desc){desc=title}var that=this;if(!sbid){sbid=0}var shadow;var idx;var root=xmlDoc.documentElement;if(!root){alert("No document found");return 0}var placemarks=[];var name;var pname;var styles;var basename=root.nodeName;var keepopen=that.forcefoldersopen;var bases=basename.split(":");if(bases.length>1){basename=bases[1]}var bar,sid,i;that.wfs=false;if(basename=="FeatureCollection"){bar=Lance$(that.basesidebar);if(!title){title=name}if(typeof title=="undefined"){title="Un-named GML"}that.isWFS=true;if(title.length>that.maxtitlewidth){that.maxtitlewidth=title.length}if(bar){bar.style.display=""}idx=that.overlayman.folders.length;that.processGML(root,title,latlon,desc,(that.kml.length-1));that.kml[0].folders.push(idx)}if(basename=="gpx"){if(!title){title=name}if(typeof title=="undefined"){title="Un-named GPX"}that.title=title;if(title.length>that.maxtitlewidth){that.maxtitlewidth=title.length}bar=Lance$(that.basesidebar);if(bar){bar.style.display=""}idx=that.overlayman.folders.length;that.processGPX(root,title,that.basesidebar,sbid);that.kml[0].folders.push(idx)}else{if(basename=="kml"){styles=root.getElementsByTagName("Style");for(i=0;i<styles.length;i++){sid=styles[i].getAttribute("id");if(sid){that.handleStyle(styles[i],sid)}}styles=root.getElementsByTagName("StyleMap");for(i=0;i<styles.length;i++){sid=styles[i].getAttribute("id");if(sid){var found=false;var node=styles[i];for(var j=0;(j<node.childNodes.length&&!found);j++){var pair=node.childNodes[j];for(var k=0;(k<pair.childNodes.length&&!found);k++){var pn=pair.childNodes[k].nodeName;if(pn=="styleUrl"){var pid=GXml.value(pair.childNodes[k]);that.styles["#"+sid]=that.styles[pid];found=true}if(pn=="Style"){that.handleStyle(pair.childNodes[k],sid);found=true}}}}}if(!title){title=name}if(typeof title=="undefined"){title="KML Document"}that.title=title;if(title.length>that.maxtitlewidth){that.maxtitlewidth=title.length}var marknames=["Placemark"];var schema=root.getElementsByTagName("Schema");for(var s=0;s<schema.length;s++){pname=schema[s].getAttribute("parent");if(pname=="Placemark"){pname=schema[s].getAttribute("name");marknames.push(pname)}}bar=Lance$(that.basesidebar);if(bar){bar.style.display=""}idx=that.overlayman.folders.length;var paren=that.kml.length-1;var fid=that.processKML(root,marknames,title,that.basesidebar,idx,paren);that.kml[paren].folders.push(idx)}else{placemarks=root.getElementsByTagName("item");if(placemarks.length<1){placemarks=root.getElementsByTagName("atom")}if(placemarks.length<1){placemarks=root.getElementsByTagName("entry")}if(!title){title=name}if(typeof title=="undefined"){title="News Feed"}that.title=title;if(title.length>that.maxtitlewidth){that.maxtitlewidth=title.length}var style;if(that.opts.baseicon){style=that.opts.baseicon;style.href=style.image}else{style=new GIcon(G_DEFAULT_ICON,that.rssicon);style.iconSize=new GSize(32,32);style.shadowSize=new GSize(59,32);style.dragCrossAnchor=new GPoint(2,8);style.iconAnchor=new GPoint(16,32);style.href=that.rssicon;shadow=that.rssicon.replace(".png",".shadow.png");style.shadow=shadow+"_shadow.png"}style.color="#00FFFF";style.width="3";style.opacity=0.50;if(!desc){desc="RSS feed"}that.kml[0].folders.push(that.overlayman.folders.length);if(placemarks.length){bar=Lance$(that.basesidebar);if(bar){bar.style.display=""}that.overlayman.folders.push([]);that.overlayman.folderhtml.push([]);that.overlayman.folderhtmlast.push(0);that.overlayman.folderBounds.push(new GLatLngBounds());idx=that.overlayman.folders.length-1;that.kml.push(new KMLObj(title,desc,keepopen,idx));that.kml[that.kml.length-1].open=keepopen;if(that.basesidebar){var visible=true;if(that.hideall){visible=false}var folderid=that.createFolder(idx,title,that.basesidebar,that.globalicon,desc,null,keepopen,visible)}for(i=0;i<placemarks.length;i++){that.handlePlacemark(placemarks[i],idx,sbid,style)}}}}that.progress--;if(that.progress==0){GEvent.trigger(that,"initialized");if(!that.opts.sidebarid){that.mb.showMess("Finished Parsing",1000)}if(!that.opts.nozoom&&!that.basesidebar){that.map.setZoom(that.map.getBoundsZoomLevel(that.bounds));that.map.setCenter(that.bounds.getCenter())}}};GeoXml.prototype.createFolder=function(idx,title,sbid,icon,desc,snippet,keepopen,visible){var sb=Lance$(sbid);keepopen=true;var folderid=this.myvar+'_folder'+idx;var checked="";if(visible){checked=" checked "}img=this.plus;this.overlayman.folderhtml[folderid]="";var disp="display:block";var fw="font-weight:normal";if(typeof keepopen=="undefined"||!keepopen){disp="display:none";fw="font-weight:bold"}if(!desc||desc==""){desc=title}desc=escape(desc);var htm='<ul><span title="'+snippet+'" id="'+this.myvar+'TB'+idx+'" oncontextmenu=\"'+this.myvar+'.saveJSON('+idx+');\" onclick="'+this.myvar+'.toggleFolder('+idx+')">';htm+='<img style=\"vertical-align:middle;padding:0\" height=\"13\" border=\"0\" src="'+img+'" id="img_'+idx+'"/></span>&nbsp;';htm+='<input type="checkbox" id="'+this.myvar+''+idx+'FCB" style="vertical-align:middle" ';htm+=checked;htm+='onclick="'+this.myvar+'.toggleContents('+idx+',this.checked);'+this.myvar+'.overlayman.zoomToFolder('+idx+')">';htm+='&nbsp;<span title="'+snippet+'" id="'+this.myvar+'TB'+idx+'" oncontextmenu=\"'+this.myvar+'.saveJSON('+idx+');\" onclick="'+this.myvar+'.toggleFolder('+idx+')">';htm+='<img style=\"vertical-align:text-top;padding:0;margin:0\" height=\"16\" border=\"0\" src="'+icon+'" />&nbsp;';htm+='<label>'+title+'</label></span><br><div id=\"'+folderid+'\" style="'+disp+'"></div></ul>';if(sb){sb.innerHTML=sb.innerHTML+htm}return folderid};GeoXml.prototype.processGML=function(root,title,latlon,desc,me){var that=this;var isWFS=false;var placemarks=[];var srsName;var isLatLon=false;var xmin=0;var ymin=0;var xscale=1;var yscale=1;var points,pt,pts;var coor,coorstr;var x,y,k,i;var name=title;var visible=true;if(this.hideall){visible=false}var keepopen=that.allfoldersopen;var pt1,pt2,box;for(var ln=0;ln<root.childNodes.length;ln++){var kid=root.childNodes.item(ln).nodeName;var n=root.childNodes.item(ln);if(kid=="gml:boundedBy"||kid=="boundedBy"){for(var j=0;j<n.childNodes.length;j++){var nn=n.childNodes.item(j).nodeName;var llre=/CRS:84|(4326|4269)$/i;if(nn=="Box"||nn=="gml:Box"){box=n.childNodes.item(j);srsName=n.childNodes.item(j).getAttribute("srsName");if(srsName.match(llre)){isLatLon=true}else{alert("SRSname ="+srsName+"; attempting to create transform");for(k=0;k<box.childNodes.length;k++){coor=box.childNodes.item(k);if(coor.nodeName=="gml:coordinates"||coor.nodeName=="coordinates"){coorstr=GXml.value(coor);pts=coorstr.split(" ");pt1=pts[0].split(",");pt2=pts[1].split(",");xscale=(parseFloat(pt2[0])-parseFloat(pt1[0]))/(latlon.xmax-latlon.xmin);yscale=(parseFloat(pt2[1])-parseFloat(pt1[1]))/(latlon.ymax-latlon.ymin);xmin=pt1[0]/xscale-latlon.xmin;ymin=pt1[1]/yscale-latlon.ymin}}}break}if(nn=="Envelope"||nn=="gml:Envelope"){box=n.childNodes.item(j);srsName=n.childNodes.item(j).getAttribute("srsName");if(srsName.match(llre)){isLatLon=true}else{alert("SRSname ="+srsName+"; attempting to create transform");for(k=0;k<box.childNodes.length;k++){coor=box.childNodes.item(k);if(coor.nodeName=="gml:coordinates"||coor.nodeName=="coordinates"){pts=coor.split(" ");var b={"xmin":100000000,"ymin":100000000,"xmax":-100000000,"ymax":-100000000};for(var m=0;m<pts.length-1;m++){pt=pts[m].split(",");x=parseFloat(pt[0]);y=parseFloat(pt[1]);if(x<b.xmin){b.xmin=x}if(y<b.ymin){b.ymin=y}if(x>b.xmax){b.xmax=x}if(y>b.ymax){b.ymax=y}}xscale=(b.xmax-b.xmin)/(latlon.xmax-latlon.xmin);yscale=(b.ymax-b.ymin)/(latlon.ymax-latlon.ymin);xmin=b.xmin/xscale-latlon.xmin;ymin=b.ymin/yscale-latlon.ymin}}}}break}}if(kid=="gml:featureMember"||kid=="featureMember"){placemarks.push(n)}}var folderid;if(!title){title=name}this.title=title;if(placemarks.length<1){alert("No features found in "+title);this.mb.showMess("No features found in "+title,3000)}else{this.mb.showMess("Adding "+placemarks.length+" features found in "+title);this.overlayman.folders.push([]);this.overlayman.folderhtml.push([]);this.overlayman.folderhtmlast.push(0);this.overlayman.folderBounds.push(new GLatLngBounds());var idx=this.overlayman.folders.length-1;if(this.basesidebar){folderid=this.createFolder(idx,title,this.basesidebar,this.gmlicon,desc,null,keepopen,visible)}this.kml.push(new KMLObj(title,desc,true,idx));this.kml[me].open=that.opts.allfoldersopen;this.kml[me].folderid=folderid;if(isLatLon){for(i=0;i<placemarks.length;i++){this.handlePlacemark(placemarks[i],idx,0)}}else{var trans={"xs":xscale,"ys":yscale,"x":xmin,"y":ymin};for(i=0;i<placemarks.length;i++){this.handleGeomark(placemarks[i],idx,trans,0)}}}};PolylineEncoder=function(numLevels,zoomFactor,verySmall,forceEndpoints){var i;if(!numLevels){numLevels=18}if(!zoomFactor){zoomFactor=2}if(!verySmall){verySmall=0.0000001}if(!forceEndpoints){forceEndpoints=true}this.numLevels=numLevels;this.zoomFactor=zoomFactor;this.verySmall=verySmall;this.veryTiny=verySmall*verySmall;this.forceEndpoints=forceEndpoints;this.zoomLevelBreaks=[];for(i=0;i<numLevels;i++){this.zoomLevelBreaks[i]=verySmall*Math.pow(zoomFactor,numLevels-i-1);this.zoomLevelBreaks[i]*=this.zoomLevelBreaks[i]}};PolylineEncoder.prototype.dpEncode=function(points){var absMaxDist=0;var stack=[];var dists=[];var maxDist,maxLoc,temp,first,last,current;var i,encodedPoints,encodedLevels;var segmentLength;stack.push([0,points.length-1]);while(stack.length>0){current=stack.pop();maxDist=0;segmentLength=Math.pow(points[current[1]].lat()-points[current[0]].lat(),2)+Math.pow(points[current[1]].lng()-points[current[0]].lng(),2);for(i=current[0]+1;i<current[1];i++){temp=this.distance(points[i],points[current[0]],points[current[1]],segmentLength);if(temp>maxDist){maxDist=temp;maxLoc=i;if(maxDist>absMaxDist){absMaxDist=maxDist}}}if(maxDist>this.veryTiny){dists[maxLoc]=maxDist;stack.push([current[0],maxLoc]);stack.push([maxLoc,current[1]])}}encodedPoints=this.createEncodings(points,dists);encodedLevels=this.encodeLevels(points,dists,absMaxDist);return{encodedPoints:encodedPoints,encodedLevels:encodedLevels,encodedPointsLiteral:encodedPoints.replace(/\\/g,"\\\\")}};PolylineEncoder.prototype.dpEncodeToJSON=function(points,color,weight,opacity){var result;result=this.dpEncode(points);return{color:color,weight:weight,opacity:opacity,points:result.encodedPoints,levels:result.encodedLevels,numLevels:this.numLevels,zoomFactor:this.zoomFactor,literals:result.encodePointsLiteral}};PolylineEncoder.prototype.dpEncodeToGPolyline=function(points,color,weight,opacity){return new GPolyline.fromEncoded(this.dpEncodeToJSON(points,color,weight,opacity))};PolylineEncoder.prototype.dpEncodeToGPolygon=function(pointsArray,boundaryColor,boundaryWeight,boundaryOpacity,fillColor,fillOpacity,fill,outline){var i,boundaries;boundaries=[];for(i=0;i<pointsArray.length;i++){boundaries.push(this.dpEncodeToJSON(pointsArray[i],boundaryColor,boundaryWeight,boundaryOpacity))}return new GPolygon.fromEncoded({polylines:boundaries,color:fillColor,opacity:fillOpacity,fill:fill,outline:outline})};PolylineEncoder.prototype.distance=function(p0,p1,p2,segLength){var u,out;var dlat2=p2.lat()-p1.lat();var dlong1=p2.lng()-p1.lng();if(dlat2==0&&dlong1==0){out=Math.pow(p2.lat()-p0.lat(),2)+Math.pow(p2.lng()-p0.lng(),2)}else{var dlat0=p0.lat()-p1.lat();var dlong0=p0.lng()-p1.lng();u=((dlat0)*(dlat2)+(dlong0)*(dlong1))/segLength;if(u<=0){out=Math.pow(dlat0,2)+Math.pow(dlong0,2)}if(u>=1){out=Math.pow(p0.lat()-p2.lat(),2)+Math.pow(p0.lng()-p2.lng(),2)}if(0<u&&u<1){out=Math.pow(dlat0-u*(dlat2),2)+Math.pow(dlong0-u*(dlong1),2)}}return out};PolylineEncoder.prototype.createEncodings=function(points,dists){var i;var j;var floor=Math.floor;var len=points.length-2;var late5;var lnge5;var dlat=floor(points[0].lat()*1e5);var dlng=floor(points[0].lng()*1e5);var plat=dlat;var plng=dlng;var encoded_points=this.encodeSignedNumber(dlat)+this.encodeSignedNumber(dlng);for(j=len;j>0;j--){i=len-j+1;if(dists[i]!=undefined){late5=floor(points[i].lat()*1e5);lnge5=floor(points[i].lng()*1e5);dlat=late5-plat;dlng=lnge5-plng;plat=late5;plng=lnge5;encoded_points+=this.encodeSignedNumber(dlat)+this.encodeSignedNumber(dlng)}}dlat=floor(points[len+1].lat()*1e5)-plat;dlng=floor(points[len+1].lng()*1e5)-plng;encoded_points+=this.encodeSignedNumber(dlat)+this.encodeSignedNumber(dlng);return encoded_points};PolylineEncoder.prototype.computeLevel=function(dd){var lev;if(dd>this.veryTiny){lev=0;while(dd<this.zoomLevelBreaks[lev]){lev++}return lev}};PolylineEncoder.prototype.encodeLevels=function(points,dists,absMaxDist){var i;var encoded_levels="";if(this.forceEndpoints){encoded_levels+=this.encodeNumber(this.numLevels-1)}else{encoded_levels+=this.encodeNumber(this.numLevels-this.computeLevel(absMaxDist)-1)}for(i=1;i<points.length-1;i++){if(dists[i]!=undefined){encoded_levels+=this.encodeNumber(this.numLevels-this.computeLevel(dists[i])-1)}}if(this.forceEndpoints){encoded_levels+=this.encodeNumber(this.numLevels-1)}else{encoded_levels+=this.encodeNumber(this.numLevels-this.computeLevel(absMaxDist)-1)}return encoded_levels};PolylineEncoder.prototype.encodeNumber=function(num){var encodeString="";var nextValue,finalValue;while(num>=0x20){nextValue=(0x20|(num&0x1f))+63;encodeString+=(String.fromCharCode(nextValue));num>>=5}finalValue=num+63;encodeString+=(String.fromCharCode(finalValue));return encodeString};PolylineEncoder.prototype.encodeSignedNumber=function(num){var sgn_num=num<<1;if(num<0){sgn_num=~(sgn_num)}return(this.encodeNumber(sgn_num))};PolylineEncoder.latLng=function(y,x){this.y=y;this.x=x};PolylineEncoder.latLng.prototype.lat=function(){return this.y};PolylineEncoder.latLng.prototype.lng=function(){return this.x};PolylineEncoder.pointsToLatLngs=function(points){var i,latLngs;latLngs=[];for(i=0;i<points.length;i++){latLngs.push(new PolylineEncoder.latLng(points[i][0],points[i][1]))}return latLngs};PolylineEncoder.pointsToGLatLngs=function(points){var i,gLatLngs;gLatLngs=[];for(i=0;i<points.length;i++){gLatLngs.push(new GLatLng(points[i][0],points[i][1]))}return gLatLngs};GPolyline.prototype.getPoint=function(){return(this.getVertex(Math.round(this.getVertexCount()/2)))};GPolyline.prototype.computeBounds=function(){var bounds=new GLatLngBounds();for(var i=0;i<this.getVertexCount();i++){var v=this.getVertex(i);if(v){bounds.extend(v)}}this.bounds=bounds;return bounds};GTileLayerOverlay.prototype.getBounds=function(){return this.bounds};GPolyline.prototype.getBounds=function(){if(typeof this.bounds!="undefined"){return this.bounds}else{return(this.computeBounds())}};GTileLayer.prototype.getBounds=function(){return this.bounds};GPolygon.prototype.getPoint=function(){return(this.getBounds().getCenter())};Clusterer=function(map,paren){this.myvar=paren.myvar;this.paren=paren;this.map=map;this.markers=[];this.byid=[];this.byname=[];this.clusters=[];this.timeout=null;this.folders=[];this.folderBounds=[];this.folderhtml=[];this.folderhtmlast=[];this.subfolders=[];this.currentZoomLevel=map.getZoom();this.isParsed=false;this.maxVisibleMarkers=Clusterer.defaultMaxVisibleMarkers;this.gridSize=Clusterer.defaultGridSize;this.minMarkersPerCluster=Clusterer.defaultMinMarkersPerCluster;this.maxLinesPerInfoBox=Clusterer.defaultMaxLinesPerInfoBox;this.icon=Clusterer.defaultIcon;GEvent.addListener(map,'zoomend',Clusterer.MakeCaller(Clusterer.Display,this));GEvent.addListener(map,'moveend',Clusterer.MakeCaller(Clusterer.Display,this));GEvent.addListener(map,'infowindowclose',Clusterer.MakeCaller(Clusterer.PopDown,this))};Clusterer.defaultMaxVisibleMarkers=650;Clusterer.defaultGridSize=15;Clusterer.defaultMinMarkersPerCluster=5;Clusterer.defaultMaxLinesPerInfoBox=15;Clusterer.defaultIcon=new GIcon();Clusterer.defaultIcon.image='http://www.acme.com/resources/images/markers/blue_large.PNG';Clusterer.defaultIcon.shadow='http://www.acme.com/resources/images/markers/shadow_large.PNG';Clusterer.defaultIcon.iconSize=new GSize(30,51);Clusterer.defaultIcon.shadowSize=new GSize(56,51);Clusterer.defaultIcon.iconAnchor=new GPoint(13,34);Clusterer.defaultIcon.infoWindowAnchor=new GPoint(13,3);Clusterer.defaultIcon.infoShadowAnchor=new GPoint(27,37);Clusterer.prototype.SetIcon=function(icon){this.icon=icon};Clusterer.prototype.SetMaxVisibleMarkers=function(n){this.maxVisibleMarkers=n};Clusterer.prototype.SetMinMarkersPerCluster=function(n){this.minMarkersPerCluster=n};Clusterer.prototype.SetMaxLinesPerInfoBox=function(n){this.maxLinesPerInfoBox=n};Clusterer.prototype.AddMarker=function(marker,title,idx,sidebar,visible,forcevisible){if(marker.setMap!=null){marker.setMap(this.map)}marker.hidden=false;if(visible!=true){marker.hidden=true}if(this.paren.hideall){marker.hidden=true}marker.title=title;this.folders[idx].push(this.markers.length);var bounds=this.map.getBounds();var vis=false;if(typeof marker.getBounds=="undefined"){if(bounds.contains(marker.getPoint())){vis=true}}else{var b=marker.getBounds();if(!b.isEmpty()){if(bounds.intersects(b)){vis=true}}}if(forcevisible){vis=true}this.markers.push(marker);if(vis){marker.onMap=true;this.map.addOverlay(marker);if(marker.hidden){marker.hide();if(!!marker.label){marker.label.hide()}}}this.DisplayLater();if(sidebar){this.folderhtml[idx].push(sidebar)}};Clusterer.prototype.zoomToFolder=function(idx){var bounds=this.folderBounds[idx];this.map.setZoom(this.map.getBoundsZoomLevel(bounds));this.map.panTo(bounds.getCenter())};Clusterer.prototype.RemoveMarker=function(marker){for(var i=0;i<this.markers.length;++i){if(this.markers[i]==marker){if(marker.onMap){this.map.removeOverlay(marker)}if(!!marker.label){this.map.removeOverlay(marker.label)}for(var j=0;j<this.clusters.length;++j){var cluster=this.clusters[j];if(cluster!=null){for(var k=0;k<cluster.markers.length;++k){if(cluster.markers[k]==marker){cluster.markers[k]=null;--cluster.markerCount;break}}if(cluster.markerCount==0){this.ClearCluster(cluster);this.clusters[j]=null}else{if(cluster==this.poppedUpCluster){Clusterer.RePop(this)}}}}this.markers[i]=null;break}}this.DisplayLater()};Clusterer.prototype.DisplayLater=function(){if(this.timeout!=null){clearTimeout(this.timeout)}this.timeout=setTimeout(Clusterer.MakeCaller(Clusterer.Display,this),50)};Clusterer.Display=function(clusterer){var i,j,k,marker,cluster,l;clearTimeout(clusterer.timeout);var update_side=false;var count=0;var clon,bits;var vis;var content;if(clusterer.paren.basesidebar){for(k=0;k<clusterer.folderhtml.length;k++){var curlen=clusterer.folderhtml[k].length;var con=clusterer.folderhtmlast[k];if(con<curlen){var destid=clusterer.paren.myvar+"_folder"+k;var dest=Lance$(destid);if(dest){if(clusterer.paren.opts.sortbyname){content=dest.innerHTML;clon=clusterer.folderhtml[k].sort();for(l=0;l<curlen;l++){bits=clon[l].split("$$$",7);content+=clusterer.paren.sidebarfn(bits[0],bits[1],bits[2],bits[3],bits[4],bits[5],bits[6])}}else{content=dest.innerHTML;clon=clusterer.folderhtml[k];for(l=con;l<curlen;l++){bits=clon[l].split("$$$",7);content+=clusterer.paren.sidebarfn(bits[0],bits[1],bits[2],bits[3],bits[4],bits[5],bits[6])}}clusterer.folderhtmlast[k]=curlen;dest.innerHTML=content;if(clusterer.paren.forcefoldersopen){dest.style.display="block"}update_side=true;count=curlen}else{}}}}if(update_side&&count>0){if(clusterer.paren.progress==0){clusterer.paren.setFolders();GEvent.trigger(clusterer.paren,"parsed");if(!clusterer.paren.opts.sidebarid){clusterer.paren.mb.showMess("Finished Parsing",1000)}var mifinish=new Date();var sec=((mifinish-clusterer.miStart)/1000+" seconds");clusterer.paren.mb.showMess("Loaded "+count+"  GeoXML elements in "+sec,5000);clusterer.paren.ParseURL();if(!clusterer.paren.opts.nozoom){clusterer.paren.map.setZoom(clusterer.paren.map.getBoundsZoomLevel(clusterer.paren.bounds));clusterer.paren.map.setCenter(clusterer.paren.bounds.getCenter())}}}if(update_side&&typeof resizeKML!="undefined"){resizeKML()}var bounds,sw,ne,dx,dy;var newZoomLevel=clusterer.map.getZoom();if(newZoomLevel!=clusterer.currentZoomLevel){for(i=0;i<clusterer.clusters.length;++i){if(clusterer.clusters[i]!=null){clusterer.ClearCluster(clusterer.clusters[i]);clusterer.clusters[i]=null}}clusterer.clusters.length=0;clusterer.currentZoomLevel=newZoomLevel}bounds=clusterer.map.getBounds();sw=bounds.getSouthWest();ne=bounds.getNorthEast();dx=ne.lng()-sw.lng();dy=ne.lat()-sw.lat();if(dx<300&&dy<150){dx*=0.05;dy*=0.05;bounds=new GLatLngBounds(new GLatLng(sw.lat()-dy,sw.lng()-dx),new GLatLng(ne.lat()+dy,ne.lng()+dx))}var visibleMarkers=[];var nonvisibleMarkers=[];var viscount=0;for(i=0;i<clusterer.markers.length;++i){marker=clusterer.markers[i];vis=false;if(marker!=null){var mid=clusterer.paren.myvar+"sb"+i;if(typeof marker.getBounds=="undefined"){if(bounds.contains(marker.getPoint())){vis=true;if(Lance$(mid)){Lance$(mid).className="inView"}viscount++}else{if(Lance$(mid)){Lance$(mid).className="outView"}}}else{var b=marker.getBounds();if(Lance$(mid)){if(bounds.intersects(b)){Lance$(mid).className="inView"}else{Lance$(mid).className="outView"}}vis=true}if(vis){visibleMarkers.push(i)}else{nonvisibleMarkers.push(i)}}}for(i=0;i<nonvisibleMarkers.length;++i){marker=clusterer.markers[nonvisibleMarkers[i]];if(marker.onMap){if(!!marker.label){marker.label.hide()}clusterer.map.removeOverlay(marker);marker.onMap=false}}for(i=0;i<clusterer.clusters.length;++i){cluster=clusterer.clusters[i];if(cluster!=null&&cluster.marker){vis=false;if(typeof cluster.marker.getBounds=="undefined"){if(bounds.contains(cluster.marker.getPoint())){vis=true}}else{vis=true}if(!vis&&cluster.onMap){clusterer.map.removeOverlay(cluster.marker);cluster.onMap=false}}}if(viscount>clusterer.maxVisibleMarkers){if(!update_side){clusterer.paren.mb.showMess("Clustering on "+viscount+"  GeoXML elements")}var latRange=bounds.getNorthEast().lat()-bounds.getSouthWest().lat();var latInc=latRange/clusterer.gridSize;var lngInc=latInc/Math.cos((bounds.getNorthEast().lat()+bounds.getSouthWest().lat())/2.0*Math.PI/180.0);for(var lat=bounds.getSouthWest().lat();lat<=bounds.getNorthEast().lat();lat+=latInc){for(var lng=bounds.getSouthWest().lng();lng<=bounds.getNorthEast().lng();lng+=lngInc){cluster={};cluster.clusterer=clusterer;cluster.bounds=new GLatLngBounds(new GLatLng(lat,lng),new GLatLng(lat+latInc,lng+lngInc));cluster.markers=[];cluster.markerCount=0;cluster.onMap=false;cluster.marker=null;clusterer.clusters.push(cluster)}}for(i=0;i<visibleMarkers.length;++i){marker=clusterer.markers[visibleMarkers[i]];if(marker!=null&&!marker.inCluster){for(j=0;j<clusterer.clusters.length;++j){cluster=clusterer.clusters[j];if(cluster!=null){vis=false;if(typeof marker.getBounds=="undefined"){if(cluster.bounds.contains(marker.getPoint())){vis=true}}if(vis){marker.inCluster=true;clusterer.clusters[j].markers.push(marker);++clusterer.clusters[j].markerCount}}}}}for(i=0;i<clusterer.clusters.length;++i){if(clusterer.clusters[i]!=null&&clusterer.clusters[i].markerCount<clusterer.minMarkersPerCluster){clusterer.ClearCluster(clusterer.clusters[i]);clusterer.clusters[i]=null}}for(i=clusterer.clusters.length-1;i>=0;--i){if(clusterer.clusters[i]!=null){break}else{--clusterer.clusters.length}}for(i=0;i<clusterer.clusters.length;++i){cluster=clusterer.clusters[i];if(cluster!=null){for(j=0;j<cluster.markers.length;++j){marker=cluster.markers[j];if(marker!=null&&marker.onMap){clusterer.map.removeOverlay(marker);marker.onMap=false;if(!!marker.label){marker.label.hide()}}}}}for(i=0;i<clusterer.clusters.length;++i){cluster=clusterer.clusters[i];if(cluster!=null&&cluster.marker==null){var xTotal=0.0;var yTotal=0.0;for(j=0;j<cluster.markers.length;++j){marker=cluster.markers[j];if(marker!=null){xTotal+=(+marker.getPoint().lng());yTotal+=(+marker.getPoint().lat())}}var location=new GLatLng(yTotal/cluster.markerCount,xTotal/cluster.markerCount);marker=new GMarker(location,{icon:clusterer.icon});cluster.marker=marker;GEvent.addListener(marker,'click',Clusterer.MakeCaller(Clusterer.PopUp,cluster))}}}if(!update_side&&viscount&&(clusterer.paren.quiet!=true)){clusterer.paren.mb.showMess("Showing "+viscount+"  GeoXML elements",500)}for(i=0;i<visibleMarkers.length;++i){marker=clusterer.markers[visibleMarkers[i]];if(marker!=null&&!marker.onMap&&!marker.inCluster){if(marker.addedToMap!=null){marker.addedToMap()}if(marker.hidden){if(marker.hide){clusterer.map.addOverlay(marker);marker.hide();if(!!marker.label){marker.label.hide()}}}else{clusterer.map.addOverlay(marker);if(!!marker.label){marker.label.show()}}marker.onMap=true}}for(i=0;i<clusterer.clusters.length;++i){cluster=clusterer.clusters[i];if(cluster!=null&&cluster.marker){vis=false;if(typeof marker.getPoint!="undefined"){if(bounds.contains(cluster.marker.getPoint())){vis=true}}else{if(bounds.intersects(cluster.marker.getBounds())){vis=true}}if(!cluster.onMap&&vis){clusterer.map.addOverlay(cluster.marker);cluster.onMap=true}}}Clusterer.RePop(clusterer)};Clusterer.PopUp=function(cluster){var clusterer=cluster.clusterer;var html='<table width="300">';var n=0;for(var i=0;i<cluster.markers.length;++i){var marker=cluster.markers[i];if(marker!=null){++n;html+='<tr><td>';if(typeof marker.getIcon!="undefined"&&marker.getIcon().smallImage!=null){html+='<img src="'+marker.getIcon().smallImage+'">'}else{html+='<img src="'+marker.getIcon().image+'" width="'+(marker.getIcon().iconSize.width/2)+'" height="'+(marker.getIcon().iconSize.height/2)+'">'}html+='</td><td>'+marker.title+'</td></tr>';if(n==clusterer.maxLinesPerInfoBox-1&&cluster.markerCount>clusterer.maxLinesPerInfoBox){html+='<tr><td colspan="2">...and '+(cluster.markerCount-n)+' more</td></tr>';break}}}html+='</table>';clusterer.map.closeInfoWindow();cluster.marker.openInfoWindowHtml(html);clusterer.poppedUpCluster=cluster};Clusterer.RePop=function(clusterer){if(clusterer.poppedUpCluster!=null){Clusterer.PopUp(clusterer.poppedUpCluster)}};Clusterer.PopDown=function(clusterer){clusterer.poppedUpCluster=null};Clusterer.prototype.ClearCluster=function(cluster){var i,marker;for(i=0;i<cluster.markers.length;++i){if(cluster.markers[i]!=null){cluster.markers[i].inCluster=false;cluster.markers[i]=null}}cluster.markers.length=0;cluster.markerCount=0;if(cluster==this.poppedUpCluster){this.map.closeInfoWindow()}if(cluster.onMap){this.map.removeOverlay(cluster.marker);cluster.onMap=false}};Clusterer.MakeCaller=function(func,arg){return function(){func(arg)}};GMarker.prototype.setMap=function(map){this.map=map};GMarker.prototype.addedToMap=function(){this.map=null};GMarker.prototype.origOpenInfoWindow=GMarker.prototype.openInfoWindow;GMarker.prototype.openInfoWindow=function(node,opts){if(this.map!=null){return this.map.openInfoWindow(this.getPoint(),node,opts)}else{return this.origOpenInfoWindow(node,opts)}};GMarker.prototype.origOpenInfoWindowHtml=GMarker.prototype.openInfoWindowHtml;GMarker.prototype.openInfoWindowHtml=function(html,opts){if(this.map!=null){return this.map.openInfoWindowHtml(this.getPoint(),html,opts)}else{return this.origOpenInfoWindowHtml(html,opts)}};GMarker.prototype.origOpenInfoWindowTabs=GMarker.prototype.openInfoWindowTabs;GMarker.prototype.openInfoWindowTabs=function(tabNodes,opts){if(this.map!=null){return this.map.openInfoWindowTabs(this.getPoint(),tabNodes,opts)}else{return this.origOpenInfoWindowTabs(tabNodes,opts)}};GMarker.prototype.origOpenInfoWindowTabsHtml=GMarker.prototype.openInfoWindowTabsHtml;GMarker.prototype.openInfoWindowTabsHtml=function(tabHtmls,opts){if(this.map!=null){return this.map.openInfoWindowTabsHtml(this.getPoint(),tabHtmls,opts)}else{return this.origOpenInfoWindowTabsHtml(tabHtmls,opts)}};GMarker.prototype.origShowMapBlowup=GMarker.prototype.showMapBlowup;GMarker.prototype.showMapBlowup=function(opts){if(this.map!=null){return this.map.showMapBlowup(this.getPoint(),opts)}else{return this.origShowMapBlowup(opts)}};MessageBox=function(map,paren,myvar,mb){this.map=map;this.paren=paren;this.myvar=paren.myvar+"."+myvar;this.eraseMess=null;this.centerMe=null;this.mb=null;if(mb){this.mb=mb}this.id=this.myvar+"_message"};MessageBox.prototype.hideMess=function(){this.mb.style.visiblity="hidden";this.mb.style.left="-1200px";this.mb.style.top="-1200px"};MessageBox.prototype.centerThis=function(){var c=this.map.getObjCenter();if(!this.mb){this.mb=Lance$(this.id)}if(this.centerMe){clearTimeout(this.centerMe)}if(this.mb){var nw=this.mb.clientWidth;if(nw>this.map.getSize().width){nw=parseInt(2*this.map.getSize().width/3,10);this.mb.style.width=nw+"px";this.centerMe=setTimeout(this.myvar+".centerThis()",5);return}this.mb.style.left=(c.x-(nw/2))+"px";this.mb.style.top=(c.y-20-(this.mb.clientHeight/2))+"px"}else{this.centerMe=setTimeout(this.myvar+".centerThis()",10)}};MessageBox.prototype.showMess=function(val,temp){val=unescape(val);if(this.eraseMess){clearTimeout(this.eraseMess)}if(!this.mb){this.mb=Lance$(this.id)}if(this.mb){this.mb.innerHTML="<span>"+val+"</span>";if(temp){this.eraseMess=setTimeout(this.myvar+".hideMess();",temp)}this.mb.style.left="-1200px";this.mb.style.top="-1200px";this.mb.style.width="";this.mb.style.height="";this.centerMe=setTimeout(this.myvar+".centerThis()",5);this.mb.style.visibility="visible"}else{var d=document.createElement("div");d.innerHTML=val;d.id=this.myvar+"_message";d.style.position="absolute";d.style.backgroundColor=this.style.backgroundColor||"silver";d.style.opacity=this.style.opacity||0.80;d.style.filter="alpha(opacity="+parseInt(d.style.opacity*100,10)+")";d.style.color=this.style.color||"black";d.style.padding=this.style.padding||"6px";d.style.borderWidth=this.style.borderWidth||"3px";d.style.borderColor=this.style.borderColor||"";d.style.backgroundImage=this.style.backgroundImage||"";d.style.borderStyle=this.style.borderStyle||"outset";d.style.visibility="visible";d.style.left="-1200px";d.style.top="-1200px";this.centerMe=setTimeout(this.myvar+".centerThis()",5);d.style.zIndex=1000;document.body.appendChild(d)}};GMap2.prototype.getObjCenter=function(){var obj=this.getContainer();var container=obj;var y=0;var x=0;if(obj.offsetParent){x=obj.offsetLeft;y=obj.offsetTop;obj=obj.offsetParent;while(obj){x+=obj.offsetLeft;y+=obj.offsetTop;obj=obj.offsetParent}return new GPoint(x+parseInt(this.getSize().width,10)/2,y+parseInt(this.getSize().height,10)/2)}};GeoXml.prototype.loadJSONUrl=function(url,title,latlon,desc,idx){var that=this;GDownloadUrl(url,function(doc){that.parseJSON(doc,title,latlon,desc,idx)})};GeoXml.prototype.loadXMLUrl=function(url,title,latlon,desc,idx){var that=this;that.DownloadURL(url,function(doc){that.processing(GXml.parse(doc),title,latlon,desc,idx)},title)};GeoXml.prototype.upgradeLayer=function(n){var mt=this.map.getMapTypes();var found=false;for(var i=0;i<mt.length;i++){if(mt[i]==this.baseLayers[n]){found=true;this.map.removeMapType(this.baseLayers[n])}}if(!found){this.map.addMapType(this.baseLayers[n])}};GeoXml.prototype.makeWMSTileLayer=function(getmapstring,on,title,opac,attr,grouptitle,wmsbounds){var that=this;gmapstring=new String(getmapstring);getmapstring=gmapstring.replace("&amp;","&");var args=getmapstring.split("?");var baseurl=args[0]+"?";baseurl=baseurl.replace(/&request=getmap/i,"");baseurl=baseurl.replace(/&service=wms/i,"");var version="1.1.0";var format="image/png";var styles="";var layers="";var queryable=false;var opacity=1.0;if(typeof opac!="undefined"){opacity=opac}var bbox="-180,-90,180,90";var pairs=args[1].split("&");var sld="";var servicename="";var atlasname="";var gmcrs="";var epsg;for(var i=0;i<pairs.length;i++){var dstr=pairs[i];var duo=pairs[i].split("=");var dl=duo[0].toLowerCase();switch(dl){case"version":version=duo[1];break;case"bbox":bbox=duo[1];break;case"width":case"height":break;case"service":break;case"servicename":servicename=duo[1];break;case"atlasname":atlasname=duo[1];break;case"styles":styles=duo[1];break;case"layers":layers=duo[1];break;case"format":format=duo[1];break;case"opacity":opacity=parseFloat(duo[1]);break;case"crs":case"srs":epsg=duo[1];break;case"gmcrs":gmcrs=duo[1];break;case"queryable":queryable=duo[1];break;case"getmap":break;case"service":break;default:if(duo[0]){baseurl+="&"+pairs[i]}break}}if(gmcrs){epsg=gmcrs}var bbn=bbox.split(",");var bb={"w":parseFloat(bbn[0]),"s":parseFloat(bbn[1]),"e":parseFloat(bbn[2]),"n":parseFloat(bbn[3])};var lon=(bb.n-bb.s);var z=0;var ex=180;while(ex>=lon){ex=ex/2;z++}z--;if(z<1){z=1}if(!attr){attr="Base Map from OGC WMS"}var cr0=new GCopyright(1,new GLatLngBounds(new GLatLng(bb.s,bb.w),new GLatLng(bb.n,bb.e)),0,attr);var cc0=new GCopyrightCollection("");cc0.addCopyright(cr0);var twms=new GTileLayer(cc0,z,19);twms.s=bb.s;twms.n=bb.n;twms.e=bb.e;twms.w=bb.w;twms.myBaseURL=baseurl;if(servicename){twms.servicename=servicename}if(atlasname){twms.atlasname=atlasname}twms.publishdirectory=this.publishdirectory;twms.epsg=epsg;twms.getTileUrl=function(a,b,c){if(typeof(this.myStyles)=="undefined"){this.myStyles=""}var lULP=new GPoint(a.x*256,(a.y+1)*256);var lLRP=new GPoint((a.x+1)*256,a.y*256);var lUL=G_NORMAL_MAP.getProjection().fromPixelToLatLng(lULP,b,c);var lLR=G_NORMAL_MAP.getProjection().fromPixelToLatLng(lLRP,b,c);var west=lUL.x;var east=lLR.x;var north=lUL.y;var south=lLR.y;var ge=east;var gw=west;var gs=south;var gn=north;if(gn<gs){gs=gn;gn=south}if(this.epsg!="EPSG:4326"&&this.epsg!="CRS:84"&&this.epsg!="4326"){west=GeoXml.merc2Lon(west);north=GeoXml.merc2Lat(north);east=GeoXml.merc2Lon(east);south=GeoXml.merc2Lat(south)}var w=Math.abs(east-west);var h=Math.abs(north-south);var s=h/w;h=Math.round((256.0*s)+0.5);w=256;var sud=south;if(north<south){south=north;north=sud}if(gs>(this.n)||ge<(this.w)||gn<(this.s)||gw>(this.e)){var retstr=this.publishdirectory+"black.gif"}var lBbox=west+","+south+","+east+","+north;var lSRS="EPSG:41001";if(typeof this.epsg!="undefined"||this.srs=="4326"){lSRS=this.epsg}var lURL=this.myBaseURL;if(typeof this.myVersion=="undefined"){this.myVersion="1.1.1"}var ver=parseFloat(this.myVersion);var arcims=/arcimsproxy/i;if(!this.myBaseURL.match(arcims)){lURL+="&SERVICE=WMS";if(this.myVersion!="1.0.0"){var gmap=/request=getmap/i;if(!lURL.match(gmap)){lURL+="&REQUEST=GetMap"}}else{lURL+="&REQUEST=Map"}}if(this.servicename){lURL+="?ServiceName="+this.servicename}if(this.atlasname){lURL+="&AtlasName="+this.servicename}lURL+="&VERSION="+this.myVersion;if(this.myLayers){lURL+="&LAYERS="+this.myLayers;lURL+="&STYLES="+this.myStyles}if(this.mySLD){lURL+="&SLD="+this.mySLD}lURL+="&FORMAT="+this.myFormat;lURL+="&BGCOLOR=0x000000";lURL+="&TRANSPARENT=TRUE";if(this.myVersion=="1.1.1"||ver<1.3){lURL+="&SRS="+lSRS}else{lURL+="&CRS="+lSRS}lURL+="&WIDTH="+w;lURL+="&HEIGHT="+h;lURL+="&BBOX="+lBbox;this.requestCount++;return lURL};twms.myFormat=format;twms.myVersion=version;twms.myExtents=bbox;twms.queryable=queryable;twms.opacity=opacity;twms.getOpacity=function(){return this.opacity};if(sld){twms.mySLD=sld}else{twms.myLayers=layers;twms.myStyles=styles}var ol=new GTileLayerOverlay(twms);ol.bounds=new GLatLngBounds();ol.bounds.extend(new GLatLng(bb.n,bb.e));ol.bounds.extend(new GLatLng(bb.s,bb.w));this.wmscount++;if(this.opts.doMapTypes){var twms2=new GTileLayer(cc0,z,19);twms2.s=bb.s;twms2.n=bb.n;twms2.e=bb.e;twms2.w=bb.w;twms2.myBaseURL=baseurl;twms2.servicename=servicename;twms2.publishdirectory=this.publishdirectory;twms2.getTileUrl=twms.getTileUrl;twms2.myFormat=twms.myFormat;twms2.myVersion=version;twms2.opacity=1.0;twms2.title=title;if(attr){twms2.attribution=attr}twms2.getOpacity=function(){return this.opacity};if(sld){twms2.mySLD=sld}else{twms2.myLayers=layers;twms2.myStyles=styles}twms2.epsg=epsg;var base=new GTileLayer(cc0,z,19);base.s=bb.s;base.n=bb.n;base.e=bb.e;base.w=bb.w;base.dir=this.publishdirectory;base.getTileUrl=function(){return(this.dir+"black.gif")};base.opacity=1.0;base.title=title;if(attr){base.attribution=attr}base.getOpacity=function(){return this.opacity};var layer=[twms2,G_HYBRID_MAP.getTileLayers()[1]];var cmap=new GMapType(layer,G_HYBRID_MAP.getProjection(),""+title+"",G_HYBRID_MAP);cmap.bounds=new GLatLngBounds(new GLatLng(bb.s,bb.w),new GLatLng(bb.n,bb.e));if(grouptitle){cmap.grouptitle=grouptitle}that.baseLayers.push(cmap);that.map.addMapType(cmap);return null}else{return ol}};GeoXml.SEMI_MAJOR_AXIS=6378137.0;GeoXml.ECCENTRICITY=0.0818191913108718138;GeoXml.DEG2RAD=180.0/(Math.PI);GeoXml.merc2Lon=function(lon){return(lon*GeoXml.DEG2RAD)*GeoXml.SEMI_MAJOR_AXIS};GeoXml.merc2Lat=function(lat){var rad=lat*GeoXml.DEG2RAD;var sinrad=Math.sin(rad);return(GeoXml.SEMI_MAJOR_AXIS*Math.log(Math.tan((rad+Math.PI/2)/2)*Math.pow(((1-GeoXml.ECCENTRICITY*sinrad)/(1+GeoXml.ECCENTRICITY*sinrad)),(GeoXml.ECCENTRICITY/2))))};GeoXml.prototype.toggleLabels=function(on){if(!on){this.removeLabels()}else{this.addLabels()}};GeoXml.prototype.addLabels=function(){this.labels.onMap=true;this.map.addOverlay(this.labels)};GeoXml.prototype.removeLabels=function(){this.labels.onMap=false;this.map.removeOverlay(this.labels)};var useLegacyLocalLoad=true;GeoXml.prototype.DownloadURL=function(fpath,callback,title){if(!fpath){return}var xmlDoc;var that=this;var cmlurl=fpath;if(!topwin.standalone&&this.proxy){cmlurl=this.proxy+"url="+escape(cmlurl)}if(topwin.standalone||useLegacyLocalLoad){if(cmlurl.substring(2,3)==":"){xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");xmlDoc.validateOnParse=false;xmlDoc.async=true;xmlDoc.load(cmlurl);if(xmlDoc.parseError.errorCode!=0){var myErr=xmlDoc.parseError;alert("GeoXml file appears incorrect\n"+myErr.reason+" at line:"+myErr.line)}else{callback(xmlDoc.doc)}return}}var cmlreq;/*@cc_on@*//*@if(@_jscript_version>=5)try{cmlreq=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{cmlreq=new ActiveXObject("Microsoft.XMLHTTP")}catch(E){alert("attempting xmlhttp");cmlreq=false}}@end@*/if(!cmlreq&&typeof XMLHttpRequest!='undefined'){cmlreq=new XMLHttpRequest()}else{if(typeof ActiveXObject!="undefined"){cmlreq=new ActiveXObject("Microsoft.XMLHTTP")}}var here=cmlurl;if(cmlreq.overrideMimeType){cmlreq.overrideMimeType("text/xml")}cmlreq.open("GET",here,true);cmlreq.onreadystatechange=function(){switch(cmlreq.readyState){case 4:that.mb.showMess(title+" received",2000);if(typeof ActiveXObject!="undefined"){xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";var response=cmlreq.responseText;callback(response)}else{if(cmlreq.responseXML){that.mb.showMess(title+" received",2000);callback(cmlreq.responseText)}else{if(cmlreq.status==200){var resp=cmlreq.responseText;var sresp=resp.substring(0,400);var isXML=resp.substring(0,5);if(isXML=="<?xml"&&sresp.indexOf("kml")!=-1){that.mb.showMess(title+" response received",2000);callback(resp.responseText)}else{that.mb.showMess("File does not appear to be a valid GeoData"+resp,6000)}}}}break;case 3:that.mb.showMess("Receiving "+title+"...");break;case 2:that.mb.showMess("Waiting for "+title,2000);break;case 1:that.mb.showMess("Sent request for "+title,2000);break}};try{cmlreq.send(null)}catch(err){if(cmlurl.substring(2,3)==":"&&!useLegacyLocalLoad){useLegacyLocalLoad=true;this.DownloadURL(cmlurl)}}};
