function initClientGeolocation() {
	if (typeof handleClientGeolocationResult != 'function') {
		alert('Function handleClientGeolocationResult(lat, lng) missing!');
		return;
	}

	if (navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(function(position) {
			var lat, lng;

			if (position.coords.latitude) lat = position.coords.latitude;
			else if (position.latitude) lat = position.latitude;
			else lat = position.lat();

			if (position.coords.longitude) lng = position.coords.longitude;
			else if (position.longitude) lng = position.longitude;
			else lng = position.lng();

			if (lat && lng) handleClientGeolocationResult(lat, lng);
			else yqlgeo.get('visitor', normalizeYqlResponse);
		}, function(error) {
			yqlgeo.get('visitor', normalizeYqlResponse);
		});
	} else {
		yqlgeo.get('visitor', normalizeYqlResponse);
	}
} // function initClientGeolocation

function normalizeYqlResponse(response) {
	if (response.error && typeof handleClientGeolocationError == 'function') {
		var error = { code: 0 };
		handleClientGeolocationError(error);
		return;
	}

	var lat = response.place.centroid.latitude;
	var lng = response.place.centroid.longitude;

	if (typeof handleClientGeolocationResult == 'function') handleClientGeolocationResult(lat, lng);
} // function normalizeYqlResponse

