google.load("maps","2");google.load("search","1",{nooldnames:true,nocss:true});var map,BI,MM,RM,gdir,searchControl,searcher,poly,polypoi,geocoder,PM=new Array(4);PM[0]=new Array(8);PM[1]=new Array(8);PM[2]=new Array(8);PM[3]=new Array(8);var colors=["palegreen","paleblue","purple","blue","pink","yellow","darkgreen"],hexColors=["#8DE971","#B4DFFF","#C191FF","#5F8EFF","#FdA2FF","#FFEB50","#00B800"],colorOrder=new Array(6),categories=["restaurant","asian|japanese|chinese+restaurant","bar|pub|tavern","buffet","coffee|cafe","fast+food","ice+cream|yogurt","italian","mexican","pizza","sandwich|subs","entertainment","fun|amusement|bowling","golf","hotel|motel|inn|lodge","movie+theater","local+parks","store"],googlesearchdiv="DG",mid,p,FS,mapLoaded,launchState,searchZoom,query,T,M=Math,M1="No response was received for ",M2="Be sure you are connected to the Internet",M3=" For best results, wait until the map has finished loading before ",M4=" then try again.",kRoute="Route halfway point",kMid="Midpoint",f1=D("frm"),f2=D("frm2");p=f1.places;p.length=0;for(i=0;i<4;i++)PM[i].length=0;document.getElementById("copyyear").innerHTML=(new Date).getFullYear();f1.address.focus();function initialize(){if(google.maps.BrowserIsCompatible()){geocoder=new google.maps.ClientGeocoder;gdir=new google.maps.Directions;google.maps.Event.addListener(gdir,"load",directionsCallback);google.maps.Event.addListener(gdir,"error",dirError1);BI=new google.maps.Icon;BI.shadow="images/shadow50.png";BI.iconSize=new google.maps.Size(20,34);BI.shadowSize=new google.maps.Size(37,34);BI.iconAnchor=new google.maps.Point(9,34);BI.infoWindowAnchor=new google.maps.Point(9,2);BI.infoShadowAnchor=new google.maps.Point(18,25);BI.printImage="images/markerie.gif";BI.mozPrintImage="images/markerff.gif";BI.printShadow="images/dithshadow.gif";BI.transparent="images/markerTransparent.png";searchControl=new google.search.SearchControl;searcher=new google.search.LocalSearch;var a=new google.search.SearcherOptions;a.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);searchControl.addSearcher(searcher,a);searchControl.setSearchCompleteCallback(searcher,searchCallback);searchControl.draw(D("googlesearchdiv"));google.search.Search.getBranding(D("DBR"));map=new google.maps.Map2(D("map"));map.addControl(new google.maps.LargeMapControl3D);map.addControl(new google.maps.MapTypeControl);map.enableScrollWheelZoom();google.maps.Event.addListener(map,"tilesloaded",function(){mapLoaded=true});map.setCenter(new google.maps.LatLng(39.17,-98.297),3);setColors();D("midpoint").style.backgroundColor=hexColors[colorOrder[1].index];D("route").style.backgroundColor=hexColors[colorOrder[0].index]}else displayError("Sorry, your browser is not compatible with this version of Google Maps.",0)}function setFocus(b){var c="routespan";if(b==kRoute)var a=[c,"midspan"];else var a=["midspan",c];if(b)FS=b;for(i=0;i<2;i++)if(i==0&&p.length>1){D(a[0]).style.color="#FFFFFF";D(a[0]).style.backgroundColor="#316AC5"}else{D(a[i]).style.color="#000000";D(a[i]).style.backgroundColor="#FFFFFF"}}function selectText(b){if(window.getSelection){var a=window.getSelection();if(a.setBaseAndExtent)a.setBaseAndExtent(b,0,b,1);else{var c=document.createRange();c.selectNodeContents(b);a.removeAllRanges();a.addRange(c)}}else{var c=document.body.createTextRange();c.moveToElementText(b);c.select()}}function setColors(){colorOrder=randomize([0,1,2,3],0);colorOrder.sort(comparePriorities);var a=randomize([4,5,6],4);a[3]=colorOrder[3];a[3].priority+=.3;a.sort(comparePriorities);colorOrder.length=3;a.length=3;colorOrder=colorOrder.concat(a)}function randomize(a,b){for(i=0;i<a.length;i++){a[i]={};a[i].index=i+b;a[i].priority=M.random()}return a}function comparePriorities(a,b){return b.priority-a.priority}function setBounds(d,f,g,e){var b=new google.maps.LatLngBounds,a,c;if(g&&MM){a=MM.getLatLng();b.extend(a)}if(e&&RM){a=RM.getLatLng();b.extend(a)}if(f)for(j=0;j<4;j++)for(i=0;i<PM[j].length;i++){a=PM[j][i].getLatLng();b.extend(a)}if(d)for(i=0;i<p.length;i++){var a=new google.maps.LatLng(p[i].lat,p[i].lng);b.extend(a)}mapLoaded=false;c=18;if(p.length==1&&PM[0].length==0)c=15;map.setCenter(b.getCenter(),M.min(map.getBoundsZoomLevel(b),c))}function dirError1(){if(gdir.display){displayError("Driving directions could not be found for this point of interest.",0);clearTimeout(T)}}function dirTimeout(){clearTimeout(T);if(D("DD").style.display=="none"){if(!gdir.display){displayError('The route halfway point was not found.  <a class="bluelink" href="javascript:gdir.clear();t5();directions(p[1].lat, p[1].lng, 1, 0)">Retry</a>',8);return false}if(launchState)displayError(M1+"your directions request. "+M2+". Directions may not be available for addresses that are far apart.",0);else displayError(M1+"your directions request."+M3+"requesting directions.",0)}}function directions(h,i,g,c,f){var b=p.selectedIndex;if(c==0)var d=new google.maps.LatLng(p[0].lat,p[0].lng);else{if(b==-1){displayError("You must select a starting address.",0);p.focus();return false}var d=new google.maps.LatLng(p[b].lat,p[b].lng)}var e=new google.maps.LatLng(h,i);gdir.display=c;var a={};a.getPolyline=true;a.getSteps=true;a.avoidHighways=f1.avoid.checked;if(g){if(c)gdir.addressLine=searcher.results[f].addressLine;gdir.loadFromWaypoints([d,e],a)}else{gdir.addressLine=p[b].text;gdir.loadFromWaypoints([e,d],a)}launchState=mapLoaded;clearTimeout(T);T=window.setTimeout(dirTimeout,8e3)}function directionsCallback(){clearTimeout(T);try{map.closeInfoWindow();p.length==1&&MM.setLatLng(MM.startLatLng);if(p.length==2&&gdir.display==0){poly=remove(poly);poly=gdir.getPolyline();if(poly){map.addOverlay(poly);var h=poly.getLength()/2,a=poly.getVertexCount()-1;if(h>0&&a>0){var c=0,d=c;while(h>d&&a){c=d;d+=poly.getVertex(a-1).distanceFrom(poly.getVertex(a),6378137);a--}var l=c-d,j=c/l-h/l,e=poly.getVertex(a+1),k=poly.getVertex(a),o=e.lat()+j*(k.lat()-e.lat()),q=e.lng()+j*(k.lng()-e.lng());mid=new google.maps.LatLng(o,q)}else mid=poly.getVertex(0);RM=remove(RM);var g=new google.maps.LatLng(mid.lat(),mid.lng());BI.image="images/"+colors[colorOrder[0].index]+"_MarkerR.png";revGeoCallback(null,g);RM.startLatLng=g;geocoder.getLocations(g,revGeoCallback)}toggleDivs(["DX","DE","DS"],1)}else{var i=gdir.getRoute(0),m=i.getNumSteps(),b='<div id="dirdiv" style="border: black solid 2px" onclick="selectText(this)"><table celspacing="0" cellpadding="0" style="border-collapse: collapse">';for(a=0;a<m;a++){b+='<tr><td valign="top" style="width: 10px; text-align: right; padding: 3px 0 5px 2px; border-top: #C0C0C0 solid 1px">'+(a+1)+".";b+='<td valign="top" style="padding: 3px 2px 4px 2px; border-top: #C0C0C0 solid 1px">'+i.getStep(a).getDescriptionHtml();b+='<td valign="top" style="text-align: right; padding: 3px 2px 4px 2px; border-top: #C0C0C0 solid 1px">'+i.getStep(a).getDistance().html;b+="</tr>"}b+='<tr><td colspan="3"><b>'+gdir.addressLine+"</b><br>";b+="Total distance: "+gdir.getDistance().html+"<br>";b+="</tr></table></div>";b+='<a class="bluelink" href="javascript:hideDirections()" style="margin-left: 2px">Hide directions</a>';D("DD").innerHTML=b;toggleDivs(["DD","DC","DT","DX","DE","DS"],1);polypoi=remove(polypoi);polypoi=gdir.getPolyline();if(polypoi){map.addOverlay(polypoi);polypoi.setStrokeStyle({color:"#00FF00"})}var f=gdir.getBounds();if(f){mapLoaded=false;map.setCenter(f.getCenter(),M.min(map.getBoundsZoomLevel(f),15))}}}catch(n){dirError1()}}function revGeoCallback(b,c){var a="<b>Route halfway point</b>";if(b&&b.Status.code==200)var e=b.Placemark[0],d="Nearest address: "+e.address;a=formatInfo(a,mid.lat(),mid.lng(),1,d);if(c){RM=createMarker(c,a,BI,kRoute);map.addOverlay(RM);setFocus(kRoute)}else RM.bindInfoWindowHtml(a);RM.html=a}function hideDirections(){if(D("DD").style.display=="block"){toggleDivs(["DT","DX","DC","DD","DS","DE"],1);polypoi=remove(polypoi);setBounds(0,1,0,0)}}function getDragHtml(d){var c,a;if(FS==kMid){c=MM;a="MM"}else{c=RM;a="RM"}var b="<div style='width: 15.62em'>";b+='<a class="bluelink" href="javascript:map.closeInfoWindow(); if (searcher.results.length>0) setBounds(0,1,0,0)">Zoom to points of interest</a><br>';b+="Current location:<br>";b+="Latitude: "+round6(c.getLatLng().lat())+"<br>Longitude: "+round6(c.getLatLng().lng())+"<br>";b+='<a class="bluelink" href="javascript:'+a+".bindInfoWindowHtml("+a+".html); "+a+".setLatLng("+a+'.startLatLng); clearResults(1); setBounds(1,0,1,1)">Go back to '+FS+"</a></div>";c.bindInfoWindowHtml(b);if(d){searchZoom=0;search()}}function searchTimeout(){clearTimeout(T);if(D("DT").style.display=="none")if(launchState)displayError(M1+"your search. "+M2+M4,0);else displayError(M1+"your search."+M3+"starting a search.",0)}function search(){if(p.length==0){displayError("You must add one or more addresses before searching for points of interest.",0);D("DA").style.display!="none"&&f1.address.focus();return false}var a,b,c=f2.category.selectedIndex;if(c>-1)b=categories[c];else b=trim(f2.categoryedit.value);if(!b){displayError("A search category must be selected or entered.",8);f2.categoryedit.focus();return false}if(RM&&FS==kRoute)a=RM.getLatLng();else if(MM&&FS==kMid)a=MM.getLatLng();else a=new google.maps.LatLng(p[0].lat,p[0].lng);searcher.setCenterPoint(a);clearGeocode();clearResults(0);t5();searchControl.execute(b);launchState=mapLoaded;clearTimeout(T);T=window.setTimeout(searchTimeout,8e3)}function searchCallback(){var o='Directions: <a class="bluelink" href="javascript:directions(',n="<a href=",f=", ",h="<br>";clearTimeout(T);try{D("DP").style.display="none";var a,q,l,k,c,j,e,g="",b="",p=searcher.results,m=p.length;if(m>0){map.closeInfoWindow();var d=searcher.cursor.currentPageIndex;for(i=0;i<PM[d].length;i++)map.removeOverlay(PM[d][i]);PM[d].length=0;c='<table cellspacing="0" style="width: 16.25em; padding: 0 0 2px 0; margin: 0">';for(i=0;i<m;i++){a=p[i];b="<b>"+a.titleNoFormatting+"</b><br>";g='<a target="_blank" href="'+a.url+'">'+a.title+"</a><br>";e="";if(a.streetAddress){b+=a.streetAddress+h;e+=a.streetAddress+f}b+=a.city;e+=a.city;if(a.region){b+=f+a.region;e+=f+a.region}if(a.country&&a.country!="United States"){b+=f+a.country;e+=f+a.country}a.addressLine=e;b+=h;g+=e+h;if(a.phoneNumbers)b+=a.phoneNumbers[0].number+h;c+='<tr valign="top"><td style="width: 1.2em"><a class="bluelink" style="background-color: '+hexColors[colorOrder[d+2].index]+'" href="javascript:google.maps.Event.trigger(PM['+d+"]["+i+"], 'click')\">"+String.fromCharCode(i+65)+"</a>";c+='<td><div class="clip">';j='<div style="border: black solid 2px" onclick="selectText(this)">'+b+'</div><a target="_blank" href="'+a.url+'">Information</a>&nbsp;&nbsp;';b=b.replace(/<br>/gi,"\n");b=b.replace(/<.*?>/g,"");k='"mailto:?subject='+encodeURI("Let's get together")+"&body="+encodeURIComponent(b+"\nMap and directions\n").replace(/&/g,"%26")+a.url.replace(/&/g,"%26")+'">&nbsp;&nbsp;&nbsp;Send';j+=n+k+" invitation</a><br>";j+=o+a.lat+","+a.lng+",1,1,"+i+')">To here</a> - <a class="bluelink" href="javascript:directions('+a.lat+","+a.lng+",0,1,"+i+')">From here</a>';g+=o+a.lat+","+a.lng+",1,1,"+i+')">To</a> - <a class="bluelink" href="javascript:directions('+a.lat+","+a.lng+",0,1,"+i+')">From</a>   ';g+=n+k+"</a>";c+=g+"</div></tr>";q=new google.maps.LatLng(a.lat,a.lng);BI.image="images/"+colors[colorOrder[d+2].index]+"_Marker"+String.fromCharCode(i+65)+".png";l=createMarker(q,j,BI,"");map.addOverlay(l);PM[d].push(l)}c+="</table>";if(m>1){c+='<table><tr><td align="left" style="width: 15.62em">';for(i=0;i<searcher.cursor.pages.length;i++)if(i!=d)c+='<a class="bluelink" href="javascript:searcher.gotoPage('+i+')">'+(i+1)+"</a>&nbsp;&nbsp;";else c+=i+1+"&nbsp;&nbsp;";if(searcher.cursor.pages.length>3)c+='<a href="'+searcher.cursor.moreResultsUrl+'">More results</a>'}c+="</tr></table>";D("DT").innerHTML=c;D("DBR").style.display="block";toggleDivs(["DT","DC","DD","DX","DE","DS"],1);switch(searchZoom){case 0:getDragHtml(0);break;case 1:if(FS==kMid)setBounds(0,1,1,0);else setBounds(0,1,0,1);break;case 2:setBounds(0,1,0,0)}}else throw"err1";}catch(r){displayError("No search results were found near this location.",8)}}function createMarker(c,e,d,b){if(!b)var a=new google.maps.Marker(c,{icon:d});else{var a=new google.maps.Marker(c,{icon:d,draggable:true});google.maps.Event.addListener(a,"dragstart",function(){map.closeInfoWindow();setFocus(b)});google.maps.Event.addListener(a,"dragend",function(){getDragHtml(1)})}google.maps.Event.addListener(a,"click",function(){a.openInfoWindowHtml(e);setFocus(b)});return a}function triggerMid(){MM&&p.length>1&&google.maps.Event.trigger(MM,"click")}function triggerRoute(){RM&&google.maps.Event.trigger(RM,"click")}function clearResults(a){clearTimeout(T);searchControl.cancelSearch();gdir.clear();for(j=0;j<4;j++){for(i=PM[j].length-1;i>=0;i--)map.removeOverlay(PM[j][i]);PM[j].length=0}searcher.results.length=0;map.closeInfoWindow();polypoi=remove(polypoi);D("DD").innerHTML="";D("DT").innerHTML="";D("DBR").style.display="none";toggleDivs(["DX","DC","DT","DD","DE","DS"],2);a&&setBounds(1,0,1,1)}function clearAll(){clearResults(0);for(i=p.length-1;i>=0;i--)map.removeOverlay(p[i].marker);p.length=0;D("address1").innerHTML="Address 1:";MM=remove(MM);RM=remove(RM);poly=remove(poly);clearGeocode();setFocus("")}function clearGeocode(){f1.address.value="";toggleDivs(["DA","DB","DR","DB2"],2);f1.results.length=0}function removeOptionSelected(){var a=p.selectedIndex;if(a>=0){clearTimeout(T);map.removeOverlay(p[a].marker);p.remove(a);D("address1").innerHTML="Address "+(p.length+1)+":";if(p.length>0&&p.selectedIndex==-1)p.selectedIndex=0;switch(p.length){case 0:clearAll();return false;break;case 1:RM=remove(RM);poly=remove(poly);p[0].marker.hide();clearResults(1);break;case 2:clearResults(1);directions(p[1].lat,p[1].lng,1,0)}calculate()}}function appendToList(){var b=f1.results,c=M.max(b.selectedIndex,0),d=b[c].text;clearResults(0);appendOptionLast("places",d);var a=p.length-1;p[a].lat=b[c].lat;p[a].lng=b[c].lng;clearGeocode();if(a>=0&&p.selectedIndex==-1)p.selectedIndex=0;if(a==1){p[0].marker.show();directions(p[1].lat,p[1].lng,1,0)}else if(a==2){poly=remove(poly);RM=remove(RM)}var f=new google.maps.LatLng(p[a].lat,p[a].lng),e=splitAddress(d);p[a].marker=createMarker(f,formatInfo(e),null,"");map.addOverlay(p[a].marker);p[a].html=e;a==0&&p[a].marker.hide();toggleDivs(["DX","DE","DS"],1);calculate();D("address1").innerHTML="Address "+(p.length+1)+":";setBounds(1,0,1,1)}function calculate(){var c=0,d=0,a=0,b=0,f=0,k,l,m,g,j,e=p.length;for(i=0;i<p.length;i++){g=rad(p[i].lat);j=rad(p[i].lng);k=M.cos(g)*M.cos(j);l=M.cos(g)*M.sin(j);m=M.sin(g);a+=k;b+=l;f+=m}a=a/e;b=b/e;f=f/e;d=M.atan2(b,a);hyp=M.sqrt(a*a+b*b);c=M.atan2(f,hyp);if(M.abs(a)<1e-9&&M.abs(b)<1e-9&&M.abs(f)<1e-9){displayError("The midpoint is the center of the earth.",8);return false}else{c=deg(c);d=deg(d);MM=remove(MM);var h=new google.maps.LatLng(c,d);if(e==1){html=formatInfo(p[0].html,null,null,1);MM=createMarker(h,html,null,kMid)}else{var n="";if(e==2)n="  'as the crow flies'";html=formatInfo("<b>Midpoint</b>"+n,c,d,1);BI.image="images/"+colors[colorOrder[1].index]+"_MarkerM.png";MM=createMarker(h,html,BI,kMid)}map.addOverlay(MM);setFocus(kMid);MM.startLatLng=h;MM.html=html}}function formatInfo(f,d,e,b,c){var a='<div style="width: 17.5em">';a+=f;if(b)a+='<br><a class="bluelink" href="javascript:searchZoom=1; search()">Search near here</a>';if(c)a+="<br>"+c;if(d!=null)a+="<br>Latitude: "+round6(d)+"<br>Longitude: "+round6(e);if(b)a+="<br><b>Drag me</b> to search other locations";a+="</div>";return a}function remove(a){a&&map.removeOverlay(a);return null}function appendOptionLast(d,c){var a=document.createElement("option");a.text=c;a.value=c;var b=D(d);try{b.add(a,null)}catch(e){b.add(a)}}function displayError(a,b){D("DEF").innerHTML=a;D("DEF").style.margin=b+"px 0";toggleDivs(["DE","DX","DS"],1)}function checkKeycode(){var a=f2.categoryedit.value;if(trim(a)!="")f2.category.selectedIndex=-1}function rad(a){return a*M.PI/180}function deg(a){return a*180/M.PI}function splitAddress(a){var b=a.split(/\s*,\s*/);if(a.length>30||b.length>3||b.length==3&&/\d/.test(b[0]))a=a.replace(/\s*,\s*/,"<br>");return a}function trim(a){if(a.charCodeAt(0)>32&&a.charCodeAt(a.length-1)>32)return a;else return a.replace(/^\s+|\s+$/g,"")}function round6(a){return M.round(a*1e6)/1e6}function toggleDivs(a,b){for(i=0;i<a.length;i++)if(i<b)D(a[i]).style.display="block";else D(a[i]).style.display="none"}function t5(){toggleDivs(["DS","DX","DE"],1)}function D(a){return document.getElementById(a)}function geoTimeout(){if(launchState)displayError(M1+"this address. "+M2+M4,0);else displayError(M1+"this address."+M3+"adding an address.",0)}function launchGeocode(){if(!map){displayError("Please be sure you are connected to the Internet and that the page is fully loaded. If necessary, reload the page.",0);return false}query=trim(f1.address.value);var a=query.length;if(a==0){displayError("You must enter an address, city or other place to search for.",8);f1.address.focus();return false}var d=query.split(",");if(d.length==2){a=trim(d[0]);var b=trim(d[1]);if(a==parseFloat(a)&&a>=-90&&a<=90&&b==parseFloat(b)&&b>=-180&&b<=180){var c=f1.results;c.length=1;c[0].text=a+", "+b;c[0].lat=a;c[0].lng=b;appendToList();return false}}geocoder.getLocations(query,gCallback);toggleDivs(["DS","DC","DX","DE","DT","DD"],2);launchState=mapLoaded;clearTimeout(T);T=window.setTimeout(geoTimeout,6e3)}function gCallback(c){var d=c.Status.code;if(d==500)return false;clearTimeout(T);try{var a=f1.results;a.length=0;if(d==200){var b=c.Placemark;for(i=0;i<b.length;i++){if(!b[i].address)b[i].address=query;appendOptionLast("results",b[i].address);a[a.length-1].lat=b[i].Point.coordinates[1];a[a.length-1].lng=b[i].Point.coordinates[0]}setResultsBox(a.length)}else{a.length=0;displayError("Your address was not found.  Be sure that you have typed the address correctly"+M4,0)}}catch(e){displayError("Please try again",17)}}function setResultsBox(a){if(a==1)appendToList();else{toggleDivs(["DR","DB2","DX","DA","DB","DE","DS"],3);D("resultslabel").innerHTML="Select from "+a+" results:";f1.results.focus()}}google.setOnLoadCallback(initialize);