var exts = new Array();
/*****************************************************************************
  Deze functies regelen het algemene keuzemenu, met behoud van extent
  deze methode opent de een url en voegt daar de extent aan toe. Op de pagina die wordt
  aangeduid met de URI wordt deze extent weer opgevangen en gebruikt om flamingo te zoomen.

Edit 06-10-2009 Functie CheckFlashVersion() toegevoegd
******************************************************************************/
function openURI() {
	var app = getMovie("flamingo");	
	var extent;
	extent = app.call("map" , "getExtent");
    var parameter = "?ext=" + extent.minx + "," + extent.miny + "," + extent.maxx + "," + extent.maxy;
var control = document.snelmenu.kaartselectie;
if (control.options[control.selectedIndex].value != 'geen-keuze') {
URI = control.options[control.selectedIndex].value + parameter;
window.open(URI, "_self");
}
}

function initSelectBox() {
	document.forms['snelmenu'].kaartselectie.options[1] = new Option('Aardgasvulpunten','kaart_aardgasvulpunten.html');
	document.forms['snelmenu'].kaartselectie.options[2] = new Option('Bedrijventerreinen','kaart_bedrijventerreinen.html');
	document.forms['snelmenu'].kaartselectie.options[3] = new Option('Cultuurhistorie','kaart_chs.html');
	document.forms['snelmenu'].kaartselectie.options[4] = new Option('Geluidscontouren','kaart_geluidscontouren.html');
	document.forms['snelmenu'].kaartselectie.options[5] = new Option('Groen, Water en Milieu in beeld','kaart_bgwm.html');
	document.forms['snelmenu'].kaartselectie.options[6] = new Option('Kaartwijzigingen - Nota van beantwoording','kaart_wijzigingen.html');
	document.forms['snelmenu'].kaartselectie.options[7] = new Option('Kansenkaart Biogas','kaart_biogas.html');
	document.forms['snelmenu'].kaartselectie.options[8] = new Option('Klimaat','kaart_klimaat.html');
	document.forms['snelmenu'].kaartselectie.options[9] = new Option('Landgoederen','kaart_landgoederen.html');
	document.forms['snelmenu'].kaartselectie.options[10] = new Option('Natura 2000','kaart_natura2000.html');
	document.forms['snelmenu'].kaartselectie.options[11] = new Option('Natuurbeheerplan','kaart_natuurbeheerplan.html');
	document.forms['snelmenu'].kaartselectie.options[12] = new Option('Onderwijs','kaart_onderwijs.html');
	document.forms['snelmenu'].kaartselectie.options[13] = new Option('Overstromingsrisico','kaart_overstromingsrisico.html');
	document.forms['snelmenu'].kaartselectie.options[14] = new Option('Overzicht Zuid-Holland','kaart_luchtfoto.html');
	document.forms['snelmenu'].kaartselectie.options[15] = new Option('Projecten in uitvoering','kaart_projecten.html?layersvisible=Fietspaden,OV,Verkeersveiligheid,Wegen&');
	document.forms['snelmenu'].kaartselectie.options[16] = new Option('Ecologische Hoofdstructuur','kaart_pehs.html');
	document.forms['snelmenu'].kaartselectie.options[17] = new Option('Provinciale Structuurvisie','kaart_psv_new.html');
	document.forms['snelmenu'].kaartselectie.options[18] = new Option('Samenlevingsatlas','kaart_samenleving.html');
	document.forms['snelmenu'].kaartselectie.options[19] = new Option('Stiltegebieden','kaart_stiltegebieden.html');
	document.forms['snelmenu'].kaartselectie.options[20] = new Option('Streekplannen','kaart_streekplan.html');
	document.forms['snelmenu'].kaartselectie.options[21] = new Option('Vergunningen','kaart_vergunningen.html');
	document.forms['snelmenu'].kaartselectie.options[22] = new Option('Verordeningen','kaart_verordeningen_new.html');
/*	document.forms['snelmenu'].kaartselectie.options[20] = new Option('Woonmilieu','kaart_woonmilieu.html');*/
	document.forms['snelmenu'].kaartselectie.options[23] = new Option('Zwemwaterlocaties','kaart_zwemwaterlocaties.html');
}

/*Deze wordt aangeroepen zodra flamingo is geinitializeerd. De Thema's worden in de selectie gevuld.
function initSelectBox(){
	var themaSelectie = document.getElementById("themaselectie");
	var optionsIndex=1;
	for (naam in kiesLijst){
		themaSelectie.options[optionsIndex] = new Option (naam,naam);
		optionsIndex++;
	}
}*/

/*
Als het thema is geselecteerd. Dan wordt deze functie aangeroepen.
Zodra er een thema is geselecteerd wordt de kaart selectie getoond en gevuld.
*/
function selectThema(element){
	var control = element;
	var themaNaam=control.value;
	var kaartSelectie = document.getElementById("kaartselectie");
	//verwijder alle opties op de eerste na
	for (var i=1; i <= kaartSelectie.options.length; i++){
		kaartSelectie.remove(i);
	}

//	kaartSelectie.options.length = 1 //< Edit Ingmar 14-05-2009 alleen het eerste element bij aanroep functie laten staan >
	
	if (themaNaam=='geen-keuze'){
		kaartSelectie.style.visibility='hidden';
		return;
	}	
	for (var i=1; i <= kiesLijst[themaNaam].length; i++){
		kaartSelectie.options[i]=kiesLijst[themaNaam][i-1];
	}
	if (kaartSelectie.options && kaartSelectie.options.length > 1){
		kaartSelectie.style.visibility='visible';
	}else{
		kaartSelectie.style.visibility='hidden';
	}
}
/*****************************************************************************
  Deze functie wordt aangeroepen door flamingo bij het opstarten.
******************************************************************************/
var app;
function flamingo_onInit() {
        initSelectBox();
		app = getMovie("flamingo");	

	// Dit is overgenomen uid de oude flamingo, weet niet of het werkt.
        // Wordt eigenlijk niet gebruikt.
	debug = unescape(getURLParam("debug"));
	// parameter debug (boolean) (not sure if this works in flam 2.0)
	if (debug.length > 0) {	
		app.call("flamingo" , "setArgument", "map" , "debug" , debug);
	}
	//extent
	zoomToExtentParam();
	// Livelink
	zoomToLivelink();
	//layersVisible
}

/*****************************************************************************
  Deze functie controleert de geinstalleerde Flash versie.
******************************************************************************/
function CheckFlashVersion()
{
	// set required Flash Player version
	var requiredVersion = 8;
	var installedVersion = deconcept.SWFObjectUtil.getPlayerVersion();
	if (installedVersion['major'] >= requiredVersion) {
	// Start loading Flamingo Flash Objects
	}
	else {
		// insert a message which displays when the Flash Player is missing or too old
		document.write('<blockquote>');
		// *** Dutch text:
		document.write('<font face="Arial, Verdana, Helvetica, Sans Serif" size="+1" color="#666666">De vereiste versie van de Adobe Flash Player is niet gevonden</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-1">');
		if (installedVersion['major'] > 0) {
			document.write("De ge&iuml;nstalleerde versie (versie "+ installedVersion['major'] +"."+ installedVersion['minor'] +"."+ installedVersion['rev']+") is te oud.");
		}
		else {
			document.write('Het lijkt er op dat u geen Flash Player ge&iuml;nstalleerd hebt.');
		}
		document.write('<p><a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flashplayer_trans.gif" border="0" width="88" height="31" align="left" style="margin-right: 8px;"></a>');
		document.write('De juiste versie van de Macromedia Flash Player kunt u ophalen op de website van Macromedia. Klik daarvoor op de afbeelding links van deze tekst.<p>Neem s.v.p. contact op met de PC beheerder als u dat zelf niet bent. In dat geval heeft u waarschijnlijk niet voldoende rechten om Flash Player te kunnen installeren.</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-2">Adobe en Flash zijn geregistreerde handelsmerken van Adobe Systems Incorporated.</font>');
		// *** English text:
		document.write('<hr><font face="Arial, Verdana, Helvetica, Sans Serif" size="+1" color="#666666">The required version of the Adobe Flash Player could not be found</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-1">');
		if (installedVersion['major'] > 0) {
			document.write("The installed version (version "+ installedVersion['major'] +"."+ installedVersion['minor'] +"."+ installedVersion['rev']+") is too old.");
		}
		else {
			document.write('It seems you don\'t have a Flash Player installed.');
		}
		document.write('<p><a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flashplayer_trans.gif" border="0" width="88" height="31" align="left" style="margin-right: 8px;"></a>');
		document.write('To download the Flash Player click on the image to the left of this text.<p>Please contact your IT support department in case you do not have the rights required to install the Flash Player.</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-2">Adobe and Flash are registered trademarks of Adobe Systems Incorporated.</font>');
		// *** German text:
		document.write('<hr><font face="Arial, Verdana, Helvetica, Sans Serif" size="+1" color="#666666">Die erforderliche Version des Adobe Flash Player wurde nicht gefunden</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-1">');
		if (installedVersion['major'] > 0) {
			document.write("Die installierte version (version "+ installedVersion['major'] +"."+ installedVersion['minor'] +"."+ installedVersion['rev']+") ist zu alt.");
		}
		else {
			document.write('Es scheint, da&szlig; keine Flash Player installiert ist.');
		}
		document.write('<p><a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flashplayer_trans.gif" border="0" width="88" height="31" align="left" style="margin-right: 8px;"></a>');
		document.write('Die geeignete Version des Flash Player können Sie auf der Webseite von Adobe herunterladen. Klicken Sie hierzu einfach auf die Abbildung links neben diesem Text.<p>Bitte wenden Sie sich an Ihren Systemadministrator, falls Sie selbst keine Administratorrechte für Ihren PC haben. In diesem Fall sind Sie vermutlich nicht berechtigt, den Flash Player selbst zu installieren.</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-2">Adobe und Flash sind eingetragene Marken oder Marken von Adobe Systems Incorporated.</font>');
		// *** French text:
		document.write('<hr><font face="Arial, Verdana, Helvetica, Sans Serif" size="+1" color="#666666">La version requise d\'Adobe Flash Player n\'a pas &eacute;t&eacute; trouv&eacute;e</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-1">');
		if (installedVersion['major'] > 0) {
			document.write("La version install&eacute;e (version "+ installedVersion['major'] +"."+ installedVersion['minor'] +"."+ installedVersion['rev']+") est trop vieille.");
		}
		else {
			document.write('Il semble que vous ne faites pas installer Flash Player.');
		}
		document.write('<p><a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flashplayer_trans.gif" border="0" width="88" height="31" align="left" style="margin-right: 8px;"></a>');
		document.write('La version ad&eacute;quate du Flash Player est disponible sur le site Internet d\'Adobe. Veuillez cliquer sur l\'illustration &agrave; gauche de ce texte.<p>Veuillez prendre contact avec l\'administrateur de votre PC si vous ne l\'&ecirc;tes pas vous-m&ecirc;me. Dans ce cas, il se peut que vous ne disposiez pas des droits suffisants pour installer vous-m&ecirc;me le logiciel Flash Player.</font>');
		document.write('<p><font face="Arial, Verdana, Helvetica, Sans Serif" size="-2">Adobe et Flash sont des marques commerciales d&eacute;pos&eacute;es d\'Adobe Systems Incorporated.</font>');

		document.write('</blockquote>');
	}
}


/**/
function setLayersVisible(){
	var layersVis= unescape(getURLParam("layersVisible"));
	var layersInvis= unescape(getURLParam("layersInvisible"));
	var app = getMovie("flamingo");
	if (layersVis != undefined && layersVis.length>0){							
		app.call("map_"+themaMapLayer, "setLayerProperty",layersVis,"visible",true); 		
	}
	if (layersInvis != undefined && layersInvis.length>0){							
		app.call("map_"+themaMapLayer, "setLayerProperty",layersInvis,"visible",false); 	
	}
	if ((layersInvis != undefined && layersInvis.length>0)||(layersVis != undefined && layersVis.length>0) ){
		app.call("map_"+themaMapLayer,"update");
	}
}
if (themaMapLayer){
	createOnInitThemaEvent();
}
/* Functie maakt een onInit event aan op de thema kaart. Zodra die geladen is kunnen er lagen visible worden geset. Voor de zekerheid nog een vertraging van 100ms.*/
function createOnInitThemaEvent(){
	eval("map_"+themaMapLayer+"_onInit= function(){setTimeout('setLayersVisible()',100);};");	
}

/*******************************************************************************
 Functie controleert of er een extent in de url is opgegeven. Dit kan een named extent zijn
 maar ook een 4 coordinaten extent.
*/

function zoomToExtentParam(){
	//In de website van zuid holland wordt een parameterwaarde doorgegeven zonder naam
	//Check hier of die waarde bestaat:
	parExt = getURLParam(""); 

	// Als parExt leeg is, check dan de parameter ext.
	if (parExt == "") parExt = getURLParam("ext");

	// parExt kan zijn een string of een serie van vier ordinaten.
	// 1) in geval van een string is het een named extent en wordt gezocht naar de extent in
	// 2) in geval van vier ordinaten is de extent dus direct bekend
	if (parExt != "") {
		var arrTmp = new Array();
		// check for an enumerated extent, e.g. 210000 579500 231500 596500
		isNamedExt = true;
		arrTmp = parExt.split(",");
		// examine a value that has four parts to see whether it's a enumerated extent
		if (arrTmp.length == 4) {
			isNamedExt = false;
			// check the type of each part
			// in case one or more values arn't numbers it must be a named extent
			for (var i = 0; i < 4; i++) {
				if (isNaN(arrTmp[i]))
					isNamedExt = true;
			}
		}
		// het blijkt een named extent te zijn. Init de lijst met extends en zoek de extent die bij de named extent.
		if (isNamedExt == true) {
			initNamedExtents();
			tmp = lookUpExtent(parExt, 1);
			if (tmp != "") {
				// extent gevonden: zoom met flamingo naar de opgegeven extent
				zoomToExtent(tmp);
			}
		}
		//geen named extent maar 4 coordinaten van de extent.
		else {		
			zoomToExtent(parExt);
		}
	}
}
/*******************************************************************************
Deze functie checked of parameter 'layers' bestaat. 
Zo ja, dan wordt aangenomen dat ook parameter featureID bestaat.
De waarden van deze twee parameters worden daarna gebruikt om te zoomen naar het gegeven feature.
VB: [URL]?layers=gemeente&featureId=Alkemade
**********************************************************************************/
function zoomToLivelink(){
    strIdLocFinder = unescape(getURLParam("layers"));   // Voor Geoweb Was deze parameter de layername, hier is het de id van de locations ( in de location finder). 
    if (strIdLocFinder != "") {
        strFeatureID= unescape(getURLParam("featureID")); // In geoweb is dit de featureID waarnaartoe gezoomd moet worden. Hier is het de waarde van het veld in de gegeven locationfinder.  
        var app = getMovie("flamingo");	
	app.call("flamingo" , "setArgument", "locationfinder" , "find" ,strIdLocFinder+","+ strFeatureID );
    }
}


function printMap() {
	// basic printing facility using the browser print function
	if (window.print) {
		alert("Voor een goed resultaat dient u uw printer \nin te stellen op liggend papierformaat.");
	window.print();
	}
	else {
		alert("Uw browser ondersteunt deze functie niet")
	}
}

// Deze functies zijn gecopieerd uit de fscripts.js van de risicokaart

// Deze functies zijn gecopieerd uit de fscripts.js van de risicokaart.
//voor het ophalen van het flash object in JavaScript.
function getMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	}else {
		return document[movieName];
	}
}
/**
Hiermee kan je een parameter uit de url halen.
*/
function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")+1);
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			var aParam = aQueryString[iParam].split("=");
			if ( strParamName == "") {
				if ( aParam[1] == undefined) {
					strReturn = aParam[0];
					break;
				}
			}
			else {
			  if ( aQueryString[iParam].toLowerCase().indexOf(strParamName.toLowerCase() + "=") > -1 ){
  			  strReturn = aParam[1];
				break;
	  		}
			}
		}
	}
	return unescape(strReturn);
}
function popWin(URLtoOpen, windowName, windowFeatures) {
	if ((windowFeatures == "") || (windowFeatures == undefined)) {
		windowFeatures = "width=500,height=400,top=60,left=60,toolbar=no,scrollbars=yes,resizable=yes";
	}
	// open a child popup
	var newWin = window.open("", windowName, windowFeatures);
	if (newWin != null) {
		newWin.location.href = URLtoOpen;
		newWin.focus();
		childPopups[childPopupNr++] = newWin;
	}
}

//Laat flamingo naar een opgegeven extent zoomen.
function zoomToExtent(extent){
	var app = getMovie("flamingo");	
	app.call("flamingo" , "setArgument", "map" , "extent" , extent);
}

// Deze functie initialiseerd de array met alle extents.
function initNamedExtents() {
	var i = 0;
	if (!window.Array) return;
	// exts = new Array();
	// check for existance of the function listNamedExtents()
	if (typeof(listNamedExtents) == "function") {
		listNamedExtents(i);
	}
	// Sort list in ascending alphabetical order (a binary search requirement)
	if (exts.sort) {
		exts.sort(itemCompare);

	}
}

//comparator: vertelt hoe objecten vergeleken moeten worden. Deze comparator wordt gebruikt voor het sorteren
//van de named extents. Deze comperator sorteert het op basis van case insensitive (maakt overal kleine letters van)
function itemCompare(a, b) {
  var anew = a.toLowerCase();
  var bnew = b.toLowerCase();
  if (anew < bnew) {
		return -1;
	}
  if (anew > bnew) {
		return 1;
	}
  return 0;
}

//< Edit Ingmar 07-05-2009 tbv geparametriseerd zoeken en inzoomen op Zuid-holland >
// Deze functie vergelijkt een string met een getalreeks en bepaalt of de string numeriek is.
function IsNumeric(strString)
   //  Controleer de binnenkomende string op numerieke waarden
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString op getallen uit de getalreeks
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
}

// Deze functie zoekt in de array naar een gegeven namedextent
// Hij geeft dan de extent terug als resType niet nul is.
//resType kan 0 of 1 zijn. Bij 0 wordt de naam van de namedExtent gegeven. Bij 1 wordt de extent gegeven.
function lookUpExtent(namedExtent, resType) {
	var i = 0;
	var s = namedExtent.toLowerCase();
	// Binary search based on code from http://www.informatik.uni-stuttgart.de/zdi/lehre/gdi/1/
	var left;
	var right;
	//< Edit Ingmar 07-05-2009 tbv geparametriseerd zoeken en inzoomen op Zuid-holland >
	var ArrayItem;
	left = 0;
	right = exts.length-1;
	
	//< Edit Ingmar 07-05-2009 tbv geparametriseerd zoeken en inzoomen op Zuid-holland >
	// Is de opgegeven string numeriek, zo ja is het een regio (bijv. Zuid, West-Holland, Rijnmond etc.), 
	// zo nee dan is het een bedrijventerrein en moet de andere procedure worden doorlopen.
	if (IsNumeric(exts[0]) == false) 
	{

		for (i = 0; i < exts.length; i++) 
			{
			// Vul de variabele Arrayitem met de volgende record uit het array
			ArrayItem = exts[i].substring(0,exts[i].lastIndexOf('='));
			
			// Vergelijk de named extent met de variabele Arrayitem met de functie itemcompare
			if (itemCompare(s, ArrayItem) ==0)
				{	
				// alert ('Joepieeeee!!!!!!  ' +  s + '  ==  ' + ArrayItem)
				return exts[i].substring(exts[i].lastIndexOf('=')+1,exts[i].length);
				}
			else 
				{
				// Waarde niet gevonden ga door met de originele afvraging 
				}
		}
	}

	
	//vergelijkt de namedExtent met een waarde in de lijst. Als de waarde kleiner is dan de gezochte waarde gaat hij een plek verder zoeken. Als de waarde groter is dan gaat hij een plek eerder zoeken.
	while ((left <= right)&&(exts[i = (left + right) >> 1].toLowerCase().substring(0,exts[i = (left + right) >> 1].lastIndexOf('=')) != s)) {
		if (s < exts[i].toLowerCase()) {
			right = i - 1;
		}
		else {
			left = i + 1;
		}
	}
	if (left > right) {
		return "";		// item not found
	}
	else {
		// Return the namedExtent name (resType==0) or the namedExtent extent (resType==1)
		if (resType == 0) {
			return exts[i].substring(0,exts[i].lastIndexOf('='));
		}
		else {
			return exts[i].substring(exts[i].lastIndexOf('=')+1,exts[i].length);
		}
	}
}

// toegevoegd voor de export knop
function tool_export_onClick(imageUrl, legendUrl, width, height, formaat, stand){
		var data = "imageUrl="+imageUrl+"&legendUrl="+legendUrl+"&width="+width+"&height="+height+"&formaat="+formaat+"&stand="+stand;
		window.open("http://acc047.acceptatie.local/exportMap/ExportMapHandler.ashx?"+data,
'_self');
		flamingo.call("tool_export", "stopUpdating");
	}

function openNewWindow(URLtoOpen, windowName, windowFeatures) {
// open a child popup
	var newWin = window.open("", windowName, windowFeatures);
	if (newWin != null) {
		newWin.location.href = URLtoOpen;
		newWin.focus();
		childPopups[childPopupNr++] = newWin;
	}
}
function closeDepWins() {
// Close any open child popup windows (called from body onUnload event)
	for (var i = 0; i < childPopups.length; i++) {
		if (childPopups[i] && !childPopups[i].closed) {
			childPopups[i].close();
		}
	}
}