var count=-1;var map;var polys=new Array();var nearbys=new Array();var line;window.onload=function(){if(google.maps.BrowserIsCompatible()){map=new google.maps.Map2(document.getElementById("map"));var D=0,B=0,C=1,E=G_NORMAL_MAP,A="k";if(typeof (current_lat)!="undefined"){D=current_lat;B=current_lng}if(typeof (current_zoom)!="undefined"){C=current_zoom}if(typeof (current_units)!="undefined"){A=current_units}if(D==0&&B==0&&C==1&&google.loader.ClientLocation){D=google.loader.ClientLocation.latitude;B=google.loader.ClientLocation.longitude;C=11;if(A=="k"&&google.loader.ClientLocation.address.country_code=="US"){A="m"}}if(typeof (current_maptype)!="undefined"){if(current_maptype=="Satellite"){E=G_SATELLITE_MAP}if(current_maptype=="Hybrid"){E=G_HYBRID_MAP}}if(A=="m"){$("#unit_mi").attr("checked","checked")}else{$("#unit_km").attr("checked","checked")}map.setCenter(new google.maps.LatLng(D,B),C,E);map.addControl(new google.maps.LargeMapControl());map.addControl(new google.maps.MapTypeControl());map.addControl(new google.maps.ScaleControl());map.enableDoubleClickZoom();map.enableContinuousZoom();map.enableScrollWheelZoom();map.clearOverlays();geocoder=new google.maps.ClientGeocoder();showPath();$("#controls > ul").tabs()}};window.onunload=function(){google.maps.Unload();if(typeof (current_user)=="undefined"){return }var D=map.getCenter().lat(),B=map.getCenter().lng(),C=map.getZoom(),E=map.getCurrentMapType().getName();var A;if($("#unit_mi:checked").length==1){A="m"}else{A="k"}if(typeof (current_lat)=="undefined"||D!=current_lat||B!=current_lng){google.maps.DownloadUrl("user?operation=center&email="+current_user+"&lat="+D+"&lng="+B,function(G,F){})}if(typeof (current_zoom)=="undefined"||C!=current_zoom){google.maps.DownloadUrl("user?operation=zoom&email="+current_user+"&zoom="+C,function(G,F){})}if(typeof (current_maptype)=="undefined"||E!=current_maptype){google.maps.DownloadUrl("user?operation=maptype&email="+current_user+"&maptype="+E,function(G,F){})}if(typeof (current_units)=="undefined"||A!=current_units){google.maps.DownloadUrl("user?operation=units&email="+current_user+"&units="+A,function(G,F){})}};function hidePath(A){polys[A].hidden^=1;if(polys[A].hidden){map.removeOverlay(polys[A])}else{map.addOverlay(polys[A])}}function showList(){$("#pathList").empty();for(p in polys){if(polys[p].deleted||polys[p].getVertexCount()<2){continue}if($("#unit_mi:checked").length==1){var A=(Math.round(polys[p].getLength()*0.0621371192)/100)+" mi"}else{var A=(Math.round(polys[p].getLength()/10)/100)+" km"}$("#pathList").append("<li><input type='checkbox' onclick='hidePath("+polys[p].i+")' class='pathhide' "+(polys[p].hidden?"":"checked")+"/><a href='javascript:editName("+p+")' class='nametext' id='nametext-"+p+"'>"+(polys[p].name)+"</a><input type='text' size='7' value='"+(polys[p].name)+"' onchange='changeName("+p+",this.value)' onblur='nameEdit("+p+")' onkeypress='nameKeyPress(event,"+p+")' class='nameinput' id='nameinput-"+p+"'/>: "+A+" <button onclick='centerOn("+p+")'>Center</button><button onclick='editPath("+p+")'>Edit</button><a href='javascript:deletePath("+p+")'><img alt='delete' src='images/8c2f03_11x11_icon_close.gif' /></a></li>")}}function centerOn(A){map.panTo(polys[A].getBounds().getCenter())}function editName(A){$("#nametext-"+A).css("display","none");$("#nameinput-"+A).css("display","inline");$("#nameinput-"+A).val($("#nametext-"+A).html());$("#nameinput-"+A).select()}function nameEdit(A){$("#nameinput-"+A).css("display","none");$("#nametext-"+A).html($("#nameinput-"+A).val());$("#nametext-"+A).css("display","inline")}function changeName(B,A){polys[B].name=A;savePath(B)}function nameKeyPress(B,A){switch(B.keyCode){case 13:case 3:nameEdit(A);break}}function checkProximity(){if(polys.length<2){alert("need at least 2 lines");return }var A=false;for(i=0;i<polys.length;i++){for(j=i+1;j<polys.length;j++){A^=(polys[i].getBounds().intersects(polys[j].getBounds()))}}alert(A?"Near":"Far")}var adding;function savePath(C){if(typeof (current_user)=="undefined"){return }if(polys.length<=C){return }if(polys[C].deleted==2){return }var B="action?";var E=[];if(!polys[C].key||polys[C].key==""){E.push("operation=add");adding=C;polys[C].key="!";var A=polys[C].getBounds().getCenter();var G=encodeGeoHash(A.lat(),A.lng());E.push("geohash="+G)}else{if(polys[C].deleted==1){E.push("operation=delete");polys[C].deleted=2}else{E.push("operation=edit")}if(polys[C].key=="!"){return }E.push("key="+polys[C].key)}E.push("name="+polys[C].name);E.push("email="+current_user);for(var F=0;F<polys[C].getVertexCount();F++){var D=polys[C].getVertex(F);var H=D.lat();var I=D.lng();E.push("lat="+H);E.push("lng="+I)}B+=E.join("&");google.maps.DownloadUrl(B,updateKey)}function updateKey(data,response){if(response==200){var json=eval("("+data+")");if(json.status!="success"){return }if(json.operation!="add"){return }polys[adding].key=json.result.paths[0].key;adding=undefined}}function showNearby(){if(typeof (current_user)=="undefined"){return }if(polys.length<1){return }var F=[];F.push("operation=nearby");F.push("email="+current_user);for(var E in polys){var A=polys[E].getBounds().getCenter();var C=encodeGeoHash(A.lat(),A.lng()).substr(0,6);addParams(F,"geohash="+C);addParams(F,"geohash="+calculateAdjacent(C,"top"));addParams(F,"geohash="+calculateAdjacent(C,"bottom"));var D=calculateAdjacent(C,"left");addParams(F,"geohash="+D);var B=calculateAdjacent(C,"right");addParams(F,"geohash="+B);addParams(F,"geohash="+calculateAdjacent(D,"top"));addParams(F,"geohash="+calculateAdjacent(D,"bottom"));addParams(F,"geohash="+calculateAdjacent(B,"top"));addParams(F,"geohash="+calculateAdjacent(B,"bottom"))}google.maps.DownloadUrl("action?"+F.join("&"),addJsonNearbys)}function addParams(C,B){var A;for(A=0;A<C.length;A++){if(C[A]==B){break}}if(A<C.length){return }C.push(B)}function addJsonNearbys(data,response){if(response==200){var json=eval("("+data+")");if(json.status!="success"){return }var paths=json.result.paths;$("#nearbyList").empty();for(var p in paths){if(paths[p].coordinates.length<2){continue}var array=[];for(var gp in paths[p].coordinates){array.push(new google.maps.LatLng(paths[p].coordinates[gp].lat,paths[p].coordinates[gp].lng))}var newline=new google.maps.Polyline(array,"#F88017");map.addOverlay(newline);newline.hidden=0;nearbys.push(newline);$("#nearbyList").append('<li><input type="checkbox" onclick="hideNearby('+p+')" checked>Nearby #'+(parseInt(p)+1)+": "+(Math.round(nearbys[p].getLength()/10)/100)+"km/"+(Math.round(nearbys[p].getLength()*0.0621371192)/100)+" mi</li>")}}}function hideNearby(A){nearbys[A].hidden^=1;if(nearbys[A].hidden){map.removeOverlay(nearbys[A])}else{map.addOverlay(nearbys[A])}}function showPath(){if(typeof (current_user)=="undefined"){return }map.clearOverlays();count=-1;polys=new Array();google.maps.DownloadUrl("action?email="+current_user,addJsonPaths)}function addJsonPaths(data,response){if(response==200){var json=eval("("+data+")");if(json.status!="success"){return }var paths=json.result.paths;for(var p in paths){if(paths[p].coordinates.length<2){continue}var array=[];for(var gp in paths[p].coordinates){array.push(new google.maps.LatLng(paths[p].coordinates[gp].lat,paths[p].coordinates[gp].lng))}addLine(array,true,paths[p].key,paths[p].name)}}showNearby()}function editPath(A){line=polys[A];line.enableEditing();$("#controls > ul").tabs("add","#tab-3","Edit Route");$("#tab-3").html("<form action='#' onsubmit='finishNew(); return false;'><div><label for='name'>Name: </label><input type='text' name='name' id='name' value='"+line.name+"'></div><div><input type='submit' name='finish' value='Finish' /></div></form");$("#controls > ul").tabs("select","#tab-3");$("#controls > ul").tabs("disable",0);$("#controls > ul").tabs("disable",1)}function addNew(){addLine([]);$("#controls > ul").tabs("add","#tab-3","New Route");$("#tab-3").html("<form action='#' onsubmit='showLocation(); return false;'><b>Starting Location:</b><input type='text' name='q' value='' class='address_input' size='40' /><input type='submit' name='find' value='Move Map' /></form><form action='#' onsubmit='finishNew(); return false;'><div><label for='name'>Name: </label><input type='text' name='name' id='name' /></div><div><input type='submit' name='finish' value='Finish' /></div></form");$("#controls > ul").tabs("select","#tab-3");$("#controls > ul").tabs("disable",0);$("#controls > ul").tabs("disable",1)}function finishNew(){if(typeof (line)!="undefined"){if($("#name").val()!=""){line.name=$("#name").val()}google.maps.Event.trigger(line,"endline")}$("#tab-3").toggleClass("ui-tabs-hide");$("#controls > ul").tabs("remove",2);$("#controls > ul").tabs("enable",0);$("#controls > ul").tabs("enable",1);$("#controls > ul").tabs("select","#tab-1")}function addLine(E,A,D,C){count++;var B=new google.maps.Polyline(E);B.key=D||"";B.name=C||("Route "+(count+1));B.i=count;line=B;polys.push(B);map.addOverlay(B);B.enableDrawing();google.maps.Event.addListener(B,"endline",function(){B.disableEditing();if(B.getVertexCount()<2){return }showList();if(E.length==0){savePath(B.i)}google.maps.Event.addListener(B,"lineupdated",function(){showList();savePath(B.i)});google.maps.Event.clearListeners(B,"click");google.maps.Event.addListener(B,"click",function(H,F){line=B;if(typeof F=="number"){if(B.getVertexCount()==2){var G;for(G=0;G<polys.length;G++){if(polys[G]==B){break}}deletePath(G);savePath(B.i)}else{B.deleteVertex(F)}}})});if(A){google.maps.Event.trigger(B,"endline")}}function deletePath(A){polys[A].deleted=1;polys[A].disableEditing();map.removeOverlay(polys[A]);savePath(A);showList()}var tabAccuracy=new Array(2,4,6,10,12,13,16,16,17,18);var geocoder;function showLocation(){var A=document.forms[0].q.value;geocoder.getLocations(A,addAddressToMap)}function addAddressToMap(A){if(!A||A.Status.code!=200){alert("Sorry, we were unable to find this location")}else{place=A.Placemark[0];point=new google.maps.LatLng(place.Point.coordinates[1],place.Point.coordinates[0]);map.setCenter(point,tabAccuracy[place.AddressDetails.Accuracy])}};