String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

var reqXml=false;
var aicnXml = false;
var dropdownArray = new Array("accomodatie", "ligging", "park", "vertrekdatum", "aankomstdatum", "personen");
var interval, interval2;
var animInterval;
var IEversion = vIE();
var isHome;
var flashVersion;
var themeBlocks = new Array("zeeblock", "natuurblock", "waterblock");
var themeIds = new Array("vakantieaanzee", "natuurlijkgenieten", "watersport");
var itemHeight = 18;
var myVertrekCal;
var myAankomstCal;
var currentCal;

var myPersonen, myAccomodatie, myLigging, myPark, myVertrekdatum, myAankomstdatum = new Array();
var myPersonenLabel, myAccomodatieLabel, myLiggingLabel, myParkLabel, myVertrekdatumLabel, myAankomstdatumLabel;
var selectedAccId, selectedVb, selectedObjType, selectedStartDate, selectedEndDate, selectedDays, selectedPersonen;

var boekVb, boekType, boekStartDate, boekEndDate, boekPersonen;
var boekBeschikbaar, boekOmschrijving, boekPrijs, currentAvailable = new Array();

var virtueelboeken = "http://www.virtueelboeken.nl/index.asp?";
var getAicnDataType, currentPriceIndex;


if (typeof theLanguage == 'undefined') {
	var theLanguage = "nl";
}

function getCookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

function setCookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( ("/") ? ";path=" + "/" : "") +
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
}

function deleteCookie(name,path,domain) {
    if (getCookie(name)) document.cookie = name + "=" +
       ( (path) ? ";path=" + path : "") +
       ( (domain) ? ";domain=" + domain : "") +
       ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

function vIE() {
	return (navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;
}

function setStylesheet(id)
{
	if (id == undefined)
		id = "normal";
	else setCookie('stylesheet', id);

	if (navigator.appName.indexOf("NetFront") >=0 || navigator.appName.indexOf("WebTV") >=0) 
		setCookie('stylesheet','normal');
	
	if (getCookie('stylesheet'))
		var css = 'fontsize_'+(getCookie('stylesheet'))+'.css';
	else
		var css = 'fontsize_normal.css';

	
	var headID = document.getElementsByTagName("head")[0];
	var cssNode = document.createElement('link');
	cssNode.type = 'text/css';
	cssNode.rel = 'stylesheet';
	cssNode.href = '/fileadmin/templates/main/'+css;
	cssNode.media = 'screen';
	headID.appendChild(cssNode);

	interval = window.setInterval("doSetScrollBar()", 100);
	
	
	return false;
}


function insertIEcss()
{
	var headID = document.getElementsByTagName("head")[0];
	var cssNode = document.createElement('link');
	cssNode.type = 'text/css';
	cssNode.rel = 'stylesheet';
	cssNode.href = '/fileadmin/templates/main/ie.css';
	cssNode.media = 'screen';
	headID.appendChild(cssNode);
	
}

function doAnalytics()
{
	var pageTracker = _gat._getTracker("UA-1157780-1");
	pageTracker._initData();
	pageTracker._trackPageview();
}

function changeProgram(obj)
{
	var theIndex = obj.selectedIndex;
	var theCount = 0;
	
	while(document.getElementById('xmlprogram_'+theCount) != undefined) {
		var theProg = document.getElementById('xmlprogram_'+theCount);
		if (theCount == theIndex) {
			theProg.style.display = "block";
		} else {
			theProg.style.display = "none";
		}
	
		theCount++;
	}
	
	interval = window.setInterval("doSetScrollBar()", 100);
}

function openDropdown(obj, nr)
{

	var theDropdown = obj;
	var theId = theDropdown.id;
	var theContent = document.getElementById(theId+"-content");
	
	
	if (theDropdown.className == "dropdownselectordisabled") {
		return false;
	}
	
	var theHeight = 20;
	var theOffset = 28 + (nr * 20);

	
	if (theId == "dropdown-vertrekdatum") {
		currentCal = "vertrekdatum";
		if (selectedStartDate != undefined && selectedStartDate != "") {
			var theDate = selectedStartDate.split("-");
			var myOpenDate = new Date(theDate[1]+"/"+theDate[0]+"/"+theDate[2]);
			
			if (selectedEndDate == undefined || selectedEndDate == "") {
				myVertrekCal.setDate(myOpenDate);
			}
		}
		else {
			myVertrekCal.refresh();
		}
		
		myVertrekCal.showAtElement(document.getElementById("dropdown-vertrekdatum-label"), "Tl");
	}
	else if (theId == "dropdown-aankomstdatum") {
		currentCal = "aankomstdatum";
		myAankomstCal.refresh();
		myAankomstCal.showAtElement(document.getElementById("dropdown-aankomstdatum-label"), "Tl");	
	}
	else {
		if (theContent) {
			theContent.style.top = ""+theOffset+"px";
			if (theContent.style.display != "block")
				theContent.style.display = "block";
			else
				theContent.style.display = "none";
		}
		theContent.scrollTop = 0;
	}
	
	for(var i=0; i < dropdownArray.length; i++) {
		if (theId != "dropdown-"+dropdownArray[i]) {
			document.getElementById("dropdown-"+dropdownArray[i]+"-content").style.display = "none";
		}
	}
	
}

function enableDropdown(id, enable)
{
	var theSelector = document.getElementById("dropdown-"+id);
	var theLabel = document.getElementById("dropdown-"+id+"-label");
	
	if (enable) {
		theSelector.className = "dropdownselector";
		theLabel.className = "dropdownbar";
	}
	else {
		theSelector.className = "dropdownselectordisabled";
		theLabel.className = "dropdownbardisabled";
	}
}

function setSelection(obj)
{
	var theDropdownContent = obj.parentNode.parentNode.parentNode;
	var theDropdownLabelId = theDropdownContent.id.substring(0, theDropdownContent.id.lastIndexOf("-"));
	var theDropdownLabel = document.getElementById(theDropdownLabelId+"-label");

	var theId = theDropdownLabelId.substring(theDropdownLabelId.indexOf("-") + 1);
	
	switch(theId) {
		case "accomodatie":
			
			//Check selected option
			for (var i=0;i<myAccomodatie.length;i++) {
				if (myAccomodatie[i][0] == obj.innerHTML) {
					var theDataId = myAccomodatie[i][2];
					var theParkIds = myAccomodatie[i][1];
					var theParkArray = theParkIds.split(",");
					break;
				}
			}
			
			selectedAccId = theDataId;
			
			var myTempPark = new Array();
			var myTempLigging = new Array();
			for (var i=0;i<theParkArray.length;i++) {
				// Get available parks
				myTempPark.push(myPark[theParkArray[i]][0]);
			}
			
			//Get available ligging of park
			for (var j=0;j<myLigging.length;j++) {
				var tempParkIds = myLigging[j][1];
				var tempParkArray = tempParkIds.split(",");
				var inLigging = false;
				for (var k=0;k<tempParkArray.length;k++) {
				
					for (var l=0;l<theParkArray.length;l++) {
				
						if (theParkArray[l] == tempParkArray[k]) {
							inLigging = true;
							break;
						}
					}
				}
				if (inLigging)
					myTempLigging.push(myLigging[j][0]);
			}
			
			//Get data of accomodation
			myAankomstdatum = getDataValues("aankomstdatum", reqXml.responseXML, theDataId);
			
			fillDropdown("ligging", myTempLigging);
			enableDropdown("ligging", true);
			fillLabel("ligging", myLiggingLabel);
			if (myTempLigging.length < 4)
				setDropdownHeight("ligging", (myTempLigging.length * itemHeight));
			else
				setDropdownHeight("ligging", 0);
			
			fillDropdown("park", myTempPark);
			enableDropdown("park", true);
			fillLabel("park", myParkLabel);
			if (myTempPark.length < 4)
				setDropdownHeight("park", (myTempLigging.length * itemHeight));
			else
				setDropdownHeight("park", 0);
			
			enableDropdown("vertrekdatum", false);
			enableDropdown("aankomstdatum", false);
			enableDropdown("personen", false);
			
			
			//fillDropdown("aankomstdatum", myAankomstdatum);
			fillLabel("aankomstdatum", myAankomstdatumLabel);
			fillLabel("vertrekdatum", myVertrekdatumLabel);
			fillLabel("personen", myPersonenLabel);

			selectedVb = null;
			selectedObjType = null;
			selectedPersonen = null;
			
			break;
			
		case "ligging":
			
			selectedVb = '';
			selectedObjType = '';
			
			//Check selected Accomodatie
			for (var i=0;i<myAccomodatie.length;i++) {
				if (myAccomodatie[i][0] == document.getElementById("dropdown-accomodatie-label").innerHTML) {
					var theParkIds = myAccomodatie[i][1];
					var theParkArray = theParkIds.split(",");
					break;
				}
			}
			
			//Check selected option
			for (var i=0;i<myLigging.length;i++) {
				if (myLigging[i][0] == obj.innerHTML) {
					var theLiggingIds = myLigging[i][1];
					var theLiggingArray = theLiggingIds.split(",");
					break;
				}
			}

			//Get available parks of ligging
			var myTempPark = new Array();
			for (var k=0;k<theLiggingArray.length;k++) {
				for (var l=0;l<theParkArray.length;l++) {
			
					if (theLiggingArray[k] == theParkArray[l]) {
						myTempPark.push(myPark[theLiggingArray[k]][0]);
						if (myPark[theLiggingArray[k]][1] != null) {
							selectedVb += ','+myPark[theLiggingArray[k]][1];
							selectedObjType += ','+getParkAttribute('park', theLiggingArray[k], selectedAccId);
						}
						break;
					}
				}
			}
			
			fillDropdown("park", myTempPark);
			enableDropdown("park", true);
			fillLabel("park", myParkLabel);
			if (myTempPark.length < 4)
				setDropdownHeight("park", (myTempPark.length * itemHeight));
			else
				setDropdownHeight("park", 0);
				
			enableDropdown("personen", true);
						
			selectedVb = selectedVb.substring(1);
			selectedObjType = selectedObjType.substring(1);
			
			break;
			
		case "park":
			
			//Check selected park
			for (var i=0;i<myPark.length;i++) {

				if (typeof myPark[i] != "undefined") {
					if (myPark[i][0] == obj.innerHTML) {
						var theSelectedParkId = i;
						break;
					}
				}
				
			}
						
			selectedVb = myPark[theSelectedParkId][1];
			
			if (selectedAccId)
				selectedObjType = getParkAttribute('park', theSelectedParkId, selectedAccId);

			enableDropdown("personen", true);
			
			break;
		
		case "personen":
		
			//Check selected park
			for (var i=0;i<myPersonen.length;i++) {

				if (typeof myPersonen[i] != "undefined") {
					if (myPersonen[i][0] == obj.innerHTML) {
						selectedPersonen = myPersonen[i][0];
						break;
					}
				}
			}
			
			enableDropdown("aankomstdatum", true);
			
			break;
		
	}
	
	theDropdownLabel.innerHTML = obj.innerHTML;
	theDropdownContent.style.display = "none";
	
	return false;
	
}

function fillDropdown(id, data)
{
	var theDropdown = document.getElementById("dropdown-"+id+"-content");
	var str = '';
	
	for (var i = 0;i < data.length; i++) {
		if (typeof data[i] == 'string')
			str += '<li><a href="#" onclick="return setSelection(this);\">'+data[i]+'</a></li>';
		else
			str += '<li><a href="#" onclick="return setSelection(this);\">'+data[i][0]+'</a></li>';
	}
	theDropdown.innerHTML = '<ul>'+str+'</ul>';
}


function resetDropdowns()
{
	for(var i=0; i < dropdownArray.length; i++) {
		var theContent = document.getElementById("dropdown-"+dropdownArray[i]+"-content");
		theContent.style.display = "none";
	}
}

function doOnload(aIsHome)
{

    flashVersion = deconcept.SWFObjectUtil.getPlayerVersion();
	flashVersion = flashVersion["major"];

	if ((IEversion < 7) && (IEversion > 4)) {
		insertIEcss();
	}
	if (aIsHome != true) {
		isHome = false;
		
		initScrollbar();
		
		setStylesheet();
		
		var so = new SWFObject("/fileadmin/templates/main/flash/imagefader.swf", "homepage", "300", "375", "8", "#ffffff");
		so.addParam("quality", "high");
		so.addParam("wmode", "transparent");
		
		for (var i=1; i <= 4; i++) {
			if (document.getElementById('contentflashimage'+i) != undefined) {
				var theSrc = document.getElementById('contentflashimage'+i).src;
				so.addVariable("flashimg"+i, theSrc);
			}
		}
		
		so.write("contentimage");
		
	}
	else {
	
		isHome = true;

		createParkFlash();
				
		var flashContainer = document.getElementById("flashcontainer");
		
		var so = new SWFObject("/fileadmin/templates/main/flash/homepage.swf", "homepage", "960", "336", "8", "#ffffff");
		so.addParam("quality", "high");
		so.addParam("wmode", "transparent");
	
		var flashHeader = document.getElementById('flashheader').innerHTML;
		var flashSubheader = document.getElementById('flashsubheader').innerHTML;
		var flashContent = document.getElementById('flashcontent').innerHTML;
		if (document.getElementById('flashicon') != undefined) {
			var flashIcon = document.getElementById('flashicon').src;
			
			if (document.getElementById('linkParkHome') != undefined)
				var flashIconLink = document.getElementById('linkParkHome').href + 'uitleg-pictogrammen/';
			else
				var flashIconLink = document.getElementById('flashiconlink').href;
			
			var parkName = flashIcon.substring(flashIcon.lastIndexOf('icons_')+6,flashIcon.lastIndexOf('.gif'));
			if (parkName.lastIndexOf('_') > 0) {
				parkName = parkName.substring(0, parkName.lastIndexOf('_'));
			}
			so.addVariable("parkname", parkName);
			so.addVariable("flashiconlink", flashIconLink);
		}
		else {
			document.getElementById('flashiconlink').style.display = 'none';
		}
		
		if (typeof theLanguage != 'undefined') {
			so.addVariable("lang", theLanguage);
		}
		
		if (typeof theTheme != 'undefined') {
			so.addVariable("theme", theTheme);
		}
		
		so.addVariable("flashheader", flashHeader);
		so.addVariable("flashsubheader", flashSubheader);
		if (flashContent != '') {
			so.addVariable("flashcontent", flashContent);
		}
		else {
			document.getElementById('flashcontent').style.display = 'none';
		}
		
		
		for (var i=1; i <= 4; i++) {
			if (document.getElementById('flashimage'+i) != undefined) {
				var theSrc = document.getElementById('flashimage'+i).src;
				so.addVariable("flashimg"+i, theSrc);
			}
		}
		
		so.write("flashcontainer");
		
		if (flashVersion < 8) {
			flashContainer.style.display = 'block';
			
			//replace '|' with space in non-flash version
			flashHeader = flashHeader.replace(/\|/g, '&nbsp;');
			flashSubheader = flashSubheader.replace(/\|/g, '&nbsp;');
			
			document.getElementById('flashheader').innerHTML = flashHeader;
			document.getElementById('flashsubheader').innerHTML = flashSubheader;
		}
		

	}
	
	/*
	loadXMLDoc("/fileadmin/xml/boeken.xml");
	
	doSetBoekVariables();
	
	myVertrekCal = new Calendar(0, null, ourOnSelect, ourOnClose);
	myVertrekCal.setDateFormat("%d-%m-%Y");
	myVertrekCal.setDateStatusHandler(ourDateStatusFunc);
	myVertrekCal.showTime = false;
	myVertrekCal.setRange(2008, 2099);
	myVertrekCal.showsOtherMonths = false;
	myVertrekCal.create(null);
	
	myAankomstCal = new Calendar(0, null, ourOnSelect, ourOnClose);
	myAankomstCal.setDateFormat("%d-%m-%Y");
	myAankomstCal.setDateStatusHandler(ourDateStatusFunc);
	myAankomstCal.showTime = false;
	myAankomstCal.setRange(2008, 2099);
	myAankomstCal.showsOtherMonths = false;
	myAankomstCal.create(null);
	*/
	//Google Analytics
	//doAnalytics();
}



function doSetBoekVariables()
{
	var searchString = document.location.search;

	if (!searchString) return false;
	
	searchString = searchString.substring(1);
	var nvPairs = searchString.split("&");
		
	if (nvPairs.length > 0) {
		for (i = 0; i < nvPairs.length; i++) {
		     var nvPair = nvPairs[i].split("=");
			 switch(nvPair[0]) {
				case "vb":
					boekVb = nvPair[1];
					break;
				case "type":
					boekType = nvPair[1];
					break;
				case "s":
					boekStartDate = nvPair[1];
					break;
				case "e":
					boekEndDate = nvPair[1];
					break;
				case "p":
					boekPersonen = nvPair[1];
					break;
			}			 
		}
		
		if (boekVb && boekType && boekStartDate && boekEndDate && boekPersonen) {
			startBooking();
		}		
	}
}



// this is the actual date status handler.  Note that it receives the
// date object as well as separate values of year, month and date, for
// your confort.
function ourDateStatusFunc(date, y, m, d) {
	if ((currentCal == "vertrekdatum")) {
		var myStartDate = selectedStartDate.split("-");
		var ty = myStartDate[2];
		var tm = myStartDate[1];
		var td = myStartDate[0];
    }
	else {
		var today = new Date();
		var ty = today.getFullYear();
		var tm = today.getMonth();
		var td = today.getDate();
		tm = tm+1;
		if (td < 10) {td = "0"+td;}
		if (tm < 10) {tm = "0"+tm;}
	}
	
    m = m+1;

	if (d < 10) {d = "0"+d;}
	if (m < 10) {m = "0"+m;}
	
	// Always select today; otherwise bug in calendar (null date object)
	if ( (y == ty) && (m == tm) && (d == td) ) {
        return false;
    }
	
	// disable days in the past or smaller than aankomstdatum
	if (y+""+m+""+d < ty+""+tm+""+td) {
		return true;
	}
	else {

		if (myAankomstdatum.length > 0) {
			for (var i=0; i<myAankomstdatum.length;i++) {
				if (myAankomstdatum[i] == d+"-"+m+"-"+y) {
					return 'available';//false;
				}
			}
		}
	}
	
	return true;
}

function ourOnClose(calendar) {
  calendar.hide();
};


function ourOnSelect(calendar, aDate) {
	var d = calendar.date;
	var theAankomstDatum = document.getElementById("dropdown-aankomstdatum-label");
	var theVertrekDatum = document.getElementById("dropdown-vertrekdatum-label");
	
	switch(currentCal) {
		case "aankomstdatum":
			selectedStartDate = aDate;
			theAankomstDatum.innerHTML = aDate;
			enableDropdown("vertrekdatum", true);
			break;
		case "vertrekdatum":
			selectedEndDate = aDate;
			theVertrekDatum.innerHTML = aDate;
			break;
	}

	var ta = theAankomstDatum.innerHTML.split("-");
	var tv = theVertrekDatum.innerHTML.split("-");
	
	if (ta[2]+""+ta[1]+""+ta[0] > tv[2]+""+tv[1]+""+tv[0]) {
		selectedEndDate = "";
		theVertrekDatum.innerHTML = myVertrekdatumLabel;
	}	
	
	if (calendar.dateClicked) {
		calendar.callCloseHandler();
	}
};


function createParkFlash()
{
	for (var j=0; j < themeBlocks.length; j++) {
		
		if (flashVersion >= 8) {
			var theDiv = document.getElementById(themeBlocks[j]);
			theDiv.style.background = 'none';
		}

		var so = new SWFObject("/fileadmin/templates/main/flash/theme.swf", "homepage", "310", "150", "8", "#ffffff");
		so.addParam("quality", "high");
		//so.addParam("wmode", "transparent");
		
		var theId = themeIds[j];
		var theObj = document.getElementById(theId);
		var theMainTitle = document.getElementById(theId+'-title').innerHTML;
		var theMainLink = document.getElementById(theId+'-link').href;
		
		theMainTitle = escapeFlashVars(theMainTitle);
		
		so.addVariable("id", theId);
		so.addVariable("titel", theMainTitle);
		so.addVariable("url", theMainLink);
		
		if (theObj.firstChild) {
			var oChild = theObj.firstChild;
			var n = 0;
			while(oChild) {
				if(oChild.nodeType==1) {
					var theLink = oChild.firstChild.href;
					var theTitle = oChild.firstChild.innerHTML;
					so.addVariable("l"+n, theLink);
					so.addVariable("t"+n, theTitle);
					n++;
				}
				oChild = oChild.nextSibling;
			}
		}
		so.write(themeBlocks[j]);
	}
}

function escapeFlashVars(aStr)
{
	return aStr.replace("&amp;", "%26");
}

function doSetScrollBar()
{

	if (interval != undefined) {
		window.clearInterval(interval);
	}
	if (interval2 != undefined) {
		window.clearInterval(interval2);
	}
	
	setScrollbar();
	
	//initScrollbar();
}

function loadXMLDoc(url) 
{
	reqXml = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			reqXml = new XMLHttpRequest();
	    } 
		catch(e) {
			reqXml = false;
	    }
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			reqXml = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch(e) {
			try {
				reqXml = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch(e) {
				reqXml = false;
			}
		}
	}
	if(reqXml) {
		reqXml.onreadystatechange = processObjectXml;
		reqXml.open("GET", url, true);
		reqXml.send('');
	}
}

function loadAICNDoc(url, aSendXml) 
{
	aicnXml = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			aicnXml = new XMLHttpRequest();
	    } 
		catch(e) {
			aicnXml = false;
	    }
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			aicnXml = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch(e) {
			try {
				aicnXml = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch(e) {
				aicnXml = false;
			}
		}
	}
	if(aicnXml) {
		aicnXml.onreadystatechange = processAICNXml;
		aicnXml.open("POST", '/proxy.php?proxy_url=' + encodeURIComponent(url)+'&requestxml='+encodeURIComponent(aSendXml), true);
		aicnXml.send(aSendXml);
	}
}

function getAicnData()
{
	//var sendXml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
	var sendXml = "";
	switch (getAicnDataType) {
	
		case "beschikbaar":
	
			sendXml += "<virtueelboeken>\n";
			sendXml += "<klant>2054</klant>\n";
			sendXml += "<wachtwoord>molecXMLf</wachtwoord>\n";
			sendXml += "<begindatum>"+boekStartDate+"</begindatum>\n";
			sendXml += "<einddatum>"+boekEndDate+"</einddatum>\n";
			sendXml += "</virtueelboeken>\n";
	
			loadAICNDoc ("http://extern.virtueelboeken.nl/xml/beschikbaarobjecttype.asp", sendXml);
	
			break;

		case "omschrijving":
	
			sendXml += "<virtueelboeken>\n";
			sendXml += "<klant>2054</klant>\n";
			sendXml += "<wachtwoord>molecXMLf</wachtwoord>\n";
			sendXml += "</virtueelboeken>\n";
	
			loadAICNDoc ("http://extern.virtueelboeken.nl/xml/objecttypen_concern.asp", sendXml);
	
			break;
			
		case "prijs":
	
			sendXml += "<virtueelboeken>\n";
			sendXml += "<klant>"+currentAvailable[currentPriceIndex][0]+"</klant>\n";
			sendXml += "<wachtwoord>molecXMLf</wachtwoord>\n";
			sendXml += "<objecttype>"+currentAvailable[currentPriceIndex][1]+"</objecttype>\n";
			sendXml += "<begindatum>"+boekStartDate+"</begindatum>\n";
			sendXml += "<einddatum>"+boekEndDate+"</einddatum>\n";
			sendXml += "</virtueelboeken>\n";
	
			loadAICNDoc ("http://extern.virtueelboeken.nl/xml/prijsberekening.asp", sendXml);
	
			break;
			
		case "arrangement":
	
			sendXml += "<virtueelboeken>\n";
			sendXml += "<klant>"+currentAvailable[currentPriceIndex][0]+"</klant>\n";
			sendXml += "<wachtwoord>molecXMLf</wachtwoord>\n";
			sendXml += "<objecttype>"+currentAvailable[currentPriceIndex][1]+"</objecttype>\n";
			sendXml += "<begindatum>"+boekStartDate+"</begindatum>\n";
			sendXml += "<einddatum>"+boekEndDate+"</einddatum>\n";
			sendXml += "</virtueelboeken>\n";
	
			loadAICNDoc ("http://extern.virtueelboeken.nl/xml/prijsberekeningarrangementen.asp", sendXml);
	
			break;
	}
	
	return false;
}


function getValuesFor(aNodeName, xml, theLanguage)
{
	var response = new Array();
	var root = reqXml.responseXML.getElementsByTagName(aNodeName)[0];

	
	if (aNodeName == "park" || aNodeName == "personen") {
		var items = root.childNodes;
	}
	else {
	
		for (var i=0; i < root.childNodes.length; i++) {
            if (root.childNodes[i].nodeName == theLanguage) {
                var items = root.childNodes[i].childNodes;
                
                break;
            }
		}
	}
		
	if (items != undefined) {
		for (var i=0; i < items.length; i++) {
			if (items[i].firstChild != undefined) {
			
				switch(aNodeName) {
					case "accomodatie":
						var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("park"), items[i].getAttribute("id"));
						response.push(temp);
						break;
					case "ligging":
						var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("park"));
						response.push(temp);
						break;
					case "vertrekdatum":
						var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("days"));
						response.push(temp);
						break;
					case "park":
						var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("vb"), items[i].getAttribute("link"));
						var id = parseInt(items[i].getAttribute("id"));
						response[id] = temp;
						break;
					case "personen":
						var temp = new Array(items[i].firstChild.data.trim());
						response.push(temp);
						break;
				}
			}
		}
	}
	
	if ((response.length==0)) return Array("");
	return response;
}





function getParkAttribute(aNodeName, aParkId, aAttribute)
{
	var response = new Array();
	var root = reqXml.responseXML.getElementsByTagName(aNodeName)[0];
	var items = root.childNodes;
			
	if (items != undefined) {
		for (var i=0; i < items.length; i++) {
			if (items[i].firstChild != undefined) {
			
				if (items[i].getAttribute("id") == aParkId) {
					return items[i].getAttribute(aAttribute);
				}
			}
		}
	}
}



function getDataValues(aNodeName, xml, id)
{
	var response = new Array();
	var root = xml.getElementsByTagName(aNodeName)[0];
	var nodes = root.getElementsByTagName(id)[0];
	
	var items = nodes.getElementsByTagName("d");
	
	if (items != undefined) {
		for (var i=0; i < items.length; i++) {
			if (items[i].firstChild != undefined) {
				response.push(items[i].firstChild.data.trim());
			}
		}
	}

	if ((response.length==0)) return Array("");
	return response;
}


function getLabelFor(aNodeName, xml, theLanguage)
{
    var root = xml.getElementsByTagName(aNodeName)[0];

	if (aNodeName == "park" || aNodeName == "aankomstdatum" || aNodeName == "vertrekdatum" || aNodeName == "personen") {
		return root.getAttribute(theLanguage);
	}
	else {
		for (var i=0; i < root.childNodes.length; i++) {
			if (root.childNodes[i].firstChild != undefined) {
				if (root.childNodes[i].nodeName == theLanguage) {
					return root.childNodes[i].getAttribute("label");
				}
			}
		}
	}
}



function setButtonLabels(aNodeName, xml, theLanguage)
{
	var searchButton = document.getElementById('searchbutton');
	//var searchText   = document.getElementById('searchtext');

	var root = xml.getElementsByTagName(aNodeName)[0];

    for (var i=0; i < root.childNodes.length; i++) {
        if (root.childNodes[i].nodeType == 1) {
            if (root.childNodes[i].nodeName == theLanguage) {
                //searchText.innerHTML = root.childNodes[i].getAttribute("label");
                searchButton.innerHTML = root.childNodes[i].getAttribute("button");
                break;
            }
        }
    }
}


function getAicnDataArray(xml, theLanguage)
{
	var response = new Array();
	var root = xml.getElementsByTagName("virtueelboeken")[0];
	var items = root.childNodes;

	switch(theLanguage) {
		case "de":
			var theLangNode = "naamde";
			var thePriceNode = "rekenregelsd";
			var theOmschrijvingNode = "omsd";
			var theUrlNode = "urlboekend";
			break;
		case "en":
			var theLangNode = "naamen";
			var thePriceNode = "rekenregelse";
			var theOmschrijvingNode = "omse";
			var theUrlNode = "urlboekene";
			break;
		default:
			var theLangNode = "naam";
			var thePriceNode = "rekenregels";
			var theOmschrijvingNode = "oms";
			var theUrlNode = "urlboeken";
			break;
	}
	
	
	if (items != undefined) {
		for (var i=0; i < items.length; i++) {
			if (items[i].firstChild != undefined) {
			
				switch(getAicnDataType) {
					case "beschikbaar":
						var subItems = items[i].childNodes;
						var myVb, myType;
						for (var j=0; j < subItems.length; j++) {
							if (subItems[j].nodeName == "klant")
								var myVb = subItems[j].firstChild.data.trim();
							if (subItems[j].nodeName == "objecttype")
								var myType = subItems[j].firstChild.data.trim();
						}
						var temp = new Array(myVb, myType);
						response.push(temp);
						break;

					case "omschrijving":
						var subItems = items[i].childNodes;
						var myVb, myType, myKlant, myOmschrijving, myAantal;
						for (var j=0; j < subItems.length; j++) {
							if (subItems[j].nodeName == "klantnummer")
								var myVb = subItems[j].firstChild.data.trim();
							if (subItems[j].nodeName == "klantnaam")
								var myKlant = subItems[j].firstChild.data.trim();
							if (subItems[j].nodeName == "objecttype")
								var myType = subItems[j].firstChild.data.trim();
							if (subItems[j].nodeName == theLangNode) {
								if (subItems[j].firstChild) {
									var myOmschrijving = subItems[j].firstChild.data.trim();
								}
								else
									var myOmschrijving = 'Omschrijving ontbreekt';
							}
							if (subItems[j].nodeName == "maxaantal")
								var myAantal = subItems[j].firstChild.data.trim();
						}
						var temp = new Array(myVb, myType, myKlant, myOmschrijving, myAantal);
						response.push(temp);
						break;
						
					case "prijs":
						var subItems = items[i].childNodes;
						var myPrijs, myOpmerking;
						for (var j=0; j < subItems.length; j++) {
							if (subItems[j].nodeName == "verblijfskosten") {
								if (subItems[j].firstChild)
									var myPrijs = subItems[j].firstChild.data.trim();
								else
									var myPrijs = "0";
							}
							if (subItems[j].nodeName == thePriceNode) {
								if (subItems[j].firstChild)
									var myOpmerking = subItems[j].firstChild.data.trim();
								else
									var myOpmerking = "";
							}
						}
						var temp = new Array(myPrijs, myOpmerking);
						response.push(temp);
						
						break;
						
						
					case "arrangement":
						var subItems = items[i].childNodes;
						var myPrijs, myDefaultOmschrijving, myOmschrijving, myStartDate, myEndDate, myUrl;
						for (var j=0; j < subItems.length; j++) {
							if (subItems[j].nodeName == "omschrijving") {
								if (subItems[j].firstChild)
									myDefaultOmschrijving = subItems[j].firstChild.data.trim();
								else
									myDefaultOmschrijving = "";
							}
							if (subItems[j].nodeName == theOmschrijvingNode) {
								if (subItems[j].firstChild)
									myOmschrijving = subItems[j].firstChild.data.trim();
								else
									myOmschrijving = "";
								
							}
							if (subItems[j].nodeName == "prijs") {
								if (subItems[j].firstChild)
									myPrijs = subItems[j].firstChild.data.trim();
								else
									myPrijs = "";
							}
							if (subItems[j].nodeName == "begindatum") {
								if (subItems[j].firstChild)
									myStartDate = subItems[j].firstChild.data.trim();
								else
									myStartDate = "";
							}
							if (subItems[j].nodeName == "einddatum") {
								if (subItems[j].firstChild)
									myEndDate = subItems[j].firstChild.data.trim();
								else
									myEndDate = "";
							}
							
							if (subItems[j].nodeName == theUrlNode) {
								if (subItems[j].firstChild)
									var myUrl = subItems[j].firstChild.data.trim();
								else
									myUrl = "";
							}
						}
						
						if (myOmschrijving == "" || myOmschrijving == undefined)
							myOmschrijving = myDefaultOmschrijving;
						
						var temp = new Array(myPrijs, myOmschrijving, myStartDate, myEndDate, myUrl);
						response.push(temp);
						break;
						
				}
			}
		}
	}
	return response;
}

function processAICNXml()
{
	// only if req shows "loaded"
	if (aicnXml.readyState == 4) {
		// only if "OK"
		if (aicnXml.status == 200) {
		
			var xml = aicnXml.responseXML;
			
			switch (getAicnDataType) {
	
				case "beschikbaar":
					boekBeschikbaar = getAicnDataArray(xml, theLanguage);
					
					getAicnDataType = "omschrijving";
					getAicnData();
					
					break;
					
				case "omschrijving":
					boekOmschrijving = getAicnDataArray(xml, theLanguage);
					
					continueBooking();

					break;
					
				case "prijs":
					boekPrijs = getAicnDataArray(xml, theLanguage);
					
					if (boekPrijs.length > 0) {
						
						switch (theLanguage) {
							case "de":
								var theCostLabel = "Aufenthaltskosten";
								break;
							case "en":
								var theCostLabel = "Accommodation expenses";
								break;
							default:
								var theCostLabel = "Verblijfskosten";
								break;
						}
						
						var thePrijsObj = document.getElementById(currentAvailable[currentPriceIndex][0]+'-'+currentAvailable[currentPriceIndex][1]);
						var theBoekUrl = currentAvailable[currentPriceIndex][2];
						var thePrice = boekPrijs[0][0];
						if (thePrice != "0")
							thePrice = thePrice + " Euro";
						else
							thePrice = "laat uw prijs berekenen";
						
						var theHtml = '<div><span class="standaardprijs"><a href="'+theBoekUrl+'" target="_blank">'+thePrice+'</a></span>'+theCostLabel+':</div>';
						theHtml += '<div class="rekenregels">'+boekPrijs[0][1]+'</div>';
						thePrijsObj.innerHTML = theHtml;
						//currentPriceIndex++;
						insertPrices('arrangement');
					}
					

					
					break;
					
				case "arrangement":
					boekPrijs = getAicnDataArray(xml, theLanguage);
					
					if (boekPrijs.length > 0) {
						
						switch (theLanguage) {
							case "de":
								var theFrom = "Vom";
								var theUntil = "bis zum";
								break;
							case "en":
								var theFrom = "From";
								var theUntil = "until";
								break;
							default:
								var theFrom = "Van";
								var theUntil = "t/m";
								break;
						}
						
						var thePrijsObj = document.getElementById(currentAvailable[currentPriceIndex][0]+'-'+currentAvailable[currentPriceIndex][1]+'-a');
						
						var theHtml = '';
						
						for (var m=0; m < boekPrijs.length; m++) {
						
							var thePrice = boekPrijs[m][0];
							if (thePrice != "0")
								thePrice = thePrice + " Euro";
							else
								thePrice = "laat uw prijs berekenen";
						
							theHtml += '<div class="arrangement">';
							theHtml += '<div>'+boekPrijs[m][1]+'<span class="arrangementprijs"><a href="'+boekPrijs[m][4]+'" target="_blank">'+thePrice+'</a></span></div>';
							theHtml += '<div>'+theFrom+' '+boekPrijs[m][2]+' '+theUntil+' '+boekPrijs[m][3]+':</div>';
							theHtml += '</div>';							
						}
						
						thePrijsObj.innerHTML = theHtml;
					}
					currentPriceIndex++;
					insertPrices('prijs');
					
					break;
			}
			
		}
	}
}


function processObjectXml() 
{
	// only if req shows "loaded"
	if (reqXml.readyState == 4) {
		// only if "OK"
		if (reqXml.status == 200) {
		
			var xml = reqXml.responseXML;

			// Fill arrays with xml data
			myAccomodatie 	= getValuesFor('accomodatie', xml, theLanguage);
			myLigging 		= getValuesFor('ligging', xml, theLanguage);
			myPark 			= getValuesFor('park', xml, theLanguage);
			myPersonen		= getValuesFor('personen', xml, theLanguage);
			//myVertrekdatum = getValuesFor('vertrekdatum', xml, theLanguage);


			// Get Labelnames
			myAccomodatieLabel 	 = getLabelFor('accomodatie', xml, theLanguage);
			myLiggingLabel 		 = getLabelFor('ligging', xml, theLanguage);
			myParkLabel 		 = getLabelFor('park', xml, theLanguage);
			myVertrekdatumLabel  = getLabelFor('vertrekdatum', xml, theLanguage);
			myAankomstdatumLabel = getLabelFor('aankomstdatum', xml, theLanguage);
			myPersonenLabel 	 = getLabelFor('personen', xml, theLanguage);
			
			fillLabels();
			
			setButtonLabels("config", xml, theLanguage);
			
            fillDropdown("accomodatie", myAccomodatie);
			
			fillDropdown("personen", myPersonen);
			
			//fillDropdown("vertrekdatum", myVertrekdatum);
		}
	}
}

function fillLabels()
{
	document.getElementById("dropdown-accomodatie-label").innerHTML 	= myAccomodatieLabel;
	document.getElementById("dropdown-ligging-label").innerHTML 		= myLiggingLabel;
	document.getElementById("dropdown-park-label").innerHTML 			= myParkLabel;
	document.getElementById("dropdown-vertrekdatum-label").innerHTML 	= myVertrekdatumLabel;
	document.getElementById("dropdown-aankomstdatum-label").innerHTML 	= myAankomstdatumLabel;
	document.getElementById("dropdown-personen-label").innerHTML 	= myPersonenLabel;
}

function fillLabel(id, label)
{
	document.getElementById("dropdown-"+id+"-label").innerHTML 	= label;
}

function setDropdownHeight(id, height)
{
	document.getElementById("dropdown-"+id+"-content").style.height	= ((height > 0) ? height+'px' : '');
}

function doBooking()
{
	var theError = checkSelection();
    if (theError != false) {
        alert(theError);
    }
    else {
		
		if (isHome) {
			//No contentblock; reload to boeken page and send selected data
			
			switch(theLanguage) {
				case "de":
					var boekenUrl = "/de/molecaten/buche/";
					break;
				case "en":
					var boekenUrl = "/en/molecaten/book/";
					break;
				default:
					var boekenUrl = "/nl/molecaten/boeken/";
					break;
			}
			// vb = Virtueelboeken id, type = objecttype, s = startdatum, e = eindatum, p = aantal personen
			var theUrl = boekenUrl+"?vb="+selectedVb+"&type="+selectedObjType+"&s="+selectedStartDate+"&e="+selectedEndDate+"&p="+selectedPersonen;
			document.location.href = theUrl;
		}
		else {
			//Standard page has contentblock
			boekVb = selectedVb;
			boekType = selectedObjType;
			boekStartDate = selectedStartDate;
			boekEndDate = selectedEndDate;
			boekPersonen = selectedPersonen;
			
			//alert("boekVb: "+boekVb+"\nboekType: "+boekType+"\nboekStartDate: "+boekStartDate+"\nboekEndDate: "+boekEndDate+"\nboekPersonen: "+boekPersonen);
			
			startBooking();
		}
    }
}

function startBooking()
{
	var myHead = document.getElementById("mainheader");
	var myText = document.getElementById("textcontent");
	
	switch(theLanguage) {
		case "de":
			myHead.innerHTML = "<h1>Schnell Buche</h1>";
			myText.innerHTML = "<p>Bitte warten.</p>";
			break;
		case "en":
			myHead.innerHTML = "<h1>Book</h1>";
			myText.innerHTML = "<p>Please wait while data is being collected.</p>";
			break;
		default:
			myHead.innerHTML = "<h1>Snel Boeken</h1>";
			myText.innerHTML = "<p>Even geduld a.u.b. bezig met ophalen van gegevens.</p>";
			break;
	}
	
	
	getAicnDataType = "beschikbaar";
	getAicnData();
	
	doSetScrollBar();
}

function continueBooking()
{
	var myHead = document.getElementById("mainheader");
	var myText = document.getElementById("textcontent");
	var s = "";
	var isTypeAvailable = false;
	
	var myParkName = '';
	var myBoekVb = boekVb.split(",");
	if (boekType)
		var myBoekType = boekType.split(",");
	else
		var myBoekType = new Array();

	currentAvailable = new Array();
	var tempAvailable = new Array();

	switch(theLanguage) {
		case "de":
			s += '<p>F&uuml;r die gew&auml;hlte Periode vom '+boekStartDate+' bis zum '+boekEndDate+' sind folgende Optionen verf&uuml;gbar:</p>';
			var noData = '<p>Schnell suchen und buchen hat nichts gefunden, probieren Sie es bitte via <a href="http://www.virtueelboeken.nl/index.asp?u=3117&type=vakantiereserveren&taal=d" target="_blank">erweiterte Suche</a>.</p>';
			var notAvailable = 'Kein Platz verf&uuml;gbar';
			var reserveerText = new Array('Sie k&ouml;nnen Ihre Reservierung via', 'des folgendes Formulars Anfragen');
			break;
		case "en":
			s += '<p>For the chosen period of '+boekStartDate+' to '+boekEndDate+' inclusive, the following options are available:</p>';
			var noData = '<p>Search and book did not find any information please use our <a href="http://www.virtueelboeken.nl/index.asp?u=3117&type=vakantiereserveren&taal=e" target="_blank">advanced bookings programme</a>.</p>';
			var notAvailable = 'No vacancies';
			var reserveerText = new Array('Apply for reservation by completing', 'this form');
			break;
		default:
			s += '<p>Voor de gekozen periode van '+boekStartDate+' t/m '+boekEndDate+' zijn de volgende opties beschikbaar:</p>';
			var noData = '<p>Snel zoeken en boeken heeft niets gevonden, probeert u het via <a href="http://www.virtueelboeken.nl/index.asp?u=3117&type=vakantiereserveren" target="_blank">uitgebreid zoeken</a>.</p>';
			var notAvailable = 'Geen plek beschikbaar';
			var reserveerText = new Array('U kunt uw reservering aanvragen via', 'het volgende formulier');
			break;
	}

	//Check if no VB number; output form link
	for (var i = 0; i < myBoekVb.length; i++) {
		if (myBoekVb[i] < 100) {
			s += '<h2>'+myPark[myBoekVb[i]][0]+'</h2>';
			var theLink = myPark[myBoekVb[i]][2];
			theLink = theLink.replace("{lang}", theLanguage);
			s += '<ul><li>'+reserveerText[0]+' <a href="'+theLink+'" target="_blank">'+reserveerText[1]+'</a></li></ul>';
		}
	}
	
	if (myBoekType.length > 0) {
	
		for (var i = 0; i < myBoekVb.length; i++) {
			var aTemp = new Array()
			for (var j = 0; j < boekBeschikbaar.length; j++) {
				isTypeAvailable = false;
				if (myBoekVb[i] == boekBeschikbaar[j][0]) {
					for (var k = 0; k < myBoekType.length; k++) {
						if (myBoekType[k] == boekBeschikbaar[j][1]) {
							isTypeAvailable = true;
							break;
						}
					}
					if (isTypeAvailable) {
						aTemp.push(boekBeschikbaar[j][1]);
					}
				}
			}
			tempAvailable.push(new Array(myBoekVb[i], aTemp));
		}
		// Create output
		for (var i=0; i < tempAvailable.length; i++) {
			myParkName = '';
			for (var j=0; j < boekOmschrijving.length; j++) {
				if (tempAvailable[i][0] == boekOmschrijving[j][0]) {
					myParkName = boekOmschrijving[j][2];
					break;
				}
			}
			if (myParkName != '') {
				var myList = '';
				var myUrlLink = '';
				for (var k=0; k < tempAvailable[i][1].length; k++) {
					for (var l=0; l < boekOmschrijving.length; l++) {
						if ((tempAvailable[i][0] == boekOmschrijving[l][0]) && (tempAvailable[i][1][k] == boekOmschrijving[l][1])) {
							myUrlLink = virtueelboeken+'u='+tempAvailable[i][0]+'&objecttype='+tempAvailable[i][1][k]+'&movetobegindatum='+boekStartDate+'&movetoeinddatum='+boekEndDate;
							myList += '<li><b>'+boekOmschrijving[l][3]+'</b>';
							myList += '<div class="arrangement" id="'+tempAvailable[i][0]+'-'+tempAvailable[i][1][k]+'"></div>';
							myList += '<div id="'+tempAvailable[i][0]+'-'+tempAvailable[i][1][k]+'-a"></div></li>';
							currentAvailable.push(new Array(tempAvailable[i][0], tempAvailable[i][1][k], myUrlLink));
							break;
						}
					}
				}
				if (myList == '') {
					myList = '<li>'+notAvailable+'</li>';
				}
				s += '<h2>'+myParkName+'</h2><ul>'+myList+'</ul>';
			}
		}
	}
	if (s == '') {
		s = noData;
	}
	
	if (currentAvailable.length == 0)
		s = noData;
	
	myText.innerHTML = s;
	
	currentPriceIndex = 0;
	insertPrices('prijs');
	
	interval2 = window.setInterval("doSetScrollBar()", 500);
}

function insertPrices(aType)
{
	if (currentPriceIndex < currentAvailable.length) {		
		getAicnDataType = aType;
		getAicnData();
	}
	doSetScrollBar();
}

function checkSelection()
{
    if (document.getElementById("dropdown-accomodatie-label").innerHTML == myAccomodatieLabel) {
        switch (theLanguage) {
            case "de": return 'Geben Sie die gewünschte Akkommodation an';
            case "en": return 'Enter your choice of accommodation';
            default: return 'Vul de gewenste accommodatie in';
        }
    }

	if ((document.getElementById("dropdown-ligging-label").innerHTML == myLiggingLabel) && (document.getElementById("dropdown-park-label").innerHTML == myParkLabel)) {
        switch (theLanguage) {
            case "de": return 'Geben Sie die Lage und/oder den Park an';
            case "en": return 'Enter the location and/or park';
            default: return 'Vul de ligging en/of het park in';
        }
    }
    
	if (document.getElementById("dropdown-personen-label").innerHTML == myPersonenLabel) {
        switch (theLanguage) {
            case "de": return 'Vul het aantal personen in (de)';
            case "en": return 'Vul het aantal personen in (en)';
            default: return 'Vul het aantal personen in';
        }
    }

	
	if (document.getElementById("dropdown-aankomstdatum-label").innerHTML == myAankomstdatumLabel) {
        switch (theLanguage) {
            case "de": return 'Geben Sie das gewünschte Anreisedatum an';                
            case "en": return 'Enter the desired date of arrival';
            default: return 'Vul de gewenste aankomstdatum in';
        }
    }
	
	if (document.getElementById("dropdown-vertrekdatum-label").innerHTML == myVertrekdatumLabel) {
        switch (theLanguage) {
            case "de": return 'Geben Sie das gewünschte Abreisedatum an';                
            case "en": return 'Enter the desired date of departure';
            default: return 'Vul de vertrekdatum in';
        }
    }
	
	
    return false;
}
