var map;

function init() {
     if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        geocoder = new GClientGeocoder();

		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());

		showAddress(address);

		GEvent.addListener(map, 'click', function(overlay, latlng) {	
			
			// Create the HTML DOM form element
			var inputForm = document.createElement("form");
			inputForm.setAttribute("action","");
			inputForm.onsubmit = function() { storeMarker(); return false;};
			
			// Retrieve the longitude and lattitude of the click point
			var lng = latlng.lng();
			var lat = latlng.lat();

			inputForm.innerHTML = '<fieldset style="width: 170px;">'
				+ '<legend>Marker toevoegen</legend>'
				+ '<label for="description_marker">Omschrijving</label>'
				+ '<input type="text" id="description_marker" maxlength="60" style="width: 100%;" />'
				+ '<input type="submit" value="Opslaan" style="margin-top: 2px;" />'
				+ '<input type="hidden" id="longitude" value="' + lng + '" />'
				+ '<input type="hidden" id="latitude" value="' + lat + '" />'				
				+ '<input type="hidden" id="land_id" value="' + land_id + '" />'	
				+ '</fieldset>';
			
			map.openInfoWindow (latlng,inputForm);
		});
	}
}

function createMarker (latlng, html) {
	var marker = new GMarker(latlng);

 	GEvent.addListener(marker, 'click', function() {
 		var markerHTML = html;
 		marker.openInfoWindowHtml(markerHTML);
 	});
 	
	return marker;
}

function showAddress(address) {
  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) {
		if (!point) {
		  document.getElementById("map").innerHTML = "<br />&nbsp; Helaas, de plattegrond voor deze locatie is (tijdelijk) niet beschikbaar.";
		} else {
		    map.setCenter(point, 5);
		  
		  
			GDownloadUrl("/api/marker_xml.php?land_id=" + land_id, function(data) {
			  var xml = GXml.parse(data);
			  var markers = xml.documentElement.getElementsByTagName("marker");
			  for (var i = 0; i < markers.length; i++) {
				var name = markers[i].getAttribute("name");
				var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng"))); 
	
				var marker = createMarker(latlng, name);
				map.addOverlay(marker);
			  }
			});
		}
	  }
	);
  }
}

window.onload = init;
window.onunload = GUnload;		

