// JavaScript Document

//declaratie
var adresArray = [];
var marker = [];
var campusLat;
var campusLng;
var campusStraat;
var campusPostcode;
var campusGemeente;
var campusNaam;
var infoWindow;
var map;
var bounds;

//ophalen van de gegevens uit de database door middel van jQuery AJAX
function toonKot() {
	//leegmaken van de adresArray (als de gebruiker een andere campus selecteert
	adresArray = [];
	//JQuery AJAX
	$.ajax({
		type: "GET",
		url: "toonKot.asp",
		data: "campusNaam=" + $('input[name=campus]:checked').val(),
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(response) {
			var kot = (typeof response.kot) == 'string' ? eval('(' + response.kot + ')') : response.kot;

			for (i = 0, il=kot.length; i<il; i++)
			{
				//adresArray aanmaken voor elk record in de JSON array
				maakAdresArray(kot, i);
			}
			
			//ophalen van de variabelen voor de campus
			campusLat = kot[0].LatKHK;
			campusLng = kot[0].LngKHK;
			campusStraat = kot[0].Straat;
			campusPostcode = kot[0].Postcode;
			campusGemeente = kot[0].Gemeente;
			campusNaam = kot[0].CampusNaam;
			
			//aanmaken van de kaart en de adressen tonen in een lijst naast de kaart
			toonAdressen();
			maakKaart();
			toonOfVerbergAdres(adresArray, $("#huidigePrijsPerMaand").val(), $("#huidigeAfstandTotCampus").val(), $("#huidigAantalKS").val());
			// Verberg preloader
			//$('#loader').hide();
		}
	});
}
//maken van de adresArray
function maakAdresArray(kot, teller) {
	adresArray[i] = {'htmlBox' : kot[i].HtmlBox, 'KotNummer' : kot[i].KotNummer, 'aantalKamers' : kot[i].AantalKamers, 'kamersVrij' : kot[i].KamersVrij, 'prijsKamerMin' : kot[i].PrijsKamerMin, 'prijsKamerMax' : kot[i].PrijsKamerMax, 'aantalStudios' : kot[i].AantalStudios, 'studiosVrij' : kot[i].StudiosVrij, 'prijsStudioMin' : kot[i].PrijsStudioMin, 'prijsStudioMax' : kot[i].PrijsStudioMax, 'lat' : kot[i].Lat, 'lng' : kot[i].Lng, 'afstandTotHIK' : kot[i].AfstandTotHIK, 'toegankelijkAndersvaliden' : kot[i].ToegankelijkAndersvaliden, 'adreslijst' : kot[i].Adreslijst, 'toonAdres' : 'true', 'marker' : kot[i].Marker};
}

//tonen van de adressen in een lijst
function toonAdressen() {
	//declaratie
	var teller = 0;
	
	//adressenlijst leegmaken
	$('#adreslijst').empty();
	for (i = 0, il=adresArray.length; i<il; i++)
	{
		if (adresArray[i].toonAdres == 'true')
		{
			//adressenLijst[i] = adresArray[i].adreslijst;
			$('#adreslijst').append(adresArray[i].adreslijst);
			
			//verhogen van de teller
			teller ++;
		}
	}
	
	//weergeven hoeveel studentenverblijven er zijn gevonden
	$('#aantalStudentenverblijven').empty();
	$('#aantalStudentenverblijven').append('<p>Studentenverblijven gevonden: <strong><span class="bordeaux">' + teller + '</span></strong></p>');

	//als de teller 0 is de gepaste boodschap weergeven
	if (teller == 0) {
		$('#adreslijst').append('<p><br /><span class="letOp">Helaas, geen studentenverblijven voldoen aan uw zoekcriteria.</span></p>');
	}
}

//maken van google maps
function maakKaart() {
	//alert("maak kaart");
	marker.length = 0;
	var myOptions = {
    	zoom: 10,
    	center: new google.maps.LatLng(campusLat, campusLng),
    	mapTypeId: google.maps.MapTypeId.ROADMAP
  	}
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	infoWindow = new google.maps.InfoWindow;
	
	var bounds = new google.maps.LatLngBounds();
	var shadow = new google.maps.MarkerImage('imagesGoogleMaps/markerShadow.png',
		new google.maps.Size(22,20),
		new google.maps.Point(0,20),
		new google.maps.Point(5,1)
	);
	
	// Toon camus marker
	var campusImage = new google.maps.MarkerImage('imagesGoogleMaps/khk.png',
		new google.maps.Size(36,40),
		new google.maps.Point(0,0),
		new google.maps.Point(18,40)
	);
	var campusLatLng = new google.maps.LatLng(campusLat, campusLng);
	campusMarker = new google.maps.Marker({
        position: campusLatLng,
        map: map,
		title: campusNaam,
        icon: campusImage
    });
	var html = '<p><strong>Campus ' + campusNaam +'</strong></p><p>' + campusStraat + '<br />' + campusPostcode + ' ' + campusGemeente + '</p>';
	bindInfoWindow(campusMarker, map, infoWindow, html);
	bounds.extend(campusLatLng);
    map.fitBounds(bounds);
	
	// Toon kot markers
	for (i=0; i<adresArray.length; i++) {
		if (adresArray[i].toonAdres == 'true') {
			//maken van icon voor het kot
			var image = new google.maps.MarkerImage(adresArray[i].marker);
			var myLatLng = new google.maps.LatLng(adresArray[i].lat, adresArray[i].lng);
			marker[i] = new google.maps.Marker({
        		position: myLatLng,
        		map: map,
         		title: "Kotnummer: " + adresArray[i].KotNummer,
       			//shape: shape,
        		shadow: shadow,
        		icon: image
    		});
		}
		var html = adresArray[i].htmlBox;
		bindInfoWindow(marker[i], map, infoWindow, html);
		bounds.extend(myLatLng);
    	map.fitBounds(bounds);
	}
	//alert(bounds.getNorthEast());
}

function bindInfoWindow(marker,map,infoWindow,html) {
	google.maps.event.addListener(marker, 'click', function() {
		infoWindow.setContent(html);
		infoWindow.open(map, marker);
  	});
}

//Klik op een adres in de adressenlijst -> toon infowindow op de map
function gaNaarAdres(i) {
	google.maps.event.trigger(marker[i], 'click');
}

//tonen of verbergen van de adressen aan de hand van de voorkeuren van de gebruiker
function toonOfVerbergAdres(adresArray, prijsPerMaand, afstand, aantalKS) {
	//nagaan studio's en kamers aagevinkt is
	var studio;
	var kamer;
	var toegankelijkAndersvaliden;
	var weergaveVrijeKamers;
	var weergaveVrijeStudios;
	var arrayLengte = (adresArray.length -1);
	infoWindow.close();
	//kijken of de gebruiker een kamer of een studio zoekt
	if ($('#studio').attr('checked') && $('#kamer').attr('checked')){
		studio = 0;
		kamer = 0;
	} else {
		if ($('#studio').attr('checked')) {
 			studio = 1;
		} else {
			studio = 0;
		}
		if ($('#kamer').attr('checked')){
 			kamer = 1;
		} else {
			kamer = 0;
		}
	}
	//kijken of het kot toegankelijk moet zijn voor andersvaliden
	if ($('#toegankelijkJa').attr('checked')) {
		toegankelijkAndersvaliden = 1;
	} else {
		toegankelijkAndersvaliden = 0;
	}
	//nagaan of je alle studentenverblijven moet tonen of enkel de vrije
	if ($('#vrijeAdressen').attr('checked')){
		if (kamer == 1){
			weergaveVrijeKamers = 1;
			weergaveVrijeStudios = 99;
		} else {
			if (studio == 1){
				weergaveVrijeKamers = 99;
				weergaveVrijeStudios = 1;
			} else {
				weergaveVrijeKamers = 1;
				weergaveVrijeStudios = 1;
			}
		}
	} else {
		weergaveVrijeKamers = 0;
		weergaveVrijeStudios = 0;
	}
	
	//toonAdres op false of true zetten aan de hand van de voorkeur van de gebruiker
	for (i = 0, il=adresArray.length; i<il; i++) {
		if(adresArray[i].prijsStudioMin <= prijsPerMaand && adresArray[i].prijsStudioMin >= 0 && adresArray[i].prijsKamerMin <= prijsPerMaand && adresArray[i].prijsKamerMin >= 0 && adresArray[i].aantalStudios >= studio && adresArray[i].aantalKamers >= kamer && adresArray[i].afstandTotHIK <= afstand && (parseInt(adresArray[i].aantalKamers) + parseInt(adresArray[i].aantalStudios)) <= aantalKS  && adresArray[i].toegankelijkAndersvaliden >= toegankelijkAndersvaliden && (adresArray[i].kamersVrij >= weergaveVrijeKamers || adresArray[i].studiosVrij >= weergaveVrijeStudios))
		{
			adresArray[i].toonAdres = "true";
		} else {
			adresArray[i].toonAdres = "false";
		}
	}
	//leeg maken van de adressenlijst
	toonAdressen();
	toonVerbergMarker();
}
//tonen of verbergen van de markers op de map
function toonVerbergMarker() {

//function toonVerbergMarker(adresArray) {
	//bounds = new GLatLngBounds(); //Maak een leeg GLatLngBounds object
	var bounds = new google.maps.LatLngBounds();
	var campusLatLng = new google.maps.LatLng(campusLat, campusLng);
	bounds.extend(campusLatLng);
	//marker[0].setVisible(false);
	//map.marker[i].setVisible(false);
	//alert(adresArray.length);
	//alert(adresArray[8].toonAdres);
	//marker[1].setVisible(false);
	//marker[0].setVisible(false);
	for (i=0; i<adresArray.length; i++) {
	//for (i = 0, il=adresArray.length; i<il; i++) {
		if (adresArray[i].toonAdres == 'true') {
			marker[i].setVisible(true);
			var myLatLng = new google.maps.LatLng(adresArray[i].lat, adresArray[i].lng);
			bounds.extend(myLatLng);
    		map.fitBounds(bounds);
			//bounds.extend(new GLatLng(adresArray[i].lat, adresArray[i].lng));
			//marker[i].show();
		}else{
			marker[i].setVisible(false);
			//marker[i].hide();
		}
	}
		//alert(bounds.getNorthEast());

	//map.fitBounds(bounds);
	
	//map zo centreren en inzoomen dat alle markers worden weergegeven op de kaart
//	bounds.extend(new GLatLng(campusLat, campusLng)); //marker van de KHK toevoegen aan bounds
//	aantal = 0;
//	for (i = 0, il=adresArray.length; i<il; i++) {
//		if (adresArray[i].toonAdres == 'true') 
//		{
//			aantal += 1;
//		}
//	}
//	//alert(aantal);
//	if (aantal > 0) {
//		map.setZoom(map.getBoundsZoomLevel(bounds));
//	} else {
//		map.setZoom(15);
//	}
//	map.setCenter(bounds.getCenter());
}


