var Codec={encodePoints:function(g){var l=[];var a=0;var k=0;g=this.map(function(e){return Math.round(e/0.00001)},g);for(var b=0;b<g.length/2;b++){var h=g[b<<1];var m=h-k;k=h;var c=(Math.abs(m)<<1)-(m<0);while(1){var d=c&31;c>>=5;if(c){d|=32}l.push(String.fromCharCode(d+63));if(c==0){break}}var j=g[(b<<1)+1];var n=j-a;a=j;c=(Math.abs(n)<<1)-(n<0);while(1){var d=c&31;c>>=5;if(c){d|=32}l.push(String.fromCharCode(d+63));if(c==0){break}}}return l.join("")},decodePoints:function(h){if(!h){return[]}var e=[];var g=0;var f=0;var j=0;while(g<h.length){var b=0;var d=0;while(1){var a=h.charCodeAt(g)-63;g+=1;d|=(a&31)<<b;b+=5;if(a<32){break}}var c;if(d&1){c=~(d>>1)}else{c=d>>1}f+=c;e.push(f*0.00001);b=0;d=0;while(1){var a=h.charCodeAt(g)-63;g+=1;d|=(a&31)<<b;b+=5;if(a<32){break}}if(d&1){c=~(d>>1)}else{c=d>>1}j+=c;e.push(j*0.00001)}return e},map:function(e,b){var d=[];for(var c=0;c<b.length;c++){d[c]=e(b[c])}return d}};var map;var routePoints=new Array(0);var total_distance=0;var MILES={label:"miles",f:function(a){return a/1609.344}};var KMS={label:"km",f:function(a){return a/1000}};var unit_handler=KMS;function onLoad(a,d,c){map=new GMap2(document.getElementById("map"));var b=window.location.href.split("?");if(b[1]){initialiseMapFromURL(window.location.href)}else{map.setCenter(new GLatLng(a,d),c)}map.addControl(new GLargeMapControl());map.addControl(new GMapTypeControl());GEvent.addListener(map,"click",function(f,e){if(e){map.clearOverlays();routePoints.push(e);map.addOverlay(new GPolyline(routePoints));map.addOverlay(new GMarker(routePoints[0]));if(routePoints.length>1){map.addOverlay(new GMarker(routePoints[routePoints.length-1]));var g=e.distanceFrom(routePoints[routePoints.length-2]);total_distance+=g;updateDisplay()}}})}function initialiseMapFromURL(a){var a=a.split("?");if(!a[1]){return null}var j=new Object();var f=a[1].split("&");var h=/(\w+)=(.+)/;var m;for(var g=0;g<f.length;g++){if((m=h.exec(f[g]))!=null){var b=m[1];j[b]=decodeURI(m[2])}}var d=parseInt(j.zl);if(j.v==null){d=17-d}map.setCenter(new GLatLng(j.y,j.x),d);var e;if(j.type){switch(j.type){case"1":map.setMapType(G_NORMAL_MAP);break;case"2":map.setMapType(G_SATELLITE_MAP);break;case"3":map.setMapType(G_HYBRID_MAP);break;default:map.setMapType(G_NORMAL_MAP)}}if(j.path){var l=Codec.decodePoints(j.path);var k;total_distance=0;for(var g=0;g<l.length/2;g++){k=new GLatLng(l[2*g],l[2*g+1]);if(g>0){var c=routePoints[g-1];total_distance+=k.distanceFrom(c)}routePoints.push(k)}map.addOverlay(new GPolyline(routePoints));map.addOverlay(new GMarker(routePoints[0]));map.addOverlay(new GMarker(routePoints[routePoints.length-1]))}updateDisplay()}function updateDisplay(){var e=unit_handler.f(total_distance);document.getElementById("distance").value=e.toFixed(2);var i=e.toFixed(2);document.getElementById("distance").value=i;var c=(i/document.getElementById("economy").value)*document.getElementById("price").value;var d=(Math.round(c*Math.pow(10,2)))/Math.pow(10,2);if(isNaN(d)){alert("You have entered an invalid amount, please try again.")}else{document.getElementById("cost").value=d}var f=i/document.getElementById("speed").value;var j=new Array();var a=f.toString();j=a.split(".");var g=(j[0]*1+0);var b="."+j[1];var b=Math.round(((b)*0.6)*100);if(b==60){b="0";g=g+1}else{if(isNaN(b)||isNaN(g)){b="unknown";g="unknown"}}travel_time=g+" hours, "+b+" minutes";document.getElementById("travel_time").value=travel_time;var h=document.getElementById("units");h.firstChild.nodeValue=unit_handler.label}function toggleUnits(a){if(a=="MILES"){unit_handler=MILES}else{if(a=="KMS"){unit_handler=KMS}else{unit_handler=KMS}}updateDisplay()}function generatePermalink(){var q=document.getElementById("economy").value;var h=document.getElementById("price").value;var f=document.getElementById("speed").value;var c=document.getElementById("distance").value;var e=document.getElementById("cost").value;var d=document.getElementById("travel_time").value;var p=document.getElementById("cur").value;var l="";if(document.getElementById("dist1").checked){l=document.getElementById("dist1").value}else{if(document.getElementById("dist2").checked){l=document.getElementById("dist2").value}}var o="&economy="+q+"&price="+h+"&speed="+f+"&distance="+c+"&cost="+e+"&travel_time="+d+"&dist="+l+"&cur="+p;var j=[];var b=window.location.href.split("?")[0];var n=map.getZoom();j.push("zl="+n);var a=map.getCenter();j.push("x="+a.lng());j.push("y="+a.lat());var m=[];var r;for(var g=0;g<routePoints.length;g++){r=routePoints[g];m.push(r.y);m.push(r.x)}j.push("path="+Codec.encodePoints(m));var k=map.getCurrentMapType();switch(k){case G_NORMAL_MAP:t=1;break;case G_SATELLITE_MAP:t=2;break;case G_HYBRID_MAP:t=3;break;default:t=1}j.push("type="+t);j.push("v=2");b+="?";b+=j.join("&");b+=o;return b}function clearLastLeg(){if(routePoints.length<2){return}var a=routePoints.pop();map.clearOverlays();map.addOverlay(new GPolyline(routePoints));map.addOverlay(new GMarker(routePoints[0]));map.addOverlay(new GMarker(routePoints[routePoints.length-1]));total_distance=total_distance-a.distanceFrom(routePoints[routePoints.length-1]);updateDisplay()}function clearRoute(){routePoints=[];map.clearOverlays();total_distance=0;updateDisplay()}function generateURL(){var a=generatePermalink();document.getElementById("generatedlink").value=a;document.getElementById("generatedlinkholder").style.display="block"}function generateTinyURL(){document.getElementById("TinyURL").value=generatePermalink();document.tinyURLform.submit()};