var map,track,photo,client,key,tracklist,photoimage=createPhotoImage(""),cameraimage=createPhotoImage("-gray"),progressbar=new ProgressBar,overlayManager=new OverlayManager;function createPhotoImage(a){a=new google.maps.MarkerImage("img/camera"+a+".png",new google.maps.Size(34,34),new google.maps.Point(0,0));var c=new google.maps.MarkerImage("img/camera_shadow.png",new google.maps.Size(60,34),new google.maps.Point(2,2));return[a,c]}
function onLoad(){var a,c,b,d,f;a={mapTypeIds:[google.maps.MapTypeId.HYBRID,google.maps.MapTypeId.SATELLITE,google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.TERRAIN,"OSM"]};a={zoom:6,center:new google.maps.LatLng(51,10),overviewMapControl:true,mapTypeId:google.maps.MapTypeId.HYBRID,mapTypeControlOptions:a};if(map=new google.maps.Map(document.getElementById("map"),a)){autoResizeMap(map,350,210);osmMap(map);client=queryParam("client","");a=queryParam("region","");c=queryParam("fileid","");b=queryParam("tmp",
"");d=queryParam("detect_pause","");f=queryParam("optimize_track","");tracklist=new Tracklist(document.getElementById("tracklistbody"),a);c!==""?parseTrackFile(c,b,"",d,f):loadTrackListAndOverviewMap()}}
function divUpload(){document.getElementById("divupload").style.display="inline";document.getElementById("divphotoupload").style.display="none";document.getElementById("divbusy").style.display="none";progressbar.stop();document.getElementById("divmenu").style.display="none";document.getElementById("divlocatephoto").style.display="none"}
function divPhotoUpload(){document.getElementById("divupload").style.display="none";document.getElementById("divphotoupload").style.display="inline";document.getElementById("divbusy").style.display="none";progressbar.stop();document.getElementById("divmenu").style.display="none";document.getElementById("divlocatephoto").style.display="none"}
function divBusy(){document.getElementById("divupload").style.display="none";document.getElementById("divphotoupload").style.display="none";document.getElementById("divmenu").style.display="none";document.getElementById("divbusy").style.display="inline";document.getElementById("divlocatephoto").style.display="none";progressbar.isRunning()||progressbar.start(document.getElementById("progressbar"))}
function divMenu(a){document.getElementById("divbusy").style.display="none";progressbar.stop();document.getElementById("divphotoupload").style.display="none";document.getElementById("divupload").style.display="none";if(a){document.getElementById("message").innerHTML=a;document.getElementById("message").style.display="inline"}else document.getElementById("message").style.display="none";if(track&&track.canUploadImage())document.getElementById("divphotouploadpossible").style.display="inline";else document.getElementById("divphotouploadpossible").style.display=
"none";if(track)document.getElementById("gpxdownload").style.display="inline";else document.getElementById("gpxdownload").style.display="none";if(track&&track.tdem)document.getElementById("demdata").style.display="inline";else document.getElementById("demdata").style.display="none";document.getElementById("divmenu").style.display="inline";document.getElementById("divlocatephoto").style.display="none"}
function divTrack(a){document.getElementById("tracklist").style.display="none";document.getElementById("trackinfo").style.display="inline";if(a===true)document.getElementById("divprofile").style.display="inline";else document.getElementById("divprofile").style.display="none";document.getElementById("divlocatephoto").style.display="none";if(track.getFirstPhotoHref())document.getElementById("divthumbnail").innerHTML='<img src="thumbnail.php?href='+track.getFirstPhotoHref()+'" id="thumbnail" name="thumbnail" alt="Thumbnail"/>';
else document.getElementById("divthumbnail").innerHTML=""}function divLocatePhoto(){document.getElementById("divupload").style.display="none";document.getElementById("divphotoupload").style.display="none";document.getElementById("divmenu").style.display="none";document.getElementById("divbusy").style.display="none";progressbar.stop();document.getElementById("divlocatephoto").style.display="inline"}
function divTracklist(){document.getElementById("tracklist").style.display="inline";document.getElementById("trackinfo").style.display="none";document.getElementById("divprofile").style.display="none";document.getElementById("divthumbnail").innerHTML=""}
function parseTrackFile(a,c,b,d,f){divBusy();downloadUrl("parser.php?fileid="+encodeURIComponent(a)+"&client="+encodeURIComponent(client)+"&tmp="+c+"&filename="+encodeURIComponent(b)+"&detect_pause="+d+"&optimize_track="+f+"&key="+encodeURIComponent(key),returnParseTrack)}
function returnParseTrack(a,c){var b;if(c===200)try{b=JSON.parse(a);if(b.ok){track=new Track(map,b);track.displayTrack();track.displayTrackinfo();track.displayProfile();window.location.hash="client="+encodeURIComponent(b.client)+"&region="+encodeURIComponent(tracklist.region)+"&fileid="+encodeURIComponent(b.fileid)+"&tmp="+b.tmp+"&detect_pause="+b.detect_pause+"&optimize_track="+b.optimize_track;divTrack(true);callDEMService(b.fileid)}divMenu(b.message)}catch(d){divMenu("Invalid data from server")}else divMenu("Server error "+
c)}function newTrackList(){track=null;loadTrackList();divMenu()}function loadTrackList(){downloadUrl("tracklist.php?client="+encodeURIComponent(client)+"&key="+encodeURIComponent(key),returnLoadTrackList)}function returnLoadTrackList(a,c){var b;if(c===200)try{divTracklist();b=JSON.parse(a);tracklist.display(b);setHash()}catch(d){}}function newTrackListAndOverviewMap(){track=null;loadTrackListAndOverviewMap();divMenu()}
function loadTrackListAndOverviewMap(){downloadUrl("tracklist.php?client="+encodeURIComponent(client)+"&key="+encodeURIComponent(key),returnLoadTrackListAndOverviewMap)}function returnLoadTrackListAndOverviewMap(a,c){var b;if(c===200)try{b=JSON.parse(a);divTracklist();tracklist.display(b);displayOverviewMap(b);setHash()}catch(d){}}function selectRegion(a){tracklist.select(decodeURIComponent(a));setHash()}
function setHash(){window.location.hash="client="+encodeURIComponent(client)+"&region="+encodeURIComponent(tracklist.region)}function processPhoto(a,c){divBusy();downloadUrl("processphoto.php?fileid="+encodeURIComponent(a)+"&client="+encodeURIComponent(client)+"&filename="+encodeURIComponent(c)+"&key="+encodeURIComponent(key),returnProcessPhoto)}
function returnProcessPhoto(a,c){var b;if(c===200){try{b=JSON.parse(a)}catch(d){divMenu("Invalid data from server");return}if(b.hasGPS){displayThumbnail(b.fileid);divMenu(TEXT.has_gps+": "+TEXT.lat+": "+b.lat.toFixed(5)+" "+TEXT.lon+": "+b.lon.toFixed(5));photo=new Photo(map,b,track.getTrackpoints(),track.getTracktimes());photo.showPhotoMarker()}else if(b.hasDate){displayThumbnail(b.fileid);a=new Date(b.date*1E3);document.getElementById("exposuretime").innerHTML=a.toLocaleString();divLocatePhoto();
photo=new Photo(map,b,track.getTrackpoints(),track.getTracktimes());photo.locate()}else divMenu(b.message)}else divMenu("Server error "+c)}function displayThumbnail(a){document.getElementById("divthumbnail").innerHTML='<img src="thumbnail.php?id='+encodeURIComponent(a)+'" id="thumbnail" name="thumbnail" alt="Thumbnail"/>'}
function submitDownloadTrack(a){var c=JSON.stringify(track.getTrackdata());document.forms.trackdownloadform.trackdata.innerHTML=c;document.forms.trackdownloadform.format.value=a;document.forms.trackdownloadform.submit()}
function callDEMService(a){var c=JSON.stringify(track.getTrackdata()),b=createXHR();b.onreadystatechange=function(){var d,f;if(b.readyState===4)if(b.status===200){d=b.responseText;try{f=JSON.parse(d);if(f.ok&&f.demAvailable){track.addDEMData(f);document.getElementById("demdata").style.display="inline"}}catch(h){}}};b.open("POST","demservice.php?fileid="+encodeURIComponent(a));b.setRequestHeader("Content-Type","application/x-www-form-urlencoded");b.send("trackdata="+encodeURIComponent(c))}
function useDEMData(){track.useDEMData()}function displayOverviewMap(a){overlayManager.clearAll();for(var c=0;c<a.length;++c){var b=a[c];if(!(b.lat===0&&b.lon===0)){b=createMarker(new google.maps.LatLng(b.lat,b.lon),b.linktext);overlayManager.add(b)}}centerAndZoomMap(map,a)}
function centerAndZoomMap(a,c){for(var b=90,d=-90,f=180,h=-180,e,g,i=0;i<c.length;++i){e=c[i];if(e.getPosition)e=e.getPosition();if(typeof e.lat==="function"){g=e.lat();e=e.lng()}else{g=parseFloat(e.lat);e=parseFloat(e.lon)}if(g>d)d=g;if(g<b)b=g;if(e>h)h=e;if(e<f)f=e}if(d>b&&h>f){c=new google.maps.LatLngBounds(new google.maps.LatLng(b,f),new google.maps.LatLng(d,h));a.fitBounds(c)}}
function createMarker(a,c){var b=new google.maps.Marker({position:a,map:map});if(c.length>0){var d=new google.maps.InfoWindow({content:'<span class="markerinfo">'+c+"</span>",maxWidth:300});google.maps.event.addListener(b,"click",function(){d.open(map,b)})}return b}
function createCameraMarker(a,c){a=new google.maps.Marker({position:a,icon:cameraimage[0],shadow:cameraimage[1]});c.length>0&&google.maps.event.addListener(a,"click",function(){document.getElementById("divthumbnail").innerHTML='<img src="thumbnail.php?href='+c+'" id="thumbnail" name="thumbnail" alt="Thumbnail"/>'});return a}function newPhoto(){photo&&photo.removeMarker();displayThumbnail("");divPhotoUpload()}function ProgressBar(){}
ProgressBar.prototype.start=function(a){this.pb=a;this.x=21;this.running=true;a.style.width="1%";window.setTimeout("animateProgressBar()",1E3)};ProgressBar.prototype.stop=function(){this.running=false};ProgressBar.prototype.isRunning=function(){return this.running};function animateProgressBar(){var a;if(progressbar.running){a=100-Math.round(2E3/progressbar.x);progressbar.pb.style.width=a+"%";progressbar.x++;window.setTimeout("animateProgressBar()",1E3)}}
function OverlayManager(){this.overlayArray=[]}OverlayManager.prototype.add=function(a){this.overlayArray.push(a)};OverlayManager.prototype.clearAll=function(){for(var a=0;a<this.overlayArray.length;++a)this.overlayArray[a].setMap(null);this.overlayArray.length=0};

