/*
 Copyright 2011, Henk Verouden.
 This is not open source.
*/
var colList=[];function googleMap(a,b){this.onChange=this.onFullscreenSwitch=null;b||(b={});b.earth="undefined"==typeof b.earth?!0:b.earth;b.design="undefined"==typeof b.design?!0:b.design;b.hasTrack="undefined"==typeof b.hasTrack?!0:b.hasTrack;this.options=b;this.canvas=$j(a);this.initControls();this.initMap();return this}
googleMap.prototype.free=function(){this.isDestroying=!0;this.stopAnimation();this.aDistMarkers=this.aInfoMarkers=this.aPath=this.elevator=this.directionService=this.gc=this.ge=this.map=null};
googleMap.prototype.getAsHtml=function(){for(var a="",b,c=0;c<this.aPath.length;c++){strPath="[P type="+this.aPath[c].path.lineType+" lat="+this.aPath[c].marker.position.lat().toString().substring(0,10)+" lng="+this.aPath[c].marker.position.lng().toString().substring(0,10)+("undefined"!=this.aPath[c].gpsHeight?"gpsHeight":"")+"]\n";for(var d=this.aPath[c].path.getPath(),e=0;e<d.length;e++)b=d.getAt(e),strPath+=b.lat().toString().substring(0,10)+","+b.lng().toString().substring(0,10)+","+parseInt(b.height?
b.height:noHeight)+"\n";a+=strPath}for(c=0;c<this.aInfoMarkers.length;c++)b=this.aInfoMarkers[c],a+="[I type="+b.infoType+" lat="+b.position.lat().toString().substring(0,10)+" lng="+b.position.lng().toString().substring(0,10)+"]\n"+escape(b.markerTxt)+"\n";return a};
googleMap.prototype.setFromHtml=function(a){this.stopAnimation();var b;this.removeAllInfoPoints();this.clearPath();for(var c=a.split("\n"),d=[],e=/type=(.*) lat=([-|+]?[0-9]*.[0-9]*) lng=([-|+]?[0-9]*.[0-9]*)/,f=/([-|+]?[0-9]*.[0-9]*),([-|+]?[0-9]*.[0-9]*)[\r]*,([0-9]*)/,g=0;g<c.length-1;g++)if(a=c[g],b=a.substr(0,3),"[P "==b){r=e.exec(a);lineType=r[1];lat=r[2];lng=r[3];b=this.createNewPath(new google.maps.LatLng(lat,lng),lineType);this.aPath.push(b);if(-1!=a.indexOf("gpsHeight"))b.path.gpsHeight=
!0;elements=[];d.push({path:b,elements:elements})}else if("[I "==b)r=e.exec(a),infoType=r[1],lat=r[2],lng=r[3],text=unescape(c[++g]),this.addInfoPoint(new google.maps.LatLng(lat,lng),text,r[1],!0);else if(r=f.exec(a))lat=r[1],lng=r[2],elements.push(new google.maps.LatLng(lat,lng)),elements[elements.length-1].height=r[3];for(g=0;g<d.length;g++)d[g].path.path.setPath(d[g].elements);this.showMaxPath();this.setMarkerDistance(this.totalDistance()/25);this.setStartStopMarkers();this.calcHeight()};
googleMap.prototype.reload=function(){this.loadGPSData(this.docId)};googleMap.prototype.loadGPSData=function(a){var b=this;b.docId=a;0<=a&&$j("a[name=reloadBtn]",b.controlDiv).css("display","inline-block");$j.ajax({url:"loadgps.php",dataType:"json",type:"get",data:{docId:a,version:2},success:function(a){b.setFromHtml(a)},error:function(a){isHenk&&alert("Henk: "+a.responseText)}})};googleMap.prototype.isDesigning=function(){return $j(".btnDesign",this.controlDiv).hasClass("down")};
googleMap.prototype.isAddingInfoPoints=function(){return $j(".btnInfoPoint",this.controlDiv).hasClass("down")};googleMap.prototype.design=function(){this.isAddingInfoPoints()&&this.infoPoints();$j(".btnDesign",this.controlDiv).toggleClass("down");this.isDesigning()?(this.map.setOptions({draggableCursor:"crosshair"}),this.showWaypoints(!0)):(this.map.setOptions({draggableCursor:"hand"}),this.showWaypoints(!1))};
googleMap.prototype.infoPoints=function(){this.isDesigning()&&this.design();$j(".btnInfoPoint",this.controlDiv).toggleClass("down");this.isAddingInfoPoints()?this.map.setOptions({draggableCursor:"crosshair"}):this.map.setOptions({draggableCursor:"hand"})};googleMap.prototype.showElevation=function(){$j(".btnElevation",this.controlDiv).hasClass("down")?(this.heightDiv.show(),this.drawElevationChart(!0)):this.heightDiv.hide()};
googleMap.prototype.showWaypoints=function(a){var b=this;b.isBusy(!0);setTimeout(function(){for(var c=0;c<b.aPath.length;c++)b.aPath[c].marker.setVisible(a);b.isBusy(!1)},1)};googleMap.prototype.totalDistance=function(){for(var a=0,b=0;b<this.aPath.length;b++)a+=this.aPath[b].path.distance();return a};
googleMap.prototype.calcHeight=function(){for(var a=0,b=0;b<this.aPath.length;b++){if("undefined"==typeof this.aPath[b].path.pathHeight)this.aPath[b].path.pathHeight=this.aPath[b].path.elevation();a+=this.aPath[b].path.pathHeight}$j("span[name='height']",this.controlDiv).html(parseInt(a))};googleMap.prototype.totalPoints=function(){for(var a=0,b=0;b<this.aPath.length;b++)a+=this.aPath[b].path.getPath().getLength();return a};
googleMap.prototype.setStartStopMarkers=function(){for(var a=0;a<this.aPath.length;a++)0==a?this.aPath[a].marker.setIcon(new google.maps.MarkerImage(encodeURI("img/waypointStart.png"),new google.maps.Size(10,10),null,new google.maps.Point(5,5))):a==this.aPath.length-1?this.aPath[a].marker.setIcon(new google.maps.MarkerImage(encodeURI("img/waypointStop.png"),new google.maps.Size(10,10),null,new google.maps.Point(5,5))):this.aPath[a].marker.setIcon(new google.maps.MarkerImage(encodeURI("img/waypoint.png"),
new google.maps.Size(10,10),null,new google.maps.Point(5,5)))};
googleMap.prototype.getPlaceAtDistance=function(a,b){var c=this;if(!c.gc)c.gc=new google.maps.Geocoder;c.distCalcBuffer=null;var d={latLng:c.getPointAtDistance(a)};c.gc.geocode(d,function(d,f){if("OK"==f)for(var g=0;g<d.length;g++)for(var h=0;h<d[g].address_components.length;h++){if(-1!=$.inArray("locality",d[g].address_components[h].types)){b(a,d[g].address_components[h].long_name);return}}else"OVER_QUERY_LIMIT"==f&&setTimeout(function(){c.getPlaceAtDistance(a,b)},1E3*Math.random())})};
googleMap.prototype.showDistanceMarkers=function(){var a=this,b=location.href.substring(0,location.href.lastIndexOf("/")+1),c=function(c,e){var f=encodeURI(b+c),g=a.aDistMarkers.push(new google.maps.Marker({map:a.map,zIndex:1,icon:new google.maps.MarkerImage(f),position:e}));a.aDistMarkers[g-1].img=f};a.isBusy(!0);setTimeout(function(){for(var b=a.aDistMarkers.length,e=0;e<b;e++)a.aDistMarkers[e].setMap(null);a.aDistMarkers=[];var f=a.totalDistance(),b=transDist(f),e=f/b;$j("span[name=distance]",
a.controlDiv).html(Math.round(b/100)/10);$j("span[name=points]",a.controlDiv).html(a.totalPoints());a.calcHeight();if(0<f&&-1!=a.markerDistance){c("dm.php?Start",a.aPath[0].marker.position);for(f=a.markerDistance;f<b;f+=a.markerDistance)a.distCalcBuffer=null,c("dm.php?"+Math.round(f/1E3),a.getPointAtDistance(f*e));c("dm.php?"+Math.round(b/100)/10,a.aPath[a.aPath.length-1].marker.position)}a.earthVisibleAndLoaded()&&a.initEarthPath();a.isBusy(!1)},1)};
googleMap.prototype.initMap=function(){var a=this;a.aInfoMarkers=[];a.aDistMarkers=[];a.aPath=[];var b={navigationControl:!0,streetViewControl:!0,mapTypeControl:!1,scaleControl:!0,scrollwheel:!1,zoom:2,center:new google.maps.LatLng(25,1),mapTypeId:google.maps.MapTypeId.HYBRID};a.map=new google.maps.Map(a.mapDiv[0],b);a.map.mapTypes.set("OSM",new google.maps.ImageMapType({getTileUrl:function(a,b){return"http://tile.openstreetmap.org/"+b+"/"+a.x+"/"+a.y+".png"},tileSize:new google.maps.Size(256,256),
name:"OpenStreetMap",maxZoom:18}));a.map.mapTypes.set("OSMA",new google.maps.ImageMapType({getTileUrl:function(a,b){return"http://tah.openstreetmap.org/Tiles/tile/"+b+"/"+a.x%(1<<b)+"/"+a.y+".png"},tileSize:new google.maps.Size(256,256),isPng:!0,maxZoom:18,name:"OSMARender"}));a.heightMarker=new google.maps.Marker({icon:"http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png",map:a.map});a.heightDiv=$j("<div style='background:url(img/opacity-bg.png); display: none; width:500px; height: 100px; border: 1px solid #dddddd;margin: 5px; padding: 5px;'></div>");
a.heightDiv.append("<div name='slider' style='z-index:10;opacity: 1;filter: alpha(opacity=1); position: absolute; width: 2px; background-color:black; height:100px' ></div><div name='img'></div>");a.heightDivSlider=$j("div[name=slider]",a.heightDiv);a.heightDiv.mousemove(function(b){b=b.pageX-a.heightDiv.offset().left-10;if(0<b&&(a.heightDivSlider.css("margin-left",b+2),a.distCalcBuffer=null,b=a.getPointAtDistance(b*a.heightDist)))a.heightMarker.setPosition(new google.maps.LatLng(b.lat(),b.lng())),
a.heightMarker.setVisible(!0)});a.heightDiv.mouseout(function(){a.heightMarker.setVisible(!1);a.heightDivSlider.css("margin-left",0)});a.map.controls[google.maps.ControlPosition.TOP_LEFT].push(a.heightDiv[0]);a.controlDiv=$j("<div style='background:url(img/opacity-bg.png); border: 1px solid black; margin: 5px; text-align: center; padding: 15px 5px;'></div>");b=$j("<select>");b.append($j("<option>Sat/Roads</option>").attr("value",google.maps.MapTypeId.HYBRID));b.append($j("<option>Roads</option>").attr("value",
google.maps.MapTypeId.ROADMAP));b.append($j("<option>Satellite</option>").attr("value",google.maps.MapTypeId.SATELLITE));b.append($j("<option>Terrain</option>").attr("value",google.maps.MapTypeId.TERRAIN));b.append($j("<option>OSM</option>").attr("value","OSM"));b.append($j("<option>OSMArender</option>").attr("value","OSMA"));b.change(function(){a.map.setMapTypeId($j(this).val())});$j(a.controlDiv).append(b);a.options.design&&($j(a.controlDiv).append("<br><br>"),btn=$j("<a name='reloadBtn' pTitle = 'Reload' class='popTxt btn'><img class='medium' src='img/reload.png'></a>"),
$j(a.controlDiv).append(btn),btn.click(function(){a.reload()}),btn.hide(),$j(a.controlDiv).append("<a pTitle = 'Clear track' class='popTxt btnClear btn'><img class='medium' src='img/clear.png'></a><br>"),$j(".btnClear",a.controlDiv).click(function(){a.clearPath()}),$j(a.controlDiv).append("<a pTitle='Track design' class='popTxt btnDesign btn'><img class='medium' src='img/track.png'></a>"),$j(".btnDesign",a.controlDiv).click(function(){a.design()}),$j(a.controlDiv).append("<a pTitle='Add info points' class='popTxt btnInfoPoint btn '><img class='medium' src='img/info.png'></a><br>"),
$j(".btnInfoPoint",a.controlDiv).click(function(){a.infoPoints()}),$j(a.controlDiv).append($j("<a pTitle='Use roads' name='cbUseRoads' class='popTxt btn down'><img class='medium' src='img/roads.png'></a>").click(function(){$j(this).toggleClass("down")})),$j(a.controlDiv).append("<a pTitle='Elevation chart' class='popTxt btnElevation btn'><img class='medium' src='img/elGraph.png'></a><br>"),$j(".btnElevation",a.controlDiv).click(function(){$j(this).toggleClass("down");a.showElevation()}).click(),$j(a.controlDiv).append("<a pTitle='Cols' class='popTxt btnCols btn'><img class='medium' src='img/col.png'> Cols</a><br><br>"),
$j(".btnCols",a.controlDiv).click(function(){a.showCols(this)}),$j(a.controlDiv).append("<div style='background-color: white; padding: 5px'><span name='distance' >0</span> "+distTxt+"<br><span name='points' >0</span> points<br>Height &plusmn; <span name='height' ></span> m</div>"));a.map.controls[google.maps.ControlPosition.RIGHT].push(a.controlDiv[0]);a.directionService=new google.maps.DirectionsService;google.maps.event.addListener(a.map,"dblclick",function(){a.dblClick=!0});google.maps.event.addListener(a.map,
"click",function(b){a.infoWindow.close();setTimeout(function(){a.dblClick||(a.isDesigning()?a.addPath(b):a.isAddingInfoPoints()&&a.addInfoPoint(b.latLng,"",0));setTimeout(function(){a.dblClick=!1},100)},300)});a.mapOverlay=new MapOverlay(a.map);a.markerInfoWindowContent=$j("<div style='display:none;background-color:white;height:180px; text-align: center'><br><img src='img/phones.png'><br><br><textarea style='height: 70px; width:300px' name='markerText'></textarea><br><br><a class='btnOk btn'>Ok</a> <a class='btnCan btn'>Cancel</a> <a class='btnDel btn'>Delete</a><br></div>").hide();
a.canvas.append(a.markerInfoWindowContent);$j(".btn",a.markerInfoWindowContent).click(function(b){a.closeInfoWindow(this);b.stopPropagation()});a.infoWindow=new google.maps.InfoWindow({content:a.markerInfoWindowContent[0]});a.elevator=new google.maps.ElevationService;initTxtToolTip($j(".popTxt",a.controlDiv))};
googleMap.prototype.showCols=function(){var a=this;0==$j("#colsDiv").length&&($j(document.body).append("<div style='padding-left:100px' title= 'Show...' id='colsDiv'><p><br><br><input id='mCols1' name='cols1' type='checkbox'> <label for = 'mCols1'><img src='hvwTools/gps/img/col1.png'> Road cols</label><br><input id='mCols2' name='cols2' type='checkbox'> <label for = 'mCols2'><img src='hvwTools/gps/img/col2.png'> Unpaved cols</label><br><input id='mCols3' name='cols3' type='checkbox'> <label for = 'mCols3'><img src='hvwTools/gps/img/col3.png'> Push the bike cols</label><br><br><input id='mCols4' name='cols4' type='checkbox'> <label for = 'mCols4'><img src='hvwTools/gps/img/col4.png'> Acrobatic cols</label><br><br><input id='mCols5' name='cols5' type='checkbox'> <label for = 'mCols5'><img src='hvwTools/gps/img/col5.png'> Unknown cols</label><br><br></p></div>"),$j.ajax({url:"loadCols.php",
dataType:"json",type:"post",data:{abc:1},success:function(b){for(var c=0;c<b.length;c++){var d=new google.maps.Marker({zIndex:1,type:b[c][4],pTitle:b[c][3]+(0==b[c][2]?"":"<br>Top: "+b[c][2]+" meters")+"<br><br><span class='smallTxt'>Click = Waypoint</span>",pWp:b[c][3],position:new google.maps.LatLng(b[c][0]-c/b.length,b[c][1]-c/b.length),icon:new google.maps.MarkerImage(encodeURI("hvwTools/gps/img/col"+b[c][4]+".png"))});google.maps.event.addListener(d,"mouseover",function(b){a.mapHintOn(this,b)});
google.maps.event.addListener(d,"mouseout",function(){a.mapHintOff(this)});google.maps.event.addListener(d,"click",function(){a.addInfoPoint(new google.maps.LatLng(this.position.lat(),this.position.lng()),this.pWp,2)});colList.push(d)}},error:function(a){isHenk&&alert("Henk: "+a.responseText)}}),$j("#colsDiv").dialog({autoOpen:!1,width:300,bgiFrame:!0,modal:!0,zIndex:1E5,open:function(){var a=$(this).data("oMap");$j("#colsDiv input").each(function(){$(this).attr("checked",a.colSelection[$(this).attr("name").slice(-1)])})},
buttons:{Ok:function(){var a=$(this).data("oMap");$j("#colsDiv input").each(function(){a.colSelection[$(this).attr("name").slice(-1)]=$(this).attr("checked")});$j(this).dialog("close");a.processCols()}}}));if(!a.cols)a.cols=[],a.colSelection=[],a.colSelection[1]=a.colSelection[2]=a.colSelection[3]=a.colSelection[4]=a.colSelection[5]=!1;$j("#colsDiv").data("oMap",a).dialog("open")};
googleMap.prototype.processCols=function(){var a=[];this.mc&&this.mc.clearMarkers();for(var b in colList)colList.hasOwnProperty(b)&&this.colSelection[colList[b].type]&&a.push(colList[b]);this.mc=new MarkerClusterer(this.map,a,{gridSize:50,maxZoom:10})};
googleMap.prototype.drawElevationChart=function(a){var b=this;if($j(".btnElevation",b.controlDiv).hasClass("down"))clearTimeout(b.drawTimeout),b.drawTimeout=setTimeout(function(){var a=b.totalDistance();if(0==a)$j("div[name=img]",b.heightDiv).html("");else{b.distCalcBuffer=null;var d=[],a=a/heightGraphPunten;b.heightDist=a;for(var e=0;e<heightGraphPunten;e++)pos=e*a,(x=b.getPointAtDistance(pos))&&d.push(parseInt(x.height?x.height:noHeight));$j.ajax({url:"heightGraph.php",type:"post",data:{data:d},
success:function(a){$j("div[name=img]",b.heightDiv).html("<img class='heightImg' src='"+a+"'>");b.earthHeightGraphChange()},error:function(a){isHenk&&alert("Henk: "+a.responseText)}})}},a?0:1E3)};
googleMap.prototype.closeInfoWindow=function(a){a=$j(a);a.hasClass("btnOk")?this.activeInfoMarker.markerTxt=this.markerInfoWindowContent.find("textArea[name=markerText]").val():(a.hasClass("btnDel")||this.activeInfoMarker.isNew)&&this.removeInfoPoint(this.activeInfoMarker);this.activeInfoMarker.isNew=!1;this.infoWindow.close()};
googleMap.prototype.removeAllInfoPoints=function(){for(var a=this.aInfoMarkers.length,b=0;b<a;b++)this.aInfoMarkers[b].setMap(null),this.aInfoMarkers[b]=null;this.aInfoMarkers=[]};googleMap.prototype.removeInfoPoint=function(a){for(var b=this.aInfoMarkers.length,c=0;c<b;c++)if(this.aInfoMarkers[c]==a){this.aInfoMarkers.splice(c,1);break}a.setMap(null)};
googleMap.prototype.addInfoPoint=function(a,b,c,d){var e;e=1==c?"img/phones.png":2==c?"img/colM.png":"img/info.png";var f=this,g=new google.maps.Marker({map:f.map,draggable:!0,zIndex:2,position:a,icon:new google.maps.MarkerImage(encodeURI(e))});g.infoType=c;g.markerTxt=b;g.iconName=encodeURI(e);google.maps.event.addListener(g,"click",function(){f.activeInfoMarker=g;f.infoWindow.open(f.map,g);f.markerInfoWindowContent.show().find("textArea[name=markerText]").val(g.markerTxt);f.markerInfoWindowContent.find("img").attr("src",
e);google.maps.event.trigger(g,"content_change")});google.maps.event.addListener(g,"mouseover",function(a){this.pTitle=g.markerTxt.replace(/\n/g,"<br>");f.mapHintOn(this,a)});google.maps.event.addListener(g,"mouseout",function(){f.mapHintOff(this)});f.aInfoMarkers.push(g);if(!d)g.isNew=!0,google.maps.event.trigger(g,"click")};
googleMap.prototype.getMaxBounds=function(){for(var a=new google.maps.LatLngBounds,b=0;b<this.aPath.length;b++)for(var c=this.aPath[b].path.getPath(),d=0;d<c.length;d++)a.extend(c.getAt(d));for(b=0;b<this.aInfoMarkers.length;b++)a.extend(this.aInfoMarkers[b].position);-1==a.getNorthEast().lat()&&1==a.getSouthWest().lat()&&(a.extend(new google.maps.LatLng(75,180)),a.extend(new google.maps.LatLng(-75,-180)));return a};
googleMap.prototype.showMaxPath=function(){this.map.fitBounds(this.getMaxBounds());15<this.map.getZoom()&&this.map.setZoom(15)};
googleMap.prototype.addPathFromData=function(a){if(0!=a.length){var b=[],c;0==this.aPath.length?(c=this.createNewPath(new google.maps.LatLng(a[0][0],a[0][1]),lineTypes.lineImported),this.aPath.push(c)):(c=this.aPath[this.aPath.length-1],c.path.lineType=lineTypes.lineImported,b.push(new google.maps.LatLng(c.lat,c.lng)),b[b.length-1].height=noHeight);this.aPath.push(this.createNewPath(new google.maps.LatLng(a[a.length-1][0],a[a.length-1][1]),lineTypes.lineStraight));for(var d=0;d<a.length;d++)b.push(new google.maps.LatLng(a[d][0],
a[d][1])),b[b.length-1].height=a[d][2];c.path.setPath(b);c.path.setLineColor();this.setMarkerDistance(this.totalDistance()/25);this.setStartStopMarkers();this.showDistanceMarkers();this.drawElevationChart()}};
googleMap.prototype.addPath=function(a){var b=this.useRoads()?lineTypes.lineDirections:lineTypes.lineStraight,a=this.createNewPath(a.latLng,b);this.aPath.push(a);if(1<this.aPath.length){var c=this.aPath[this.aPath.length-2];c.path.lineType=b;c.path.setLineColor();b!=lineTypes.lineDirections&&c.path.setPath([c.marker.position,a.marker.position]);this.pathMarkerMoved(a.marker,{latLng:a.marker.position})}else this.setStartStopMarkers()};
googleMap.prototype.useRoads=function(){return $j("a[name=cbUseRoads]",this.controlDiv).hasClass("down")};
googleMap.prototype.createNewPath=function(a,b){var c=this,d=new google.maps.Marker({map:c.map,draggable:!0,zIndex:5,position:a});google.maps.event.addListener(d,"click",function(a){a=c.mapOverlay.getProjection().fromLatLngToContainerPixel(a.latLng);c.markerMenu.showMenu("#markerMenuHeader").css({"z-index":1E5,top:c.mapDiv.offset().top+a.y-10,left:c.mapDiv.offset().left+a.x-20});$j("#markerDelete").unbind("click").click(function(){c.pathMarkerDelete(d,"")});$j("#markerDeleteLeft").unbind("click").click(function(){c.pathMarkerDelete(d,
"left")});$j("#markerDeleteRight").unbind("click").click(function(){c.pathMarkerDelete(d,"right")})});google.maps.event.addListener(d,"dragend",function(a){c.pathMarkerMoved(d,a)});var e={lat:a.lat(),lng:a.lng(),path:new google.maps.Polyline({lineType:b,strokeColor:"#FF0000",strokeOpacity:0.7,strokeWeight:5}),marker:d};e.path.oldChangeEvent=e.path.changed;e.path.changed=function(a){if("lods"==a)this.updatedPath=!0;this.oldChangeEvent(a)};e.path.setLineColor();google.maps.event.addListener(e.path,
"mousemove",function(a){for(var b=this,d=0,e=(new google.maps.Circle({center:a.latLng,radius:10})).getBounds(),n=0;n<c.aPath.length;n++)if(b==c.aPath[n].path){for(var b=b.getPath(),n=b.getLength(),i=1;i<n;i++){var l=new google.maps.LatLngBounds;l.extend(b.getAt(i-1));l.extend(b.getAt(i));if(e.intersects(l)){d+=b.getAt(i-1).distanceFrom(a.latLng);c.heightDivSlider.css("margin-left",d/c.heightDist);return}d+=b.getAt(i-1).distanceFrom(b.getAt(i))}break}else d+=c.aPath[n].path.distance()});google.maps.event.addListener(e.path,
"mouseout",function(){c.heightDivSlider.css("margin-left",0)});google.maps.event.addListener(e.path,"click",function(a){if(c.isDesigning()){var b=c.mapOverlay.getProjection().fromLatLngToContainerPixel(a.latLng);c.pathMenu.showMenu("#pathMenuHeader").css({"z-index":1E5,top:c.mapDiv.offset().top+b.y-10,left:c.mapDiv.offset().left+b.x-20});$j("#routeUseRoads").removeClass("down");$j("#routeStraight").removeClass("down");e.path.lineType==lineTypes.lineDirections?$j("#routeUseRoads").addClass("down"):
e.path.lineType==lineTypes.lineStraight&&$j("#routeStraight").addClass("down");debughelp=this;$j("#routeSplit, #routeUseRoads, #routeStraight, #heightReload").unbind("click").click(function(b){b.stopPropagation();c.pathMenu.hideMenu("#pathMenuHeader");for(var d=0;d<c.aPath.length;d++)if(c.aPath[d]==e){nextPath=c.aPath[d+1];if("routeSplit"==this.id)if(e.path.lineType!=lineTypes.lineImported){var g=c.createNewPath(a.latLng,e.path.lineType);c.aPath.splice(d+1,0,g);c.pathMarkerMoved(g.marker,{latLng:g.marker.position});
c.showDistanceMarkers()}else{for(var b=-1,i=e.path.getPath(),l=i.getLength(),m=10<c.map.zoom?5:100,m=3;500>m;m+=20){for(var g=(new google.maps.Circle({center:a.latLng,radius:m})).getBounds(),j=1;j<l;j++){var o=new google.maps.LatLngBounds;o.extend(i.getAt(j-1));o.extend(i.getAt(j));if(g.intersects(o)){b=j-1;break}}if(-1!=b)break}if(-1!=b){m=i.getAt(b).distanceFrom(a.latLng);j=new google.maps.Polyline({path:[i.getAt(b),i.getAt(b+1)]});(m=j.getPointAtDistance(m))||(m=j.getPointAtDistance(j.distance()/
2));g=c.createNewPath(m,e.path.lineType);c.aPath.splice(d+1,0,g);ipPath=[];ipPath.push(m);for(j=b+1;j<l;j++)d=i.getAt(j),ipPath.push(d);g.path.setPath(ipPath);l=[];for(j=0;j<=b;j++)d=i.getAt(j),l.push(d);l.push(m);e.path.setPath(l);c.setStartStopMarkers();c.showDistanceMarkers();c.drawElevationChart()}}else if("routeUseRoads"==this.id)e.path.lineType=!$j("#routeUseRoads").hasClass("down")?lineTypes.lineDirections:lineTypes.lineStraight,e.path.setLineColor(),c.updatePath(e.marker.position,nextPath.marker.position,
e);else if("routeStraight"==this.id)e.path.lineType=!$j("#routeStraight").hasClass("down")?lineTypes.lineStraight:lineTypes.lineDirections,e.path.setLineColor(),c.updatePath(e.marker.position,nextPath.marker.position,e);else if("heightReload"==this.id){i=e.path.getPath();l=i.getLength();e.path.gpsHeight=!0;for(j=0;j<l;j++)d=i.getAt(j),d.height=!1;c.getElevation(e)}break}})}});e.path.setMap(c.map);c.isDesigning()||e.marker.setVisible(!1);return e};
google.maps.LatLng.prototype.copy=function(){var a=new google.maps.LatLng(this.lat(),this.lng());a.height=this.height;return a};google.maps.Polyline.prototype.setLineColor=function(){this.setOptions({strokeColor:colorTypes[this.lineType-1]})};
googleMap.prototype.pathMarkerMoved=function(a,b){for(var c=0;c<this.aPath.length;c++)if(this.aPath[c].marker==a){0==c?1==this.aPath.length?(this.aPath[0].path.setPath([]),this.showDistanceMarkers()):this.updatePath(b.latLng,this.aPath[1].marker.position,this.aPath[0]):c==this.aPath.length-1?(this.aPath[c].path.setPath([]),this.updatePath(this.aPath[c-1].marker.position,b.latLng,this.aPath[c-1],this.aPath[c],!0)):(this.updatePath(this.aPath[c-1].marker.position,b.latLng,this.aPath[c-1],this.aPath[c],
!0),this.updatePath(b.latLng,this.aPath[c+1].marker.position,this.aPath[c],this.aPath[c+1]));break}this.setStartStopMarkers();this.drawElevationChart()};
googleMap.prototype.pathMarkerDelete=function(a,b){var c,d=-1;this.markerMenu.hideMenu();for(var e=0;e<this.aPath.length;e++){if(this.aPath[e].marker==a){if(c=""==b,d=e,c&&0!=e&&this.aPath[e].path.lineType==lineTypes.lineImported&&this.aPath[e-1].path.lineType==lineTypes.lineImported){for(var f=this.aPath[e-1].path.getPath(),g=this.aPath[e].path.getPath(),h=[],k=0;k<f.length-1;k++)h.push(f.getAt(k));for(k=1;k<g.length;k++)h.push(g.getAt(k));this.aPath[e-1].path.setPath(h)}}else c="left"==b?-1==d:
"right"==b?-1!=d:!1;c&&(this.aPath[e].path.setMap(null),this.aPath[e].marker.setMap(null),this.aPath[e]=null)}for(e=this.aPath.length-1;0<=e;e--)null==this.aPath[e]&&this.aPath.splice(e,1);this.setStartStopMarkers();this.drawElevationChart();0<this.aPath.length&&(rebuildId=""==b?Math.max(0,d-1):"left"==b?0:Math.max(0,this.aPath.length-2),this.aPath[this.aPath.length-1].path.setPath([]),this.pathMarkerMoved(this.aPath[rebuildId].marker,{latLng:this.aPath[rebuildId].marker.position}))};
googleMap.prototype.updatePath=function(a,b,c,d,e){var f=this;if(f.onChange)f.onChange();c.path.lineType==lineTypes.lineImported?(e?(e=c.path.getPath(),e.removeAt(e.length-1),e.push(b)):(e=c.path.getPath(),e.removeAt(0),e.insertAt(0,a)),f.showDistanceMarkers()):c.path.lineType==lineTypes.lineStraight?(c.path.setPath([a,b]),f.getElevation(c),f.showDistanceMarkers()):f.directionService.route({origin:a,destination:b,travelMode:google.maps.DirectionsTravelMode.DRIVING,avoidHighways:!0},function(e,h){if(h==
google.maps.DirectionsStatus.OK){for(var k=[],n=0;n<e.routes[0].legs[0].steps.length;n++){xpath=e.routes[0].legs[0].steps[n].path;for(var i in xpath)xpath.hasOwnProperty(i)&&k.push(xpath[i])}c.path.setPath(k);if(d)k=c==d?k[0]:k[k.length-1],d.lat=k.lat(),d.lng=k.lng(),d.marker.setPosition(k)}else h==google.maps.DirectionsStatus.ZERO_RESULTS?c.path.setPath([a,b]):alert("Unknown situation, connection error?\n\n "+h);f.showDistanceMarkers();f.getElevation(c)})};
googleMap.prototype.getElevation=function(a){for(var b=this,c=!1,d=0;d<b.aPath.length;d++)if(b.aPath[d]==a){c=!0;break}if(c){for(var e=a.path.getPath(),f=e.getLength(),g=!1,h=[],d=c=0;d<f;d++){var k=e.getAt(d);if(a.path.lineType==lineTypes.lineStraight||!k.height)if(h.push(k),300==++c){g=!0;break}}a.path.lineType==lineTypes.lineStraight?(d=Math.max(2,Math.min(500,parseInt(a.path.distance()/100))),b.elevator.getElevationAlongPath({path:h,samples:d},function(c,d){if(d==google.maps.ElevationStatus.OK){if(c[0]){for(var g=
f-1;0<=g;g--)e.pop();for(g=0;g<c.length;g++){var h=c[g].location;h.height=c[g].elevation;e.push(h)}delete a.path.pathHeight}}else setTimeout(function(){b.getElevation(a)},1E4);b.drawElevationChart()})):b.elevator.getElevationForLocations({locations:h},function(c,d){if(d==google.maps.ElevationStatus.OK){if(c[0]){for(var e=0;e<h.length;e++)h[e].height=c[e].elevation;delete a.path.pathHeight;b.calcHeight()}g&&setTimeout(function(){b.getElevation(a)},2500)}else setTimeout(function(){b.getElevation(a)},
1E4);b.drawElevationChart()})}};googleMap.prototype.clearPath=function(){for(var a=0;a<this.aPath.length;a++)this.aPath[a].path.setMap(null),this.aPath[a].marker.setMap(null);this.aPath=[];this.showDistanceMarkers();this.drawElevationChart()};googleMap.prototype.setMarkerDistance=function(a){this.distCalcBuffer=null;var b=$j("select[name=selMarkerDist]",this.panel);$j("option",b).each(function(){if($j(this).val()>=a)return $j(this).attr("selected","selected"),!1});this.markerDistance=parseInt(b.val())};
googleMap.prototype.initControls=function(){var a=this;a.canvas.html("<div name='holder' style='position: relative; height:100%; width:100%'><div name='map' style='z-index: 1; top:0; left:0; ; position:absolute'></div><div name='earthCanvas' style='z-index: 0; top:0; left:0; position:absolute'></div><div name='panel' style='position:absolute;bottom:0;left:0;right:0; text-align: right; padding: 3px 0; background-color: #dddddd;'></div></div>");a.holder=$j("div[name=holder]",a.canvas);a.mapDiv=$j("div[name=map]",
a.canvas);a.panel=$j("div[name=panel]",a.canvas);a.earthCanvas=$j("div[name=earthCanvas]",a.canvas);a.canvas.resize(function(){a.doResize()});$j(a.panel).wrapInner("<span name='btnBusy' style='float: left; color: red; margin-left:10px; margin-top:5px; display: none'>Please wait...</span>");var b=$j("<div name='ani3dBtns' style='float: left; display: none; padding-left: 10px;'></div>");btn=$j("<span> Tilt: </span><select><option value=10 >Bird</option><option selected value=60 >Roof</option><option  value=80 >Human</option></select>").change(function(){a.flyTilt=
parseFloat($j(this).val())}).trigger("change");b.append(btn);btn=$j("<span>&nbsp;View: </span><select><option value=50 >Near</option><option value=500 >Normal</option><option selected value=5000 >Far</option></select>").change(function(){a.flyWidth=parseFloat($j(this).val())}).trigger("change");b.append(btn);btn=$j("<span>&nbsp;Speed: </span><select><option value=5 >Slow</option><option selected value=20 >Normal</option><option value=100 >Fast</option></select>").change(function(){a.flyIncDistance=
parseFloat($j(this).val())}).trigger("change");b.append(btn);btn=$j("<span>&nbsp;Cam: </span><select><option value=1 >Slow</option><option selected value=2.5 >Normal</option><option value=5 >Fast</option></select>").change(function(){a.flySpeed=parseFloat($j(this).val());a.ge&&a.ge.getOptions().setFlyToSpeed(a.flySpeed)}).trigger("change");b.append(btn);b.append("<span>&nbsp;&nbsp;&nbsp;</span>");a.slider=$j("<div name='slider' style='width:100px; display: inline-block; zoom: 1; *display: inline'>").slider({range:"min",
min:0,max:0,step:1,slide:function(b,d){if(!a.antimationDistance||1E3*d.value<a.antimationDistance)a.distCalcBuffer=null;a.antimationDistance=1E3*d.value;a.animate(!0)}});b.append(a.slider);b.append("<span>&nbsp;&nbsp;&nbsp;</span>");btn=$j("<a class='btnAni btn'><img src='img/play.png'></a>").click(function(){$j(this).toggleClass("down");$j(this).hasClass("down")?a.startAnimation():a.stopAnimation()});b.append(btn);$j(a.panel).append(b);a.options.hasTrack&&(btn=$j("<span>Markers:</span> <select name='selMarkerDist'><option value='-1' >---</option><option value='1000'>1 "+
distTxt+"</option><option value='5000'>5 "+distTxt+"</option><option value='10000'>10 "+distTxt+"</option><option value='25000'>25 "+distTxt+"</option><option value='100000'>100 "+distTxt+"</option><option value='100000000'>Finish</option></select>").click(function(){}),$j(a.panel).append(btn),$j("select[name=selMarkerDist]",a.panel).change(function(){a.markerDistance=parseInt($j(this).val());a.showDistanceMarkers()}).trigger("change"));btn=$j("<a href='javascript:void(0)' pTitle = 'Search' class='popTxt btn'><img src='img/search.png'></a>");
btn.click(function(){a.searchDialog()});$j(a.panel).append(btn);a.options.hasTrack&&(btn=$j("<a name='dwnldBtn' href='javascript:void(0)' pTitle = 'Download track' class='popTxt btn'><img src='img/download.png'></a>"),btn.click(function(){a.download()}),$j(a.panel).append(btn));a.options.earth&&(btn=$j("<a name='earthBtn' href='javascript:void(0)' pTitle = 'Earth in 3D' class='popTxt btn'>3D <img src='img/earth.png'></a>"),btn.click(function(){a.earth(!$j(this).hasClass("down"))}),$j(a.panel).append(btn));
btn=$j("<a style='margin-right:8px;' name='btnFS' href='javascript:void(0)' pTitle = 'Toggle fullscreen' class='popTxt btn'><img src='img/fullscreen.png'></a>");btn.click(function(){a.fullscreen()});$j(a.panel).append(btn);0==$j("#pathMenuHeader").length&&$j(document.body).append("<h3 id='pathMenuHeader' ><a href='#pathMenu'></a></h3><div style='z-index:10000' id='pathMenu' class='popMenu'><p><a id='routeSplit' href='javascript:void(0)' class='mBtn'>Split here</a><br><a id='routeUseRoads' class='mBtn' href='javascript:void(0)'>Use roads</a><br><a id='routeStraight' class='mBtn' href='javascript:void(0)'>Straight line</a><br><a id='heightReload' class='mBtn' href='javascript:void(0)'>Load satellite heights</a><br></p></div>");
a.pathMenu=$j.hvMenu("#pathMenuHeader");0==$j("#markerMenuHeader").length&&$j(document.body).append("<h3 id='markerMenuHeader' ><a href='#markerMenu'></a></h3><div style='z-index:10000' id='markerMenu' class='popMenu'><p><a id='markerDelete' href='javascript:void(0)' class='mBtn'>Delete</a><br><a id='markerDeleteLeft' href='javascript:void(0)' class='mBtn'>Delete from start</a><br><a id='markerDeleteRight' href='javascript:void(0)' class='mBtn'>Delete to end</a><br></p></div>");a.markerMenu=$j.hvMenu("#markerMenuHeader");
initTxtToolTip($j(".popTxt",a.panel));a.doResize()};googleMap.prototype.doResize=function(){if(!this.isDestroying&&this.holder){var a=this.holder.innerHeight()-this.panel.outerHeight(),b=this.panel.width();this.mapDiv.height(a).width(b);this.earthCanvas.height(a).width(b);this.map&&(google.maps.event.trigger(this.map,"resize"),this.map.setZoom(this.map.getZoom()))}};
googleMap.prototype.doDownload=function(){var a=$j("#dwnlTarget");0==a.length&&(a=$j("<iframe name='dwnlTarget' id='dwnlTarget' style='display: none'><iframe>"),$j(document.body).append(a),$j(document.body).append("<form method='post' style='display: none' id='dwnlTargetForm' action='dumpgps.php' target='dwnlTarget'></form>"));var a=$j("#dwnlTargetForm").empty(),b=$j("<textarea name='data'>");a.append(b);b.val(this.getAsHtml());b=$j("<input name='gpsDownload'>");a.append(b);b.val($j("#gpsDwnload").val());
b=$j("<input name='gpsName'>");a.append(b);b.val($j("#gpsName").val());b=$j("<input name='gpsSpeed'>");a.append(b);b.val($j("#gpsSpeed").val());a.submit()};
googleMap.prototype.download=function(){me=this;me.stopAnimation();0==$j("#gpsDwnlDiv").length&&($j(document.body).append("<div title= 'Download...' id='gpsDwnlDiv'><p><label>Format</label>: <select id='gpsDwnload'><option value='crs' >Crs + waypoints</option><option value='gpxR'>Gpx Route</option><option value='gpxT'>Gpx Track</option></select><br><br><br><label>Name</label>: <input id='gpsName' value = 'Bikeplanner'><br><br><label>Speed</label>: <input id='gpsSpeed' value = '30'> kmh<br><br><span>( Waypoint trigger: max 250 meters from closest trackpoint. )</span></p></div>"),$j("#gpsDwnlDiv").dialog({zIndex:1E5,
autoOpen:!1,width:400,bgiFrame:!0,modal:!0,open:function(){$j("#gpsDwnload").focus()},close:function(){me.earthVisible()&&me.positionEarth(!0)},buttons:{Ok:function(){$j(this).dialog("close");me.doDownload()}}}));me.earthVisible()&&me.positionEarth(!1);$j("#gpsDwnlDiv").dialog("open")};
googleMap.prototype.hide=function(){this.earth(!1);this.canvas.wrap("<div></div>");this.hideDiv={hiddenPlace:$j("<div></div>").css({position:"absolute",top:-1E4,left:-1E4,height:this.canvas.height(),width:this.canvas.width()}),originalPlace:this.canvas.parent()};$j(document.body).append(this.hideDiv.hiddenPlace);this.hideDiv.hiddenPlace.append(this.canvas)};
googleMap.prototype.show=function(){if(this.hideDiv)this.hideDiv.originalPlace.replaceWith(this.canvas),this.hideDiv.hiddenPlace.remove(),this.hideDiv=null};
googleMap.prototype.fullscreen=function(a){var b=$j("a[name=btnFS]",this.panel);a?(a=!0,b.addClass("down")):a=b.toggleClass("down").hasClass("down");(this.isFullscreen=a)?($j("#mbc").hide(),$j(".shade").addClass("resetShade"),this.oPos={bodyOverflow:$j(document.body).css("overflow"),zIndex:this.holder.css("z-index"),scrollTop:$j(document).scrollTop()},$j.browser.mozilla||$j(document.body).css("overflow","hidden"),this.holder.css({position:"fixed"}),this.holder.css({top:0,left:0,bottom:0,right:0,"z-index":1E5})):
(this.holder.css({position:"relative","z-index":this.oPos.zIndex}),$j(".resetShade").removeClass("resetShade"),$j("#mbc").show(),$j.browser.mozilla||$j(document.body).css("overflow",this.oPos.bodyOverflow),$j(document).scrollTop(this.oPos.scrollTop));this.positionEarth(this.earthVisible());if(this.onFullscreenSwitch)this.onFullscreenSwitch(a)};
googleMap.prototype.searchDialog=function(a){var b=this;b.searchCallBack=a;b.stopAnimation();0==$j("#gpsSearchDiv").length&&($j(document.body).append("<div title= 'Search...' id='gpsSearchDiv'><p><label for='gpsAddress'>Address</label>: <input type='text' autocomplete='on' style='width:300px' class='stdInput' id='gpsAddress' name='gpsAddress' value='' /> <a id='gpsBtn' class='btn' href='javascript:void(0)'>Search</a></p><p style='text-align: center' id='addressItems'></p></div>"),$j("#gpsAddress").keyup(function(){$j("#gpsBtn").click()}),
$j("#gpsSearchDiv").dialog({zIndex:1E5,autoOpen:!1,width:500,bgiFrame:!0,modal:!0,open:function(){$j("#gpsAddress").focus()},close:function(){b.earthVisible()&&b.positionEarth(!0)}}),$j("#gpsBtn").click(function(){$j("#addressItems").html('<img src="img/loading.gif">');if(!b.gc)b.gc=new google.maps.Geocoder;b.gc.geocode({address:$j("#gpsAddress").val()},function(a,d){$j("#addressItems").html("");if("OK"==d)for(var e=0;e<a.length;e++){var f=$j("<a class='btn'>"+a[e].formatted_address+"</a>");$j(f).click(function(d){return function(){b.searchCallBack?
b.searchCallBack(a[d].geometry.location):(b.earthVisibleAndLoaded()&&b.flyTo(a[d].geometry.location,5E3),b.map.setCenter(a[d].geometry.location,15),b.map.setZoom(15));$j("#gpsSearchDiv").dialog("close")}}(e));$j("#addressItems").append(f);$j("#addressItems").append("<br>")}})}));b.earthVisible()&&b.positionEarth(!1);$j("#gpsSearchDiv").dialog("open")};googleMap.prototype.isBusy=function(a){var b=$j("span[name=btnBusy]",this.panel);a?b.show():b.hide()};
google.maps.Polyline.prototype.getPointAtDistance=function(a){if(0==a)return this.getPath().getAt(0);if(0>a)return null;for(var b=0,c=0,d=1;d<this.getPath().getLength()&&b<a;d++)c=b,b+=this.getPath().getAt(d).distanceFrom(this.getPath().getAt(d-1));if(b<a)return null;var e=this.getPath().getAt(d-2),d=this.getPath().getAt(d-1),a=(a-c)/(b-c);return new google.maps.LatLng(e.lat()+(d.lat()-e.lat())*a,e.lng()+(d.lng()-e.lng())*a)};google.maps.Polyline.prototype._setPath=google.maps.Polyline.prototype.setPath;
google.maps.Polyline.prototype.setPath=function(a){this.updatedPath=!0;this._setPath(a);delete this.pathHeight};google.maps.Polyline.prototype.bounds=function(){var a=new google.maps.LatLngBounds;this.getPath().forEach(function(b){a.extend(b)});return a};
googleMap.prototype.getPointAtDistance=function(a){if(null==this.distCalcBuffer)this.distCalcBuffer={i:0,p:1,sumDist:0};for(var b=this.distCalcBuffer.i;b<this.aPath.length;b++){if(this.distCalcBuffer.i!=b)this.distCalcBuffer.i=b,this.distCalcBuffer.p=1;var c=this.aPath[b].path.distance();if(c+this.distCalcBuffer.sumDist<a)this.distCalcBuffer.sumDist+=c;else{var d=this.aPath[b].path.getPath(),e=d.getLength();if(0==a)return d.getAt(0);if(1<e)for(var f=this.distCalcBuffer.p;f<e;f++){sumPrevDist=this.distCalcBuffer.sumDist;
this.distCalcBuffer.p=f;c=d.getAt(f).distanceFrom(d.getAt(f-1));if(this.distCalcBuffer.sumDist+c>a)return b=d.getAt(f-1),d=d.getAt(f),a=(a-sumPrevDist)/(this.distCalcBuffer.sumDist+c-sumPrevDist),a=new google.maps.LatLng(b.lat()+(d.lat()-b.lat())*a,b.lng()+(d.lng()-b.lng())*a),a.height=b.height,a;this.distCalcBuffer.sumDist+=c}}}if(0<this.aPath.length)return this.aPath[this.aPath.length-1].marker.position};
googleMap.prototype.earthVisible=function(){return(this.ge||this.earthIsLoading)&&$j("a[name=earthBtn]",this.canvas).hasClass("down")};googleMap.prototype.earthVisibleAndLoaded=function(){return this.ge&&$j("a[name=earthBtn]",this.canvas).hasClass("down")};
googleMap.prototype.positionEarth=function(a){a?($j(this.earthCanvas).css({zIndex:2}),this.showEarth(),$j(">div",this.earthCanvas).css("overflow","auto").css("overflow","hidden").resize()):(this.hideEarth(),$j(this.earthCanvas).css({zIndex:-1}));this.doResize()};
googleMap.prototype.earth=function(a){var b=this;if(a)$j("a[name=earthBtn]",b.canvas).addClass("down"),b.ge?(b.initEarthPath(),b.positionEarth(!0)):b.earthIsLoading?b.positionEarth(!0):(b.earthIsLoading=!0,google.load("earth","1",{callback:function(){b.earthLoaded()}}));else if(b.stopAnimation(),$j("div[name=ani3dBtns]",b.canvas).hide(),$j("a[name=earthBtn]",b.canvas).removeClass("down"),b.positionEarth(!1),b.ge&&(a=b.ge.getView().getViewportGlobeBounds())){var c=new google.maps.LatLngBounds;c.extend(new google.maps.LatLng(a.getNorth(),
a.getWest()));c.extend(new google.maps.LatLng(a.getNorth(),a.getEast()));c.extend(new google.maps.LatLng(a.getSouth(),a.getWest()));c.extend(new google.maps.LatLng(a.getSouth(),a.getEast()));b.map.fitBounds(c)}b.doResize()};
googleMap.prototype.earthLoaded=function(){var a=this;a.positionEarth(!1);var b=$j('<div style="background: black no-repeat fixed center; opacity: 0.5; filter: alpha(opacity=50); position: absolute; z-index:1000; top:0px; left:0px; bottom:0px; right:0px; margin:0;padding:0; width:100%; height:100%;"><img style="margin-top:'+($j(a.canvas).height()/2-10)+'px" src="img/loading.gif"></div>');a.holder.append(b);google.earth.createInstance(a.earthCanvas[0],function(c){b.remove();a.positionEarth(!0);if(!a.isDestroying){a.ge=
c;a.ge.getOptions().setScaleLegendVisibility(!0);a.ge.getOptions().setStatusBarVisibility(!0);a.ge.getOptions().setUnitsFeetMiles(!1);a.ge.getNavigationControl().getScreenXY().setXUnits(a.ge.UNITS_PIXELS);a.ge.getNavigationControl().getScreenXY().setYUnits(a.ge.UNITS_INSET_PIXELS);a.ge.getNavigationControl().setVisibility(a.ge.VISIBILITY_SHOW);a.ge.getLayerRoot().enableLayerById(a.ge.LAYER_BORDERS,!0);a.ge.getLayerRoot().enableLayerById(a.ge.LAYER_ROADS,!0);a.ge.getLayerRoot().enableLayerById(a.ge.LAYER_BUILDINGS,
!0);google.earth.addEventListener(a.ge,"frameend",function(){a.animate()});a.animationMarker=a.ge.createPlacemark("");a.ge.getFeatures().appendChild(a.animationMarker);c=a.ge.createScreenOverlay("");a.earthHeightGraph=a.ge.createIcon("");c.setIcon(a.earthHeightGraph);c.setDrawOrder(10);var d=c.getScreenXY();d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);d.setX(0);d.setY(0);d=c.getOverlayXY();d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);d.setX(20);d.setY(20);d=c.getSize();
d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);d.setX(500);d.setY(100);a.ge.getFeatures().appendChild(c);c=a.ge.createScreenOverlay("");d=a.ge.createIcon("");d.setHref(document.location.href.substring(0,document.location.href.lastIndexOf("/"))+"/hvwTools/gps/img/position.png");c.setIcon(d);c.setDrawOrder(20);d=c.getScreenXY();d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);d.setX(0);d.setY(0);d=c.getOverlayXY();d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);
a.animationPositionOverlay=d;a.animationPositionOverlay.setX(20);a.animationPositionOverlay.setY(20);d=c.getSize();d.setXUnits(a.ge.UNITS_PIXELS);d.setYUnits(a.ge.UNITS_PIXELS);d.setX(2);d.setY(100);a.ge.getFeatures().appendChild(c);a.initEarthPath();a.earthIsLoading=!1}},function(){b.remove();a.positionEarth(!0)})};googleMap.prototype.flyTo=function(a,b){this.ge.getOptions().setFlyToSpeed(0.2);var c=this.ge.createLookAt("");c.set(a.lat(),a.lng(),b,this.ge.ALTITUDE_RELATIVE_TO_GROUND,0,0,0);this.ge.getView().setAbstractView(c)};
googleMap.prototype.hideEarth=function(){this.earthCanvas.css({top:-1E4,left:-1E4})};googleMap.prototype.showEarth=function(){this.earthCanvas.css({top:0,left:0})};
googleMap.prototype.initEarthPath=function(){this.ge.getWindow().setVisibility(!0);for(var a='<kml xmlns="http://www.opengis.net/kml/2.2"><Document><name>KmlFile</name>',b=this.aDistMarkers.length,c=0;c<b;c++)a+="<Style id='sd"+c+"'><IconStyle><Icon><href>"+this.aDistMarkers[c].img+"</href></Icon></IconStyle></Style><Placemark id='pmd"+c+"'><styleUrl>#sd"+c+"</styleUrl><Point><coordinates>"+this.aDistMarkers[c].position.lng().toString()+","+this.aDistMarkers[c].position.lat().toString()+",0</coordinates></Point></Placemark>";
for(c=0;c<this.aInfoMarkers.length;c++)a+="<Style id='si"+c+"'><IconStyle><Icon><href>"+this.aInfoMarkers[c].iconName+"</href></Icon></IconStyle></Style><Placemark id='pmi"+c+"'><styleUrl>#si"+c+"</styleUrl><description>"+this.aInfoMarkers[c].markerTxt+"</description><Point><coordinates>"+this.aInfoMarkers[c].position.lng().toString()+","+this.aInfoMarkers[c].position.lat().toString()+",0</coordinates></Point></Placemark>";a+='<Style id="thickLine"><LineStyle><color>ff0000ff</color><width>4</width></LineStyle></Style><Placemark><visibility>1</visibility><styleUrl>#thickLine</styleUrl><LineString><coordinates>\n';
for(c=0;c<this.aPath.length;c++)for(var b=this.aPath[c].path.getPath(),d=0;d<b.length;d++)a+=b.getAt(d).lng().toString()+","+b.getAt(d).lat().toString()+",10\n";a+="</coordinates></LineString></Placemark></Document></kml>";this.kmlObject&&this.ge.getFeatures().removeChild(this.kmlObject);this.kmlObject=this.ge.parseKml(a);this.ge.getFeatures().appendChild(this.kmlObject);a=this.map.getBounds();c=6E4*(a.getNorthEast().lng()-a.getSouthWest().lng())*Math.cos(Math.PI/180*((a.getNorthEast().lat()+a.getSouthWest().lat())/
2));b=1.3*c;c=6E4*(a.getNorthEast().lat()-a.getSouthWest().lat());c=Math.max(3*c,b);this.flyTo(a.getCenter(),c);this.earthTotalDistance=this.totalDistance();0<this.earthTotalDistance&&($j("div[name=ani3dBtns]",this.canvas).show(),this.slider.slider("option","max",parseInt(this.earthTotalDistance/1E3)));this.canvas.trigger("resize");this.earthHeightGraphChange()};
googleMap.prototype.earthHeightGraphChange=function(){me=this;if(me.earthVisibleAndLoaded()){var a=me.heightDiv.find("img").attr("src");a&&("http://"!=a.substring(0,7)&&(a=document.location.href.substring(0,document.location.href.lastIndexOf("/"))+"/"+a),me.earthHeightGraph.setHref(a))}};
googleMap.prototype.startAnimation=function(){this.ge.getOptions().setFlyToSpeed(this.flySpeed);this.isAnimating=!0;this.distCalcBuffer=null;if(!this.antimationDistance)this.sliderDistance=this.antimationDistance=0;this.animate()};
googleMap.prototype.animate=function(a){var b=this;if(b.isAnimating||a){if(!a&&(b.antimationDistance+=b.flyIncDistance,b.antimationDistance>b.earthTotalDistance)){b.stopAnimation();b.antimationDistance=null;b.slider.slider("option","value",0);return}b.sliderDistance=parseInt(b.antimationDistance/1E3);b.slider.slider("option","value",b.sliderDistance);b.animationPositionOverlay.setX(20+500/b.earthTotalDistance*b.antimationDistance);if(!b.prevAnimationPoint)b.prevAnimationPoint=b.getPointAtDistance(0);
var c=b.getPointAtDistance(b.antimationDistance),a=b.ge.createLookAt("");a.set(c.lat(),c.lng(),0,b.ge.ALTITUDE_RELATIVE_TO_GROUND,calcHeading(b.prevAnimationPoint,c),b.flyTilt,b.flyWidth);b.ge.getView().setAbstractView(a);b.prevAnimationPoint=c;if(!b.aniTimeout)b.aniTimeout=setTimeout(function(){var a=b.ge.createPoint("");a.setLatitude(c.lat());a.setLongitude(c.lng());b.animationMarker.setGeometry(a);b.aniTimeout=null},200)}};
googleMap.prototype.stopAnimation=function(){if(this.isAnimating&&(this.isAnimating=!1,this.ge&&!this.isDestroying)){$j("a.btnAni",this.canvas).removeClass("down");if(parseInt(this.antimationDistance/1E3)==parseInt(this.totalDistance/1E3))this.antimationDistance=0;this.updatePointer=null;this.animate(!0)}};google.maps.Polyline.prototype.initBuffering=function(){this.buffer={startI:1,sumDist:0}};
google.maps.Polyline.prototype.distance=function(){if("undefined"!=typeof this.bufferDist&&!this.updatedPath)return this.bufferDist;var a=0,b,c=this.getPath(),d=c.getLength();for(b=1;b<d;b++)a+=c.getAt(b).distanceFrom(c.getAt(b-1));this.bufferDist=a;this.updatedPath=!1;return a};
google.maps.Polyline.prototype.elevation=function(){var a=0,b,c,d=!1,e,f=this.getPath(),g=f.getLength(),h=this.lineType==lineTypes.lineImported&&"undefined"==typeof this.gpsHeight?4:25;for(e=1;e<g;e++)"undefined"!=typeof f.getAt(e-1).height&&!1!==f.getAt(e-1).height&&(!1===d&&(d=f.getAt(e-1)),c=f.getAt(e),b=c.height-d.height,b>h?(a+=b,d=c):0>b&&(d=c));return a};rad=function(a){return a*Math.PI/180};
google.maps.LatLng.prototype.distanceFrom=function(a){var b=rad(a.lat()-this.lat()),c=rad(a.lng()-this.lng()),a=Math.sin(b/2)*Math.sin(b/2)+Math.cos(rad(this.lat()))*Math.cos(rad(a.lat()))*Math.sin(c/2)*Math.sin(c/2);return 6371009*2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};MapOverlay.prototype=new google.maps.OverlayView;MapOverlay.prototype.onAdd=function(){};MapOverlay.prototype.onRemove=function(){};MapOverlay.prototype.draw=function(){};function MapOverlay(a){this.setMap(a)}
function calcHeading(a,b){var c=deg2rad(a.lat()),d=deg2rad(a.lng()),e=deg2rad(b.lat()),f=deg2rad(b.lng());return fixAngle(rad2deg(Math.atan2(Math.sin(f-d)*Math.cos(e),Math.cos(c)*Math.sin(e)-Math.sin(c)*Math.cos(e)*Math.cos(f-d))))}function deg2rad(a){return a*Math.PI/180}function rad2deg(a){return 180*a/Math.PI}function fixAngle(a){for(;-180>a;)a+=360;for(;180<a;)a-=360;return a}googleMap.prototype.mapHintOn=function(a){this.mapDiv.attr("pTitle",a.pTitle);initTxtToolTip(this.mapDiv);this.mapDiv.trigger("mouseover")};
googleMap.prototype.mapHintOff=function(){this.mapDiv.trigger("mouseleave");this.mapDiv[0].unset("mouseover")};var lineTypes={lineStraight:1,lineDirections:2,lineImported:3},colorTypes=["#FF5000","#FF0000","#970000"],noHeight=-99999,heightGraphPunten=500;
