var map;
var geocoder;
// Call this function when the page has been loaded
function initialize(mapurl) {
	if (document.domain == "premiervillasspain.com" || document.domain == "www.premiervillasspain.com") {
		if (GBrowserIsCompatible()) {
			if (mapurl.length > 0) {

				if (mapparentdiv = document.getElementById('map_placeholder')) {
					mapparentdiv.innerHTML = "<div id=\"map\" style=\"width: 540px; height: 400px; border: 1px solid #999999;\"></div>";

					argpairs = mapurl.split('?').pop().split('&');
					args = new Array()
					for(i=0;i<argpairs.length;i++) {
						chunks = argpairs[i].split('=');
						args[chunks[0]] = chunks[1];
					}

					// Create the map:
					map = new GMap2(document.getElementById("map"));
					// Centre it:
					coords = args['ll'].split(",");
					// Try to type-cast the zoom level:
					zm = args['z'] * 2 / 2;
					map.setCenter(new GLatLng(coords[0], coords[1]), zm);
					// Add basic controls:
					map.addControl(new GLargeMapControl());
					map.addControl(new GMapTypeControl());
					// And a Geocoder:
					geocoder = new GClientGeocoder();

					// Add marker for property:
					showAddress(args['q']);
				}
				return true;

			} else {
				// No google map to work with, do nothing.
			}
		}
	}
}

function showAddress(address) {
	geocoder.getLocations(address, addAddressToMap);

}

function addAddressToMap(response) {
  map.clearOverlays();
  if (!response || response.Status.code != 200) {
    alert("\"" + address + "\" not found");
  } else {
    place = response.Placemark[0];
    point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);
    marker = new GMarker(point);
    map.addOverlay(marker);
    
    // Make up address mark-up:
    if (place.AddressDetails.Accuracy==8) {
			addr_markup = "<h2>";
			addr_markup += place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
			addr_markup += ",<br />" + place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
			if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName != place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName) {
				addr_markup += ",<br />" + place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
			}
			addr_markup += "</h2>";
			marker.openInfoWindowHtml(addr_markup);
    }
  }
}