var map,GDir1,GDir2,normalProj,waypoints=[],gpolys=[],gpolysDrag=[],routeNodes=[],myNode,markerDragged,isDragged,lastIndex,prevIndex;var RM_DRAG_ENABLE=1;var RM_DRAG_DISABLE=0;var backupIndex,backupWaypoints=[],backupGpolys=[],backupGpolysDrag=[],enableUndo=true;var snapTo=1;function toggleSnap(){if(snapTo){snapTo=0;}else{snapTo=1;}};function initmaps(){if(!document.getElementById("mapDiv")){return false;}map=new google.maps.Map2(document.getElementById("mapDiv"),{draggableCursor:"crosshair"});var _1=new google.maps.LatLng(43.61207,-116.2033);var _2=3;if(google.loader.ClientLocation){_2=12;_1=new google.maps.LatLng(google.loader.ClientLocation.latitude,google.loader.ClientLocation.longitude);}map.setCenter(_1,_2);map.enableDoubleClickZoom();map.enableScrollWheelZoom();map.enableContinuousZoom();map.addMapType(G_SATELLITE_3D_MAP);map.addControl(new google.maps.MapTypeControl());map.addControl(new google.maps.LargeMapControl());map.addControl(new google.maps.ScaleControl());normalProj=G_NORMAL_MAP.getProjection();GDir1=new google.maps.Directions();GDir2=new google.maps.Directions();google.maps.Event.addListener(map,"mousemove",getProximity);google.maps.Event.addListener(map,"zoomend",function(){routeNodes=[];});google.maps.Event.addListener(map,"click",function(_3,_4){if(_4){setRestorePoint();if(waypoints.length==0){GDir1.loadFromWaypoints([_4.toUrlValue(6),_4.toUrlValue(6)],{getPolyline:true});}else{if(snapTo){GDir1.loadFromWaypoints([waypoints[waypoints.length-1].getPoint(),_4.toUrlValue(6)],{getPolyline:true});}else{loadFromPlainpoint([waypoints[waypoints.length-1].getPoint(),_4]);}}}});iconNode=new google.maps.Icon();iconNode.image="getimage.php?activity_id=1&option=icon";iconNode.shadow="";iconNode.iconSize=new google.maps.Size(20,20);iconNode.shadowSize=new google.maps.Size(0,0);iconNode.iconAnchor=new google.maps.Point(5,5);iconNode.infoWindowAnchor=new google.maps.Point(5,5);iconNode.dragCrossImage="empty.gif";iconNode.dragCrossSize=google.maps.Size(1,1);iconNode.maxHeight=1;myNode=new google.maps.Marker(map.getCenter(),{icon:iconNode,draggable:true,bouncy:false,zIndexProcess:function(_5,b){return 1;}});map.addOverlay(myNode);myNode.show();myNode.hide();google.maps.Event.addListener(myNode,"dragstart",function(){setRestorePoint();});google.maps.Event.addListener(myNode,"drag",function(){myNode.show();if(isDragged==2){markerDragged=myNode;return;}if(myNode.MyIndex<waypoints.length){isDragged=2;markerDragged=false;lastIndex=myNode.MyIndex;prevIndex=-1;GDir2.loadFromWaypoints([waypoints[lastIndex].getPoint(),myNode.getPoint().toUrlValue(6),waypoints[lastIndex+1].getPoint()],{getPolyline:true});}});google.maps.Event.addListener(myNode,"dragend",function(){var _7=myNode.getPoint();var _8=new google.maps.Marker(_7,{icon:iconNode,draggable:true,dragCrossMove:false,bouncy:false,zIndexProcess:function(_9,b){return 1;}});waypoints.splice(myNode.MyIndex+1,0,_8);for(var i=myNode.MyIndex;i<waypoints.length;i++){waypoints[i].MyIndex=i;}var _c=new google.maps.Polyline([_7]);map.addOverlay(_c);gpolys.splice(myNode.MyIndex+1,0,_c);gpolysDrag.splice(myNode.MyIndex+1,0,RM_DRAG_ENABLE);google.maps.Event.addListener(_8,"dragstart",function(){setRestorePoint();isDragged=1;myNode.hide();});google.maps.Event.addListener(_8,"dragend",function(){isDragged=0;});google.maps.Event.addListener(_8,"drag",dragMarker);map.addOverlay(_8);if(myNode.MyIndex<waypoints.length){lastIndex=myNode.MyIndex+1;prevIndex=lastIndex-1;GDir2.loadFromWaypoints([waypoints[lastIndex-1].getPoint(),_7.toUrlValue(6),waypoints[lastIndex+1].getPoint()],{getPolyline:true});}});google.maps.Event.addListener(GDir1,"load",function(){var gp=GDir1.getPolyline();var _e=gp.getVertex(gp.getVertexCount()-1);var _f=new google.maps.Marker(_e,{icon:iconNode,draggable:true,dragCrossMove:false,bouncy:false,zIndexProcess:function(_10,b){return 1;}});if(waypoints.length==0){_f.title=GDir1.getRoute(0).getStartGeocode().address;}else{waypoints[waypoints.length-1].title=GDir1.getRoute(0).getStartGeocode().address;_f.title=GDir1.getRoute(0).getEndGeocode().address;}google.maps.Event.addListener(_f,"dragstart",function(){setRestorePoint();isDragged=1;myNode.hide();});google.maps.Event.addListener(_f,"drag",dragMarker);google.maps.Event.addListener(_f,"dragend",function(){isDragged=0;});_f.MyIndex=waypoints.length;waypoints.push(_f);map.addOverlay(_f);if(waypoints.length>1){map.addOverlay(gp);gpolys.push(gp);gpolysDrag.push(RM_DRAG_ENABLE);routeNodes=[];getProximity();}});google.maps.Event.addListener(GDir2,"load",function(){var gp=GDir2.getPolyline();map.removeOverlay(gpolys[lastIndex]);if(prevIndex>=0){map.removeOverlay(gpolys[lastIndex-1]);var _13,_14,_15=[];var p0=waypoints[lastIndex].getPoint();for(var i=0;i<gp.getVertexCount();i++){var p=gp.getVertex(i);_15.push(p);var d=p0.distanceFrom(p);if(i==0||_13>d){_13=d;_14=i;}}gpolys[lastIndex-1]=new google.maps.Polyline(_15.slice(0,_14+1));gpolysDrag[lastIndex-1]=RM_DRAG_ENABLE;gpolys[lastIndex]=new google.maps.Polyline(_15.slice(_14,_15.length));gpolysDrag[lastIndex]=RM_DRAG_ENABLE;map.addOverlay(gpolys[lastIndex-1]);waypoints[lastIndex-1].title=GDir2.getRoute(0).getStartGeocode().address;waypoints[lastIndex].title=GDir2.getRoute(0).getEndGeocode().address;waypoints[lastIndex+1].title=GDir2.getRoute(1).getEndGeocode().address;}else{gpolys[lastIndex]=gp;gpolysDrag[lastIndex]=RM_DRAG_ENABLE;waypoints[lastIndex].title=GDir2.getRoute(0).getStartGeocode().address;waypoints[lastIndex+1].title=GDir2.getRoute(0).getEndGeocode().address;}map.addOverlay(gpolys[lastIndex]);routeNodes=[];getProximity();isDragged=0;if(markerDragged){isDragged=1;google.maps.Event.trigger(markerDragged,"drag");}});clearAll();window.onunload=google.maps.Unload;};function dragMarker(){if(isDragged==2){markerDragged=this;return;}isDragged=2;if(markerDragged){marker=markerDragged;markerDragged=false;}else{marker=this;}lastIndex=marker.MyIndex;var _1a=marker.getPoint();if(lastIndex>0){if(lastIndex<waypoints.length-1){prevIndex=lastIndex-1;GDir2.loadFromWaypoints([waypoints[lastIndex-1].getPoint(),_1a.toUrlValue(6),waypoints[lastIndex+1].getPoint()],{getPolyline:true});}else{prevIndex=-1;lastIndex=lastIndex-1;GDir2.loadFromWaypoints([waypoints[lastIndex].getPoint(),_1a.toUrlValue(6)],{getPolyline:true});}}else{if(waypoints.length>1){prevIndex=-1;GDir2.loadFromWaypoints([_1a.toUrlValue(6),waypoints[1].getPoint()],{getPolyline:true});}}};function getProximity(_1b,_1c){var _1d,_1e;if(routeNodes.length==0){_1d=0;_1e=map.getZoom();if(gpolys.length>0){for(var i=0;i<gpolys.length;i++){_1d+=gpolys[i].getLength();if(gpolysDrag[i]==RM_DRAG_ENABLE){for(var j=1;j<gpolys[i].getVertexCount();j++){var _21=normalProj.fromLatLngToPixel(gpolys[i].getVertex(j),_1e);var _22=normalProj.fromLatLngToPixel(gpolys[i].getVertex(j-1),_1e);routeNodes.push({"start":_22,"end":_21,"polyindex":i});}}}}var _23=document.getElementById("panel");var km=_1d/1000;var _25=kmToMiles(km).toFixed(2);if(_23){_23.innerHTML=_25;}}if(!_1b||routeNodes.length<=1||isDragged>0){return;}_1e=map.getZoom();var _26=normalProj.fromLatLngToPixel(_1b,_1e);var _27=999;var _28=_26.x;var _29=_26.y;if(routeNodes.length>1){for(var n=0;n<routeNodes.length;n++){var _2b=pointToLine(routeNodes[n].start.x,routeNodes[n].end.y,routeNodes[n].end.x,routeNodes[n].end.y,_26.x,_26.y);var x=_2b["x"];var y=_2b["y"];_1d=_2b["d"];if(_27>_1d){_27=_1d;_28=x;_29=y;myNode.MyIndex=routeNodes[n].polyindex;}}if(_27>25){myNode.hide();}else{for(n=waypoints.length;--n>=0;){var _2e=normalProj.fromLatLngToPixel(waypoints[n].getPoint(),_1e);var dx=_2e.x-_28;var dy=_2e.y-_29;if(dx*dx+dy*dy<25){myNode.hide();return;}}myNode.setPoint(normalProj.fromPixelToLatLng(new google.maps.Point(_28,_29),_1e));myNode.show();}}function pointToLine(_31,_32,_33,_34,_35,_36){var x,y,d1,d2,d;var dx=_35-_31;var dy=_36-_32;d1=dx*dx+dy*dy;x=_33;dx=_35-x;y=_34;dy=_36-y;d2=dx*dx+dy*dy;dx=x-_31;dy=y-_32;d=dx*dx+dy*dy;var u=((_35-x)*dx+(_36-y)*dy)/d;x+=(u*dx);y+=(u*dy);dx=_35-x;dy=_36-y;_1d=dx*dx+dy*dy;if((d1-_1d)+(d2-_1d)>d){if(d1<d2){_1d=d1;x=_31;y=_32;}else{_1d=d2;x=_33;y=_34;}}return {"x":x,"y":y,"d":_1d};};};function kmToMiles(km){return km*0.621371192;};function deleteLast(){if(waypoints.length!=0){var _3f=waypoints.pop();map.removeOverlay(_3f);if(gpolys.length!=0){var _40=gpolys.pop();var _41=gpolysDrag.pop();map.removeOverlay(_40);}routeNodes=[];}};function setRestorePoint(){backupWaypoints=[];for(var i=0;i<waypoints.length;i++){backupWaypoints.push(new google.maps.Marker(waypoints[i].getPoint(),{icon:iconNode,draggable:true,dragCrossMove:false,bouncy:false,zIndexProcess:function(_43,b){return 1;}}));}backupGpolys=gpolys.slice();backupGpolysDrag=gpolysDrag.slice();enableUndo=true;};function undoLast(){map.clearOverlays();waypoints=backupWaypoints.slice();for(var i=0;i<waypoints.length;i++){map.addOverlay(waypoints[i]);}gpolys=backupGpolys.slice();for(var i=0;i<gpolys.length;i++){map.addOverlay(gpolys[i]);}gpolysDrag=backupGpolysDrag.slice();routeNodes=[];getProximity();initMyNode();enableUndo=false;};function clearAll(){map.clearOverlays();waypoints=[];gpolys=[];gpolysDrag=[];routeNodes=[];getProximity();initMyNode();setRestorePoint();};function initMyNode(){map.addOverlay(myNode);myNode.show();myNode.hide();};function setStatus(_46){document.getElementById("status").innerHTML=_46;};function copyToLog(){var _47="distance";var _48="panel";var _49=document.getElementById("addlogform");for(var e=0;e<_49.elements.length;e++){if(_49.elements[e].name==_47){_49.elements[e].value=document.getElementById(_48).innerHTML;}}};function loadFromPlainpoint(_4b){var gp=new GPolyline(_4b,"#0000ff",5);var _4d=new google.maps.Marker(_4b[1],{icon:iconNode,draggable:false,dragCrossMove:false,bouncy:false,zIndexProcess:function(_4e,b){return 1;}});waypoints[waypoints.length-1].disableDragging();_4d.MyIndex=waypoints.length;waypoints.push(_4d);map.addOverlay(_4d);if(waypoints.length>1){map.addOverlay(gp);gpolys.push(gp);gpolysDrag.push(RM_DRAG_DISABLE);routeNodes=[];getProximity();}};
