chooseStrByLang = function(strArray) {
    return strArray[wlGetLanguage()];
};

/**
 * wlGetLanguage is a function that returns a numeric representation of what language the page is being viewed in
 * @param {String} strLang A two letter language code. If left blank uses whatever language the page is being displayed in.
 * @return {Number}	A number denoting what language the page is in
 */
wlGetLanguage = function(strLang) {
    if (!strLang) {
        strLang=com.laterooms.microsites.language;
    }
    if (strLang=="en") {
        return 0;
    }
    if (strLang=="fr") {
        return 1;
    }
    if (strLang=="es") {
        return 2;
    }
    if (strLang=="it") {
        return 3;
    }
    if (strLang=="de") {
        return 4;
    }
    return 0;
};

wlTranslate = function(keyword) {
    document.write(wlOptions.lookupMatrix[keyword]);
};

/* End of functions */

QSOptionHolder = function(queryNo, optionGraphic, optionText){
    this.queryNo = queryNo;
    this.optionGraphic = optionGraphic;
    this.optionText = optionText;
}

OptionHolder = function(){
    /**
     * Setter method for changing the proceed button graphic URL
     * @param {String} newImage
     */
    this.proceedBtnImage = null;
    this.wlProceedBtnBool = false;
    
    this.setProceedBtn = function(newImage) {
        this.proceedBtnImage = newImage;
        this.wlProceedBtnBool = true;
    };

    /**
     * Setter method for language relative search button graphic URLs
     * @param {Array} tmpArray			An array of URLs to graphics
     * @extends OptionHolder
     */
    this.searchButtonArray = null;
    this.wlSearchButtonLangBool = false;
    
    this.setSearchButtons = function(tmpArray) {
        this.searchButtonArray = tmpArray;
        this.wlSearchButtonLangBool = true;
    };
    
    // The map for translations
    this.lookupMatrix = new Array();
    
    this.setTranslateFile = function(fileName) {
        var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
        request.open("GET", fileName, false);
        request.send(null);
        var xmlDoc = request.responseXML;
    
        var allStrings = xmlDoc.getElementsByTagName("string");
    
        for ( i=0; i<allStrings.length; i++ ) {
            var keywords = allStrings[i].getElementsByTagName("keyword");
            var keyword = keywords[0].firstChild.data;
        
            var values = allStrings[i].getElementsByTagName(com.laterooms.microsites.language);
            var value = values[0].firstChild.data;
        
            this.lookupMatrix[keyword] = value;
        }
    };
    
    // The array where link and imag alt text is stored
    this.qsTextArray = [];
    this.qsTextArray[1] = ["4&5 Star Deals", "H\364tels de luxe 4* et 5*", "Hoteles de 4* y 5*", "Hotel 4 e 5 Stelle", "4 & 5 Sterne Hotels"];
    this.qsTextArray[2] = ["Disabled Access", "Chambres avec acc\350s pour personnes \340 mobilit\351 r\351duite", "Movilidad reducida", "Servizi per disabili", "Behindertengerecht"];
    this.qsTextArray[3] = ["Budget Beds", "Logements \351conomiques", "Hoteles econ\363micos", "Hotel economici", "Billighotels"];
    this.qsTextArray[4] = ["Best Deals", "Meilleures Offres", "Ofertas especiales", "Offerte imperdibili", "Die Besten Angebote"];
    this.qsTextArray[5] = ["Big Savers", "R\351ductions massives", "Grandes descuentos", "Risparmio assicurato", "Schn\344ppchen"];
    this.qsTextArray[6] = ["10 rooms or less", "Petits h\364tels et chambres d'h\364tes", "Hoteles con encanto", "Fino a 10 camere", "Pensionen"];
    
    /**
     * Allows you to change the text displayed for queries
     * @param {Number} queryNo			A QueryTextHolder object
     * @param {String} languageStr      A two letter language code
     * @param {String} newText          The new text to be displayed for this query number
     */
    this.setQueryText = function(queryNo, languageStr, newText) {
        var tmpLanguage = wlGetLanguage(languageStr);
        this.qsTextArray[queryNo][tmpLanguage] = newText;
    };
    
    /**
     * Returns a suitable string of text to be displayed for this query number depending on the page's language
     * @param {Number} queryNo			The query number
     * @return {String}					A string of text for this query number in the page's language
     */
    this.getQueryText = function(queryNo) {
        return this.qsTextArray[queryNo][wlGetLanguage()];
    }
    
    // The array where quick search menu options are stored
    this.qsOptionArray = [];
    
    /**
     * returns a suitable url to be used as a href for depending on query number
     * @return {string}					a string representing a url
     */
    this.queryHref = function(queryNo) {
        return (this.getBaseURL() + 'q=' + queryNo);
    }
    
    /**
     * Returns the base URL of a page complete with arguments and strips out the 'q' argument
     * @return {String}					A string representing the base URL of the current page
     */
    this.getBaseURL = function() {
        tmpURL = '' + window.location;
        tmpPointer = tmpURL.indexOf("?");
	
        if (tmpPointer==-1) {
            baseURL = tmpURL;
            baseArguments = '';
        }
        else {
            baseURL = tmpURL.substring(0,tmpPointer);
            baseArguments = tmpURL.substring(tmpPointer+1);
            tmpPointer = baseArguments.indexOf("q=");
            if (tmpPointer==-1) { }
            else {
                if (tmpPointer<1) {
                    part1 = '';
                }
                else {
                    part1 = baseArguments.substring(0,tmpPointer-1);
                }
                tmpPart = baseArguments.substring(tmpPointer);
                tmpPointer = tmpPart.indexOf("&");
                if (tmpPointer<0) {
                    part2 = '';
                }
                else {
                    part2 = tmpPart.substring(tmpPointer+1);
                }
                baseArguments = part1+part2;
            }
        }
	
        if (baseArguments.length<1) {
            baseURL = baseURL + "?";
        }
        else {
            baseURL = baseURL + "?" + baseArguments + "&";
        }
	
        return baseURL;
    }
    
    this.addQSOption = function(queryNo, optionGraphicen, optionGraphicfr, optionGraphices, optionGraphicit, optionGraphicde){
        if (!queryNo) {
            throw new Error ("addQSOption needs at least 1 argument.");
        }
        
        var optionGraphic;
        
        if (!optionGraphicen) {
            // No graphics
            optionGraphic = null;
        } else if (!optionGraphicde) {
            // Only an english graphic
            optionGraphic = optionGraphicen;
        } else {
            // Different language graphics	    
            switch(wlGetLanguage()) {
                case 0:
                    optionGraphic = optionGraphicen;
                    break;
                case 1:
                    optionGraphic = optionGraphicfr;
                    break;
                case 2:
                    optionGraphic = optionGraphices;
                    break;
                case 3:
                    optionGraphic = optionGraphicit;
                    break;
                case 4:
                    optionGraphic = optionGraphicde;
                    break;
                default:
                    optionGraphic = optionGraphicen;
            }
        }
        
        var optionText = this.qsTextArray[queryNo][wlGetLanguage()];
        
        this.qsOptionArray.push(new QSOptionHolder(queryNo, optionGraphic, optionText));
    }
}

/* Make the OptionHolder wlOptions */
wlOptions = new OptionHolder(); /* Instantiate OptionHolder */

/* Register onLoad event handler */
$(document).ready(function() {
    // WL Footer
    $(".wlFooter").replaceWith("").appendTo($("#container")).css("display","");
    
    // Quick search
    if ( $('#qsbox').length > 0 ) {
        var optionArray = wlOptions.qsOptionArray;
        
        if (optionArray.length == 0) {
            // Insert default QS list
            optionArray[0] = new QSOptionHolder(1);
            optionArray[1] = new QSOptionHolder(5);
            optionArray[2] = new QSOptionHolder(2);
            optionArray[3] = new QSOptionHolder(6);
            optionArray[4] = new QSOptionHolder(4);
        }
        
        // Insert custom QS list
        var qSList=$(document.createElement("ul")).attr('id','qlist');
        
        for (i=0; i<optionArray.length; i++) {
            if (optionArray[i].optionGraphic) {
                // Graphical list item
                var imgEl = $(document.createElement('img')).attr('src',optionArray[i].optionGraphic).attr('alt',optionArray[i].optionText).attr('title',optionArray[i].optionText);
                var aEl = $(document.createElement('a')).addClass('graphica').append(imgEl).attr('href',wlOptions.queryHref(optionArray[i].queryNo));
                var liEl = $(document.createElement('li')).addClass('graphicli').append(aEl);
                qSList.append(liEl);
            } else {
                var aEl = $(document.createElement('a')).addClass('texta').attr('href',wlOptions.queryHref(optionArray[i].queryNo)).html(optionArray[i].optionText + ' &raquo;');
                var liEl = $(document.createElement('li')).addClass('textli').append(aEl);
                qSList.append(liEl);
            }
        }
        
        $('#qsbox').append(qSList);
    }
    
    // Language translated search buttons
    if ( wlOptions.wlSearchButtonLangBool ) {
        $('#search').attr('src', wlOptions.searchButtonArray[wlGetLanguage()]);
    }
    
    // Overwrite proceed button
    if ( wlOptions.wlProceedBtnBool)
    {
        $('img.proceedBtn').attr('src',wlOptions.proceedBtnImage);
    }
    
    // Suckerfish
    $('#suckerfishnav li').bind('mouseover', function(e){
        $(this).addClass('sfhover');
    }).bind('mouseout', function(e){
        $(this).removeClass('sfhover');
    });
});

function CreateBookmarkLink()
{
    var B=document.title;
    var A=window.location.href;
    if(window.sidebar)
    {
        window.sidebar.addPanel(B,A,"")
    }
    else{if(window.external){window.external.AddFavorite(A,B)}else{if(window.opera&&window.print){return true}}}}
    