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,d=0,e=[],g=0,j=0,f,i,h;d<c;){h=i=0;do{f=b.charCodeAt(d++)-63;h|=(f&31)<<i;i+=5}while(f>=32);f=h&1?~(h>>1):h>>1;g+=f;h=i=0;do{f=b.charCodeAt(d++)-63;h|=(f&31)<<i;i+=5}while(f>=32);f=h&1?~(h>>1):h>>1;j+=f;e.push(new GLatLng(g*1.0E-5,j*1.0E-5))}return e}
function decodeValues(b,c){for(var d=b.length,e=0,g=[],j=0,f,i,h;e<d;){h=i=0;do{f=b.charCodeAt(e++)-63;h|=(f&31)<<i;i+=5}while(f>=32);f=h&1?~(h>>1):h>>1;j+=f;g.push(j+c)}return g}function decodeLevels(b){for(var c=[],d,e=0;e<b.length;++e){d=b.charCodeAt(e)-63;c.push(d)}return c}
function Track(b,c){this.map=b;this.td=c;this.tdem=null;this.trackpoints=[];this.tracktimes=[];this.firstPhotoHref=null;var d;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"){d=this.td.client+"/"+c.href;this.waypoints.push(createCameraMarker(new GLatLng(c.lat,
c.lon),d));if(!this.firstPhotoHref)this.firstPhotoHref=d}else this.waypoints.push(createMarker(new GLatLng(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(){this.map.clearOverlays();var b,c;if(this.td.pointsorg>0){for(b=0;b<this.td.encodedPoints.length;++b){c=new GPolyline.fromEncoded({color:this.td.trackColors[b],weight:3,points:this.td.encodedPoints[b],levels:this.td.encodedLevels[b],zoomFactor:32,numLevels:this.td.numLevels});this.map.addOverlay(c)}centerAndZoomMap(this.map,this.trackpoints)}for(b=0;b<this.waypoints.length;++b)this.map.addOverlay(this.waypoints[b]);this.waypoints.length>0&&this.trackpoints.length===0&&centerAndZoomMap(this.map,
this.waypoints)};
a.displayTrackinfo=function(){var b,c,d,e;document.getElementById("trackname").innerHTML=this.td.trackname+"<br />";if(this.td.pointsorg>0){c=this.calcDistance();e=this.calcDuration();d=this.calcAscentDescent();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+": "+d.ascent+"/"+d.descent+" m<br />";if(e>0){b=c/e;d=TEXT.duration+": "+e.toFixed(1)+" h";b=TEXT.average+": "+b.toFixed(1)+" km/h";if(this.td.sumpause>0){d+=" (inkl. "+(this.td.sumpause/60).toFixed(0)+" min Pause)";c=c/(e-this.td.sumpause/3600);b+=" (exkl. Pause: "+c.toFixed(1)+" km/h)"}d+="<br />";b+="<br />";document.getElementById("duration").innerHTML=d;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],d,e,g,j,f=1,i=1;i<this.trackpoints.length;i++){d=this.trackpoints[i];if(this.td.trackstart[f]===i)f++;else{e=c.lat()*Math.PI/180;c=c.lng()*Math.PI/180;g=d.lat()*Math.PI/180;j=d.lng()*Math.PI/180;e=Math.sin(e)*Math.sin(g)+Math.cos(e)*Math.cos(g)*Math.cos(j-c);b+=6378.7*Math.acos(e<-1?-1:e>1?1:e)}c=d}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};
a.calcAscentDescent=function(){var b=0,c=0,d,e,g,j=1,f=[];for(g=0;g<this.td.encodedPoints.length;++g)f=f.concat(decodeValues(this.td.encodedElevations[g],0));d=f[0];for(g=1;g<f.length;g++){e=f[g];if(this.td.trackstart[j]===g)j++;else{d=e-d;if(d>0)b+=d;else c+=-d}d=e}return{ascent:b,descent:c}};
