// JavaScript Document

var rg;
var geocoder;

function reverseGeocode() {
	
	var address = document.getElementById("zipcode_field").value;

	if (geocoder)
		{
		geocoder.getLatLng
			(
			address,
			function(point)
				{
				  rg.reverseGeocode(point);
				}
			);
		}
}


function initialize() {
  if (GBrowserIsCompatible()) {

    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(51.05226693177032, 3.723893165588379), 15);
    map.addControl(new GLargeMapControl());
    rg = new GReverseGeocoder(map);
	geocoder = new GClientGeocoder();
	
    GEvent.addListener(rg, "load", goodresult);
    GEvent.addListener(rg, "error", badresult);
  }
}

// is called with a placemark if the reverse geocode request was successfull
// sets the result div
function goodresult(placemark) {
	var city = placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
	var province = placemark.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
	var latitude = placemark.Point.coordinates[1];
	var longitude = placemark.Point.coordinates[0];
	
	document.getElementById("city_field").value = city;
	document.getElementById("province_field").value = province;
	document.getElementById("latitude_field").value = latitude;
	document.getElementById("longitude_field").value = longitude;
}

// is called if the reverse geocode request was unsuccessfull
function badresult() {
  alert("That zip code is not in the database");
}
