// Map Setup
var map = new GMap(document.getElementById("map"));
map.centerAndZoom(new GPoint(0,0), 1);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var lastmarker = new GMarker (new GPoint(0,0));
map.addOverlay (lastmarker);
var showmark = 0;
var reversegeocoder = new GReverseGeocoder(map);
GEvent.addListener(reversegeocoder, "load",
function(placemark) {
document.getElementById("locationName").innerHTML=placemark.address;
}
);
function setmark(a)
{
showmark = a;
refreshMap(map, 0);
}
// Refresh map function
function refreshMap(map, myrefresh)
{
document.getElementById("loading").innerHTML=" Retrieving data... ";
// AJAX XML Data Download and marker placement, straight
// from Google API documentation
var request = GXmlHttp.create();
request.open("GET", "../data.php?id="+deviceid+"&sharingcode="+sharingcode+"&RANDOM=."+Math.random(), true);
request.onreadystatechange = function() {
if (request.readyState == 4) {
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
var mytime;
for (var a = 0; a <= (markers.length -1); a++) {
if (parseInt(markers[a].getAttribute("minsago")) > 59) {
var myhours = parseInt(parseInt(markers[a].getAttribute("minsago")) / 60);
if (myhours > 24) {
var mydays = parseInt(myhours / 24);
myhours = parseInt(parseInt(parseInt(markers[a].getAttribute("minsago")) / 60) - (mydays * 24));
var myminutes = (parseInt(markers[a].getAttribute("minsago")) - (60 * (myhours + (mydays * 24))));
if (myminutes < 10) myminutes = "0"+myminutes;
mytime = " " + mydays + "d " + myhours + "h " + myminutes + " minutes ago";
} else {
var myminutes = (parseInt(markers[a].getAttribute("minsago")) - (60 * myhours));
if (myminutes < 10) myminutes = "0"+myminutes;
mytime = " " + myhours + "h " + myminutes + " minutes ago";
}
} else {
mytime = " " + parseInt(markers[a].getAttribute("minsago")) + " minutes ago";
}
if (showmark == a) {
//document.getElementById("marker"+a).innerHTML = ""+parseInt(markers[a].getAttribute("minsago"))+" minutes ago
";
document.getElementById("marker"+a).innerHTML = ""+mytime+"
";
} else {
//document.getElementById("marker"+a).innerHTML = ""+parseInt(markers[a].getAttribute("minsago"))+" minutes ago
";
document.getElementById("marker"+a).innerHTML = ""+mytime+"
";
}
}
//for (var i = 0; i <= markers.length; i++) {
var i = showmark;
if (markers[i]) {
var point = new GPoint(parseFloat(markers[i].getAttribute("lng")), parseFloat(markers[i].getAttribute("lat")));
var speed = parseInt(markers[i].getAttribute("speed"));
if (speed < 0) {
document.getElementById("speed").innerHTML="Unknown ";
} else {
document.getElementById("speed").innerHTML=speed;
}
document.getElementById("accuracy").innerHTML=parseInt(markers[i].getAttribute("accuracy"));
document.getElementById("lastupdate").innerHTML=markers[i].getAttribute("date");
//document.getElementById("lastmins").innerHTML=parseInt(markers[i].getAttribute("minsago"));
document.getElementById("lastmins").innerHTML=parseInt(markers[i].getAttribute("minsago"));
//document.getElementById("lastconnect").innerHTML=parseInt(markers[i].getAttribute("lastconnect"));
// Sets a marker to the last point added in the database
var marker = new GMarker(point);
if (parseFloat(markers[i].getAttribute("lat")) + parseFloat(markers[i].getAttribute("lng")) != lastmarker) {
reversegeocoder = new GReverseGeocoder(map);
GEvent.addListener(reversegeocoder, "load",
function(placemark) {
document.getElementById("locationName").innerHTML=placemark.address;
}
);
reversegeocoder.reverseGeocode(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))));
//map.centerAtLatLng(point);
map.panTo(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))));
map.clearOverlays();
map.addOverlay(marker);
map.addOverlay(GPolyline.Circle(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))),markers[i].getAttribute("accuracy")));
}
lastmarker = parseFloat(markers[i].getAttribute("lat")) + parseFloat(markers[i].getAttribute("lng"));
}
// Recenters map to last point added
//map.centerAtLatLng(point);
}
}
request.send(null);
window.setTimeout(function(){ document.getElementById("loading").innerHTML="";},500);
// Reloads map every 6 seconds
if (GPSstatus == 1 && myrefresh == 1) {
window.setTimeout(function(){ refreshMap(map,1)},6000);
}
}