// Comments or suggestions? Please mail: hendry@aplix.co.jp

var p = {};

function errorCallback(err) {
	switch(err.code) {
		case 0:
			msg = "Unknown error!";
			break;
		case 1:
			msg = "Permission denied.";
			break;
		case 2:
			msg = "Your position could not be determined.";
			break;
		case 3:
			msg = "Timeout.";
			break;
		default:
			msg = "Unknown error!";
	}

	s = document.getElementById("status");
	s.innerHTML = msg;
	s.style.color = "red";
}

function locateme(provider) {

	switch(provider) {
		case 0:
			try {
				navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
			} catch(e) { errorCallback({ code: 2, message: e.message }); }
			break;
		case 1:
			try {
				Widget.Device.DeviceStateInfo.requestPositionInfo("gps");
				p.coords = Widget.Device.PositionInfo;
				successCallback(p);
			} catch(e) { errorCallback({ code: 2, message: e.message }); }
			break;
		case 2:
			try {
				var geolocation = {};
				geolocation = google.gears.factory.create('beta.geolocation');
				geolocation.getCurrentPosition(successCallback, errorCallback);
			} catch(e) { errorCallback({ code: 2, message: e.message }); }
			break;
		case 3:
			try {
				p.coords = google.loader.ClientLocation;
				successCallback(p);
			} catch(e) { errorCallback({ code: 2, message: "No google.loader.ClientLocation found" }); }
			break;
		default:
			errorCallback({ code: 2, message: e.message });
			break;
	}

}
