var mapElement=document.getElementById('map');var adElement=document.getElementById('ad');var controlPanelElement=document.getElementById('controlPanel');var controlPanelMinimizedElement=document.getElementById('controlPanelMinimized');var controlPanelFullElement=document.getElementById('controlPanelFull');var globeElement=document.getElementById('globe');var printElement=document.getElementById('print');var emailElement=document.getElementById('email');var linkToThisPageElement=document.getElementById('linkToThisPage');var coordsElement=document.getElementById('coords');var markButtonElement=document.getElementById('markButton');var nearbyItemElement=document.getElementById('nearbyItem');var nearbyResultsElement=document.getElementById('nearbyResults');var findItemElement=document.getElementById('findItem');var findQueryElement=document.getElementById('findQuery');var markersButtonElement=document.getElementById('markersButton');var linksButtonElement=document.getElementById('linksButton');var blockElement=document.getElementById('block');var findPanelElement=document.getElementById('findPanel');var findResultsElement=document.getElementById('findResults');var markersPanelElement=document.getElementById('markersPanel');var markersCaptionElement=document.getElementById('markersCaption');var markersTableElement=document.getElementById('markersTable');var maxMarkers=26;var markers=[];var icons=[];var markersRowElement=[];var markersImgElement=[];var markersNameElement=[];var markersDescElement=[];var deleteAllButtonElement=document.getElementById('deleteAllButton');var linksPanelElement=document.getElementById('linksPanel');var googleLinkElement=document.getElementById('googleLink');var flickrLinkElement=document.getElementById('flickrLink');var geocachesLinkElement=document.getElementById('geocachesLink');var benchmarksLinkElement=document.getElementById('benchmarksLink');var globetrottingLinkElement=document.getElementById('globetrottingLink');var pedometerLinkElement=document.getElementById('pedometerLink');var geourlLinkElement=document.getElementById('geourlLink');var tigerLinkElement=document.getElementById('tigerLink');var topozoneLinkElement=document.getElementById('topozoneLink');var multimapLinkElement=document.getElementById('multimapLink');var mapper1LinkElement=document.getElementById('mapper1Link');var optionsPanelElement=document.getElementById('optionsPanel');var panZoomCheckboxElement=document.getElementById('panZoomCheckbox');var mapTypeCheckboxElement=document.getElementById('mapTypeCheckbox');var scaleCheckboxElement=document.getElementById('scaleCheckbox');var overviewCheckboxElement=document.getElementById('overviewCheckbox');var crosshairsCheckboxElement=document.getElementById('crosshairsCheckbox');var globeCheckboxElement=document.getElementById('globeCheckbox');var printCheckboxElement=document.getElementById('printCheckbox');var emailCheckboxElement=document.getElementById('emailCheckbox');var linkToThisPageCheckboxElement=document.getElementById('linkToThisPageCheckbox');var coordsCheckboxElement=document.getElementById('coordsCheckbox');var coordsSelectElement=document.getElementById('coordsSelect');var nearbyCheckboxElement=document.getElementById('nearbyCheckbox');var findCheckboxElement=document.getElementById('findCheckbox');var markersCheckboxElement=document.getElementById('markersCheckbox');var linksCheckboxElement=document.getElementById('linksCheckbox');var markOnFindCheckboxElement=document.getElementById('markOnFindCheckbox');var keyboardShortcutsCheckboxElement=document.getElementById('keyboardShortcutsCheckbox');var clickZoomCheckboxElement=document.getElementById('clickZoomCheckbox');var mouseWheelZoomCheckboxElement=document.getElementById('mouseWheelZoomCheckbox');var unitsSelectElement=document.getElementById('unitsSelect');var panZoomOption;var mapTypeOption;var scaleOption;var overviewOption;var crosshairsOption;var globeOption;var printOption;var emailOption;var linkToThisPageOption;var coordsOption;var coordsType;var nearbyOption;var findOption;var markersOption;var linksOption;var markOnFindOption;var keyboardShortcutsOption;var clickZoomOption;var mouseWheelZoomOption;var unitsType;var map=null;var center=null;var kbh=null;var panZoomWidget=null;var mapTypeWidget=null;var scaleWidget=null;var overviewWidget=null;var crosshairsWidget=null;function Setup() {try {if(!GBrowserIsCompatible()) {mapElement.innerHTML='Sorry, your browser is not compatible with Google Maps.';return;} SetupMarkers() SetupIcons();OptionsGet();map=new GMap2(mapElement,{draggableCursor:'default'});map.addMapType(WMS_TOPO_MAP);map.addMapType(WMS_DOQ_MAP);map.addMapType(WMS_NEXRAD_MAP);SavePositionZoomTypeCookieOnChanges(map);if(!GetPositionZoomTypeCookie(map)) {var point=GetPointFromIP();if(point!=null) map.setCenter(point,13);else map.setCenter(new GLatLng(0.0,0.0),2);} center=map.getCenter();var params=GetParameters();if(params.ll) map.setCenter(StringToPoint(params.ll));if(params.z) map.setZoom(parseInt(params.z));if(params.t) map.setMapType(LetterToMapType(params.t));if(params.q) Find(params.q);if(params.lat&¶ms['long']) map.setCenter(new GLatLng(parseFloat(params.lat),parseFloat(params['long'])));if(params.scale) {var scale=parseInt(params.scale);map.setZoom(27-scale);} if(params.theme) {switch(params.theme) {case'Topo':map.setMapType(WMS_TOPO_MAP);break;case'Image':map.setMapType(WMS_DOQ_MAP);break;case'ColorImage':map.setMapType(G_SATELLITE_MAP);break;}} AdControlCheck();OptionsRun();MarkersParamsGet(params);MarkersCookieGet();GEvent.addListener(map,'resize',ResizeHandler);GEvent.addListener(map,'move',MoveHandler);GEvent.addListener(map,'zoomend',ZoomEndHandler);GEvent.addListener(map,'maptypechanged',MapTypeChangedHandler);UpdateState();GEvent.addListener(map,'infowindowclose',MarkerInfoPopDown);if(document.referrer&&!(params.ll||params.lat||params['long'])&&IsFlickrUrl(document.referrer)) Find(document.referrer);} catch(e) {GLog.write('Setup:\n'+Props(e));}} function IsFlickrUrl(url) {return url.substring(0,29)=='http://www.flickr.com/photos/'||url.substring(0,25)=='http://flickr.com/photos/';} function SetupMarkers() {var tbodyElement=AppendElement(markersTableElement,'tbody');for(var i=0;i=0?'E':'W');var ns=(p.lat()>=0?'N':'S');var absx=Math.abs(p.lng());var absy=Math.abs(p.lat());var intdegx=Math.floor(absx);var intdegy=Math.floor(absy);var minx=(absx-intdegx)*60;var miny=(absy-intdegy)*60;var intminx=Math.floor(minx);var intminy=Math.floor(miny);var secx=(minx-intminx)*60;var secy=(miny-intminy)*60;var intsecx=Math.floor(secx);var intsecy=Math.floor(secy);switch(coordsType) {case'numeric':return p.lat().toFixed(5)+' '+p.lng().toFixed(5);case'd':return ns+' '+absy.toFixed(5)+' '+ew+' '+absx.toFixed(5);case'dm':return ns+' '+intdegy+' '+miny.toFixed(3)+"' "+ew+' '+intdegx+' '+minx.toFixed(3)+"'";case'dms':return ns+' '+intdegy+' '+intminy+"' "+intsecy+'" '+ew+' '+intdegx+' '+intminx+"' "+intsecx+'"';case'geotags':return'geotagged geo:lat='+p.lat().toFixed(5)+' geo:lon='+p.lng().toFixed(5);case'csv':return p.lng().toFixed(5)+','+p.lat().toFixed(5);case'utm':return LatLngToUtm(p);default:return' ';}} function LatLngToUtm(ll) {var K0=0.9996;var EquatorialRadius=6378137;var EccentricitySquared=0.00669438;var longitude=ll.lng();var latitude=ll.lat();if(longitude<-180.0) longitude+=360.0;if(longitude>180.0) longitude-=360.0;var lat_rad=latitude*Math.PI/180.0;var long_rad=longitude*Math.PI/180.0;var zone=Math.floor((longitude+180)/6)+1;if(latitude>=56.0&&latitude<64.0&&longitude>=3.0&&longitude<12.0) zone=32;if(latitude>=72.0&&latitude<84.0) {if(longitude>=0.0&&longitude<9.0)zone=31;else if(longitude>=9.0&&longitude<21.0)zone=33;else if(longitude>=21.0&&longitude<33.0)zone=35;else if(longitude>=33.0&&longitude<42.0)zone=37;} var long_origin=(zone-1)*6-180+3;var long_origin_rad=long_origin*Math.PI/180.0;var eccPrimeSquared=EccentricitySquared/(1.0-EccentricitySquared);var N=EquatorialRadius/Math.sqrt(1.0-EccentricitySquared*Math.sin(lat_rad)*Math.sin(lat_rad));var T=Math.tan(lat_rad)*Math.tan(lat_rad);var C=eccPrimeSquared*Math.cos(lat_rad)*Math.cos(lat_rad);var A=Math.cos(lat_rad)*(long_rad-long_origin_rad);var M=EquatorialRadius*((1.0-EccentricitySquared/4-3*EccentricitySquared*EccentricitySquared/64-5*EccentricitySquared*EccentricitySquared*EccentricitySquared/256)*lat_rad-(3*EccentricitySquared/8+3*EccentricitySquared*EccentricitySquared/32+45*EccentricitySquared*EccentricitySquared*EccentricitySquared/1024)*Math.sin(2*lat_rad)+(15*EccentricitySquared*EccentricitySquared/256+45*EccentricitySquared*EccentricitySquared*EccentricitySquared/1024)*Math.sin(4*lat_rad)-(35*EccentricitySquared*EccentricitySquared*EccentricitySquared/3072)*Math.sin(6*lat_rad));var easting=K0*N*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*eccPrimeSquared)*A*A*A*A*A/120)+500000.0;var northing=K0*(M+N*Math.tan(lat_rad)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24+(61-58*T+T*T+600*C-330*eccPrimeSquared)*A*A*A*A*A*A/720));if(latitude<0.0) northing+=10000000.0;return zone+UtmLetter(latitude)+' '+Math.floor(easting)+' '+Math.floor(northing);} function UtmLetter(latitude) {if(latitude<=84.0&&latitude>=72.0)return'X';else if(latitude<72.0&&latitude>=64.0)return'W';else if(latitude<64.0&&latitude>=56.0)return'V';else if(latitude<56.0&&latitude>=48.0)return'U';else if(latitude<48.0&&latitude>=40.0)return'T';else if(latitude<40.0&&latitude>=32.0)return'S';else if(latitude<32.0&&latitude>=24.0)return'R';else if(latitude<24.0&&latitude>=16.0)return'Q';else if(latitude<16.0&&latitude>=8.0)return'P';else if(latitude<8.0&&latitude>=0.0)return'N';else if(latitude<0.0&&latitude>=-8.0)return'M';else if(latitude<-8.0&&latitude>=-16.0)return'L';else if(latitude<-16.0&&latitude>=-24.0)return'K';else if(latitude<-24.0&&latitude>=-32.0)return'J';else if(latitude<-32.0&&latitude>=-40.0)return'H';else if(latitude<-40.0&&latitude>=-48.0)return'G';else if(latitude<-48.0&&latitude>=-56.0)return'F';else if(latitude<-56.0&&latitude>=-64.0)return'E';else if(latitude<-64.0&&latitude>=-72.0)return'D';else if(latitude<-72.0&&latitude>=-80.0)return'C';else return'Z';} var nearestPlace=null;var unNamedMarker=null;var nearbyCache=new Cache(1000,NearbyEquivalent);function NearbyEquivalent(p1,p2) {return p1.distanceFrom(p2)<50;} function NearbyUpdate() {if(nearbyOption) {var nearby=nearbyCache.Get(center);if(nearby!=null) NearbyDisplay(nearby) else {nearestPlace=null;HttpGet('nearby.cgi?lat='+center.lat().toFixed(5)+'&lng='+center.lng().toFixed(5),NearbyRequestChecker);}}} function NearbyRequestChecker(request) {try {var xmlDoc=request.responseXML.documentElement;var requestLat=parseFloat(xmlDoc.getAttribute('lat'));var requestLon=parseFloat(xmlDoc.getAttribute('lng'));var requestPoint=new GLatLng(requestLat,requestLon);var nearby=new Nearby(requestPoint);var placeElements=xmlDoc.getElementsByTagName('place');for(var i=0;i0) html=html.substr(0,html.length-2);} nearbyResultsElement.innerHTML=html;EmailLinkUpdate();} function Nearby(point) {this.point=point;this.places=[];} Nearby.prototype.AddPlace=function(place) {this.places.push(place);} function Place(name,point) {this.name=name;this.point=point;} Place.prototype.DescribeText=function(point) {var distMeters=this.point.distanceFrom(point);if(distMeters<500.0) return this.name;var bearing=Bearing(this.point,point);var dir=Direction(bearing);return DescribeDistance(distMeters,' ')+' '+dir+' of '+this.name;} Place.prototype.DescribeHtml=function(point) {var name=Substitute(this.name,' ',' ');var distMeters=this.point.distanceFrom(point);var lat=this.point.lat();var lng=this.point.lng();if(distMeters<500.0) return''+name+'';var bearing=Bearing(this.point,point);var dir=Direction(bearing);return DescribeDistance(distMeters,' ')+' '+dir+' of '+name+'';} function DescribeDistance(distMeters,space) {switch(unitsType) {case'si':if(distMeters<500.0) return distMeters.toFixed(0)+space+'m';else return(distMeters/1000).toFixed(1)+space+'km';case'us':if(distMeters<400.0) return(distMeters*3.2808399).toFixed(0)+space+'ft';else return(distMeters/1609.344).toFixed(1)+space+'mi';default:return'???';}} function Goto(lat,lng,precision) {if(poppedUpMarker!=null) map.closeInfoWindow();if(precision!=null) map.setZoom(PrecisionToZoom(precision));map.panTo(new GLatLng(lat,lng));} function PrecisionToZoom(precision) {switch(precision) {case'address':return 17;case'street':return 17;case'zip+4':return 17;case'zip+2':return 15;case'zip':return 14;case'city':return 13;case'state':return 6;case'country':return 4;default:return 2;}} function EmailLinkUpdate() {if(emailOption||linkToThisPageOption) {var zoom=map.getZoom();var typeLetter=MapTypeToLetter(map.getCurrentMapType());var url=window.location.protocol+'//'+window.location.host+window.location.pathname;url+='?ll='+PointToString(center)+'&z='+zoom+'&t='+typeLetter;for(var i=0;i'+name+'
';} if(html=='') alert('Problem parsing search results.');else {findResultsElement.innerHTML=html;blockElement.style.display='';findPanelElement.style.display='';}} function FindPicked(lat,lng,name,precision,imageUrl,linkUrl) {FindClose();if(markOnFindOption) Mark(new GLatLng(lat,lng),name,imageUrl,linkUrl);Goto(lat,lng,precision);} function FindClose() {blockElement.style.display='none';findPanelElement.style.display='none';} function MarkHere(name) {Mark(center,name);} function Mark(point,name,imageUrl,linkUrl) {for(var i=0;i