/*-------------------------------------------------------------------
	GLOBAL VARIABLES
-------------------------------------------------------------------*/

	// googlemaps vars
	var startZoom = 7; // zoom 7 is Nederland helemaal in beeld.
	var startType = 1; // 0 is kaart, 1 is satelliet en 2 is hybride
	var map = '';
	var icon = '';
	var iconPlaced = 0;

	//slider vars
	var activeSlider=-1;
	var slider=new Array();
	slider[1]=new Object();
	slider[1].min=1;
	slider[1].max=19;
	slider[1].val=7;
	slider[1].onchange=setZoomLevel;

/*-------------------------------------------------------------------
	ONLOAD SCRIPTS
-------------------------------------------------------------------*/

	addEvent(window, 'load', initMap);
	addEvent(window, 'unload', GUnload);
	addEvent(window, 'load', attachSliderEvents);
	addEvent(document, 'mousemove', sliderMouseMove);


/*-------------------------------------------------------------------
	BASIC SCRIPTS - Let op! Deze niet dubbel plaatsen
-------------------------------------------------------------------*/

	function $() {
		var elements = new Array();
		for (var i=0; i<arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') {
				element = document.getElementById(element);
			}
			if (arguments.length == 1) {
				return element;
			}
			elements.push(element);
		}
		return elements;
	}

	function addEvent(obj, evType, fn) {
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	}


/*-------------------------------------------------------------------
	SLIDER Trigger
-------------------------------------------------------------------*/

	function setZoomLevel(val){

		if (map.getZoom() != parseInt(val)) {
			map.setZoom(parseInt(val));
		}

		if ((map.getZoom() < 10) && (iconPlaced == 1))  {
			map.clearOverlays();
			iconPlaced = 0;
		}

		if ((map.getZoom() > 10) && (iconPlaced == 0)) {

			// Het eigen BELLFIRES Icoontje
			icon = new GIcon();
			icon.image = "./marker.png";
			icon.shadow = "./marker_shadow.png";
			icon.iconSize = new GSize(24, 30);
			icon.shadowSize = new GSize(38, 30);
			icon.iconAnchor = new GPoint(6, 20);
			icon.infoWindowAnchor = new GPoint(5, 1);

			plaatsOverlays();
			iconPlaced = 1;
		}
	}

/*-------------------------------------------------------------------
	Google Maps gedeelte
-------------------------------------------------------------------*/

	// functie om de kaart te initialiseren
	function initMap(){
		if (GBrowserIsCompatible()) {
			// Initieer de kaar zelf
			map = new GMap2($("map"));
			map.setCenter(new GLatLng(52.148552, 5.284797), startZoom);
			map.setMapType(map.getMapTypes()[startType]);
		}
	}

	// functie om de kaart te resetten
	function resetMap(){
		map.closeInfoWindow();
		if (map.getCurrentMapType() != map.getMapTypes()[startType])
			setMapType(startType);
		if (map.getZoom() != startZoom) {
			map.setZoom(startZoom);
			slider[1].val = startZoom;
			attachSliderEvents();
		}
		map.panTo(new GLatLng(51.9, 4.8));
	}

	// functie om filialen aan te maken
	function maakFiliaal(lon, lat, zoom, filiaal){
		var point = new GLatLng(lon, lat);
		var marker = new GMarker(point, icon);
		var html = '<div class="infoWindow">' + filiaal;
		html += '<small><a href="#" onclick="zoomFiliaal(this, ' + lon + ', ' + lat + ', ' + zoom + ');">Bekijk van dichtbij</a></small></div>';
		GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
		map.addOverlay(marker);
	}


	// Functie om op filialen in en uit te zoomen
	function zoomFiliaal(obj, lon, lat, zoom){
		//if (map.getZoom() < zoom) {
			map.setZoom(zoom);
			map.panTo(new GLatLng(lon, lat));
			slider[1].val = zoom;
			attachSliderEvents();
		//}
	}

	function addRoute(kleur, points, levels) {
		var encodedPolyline = new GPolyline.fromEncoded({
			color: '#' + kleur,
			weight: 4,
			points: points,
			levels: levels,
			zoomFactor: 32,
			numLevels: 4
		});
		map.addOverlay(encodedPolyline);
	}

	function setMapType(t){
		$('butKaart').className = 'typeBut';
		$('butSat').className = 'typeBut';
		$('butHyb').className = 'typeBut';

		if (t == 0)
			$('butKaart').className = 'activeBut';
		else if (t == 1)
			$('butSat').className = 'activeBut';
		else
			$('butHyb').className = 'activeBut';

		map.setMapType(map.getMapTypes()[t]);
	}

	function zoomKaartIn(){
		map.zoomIn();
		slider[1].val = map.getZoom();
		attachSliderEvents();
	}

	function zoomKaartUit(){
		if (map.getZoom() > startZoom) {
			map.zoomOut();
			slider[1].val = map.getZoom();
			attachSliderEvents();
		}
	}


