addLoadEvent(gLoad);window.onunload=GUnload;var map=null;var mgr=null;var mgrF=null;var gdir=null;var geo=null;var sidebar=null;var errorDiv=null;var divFeatured=null;var allMarkers=[];var iMarker=0;var iFeatured=0;var search_qstring="";var page=1;var pageSize=3;var to_htmls=[];var from_htmls=[];var gicons=[];var icolors=["red","blue","green","yellow","orange","white","brown"];for(var k=1;k<=icolors.length;k++){var icon=new GIcon();icon.image="mapfiles/icons/mm_20_"+icolors[k]+".png";icon.shadow="mapfiles/icons/mm_20_shadow.png";icon.iconSize=new GSize(12,20);icon.shadowSize=new GSize(22,20);icon.iconAnchor=new GPoint(6,20);icon.infoWindowAnchor=new GPoint(5,1);gicons.push(icon);}var default_bounds=null;var landmarkIcon=new GIcon();landmarkIcon.image="mapfiles/icons/mm_20_white.png";landmarkIcon.shadow="mapfiles/icons/mm_20_shadow.png";landmarkIcon.iconSize=new GSize(12,20);landmarkIcon.shadowSize=new GSize(22,20);landmarkIcon.iconAnchor=new GPoint(6,20);landmarkIcon.infoWindowAnchor=new GPoint(5,1);var arrowIcon=new GIcon();arrowIcon.iconSize=[39,34];arrowIcon.image="mapfiles/icons/arrow.png";arrowIcon.printImage="mapfiles/icons/arrow.png";arrowIcon.shadow="mapfiles/icons/arrowshadow.png";arrowIcon.printShadow="mapfiles/icons/arrowshadow.png";arrowIcon.mozPrintImage="mapfiles/icons/arrowff.gif";arrowIcon.transparent="mapfiles/icons/arrowtransparent.png";var highlightIconURL="mapfiles/icons/mm_20_yellow.png";var reasons=[];reasons[G_GEO_SUCCESS]="Success";reasons[G_GEO_MISSING_ADDRESS]="Missing Address: The address was either missing or had no value.";reasons[G_GEO_UNKNOWN_ADDRESS]="Unknown Address:  No corresponding geographic location could be found for the specified address.";reasons[G_GEO_UNAVAILABLE_ADDRESS]="Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";reasons[G_GEO_BAD_KEY]="Bad Key: The API key is either invalid or does not match the domain for which it was given";reasons[G_GEO_TOO_MANY_QUERIES]="Too Many Queries: The daily geocoding quota for this site has been exceeded.";reasons[G_GEO_SERVER_ERROR]="Server error: The geocoding request could not be successfully processed.";reasons[G_GEO_BAD_REQUEST]="A directions request could not be successfully parsed.";reasons[G_GEO_MISSING_QUERY]="No query was specified in the input.";reasons[G_GEO_UNKNOWN_DIRECTIONS]="The GDirections object could not compute directions between the points.";function gLoad(){if(GBrowserIsCompatible()){map=new GMap2(document.getElementById("map"));map.setCenter(new GLatLng(40,-100),3);map.addControl(new GScaleControl());map.addControl(new GOverviewMapControl());map.addControl(new GLargeMapControl());map.addControl(new GMapTypeControl());sidebar=document.getElementById("divSidebar");errorDiv=document.getElementById("divError");divFeatured=document.getElementById("divFeatured");mgr=new MarkerManager(map);mgrF=new GMarkerManager(map);FeaturedLoad();gdir=new GDirections(map,sidebar);GEvent.addListener(gdir,"error",function(){var A=gdir.getStatus().code;var B="Code "+A;if(reasons[A]){B=reasons[A];}alert("Failed to obtain directions, "+B);});GEvent.addListener(gdir,"load",function(){setSidebar("");mgr.clearMarkers();});geo=new GClientGeocoder();}else{alert("Sorry, Google Maps is not compatible with this browser");}}function doSearch(B,C,D,A){setError("");map.clearOverlays();if(A!=null){search_qstring=A;}if(D){page=D;}if(B!=null){search_qstring+="&lat="+B.lat()+"&lng="+B.lng();}if(C){search_qstring+="&catId="+C;}GDownloadUrl("xml.aspx?"+search_qstring+"&p="+page+"&ps="+pageSize,ParseXMLdata_callback);return false;}function ParseXMLdata_callback(T,S){if(S==200){var A=GXml.parse(T);var M=false;var D=A.documentElement.getElementsByTagName("Marker");var U=new GLatLngBounds();mgr.clearMarkers();if(iFeatured>0){allMarkers.length=iFeatured;}if(A.documentElement.nodeName=="FeaturedMarkers"){M=true;}if(!M){var J='Sorry, nothing listed yet. Try another category or city or <a href="submitlandmark.aspx" target="_blank">submit your own suggestions</a>.';setSidebar('<div class="title">Search Results</div>');if(D.length==0){setSidebar(sidebar.innerHTML+J);return ;}}var V=0;for(var N=0;N<D.length&&(N<pageSize||M);N++){var W=getNodeValue(D[N],"name");var P=getNodeValue(D[N],"address");var F=getNodeValue(D[N],"categoryId");var I=getNodeValue(D[N],"categoryName");var C=getNodeValue(D[N],"categoryColor");var O=getNodeValue(D[N],"city")+", "+getNodeValue(D[N],"state");var Q=getNodeValue(D[N],"zip");var E=getNodeValue(D[N],"phone");var H=getNodeValue(D[N],"locationId");var B=getNodeValue(D[N],"url");var R=getNodeValue(D[N],"imageUrl");var L=getNodeValue(D[N],"abstract");if(V==0){V=getNodeValue(D[N],"total");}var K=null;K=new GLatLng(parseFloat(getNodeValue(D[N],"lat")),parseFloat(getNodeValue(D[N],"lng")));var G=createMarker(K,W,P,O,C,B,L,R,Q,E,I,M);allMarkers.push(G);U.extend(K);}if(!M){map.setZoom(map.getBoundsZoomLevel(U));map.setCenter(U.getCenter());createPrevNext(V);mgr.addMarkers(allMarkers.slice(iFeatured,allMarkers.length),0);mgr.refresh();}else{map.setZoom(map.getBoundsZoomLevel(U));map.setCenter(U.getCenter());mgrF.addMarkers(allMarkers,0);mgrF.refresh();}A=null;iMarker=0;}else{if(S==-1){alert("Data request timed out. Please try later.");}else{alert(S);alert("Request resulted in error. Check XML file is retrievable.");}}}function createMarker(J,U,N,M,B,C,L,R,P,D,K,S){var T=String.fromCharCode("A".charCodeAt(0)+iMarker);var H=document.location.pathname;var I=H.substring(H.indexOf("/",1)+1,H.lastIndexOf("/"));var O=new GIcon(G_DEFAULT_ICON,"mapfiles/icons/"+B+"_Marker"+T+".png");O.printImage="http://maps.google.com/mapfiles/marker"+T+"ie.gif";O.mozPrintImage="http://maps.google.com/mapfiles/marker"+T+"ff.gif";var F=null;if(!S){F=new GMarker(J,{icon:O});}else{F=new GMarker(J,{icon:G_DEFAULT_ICON});}var A=[];var Q=["Description","Directions"];if(C){C='<span id="extlink"><a href=\''+C+"' target='_blank'>"+C+"</a></span>";}html="<b>"+U+"</b><br/>";html+='<table id="abstract"><tr><td>'+L+"</td><td>";if(R&&R!=""){html+='<img src="'+R+'" width="75" height="75" />';}html+="</tr></td></table>\n\n";html+=C;A.push(html);html="<b>"+U+"</b> <br/>";html+=N+"<br />"+M+" "+P;if(D){html+="<br />"+D;}var E=iMarker+iFeatured;to_htmls[E]=html+'<div class="directions">Directions: <b>To here</b> - <a href="javascript:fromhere('+E+')">From here</a><br>Start address:<form action="javascript:getDirections()"><input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br><INPUT value="Get Directions" TYPE="SUBMIT"><input type="hidden" id="daddr" value="'+U+"@"+J.lat()+","+J.lng()+'"/></form></div>';from_htmls[E]=html+'<div class="directions">Directions: <a href="javascript:tohere('+E+')">To here</a> - <b>From here</b><br>End address:<form action="javascript:getDirections()"><input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" /><br><INPUT value="Get Directions" TYPE="SUBMIT"><input type="hidden" id="saddr" value="'+U+"@"+J.lat()+","+J.lng()+'"/></form></div>';html=html+'<div class="directions">Directions: <a href="javascript:tohere('+E+')">To here</a> - <a href="javascript:fromhere('+E+')">From here</a></div>';A.push(html);if(!S){iMarker++;if(D){M+="- "+D;}var G=createSidebarEntry(F,U,N+" "+M,T,K);sidebar.appendChild(G);}else{attachFeatureMarker(F,U);iFeatured++;}GEvent.addListener(F,"click",function(V){if(V){map.setCenter(J);}var X=[];for(var W=0;W<A.length;W++){X.push(new GInfoWindowTab(Q[W],'<div class="infoWin">'+A[W]+"</div>"));}F.openInfoWindowTabsHtml(X,{maxWidth:400});});return F;}function FeaturedLoad(){doSearch(null,null,null,"featured=true");}function attachFeatureMarker(A,C){var B=divFeatured.getElementsByTagName("a");for(var D=0;D<B.length;D++){if(C==B[D].innerHTML){GEvent.addDomListener(B[D],"click",function(){GEvent.trigger(A,"click",true);});}}}function createPrevNext(E){var F=document.createElement("span");var C=document.createElement("a");var I=document.createElement("span");var G=document.createElement("a");var H=document.createElement("table");var D=H.insertRow(-1);var B=D.insertCell(-1);var A=D.insertCell(-1);F.id="prev";I.id="next";H.className="prevnext";B.style.align="right";if(page>1){C.onclick=function(){doSearch(null,null,page-1,search_qstring);};C.href="javascript:void(0);";C.innerHTML="Previous";F.appendChild(C);}else{F.innerHTML="&nbsp;";}if((page*pageSize)+1<=E){G.onclick=function(){doSearch(null,null,page+1,search_qstring);};G.href="javascript:void(0);";G.innerHTML="Next";I.appendChild(G);}else{I.innerHTML="&nbsp;";}B.appendChild(F);A.appendChild(I);sidebar.appendChild(H);}function createSidebarEntry(I,B,N,E,D){var A=document.createElement("div");var C=document.createElement("a");var M=document.createElement("div");var H=document.createElement("img");var L=document.createElement("span");var J=document.createElement("span");var O=document.createElement("table");var K=O.insertRow(-1);var G=K.insertCell(-1);var F=K.insertCell(-1);A.appendChild(O);H.src=I.getIcon().image;H.alt=E;H.style.borderWidth="0px";G.appendChild(H);C.setAttribute("href","javascript:void(0);");C.innerHTML=B;GEvent.addDomListener(C,"click",function(){GEvent.trigger(I,"click");});F.appendChild(C);J.className="category";J.style.paddingLeft="20px";J.innerHTML=D;F.appendChild(J);M.innerHTML=N;F.appendChild(M);A.style.marginBottom="5px";return A;}function setSidebar(A){sidebar.innerHTML=A;}function setError(A){errorDiv.innerHTML=A;}function findPos(B){var C=0;var A=0;if(B.offsetParent){while(1){C+=B.offsetLeft;A+=B.offsetTop;if(!B.offsetParent){break;}B=B.offsetParent;}}else{if(B.x){C+=B.x;A+=B.y;}}return[A,C];}function getDirections(){var B=document.getElementById("saddr").value;var A=document.getElementById("daddr").value;setError("");gdir.load("from: "+B+" to: "+A);}function tohere(A){allMarkers[A].openInfoWindowHtml(to_htmls[A]);}function fromhere(A){allMarkers[A].openInfoWindowHtml(from_htmls[A]);}function searchLocations(C,D){var B=document.getElementById(C).value;var E=document.getElementById(D);var A=E.options[E.selectedIndex].value;E=null;if(B!=""){geo.getLatLng(B,function(G){if(!G){setSidebar('<div class="title">Search Results</div>');setError("Sorry, we couldn't find "+B+".");}else{doSearch(G,A,1,"");}});}else{var F=map.getCenter();doSearch(F,A,1,"rlat="+F.lat()+"&rlng="+map.getBounds().getNorthEast().lng());}}