// Grotendeels gemaakt door Terry, www.loungeroom.nl

var map; 
var mgr; 
var markers; 
markers = [];
var meIsLoaded;
meIsLoaded = false;
var center;
function initialize(lat,lon,mapid) {
	if (GBrowserIsCompatible()) {
		// map inladen
		map = new GMap2(document.getElementById(mapid));
		map.setMapType(G_PHYSICAL_MAP);
		
		// centreren
		center = new GLatLng(lat,lon);
		map.setCenter(center, 10);
		map.addMapType(G_PHYSICAL_MAP);
		map.removeMapType(G_SATELLITE_MAP);

		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);

		// controls
		map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0)));
		map.disableDoubleClickZoom();
		
		// forecast (dagen)
		Forecast.prototype = new GControl();
		map.addControl(new Forecast());

		// home button
		Buttons.prototype = new GControl();
		map.addControl(new Buttons());

		//map.disableDragging();
		
		// MARKERMANAGER
		var mgrOptions = { borderPadding: 50, maxZoom: 10 };
		mgr = new MarkerManager(map, mgrOptions);		
		
		// Luister naar markers
		GEvent.addListener(map, "click", function(overlay, point, latlng) {
			var id = "";
			if (overlay){ // marker clicked
				if (overlay instanceof GMarker) {
					GDownloadUrl("/ajax/forecast.php?plaats=" + overlay.id, function(data) {
						overlay.openInfoWindowHtml(data);   // open InfoWindow
					});
					//overlay.openInfoWindowHtml(overlay.id);   // open InfoWindow
				}
			} else if (point) {   // background clicked
			}
		});

		/*
		GEvent.addListener(map, "mousemove", function() {
			getObject('current').innerHTML = 
								"zoom: " + map.getZoom();
					;
		});
		*/
		hideStatus();
		
/* misschien later

        GEvent.addListener(map,"click", function(overlay,latlng) {     
			var myHtml = "Wilt u deze plaats als uw regio selecteren?<br /><a href='javascript:void(0);' onclick='javascript:setLoc(\""+latlng+"\");'><strong>Ja</strong></a><br /><a href='javascript:void(0);' onclick='map.closeInfoWindow();'><strong>Nee</strong></a>" ;
			map.openInfoWindow(latlng, myHtml);
        });
		*/

	}
}

function getCenter() {
	map.setCenter(center, 10);
}

function createMarker(id,lat,lon,symbol,type,arr,arrvar) {
	var point = new GLatLng(lat,lon); 

	var weerIcon = new GIcon(); 
	weerIcon.iconSize = new GSize(40, 43);
	weerIcon.iconAnchor = new GPoint(20, 22);
	weerIcon.infoWindowAnchor = new GPoint(10, 10);

	var tempIcon = new GIcon(); 
	tempIcon.iconSize = new GSize(50, 25);
	tempIcon.iconAnchor = new GPoint(-10, 40);

	if(type == 'weer') {
		weerIcon.shadow = "http://www.regioweer.nl/assets/symbols/png/shadow/"+symbol+".png";
		weerIcon.shadowSize = new GSize(45, 45);
		weerIcon.infoShadowAnchor = new GPoint(0, 0);				
		var Icon = new GIcon(weerIcon);
		Icon.image = "http://www.regioweer.nl/assets/symbols/png/"+symbol+".png";
	} else if(type == 'temp') {
		tempIcon.shadow = "http://www.regioweer.nl/assets/temperatuur/shadow.png";
		tempIcon.shadowSize = new GSize(50, 25);
		tempIcon.infoShadowAnchor = new GPoint(0, 0);				
		var Icon = new GIcon(tempIcon);
		Icon.image = "http://www.regioweer.nl/assets/temperatuur/"+symbol+".png";
	}
	
	// Set up our GMarkerOptions object
	markerOptions = { icon:Icon };
	var marker = new GMarker(point, markerOptions);
	marker.id = id;

	if(arr == "plaats") {
		arrPush("plaatsen",marker,arrvar);
	} else if(arr == "stad") {
		arrPush("stad",marker,arrvar);
	} else if(arr == "grotestad") {
		arrPush("grotestad",marker,arrvar);
	} else if(arr == "provincie") {
		arrPush("provincies",marker,arrvar);
	} else if(arr == "land") {
		arrPush("land",marker,arrvar);
	} else {
		arrPush("markers",marker,arrvar);
	}
	//return map.addOverlay(marker);
}
function arrPush(arr,mar,arrvar) {
	if(arr == "plaatsen") {
		if(arrvar == 0) {
			plaatsen_0.push(mar);
		} else if(arrvar == 1) {
			plaatsen_1.push(mar);
		} else if(arrvar == 2) {
			plaatsen_2.push(mar);
		} else if(arrvar == 3) {
			plaatsen_3.push(mar);
		} else if(arrvar == 4) {
			plaatsen_4.push(mar);
		}
	} else if(arr == "stad") {
		if(arrvar == 0) {
			steden_0.push(mar);
		} else if(arrvar == 1) {
			steden_1.push(mar);
		} else if(arrvar == 2) {
			steden_2.push(mar);
		} else if(arrvar == 3) {
			steden_3.push(mar);
		} else if(arrvar == 4) {
			steden_4.push(mar);
		}
	} else if(arr == "grotestad") {
		if(arrvar == 0) {
			grotesteden_0.push(mar);
		} else if(arrvar == 1) {
			grotesteden_1.push(mar);
		} else if(arrvar == 2) {
			grotesteden_2.push(mar);
		} else if(arrvar == 3) {
			grotesteden_3.push(mar);
		} else if(arrvar == 4) {
			grotesteden_4.push(mar);
		}
	} else if(arr == "provincies") {
		if(arrvar == 0) {
			provincies_0.push(mar);
		} else if(arrvar == 1) {
			provincies_1.push(mar);
		} else if(arrvar == 2) {
			provincies_2.push(mar);
		} else if(arrvar == 3) {
			provincies_3.push(mar);
		} else if(arrvar == 4) {
			provincies_4.push(mar);
		}
	} else if(arr == "land") {
		if(arrvar == 0) {
			land_0.push(mar);
		} else if(arrvar == 1) {
			land_1.push(mar);
		} else if(arrvar == 2) {
			land_2.push(mar);
		} else if(arrvar == 3) {
			land_3.push(mar);
		} else if(arrvar == 4) {
			land_4.push(mar);
		}
	} else {
		markers.push(mar);
	}
}

function showMarkers() {
	mgr.addMarkers(markers,10);
	mgr.refresh();
}

function showPlaatsen() {
	mgr.addMarkers(plaatsen_0,10);
	mgr.refresh();
}

function showSteden() {
	mgr.addMarkers(steden_0,9,9);
	mgr.refresh();
}

function showGroteSteden() {
	mgr.addMarkers(grotesteden_0,8,8);
	mgr.refresh();
}

function showProvincies() {
	mgr.addMarkers(provincies_0,7,7);
	mgr.refresh();
}

function showLand() {
	mgr.addMarkers(land_0,0,6);
	mgr.refresh();
}

function updateStatus(txt) {
	getObject('current').innerHTML = txt;
}

function hideStatus() {
	window.setTimeout("getObject('mapStatus').style.display = 'none'",500);
}

function showStatus() {
	getObject('mapStatus').style.display = '';
}

function loadFile(filename, filetype){
	if (filetype=="js"){ //if filename is a external JavaScript file
		var fileref=document.createElement('script');
		fileref.setAttribute("type","text/javascript");
		fileref.setAttribute("src", filename);
	}
	else if (filetype=="css"){ //if filename is an external CSS file
		var fileref=document.createElement("link");
		fileref.setAttribute("rel", "stylesheet");
		fileref.setAttribute("type", "text/css");
		fileref.setAttribute("href", filename);
	}
	if (typeof fileref!="undefined") {
		document.getElementsByTagName("head")[0].appendChild(fileref);
	}
}

var t;
function changeDay(day) {
	showStatus();
	var ident = frdc[day][1];
	meIsLoaded = false;
	loadFile("/assets/js/markers."+ident+".js","js");
	t = window.setInterval("doDay('"+day+"')",500);
	
}

function doDay(day) {
	if(meIsLoaded == true) {
		clearInterval(t);
		if(day == 0) {
			var loaded_plts = plaatsen_0;
			var loaded_stdn = steden_0;
			var loaded_gstdn = grotesteden_0;
			var loaded_prov = provincies_0;
			var loaded_land = land_0;
		} else if(day == 1) {
			var loaded_plts = plaatsen_1;
			var loaded_stdn = steden_1;
			var loaded_gstdn = grotesteden_1;
			var loaded_prov = provincies_1;
			var loaded_land = land_1;
		} else if(day == 2) {
			var loaded_plts = plaatsen_2;
			var loaded_stdn = steden_2;
			var loaded_gstdn = grotesteden_2;
			var loaded_prov = provincies_2;
			var loaded_land = land_2;
		} else if(day == 3) {
			var loaded_plts = plaatsen_3;
			var loaded_stdn = steden_3;
			var loaded_gstdn = grotesteden_3;
			var loaded_prov = provincies_3;
			var loaded_land = land_3;
		} else if(day == 4) {
			var loaded_plts = plaatsen_4;
			var loaded_stdn = steden_4;
			var loaded_gstdn = grotesteden_4;
			var loaded_prov = provincies_4;
			var loaded_land = land_4;
		}
		mgr.clearMarkers();
		//mgr.addMarkers(markers,10);
		mgr.addMarkers(loaded_plts,10);
		mgr.addMarkers(loaded_stdn,9,9);
		mgr.addMarkers(loaded_gstdn,8,8);
		mgr.addMarkers(loaded_prov,7,7);
		mgr.addMarkers(loaded_land,0,6);
		mgr.refresh();
		
		updateStatus('Weer voor '+ frdc[day][0]);
		
		hideStatus();
	} else {
		return false;	
	}
	
}
function Forecast() {

	Forecast.prototype.initialize = function(map) {
		var container = document.createElement("div");
			
		var f;
		for (f=0;f<frdc.length;f++) {
			var tekstDiv = document.createElement("a");
			this.setButtonStyle_(tekstDiv);
			container.appendChild(tekstDiv);
			tekstDiv.appendChild(document.createTextNode(frdc[f][0]));
			tekstDiv.href = 'javascript:changeDay("'+f+'");';
			tekstDiv.style.fontWeight = "bold";
		}
		
		map.getContainer().appendChild(container);
		return container;
	}
	
	Forecast.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 100));
	}
	
	Forecast.prototype.setButtonStyle_ = function(button) {
		button.style.textDecoration = "none";
		button.style.color = "#000000";
		button.style.display = 'block';
		button.style.backgroundColor = "white";
		button.style.font = "small Arial";
		button.style.border = "1px solid black";
		button.style.padding = "2px";
		button.style.marginBottom = "3px";
		button.style.textAlign = "center";
		button.style.width = "6em";
		button.style.cursor = "pointer";
	}

}

function Buttons() {

	Buttons.prototype.initialize = function(map) {
		var container = document.createElement("div");
		
		var centerDiv = document.createElement("a");
		this.setButtonStyle2_(centerDiv);
		centerDiv.href = 'javascript:getCenter();';
		centerDiv.style.marginTop = "20px";
		centerDiv.style.fontWeight = "bold";

		var centerImg = document.createElement("img");
		centerImg.src = "/assets/images/home_icon.png";
		centerImg.width = "32";
		centerImg.height = "32";
		centerImg.border = "0";
		centerImg.alt = "Terug naar de oorspronkelijke positie";
		
		centerDiv.appendChild(centerImg);
		container.appendChild(centerDiv);

		map.getContainer().appendChild(container);
		return container;
	}
	
	Buttons.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(7, 30));
	}
	
	Buttons.prototype.setButtonStyle2_ = function(button) {
		button.style.display = 'block';
		button.style.padding = "2px";
		button.style.marginBottom = "3px";
		button.style.width = "6em";
		button.style.textAlign = "center";
		button.style.cursor = "pointer";
	}

}
