var noGPS = 0;
var mLat;
var mLng;
var dest;
var directNo = true;
var direct = false;
var redirectAddress;
var storeName = "dublin-bus";
var manifestLocation = "gears_geo_manifest.txt";

function createStore(){
	var localServer = google.gears.factory.create('beta.localserver');
	var store = localServer.createManagedStore(storeName);
	updateStore();
}

function updateStore(){
var localServer = google.gears.factory.create('beta.localserver');
var store = localServer.openManagedStore(storeName);
store.manifestUrl = manifestLocation;
store.onerror = function(error) {alert(error.message);};
store.oncomplete = function(details) {if(details.newVersion!=""){alert(details.newVersion)}loadGearsGeo();};
store.checkForUpdate();
}

function g_gears(d){
	direct = d;
	var googleGearsInstalled = (window.google && google.gears);
 
	if (googleGearsInstalled) {
		createStore();
	}
}

function loadGearsGeo(){
		var geo = google.gears.factory.create('beta.geolocation');
		if ( (geo) && (geo.getPermission()) ) {
			var positionOpts = new Object();
			positionOpts.enableHighAccuracy = true;
			geo.watchPosition(positionSuccessCallback, positionErrorCallback, positionOpts);
	       }
}


function positionErrorCallback(positionErr) {
	var script = document.createElement("li");
	script.innerHTML="error: " + positionErr.message; 
	document.getElementById("error_list").appendChild(script);
}

function positionSuccessCallback (p) {
	vLat = p.latitude;
	vLng = p.longitude;

	if(noGPS>2){
		busCallback(p.latitude, p.longitude);
	}
	else{
		if(direct==2 && directNo){	
			dest=prompt("Enter destination or click cancel to list nearest buses","");
			directNo = false;
		}
		setTimeout("busCallback(vLat, vLng);", 5000);
		noGPS++;
	}	
}

function busCallback (lat, lng) {

	if(dest==null){
		window.location.href='stop.php?centre='+lat+','+lng;
	}	
	if (dest!=null && dest!=""){
		window.location.href='route.php?w3c='+lat+','+lng+'&dest='+dest;
	}
}




