// JavaScript Document

var centerLatitude = 51.692166;	// coördinaten van DESSO HOME
var centerLongitude = 5.082335;
var startZoom = 12;
var geocoder;
var dealer_markers = Array();

function init() {
	if (GBrowserIsCompatible()) {
		var map_obj = document.getElementById("dealermap");
		
		map = new GMap2(map_obj);
		
		var location = new GLatLng(centerLatitude, centerLongitude);
		map.setCenter(location, startZoom);
		
		map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl());
		
		// desso home marker plaatsen
		dessoMarker();
		
		// Create new geocoding object
		geocoder = new GClientGeocoder();
			
		//addDealerMarkers();
	}
}

function addToMap(response){
	// Retrieve the object
	place = response.Placemark[0];
	
	// Retrieve the latitude and longitude
	point = new GLatLng(place.Point.coordinates[1],
					  place.Point.coordinates[0]);
	
	// Center the map on this point
	// map.setCenter(point, 13);
	
	// Create a marker
	marker = new GMarker(point);
	marker_nr = dealer_markers.length;
	dealer_markers[marker_nr] = marker;
	
	GEvent.addListener(marker, 'mouseover',
		function() {
			dealer_markers[marker_nr].openInfoWindowHtml("TEST");
		}
	);
	// Add the marker to map
	map.addOverlay(marker);
}
/*

function openDetails(dealer_id){
	
}*/


function setCenter(response){
	// Retrieve the object
	place = response.Placemark[0];
	
	// Retrieve the latitude and longitude
	point = new GLatLng(place.Point.coordinates[1],
				  place.Point.coordinates[0]);
	
	// Center the map on this point
	map.setCenter(point, startZoom);
}

function addMarker(latitude, longitude, description, dealer, iconImage, shadowImage) {
	
	if(iconImage != "" && iconImage != null){
		var markerIcon = new GIcon(G_DEFAULT_ICON);
		markerIcon.image = iconImage;
		markerIcon.shadow = shadowImage;
		markerOptions = { icon: markerIcon };
		var marker = new GMarker(new GLatLng(latitude, longitude), markerOptions);
	}else{	
		var marker = new GMarker(new GLatLng(latitude, longitude));
	}
	
	GEvent.addListener(marker, 'click',	function() {
			marker.openInfoWindowHtml(description);
	});
	GEvent.addListener(marker, 'visibilitychanged',	function() {
			marker.openInfoWindowHtml(description);
	});
	dealer_markers[dealer] = marker;
	map.addOverlay(marker);
}

function clearMap(){
	map.clearOverlays(); 	
}

function dessoMarker(){
	// gegevens opslaan en tonen in de output
	var xmlhttp = getxmlhttp ();
	
	// opbouwen url
	var serverPage = "gmap/desso_info.php";
	
	xmlhttp.open("GET", serverPage);
	xmlhttp.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			// response of is geladen
			markerHtml = xmlhttp.responseText;
			if(markerHtml != "ERROR"){
				addMarker(centerLatitude, centerLongitude, markerHtml);
			}
			else{
				//Fout bij het laden van de marker!	
				alert("Fout: positie kan niet bepaald worden!");
			}
		}
	}
	xmlhttp.send(null);
	
//	addMarker(centerLatitude, centerLongitude, "Desso Home");
}

function addDealerMarker(latitude, longitude, dealer, iconImage, shadowImage){
	
	// gegevens opslaan en tonen in de output
	var xmlhttp = getxmlhttp ();
	
	// opbouwen url
	var serverPage = "gmap/dealer_info.php?dealer="+dealer+"";
	
	xmlhttp.open("GET", serverPage);
	xmlhttp.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			// response of is geladen
			markerHtml = xmlhttp.responseText;
			if(markerHtml != "ERROR"){
				addMarker(latitude, longitude, markerHtml, dealer, iconImage, shadowImage);
			}
			else{
				//Fout bij het laden van de marker!	
				alert("Fout: positie kan niet bepaald worden!");
			}
		}
	}
	xmlhttp.send(null);
}


function saveMarkerData(dealer_id, address){
	
	geocoder.getLocations(address, function(response){
		if (!response || response.Status.code != 200) {
			// kan niet bepalen
			return false;
		}
		// coordinaten opslaan
		place = response.Placemark[0];

      	// Retrieve the latitude and longitude
      	var latitude = place.Point.coordinates[1];
		var longitude = place.Point.coordinates[0];
	
		// gegevens opslaan en tonen in de output
		var xmlhttp = getxmlhttp ();
		
		// opbouwen url
		var serverPage = "gmap/save_coord.php?dealer="+dealer_id+"&latitude="+latitude+"&longitude="+longitude+"";
		
		xmlhttp.open("GET", serverPage);
		xmlhttp.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				// response of is geladen
				markerHtml = xmlhttp.responseText;
				if(markerHtml != "ERROR"){
					addMarker(latitude, longitude, markerHtml, dealer_id);
				}
				else{
					//Fout bij het laden van de marker!	
					alert("Fout: positie kan niet bepaald worden!");
				}
			}
		}
		xmlhttp.send(null);
		return;
	});// einde opslaan marker
}

// de center van de map verplaatsen naar de locatie van de geselecteerde dealer.
function locateDealer(dealer){
	
	var xmlhttp = getxmlhttp ();
	var serverPage = "gmap/dealer_info.php?dealer="+dealer+"";
	
	xmlhttp.open("GET", serverPage);
	xmlhttp.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
	xmlhttp.onreadystatechange = function() {
		
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			// response of is geladen
			markerHtml = xmlhttp.responseText;
						
			if(markerHtml != "ERROR"){
				dealer_markers[dealer].openInfoWindowHtml(markerHtml);
				map.setZoom(15);
			}
			else{
				//Fout bij het laden van de marker!	
				alert("Fout: positie kan niet bepaald worden!");
			}
		}
	}
	xmlhttp.send(null);	
}
window.onload = init;
window.onunload = GUnload;
