﻿var markers = new Array();
var currentmarker = null;
var map = null;
//var nhlIcon = null;

// Google maps centreren op basis van alle markers in de array "markers".
var markers = new Array();
centerMap = function() {
	/* if an infoWindow is open, do not center map (return / do nothing) */
	var iW = map.getInfoWindow();	
	if(iW.getContentContainers().length > 0 && !iW.isHidden())
		return;
	for(var i in markers) {
		var this_lat = markers[i].getLatLng().lat() || null;
		var this_lng = markers[i].getLatLng().lng() || null;
		if(
			(this_lat && !isNaN(this_lat)) && 
			(this_lng && !isNaN(this_lng))
		) {
			var minLat = minLat || this_lat;
			var maxLat = maxLat || this_lat;
			var minLng = minLng || this_lng;
			var maxLng = maxLng || this_lng;
			
			//get min and max markers and save in variables
			minLat = Math.min(minLat, this_lat);
			maxLat = Math.max(maxLat, this_lat);
			minLng = Math.min(minLng, this_lng);
			maxLng = Math.max(maxLng, this_lng);						
		}
	}
	//avg of the coordinates
	var centerLat = minLat + ((maxLat - minLat) / 2);
	var centerLng = minLng + ((maxLng - minLng) / 2);
	//what's the distance of our coordinates? (in kilometers)	
	var dist = (6371 * 
					Math.acos(
						Math.sin(minLat / 57.2958) *						 						
						Math.sin(maxLat / 57.2958) + (
							Math.cos(minLat / 57.2958) * 
							Math.cos(maxLat / 57.2958) * 
							Math.cos(maxLng / 57.2958 - minLng / 57.2958)	
						)
					)					
				);
	//default zoom level
	var zoomLvl = 10;
	//determine the zoom level out of the calculated distance
	if(dist < 24576)
		zoomLvl = 1; 			
	if(dist < 12288)
		zoomLvl = 2; 			
	if(dist < 6144)
		zoomLvl = 3; 			
	if(dist < 3072)
		zoomLvl = 4;			
	if(dist < 1536)
		zoomLvl = 5; 
	if(dist < 768)
		zoomLvl = 6;		
	if(dist < 384)
		zoomLvl = 7;
	if(dist < 192)
		zoomLvl = 8;
	if(dist < 96)
		zoomLvl = 9;		
	if(dist < 48)
		zoomLvl = 10;	
	if(dist < 24)    
		zoomLvl = 11;
	if(dist < 11)    
		zoomLvl = 12;
	if(dist < 4.8)    
		zoomLvl = 13;
	if(dist < 3.2)    
		zoomLvl = 14;		
	if(dist < 1.6)    
		zoomLvl = 15;		
	if(dist < 0.8)
		zoomLvl = 16;		
	if(dist < 0.3)
		zoomLvl = 17;
				
	//center map and set zoomLvl
	var point = new GLatLng(centerLat, centerLng);
	map.setCenter(point, zoomLvl);
};	

function mapInit() {
  map = new GMap2(document.getElementById('googlemap'));
  map.addControl(new GSmallMapControl());
  map.addControl(new GMapTypeControl());
  map.setCenter(new GLatLng(52.872445,5.822754), 8, G_NORMAL_MAP);
    
//  nhlIcon = new GIcon();
//  nhlIcon.iconSize = new GSize(8,8);
//  nhlIcon.iconAnchor = new GPoint(4,4);
//  nhlIcon.infoWindowAnchor = new GPoint(4,4);
//  nhlIcon.image = "/interface/images/gm_klein.png";
  
  //nhlIcon = new GIcon();
//  nhlIcon.iconSize = new GSize(97,62);
//  nhlIcon.iconAnchor = new GPoint(48,31);
//  nhlIcon.infoWindowAnchor = new GPoint(48,31);
//  nhlIcon.image = "/interface/images/gm_logo.gif";
}

// Gdirections gedeelte.
// Laden van de routebeschrijving.
var gdir;
function routeLaden(naar) {
  var route = document.getElementById("route-beschrijving");
  route.innerHTML = "";
  var route_van_straat = document.getElementById("route-straat").value;
  var route_van_nr = document.getElementById("route-nr").value;
  var route_van_plaats = document.getElementById("route-plaats").value; 
  var van = route_van_straat + " " + route_van_nr + " " + route_van_plaats + " Nederland";
  
  var melding_route = document.getElementById("melding-route");
  melding_route.innerHTML = "";
  
  if (route_van_straat == "") {
	  melding_route.innerHTML = "Vul aub de straat in waar vandaan je vertrekt";
	  document.getElementById("route-straat").focus();
  }
  else if (route_van_plaats == "") {
	  melding_route.innerHTML = "Vul aub de plaats in waar vandaan je vertrekt";	
	  document.getElementById("route-plaats").focus();
  }  
  else {
    if (gdir)
    {
      // eventuele vorige routebschrijvingen van de google-maps verwijderen.
      gdir.clear();
    }
    gdir = new GDirections(map, route);
    GEvent.addListener(gdir, "load", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);
    var taal = "nl_nl";
    gdir.load("from: " + van + " to: " + naar, { "locale": taal });
  }
}

function onGDirectionsLoad() {
  var container_route = document.getElementById("container-routebeschrijving");
  try{
	  container = document.getElementById("container"); 
	}catch(e){}
  container_route.style.display = "block";
  container_route.style.left = (container.offsetLeft + 6) + "px";
  container_route.style.top = (container.offsetTop + 6) + "px"; 
  container_route.style.visibility = "visible"; 
  var sluit = document.getElementById("sluit-routebeschrijving"); 
  var iw = map.getInfoWindow();
  iw.hide();
}

function handleErrors(){
  if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {
    alert("De locatie van het opgegeven vertrekadres kon niet worden bepaald. Foutcode: " + gdir.getStatus().code);
  }
  else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
    alert("Er is iets misgegaan. Maar het is onduidelijk WAT! Foutcode: " + gdir.getStatus().code);
  }
  else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
    alert("Een parameter ontbreekt. Misschien was er geen vertrekpunt ingevoerd. Foutcode: " + gdir.getStatus().code);
  }
  else if (gdir.getStatus().code == G_GEO_BAD_KEY) {
    alert("De Google Maps sleutel is ongeldig of de gebruikte sleutel is niet geldig voor dit domein. Foutcode: " + gdir.getStatus().code);
  }
  else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
    alert("De aanvraag voor het plannen van een route is mislukt. Foutcode: " + gdir.getStatus().code);
  }
  else {
    alert("Er is iets misgegaan. Maar het is volstrekt onduidelijk WAT de oorzaak is!");
  }
}
// Einde Gdirections gedeelte.
  
window.onload = function() {
  mapInit();
  // Map centreren op Leegstra Woonrijk.
  //'53.26569099833812, 6.305068731307983
  //map.setCenter(new GLatLng(53.26569099833812, 6.305068731307983), 14, G_NORMAL_MAP);
  map.enableScrollWheelZoom();
  if(typeof addMarkers == 'function') { 
    addMarkers(map);
    centerMap();
  }
  //var poolMarker = new GMarker(new GLatLng(53.26569099833812, 6.305068731307983), poolIcon);
  //poolMarker.bindInfoWindowHtml('<div class="marker" style="width:300px;height:115px;display:block;"><span class=\x27titel\x27>Leegstra Woonrijk<\/span><div><i>Bezoekadres:<\/i><br/>Kievitsweg 10<br/>9843 HA Grijpskerk<br/>Telefoon: +31 (0)594-21 27 30<br/><\/div><span id=\x27toonbeschrijving\x27>Routebeschrijving: <a href=\x22javascript:void(null);\x22 onclick=\x22document.getElementById(\x27tbx_route_van\x27).value=\x27Kievitsweg 10 9843 HA Grijpskerk Nederland\x27;document.getElementById(\x27container-route-van\x27).style.display=\x27block\x27;document.getElementById(\x27route-straat\x27).focus();\x22>Hier naartoe<\/a><\/span><div class=\x27spacer\x27><\/div><div style=\x27width:300px;line-height:1px;height:1px;\x27>&nbsp;<\/div><\/div>');
  //map.addOverlay(poolMarker);

  // DMV een klik op google map, de coordinaten van die click achterhalen.
  //GEvent.addListener(map, 'click', function(overlay, point) {   if (point) {   document.write('You clicked at: ' + point); alert('You clicked at: ' + point);   }});
}
