var a;function makeLinkText(b){var c="";if(b.name)c=b.name;if(b.desc)c=b.name?b.name+" - "+b.desc:b.desc;return c}function decodeLine(b){for(var c=b.length,e=0,d=[],j=0,k=0,f,h,g;e<c;){g=h=0;do{f=b.charCodeAt(e++)-63;g|=(f&31)<<h;h+=5}while(f>=32);f=g&1?~(g>>1):g>>1;j+=f;g=h=0;do{f=b.charCodeAt(e++)-63;g|=(f&31)<<h;h+=5}while(f>=32);f=g&1?~(g>>1):g>>1;k+=f;d.push(new google.maps.LatLng(j*1.0E-5,k*1.0E-5))}return d}
function decodeValues(b,c){for(var e=b.length,d=0,j=[],k=0,f,h,g;d<e;){g=h=0;do{f=b.charCodeAt(d++)-63;g|=(f&31)<<h;h+=5}while(f>=32);f=g&1?~(g>>1):g>>1;k+=f;j.push(k+c)}return j}function decodeLevels(b){for(var c=[],e,d=0;d<b.length;++d){e=b.charCodeAt(d)-63;c.push(e)}return c}
function Track(b,c){this.map=b;this.td=c;this.tdem=null;this.trackpoints=[];this.tracktimes=[];this.firstPhotoHref=null;var e;for(b=0;b<c.encodedPoints.length;++b){this.trackpoints=this.trackpoints.concat(decodeLine(c.encodedPoints[b]));this.tracktimes=this.tracktimes.concat(decodeValues(c.encodedTimes[b],1E9))}this.waypoints=[];if(this.td.waypoints)for(b=0;b<this.td.waypoints.length;++b){c=this.td.waypoints[b];if(c.type==="photo"){e=this.td.client+"/"+c.href;this.waypoints.push(createCameraMarker(new google.maps.LatLng(c.lat,
c.lon),e));if(!this.firstPhotoHref)this.firstPhotoHref=e}else this.waypoints.push(createMarker(new google.maps.LatLng(c.lat,c.lon),makeLinkText(c)))}}a=Track.prototype;a.getTrackdata=function(){return this.td};a.getTrackstart=function(){return this.td.trackstart};a.getTrackpoints=function(){return this.trackpoints};a.getTracktimes=function(){return this.tracktimes};a.getWaypoints=function(){return this.waypoints};a.getFirstPhotoHref=function(){return this.firstPhotoHref};a.canUploadImage=function(){return this.td.canUploadImage};
a.addDEMData=function(b){this.tdem=b};a.useDEMData=function(){this.td=this.tdem;this.displayProfile();this.displayTrackinfo()};
a.displayTrack=function(){overlayManager.clearAll();if(this.td.pointsorg>0){for(i=0;i<this.td.encodedPoints.length;++i){var b=decodeLine(this.td.encodedPoints[i]);b=new google.maps.Polyline({path:b,strokeColor:this.td.trackColors[i],strokeOpacity:0.8,strokeWeight:3});b.setMap(this.map);overlayManager.add(b)}centerAndZoomMap(this.map,this.trackpoints)}for(i=0;i<this.waypoints.length;++i){this.waypoints[i].setMap(map);overlayManager.add(this.waypoints[i])}this.waypoints.length>0&&this.trackpoints.length===
0&&centerAndZoomMap(this.map,this.waypoints)};
a.displayTrackinfo=function(){var b,c,e,d;document.getElementById("trackname").innerHTML=this.td.trackname+"<br />";if(this.td.pointsorg>0){c=this.calcDistance();d=this.calcDuration();document.getElementById("points").innerHTML="("+this.td.pointsorg+"/"+this.trackpoints.length+" Trackpoints)<br />";document.getElementById("trackdesc").innerHTML=this.td.trackdesc+"<br />";document.getElementById("distance").innerHTML=TEXT.distance+": "+c.toFixed(1)+" km<br />";document.getElementById("ascdesc").innerHTML=
TEXT.ascdesc+": "+this.td.ascent+"/"+this.td.descent+" m<br />";if(d>0){b=c/d;e=TEXT.duration+": "+d.toFixed(1)+" h";b=TEXT.average+": "+b.toFixed(1)+" km/h";if(this.td.sumpause>0){e+=" (inkl. "+(this.td.sumpause/60).toFixed(0)+" min Pause)";c=c/(d-this.td.sumpause/3600);b+=" (exkl. Pause: "+c.toFixed(1)+" km/h)"}e+="<br />";b+="<br />";document.getElementById("duration").innerHTML=e;document.getElementById("speed").innerHTML=b}else{document.getElementById("duration").innerHTML="";document.getElementById("speed").innerHTML=
""}}else{document.getElementById("points").innerHTML="";document.getElementById("trackdesc").innerHTML="";document.getElementById("distance").innerHTML="";document.getElementById("duration").innerHTML="";document.getElementById("speed").innerHTML="";document.getElementById("ascdesc").innerHTML=""}};a.displayProfile=function(){var b=JSON.stringify(this.td);document.forms.profileform.trackdata.innerHTML=b;document.forms.profileform.submit()};
a.calcDistance=function(){for(var b=0,c=this.trackpoints[0],e,d,j,k,f=1,h=1;h<this.trackpoints.length;h++){e=this.trackpoints[h];if(this.td.trackstart[f]===h)f++;else{d=c.lat()*Math.PI/180;c=c.lng()*Math.PI/180;j=e.lat()*Math.PI/180;k=e.lng()*Math.PI/180;d=Math.sin(d)*Math.sin(j)+Math.cos(d)*Math.cos(j)*Math.cos(k-c);b+=6378.7*Math.acos(d<-1?-1:d>1?1:d)}c=e}return b};a.calcDuration=function(){var b=this.tracktimes[0],c=this.tracktimes[this.tracktimes.length-1];return c-b>0?(c-b)/3600:0};

