
var agiszorggids = function() {
	var maxtal = 25;
	var straal = 10;
	var map;
	var config = {
	}
	
	var init = function() {
	if (jQuery('#zorggids').length > 0)
	{
		/***********************************************************
		 ******    functions voor lijst & detail pagina    *********
		 ***********************************************************/

	  	/*********************************************
 		*          Add markers to the map
 		*********************************************/
		function setMarkers(map, zorgverleners) {
			var count;	

			var infowindow = new google.maps.InfoWindow({});	

			function makeInfoWindow(marker, content){
  				// google.maps.event.addListener(marker, 'mouseover', function () 
  				google.maps.event.addListener(marker, 'click', function () {
 	   				infowindow.setContent(content);
    					infowindow.open(map, marker);
  				});
			} 
		
  			for (var i = 0; i < zorgverleners.length; i++) {
    				var zorgverlener = zorgverleners[i];
				if (!zorgverlener) {continue;}
    				var markerLatLng = new google.maps.LatLng(zorgverlener[1], zorgverlener[2]);
				var content = zorgverlener[3];
    				var marker = new google.maps.Marker({
					icon: contextPath + "/styles/default/images/icons/" + zorgverlener[4] + ".png",
					// shadow: contextPath + "/styles/default/images/icons/shadow.png",
        				position: markerLatLng,
        				map: map,
       					title: zorgverlener[5]
    				});
				makeInfoWindow(marker, content);
  			}
		}

		function initializeMap() {
			var centerx = jQuery(".centerx").attr("value");
			var centery = jQuery(".centery").attr("value");
			var postcode = jQuery(".postcode").attr("value");
			var mapCenter;
			if ((!centerx || !centery) && postcode) {
				geocoder = new google.maps.Geocoder();
    				geocoder.geocode(
					{ 'address': postcode + ' ' + 'NL'},
					function(results, status) {
      						if (status == google.maps.GeocoderStatus.OK) {
    							mapCenterResult = results[0].geometry.location;
							mapCenter = mapCenterResult;
							createMapSingleMarker(mapCenter);
      						} else {
        						alert("Locatie bepaling mislukt");
      						}
    					}
				);
			}
			else if (centerx && centery) {
    				mapCenter = new google.maps.LatLng(parseFloat(centerx), parseFloat(centery));
				createMap(mapCenter);
			}
			else {
				// verberg map
				jQuery('.locatie').hide();
			}
		}

		// deze wordt aangeroepen wanneer er een detail pagina wordt
		// getoond vanuit de SEO pagina's
		function createMapSingleMarker(mapCenter) {
			var zoomlevel = jQuery(".zoomlevel").attr("value");
   			var mapOptions = {
      				center: mapCenter,
				zoom: parseInt(zoomlevel),
      				mapTypeId: google.maps.MapTypeId.ROADMAP,
		    		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
				navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
				scaleControl: true
    			}

     			map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

			var infowindow = new google.maps.InfoWindow({});	

			function makeInfoWindow(marker, content){
  				google.maps.event.addListener(marker, 'click', function () {
 	   				infowindow.setContent(content);
    					infowindow.open(map, marker);
  				});
			} 
		
    				var markerLatLng = new google.maps.LatLng(mapCenter);
    				var marker = new google.maps.Marker({
					icon: contextPath + "/styles/default/images/icons/hier.png",
					shadow: contextPath + "/styles/default/images/icons/shadow.png",
        				position: mapCenter,
        				map: map
    				});
				makeInfoWindow(marker, '<strong>' + jQuery(".zorgverlenernaam").text() + '</strong>');
		}


		function createMap(mapCenter) {
			var geoxlo = jQuery(".geoxlo").attr("value");
			var geoylo = jQuery(".geoylo").attr("value");
			var geoxrb = jQuery(".geoxrb").attr("value");
			var geoyrb = jQuery(".geoyrb").attr("value");
			var zoomlevel = jQuery(".zoomlevel").attr("value");

    			var mapOptions = {
      				center: mapCenter,
				zoom: parseInt(zoomlevel),
      				mapTypeId: google.maps.MapTypeId.ROADMAP,
		    		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
				navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
				scaleControl: true
    			}

     			map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

			if (geoxlo && geoylo && geoxrb && geoyrb) {
				var lo = new google.maps.LatLng(parseFloat(geoxlo), parseFloat(geoylo));
				var rb = new google.maps.LatLng(parseFloat(geoxrb), parseFloat(geoyrb));
				var mapBounds = new google.maps.LatLngBounds(lo,rb);
				map.fitBounds(mapBounds);
			}

			if (zorgverleners) {
				setMarkers(map, zorgverleners);
			}
		}

		 /**************** EINDE functions voor lijst & detail pagina *****************/


		/*********************************************************************************************/
		/*********************************************************************************************/
		/********************************      ZOEK PAGINA (search.jsp)  *****************************/
		/*********************************************************************************************/
		/*********************************************************************************************/

		if (jQuery('.zoeken').length > 0)
		{
			jQuery('.accordion').accordion({autoHeight: false});

			/***********************************************************
		 	* Toon/verberg veel gestelde vragen
		 	***********************************************************/
			jQuery(".toelichtingsscherm").hide();

			jQuery(".showToelichting").live("click", function(){
				jQuery(".toelichtingsscherm").show();
				jQuery(".showToelichting a").text("Sluit veel gestelde vragen");
				jQuery(".showToelichting").addClass("hideToelichting");
				jQuery(".showToelichting").removeClass("showToelichting");
			});

			jQuery(".hideToelichting").live("click", function(){
				jQuery(".toelichtingsscherm").hide();
				jQuery(".hideToelichting a").text("Veel gestelde vragen over de Zorggids");
				jQuery(".hideToelichting").addClass("showToelichting");
				jQuery(".hideToelichting").removeClass("hideToelichting");
			});

			/***********************************************************
		 	* nested functions zoekpagina
		 	***********************************************************/
   			//0 means disabled; 1 means enabled;  
   			var popupStatus = 0;  

			function loadPopup(){
				//loads popup only if it is disabled
				if(popupStatus === 0){
					jQuery(".backgroundPopup").css({
						"opacity": "0.7"
					});
					jQuery(".backgroundPopup").fadeIn("slow");
					jQuery(".popupContact").fadeIn("slow");
					popupStatus = 1;
				}
			}

			//disabling popup
			function disablePopup(){
				//disables popup only if it is enabled
				if(popupStatus==1){
					jQuery(".backgroundPopup").fadeOut("slow");
					jQuery(".popupContact").fadeOut("slow");
					popupStatus = 0;
				}
			}
	
			//centering popup
			function centerPopup(){
				//request data for centering
				var windowWidth = document.documentElement.clientWidth;
				var windowHeight = document.documentElement.clientHeight;
				var popupHeight = jQuery(".popupContact").height();
				var popupWidth = jQuery(".popupContact").width();
				//centering
				jQuery(".popupContact").css({
					"position": "absolute",
					"top": "20px",
					"left": "190px"
				});
				//only need force for IE6
	
				jQuery(".backgroundPopup").css({
					"height": windowHeight
				});
			}

			/******* POPUP ********/
			//Click the button event!
			jQuery(".popupText").click(function(){
				//centering with css
				centerPopup();
				//load popup
				loadPopup();
			});


			//CLOSING POPUP
			//Click the x event!
			jQuery(".popupContactClose").click(function(){
				disablePopup();
			});
		
			//Click out event!
			jQuery(".backgroundPopup").click(function(){
				disablePopup();
			});
		
			//Press Escape event!
			jQuery(document).keypress(function(e){
				if(e.keyCode==27 && popupStatus==1){
					disablePopup();
				}
			});		


			/*********** EINDE nested functions zoekpagina *************/


			/**************** voor postcode invoer ******************/
			jQuery(".postcodeDigit").keydown(function(evt) {
			if (!evt) var evt = window.event;
         			var charCode = (evt.which) ? evt.which : evt.keyCode;
				// vertaal keypad nummers naar normale nummers
				if (charCode >= 96 && charCode <= 105) {
					charCode = charCode - 48;
				}

				/* 37 = left arrow key, 39 = right arrow key */
         			if (charCode != 37 && charCode != 39 && charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
				{
            				return false;
				}
			
				var targ;
				if (evt.target) {
					targ = evt.target;
				}
				else if (evt.srcElement) {
					targ = evt.srcElement;
				}
				
				if (targ.nodeType == 3) // defeat Safari bug
				{
					targ = targ.parentNode;
				}

				if (charCode == 8) {
					jQuery(evt.target).val('');
				}
				else if (charCode == 46) {
					jQuery(evt.target).val('');
				}
				else if (charCode == 37) {
					jQuery(evt.target).prev().focus();
	 				return false;
				} 
				else if (charCode == 39) {
					jQuery(evt.target).next().focus();
					return false;
				}
				else if (charCode >= 48 && charCode <= 57) {
					jQuery(evt.target).val(charCode - 48);
					jQuery(evt.target).next().focus();
					var valid = validatePostcodeDigits(); 
					if (valid) {
						jQuery('.waar_postcode .ongeldigepostcode').hide();
					}
				}
				/* omdat er nu false wordt gereturneerd, wordt keyup niet uitgevoerd */
         			return false;
			});


			/*
			jQuery(".postcodeDigit").keyup(
				function() {
					var valid = validatePostcodeDigits(); 
					if (valid) {
						jQuery('.waar_postcode .errotekst').hide();
					}
				}
			);
			*/

			/*
			 * Check
			 */
			function validatePostcodeDigits() {
				var postcodeComplete = true;
				jQuery.each(jQuery(".postcodeDigit"),
					function() {
						if (jQuery(this).val().match(/^\d$/)){
							jQuery(this).addClass('validPostcodeDigit');
							jQuery(this).removeClass('invalidPostcodeDigit');
						}
						else {
							jQuery(this).addClass('invalidPostcodeDigit');
							jQuery(this).removeClass('validPostcodeDigit');
							postcodeComplete = false;
						};
					}
				)
				return postcodeComplete;
			}

			/*
			 * Deze actie wordt bij het laden van de pagina uitgevoerd omdat er wellicht al
			 * een postcode in staat.
			 */
			validatePostcodeDigits(); 

		   	/*
	 		* Haal "alle zorgverleners" en "alle hulpmiddelen" op in zoek pagina.
	 		*/ 			
			jQuery(".typezorgverlener").autocomplete({source:soortzorgverleners, delay:0, appendTo:".zorggids_searchresults"});

			// Laat placeholders zien in browsers die placeholder attribuut niet ondersteunen (zoals IE)
			function checkplaceholder() {
   				jQuery.support.placeholder = false;
   				test = document.createElement('input');
   				if('placeholder' in test) jQuery.support.placeholder = true;
			};
			checkplaceholder();

			// This adds placeholder support to browsers that wouldn't otherwise support it. 
			function placeholders() {
   				if(!jQuery.support.placeholder) { 
      					var active = document.activeElement;
					/*
      					jQuery(':input').focus(function () {
						// <- WAT MOET HIER??????????????????????????????????????????????? 
						if (jQuery(this).attr()){ 
            						jQuery(this).val('').removeClass('placeholder');
						}
					});
					*/
      					jQuery(':input').focus(function () {
         					if (jQuery(this).attr('placeholder') != '' && jQuery(this).val() == jQuery(this).attr('placeholder')) {
            						jQuery(this).val('').removeClass('placeholder');
         					}
      					});

					jQuery('input[placeholder]').blur(function () {
         					if (jQuery(this).attr('placeholder') != '' && (jQuery(this).val() == '' || jQuery(this).val() == jQuery(this).attr('placeholder'))) {
            						jQuery(this).val(jQuery(this).attr('placeholder')).addClass('placeholder');
         					}
      					});
      					jQuery("input[placeholder]").blur();
      					jQuery(active).focus();
      					jQuery('form:eq(0)').submit(function () {
         					jQuery(':input.placeholder').val('');
      					});
   				}
			};

			// placeholders();
			
			jQuery(".typezorgverlener").blur(
				function(){
					/* maak eerste letter hoofdletter */
    					var capitalized = jQuery(this).val().charAt(0).toUpperCase() + jQuery(this).val().substr(1);
					jQuery(this).val(capitalized);

					if (	jQuery(".ui-autocomplete").is(":hidden")
						&& (jQuery.inArray(jQuery(this).val(), soortzorgverleners) < 0 || jQuery(this).val() == '')
						&& (jQuery(this).attr('placeholder') != '' || (jQuery(this).attr('placeholder') != '' && jQuery(this).val() == jQuery(this).attr('placeholder')))
					){
						jQuery('.wat').addClass('error');
						jQuery('.wat .errortekst').show();
					}
					else {
						jQuery('.wat').removeClass('error');
						jQuery('.wat .errortekst').hide();
					}

					var zorgverlener = jQuery(this).val();

					if (jQuery.inArray(zorgverlener, postcodeZorgverleners) > -1) {
						switchWaarToPostcode();
					}
					else {
						switchPostcodeToWaar();
					}
				}
			);

			/*
			 * Quicklinks voor selectie van veelgebruikte zorgverleners.
			 */
			function moveZorgverlener() {
				var position = jQuery('.typezorgverlener').position();
			}

			jQuery('.prefiller li').click(function(evt) {
				var positionTarget = jQuery('.typezorgverlener').offset();
				var orig = jQuery(evt.currentTarget);
				var tekst = orig.attr('title');

				var positionOrig = orig.offset();
				var diffLeft = positionTarget.left - positionOrig.left + 3;
				var diffTop = positionTarget.top - positionOrig.top + 3;
				orig.animate({"left": "+=" + diffLeft, "top": "+=" + diffTop}, 'fast', function() {
					jQuery('.typezorgverlener').val(tekst).removeClass('placeholder');
					orig.css('top', '').css('left', '');

					/* zorgverlener zou altijd correct moeten zijn */
					jQuery('.wat').removeClass('error');
					jQuery('.wat .errortekst').hide();

					if (jQuery.inArray(tekst, postcodeZorgverleners) > -1) {
						switchWaarToPostcode();
					}
					else {
						switchPostcodeToWaar();
					}
				});
			});


			/*
	 		* Check postcode for validity, it should have 4 digits with optionally 2 letters.
	 		*/
			function isValidPostcode(postcode) {
				/* return postcode.match(/^\s*$/) || postcode.match(/^\s*\d{4}\s{0,2}(?:[a-zA-Z]{2})?\s*$/); */
				return postcode.match(/^\s*\d{4}\s{0,2}(?:[a-zA-Z]{2})?\s*$/);
			}

			/*
 			* Turn the "waar" inputfield into a "postcode" inputfield
 			*/
			function switchWaarToPostcode(){
				if (jQuery(".waar").is(":visible")) {
					jQuery('.waar').hide();
					jQuery('.waar_postcode').show();
					/* jQuery(".postcodeDigit").val('').addClass("invalidPostcodeDigit").removeClass("validPostcodeDigit"); */
				}

				/*
				if (!isValidPostcode(postcode)) {
					jQuery('.waar_postcode').addClass('error');
					jQuery(".waar_postcode .errortekst").show();
				}
				*/
			}

			function geocodeAddress(adres) {
				var succes;
				jQuery.ajax({
					url:contextPath + '/geocode',
					data:{adres:adres},
					type:'GET',
					dataType:'json',
					async: false,
					success:
						function(data){
							if ('err' in data) {
								jQuery('.waar .errortekst').text(data.err);	
								jQuery('.waar .errortekst').show();
								jQuery('.waar').addClass('error');
								succes = false;
							}
							else {
								jQuery('.geocodex').val(data.lte);
								jQuery('.geocodey').val(data.lge);
								succes = true;
							}
						},
					error:
						function(){
							succes = false;
							jQuery('.waar .titel').text('De zorggids is momenteel niet bereikbaar');
							jQuery('.waar').addClass('error');
						}
				});
				return succes;
			}

			/*
 			* Turn the "postcode" inputfield back into a "waar" inputfield
 			*/
			function switchPostcodeToWaar(){
				jQuery(".waar_postcode").hide();
				jQuery(".waar").show();
			}

			jQuery('.typezorgverlener').live('click', 
				function(){
					var zorgverlener = jQuery(this).val();
					if (jQuery.inArray(zorgverlener, postcodeZorgverleners) > -1) {
						switchWaarToPostcode();
					}
					else {
						switchPostcodeToWaar();
					}
				}
			);


			/*****************************************
			 * Submit button in search.jsp
			 *****************************************/
			jQuery('.submitBtn').hover(
				// mouseover
				function(){ jQuery(this).addClass('submitBtnHover');},
				
				// mouseout
				function(){ jQuery(this).removeClass('submitBtnHover'); }
			);

			/*
			jQuery('.waar_postcode .adres').blur(
				function() {
					var titel = jQuery('.waar .titel').text();
					if (titel.match(/cijfers/i)) {
						var postcode = jQuery('.waar .adres').val();
						if (!isValidPostcode(postcode)) {
							jQuery('.waar').addClass('error');
							jQuery(".waar .errortekst").show();
							return false;
						}
						else {
							jQuery('.waar').removeClass('error');
							jQuery(".waar .errortekst").hide();
							return true;
						}
					}
				}
			);
*/

			jQuery('#zorggids .searchform').submit(
				function() {
					var succes;
					// als locatie veld een postcode veld is, dan moet de postcode doorgegeven worden,
					// als het locatie veld een waar veld is, dan moet de bijbehorende geocode opgezocht worden.

					// reset alle velden naar normale staat
					jQuery('.wat').removeClass('error');
					jQuery('.wat .errortekst').hide();
					jQuery('.waar').removeClass('error');
					jQuery('.waar .errortekst').hide();
					jQuery('.waar_postcode .ongeldigepostcode').hide();
					jQuery('.waar_postcode .onbekendepostcode').hide();
jQuery('input[placeholder]').blur();
					if (jQuery(".waar_postcode").is(":visible")) {
						var postcode = jQuery('input[name=pc1]').val() + jQuery('input[name=pc2]').val() + jQuery('input[name=pc3]').val() + jQuery('input[name=pc4]').val();
						if (isValidPostcode(postcode)) {
							// Geocode nodig om kaart op postcode te zetten
							succes = geocodeAddress(postcode);
							if (succes) {
								jQuery('input.postcodeNumeriek').val(postcode);
							}
							else {
								jQuery(".waar_postcode .onbekendepostcode").show();
							}
							return succes;
						}
						else {
							jQuery('.waar_postcode .ongeldigepostcode').show();	
							return false;
						}
					}
					else if (jQuery.trim(jQuery('input.adres').val()) == "")
					{
						jQuery('.waar').addClass('error');
						jQuery('.waar .errortekst').show();
						return false;
					}

					// check dat zorgverlener in lijst staat
					if (jQuery.inArray(jQuery(".typezorgverlener").val(), soortzorgverleners) < 0){
						jQuery('.wat').addClass('error');
						jQuery('.wat .errortekst').show();
						return false;
					}

					jQuery(".waiting").addClass('spinner');
					succes = geocodeAddress(jQuery('.adres').val());
					if (!succes) {
						jQuery(".waiting").removeClass('spinner');
					}
					else {
						// haal placeholder "wie" weg voor IE
						if (jQuery(".naam").attr('placeholder') != '' && jQuery(".naam").val() == jQuery(".naam").attr('placeholder')) {
							jQuery(".naam").val("");
						}
					}
					return succes;
				} // END function()
			); // END jQuery('.searchform').submit(function()
		} // END if (jQuery('.zoeken').length > 0)

		/********************************** EINDE ZOEK PAGINA ****************************************/

		/*********************************************************************************************/
		/*********************************************************************************************/
		/********************************   LIJST PAGINA  (lijst.jsp)  *******************************/
		/*********************************************************************************************/
		/*********************************************************************************************/
		if (jQuery('.lijst').length > 0) {

			/**********************************
			 * Toon Google Map
			 */
			if (jQuery('#map_canvas').length > 0)
			{
			
				initializeMap();
			}

			/*********************************************************************************
			 * Callback functie om soort zorgverleners te krijgen en te tonen
			 * Niet in initieel zoekscherm.
			 *********************************************************************************/
			if (jQuery('.zoeken').length == 0)
			{
			jQuery.ajax({
				url:contextPath + '/soortzorgverleners',
				data:{website:jQuery('.website').attr('value')},
				type:'GET',
				dataType:'json',
				async: true,
				success:
   	    				function(data){
							// zorgverlenertype nummers
							var checkedtypes = jQuery('.checkedtypes').attr('value');
							var selectedNrs = checkedtypes.split(',');
							var typeFound = false;

							for (var cat_i = 0; cat_i < data.c.length && !typeFound; cat_i++) {
								var category = data.c[cat_i];
								// skip postcode based zorgverleners
								if (category.p == 'J') {
									continue;
								}

								if (gekozenzorgverlenertype == category.n || jQuery.inArray(category.i, selectedNrs) > -1) {
									typeFound = true;
								}
								var block = jQuery('<blockquote class="category">');
								if (category.c && category.c.length > 0) {
								for (var type_idx = 0; type_idx < category.c.length && !typeFound; type_idx++) {
									var type = category.c[type_idx];
									// skip postcode based zorgverleners
									if (type.p == 'J') {
										continue;
									}
									var checked = '';
									// gekozenzorgverlenertype set in lijst.jsp
									if (gekozenzorgverlenertype == type.n || jQuery.inArray(type.i, selectedNrs) > -1) {
										typeFound = true;
									}


									var subtypeFound = false;
									if (type.c && type.c.length > 0) {
										// zorgrelatie met subtypes
										var subtypes = '<blockquote class="subtypes">';
											
										for (var subtype_idx = 0; subtype_idx < type.c.length; subtype_idx++) {
											// subtypes van zorgrelatie
											var subtype = type.c[subtype_idx];
											// skip postcode based zorgverleners
											if (subtype.p == 'J') {
												continue;
											}
											// neem checked voor subtype over van category. Als category niet is gechecked
											// hangt dit af van of het subtype is geselecteerd.
											var subchecked = checked;
											if (typeFound || gekozenzorgverlenertype == subtype.n || jQuery.inArray(subtype.i, selectedNrs) > -1) {
												subchecked = ' checked="checked" ';
												subtypeFound = true;
											}
											subtypes += '<fieldset class="subtype"><input class="subtype" name="checkbox2" type="checkbox"' + subchecked + '/><div class="subtypename" id="' + subtype.i + '">' +  subtype.n + '</div></fieldset>';
										}
										if (subtypeFound) {
											typeFound = subtypeFound;
										}
										subtypes += '</blockquote>';
										var subt = jQuery(subtypes);
										if (typeFound) {
										jQuery(block).append('<div class="typename">' + type.n + '</div>');
										jQuery(block).append(subt);
										}
									}
								}
							}
							if (typeFound) {
								// voeg type en subtypes toe aan pagina
              							jQuery('.poilijst').append(block);
							}
						}
					},
				error:
					function(){
						hasError = true;
						alert('De zorggids is momenteel niet bereikbaar');
					}

			});
		}




			/********************************************
			 * "Zoek opnieuw" button op lijst.jsp
			 ********************************************/
			jQuery('.zoekopnieuw').click(function(){
				var geox;
				var geoy;
				var hasError = false;

					jQuery.ajax({
						url:contextPath + '/geocode',
						data:{adres:jQuery('input.adres').val()},
						type:'GET',
						dataType:'json',
						async: false,
						success:
							function(data){
								if ('err' in data) {
									jQuery('div.searchform h2').text(data.err);
									jQuery('div.searchform').addClass('error');
									hasError = true;
									return false;
								}
								else {
									geox = data.lte;
									geoy = data.lge;
								}
							},
						error:
							function(){
								hasError = true;
								alert('De zorggids is momenteel niet beschikbaar. Wij doen ons best om dit zo snel mogelijk te verhelpen.');
							}
					});
				if (hasError) {
					return;
				}

				// query string
				var zorgtypesQS = '';
				// comma separated values
				var zorgtypesCSV = '';
				var counter = 1;
				var twoDigitCounter;

				/*
				 * Als er een zorgverlener
				 */
				if (jQuery('input:checked ~ div[id]').length > 21) {
						alert('U heeft meer dan 21 zorgverlenertypes aangevinkt, niet alle zorgverleners zullen getoond worden');
				}

				jQuery('input:checked ~ div[id]').each(function(n){
						// Er kunnen maximaal 21 zorgverlenertypes worden meegegeven aan webservice.
						// Tegelijk wordt een comma separated list gecreerd. Deze wordt later in het linker
						// zorgverlenertype menu de juiste zorgverlenertypes te checken.
						if (jQuery(this).attr('id') !== undefined && counter < 21) {
							if (counter < 10) {
								twoDigitCounter = '0' + counter;
							}
							else {
								twoDigitCounter = counter;
							}
							zorgtypesQS = zorgtypesQS + 'idzrg' + twoDigitCounter + '=' + jQuery(this).attr('id')  + '&';
							if (n > 0) {
								zorgtypesCSV = zorgtypesCSV + ',';
							}
							zorgtypesCSV = zorgtypesCSV + jQuery(this).attr('id');
							counter = counter + 1;
						};
				});


				var href = 'zorggids?page=lijst&' + zorgtypesQS + 'checkedtypes='  + zorgtypesCSV + '&maxtal=' + maxtal + '&straal=' + straal + '&geslacht=' + geslacht + '&geoxlo=&geoylo=&geoxrb=&geoyrb=&geocodex=' + geox + '&geocodey=' + geoy + '&autofit=true&waar=' + jQuery('input.adres').val() + '&' + jQuery('.querystring').attr('value');		
				location.href = href;
			});

			/***********************************************************************************************************
			 * Lees de aangeklikte zorgverlener types uit het linker menu en maak hier een query string van
			 * waarbij elk zorgverlener type aan een idzrgXX wordt gekoppeld. Er zijn echter maar 21 idzrgXX velden.
			 * De rest na 21 wordt momenteel genegeerd. Alleen het gebied ter grootte van de map wordt gebruikt.
			 ***********************************************************************************************************/
			jQuery('.verversenzorgverleners').click(function(){
				jQuery(".waiting").addClass('spinner');
				// gender selectie wordt niet gebruikt
				/*
				var gender = '';
				jQuery('input.geslacht:checked').each(function(n){
				       	if (gender.length > 0) {
						gender = gender + ',';
					}
					gender = gender + jQuery(this).attr('value');
				});
				*/

				// query string
				var zorgtypesQS = '';
				// comma separated values
				var zorgtypesCSV = '';
				var counter = 1;
				var twoDigitCounter;

				jQuery('input.subtype:checked ~ div[id]').each(function(n){
					// Er kunnen maximaal 21 zorgverlenertypes worden meegegeven aan webservice.
					// Tegelijk wordt een comma separated list gecreerd. Deze wordt later in het linker
					// zorgverlenertype menu de juiste zorgverlenertypes te checken.
					if (jQuery(this).attr('id') !== undefined && counter < 21) {
						if (counter < 10) {
							twoDigitCounter = '0' + counter;
						}
						else {
							twoDigitCounter = counter;
						}
						zorgtypesQS = zorgtypesQS + 'idzrg' + twoDigitCounter + '=' + jQuery(this).attr('id')  + '&';
						if (n > 0) {
							zorgtypesCSV = zorgtypesCSV + ',';
						}
						zorgtypesCSV = zorgtypesCSV + jQuery(this).attr('id');
						counter = counter + 1;
					};
				});
				/*
				 * lat = x (-90, 90)
				 * lng = y (-180, 180)
				 */
				var latLngBounds = map.getBounds();
				var southWest = latLngBounds.getSouthWest();
				var southWestX = southWest.lat() + 0.00000000001;
				var southWestY = southWest.lng() - 0.00000000001;
				var northEast = latLngBounds.getNorthEast();
				var northEastX = northEast.lat() - 0.00000000001;
				var northEastY = northEast.lng() + 0.00000000001;
				var zoom = map.getZoom();
				var center = map.getCenter();
				var centerX = center.lat();
				var centerY = center.lng();
				
				var indkindvriendelijk = jQuery('.kindvriendelijk').is(':checked') ? 'J' : '';
				var indrolstoelvriendelijk = jQuery('.rolstoelvriendelijk').is(':checked') ? 'J' : '';
				var codeTaal = (jQuery('.gesprokentalen').length == 0) ? '' : jQuery('.gesprokentalen').val();
				
  			    	var allOpeningstijden = [];

				jQuery('.openingstijden :checked').each(function() {
      					allOpeningstijden.push($(this).val());
    				});
    				var openingstijden = allOpeningstijden.join(',');	
					
				var href = '?' + zorgtypesQS + 'checkedtypes=' + zorgtypesCSV + '&maxtal=' + maxtal + '&straal=' + straal + '&centerx=' + centerX + '&centery=' + centerY + '&zoom=' + zoom + '&geoxlo=' + southWestX + '&indkindvriendelijk=' + indkindvriendelijk + '&indrolstoelvriendelijk=' + indrolstoelvriendelijk +
				'&codeTaal=' + codeTaal + '&tijden=' + openingstijden + '&geoylo=' + southWestY + '&geoxrb=' + northEastX + '&geoyrb=' + northEastY + '&pagenr=1&autofit=&' + jQuery('.querystring').attr('value');		
				location.href = href;
			});

			/*
		 	* Toon "zoek opnieuw" button op Google Map wanneer iets wordt aan/uitgevinkt
jQuery('input[type=checkbox]').live('click', function() {
		 	*/
			jQuery('input[type=checkbox]').live('click', function() {
  				jQuery('div.refresh').show();
			});

			/*
			jQuery('select option').click(function() {
  				jQuery('div.refresh').show();
			});
			*/

			jQuery('select').change(function() {
  				jQuery('div.refresh').show();
			});

			/*
			 * Openingstijden, uitvinken conflicterende checkboxes
			 */

			jQuery('.openingstijden input[name=alle_voor]').click(function() {jQuery('.openingstijden input[name=doordeweeks_voor], .openingstijden input[name=weekend_voor]').attr('checked', false)});
			jQuery('.openingstijden input[name=alle_tijdens]').click(function() {jQuery('.openingstijden input[name=doordeweeks_tijdens], .openingstijden input[name=weekend_tijdens]').attr('checked', false)});
			jQuery('.openingstijden input[name=alle_na]').click(function() {jQuery('.openingstijden input[name=doordeweeks_na], .openingstijden input[name=weekend_na]').attr('checked', false)});

			jQuery('.openingstijden input[name=doordeweeks_voor], .openingstijden input[name=weekend_voor]').click(function() {jQuery('.openingstijden input[name=alle_voor]').attr('checked', false)});
			jQuery('.openingstijden input[name=doordeweeks_tijdens], .openingstijden input[name=weekend_tijdens]').click(function() {jQuery('.openingstijden input[name=alle_tijdens]').attr('checked', false)});
			jQuery('.openingstijden input[name=doordeweeks_na], .openingstijden input[name=weekend_na]').click(function() {jQuery('.openingstijden input[name=alle_na]').attr('checked', false)});
			/***********************************************************
		 	* Toon "ververs zoekopdracht" button wanneer kaart wijzigt. Tot die tijd niet.
		 	***********************************************************/
			jQuery('div.refresh').hide();
			// wacht 2 seconde omdat kaartje tijdens opbouw ook zijn bounds aanpast, waardoor
			// de "ververs zoekopdracht" button anders vanaf het begin al wordt getoond.
			jQuery(this).oneTime(2000, function() {
     				google.maps.event.addListener(map, 'bounds_changed', function() {
  					jQuery('div.refresh').show();
				});
  			});
		} // END if (jQuery('.lijst').length > 0)

		/********************************** EINDE LIJST PAGINA ****************************************/


		/*********************************************************************************************/
		/*********************************************************************************************/
		/*******************************    DETAIL PAGINA  (detail.jsp)  *****************************/
		/*********************************************************************************************/
		/*********************************************************************************************/
		
		if (jQuery('.detail').length > 0)
		{
			// Read a page's GET URL variables and return them as an associative array.
			function getUrlVars()
			{
    				var vars = [], hash;
    				var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    				for(var i = 0; i < hashes.length; i++)
    				{
        				hash = hashes[i].split('=');
        				vars.push(hash[0]);
        				vars[hash[0]] = hash[1];
    				}
    				return vars;
			}
		
			/**********************************
			 * Toon Google Map
			 */
			if (jQuery('#map_canvas').length > 0)
			{
				initializeMap();
			}





			jQuery(".back").click(function(){window.history.go(-1);return false;});

			var directionsDisplay;
			var directionsService = new google.maps.DirectionsService();

			function initializeDirections() {
  				directionsDisplay = new google.maps.DirectionsRenderer();
  				directionsDisplay.setMap(map);
			}
  			
			function calcRoute(vanaf, vervoer) {
				var start = vanaf + ', nederland';
				// var end = new google.maps.LatLng(geox, geoy);
				// adres set in details.jsp
				var end = adres + ', nederland';
  				var request = {
    					origin:start, 
    					destination:end,
    					travelMode: vervoer
  				};
  				directionsService.route(request, 
					function(result, status) {
    						if (status == google.maps.DirectionsStatus.OK) {
							// onthoud laatste vertrekpunt omdat deze gewijzigd kan worden
							waar = vanaf;
      							directionsDisplay.setDirections(result);
							var route = result.routes[0];
							var distanceMeters = 0;
							for (var i=0; i<route.legs.length; i++) {
								distanceMeters += route.legs[i].distance.value;
							}
							var km = Math.floor(distanceMeters / 1000);
							var hm = Math.floor(distanceMeters / 100);
							var distanceKm = km + ',' + hm; 

							jQuery('.afstand').text('De afstand is ' + distanceKm + ' km');
							jQuery('.vervoer').html('<div>De weergegeven route is voor:</div><div><input type="radio" name=car" group="vervoer" value="car"/>auto</div><div><input type="radio" group="vervoer" name="lopen" value="lopen"/>lopen</div>');
							// jQuery('.alternatiefzoeken').html('<div>Hieronder kunt u een alternatieve vertrek locatie opgeven</div><div><input type="text" name="vertrekpunt" id="vertrekpunt"/><input type="button" id="zoekenverzenden" name="zoekenverzenden" value="zoek opnieuw"/></div>');

							if (vervoer == google.maps.DirectionsTravelMode.DRIVING) {
			 					jQuery('input[value=car]').attr('checked', true);
			 					jQuery('input[value=lopen]').attr('checked', false);
							}
							else if (vervoer == google.maps.DirectionsTravelMode.WALKING) {
			 					jQuery('input[value=car]').attr('checked', false);
			 					jQuery('input[value=lopen]').attr('checked', true);
							}
    						}
  					}
				);

			} // END calcRoute

			var waar = getUrlVars()["waar"];
			if (waar && adres) {
				initializeDirections();
				calcRoute(waar, google.maps.DirectionsTravelMode.DRIVING);
				jQuery('.zoektvanaf').html('De route wordt weergegeven vanaf vertrekpunt "<span id="vanaf">' + waar + '</span>" (<a id="wijzigVertrekpunt">wijzig</a>)');
				
				jQuery('input[value=car]').live( 'click',
					function(){
						calcRoute(waar, google.maps.DirectionsTravelMode.DRIVING);
					}
				);
				jQuery('input[value=lopen]').live( 'click',
					function(){
						calcRoute(waar, google.maps.DirectionsTravelMode.WALKING );
					}
				);
				jQuery('input[name=zoekenverzenden]').live('click', 
					function(){
						var newLocation = jQuery(this).prev().val();
						if (newLocation) {
							calcRoute(newLocation, google.maps.DirectionsTravelMode.DRIVING);
							jQuery(".vanaf").text(newLocation);
							popupVertrekpunt.disablePopup();
						}
					}
				);
			}
			else {
				setMarkers(map, zorgverleners);
			}

			/*
	 		* Verwijskompas
	 		*/
			if (jQuery('.verwijskompas').length > 0) {
				jQuery('.verwijskompasinfo').live('click', function() {jQuery(this).html('');});
				jQuery('a.title').live('click',
					function() {
						var th = this;
						if (jQuery('.verwijskompasinfo', jQuery(this).parent()).html().length != 0) {
					 		jQuery('.verwijskompasinfo', jQuery(this).parent()).html('');	
						}
						else {
						jQuery.ajax({
							url:jQuery(this).attr('href'), 
							// url:'http://192.168.106.14/agisweb/verwijskompas',
							data:{'id':1143,naam_hoofd:0,wachtlijstbeheersing:0,algemeen_email:0,algemeen_email_naam:0,url:0,locatie_overig:0,beschrijving:0,verwijsindicatie:0,telefoon_alg_bereikbaar:0,email_alg:0,opm_verwijzen:0,vergoedingen:0,nieuwe_patienten:0,telefoon_spoed:0,spreekuur_internet:0,algemeen_email_naam:0,naam_huisartsen:0,aanwezigheid:0,aanvullende_namen:0,rolstoel_toegang:0},
							// data:{naam_maatschap:0,zoek_beschrijving:0,naam_hoofd:0,aanvullende_namen:0},
							type:'GET',
							dataType:'json',
							async: true,
							success:
								function(data) {
									var text = '<ul>';
									if ('beschrijving' in data && data.beschrijving != '') {
										text += "<li class='proptitle'>omschrijving</li>";
										text += "<li class='propvalue'>" + data.beschrijving + '</li>';
									}
									if ('verwijsindicatie' in data && data.verwijsindicatie != '') {
										text += "<li class='proptitle'>verwijzing</li>";
										text += "<li class='propvalue'>" + data.verwijsindicatie + '</li>';
									}
									/* if ('opm_verwijzen' in data && data.opm_verwijzen != '') {
										text += "<li class='proptitle'>" + "opmerking verwijzen" + "</li>";
										text += "<li class='propvalue'>" + data.opm_verwijzen + '</li>';
									} */
									if ('wachtlijstbeheersing' in data && data.wachtlijstbeheersing != '') {
										text += "<li class='proptitle'>wachtlijst beheersing</li>";
										text += "<li class='propvalue'>" + data.wachtlijstbeheersing + '</li>';
									}
									if ('nieuwe_patienten' in data && data.nieuwe_patienten != '') {
										text += "<li class='proptitle'>aanname nieuwe patienten</li>";
										text += "<li class='propvalue'>" + data.nieuwe_patienten + '</li>';
									}
									if ('telefoon_spoed' in data && data.telefoon_spoed != '') {
										text += "<li class='proptitle'>telefoon spoed</li>";
										text += "<li class='propvalue'>" + data.telefoon_spoed+ '</li>';
									}
									if ('spreekuur_internet' in data && data.spreekuur_internet != '') {
										text += "<li class='proptitle'>spreekuur via internet</li>";
										text += "<li class='propvalue'>" + data.spreekuur_internet+ '</li>';
									}
									if ('algemeen_email_naam' in data && data.algemeen_email_naam != '') {
										text += "<li class='proptitle'>e-mail</li>";
										text += "<li class='propvalue'>" + data.algemeen_email_naam+ '</li>';
									}
									if ('naam_huisartsen' in data && data.naam_huisartsen != '') {
										text += "<li class='proptitle'>huisartsen</li>";
										text += "<li class='propvalue'>" + data.naam_huisartsen+ '</li>';
									}
									if ('aanwezigheid' in data && data.aanwezigheid != '') {
										text += "<li class='proptitle'>aanwezigheid</li>";
										text += "<li class='propvalue'>" + data.aanwezigheid+ '</li>';
									}
									if ('aanvullende_namen' in data && data.aanvullende_namen != '') {
										text += "<li class='proptitle'>aanvullende namen</li>";
										text += "<li class='propvalue'>" + data.aanvullende_namen+ '</li>';
									}
									if ('rolstoel_toegang' in data && data.rolstoel_toegang != '') {
										text += "<li class='proptitle'>rolstoel toegang</li>";
										text += "<li class='propvalue'>" + data.rolstoel_toegang+ '</li>';
									}
									if ('naam_hoofd' in data && data.naam_hoofd != '') {
										text += "<li class='proptitle'>naam hoofd</li>";
										text += "<li class='propvalue'>" + data.naam_hoofd + '</li>';
									}
									/* if ('telefoon_alg' in data && data.telefoon_alg != '') {
										text += "<li class='proptitle'>" + "algemeen telefoon" + "</li>";
										text += "<li class='propvalue'>" + data.telefoon_alg + '</li>';
									} */
									/*if ('telefoon_alg_bereikbaar' in data && data.telefoon_alg_bereikbaar != '') {
										text += "<li class='proptitle'>" + "telefoon algemeen bereikbaar" + "</li>";
										text += "<li class='propvalue'>" + data.telefoon_alg_bereikbaar + '</li>';
									} */
									if ('email_alg' in data && data.email_alg != '') {
										text += "<li class='proptitle'>e-mail</li>";
										text += "<li class='propvalue'><a href='mailto:" + data.email_alg + "'>" + data.email_alg + "</li>";
									}
									if ('algemeen_email' in data && data.algemeen_email != '') {
										text += "<li class='proptitle'>e-mail</li>";
										text += "<li class='propvalue'><a href='mailto:" + data.algemeen_email + "'>" + data.algemeen_email + "</a></li>";
									}
									if ('algemeen_email_naam' in data && data.algemeen_email_naam != '') {
										text += "<li class='proptitle'>e-mail</li>";
										text += "<li class='propvalue'><a href='mailto:" + data.algemeen_email_naam + "'>" + data.algemeen_email_naam + '</a></li>';
									}
									if ('url' in data && data.url != '') {
										text += "<li class='proptitle'>website</li>";
										text += "<li class='propvalue'><a href='";
										if (data.url.substr(0, 7) != "http://") {
											text += "http://";
										}
										text += data.url + "' target='_blank'>" + data.url + '</a></li>';
									}
									if ('url_praktijk' in data && data.url_praktijk != '') {
										text += "<li class='proptitle'>website</li>";
										text += "<li class='propvalue'><a href='";
							       			if (data.url_praktijk.substr(0, 7) != "http://") {
											text += "http://";
										}
										text += data.url_praktijk + "' target='_blank'>" + data.url_praktijk + '</a></li>';
									}
									text += "<li class='verwijskompasref'>Informatie via Verwijskompas.nl</li></ul>";
									/* if ('locatie_overig' in data && data.locatie_overig != '') {
										text += "<li class='proptitle'>" + "vestiging" + "</li>";
										text += "<li class='propvalue'>" + data.locatie_overig + '</li>';
									}*/
									jQuery('.verwijskompasinfo', jQuery(th).parent()).html(text);
								},
							error:
								function(data) {
									alert('Er is een probleem opgetreden');
								}
							});
						}
					return false;
				});
				jQuery('a.moreprofiles').live('click', 
					function(){
						jQuery('li.moreprofiles').toggle();
						if (jQuery('a.moreprofiles').text() == 'meer...') {
							jQuery('a.moreprofiles').text('minder...');
						}
						else {
							jQuery('a.moreprofiles').text('meer...');
						}
					});
				jQuery('a.initialopen').click();
			} // END if (jQuery('.verwijskompas').length > 0)

			/*
		 	 * Opent/sluit contract details op details pagina
		 	 */
			jQuery('.contractdetails').hide();
			jQuery('img.contractdetailstoggle').live('click', function(){
				var blockquote = jQuery(this).next();
				if (blockquote.is(':hidden')) {
					this.alt = 'sluiten';
					this.src= contextPath + '/styles/default/images/minIcon.gif';
					blockquote.show();
				}
				else {
					this.alt = 'openen';
					this.src = contextPath + '/styles/default/images/plusIcon.gif';
					blockquote.hide();
				}
			});
	
			/*
		 	 * Opent/sluit meer contracten op details pagina
		 	 */
			jQuery('.morecontracts').hide();
			jQuery('.meercontractentoggle').live('click', function(){
				var meercontracten = jQuery(".morecontracts");
				if (meercontracten.is(':hidden')) {
					meercontracten.show();
					jQuery(this).html("minder contracten &raquo;");
				}
				else {
					meercontracten.hide();
					jQuery(this).html("meer contracten &raquo;");
				}
			});

			/***************************************************
			 * popup window om vertrekpunt op Map aan te passen
			 ***************************************************/
			var popupVertrekpunt = new popup("popupVertrekpunt", "wijzigVertrekpunt");

		} // END if (jQuery('.detail').length > 0)

		/********************************** EINDE DETAIL PAGINA ****************************************/

	} // END if (jQuery('#zorggids').length > 0)

	} // END var init = function() 

	return {
		init:init
	}
}(); // END var agiszorggids = function() 


// popup class
function popup(popupId, activationId) {
	// 0 means disabled; 1 means enabled  
   	var popupStatus = 0;  

	this.popupId = popupId;
	this.activationId = activationId;

	// show popup
	function loadPopup(){
		//loads popup only if it is disabled
		if(popupStatus === 0){
			jQuery("." + popupId).fadeIn("slow");
			popupStatus = 1;
		}
	}

	// disabling popup
	this.disablePopup = function(){
		//disables popup only if it is enabled
		if(popupStatus==1){
			jQuery("." + popupId).fadeOut("slow");
			popupStatus = 0;
		}
	}

	function disablePopup() {
		//disables popup only if it is enabled
		if(popupStatus==1){
			jQuery("." + popupId).fadeOut("slow");
			popupStatus = 0;
		}
	}


	// centering popup
	function centerPopup(e){
		//request data for centering
		var popupHeight = jQuery(".popupContact").height();
		var popupWidth = jQuery(".popupContact").width();
		//centering
		jQuery("." + popupId).css({
			"position": "absolute",
			"top": (e.pageY - 150) + "px",
			"left": (e.pageX - 300) + "px"
		});
	}

	// click the button event
	jQuery("." + activationId).click(function(e){
		//centering with css
		centerPopup(e);
		//load popup
		loadPopup();
	});

	// click the x event
	jQuery(".popupClose").click(function(){
		disablePopup();
	});

	// press Escape event
	jQuery(document).keypress(function(e){
		if(e.keyCode == 27 && popupStatus == 1){
			disablePopup();
		}
	});		
}

