var map;
var vehicleMarker;
var lat = 37.4419;
var lon = -122.1419;
var locationURL = "http://blog.jdns.org/traveltracker/location.json";

var updatePosition = function() {
	var deferred = loadJSONDoc(locationURL, {'no-cache': new Date().getTime()});
	var deferredList = new DeferredList([deferred], false, false, true);
	deferredList.addCallback(function (resultList) {
	    MochiKit.Base.map(function (result) {
		if (result[0]) {
			lat = result[1].latitude;
			lon = result[1].longitude;
			
			var location = new GLatLng(lat, lon);
			vehicleMarker.setPoint(location);
			map.setCenter(location);
		}
	    }, resultList);
	});
};

var createMarker = function(location) {
	//create a base icon class for our markers to inherit.
        var icon = new GIcon();
        icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        icon.iconSize = new GSize(20, 34);
        icon.shadowSize = new GSize(37, 34);
        icon.iconAnchor = new GPoint(9, 34);
        icon.infoWindowAnchor = new GPoint(9, 2);
        icon.infoShadowAnchor = new GPoint(18, 25);
	icon.image = "http://www.google.com/mapfiles/markerC.png";

	return new GMarker(location, icon);
};

var timerTick = function() {
	var location = new GLatLng(lat, lon);
	updatePosition();

	map.setCenter(location);

	callLater(5, timerTick);
};

var travelTrackerOnLoad = function () {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.disableDragging();
		map.addControl(new GSmallZoomControl());
		map.addControl(new GMapTypeControl());

		var location = new GLatLng(lat, lon);
		map.setCenter(location, 13);
		vehicleMarker = createMarker(location);
		map.addOverlay(vehicleMarker);

		callLater(5, timerTick);
	}

};

addLoadEvent(travelTrackerOnLoad);

