/* (C) 2008-2010 The Hug http://www.the-hug.co.uk */
var osMap;var vectorLayer;var markerLayer;var mapDiv;var routeDiv;var maplogDiv;var searchResultsDiv;var gridProjection=new OpenSpace.GridProjection();var widget_container;var elWaypointList,elWaypointCtrl,elTracksCtrl;var waypoint=new Array();var nWaypoints=0;var pointVal;var routeFeature;var tracks=new Array();var nTracks=0;var followerMarker=new Array();var nFollowers=0;if(tomcatServer=="openspace"){var poweredByOpenSpace=true}else{var poweredByOpenSpace=false}var osGrid={SVe:"0",SVn:"0",SWe:"1",SWn:"0",SXe:"2",SXn:"0",SYe:"3",SYn:"0",SZe:"4",SZn:"0",TVe:"5",TVn:"0",TWe:"6",TWn:"0",SQe:"0",SQn:"1",SRe:"1",SRn:"1",SSe:"2",SSn:"1",STe:"3",STn:"1",SUe:"4",SUn:"1",TQe:"5",TQn:"1",TRe:"6",TRn:"1",SLe:"0",SLn:"2",SMe:"1",SMn:"2",SNe:"2",SNn:"2",SOe:"3",SOn:"2",SPe:"4",SPn:"2",TLe:"5",TLn:"2",TMe:"6",TMn:"2",SFe:"0",SFn:"3",SGe:"1",SGn:"3",SHe:"2",SHn:"3",SJe:"3",SJn:"3",SKe:"4",SKn:"3",TFe:"5",TFn:"3",TGe:"6",TGn:"3",SAe:"0",SAn:"4",SBe:"1",SBn:"4",SCe:"2",SCn:"4",SDe:"3",SDn:"4",SEe:"4",SEn:"4",TAe:"5",TAn:"4",TBe:"6",TBn:"4",NVe:"0",NVn:"5",NWe:"1",NWn:"5",NXe:"2",NXn:"5",NYe:"3",NYn:"5",NZe:"4",NZn:"5",OVe:"5",OVn:"5",OWe:"6",OWn:"5",NQe:"0",NQn:"6",NRe:"1",NRn:"6",NSe:"2",NSn:"6",NTe:"3",NTn:"6",NUe:"4",NUn:"6",OQe:"5",OQn:"6",ORe:"6",ORn:"6",NLe:"0",NLn:"7",NMe:"1",NMn:"7",NNe:"2",NNn:"7",NOe:"3",NOn:"7",NPe:"4",NPn:"7",OLe:"5",OLn:"7",OMe:"6",OMn:"7",NFe:"0",NFn:"8",NGe:"1",NGn:"8",NHe:"2",NHn:"8",NJe:"3",NJn:"8",NKe:"4",NKn:"8",OFe:"5",OFn:"8",OGe:"6",OGn:"8",NAe:"0",NAn:"9",NBe:"1",NBn:"9",NCe:"2",NCn:"9",NDe:"3",NDn:"9",NEe:"4",NEn:"9",OAe:"5",OAn:"9",OBe:"6",OBn:"9",HVe:"0",HVn:"10",HWe:"1",HWn:"10",HXe:"2",HXn:"10",HYe:"3",HYn:"10",HZe:"4",HZn:"10",JVe:"5",JVn:"10",JWe:"6",JWn:"10",HQe:"0",HQn:"11",HRe:"1",HRn:"11",HSe:"2",HSn:"11",HTe:"3",HTn:"11",HUe:"4",HUn:"11",JQe:"5",JQn:"11",JRe:"6",JRn:"11",HLe:"0",HLn:"12",HMe:"1",HMn:"12",HNe:"2",HNn:"12",HOe:"3",HOn:"12",HPe:"4",HPn:"12",JLe:"5",JLn:"12",JMe:"6",JMn:"12"};var osGridLetter=[["SV","SQ","SL","SF","SA","NV","NQ","NL","NF","NA","HV","HQ","HL"],["SW","SR","SM","SG","SB","NW","NR","NM","NG","NB","HW","HR","HM"],["SX","SS","SN","SH","SC","NX","NS","NN","NH","NC","HX","HS","HN"],["SY","ST","SO","SJ","SD","NY","NT","NO","NJ","ND","HY","HT","HO"],["SZ","SU","SP","SK","SE","NZ","NU","NP","NK","NE","HZ","HU","HP"],["TV","TQ","TL","TF","TA","OV","OQ","OL","OF","OA","JV","JQ","JL"],["TW","TR","TM","TG","TB","OW","OR","OM","OG","OB","JW","JR","JM"]];var osGazetteerFeatureCode={A:"(antiquity)",F:"(wood)",FM:"(farm)",H:"(hill)",R:"(roman antiquity)",C:"(city)",T:"(town)",O:"(settlement)",W:"(water feature)",X:""};var icons=new Object;icons.GoRed=new OpenSpace.Icon();icons.GoRed.url="red-waypoint.png";icons.GoRed.size=new OpenLayers.Size(32,32);icons.GoRed.offset=new OpenLayers.Pixel(-15,-31);icons.GoRed.infoWindowAnchor=new OpenLayers.Pixel(14,14);icons.GoYellow=icons.GoRed.clone();icons.GoYellow.url="yellow-waypoint.png";icons.GoPurple=icons.GoRed.clone();icons.GoPurple.url="purple-waypoint.png";icons.blueC=new OpenSpace.Icon();icons.blueC.url="bluecircle-waypoint.png";icons.blueC.size=new OpenLayers.Size(10,10);icons.blueC.offset=new OpenLayers.Pixel(-5,-5);icons.blueC.infoWindowAnchor=new OpenLayers.Pixel(4,4);icons.brC=icons.blueC.clone();icons.brC.url="redbluecircle-waypoint.png";var waypointIcon;var thisWaypointIcon;var followerIcon;var walkerIcon;setIcons();var followerInterval=30;var followerShow=false;var walkerShow=false;var walkerMarker;var walkerTrack=1;var walkerPoint=1;var walkerInterval;var walkerPause=false;var walkerSpeed=500;var dialogParams={width:480,height:320,position:[290,30]};window.onresize=resizeMap;function resizeMap(){setMapHeight(mapDiv)}function setIcons(){if(beta){waypointIcon=icons[user.waypoint].clone();thisWaypointIcon=icons[user.thisWaypoint].clone();followerIcon=icons[user.follower].clone();walkerIcon=icons[user.walker].clone();dragCursor=user.dragCursor}else{waypointIcon=icons[iconChoice.waypoint].clone();thisWaypointIcon=icons[iconChoice.thisWaypoint].clone();followerIcon=icons[iconChoice.follower].clone();walkerIcon=icons[iconChoice.walker].clone()}}function newCentre(){$("#search_results").dialog("close");var c=trim(document.getElementById("location").value.toUpperCase());var f=/^[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]$/;if(c.match(f)){var b=c.slice(0,2);var d=c.slice(2,5);var a=c.slice(5,8);if(osGrid[b+"e"]){osMap.setCenter(new OpenSpace.MapPoint(osGrid[b+"e"]+d+"00",osGrid[b+"n"]+a+"00"),7);return true}}var e="http://osapi.the-hug.net/api.php?t=g&q="+escape(c)+"&callback=?";$.getJSON(e,{},function(g){showMatchList(g)});return false}function showMatchList(d){switch(d.matches.length){case 0:showMatchListPopup("<a href=\"#\" onClick=\"$('#search_results').dialog('close')\">No matches found</a>");return true;case 1:osMap.setCenter(new OpenSpace.MapPoint(d.matches[0].e,d.matches[0].n),7);return true;default:var e="";var c;var b;var f=false;for(var a=0;a<d.matches.length;a++){c=d.matches[a].m+" "+osGazetteerFeatureCode[d.matches[a].f];e+='<a href="#" onClick="showMatchListGo('+d.matches[a].e+","+d.matches[a].n+');">'+c+"</a><br>";if(c==b){f=true}b=c}if(f){e="(Where there are identically named entries in the same county<br>&nbsp;in the list below the most north westerly ones are listed first)<br><br>"+e}showMatchListPopup(e)}}function showMatchListGo(b,a){$("#search_results").dialog("close");osMap.setCenter(new OpenSpace.MapPoint(b,a),7)}function showMatchListPopup(a){searchResultsDiv.innerHTML=a;$("#search_results").dialog(dialogParams)}function loadMap(){if(altCopyright&&!poweredByOpenSpace){OpenSpace.Control.Copyright.getDefaultCopyright=function(){return new OpenSpace.Control.Copyright(altCopyright,new OpenSpace.MapBounds(0,0,800000,1300000))}}elWaypointList=document.getElementById("waypoint_list");elWaypointCtrl=document.getElementById("waypoint_ctrl");elTracksCtrl=document.getElementById("tracks_ctrl");var h,j;mapDiv=document.getElementById("map");routeDiv=document.getElementById("gpx");maplogDiv=document.getElementById("maplog");searchResultsDiv=document.getElementById("search_results");setMapHeight(mapDiv);var k=[new OpenLayers.Control.Navigation(),new OpenLayers.Control.KeyboardDefaults(),new OpenSpace.Control.CopyrightCollection(),new OpenLayers.Control.ArgParser()];var m={controls:k,resolutions:[2500,1000,500,200,100,50,25,10,5,2.5]};osMap=new OpenSpace.Map("map",m);var g=new OpenSpace.Control.ControlPosition(OpenSpace.Control.ControlAnchor.ANCHOR_TOP_RIGHT);osMap.addControl(new OpenSpace.Control.LargeMapControl(),g);if(poweredByOpenSpace){var g=new OpenSpace.Control.ControlPosition(OpenSpace.Control.ControlAnchor.ANCHOR_BOTTOM_LEFT);osMap.addControl(new OpenSpace.Control.PoweredBy(),g)}vectorLayer=osMap.getVectorLayer();markerLayer=osMap.getMarkerLayer();var m={onStart:waypointDragStart,onDrag:waypointDrag,onComplete:waypointDragEnd};dragControl=new OpenSpace.Control.DragMarkers(markerLayer,m);osMap.addControl(dragControl);dragControl.activate();var l;var f;var d;if(cookie("zoom")){l=parseInt(cookie("zoom"));f=cookie("centreeasting");d=cookie("centrenorthing")}else{l=2;if(customer=="walk"){f=250000;d=850000}else{f=400000;d=300000}}elXMLdata=document.getElementById("xml_data");if(elXMLdata){var b=elXMLdata.innerHTML.split("|");if(b[0]=="R"){document.getElementById("route_name").value=b[1];nWaypoints=(b.length-2)/3;f=0;d=0;for(var e=1;e<=nWaypoints;e++){waypoint[e]=new Object();waypoint[e].point=pointFromLonLat(b[e*3+1],b[e*3]);waypoint[e].name=trim(b[e*3-1]);if(waypoint[e].name.slice(-1)==":"){waypoint[e].name=""}f+=waypoint[e].point.getEasting();d+=waypoint[e].point.getNorthing()}l=7;f/=nWaypoints;d/=nWaypoints}else{var a=(b.length-2)/4;var c=0;for(var e=1;e<=a;e++){if(b[e*4-2]=="x"){tracks[nTracks].nWaypoints=c;c=0}else{if(c==0){nTracks++;tracks[nTracks]=new Array()}c++;tracks[nTracks][c]=new Object();tracks[nTracks][c].point=pointFromLonLat(b[e*4+1],b[e*4]);tracks[nTracks][c].time=b[e*4-2];tracks[nTracks][c].ele=b[e*4-1]}}if(nTracks>0){f=tracks[1][1].point.getEasting();d=tracks[1][1].point.getNorthing();l=7}}}mapDiv.style.backgroundColor=waterColor[l];osMap.setCenter(new OpenSpace.MapPoint(f,d),l);if(nWaypoints>0){updateWaypoints()}displayTracks();setRouteDivHeight();osMap.events.register("moveend",mapDiv,logCentre);osMap.events.register("click",mapDiv,addWaypoint);if(document.getElementById("relnotes").innerHTML){$("#relnotes").dialog(dialogParams)}}function waypointDragStart(b){mapDiv.style.cursor=dragCursor;for(var a=1;a<=nWaypoints;a++){if(waypoint[a].point==null){alert("waypoint["+a+"].point undefined, nWaypoints"+nWaypoints)}if(b.lonlat.lon==waypoint[a].point.getEasting()&&b.lonlat.lat==waypoint[a].point.getNorthing()){pointVal=a}}}function waypointDrag(a){if(a==null){return}}function waypointDragEnd(a){waypoint[pointVal].point=new OpenSpace.MapPoint(a.lonlat.lon,a.lonlat.lat);updateWaypoints();mapDiv.style.cursor="crosshair"}function setMapHeight(a){try{if(window.innerHeight){a.style.height=(window.innerHeight-12)+"px"}else{a.style.height=document.documentElement.clientHeight+document.documentElement.clientTop-14}}catch(b){}setRouteDivHeight()}function setRouteDivHeight(){var b;var a=divHeight("nav");if(customer=="walk"){a+=divHeight("login")+5}if(nTracks>0){a+=divHeight("tracks")+5}routeDiv.style.maxHeight=(divHeight("map")-a-11)+"px"}function divHeight(a){return document.getElementById(a).offsetHeight}function logCentre(){var b=osMap.getCenter();var a=osMap.getZoom();setCookie("centreeasting",b.getEasting());setCookie("centrenorthing",b.getNorthing());setCookie("zoom",a);mapDiv.style.backgroundColor=waterColor[a]}function displayTracks(){var c=new Object;if(nTracks>0){var d;for(var b=1;b<=nTracks;b++){d=new Array();for(var a=1;a<=tracks[b].nWaypoints;a++){thisPoint=new OpenLayers.Geometry.Point(tracks[b][a].point.getEasting(),tracks[b][a].point.getNorthing());d.push(thisPoint)}var e=new OpenLayers.Geometry.LineString(d);c=new OpenLayers.Feature.Vector(e,null,trackStyle);vectorLayer.addFeatures([c])}if(followerShow){displayFollowers()}document.getElementById("tracks").style.display="block";document.getElementById("tracks").style.height="108px";showTracksOptions()}}function showTracksOptions(){var a='Markers: <a title="Click to toggle track followers" onClick="toggleFollowers();">';if(followerShow){a+="Hide"}else{a+="Show"}a+="</a>";if(followerShow){a+='<br> &nbsp; <a title="Click to decrease spacing between markers" onClick="changeFollowerInterval(\'i\',-5);">More</a> <a title="Click to increase spacing between markers" onClick="changeFollowerInterval(\'i\',+5);">Less</a> <a title="Click to only display markers at track ends" onClick="changeFollowerInterval(\'e\',0);">Ends</a> <a title="Click to reset spacing between markers" onClick="changeFollowerInterval(\'r\',0);">Reset</a>'}a+="</table>";a+='<p>Walker: <a title="Click to toggle display of walker" onClick="toggleWalker();">';if(walkerShow){a+="Hide</a> ";if(walkerPause){a+='<a title="Click to start" onClick="toggleWalkerPause();">Start</a>'}else{a+='<a title="Click to pause" onClick="toggleWalkerPause();">Pause</a> <a title="Click to go faster" onClick="changeWalkerSpeed(-100);">Faster</a> <a title="Click to go slower" onClick="changeWalkerSpeed(100);">Slower</a>'}a+='<table id="walker_data"><tr><td>Date:</td><td id="walker_date"></td></tr><tr><td>Time:</td><td id="walker_time"></td></tr><tr><td>Height:</td><td id="walker_ele"></td></tr></table>'}else{a+="Show</a>"}elTracksCtrl.innerHTML=a}function toggleFollowers(){if(followerShow){clearFollowers();followerShow=false}else{if(walkerShow){toggleWalker()}displayFollowers();followerShow=true}showTracksOptions()}function changeFollowerInterval(b,a){clearFollowers();switch(b){case"r":followerInterval=30;break;case"e":followerInterval=1000000000;break;case"i":if(a<0&&followerInterval>=1000000000){followerInterval=30}else{followerInterval+=a}break}if(followerInterval==0){followerInterval=1}displayFollowers()}function clearFollowers(){for(var a=1;a<=nFollowers;a++){markerLayer.removeMarker(followerMarker[a]);followerMarker[a].destroy()}nFollowers=0}function displayFollowers(){nFollowers=0;followerMarker=new Array();for(var b=1;b<=nTracks;b++){displayFollower(tracks[b][1]);if(tracks[b].nWaypoints>followerInterval){for(var a=followerInterval;a<tracks[b].nWaypoints;a+=followerInterval){displayFollower(tracks[b][a])}}displayFollower(tracks[b][tracks[b].nWaypoints])}}function displayFollower(a){var c=new OpenLayers.Size(200,120);var b="Date: "+a.time.substring(0,10)+"<br />Time: "+a.time.substring(11).replace("Z"," GMT")+"<br />Elevation: "+a.ele+"m";nFollowers++;followerMarker[nFollowers]=osMap.createMarker(a.point,followerIcon.clone(),b,c)}function toggleWalker(){if(walkerShow){clearWalker();clearInterval(walkerInterval);walkerShow=false;showTracksOptions()}else{if(followerShow){toggleFollowers()}walkerShow=true;showTracksOptions();displayWalker();walkerInterval=setInterval(moveWalker,walkerSpeed)}}function clearWalker(){markerLayer.removeMarker(walkerMarker);walkerMarker.destroy()}function toggleWalkerPause(){if(walkerPause){walkerPause=false;walkerInterval=setInterval(moveWalker,walkerSpeed)}else{walkerPause=true;clearInterval(walkerInterval)}showTracksOptions();displayWalkerPosition()}function changeWalkerSpeed(a){walkerSpeed+=a;if(walkerSpeed<100){walkerSpeed=100}clearInterval(walkerInterval);walkerInterval=setInterval(moveWalker,walkerSpeed)}function moveWalker(){clearWalker();walkerPoint++;if(walkerPoint>tracks[walkerTrack].nWaypoints){walkerPoint=1;walkerTrack++;if(walkerTrack>nTracks){walkerTrack=1}}displayWalker()}function displayWalker(){var a=new Object();a.draggable=false;a.icon=walkerIcon;aWaypoint=tracks[walkerTrack][walkerPoint];walkerMarker=osMap.createMarker(aWaypoint.point,walkerIcon.clone());displayWalkerPosition()}function displayWalkerPosition(){aWaypoint=tracks[walkerTrack][walkerPoint];document.getElementById("walker_date").innerHTML=aWaypoint.time.substring(0,10);document.getElementById("walker_time").innerHTML=aWaypoint.time.substring(11).replace("Z"," GMT");document.getElementById("walker_ele").innerHTML=aWaypoint.ele+"m"}function addWaypoint(c){var a=osMap.getLonLatFromViewPortPx(c.xy);var b=gridProjection.getLonLatFromMapPoint(a);nWaypoints++;waypoint[nWaypoints]=new Object();waypoint[nWaypoints].point=pointFromLonLat(b.lon,b.lat);waypoint[nWaypoints].name="";updateWaypoints()}function insertWaypoint(b){var d=(waypoint[b].point.getEasting()+waypoint[b+1].point.getEasting())/2;var c=(waypoint[b].point.getNorthing()+waypoint[b+1].point.getNorthing())/2;var a=new Object;a.point=new OpenSpace.MapPoint(d,c);a.name="";waypoint.splice((b+1),0,a);nWaypoints++;updateWaypoints()}function updateWaypoints(){removeRoute();if(nWaypoints==0){elWaypointList.innerHTML="";elWaypointCtrl.innerHTML="";return true}var c="http://osapi.the-hug.net/api.php?t=s&q=";var d="";var u;var o;var n=new Array();var f=0;var r="<table>";var a;var h;var x;var s;for(var q=1;q<=nWaypoints;q++){if(waypoint[q].name==""){s="wp_osgb";x=osgb(waypoint[q].point)}else{s="wp_name";x=waypoint[q].name}r+='<tr onMouseOver="highlightWaypointOn('+q+');" onMouseOut="highlightWaypointOff('+q+');"><td align="right" width="20px" rowspan=2>'+q+':</td><td rowspan=2><input type="text" id="waypoint_'+q+'" class="'+s+'" size="8" maxlength="8" value="'+x+'" onFocus="editWaypointName('+q+');" onBlur="updateWaypointName('+q+');"></td><td rowspan=2>&nbsp;<a href="#" onClick="deleteWaypoint('+q+');">Delete</a></td>';if(q==1){r+="<td></td>"}r+="</tr>";if(q<nWaypoints){r+='<tr onMouseOver="highlightWaypointOn('+q+"); highlightWaypointOn("+(q+1)+');" onMouseOut="highlightWaypointOff('+q+"); highlightWaypointOff("+(q+1)+');"><td rowspan=2>&nbsp;<a href="#" onClick="insertWaypoint('+q+');">Insert</a></td></tr>'}u=waypoint[q].point.getEasting();o=waypoint[q].point.getNorthing();a=new OpenLayers.Geometry.Point(u,o);n.push(a);c+=d+u.toFixed(0)+","+o.toFixed(0);d=":";if(q>1){f+=parseFloat(a.distanceTo(h))}waypoint[q].marker=osMap.createMarker(waypoint[q].point,waypointIcon.clone());h=a}r+="<tr><td></td></tr></table>";var j=f/1609.344;var m=2;if(j>100){m=0}else{if(j>10){m=1}}var w=f/1000;var b=2;if(w>100){b=0}else{if(w>10){b=1}}var v="Length: "+j.toFixed(m)+" miles &nbsp;"+w.toFixed(b)+" km";if(beta){v+='<br><span id="route_summary"><br>&nbsp;</span>';if(nWaypoints>1){c+="&callback=?";$.getJSON(c,{},function(i){showRouteSummary(i)})}}r=v+r;elWaypointList.innerHTML=r;if(customer=="walk"&&reportMode){var p="Add to walk report";var e="gpxsave.php";var g='<input type="hidden" name="whUsid" value="'+whUsid+'">'}else{var p="Download GPX file";var e="gpxout.php";var g=""}var l='<div style="float: left;"><form id="gpx_form" method="post" action="'+e+'">'+g+'<input type="hidden" name="gpx_name" id="gpx_name" value=""><input type="hidden" name="gpx_xml" id="gpx_xml" value=""><a onClick="createGPX();">'+p+"</a></form></div>";l+='<div style="float: right"><a title="Click to clear route" onClick="clearRoute();">Clear</a></div>';elWaypointCtrl.innerHTML=l;if(nWaypoints>1){var t={strokeColor:"blue",strokeOpacity:1,strokeWidth:2};var k=new OpenLayers.Geometry.LineString(n);routeFeature=new OpenLayers.Feature.Vector(k,null,t);vectorLayer=osMap.getVectorLayer();vectorLayer.addFeatures([routeFeature])}markerLayer.setDragMode(true)}function showRouteSummary(a){document.getElementById("route_summary").innerHTML="Ascent: +"+a.ascTotal+"m &nbsp;-"+a.descTotal+"m<br>Naismith: "+a.naismith}function clearRoute(){if(confirm("Click OK to delete this route.")){removeRoute();nWaypoints=0;waypoint=new Array();elWaypointList.innerHTML="";elWaypointCtrl.innerHTML="";displayTracks()}return false}function removeRoute(){if(routeFeature){vectorLayer.removeFeatures([routeFeature])}for(var a=1;a<=nWaypoints;a++){if(waypoint[a].marker){markerLayer.removeMarker(waypoint[a].marker);waypoint[a].marker.destroy()}}}function highlightWaypointOn(a){changeWaypointUrl(a,thisWaypointIcon)}function highlightWaypointOff(a){changeWaypointUrl(a,waypointIcon)}function changeWaypointUrl(b,a){markerLayer.removeMarker(waypoint[b].marker);waypoint[b].marker=osMap.createMarker(waypoint[b].point,a.clone())}function editWaypointName(a){var b=document.getElementById("waypoint_"+a);if(waypoint[a].name==""){b.value="";b.className="wp_name"}}function updateWaypointName(a){var b=document.getElementById("waypoint_"+a);waypoint[a].name=trim(b.value);if(waypoint[a].name==""){b.value=osgb(waypoint[a].point);b.className="wp_osgb"}}function deleteWaypoint(a){markerLayer.removeMarker(waypoint[a].marker);waypoint[a].marker.destroy();waypoint.splice(a,1);nWaypoints--;updateWaypoints()}function disLatLon(a){return a.latToCanonical()+", "+a.lonToCanonical()}function createGPX(){var c;document.getElementById("gpx_name").value=document.getElementById("route_name").value;var a='<?xml version="1.0"?>\n<gpx version="1.1"\n  creator="The Hug - http://maps.the-hug.net/"\n  xmlns="http://www.topografix.com/GPX/1/1"\n  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n  xsi:schemaLocation="http://www.topografix.com/GPX/1/1\n  http://www.topografix.com/GPX/1/1/gpx.xsd">\n  <rte>\n    <name>'+document.getElementById("route_name").value+"</name>\n";for(var b=1;b<=nWaypoints;b++){c=gridProjection.getLonLatFromMapPoint(waypoint[b].point);a+='    <rtept lat="'+c.lat+'" lon="'+c.lon+'">\n      <name>'+b+":"+waypoint[b].name+"</name>\n    </rtept>\n"}a+="  </rte>\n</gpx>\n";document.getElementById("gpx_xml").value=a;document.forms[1].submit()}function checkNoRoute(){if(nWaypoints>0){return confirm("This will forget your route. Click OK to confirm that you want to so this.")}if(nTracks>0){return confirm("This will forget the tracks you've loaded. Click OK to confirm that you want to so this.")}return true}function helpWindow(){$("#help").dialog(dialogParams);return false}function osgb(a){var d=a.getEasting()/100;var c=a.getNorthing()/100;var b=osGridLetter[parseInt(d/1000)][parseInt(c/1000)];d=parseInt(1000+(d%1000)+0.5);c=parseInt(1000+(c%1000)+0.5);d=d.toString();c=c.toString();d=d.slice(1,4);c=c.slice(1,4);return b+d+c}function pointFromLonLat(c,b){var a=new OpenLayers.LonLat(c,b);return gridProjection.getMapPointFromLonLat(a)}function maplog(a){maplogDiv.style.display="block";if(maplogDiv.innerHTML!=""){maplogDiv.innerHTML+="<br>"}a=a.replace(/&/g,"&amp;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");maplogDiv.innerHTML+=a}function maplogClear(){maplogDiv.style.display="none";maplogDiv.innerHTML=""}function cookie(a){var c=document.cookie.split(/;\s?/);var d=new Array();for(var b=0;b<c.length;b++){d=c[b].split("=");if(a==d[0]){return d[1]}}return false}function setCookie(a,b){document.cookie=a+"="+b+";max-age="+(60*60*24*365)}function trim(a){return a.replace(/^\s+|\s+$/g,"")};