String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/, '');
};

//
// BiSa - 22-01-09 - Modifications to ensure the script functions properly in the Boekingsmodule
//
var reqXml = false;
var aicnXml = false;
var maincontent;
var textcontent;
var scrollArea;
var scroller;
var scrolldocH;
var scrollcontH;
var scrollAreaH;
var scrollH;
var scrollDist;
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 selectedParkId; // BiSa - pass on the selected park id
var selectedLiggingId; // BiSa - pass on the selected LiggingId
var selectedAccommodatieNaamNL; // BiSa - pass on the selected selectedAccommodatieNaamNL
var firstParkIdInLigging; // BiSa - first park that is listed in the ligging
var boekVb, boekType, boekStartDate, boekEndDate, boekPersonen;
var boekBeschikbaar, boekOmschrijving, boekPrijs, currentAvailable = new Array();

var virtueelboeken = "http://www.virtueelboeken.nl/index.asp?";
var getAicnDataType, currentPriceIndex;

// bisa temp
var theParkArray;

//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 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);   //FEPL For use in the normal site
    var theOffset = 168 + (nr * 20);  // GeMa MBM-5335 07-05-2010: added with 2px
    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"; // FEPL
            theContent.style.left = "10px"; // GeMa MBM-5335 07-05-2010: substracted with 10px
            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
        if (myAccomodatie != null) {
            for (var i = 0; i < myAccomodatie.length; i++) {
                if (myAccomodatie[i][0] == obj.innerHTML) {
                    var theDataId = myAccomodatie[i][2];
                    var theParkIds = myAccomodatie[i][1];
                    selectedAccommodatieNaamNL = myAccomodatie[i][2]; // GeMa 10-06-2010 MBM-5334 : dutch name instead of id
                    // bisa temp
                    theParkArray = theParkIds.split(",");
                    break;
                }
            }
        }
        
        // gema: determine whether selection is changed
        var selectionChanged = selectedAccId != theDataId;
        selectedAccId = theDataId;
        
        // bisa 
        if (!selectionChanged && ((selectedLiggingId != null) || (selectedParkId != null))) {
            if (selectedLiggingId != null) fillPersonenDropdown(firstParkIdInLigging, selectedAccId);
            else if (selectedParkId != null) fillPersonenDropdown(selectedParkId, selectedAccId);
            enableDropdown("personen", true);
        }
        else {
            var myTempPark = new Array();
            var myTempLigging = new Array();
            if (theParkArray != null) {
                for (var i = 0; i < theParkArray.length; i++) {
                    // Get available parks
                    myTempPark.push(myPark[theParkArray[i]][0]);
                }
            }

            //Get available ligging of park
            if (myLigging != null) {
                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
            // MBM-4784 - 27-07-2009 - BiSa - 
            // 0.  Get accommodation
            // 1.  Get park:
            // 1a. If ligging => get first park valid for it
            // 1b. If park => get park
            // 2.  Select based on park id + accommodation and fill calendars
            // 3.  Get accommodation capacities

            // myAankomstdatum = getDataValues("aankomstdatum", reqXml.responseXML, theDataId);
            // myVertrekdatum = getDataValues("vertrekdatum", 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);
        
            // gema: if park was selected try to set it.
            if (selectedParkId != null) 
            {
                $("/boeken/park/item[@id=" + selectedParkId + "]", reqXml.responseXML).each(function () {
                var parkText = $(this).text();
                SetDropDown(dropdownArray[2], parkText); 
                });
                fillPersonenDropdown(selectedParkId, selectedAccId);
            }
            // gema: if ligging was selected try to set it.
            if (selectedLiggingId != null) 
            {
                $("/boeken/ligging/" + theLanguage + "/item[@lid=" + selectedLiggingId + "]", reqXml.responseXML).each(function () {
                var liggingText = $(this).text();
                SetDropDown(dropdownArray[1], liggingText); 
                });
                if (selectedParkId == null) fillPersonenDropdown(firstParkIdInLigging, selectedAccId);
            }

        } // end check op vars
        //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
        if (myAccomodatie != null) {
            if (myAccomodatie != null) {
                for (var i = 0; i < myAccomodatie.length; i++) {
                    if (myAccomodatie[i][0] == document.getElementById("dropdown-accomodatie-label").innerHTML) {
                        var theParkIds = myAccomodatie[i][1];
                        // bisa temp
                        theParkArray = theParkIds.split(",");
                        break;
                    }
                }
            }
        }

        //Check selected option
        if (myLigging != null) {
            for (var i = 0; i < myLigging.length; i++) {
                if (myLigging[i][0] == obj.innerHTML) {
                    var theDataId = myLigging[i][2];
                    var theLiggingIds = myLigging[i][1];
                    selectedLiggingId = myLigging[i][2];
                    var theLiggingArray = theLiggingIds.split(",");
                    break;
                }
            }
        }

        //Get available parks of ligging
        var myTempPark = new Array();
        var myTempParkIDs = new Array();
        if (theLiggingArray != null) {
            for (var k = 0; k < theLiggingArray.length; k++) {
                for (var l = 0; l < theParkArray.length; l++) {

                    if (theLiggingArray[k] == theParkArray[l]) {
                        myTempParkIDs.push(theLiggingArray[k]);
                        myTempPark.push(myPark[theLiggingArray[k]][0]);
                        if (myPark[theLiggingArray[k]][1] != null) {
                            selectedVb += ',' + myPark[theLiggingArray[k]][1];
                            selectedObjType += ',' + getParkAttribute('park', theLiggingArray[k], selectedAccId);
                        }
                        break;
                    }
                }
            }
        }

        // Get available accommodations
        getAccommodatiesByParks(myTempParkIDs);

        fillDropdown("park", myTempPark);
        enableDropdown("park", true);
        fillLabel("park", myParkLabel);
        if (myTempPark.length < 4) setDropdownHeight("park", (myTempPark.length * itemHeight));
        else setDropdownHeight("park", 0);



        selectedVb = selectedVb.substring(1);
        selectedObjType = selectedObjType.substring(1);
        selectedParkId = myTempParkIDs;
        firstParkIdInLigging = myTempParkIDs[0]; // BiSa - MBM-4784
        fillPersonenDropdown(firstParkIdInLigging, selectedAccId);

        myAankomstdatum = getDateValues("aankomstdatum", firstParkIdInLigging, selectedAccId);
        myVertrekdatum = getDateValues("vertrekdatum", firstParkIdInLigging, selectedAccId);

        // bisa
        if (selectedAccId != null) enableDropdown("personen", true);

        break;

    case "park":
        //Check selected park
        if (myPark != null) {
            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];
        
        var selectionChanged = selectedParkId != theSelectedParkId;
        selectedParkId = theSelectedParkId;
        
        firstParkIdInLigging = null; // BiSa - reset the variable
        selectedLiggingId = null; // BiSa - reset the variable
        if (selectedAccId != null) selectedObjType = getParkAttribute('park', theSelectedParkId, selectedAccId);

        // bisa
        if (!selectionChanged && selectedAccId != null) {
            fillPersonenDropdown(selectedParkId, selectedAccId);
            myAankomstdatum = getDateValues("aankomstdatum", selectedParkId, selectedAccId);
            myVertrekdatum = getDateValues("vertrekdatum", selectedParkId, selectedAccId);
            enableDropdown("personen", true);
        }
        else
        {
            // GeMa 19-04-2010 MBM-5334: getAccommodatiesByParks expects an array as input parameter.
            var myTempParkIDs = new Array();
            myTempParkIDs.push(theSelectedParkId);
            getAccommodatiesByParks(myTempParkIDs);   
            
            // gema: if accomodatie was selected try to set it.
            if (selectedAccId != null) 
            {
                $("/boeken/accomodatie/" + theLanguage + "/item[@aid=" + selectedAccId + "]", reqXml.responseXML).each(function () {
                var accomodatieText = $(this).text();
                SetDropDown(dropdownArray[0], accomodatieText); 
                });
            }
            if ( selectionChanged )
            {
                fillPersonenDropdown(selectedParkId, selectedAccId);
                myAankomstdatum = getDateValues("aankomstdatum", selectedParkId, selectedAccId);
                myVertrekdatum = getDateValues("vertrekdatum", selectedParkId, selectedAccId);
                enableDropdown("personen", true);       
                
                // bisa: also fill liggingen
                fillLiggingDropdown(selectedParkId);
            }
                     
        }


        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;
                }
            }
        }

        // bisa			
        if (selectedLiggingId != null) {
            myAankomstdatum = getDateValues("aankomstdatum", firstParkIdInLigging, selectedAccId);
            myVertrekdatum = getDateValues("vertrekdatum", firstParkIdInLigging, selectedAccId);
        }
        else if (selectedParkId != null) {
            myAankomstdatum = getDateValues("aankomstdatum", selectedParkId, selectedAccId);
            myVertrekdatum = getDateValues("vertrekdatum", selectedParkId, selectedAccId);
        }

        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>';
}


// MBM-4784 - BiSa - Fill dropdown based on current selection criteria
function fillPersonenDropdown(parkId, accommodatie) {
    var theDropdown = document.getElementById("dropdown-personen-content");
    var str = '';

    $("/boeken/aankomstdatum/park[@id=" + parkId + "]/" + accommodatie + "/capaciteiten/capaciteit", reqXml.responseXML).each(function () {

        str += '<li><a href="#" onclick="return setSelection(this);\">' + $(this).text() + '</a></li>';

    });

    theDropdown.innerHTML = '<ul>' + str + '</ul>';
}

// MBM-5572 - BiSa - Fill dropdown based on current selection criteria
function fillLiggingDropdown(parkId)
{
    var theDropdown = document.getElementById("dropdown-ligging-content");
    var str = '';
    
    $("/boeken/ligging/" + theLanguage + "/item[@park*=" + parkId + "]", reqXml.responseXML).each(function () {
    
        str += '<li><a href="#" onclick="return setSelection(this);\">' + $(this).text() + '</a></li>';
        
    });     
    
    theDropdown.innerHTML = '<ul>' + str + '</ul>';    
}



// MBM-4784 - BiSa - Get date values based on current selection criteria
function getDateValues(aNodeName, parkId, accommodatie) {
    // /boeken/aankomstdatum/park/Bungalow/d
    var response = new Array();

    $("/boeken/" + aNodeName + "/park[@id=" + parkId + "]/" + accommodatie + "/d", reqXml.responseXML).each(function () {

        response.push($(this).text());

    });

    if (response.length == 0) return Array("");

    return response;
}


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) {
    isHome = aIsHome;

    // flashVersion = deconcept.SWFObjectUtil.getPlayerVersion();  // bisa - website only
    // flashVersion = flashVersion["major"]; // bisa - website only
    if ((IEversion < 7) && (IEversion > 4)) {
        insertIEcss();
    }

    // BiSa - prevent the browser from caching this XML document by adding a timestamp to the retrieval URL
    var cachePrevention = new Date().getTime();
    loadXMLDoc("xml/boeken.xml?" + cachePrevention);

    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() {
    return; //FEPL added, this is not needed
    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];
        var myData = myVertrekdatum;
    }
    else {
        var today = new Date();
        var ty = today.getFullYear();
        var tm = today.getMonth();
        var td = today.getDate();
        var myData = myAankomstdatum;
        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 (myData.length > 0) {
            for (var i = 0; i < myData.length; i++) {
                if (myData[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);
    }
    maincontent = xGetElementById('maincontent');
    textcontent = xGetElementById('textcontent');
    scrollArea = xGetElementById('scrollArea');
    scroller = xGetElementById('scroller');
    xDisplay(scrollArea, "none");

    setScrollBar();
}

function setScrollBar() {

    xHeight(scroller, 0);
    xTop(scroller, 0);
    xTop(textcontent, 0);
    xDisplay(scrollArea, "block");
    xOpacity(scrollArea, 0);

    scrolldocH = xHeight(textcontent);
    scrollcontH = xHeight(maincontent);
    scrollAreaH = xHeight(scrollArea);

    //calculate height of scroller and resize the scroller div
    //(however, we make sure that it isn't to small for long pages)
    scrollH = Math.round((scrollcontH * scrollAreaH) / scrolldocH);

    if (scrollH < 15) scrollH = 15;
    //	document.getElementById("scroller").style.height = Math.round(scrollH) + "px";
    xHeight(scroller, scrollH);

    if (scrollH < scrollAreaH) {
        xDisplay(scrollArea, "block");
        xOpacity(scrollArea, 1);
    } else {
        xDisplay(scrollArea, "none");
    }

    //what is the effective scroll distance once the scoller's height has been taken into account
    scrollDist = Math.round(scrollAreaH - scrollH);

    Drag.init(scroller, null, 0, 0, -1, scrollDist);

    scroller.onDrag = function (x, y) {
        var scrollY = xTop(scroller);

        var docY = 0 - (scrollY * (scrolldocH - scrollcontH) / scrollDist);
        docY = Math.round(docY);

        xTop(textcontent, docY);
    }
}

/** This is high-level function.
 * It must react to delta being more/less than zero.
 */

function handle(delta) {
    var scrollY = xTop(scroller);
    var multiplier = 9;

    if (delta < 0) {
        if (scrollY <= scrollDist) {
            if ((scrollY + multiplier) > scrollDist) {
                scrollY = scrollDist;
            }
            else {
                scrollY -= (delta * multiplier);
            }
        }
    } else {
        if (scrollY > 0) {
            if ((scrollY - multiplier) < 0) {
                scrollY = 0;
            }
            else {
                scrollY -= (delta * multiplier);
            }
        }
    }

    xTop(scroller, scrollY);

    var docY = 0 - (scrollY * (scrolldocH - scrollcontH) / scrollDist);
    docY = Math.round(docY);
    xTop(textcontent, docY);
}

/** Event handler for mouse wheel event.
 */

function wheel(event) {
    if (isHome != true) {

        var delta = 0;
        if (!event) /* For IE. */
        event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
            delta = event.wheelDelta / 120;
            /** In Opera 9, delta differs in sign as compared to IE.
             */
            if (window.opera) delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
            /** In Mozilla, sign of delta is different than in IE.
             * Also, delta is multiple of 3.
             */
            delta = -event.detail / 3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta) handle(delta);
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
    }
}

/** Initialization code. 
 * If you use your own event management code, change it as required.
 */
if (window.addEventListener) /** DOMMouseScroll is for mozilla. */
window.addEventListener('DOMMouseScroll', wheel, false); /** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;


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 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"), items[i].getAttribute("aid"));
                    response.push(temp);
                    break;
                case "ligging":
                    // test!
                    var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("park"), items[i].getAttribute("lid"));
                    // 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 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);

            enableinitial();

            preselect();
        }
    }
}

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;
            }

            var boekenUrl = "SelecterenObjecttype.aspx";
            var theUrl = boekenUrl + "?type=" + selectedObjType + "&s=" + selectedStartDate + "&e=" + selectedEndDate + "&a=" + selectedPersonen
            if ((selectedLiggingId != null) && (selectedLiggingId != undefined)) {
                theUrl = theUrl + "&lid=" + selectedLiggingId;
            }
            if ((selectedAccommodatieNaamNL != null) && (selectedAccommodatieNaamNL != undefined)) {
                theUrl = theUrl + "&aid=" + selectedAccommodatieNaamNL;
            }

            if ((selectedParkId != undefined) && (selectedStartDate != undefined) && (selectedEndDate != undefined)) {
                theUrl += "&p=" + selectedParkId;

                document.location.href = theUrl;
            }
            else {
                alert('Een of meerdere van uw zoekcriteria zijn niet gezet. Gelieve uw zoekcriteria opnieuw op te bouwen.');
            }

        }
        else {
            //Standard page has contentblock
            boekVb = selectedVb;
            boekType = selectedObjType;
            boekStartDate = selectedStartDate;
            boekEndDate = selectedEndDate;
            boekPersonen = selectedPersonen;

            startBooking();
        }
    }
}

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;
}


// MBM-5334 - 12-04-2010 - BiSa


function preselect() {
    if ((typeof(za_Valid) != "undefined") && (za_Valid == true)) {
        if (typeof za_AccommodatieId != "undefined") {
            // pre-select accommodatie
            $("/boeken/accomodatie/" + theLanguage + "/item[@aid=" + za_AccommodatieId + "]", reqXml.responseXML).each(function () {

                var aidText = $(this).text();

                // find the a href for this label and then pass it into 'setSelection'..                
                $('#dropdown-accomodatie-content li').each(function () {
                    if (aidText == $(this).text()) {
                        setSelection($(this).children()[0]); //return dom element so we have parentNode, etc. A JQuery object lacks the DOM structure information we need.
                        $('#dropdown-accomodatie-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
                    }
                });
            });
        }

        if (typeof za_Ligging != "undefined") {
            // pre-select ligging
            $("/boeken/ligging/" + theLanguage + "/item[@lid=" + za_Ligging + "]", reqXml.responseXML).each(function () {

                var liggingText = $(this).text();

                // find the a href for this label and then pass it into 'setSelection'..                
                $('#dropdown-ligging-content li').each(function () {
                    if (liggingText == $(this).text()) {
                        setSelection($(this).children()[0]); //return dom element so we have parentNode, etc. A JQuery object lacks the DOM structure information we need.
                        $('#dropdown-ligging-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
                    }
                });
            });

        }

        if (typeof za_Park != "undefined") {
            // pre-select park
            $("/boeken/park/item[@id=" + za_Park + "]", reqXml.responseXML).each(function () {
                var parkText = $(this).text();

                $('#dropdown-park-content li').each(function () {
                    if (parkText == $(this).text()) {
                        setSelection($(this).children()[0]); //return dom element so we have parentNode, etc. A JQuery object lacks the DOM structure information we need.
                        $('#dropdown-park-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
                    }
                });
            });
        }

        if (typeof za_AantalPersonen != "undefined") {
            // pre-select aantal personen            
            $('#dropdown-personen-content li').each(function () {
                if (za_AantalPersonen == $(this).text()) {
                    setSelection($(this).children()[0]); //return dom element so we have parentNode, etc. A JQuery object lacks the DOM structure information we need.
                    $('#dropdown-personen-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
                }
            });
        }

        if (typeof za_AankomstDatum != "undefined") {
            // pre-select datum
            currentCal = "aankomstdatum";
            ourOnSelect(myAankomstCal, za_AankomstDatum);
            myAankomstCal.setDate(Date.parseExact(za_AankomstDatum, "d-m-yyyy"));
            $('#dropdown-aankomstdatum-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
        }

        if (typeof za_VertrekDatum != "undefined") {
            // pre-select
            currentCal = "vertrekdatum";
            ourOnSelect(myVertrekCal, za_VertrekDatum);
            myVertrekCal.setDate(Date.parseExact(za_VertrekDatum, "d-m-yyyy"));
            $('#dropdown-vertrekdatum-label').removeClass('dropdownbar').addClass('dropdownbarhighlighted'); // highlight
        }
    }
    else {
        // Invalid.
    }
}

function getAccommodatiesByParks(parkIds) {
    var response = new Array();
    var root = reqXml.responseXML.getElementsByTagName("accomodatie")[0];

    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) {

                for (var c = 0; c < parkIds.length; c++) {
                    if ($.inArray(parkIds[c], items[i].getAttribute("park").split(",")) > -1) {
                        var temp = new Array(items[i].firstChild.data.trim(), items[i].getAttribute("park"), items[i].getAttribute("id"), items[i].getAttribute("aid"));
                        response.push(temp);
                        break;
                    }
                }


            }
        }
    }

    fillDropdown("accomodatie", response);
}

function enableinitial() {
    var theParkIds = "1011,1007,1010,1020,1004,1018,1005,1015,1006,1009,1013,1017,1016,1022";
    theParkArray = theParkIds.split(",");

    var myTempPark = new Array();
    var myTempLigging = new Array();
    if (theParkArray != null) {
        for (var i = 0; i < theParkArray.length; i++) {
            // Get available parks
            myTempPark.push(myPark[theParkArray[i]][0]);
        }
    }

    //Get available ligging of park
    if (myLigging != null) {
        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]);
        }
    }

    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);

    fillLabel("aankomstdatum", myAankomstdatumLabel);
    fillLabel("vertrekdatum", myVertrekdatumLabel);
    fillLabel("personen", myPersonenLabel);

    selectedVb = null;
    selectedObjType = null;
    selectedPersonen = null;
}

// Gema: Set drop down selection
function SetDropDown (dropdownname, dropdowntext)
{
    $('#dropdown-' + dropdownname + '-content li').each(function () {
    if (dropdowntext == $(this).text()) {
        setSelection($(this).children()[0]); 
    }
    });
}