<html>
<head>
<title>Where Does It Get Me? - RJM Programming - October, 2015 ... thanks to https://en.wikipedia.org/wiki/Extreme_points_of_Earth</title>
<link href='//www.rjmprogramming.com.au/PHP/emboss_h1.css' rel='stylesheet' type='text/css'>
<script type='text/javascript'>
var firstgo = 1;
var selc = 0;
var latitude = -23.17;
var longitude = 132.27;
var firstone="http://www.rjmprogramming.com.au/PHP/Map/map.php?title=Papunya&label=['Lat',&value='Lon','Name']&data=,[" + latitude + "," + longitude + ",~Papunya%20(Northern Territory)~]";

var prevlat = -23.17;
var prevlong = 132.27;

var llsuff="";

var todist=4700.0;
var prefix="To Horizon ";
var suffix="";

function showLocation( position ) {
var cdate = new Date(); // thanks to http://stackoverflow.com/questions/10211145/getting-current-date-and-time-in-javascript
latitude = position.coords.latitude;
longitude = position.coords.longitude;
llsuff = "&latitude=" + latitude + "&longitude=" + longitude + "&maxdist=" + document.getElementById('maxdist').value;
document.getElementById('myh2').innerHTML = "Current Location is Latitude: " + latitude + " and Longitude: " + longitude + " at " + ("0" + cdate.getDate()).slice(-2) + "/" + ("0" + eval(1 + cdate.getMonth())).slice(-2) + "/" + cdate.getFullYear() + ":" + ("0" + cdate.getHours()).slice(-2) + ":" + ("0" + cdate.getMinutes()).slice(-2) + ":" + ("0" + cdate.getSeconds()).slice(-2);
document.getElementById('myiframe').src = "http://www.rjmprogramming.com.au/PHP/Map/map.php?title=Here&label=['Lat',&value='Lon','Name']&data=,[" + latitude + "," + longitude + ",~Here~]"; //+ latitude + " and Longitude: " + longitude + " at " + ("0" + cdate.getDate()).slice(-2) + "/" + ("0" + eval(1 + cdate.getMonth())).slice(-2) + "/" + cdate.getFullYear() + ":" + ("0" + cdate.getHours()).slice(-2) + ":" + ("0" + cdate.getMinutes()).slice(-2) + ":" + ("0" + cdate.getSeconds()).slice(-2);

if (firstgo == 1) {
firstgo = 0;
//alert("You are at " + latitude + ", " + longitude);
setInterval(getLocation, 30000);
}
}

function errorHandler( err ) {
if (err.code == 1) {
// access is denied
alert("Access is denied");
}

}

function getLocation() {
if (selc == 0) {
selc=1;
var geolocation = navigator.geolocation;
geolocation.getCurrentPosition(showLocation, errorHandler,
{maximumAge: 75000});
}
}

function movehere(bval) {
if (bval.toLowerCase() == ("Move to Known Point Now").toLowerCase()) {
var xlat=eval(-1.0 - 28.0/60.0 - 9.0/3600.0);
var xlong=eval(-78.0 - 49.0/60.0 - 3.0/3600.0);
var huh=prompt("Please enter Latitude,Longitude[,Place] of known location on Earth", xlat + "," + xlong + ",Chimborazo, Ecuador (point farthest from the Earth center)");
var aplace="Here";
if (huh != null) {
var huhs=huh.split(",");
if (huhs.length > 1) {
prevlat=huhs[0];
prevlong=huhs[1];
if (huhs.length > 2) {
aplace="" + encodeURIComponent(huh.replace(huhs[0] + "," + huhs[1] + ",", "")) + "";
}
firstone="http://www.rjmprogramming.com.au/PHP/Map/map.php?title=" + aplace + "&label=['Lat',&value='Lon','Name']&data=,[" + prevlat + "," + prevlong + ",~" + aplace + "~]";
document.getElementById('myiframe').src = firstone;
}
}
} else {
document.getElementById('caption').innerHTML+=" &#8857; ";
}
document.getElementById('move').value='Move to this Point';
}

function nextpoint(tval) {
document.getElementById('move').value='Move to this Point';
todist=document.getElementById('s' + tval.substring(0,1).toLowerCase()).value;
if (todist == 0.0) {
todist=eval(1.0 * eval(document.getElementById('i' + tval.substring(0,1).toLowerCase()).value));
prefix=todist + " kilometres ";
todist*=1000.0;
} else {
prefix=document.getElementById('s' + tval.substring(0,1).toLowerCase()).options[document.getElementById('s' + tval.substring(0,1).toLowerCase()).selectedIndex].title;
}
var alat=eval(latitude);
var along=eval(longitude);
var alat2=alat, along2=along;
var dist=0.0, disttwo=todist, factor=1.0, mag=0.01;
if (tval.toLowerCase().indexOf('north') != -1 && tval.toLowerCase().indexOf('east') != -1) {
while (Math.abs(dist - disttwo) > 0.05) {
alat2+=eval(factor * mag);
along2+=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "North-East" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "ne ";
} else if (tval.toLowerCase().indexOf('north') != -1 && tval.toLowerCase().indexOf('west') != -1) {
while (Math.abs(dist - disttwo) > 0.05) {
alat2+=eval(factor * mag);
along2-=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "North-West" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "nw ";
} else if (tval.toLowerCase().indexOf('south') != -1 && tval.toLowerCase().indexOf('east') != -1) {
while (Math.abs(dist - disttwo) > 0.05) {
alat2-=eval(factor * mag);
along2+=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "South-East" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "se ";
} else if (tval.toLowerCase().indexOf('south') != -1 && tval.toLowerCase().indexOf('west') != -1) {
while (Math.abs(dist - disttwo) > 0.05) {
alat2-=eval(factor * mag);
along2-=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "South-West" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "sw ";
} else if (tval.substring(0,1).toLowerCase() == 'e') {
while (Math.abs(dist - disttwo) > 0.05) {
along2+=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "East" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "e ";
} else if (tval.substring(0,1).toLowerCase() == 'w') {
while (Math.abs(dist - disttwo) > 0.05) {
along2-=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "West" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "w ";
} else if (tval.substring(0,1).toLowerCase() == 'n') {
while (Math.abs(dist - disttwo) > 0.05) {
alat2+=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "North" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "n ";
} else if (tval.substring(0,1).toLowerCase() == 's') {
while (Math.abs(dist - disttwo) > 0.05) {
alat2-=eval(factor * mag);
dist=great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2));
if (factor > 0.5 && eval(dist) > eval(disttwo)) {
mag /= 2.0;
factor = eval(-factor);
} else if (factor < -0.5 && eval(disttwo) > eval(dist)) {
mag /= 2.0;
factor = eval(-factor);
}
}
document.getElementById('myiframe').src += ",[" + alat2 + "," + along2 + ",~" + prefix + "South" + suffix + "~]";
document.getElementById('caption').innerHTML += great_circle_distance(eval(alat), eval(along), eval(alat2), eval(along2)) + "s ";
}
prevlat=alat2;
prevlong=along2;
}


function great_circle_distance(talis, gnolis, latis, longis) {
var ourdist=0.0;
var rgnol=eval((gnolis) * Math.PI / 180.0);
var rtal=eval((talis) * Math.PI / 180.0);
var rlong=eval((longis) * Math.PI / 180.0);
var rlat=eval((latis) * Math.PI / 180.0);
var deltalong = Math.abs(eval(((gnolis)-(longis)) * Math.PI / 180.0));
var acof = eval(Math.sin(rtal) * Math.sin(rlat)) + (Math.cos(rtal) * Math.cos(rlat) * Math.cos(deltalong)); // via http://en.wikipedia.org/wiki/Great-circle_distance ... thanks
ourdist = eval(Math.round((Math.acos(acof) * 6371000.0) + 0.00001) * 100) / 100;
return ourdist;
}

</script>
</head>
<body style='background-color: #f0ffff;' onload=" document.getElementById('myiframe').src = firstone; getLocation(); " style="width:100%;">
<h1 align='center'>Where Does It Get Me To? <font size=1>RJM Programming - October, 2015</font></h1>
<h4 id='myh2' align='center'></h4>
<table style="width:90%;" border=1>
<tr style="width:100%;">
<td align='top' style="width:8%;"><div align='center'><input onclick='nextpoint(this.id);' type='button' id='west' value="&#8592; West"></input><select id='sw'><option title='One Kilometre ' value='1000.0'>1 km</option><option title='To Horizon ' value='4700.0' selected>Horizon</option><option title='Five Kilometres ' value='5000.0'>5 km</option><option title='Ten Kilometres ' value='10000.0'>10 km</option><option title='Fifty Kilometres ' value='50000.0'>50 km</option><option title='One Hundred Kilometres ' value='100000.0'>100 km</option><option title='Five Hundred Kilometres ' value='500000.0'>500 km</option><option title='One Thousand Kilometres ' value='1000000.0'>1000 km</option><option title='' value='0.0'>Distance in km as Below</option></select><input title="Distance in km" onchange=" document.getElementById('sw').value='0.0'; " id='iw' type='number' value='0'></input></div></td>
<td align='top' style="width:80%; background-color:yellow;"><br>
<div align='left'><input onclick='nextpoint(this.id);' type='button' id='northwest' value="&#8598; North-West"></input></div><div align='center'><input onclick='nextpoint(this.id);' type='button' id='north' value="North &#8593;"></input><select id='sn'><option title='One Kilometre ' value='1000.0'>1 km</option><option title='To Horizon ' value='4700.0' selected>Horizon</option><option title='Five Kilometres ' value='5000.0'>5 km</option><option title='Ten Kilometres ' value='10000.0'>10 km</option><option title='Fifty Kilometres ' value='50000.0'>50 km</option><option title='One Hundred Kilometres ' value='100000.0'>100 km</option><option title='Five Hundred Kilometres ' value='500000.0'>500 km</option><option title='One Thousand Kilometres ' value='1000000.0'>1000 km</option><option title='' value='0.0'>Distance in km as at Right</option></select><input title="Distance in km" onchange=" document.getElementById('sn').value='0.0'; " id='in' type='number' value='0'></input></div><div align='right'><input onclick='nextpoint(this.id);' type='button' id='northeast' value="North-East &#8599;"></input></div><br>
<div align='center'><iframe id='myiframe' style="width:450px;height:400px;" frameborder=1 src=''></iframe><br><table><tr><td><span id='bitbelow'><h4 align='center' id='caption'><input onclick=' movehere(this.value); latitude=prevlat; longitude=prevlong; ' id='move' title='Make last point the new Here point' type='button' value='Move to Known Point Now'></input>&nbsp;</h4></span></td></tr></table></div><br><br>
<div align='left'><input style='margin-top:-50px;' onclick='nextpoint(this.id);' type='button' id='southwest' value="&#8601; South-West"></input></div><div align='center' style='margin-top:-50px;'><input onclick='nextpoint(this.id);' type='button' id='south' value="South &#8595;"></input><select id='ss'><option title='One Kilometre ' value='1000.0'>1 km</option><option title='To Horizon ' value='4700.0' selected>Horizon</option><option title='Five Kilometres ' value='5000.0'>5 km</option><option title='Ten Kilometres ' value='10000.0'>10 km</option><option title='Fifty Kilometres ' value='50000.0'>50 km</option><option title='One Hundred Kilometres ' value='100000.0'>100 km</option><option title='Five Hundred Kilometres ' value='500000.0'>500 km</option><option title='One Thousand Kilometres ' value='1000000.0'>1000 km</option><option title='' value='0.0'>Distance in km as at Right</option></select><input title="Distance in km" onchange=" document.getElementById('ss').value='0.0'; " id='is' type='number' value='0'></input></div><div align='right'><input onclick='nextpoint(this.id);' type='button' id='southeast' value="South-East &#8600;" style='margin-top:-40px;'></input></div><br>
<br><br></td>
<td align='top' style="width:8%;"><div align='center'><input onclick='nextpoint(this.id);' type='button' id='east' value="East &#8594;"><select id='se'><option title='One Kilometre ' value='1000.0'>1 km</option><option title='To Horizon ' value='4700.0' selected>Horizon</option><option title='Five Kilometres ' value='5000.0'>5 km</option><option title='Ten Kilometres ' value='10000.0'>10 km</option><option title='Fifty Kilometres ' value='50000.0'>50 km</option><option title='One Hundred Kilometres ' value='100000.0'>100 km</option><option title='Five Hundred Kilometres ' value='500000.0'>500 km</option><option title='One Thousand Kilometres ' value='1000000.0'>1000 km</option><option title='' value='0.0'>Distance in km as Below</option></select><input title="Distance in km" onchange=" document.getElementById('se').value='0.0'; " id='ie' type='number' value='0'></input></input></div><br><br></td>
</tr>
</table>
<a target=_blank title=Horizon href='https://www.google.com/?gws_rd=ssl#q=distance+in+kilometres+to+horizon' style='display:none;'>x</a>
<input id='maxdist' type='hidden' value=''></input>
</body>
</html>