var ITEM_TYPE_BEDRIJFSPROFIEL = 1;
var ITEM_TYPE_VACATURE = 2;
var ITEM_TYPE_INITIATIEVEN = 3;
var ITEM_TYPE_KANDIDAAT = 4;

var map;
var geocoder;

var zoomlevelMapSmall = 9;
var zoomlevelMapLargeRegio = 9;
var zoomlevelMapLarge = 12;
var isRouleerend = false;

var infowindows = new Array();
var bedrijfsprofielen = new Array();
var vacatures = new  Array();
var initiatieven = new Array();
var kandidaten = new Array();
var markers = new Array();

var timer;
var currentWindow = 0;

function StartRouleren() {
	isRouleerend = true;

	//ShowNextMarker();	
	

	if (timer) {
		clearTimeout(timer);
	}
	timer = setTimeout("ShowNextMarker()", 1000);	
}

function ShowNextMarker() {
	if (isRouleerend) {
		var ib = infowindows[currentWindow];
		var marker = markers[currentWindow];
		
		
		if (ib) {
			closeInfoWindows();
			map.setCenter(marker.getPosition());
			marker.setVisible(false);
			ib.open(map, marker);
		}
	
		currentWindow++;
		if (infowindows.length <= currentWindow) {
			currentWindow = 0;	
		}
	
		if (timer) {
			clearTimeout(timer);
		}
		timer = setTimeout("ShowNextMarker()", 6000);	
	}
}

function StopRouleren() {
	isRouleerend = false;
}

function initialize(zoom) 
{     
	geocoder = new google.maps.Geocoder();

	var latlng = new google.maps.LatLng(52.5205869, 4.788473999999951);      
	var myOptions = {       
						zoom: zoom,       
			       		center: latlng,
						panControl: true,
						zoomControl: true,  
						mapTypeControl: true,  
						scaleControl: true,  
						streetViewControl: false,  
						overviewMapControl: false,
						mapTypeId: google.maps.MapTypeId.ROADMAP     
					};
	
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);  
	
	
}  

function CenterMap(adres) {
	AddPlaatsMarker(adres,false,  0);	
}

function AddDetailMarker(lat, lng, image, content, itemtype) {
	
    var location =  new google.maps.LatLng(lat, lng);     
	map.setCenter(location);        
	  
	var marker = new google.maps.Marker({            
										map: map,            
										position: location,
										icon: image								
										});
	
	switch	(itemtype)
	{
		case ITEM_TYPE_BEDRIJFSPROFIEL:
			bedrijfsprofielen[bedrijfsprofielen.length] = marker;
			marker.setVisible(toon_bedrijfsprofiel());
			marker.setZIndex(4);
			break;
		case ITEM_TYPE_VACATURE:
			vacatures[vacatures.length] = marker;
			marker.setVisible(toon_vacature());	
			marker.setZIndex(3);									
			break;
		case ITEM_TYPE_INITIATIEVEN:
			initiatieven[initiatieven.length] = marker;
			marker.setVisible(toon_initiatief());									
			marker.setZIndex(2);									
			break;
		case ITEM_TYPE_KANDIDAAT:
			kandidaten[kandidaten.length] = marker;
			marker.setVisible(toon_kandidaat());																		
			marker.setZIndex(1);
			google.maps.event.addListener(marker, "click", function (e) {
							window.location.href = kandidaat_url;								
							});
			break;
	}	
	
	var boxText = document.createElement("div"); 

	boxText.innerHTML = content;
	boxText.style.cssText = "background-image: url('images/plaats-popup.png'); width: 160px; height:164px;";  
	
	
	var myOptions = {                 
		content: boxText, 
		disableAutoPan: false,
		maxWidth: 0,
		pixelOffset: new google.maps.Size(-17, -162),
		zIndex: null,
		boxStyle: 
			{
				//background: "url('tipbox.gif') no-repeat red",
				//opacity: 1,
				//color: "red",
				//width: "",
//										background-color: "red"
			},
		closeBoxMargin: "9px 9px 9px 9px",
		closeBoxURL: "images/plaats-popup-close.png",
		infoBoxClearance: new google.maps.Size(1, 1),
		isHidden: false,
		pane: "floatPane",
		enableEventPropagation: false 
		 
	};

	var ib = new InfoBox(myOptions);  
	markers[markers.length] = marker;
	infowindows[infowindows.length] = ib;
	
	if(boxText.innerHTML != '') {
		google.maps.event.addListener(marker, "click", function (e) {
			isRouleerend = false;
			for(var i =0; i < infowindows.length; i++) {
				onFilterChanged();
				infowindows[i].close();	
			}
			this.setVisible(false);													 
			ib.open(map, this);
		});
		google.maps.event.addListener(ib, "closeclick", function (e) {
								marker.setVisible(true);
							});	
	}						
							    
							
						
					 
					

	
}

function AddKandidaat(lat,lng, naam ) {
	var image = 'images/kandidaat-marker.png'; 	
	var content = "<div class='item_popup_header'><img src='images/kandidaat-icoon.png' align='absMiddle'/>kandidaat</div>" +
				  "<div class='item_popup_titel'>" + naam + "</div>";
  				 // "<div class='item_popup_link'>Route plannen</div>" +
  				  //"<div class='item_popup_link'>Bekijk alle kandidaten</div>";
	AddDetailMarker(lat,lng, image, '', ITEM_TYPE_KANDIDAAT);	
}

function AddInitiatief(lat,lng, naam, url ) {
	var image = 'images/initiatief-marker.png'; 	
	var content = "<div class='item_popup_header'><img src='images/initiatief-icoon.png' align='absMiddle'/>initiatief</div>" +
				  "<div class='item_popup_titel'><a href='" + initiatief_url + url + "'>" + naam + "</a></div>" + 
  				  //"<div class='item_popup_link'>Route plannen</div>" +
  				  "<div class='item_popup_link'><a href='" + initiatief_url + "'>Bekijk alle initiatieven</a></div>";
				  
	AddDetailMarker(lat,lng, image, content, ITEM_TYPE_INITIATIEVEN);	
}

function AddVacature(lat,lng, naam, url ) {
	var image = 'images/vacature-marker.png'; 	
	var content = "<div class='item_popup_header'><img src='images/vacature-icoon.png' align='absMiddle'/>vacature</div>" +
				  "<div class='item_popup_titel'><a href='" + vacature_url + url + "'>" + naam + "</a></div>" + 
  				  //"<div class='item_popup_link'>Route plannen</div>" +
  				  "<div class='item_popup_link'><a href='" + vacature_url + "'>Bekijk alle vacatures</a></div>";

	
	AddDetailMarker(lat,lng, image, content, ITEM_TYPE_VACATURE);	
}

function AddBedrijfsProfiel(lat,lng, naam, url, vacature_counter, banen_counter, kandidaat_counter, initiatieven_counter) {
	if (naam != "") {
		var image = 'images/bedrijfsprofiel-marker.png'; 	
		var content = "<div class='item_popup_header'><img src='images/bedrijfsprofiel-icoon.png' align='absMiddle'/>bedrijfsprofiel</div>" +				  
					  "<div class='item_popup_titel'><a href='" + bedrijfsprofiel_url + url + "'>" + naam + "</a></div>"; 
					 
		if (vacature_counter > 0) {				  
			var vacature_tekst = (vacature_counter > 1) ? "vacatures" : "vacature";
			content = content + "<div class='item_popup_items'>" + vacature_counter + " " +  vacature_tekst + "</div>";
		}
		
		if (banen_counter > 0) {	
			var banen_tekst = (banen_counter > 1) ? "banen" : "baan";
			content = content + "<div class='item_popup_items'>" + banen_counter + " " + banen_tekst +"</div>";
		}
		
		if (kandidaat_counter > 0) {	
			var kandidaten_tekst = (kandidaat_counter > 1) ? "kandidaten" : "kandidaat";	
			content = content + "<div class='item_popup_items'>" + kandidaat_counter + " " + kandidaten_tekst + "</div>";
		}
		
		if (initiatieven_counter > 0) {	
			var initiatieven_tekst = (initiatieven_counter > 1) ? "initiatieven" : "initiatief";	
			content = content + "<div class='item_popup_items'>" + initiatieven_counter + " " + initiatieven_tekst + "</div>";
		}
		
		content = content + "<div class='item_popup_items'>&nbsp;</div>";			  
		content = content + "<div class='item_popup_link'><a href='" + bedrijfsprofiel_url + "'>Bekijk alle bedrijfsprofielen</a></div>";	
		AddDetailMarker(lat,lng, image, content, ITEM_TYPE_BEDRIJFSPROFIEL);	
	}
}

function AddBaan(lat,lng ) {
	var image = 'images/baan-marker.png'; 	
	
	AddDetailMarker(lat,lng, image, "");	
}

function AddPlaatsMarker(adres, placemarker, vacaturecounter, banencounter, werkgevercounter, referentiecounter, initiatiefcounter, plaats_id) {    
	var image = 'images/plaats-marker.png'; 
  
	geocoder.geocode( { 'address': adres + ', Noord Holland'}, 
				 function(results, status) {      
					if (status == google.maps.GeocoderStatus.OK) {        
					 	map.setCenter(results[0].geometry.location);        
						if (placemarker) {
							var marker = new google.maps.Marker({            
																map: map,            
																position: results[0].geometry.location,
																icon: image								
																});
							markers[markers.length] = marker;
							var boxText = document.createElement("div"); 
							 
							
							 
							var html = "<div class='plaats_naam' onmouseover=\"StopRouleren();\"><a href='" + maplarge_url + "?id=" + plaats_id + "&vac=1&ban=1&bed=1&kan=1&ini=1'>" + adres + "</a></div>";
							if (vacaturecounter > 0) {	
								var vacature_tekst = (vacaturecounter > 1) ? "vacatures" : "vacature";
								html = html + "<div class='plaats_item' onmouseover=\"StopRouleren();\"><div class='plaats_item_counter'><a href='" + maplarge_url + "?id=" + plaats_id + "&vac=1'>" + vacaturecounter + "</a></div><div class='plaats_item_naam'><a href='" + maplarge_url + "?id=" + plaats_id + "&vac=1'>" + vacature_tekst + "</a></div></div> ";
							}
							if (banencounter > 0) {	
								var banen_tekst = (banencounter > 1) ? "banen" : "baan";
								html = html + "<div class='plaats_item' onmouseover=\"StopRouleren();\"><div class='plaats_item_counter'><a href='" + maplarge_url + "?id=" + plaats_id + "&ban=1'>" + banencounter + "</a></div><div class='plaats_item_naam'><a href='" + maplarge_url + "?id=" + plaats_id + "&ban=1'>" + banen_tekst + "</a></div></div> ";
							}
							if (werkgevercounter > 0) {
								var werkgevers_tekst = (werkgevercounter > 1) ? "werkgevers" : "werkgever";
								html = html + "<div class='plaats_item' onmouseover=\"StopRouleren();\"><div class='plaats_item_counter'><a href='" + maplarge_url + "?id=" + plaats_id + "&bed=1'>" + werkgevercounter + "</a></div><div class='plaats_item_naam'><a href='" + maplarge_url + "?id=" + plaats_id + "&bed=1'>" + werkgevers_tekst + "</a></div></div> ";
							}
							if (referentiecounter > 0) {
								var kandidaten_tekst = (referentiecounter > 1) ? "kandidaten" : "kandidaat";
								html = html + "<div class='plaats_item onmouseover=\"StopRouleren();\"'><div class='plaats_item_counter'><a href='" + maplarge_url + "?id=" + plaats_id + "&kan=1'>" + referentiecounter + "</a></div><div class='plaats_item_naam'><a href='" + maplarge_url + "?id=" + plaats_id + "&kan=1'>" + kandidaten_tekst + "</a></div></div> ";
							}
							if (initiatiefcounter > 0) {
								var initiatieven_tekst = (initiatiefcounter > 1) ? "initiatieven" : "initiatief";	
							
								html = html + "<div class='plaats_item' onmouseover=\"StopRouleren();\"><div class='plaats_item_counter'><a href='" + maplarge_url + "?id=" + plaats_id + "&ini=1'>" + initiatiefcounter + "</a></div><div class='plaats_item_naam'><a href='" + maplarge_url + "?id=" + plaats_id + "&ini=1'>" + initiatieven_tekst + "</a></div></div> ";
							} 
							boxText.innerHTML = html;	
							boxText.style.cssText = "background-image: url('images/plaats-popup.png'); width: 139px; height:148px; padding-top:16px; padding-left: 21px; ";  
							
							
							var myOptions = {                 
								content: boxText, 
								disableAutoPan: false,
								maxWidth: 0,
								pixelOffset: new google.maps.Size(-17, -162),
								zIndex: null,
								boxStyle: 
									{
										//background: "url('tipbox.gif') no-repeat red",
										//opacity: 1,
										//color: "red",
										//width: "",
//										background-color: "red"
									},
								closeBoxMargin: "9px 9px 9px 9px",
								closeBoxURL: "images/plaats-popup-close.png",
								infoBoxClearance: new google.maps.Size(1, 1),
								isHidden: false,
								pane: "floatPane",
								enableEventPropagation: false,
								position:  results[0].geometry.location
							};

							var ib = new InfoBox(myOptions);  
							infowindows[infowindows.length] = ib;

							google.maps.event.addListener(marker, "click", function (e) {
								isRouleerend = false;																					 
								
								closeInfoWindows();
								this.setVisible(false);													 
								ib.open(map, this);
							});	
							
							google.maps.event.addListener(ib, "closeclick", function (e) {
								marker.setVisible(true);
							});	    
							//ib.open(map, marker);
						}
					} else {        
					//alert("Geocode was not successful for the following reason: " + status);      
					}    
					});  
}

function closeInfoWindows() {
	for(var i =0; i < infowindows.length; i++) {
		markers[i].setVisible(true);
		infowindows[i].close();	
	}
}

function toon_bedrijfsprofiel () {
	return document.getElementById('chkBedrijfsprofielen').checked;	
}

function toon_initiatief() { 
	return document.getElementById('chkInitiatieven').checked;	
}

function toon_vacature () {
	return document.getElementById('chkVacatures').checked;	
}

function toon_kandidaat() {
	return document.getElementById('chkKandidaten').checked;		
}

function onFilterChanged() {
	closeInfoWindows();
		
	for	(var i = 0; i < initiatieven.length; i++) {
		initiatieven[i].setVisible(toon_initiatief());
		initiatieven[i].setZIndex(3);
	}
	
	for	(var i = 0; i < vacatures.length; i++) {
		vacatures[i].setVisible(toon_vacature());
		vacatures[i].setZIndex(2);	
	}
	
	for	(var i = 0; i < kandidaten.length; i++) {
		kandidaten[i].setVisible(toon_kandidaat());
		kandidaten[i].setZIndex(1);		
	}
	
	for	(var i = 0; i < bedrijfsprofielen.length; i++) {
		bedrijfsprofielen[i].setVisible(toon_bedrijfsprofiel());
		bedrijfsprofielen[i].setZIndex(4);
	}
}
