

var a_replTrack = jQuery('a');
jQuery.each(a_replTrack, function( index, value ) {
    try {
        obj = jQuery(value);
        if(obj.attr('href') &&
            ((obj.attr('href').indexOf("http://hotels.com")!=-1)
            || (obj.attr('href').indexOf("https://www.hotelplanner.com")!=-1)
            || (obj.attr('href').indexOf(".hotels.com")!=-1)
            || (obj.attr('href').indexOf(".hotels.cn")!=-1))
        ) {
            try { obj.addClass("jsCurrencyConversionUrl");  } catch (er) {}

            if (obj.attr('href').indexOf('travel.hotels.com') != -1) {
                // tour exit links are tracked differently
                obj.click(function() { track_lx_click(this); });
                obj.contextmenu(function() { track_lx_menu(this); });
            } else {
                obj.click(function() { track_the_click(this); });
                obj.contextmenu(function() { track_contextmenu(this); });
            }
        }
    } catch(err) {}
});

function apply_clickthrough(objs)
{
    //apply fix rffrid and AWD omniture link page
    if(typeof(track_the_click)=="function")
    {
        jQuery.each(objs, function( index, value ) {
            try
            {
                objRffrid = jQuery(value);
                if((!objRffrid.hasClass("jsCurrencyConversionUrl"))
                    && objRffrid.attr('href') &&
                    ((objRffrid.attr('href').indexOf("http://hotels.com")!=-1)
                    || (objRffrid.attr('href').indexOf("https://www.hotelplanner.com")!=-1)
                    || (objRffrid.attr('href').indexOf(".hotels.com")!=-1)
                    || (objRffrid.attr('href').indexOf(".hotels.cn")!=-1))
                )
                {
                    try {objRffrid.addClass("jsCurrencyConversionUrl");} catch (er) {}

                    if (objRffrid.attr('href').indexOf('travel.hotels.com') != -1) {
                        // tour exit links are tracked differently
                        objRffrid.click(function() { track_lx_click(this); });
                        objRffrid.contextmenu(function() { track_lx_menu(this); });
                    } else {
                        if (typeof(HCPupdateURl) == "function") objRffrid.attr('href', HCPupdateURl(objRffrid.attr('href')));
                        objRffrid.click(function () {
                            track_the_click(this);
                        });
                        if (typeof(track_contextmenu) == "function") objRffrid.contextmenu(function () {
                            track_contextmenu(this);
                        });
                    }
                }
            } catch(err) {}
        });
    }
    //apply fix rffrid
}

function extractTrackingDetails(link) {
    var linkText = "";
    var caseA = "0";
    var caseB = "0";
    var caseC = "0";
    try {
        if (typeof(link) == "string" || link instanceof String) {
            caseA = "1";
            linkText = link;
        } else if(jQuery(link).hasClass("interstital")) {
            caseB = "1";
            linkText = jQuery(link).attr("data-href");
        }

        if (linkText == "") {
            caseC = "1";
            linkText = jQuery(link).attr("href");
        }

        if (typeof(jQuery.portals.fn.getFinalLink) == "function") {
            linkText = jQuery.portals.fn.getFinalLink(linkText);
        }

        // attempt to extract rffrid for hcom referrals
        var match = unescape(linkText).match(/rffrid=([^&=]*)/);
        if (match != null && match.length > 1) {
            return match[1];
        }

        // attempt to extract tmid for lx referrals
        match = unescape(linkText).match(/tmid=([^&=]*)/);
        if (match != null && match.length > 1) {
            return match[1];
        }

        if (linkText == "undefined" || typeof(linkText) == "undefined") {
            return 'no-tracking:' + linkText + ":" + caseA + ":" + caseB + ":" + caseC;
        } else {
            return 'no-tracking:' + linkText;
        }
    } catch(err) {
        return "tracking-parse-error";
    }
}

function track_contextmenu(obj) {
    _track_exit_link('hc-menu', obj);
}

function track_the_click(obj) {
    _track_exit_link('hcom', obj);
}

function track_flight_click(obj) {
    _track_exit_link('hcfl', obj);
}

function track_package_click(obj) {
    _track_exit_link('hcpk', obj);
}

function track_lx_click(obj) {
    _track_exit_link('hclx', obj);
}

function track_lx_menu(obj) {
    _track_exit_link('hclx-menu', obj);
}

function _track_exit_link(prefix, obj) {
    try {
        if(typeof(s_account) != "undefined") {
            var s = s_gi(s_account);
            s.prop70 = s.pageName;
            s.eVar70 = s.pageName;
            s.tl(true,'e', prefix + ':' + extractTrackingDetails(obj));
        }
    } catch(err) {}
}



function queryParam(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null) return "";
    else return results[1];
}

function getCookie(name){
    var dcookie=document.cookie;
    var cname=name+"=";
    var clen=dcookie.length;
    var cbegin=0;
    while(cbegin<clen){
        var vbegin=cbegin+cname.length;
        if(dcookie.substring(cbegin,vbegin)==cname)
        {
            var vend=dcookie.indexOf(";",vbegin);
            if(vend==-1) vend=clen;
            return unescape(dcookie.substring(vbegin,vend));
        }
        cbegin=dcookie.indexOf(" ",cbegin)+1;
        if(cbegin==0) break;
    }
    return null;
}
window.getCookie = getCookie;

(function() {
    function hostContains(val) {
        return document.location.hostname.toLowerCase().indexOf(val) != -1;
    }
    function pathContains(val) {
        return document.location.pathname.toLowerCase().indexOf(val) != -1;
    }
    function pathStartsWith(val) {
        return document.location.pathname.toLowerCase().startsWith(val);
    }
    function queryContains(val) {
        return document.location.search.toLowerCase().indexOf(val) != -1;
    }
    function referrerContains(val) {
        return document.referrer.toLowerCase().indexOf(val) != -1;
    }

    channels = [
        {
            'name' : 'SEM',
            'predicate' : function(ref, loc) {
                return queryContains('cid=sem');
            }
        },
        {
            'name' : 'EDM',
            'predicate' : function(ref, loc) {
                return queryContains('cid=edm');
            }
        },
        {
            'name' : 'SMO',
            'predicate' : function(ref, loc) {
                return queryContains('cid=social') || queryContains('cid=scm');
            },
            'getPid' : function(ref, loc) {
                // implement legacy logic for specific cid to subchannel mappings
                var campaign = queryParam('cid');
                if (campaign.indexOf('scm:paidsocial') != -1) {
                    return '112';
                } else if (campaign.indexOf('scm') != -1) {
                    return '111';
                } else {
                    return '000';
                }
            }
        },
        {
            'name' : 'TRP',
            'predicate' : function(ref, loc) {
                return queryContains('cid=trpadv');
            }
        },
        {
            'name' : 'SEO',
            'predicate' : function(ref, loc) {
                bots = ['google', 'yahoo', 'bing', 'ask.com', 'aol.com', 'wow.com', 'webcrawler', 'duckduckgo', 'info.com', 'yandex', 'baidu'];
                for (var i = 0; i < bots.length; i++) {
                    var bot = bots[i];
                    if (referrerContains(bot)) {
                        return true;
                    }
                }
                return false;
            }
        },
        {
            'name' : 'specified',
            'predicate' : function(ref, loc) {
                return queryContains('cid=ch:');
            },
            'getName' : function(ref, loc) {
                var query = queryParam('cid');
                var parts = query.split(':');
                return parts[1].toUpperCase();
            },
            'getPid' : function(ref, loc) {
                var query = queryParam('cid');
                var parts = query.split(':');
                return parts[2];
            },
            'getKwrd' : function(ref, loc) {
                var query = queryParam('cid');
                var parts = query.split(':');
                return parts.slice(3).join(':')
            }
        }
    ];

    var ref = document.referrer.toLowerCase();
    var loc = document.location.href.toLowerCase();
    for (var i = 0; i < channels.length; i++) {
        var channel = channels[i];
        var matched = channel.predicate(ref, loc);
        if (matched) {

            // determine channel name
            var name = channel.name;
            if (channel.getName !== undefined) {
                name = channel.getName(ref, loc);
            }

            // determine channel pid
            var pid = '000';
            if (channel.getPid !== undefined) {
                pid = channel.getPid(ref, loc);
            }

            // determine keywords
            var kwrd = queryParam('cid');
            if (channel.getKwrd !== undefined) {
                kwrd = channel.getKwrd(ref, loc);
            }

            var value = name + '|' + pid + '|' + kwrd;
            var expires = new Date();
            expires.setTime(expires.getTime() + 30 * 86400000);
            document.cookie = "a_rch=" + value + '; expires=' + expires + '; domain=' + document.location.hostname.replace("www.",".") + '; path=/';
            break;
        }
    }

})();

function addRffridKeyword(rffrid)
{
    if((rffrid) && (rffrid.length>0))
    {
        var pattern = new RegExp('[a-z]{3}.[a-z]{4}.[a-z]{2}.[0-9]{3}.[0-9]{3}.[0-9]{2}.[0-9a-zA-Z]{3}.[0-9a-zA-Z]{3}.[0-9a-zA-Z]{3}$');
        var a = rffrid.search(pattern);
        if(a>=0)
        {
            if(typeof(rffridMissKwrd)=="string")
            {
                if(rffridMissKwrd.length>0)
                {
                    rffrid = rffrid + "." + rffridMissKwrd;
                }
            }
        }
    }
    return rffrid;
}

function modifyParam(url, paramName, mutator) {
    var pattern = new RegExp('(' + paramName + '=).+?(&|$)');

    if (url.search(pattern) > 0) {
        // portion before parameter
        var prefixUrl = url.substring(0, url.search(pattern));

        // portion beginning with parameter value (and all following)
        var trailUrl = url.substring(url.search(pattern) + paramName.length + 1, url.length);

        var params = trailUrl.split('&');
        params[0] = mutator(params[0]);
        trailUrl = params.slice(1).join('&');

        return prefixUrl + paramName + '=' + params.join('&');
    }

    return url;
}

function updateChannelAndPlacementCode(url, channel, placeId) {
    var result = url;

    var rffridMutate = function(paramValue) {
        if (paramValue.substring(paramValue.length - 5 , paramValue.length) === '.000.') {
            paramValue = paramValue.slice(0, -1);
        }

        var shortPattern = new RegExp('[a-zA-Z]{3}.[a-zA-Z]{4}.[a-zA-Z]{2}.[0-9]{3}.[0-9]{3}.[0-9]{2}$');
        if (paramValue.search(shortPattern) >= 0) {
            paramValue = paramValue + ".000.000.000";
        }

        var rffridPattern = /([a-zA-Z]{3}\.[a-zA-Z]{4}\.[a-zA-Z]{2}\.[0-9]{3}\.[0-9]{3}\.[0-9]{2})\.([0-9]{3})\.([0-9A-Za-z]{3})\.([0-9]{3})/;
        paramValue = paramValue.replace(rffridPattern, "$1.$2." + channel + "." + placeId);

        if (typeof(addRffridKeyword) === "function") paramValue = addRffridKeyword(paramValue);

        return paramValue;
    };

    if (url) {
        result = modifyParam(result, 'rffrid', rffridMutate);

        result = modifyParam(result, 'tmid', function(paramValue) {
            var prefix = 'hcom-us.dps.hcom.content.packages.';
            if (paramValue.toLowerCase().substring(0, prefix.length) === prefix) {
                var rffrid = paramValue.slice(prefix.length);

                paramValue = paramValue.substring(0, prefix.length) + rffridMutate(rffrid);
            }

            return paramValue;
        });
    }

    return result;
}

function getMarketingCampaign() {
    var ch = 'DTI';
    var kw = '';
    var rch = getCookie('a_rch');
    var pid = '000';

    if (rch != null && rch.indexOf('|') != -1) { // new cookie format
        var details = rch.split('|');
        ch = details[0];
        pid = details[1];
        kw = details[2];
    } else if (rch != null && rch.indexOf(':') != -1) { // old cookie format
        var details = rch.split(':');
        ch = details[0].toUpperCase();
        kw = details.slice(1).join(":");
        if (ch == 'DPS') {
            pid = kw;
        } else if ((ch == 'EDM' || ch == 'SMO') && details[details.length -1].match(/\d+/) != null) {
            pid = details[details.length - 1];
        } else if (ch == 'SMO') {
            // implement legacy logic for explicit cid to subchannel mappings
            if (kw.indexOf('scm:paidsocial') != -1) {
                pid = '112';
            } else if (kw.indexOf('scm') != -1) {
                pid = '111';
            }
        }
    }

    return {
        'channel' : ch,
        'subChannel' : pid,
        'keywords' : kw
    };
}

function getChannel() {
    return getMarketingCampaign().channel;
}

function HCPupdateURl(url) {
    var campaign = getMarketingCampaign();
    if (typeof(shareHcomChannelAndOmniture) == "string") {
        shareHcomChannelAndOmniture = campaign.channel;
    }

    url =  updateChannelAndPlacementCode(url, campaign.channel, campaign.subChannel);

    // update A/B testing flag
    return jQuery.portals.fn.replaceABTestingFlag(url);
}

var _abTrackingCookie = "a_abt";
var _abTrackingPattern = /([0-9]{1})([0-9]{1})([0-9]{1})/;

/*
Set the A/B tracking code that will eventually updated to the exit link
x,y,z is the digit in tracking code respectively and they can set to null to use the existing value (don't touch those digit)
isSession if set to true those x,y,z value that is not null will set into session cookies to make them in use for the following page
 */
function setAbTestTracking(x, y, z, isSession) {
    _abTracking = replaceXYZ(_abTracking, x, y , z);

    if (isSession) {
        // persist this value to session cookies
        var currentCookie = $j.cookie(_abTrackingCookie) || "000";
        currentCookie = replaceXYZ(currentCookie, x, y, z);

        $j.cookie(_abTrackingCookie, currentCookie, {path: "/", domain: document.location.hostname.replace("www.",".")});
    }
}

/* replace value in xyz only the digit that is not null */
function replaceXYZ(v, x, y, z) {
    if (x) {
        v = v.replace(_abTrackingPattern, x+"$2$3");
    }
    if (y) {
        v = v.replace(_abTrackingPattern, "$1" + y + "$3");
    }
    if (z) {
        v = v.replace(_abTrackingPattern, "$1$2" + z);
    }

    return v;
}

function getAbTestTracking() {
    return _abTracking;
}

(function() {
    window._abTracking = getCookie(window._abTrackingCookie) || "000";
})();
// big booking box


if (document.getElementById('big-booking-body-hcom')) {
    // Dropdown workaround for language options on search widgets

function genLangDrpDwn(className){
    $j("."+className+" dt a").click(function() {
        $j("."+className+" dd ul").toggle();
    });

    $j("."+className+" dd ul li a").click(function() {

        var text = $j(this).html();
        $j("."+className+" dt a span").html(text);
        $j("."+className+" dd ul").hide();
        var currentMtsLang = getSelectedValue(className);
        $j("#"+className+"-selected-value").val(currentMtsLang);

        if (typeof metaSearchBoxes !== 'undefined') {
            // Metasearch change checkbox list
            boxName = className.split("-");
            lang = currentMtsLang;

            $j('#mts-bigbooking-checkboxes').find('div:last-child').addClass('last');

            // Set Language Cookie
            document.cookie="mtsLanguage="+currentMtsLang+";path=/";

            // Change Box
            if (boxName[1] == "premium") {
                changeMetaSearchCheckBox($j(this), "hotel");
            } else {
                changeMetaSearchCheckBox($j(this), "destination");
            }
        }
    });

    $j(document).bind('click', function(e) {
        var $clicked = $j(e.target);
        if (! $clicked.parents().hasClass(""+className+""))
            $j("."+className+" dd ul").hide();
    });
}

function getSelectedValue(id){
    return $j("#" + id).find("dt a span.value").html();
}

function genLangOptionList(langCodeBox, defaultBoxLang){

    var optLangList ="";

    for(i=0; i<langCodeBox.length; i++){
     optLangList = optLangList+'<li><a href="javascript:void(0);"><img class="flag" src="//static.asiawebdirect.com/portals/v7/images/flags/'+langCodeBox[i][1]+'.png" alt="'+langCodeBox[i][2]+'">'+langCodeBox[i][2]+'<span class="value">'+langCodeBox[i][1]+'</span></a></li>';
    }

    return optLangList;
}

function genMetaSearchCheckBox(lang, checkboxName){

    if(typeof metaSearchTargets !== 'undefined'){

        var checkBox = "";
        var i=0;
        if (lang == "en_US") {
            for (var key in metaSearchTargets) {
               id = checkboxName+'box-m'+(i+1);
               var obj = metaSearchTargets[key];
               if (getObjLength(obj)>1){
                    for (var prop in obj) {
                      if (prop == lang) {
                        siteName = obj[prop];
                        break;
                      }
                    }
               } else {
                    siteName = key;
               }

               checkBox +='<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+key+'" checked="checked" /> <label for="'+id+'">'+metaSearchTargets[key]['en_US']+'</label></div>';
               i++;
            }
        } else {
            for (var key in metaSearchTargets) {
               id = checkboxName+'box-m'+(i+1);
               var obj = metaSearchTargets[key];
               if(getObjLength(obj)>1){
                    for (var prop in obj) {
                      if (prop == lang) {
                        siteName = obj[prop];
                        break;
                      }
                    }
                    checkBox +='<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+key+'" checked="checked" /> <label for="'+id+'">'+siteName+'</label></div>';
                    i++;
               }
            }

        }
        return checkBox;
    }
}


$j = jQuery;
$j(document).ready(function(){
    var optLangElementIDs = new Array('lang-smallbooking', 'lang-topbarbooking', 'lang-bigbooking');

    $j.ajax({
      type: "GET",
      url: "//static.asiawebdirect.com/portals/v7/js/language.js",
      dataType: "script",
      success: function(){

        if (typeof metaSearchBoxes !== 'undefined') {
            // Metasearch use
            var currentMtsLang = getMtscookie('mtsLanguage');
            if(currentMtsLang != "") {
                //Overwrite this if there is a cookie
                defaultBoxLang = currentMtsLang;
            }

        }
        if (typeof defaultBoxLang !== 'undefined') {
            for(i=0; i<langCodeBox.length; i++){
                if(langCodeBox[i][1] == defaultBoxLang ) {
                    var langSymbol = langCodeBox[i][1];
                    var langTxt = langCodeBox[i][2];
                    break;
                }
            }

            // Find default language loaded
            optLangList = genLangOptionList(langCodeBox, defaultBoxLang);

            for(i=0; i<optLangElementIDs.length; i++) {
                $j('#'+optLangElementIDs[i]+'-result').html('<dl id="'+optLangElementIDs[i]+'" class="dropdown '+optLangElementIDs[i]+'"><dt><a href="javascript:void(0);"><span><img class="flag" src="//static.asiawebdirect.com/portals/v7/images/flags/'+langSymbol+'.png" alt="'+langTxt+'" />'+langTxt+'</span></a></dt><dd><ul>'+optLangList+'</ul></dd></dl>');
                genLangDrpDwn(optLangElementIDs[i]);

            }
        }
      }
    });
});

// Meta Search Work
var mtsState = 0;

function popUpCenter(pageURL, name, w, h, l, t) {
    var left = ((screen.width/2)-(w/2))+l;
    var top =  t;

    if (typeof popUpCenter.winRefs == 'undefined'){
        popUpCenter.winRefs = {};
    }
    if (!(popUpCenter.winRefs[name] == null || popUpCenter.winRefs[name].closed)){
        popUpCenter.winRefs[name].close();
    }

    popUpCenter.winRefs[name] = window.open(pageURL, name, 'toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);

    if (popUpCenter.winRefs[name] != null){
        popUpCenter.winRefs[name].focus();
    }
}

function initMetaSearchWindows(formElm){
    var form = document.forms[formElm];
    var sitesList = form.metaSearchSite;
    var chosenSites = new Array();

    if (typeof sitesList !== 'undefined') {

        if(sitesList.length >= 2){
            for (i=0; i<sitesList.length; i++) {
                if(sitesList[i].checked){
                    chosenSites.push(sitesList[i].value);
                }
            }
        } else {
            if(sitesList.checked){
                chosenSites.push(sitesList.value);
            }
        }
    }

    if(chosenSites.length > 0){
        //ignore reverse on chrome and IE
        if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {}
        else if(navigator.appName == "Microsoft Internet Explorer") {}
        else chosenSites.reverse();
        for(var i=0; i<chosenSites.length; i++){
            if (chosenSites[i] != 'undefined') {
                var swinname = chosenSites[i].match(/:\/\/(www\.)?(.[^/:]+)/)[2];
                swinname = swinname.split(".");
                popUpCenter(chosenSites[i], swinname[0], 800, 800, (i*50) + 50, 0);
            }
        }
    } else {
        alert('Please select at least one website to perform search.');
    }
}

function getObjLength(a){
    var count = 0;
    for (var i in a) {
        if (a.hasOwnProperty(i)) {
            count++;
        }
    }
    return count;
}

function ucfirst(str) {
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

function genMetaSearchCheckBoxAjax(lang, checkboxName, domainNames, mtsState){

    //alert(lang);
    //alert(checkboxName);
    //alert(domainNames);
    var currentChosenSites = [];

    if($j('#mts-'+checkboxName+'-checkboxes input:checked').length > 0){
        $j('#mts-'+checkboxName+'-checkboxes input:checked').each(function() {
            var currentChosenSiteValue = this.value.match(/:\/\/(www\.)?(.[^/:]+)/)[2];
            currentChosenSiteValue = currentChosenSiteValue.split(".");
            currentChosenSites.push(currentChosenSiteValue[0]);

        });
    }

    // Find current metasearch site checked

    if(typeof domainNames !== 'undefined'){

        var checkBox = "";
         if (lang == "en_US"){
            //alert("a");
            //alert(getObjLength(domainNames));
            //alert(domainNames);
            var i = 0;
            for (var x in metaSearchTargets){

                id = checkboxName+'box-m'+(i+1);
                siteName = x;

                checkBox += '<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+domainNames[x]+'"';

                if (typeof domainNames[x] !== 'undefined'){
                    siteName = siteName.split(".");
                    if (mtsState == 1) {
                        if (currentChosenSites.length>0){
                            if($j.inArray(siteName[0], currentChosenSites) >= 0){
                                checkBox += 'checked="checked"';
                            }
                        } else {
                            checkBox += 'checked="checked"';
                        }
                    } else {
                        checkBox += 'checked="checked"';
                    }

                } else {
                    checkBox += 'disabled="true"';
                }

                checkBox += '/> <label for="'+id+'">'+metaSearchTargets[x]['en_US']+'</label></div>';
                i++;
            }
        } else {
            //alert("b");
            //alert(getObjLength(domainNames));
            //alert(domainNames);
            var i = 0;
            for (var x in metaSearchTargets){
                id = checkboxName+'box-m'+(i+1);
                siteName = x;
                if(getObjLength(metaSearchTargets[x]) > 1) {
                    checkBox += '<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+domainNames[x]+'"';

                    if (typeof domainNames[x] !== 'undefined'){
                        siteName = siteName.split(".");
                        if (mtsState == 1) {
                            if (currentChosenSites.length>0){
                                if($j.inArray(siteName[0], currentChosenSites) >= 0){
                                    checkBox += 'checked="checked"';
                                }
                            } else {
                                checkBox += 'checked="checked"';
                            }
                        } else {
                            checkBox += 'checked="checked"';
                        }
                    } else {
                        checkBox += 'disabled="true"';
                    }

                    checkBox += '/> <label for="'+id+'">';

                    for (var y in metaSearchTargets[x] ) {
                        if (y == lang) {
                            checkBox += metaSearchTargets[x][y];
                            break;
                        }
                    }
                    checkBox += '</label></div>';
                }
                i++;
            }
        }
        mtsState = 0;
        return checkBox;
    }
}

function getMetaSearchCheckInDate(boxName) {

    switch(boxName){
        case "smallbooking":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val();
        break;

        case "bigbooking":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_In]").val();
        break;

        case "topbarbooking":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_InTopBar]").val();
        break;

        case "premium":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val();
        break;
    }

    return metaInputCheckinDate;
}

function getMetaSearchCheckOutDate(boxName) {

    switch(boxName){
        case "smallbooking":
            var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val();
        break;

        case "bigbooking":
            var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_Out]").val();
        break;

        case "topbarbooking":
            var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_OutTopBar]").val();
        break;

        case "premium":
            var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val();
        break;
    }

    return metaInputCheckoutDate;

}

function setMetaSearchCheckInDate(boxName, value) {
    if (value != "") {
        switch(boxName){
            case "smallbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val(value);
            break;

            case "bigbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_In]").val(value);
            break;

            case "topbarbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InTopBar]").val(value);
            break;

            case "premium":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val(value);
            break;
        }
    }
}


function setMetaSearchCheckOutDate(boxName, value) {
    if (value != "") {
        switch(boxName){
            case "smallbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val(value);
            break;

            case "bigbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_Out]").val(value);
            break;

            case "topbarbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutTopBar]").val(value);
            break;

            case "premium":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val(value);
            break;
        }
    }
}

$j(document).ready(function(){
    if (typeof metaSearchBoxes !== 'undefined') {
        // Get destination id of the page upon completely loaded.
        for(z=0; z<metaSearchBoxes.length; z++){
            if (typeof metaSearchBoxes[z] !== 'undefined'){
                var metaQueryDestinationID = $j("#metasearch-"+metaSearchBoxes[z][1]+" input:[name=pDestinationID]").val();
                // If there is mts language cookie, use it
                var currentMtsLang = getMtscookie('mtsLanguage');
                if(currentMtsLang != "") {
                    var metaInputLanguage = currentMtsLang;
                } else {
                    var metaInputLanguage = metaSearchBoxes[z][0];
                }

                $j("#lang-"+metaSearchBoxes[z][1]+"-selected-value").val(metaInputLanguage);


                $j("#metasearch-"+metaSearchBoxes[z][1]+" select[name='checkHotel[DestinationID]']").bind("change", function() {
                    changeMetaSearchCheckBox($j(this), "destination");
                });

                $j("#metasearch-"+metaSearchBoxes[z][1]+" select[name='checkHotel[Nights]']").bind("change", function() {

                    var currentBoxActive =  $j(this).closest("form").attr("id");
                    currentBoxActive = currentBoxActive.split("-");

                    var metaInputCheckinDate = getMetaSearchCheckInDate(currentBoxActive[1]);
                    var metaInputCheckoutDate = getMetaSearchCheckOutDate(currentBoxActive[1]);

                    document.cookie="mtscheckin="+metaInputCheckinDate+";path=/";
                    document.cookie="mtscheckout="+metaInputCheckoutDate+";path=/";

                    changeMetaSearchCheckBox($j(this), "destination");

                });

                // Set Cookie check in and check out for each box

                //alert(getMtscookie('mtscheckin'));
                //alert(getMtscookie('mtscheckout'));

                var mtscheckin = getMtscookie('mtscheckin');
                var mtscheckout = getMtscookie('mtscheckout');

                if ((mtscheckin != "") && (mtscheckout != "")){

                    setMetaSearchCheckInDate(metaSearchBoxes[z][1], getMtscookie('mtscheckin'));
                    setMetaSearchCheckOutDate(metaSearchBoxes[z][1], getMtscookie('mtscheckout'));

                    // For night big box needed to recalculated based on the stored cookies.
                    var bigboxStartDate = bigChStrtoDate(getMtscookie('mtscheckin'))
                    var bigboxEndDate =bigChStrtoDate(getMtscookie('mtscheckout'))
                    var Nights = Math.floor((bigboxEndDate.getTime() - bigboxStartDate.getTime()) / (1000 * 60 * 60 * 24));
                    $j("#metasearch-"+metaSearchBoxes[z][1]+" select[name='checkHotel[Nights]']").val(bigpadZero(Nights));

                }

                if (getMtscookie('mtscheckin') != "") {
                    var metaInputCheckinDate = mtscheckin;
                } else {
                    var metaInputCheckinDate = getMetaSearchCheckInDate(metaSearchBoxes[z][1]);
                }
                if (getMtscookie('mtscheckout') != "") {
                    var metaInputCheckoutDate = mtscheckout;
                } else {
                    var metaInputCheckoutDate = getMetaSearchCheckOutDate(metaSearchBoxes[z][1]);
                }
            }
        }

        var chosenSites = new Array();

        for (var key in metaSearchTargets) {
            chosenSites.push(key);
        }

        //alert(chosenSites);
        //alert(metaQueryDestinationID);
        //alert(metaInputLanguage);
        //alert(metaInputCheckinDate);
        //alert(metaInputCheckoutDate);

        // Check whether the Destination ID is mapped.

        $j.ajax({
            url: "//latestays.awd.ws/metasearch/",
            data: {
                mode: "destination",
                sf_culture: metaInputLanguage,
                id: metaQueryDestinationID,
                checkin: metaInputCheckinDate,
                checkout: metaInputCheckoutDate,
                chosensites: chosenSites
            },
            dataType: "jsonp",
            success: function(data){
                if(data != null) {
                    var domainNames = genMetaSearchAjaxDomainNames(data);
                    // Populate the default checkboxes for every search box on the page based on the ajax result
                    for(z=0; z<metaSearchBoxes.length; z++){
                        if (typeof metaSearchBoxes[z] !== 'undefined'){
                            $j("#mts-"+metaSearchBoxes[z][1]+"-checkboxes").html(genMetaSearchCheckBoxAjax(metaInputLanguage, metaSearchBoxes[z][1], domainNames));

                            // Set hidden value of cookie language code
                            if(currentMtsLang != "") {
                                $j("#lang-"+metaSearchBoxes[z][1]+"-selected-value").val(currentMtsLang);
                            }

                        }
                    }
                }
            },
            complete: function(){
                $j("#mts-bigbooking-checkboxes").find("div:last-child").addClass("last");
            }
        });

    }

    $j(window).resize(function() {
        if ($j("#mts-dialog").length > 0) {
            hotelID = $j('#mts-dialog input[name$="checkHotel[HotelCode]"]').val();
            if ($j("#mts-dialoglink-"+hotelID).length >0) {
                var myDialogX = $j("#mts-dialoglink-"+hotelID).offset().left - $j(document).scrollLeft() - mtsWidth + $j("#mts-dialoglink-"+hotelID).outerWidth();
                var myDialogY = $j("#mts-dialoglink-"+hotelID).offset().top - $j(document).scrollTop() + $j("#mts-dialoglink-"+hotelID).outerHeight();

                var myDialogX = myDialogX + offMtsX;
                var myDialogY = myDialogY - offMtsY;

                $j("#mts-dialog").dialog("option", "position", [myDialogX, myDialogY]);
            }
        }
    });

});


function genMetaSearchAjaxDomainNames(data) {
    var domainNames = new Object();

    $j.each(data, function(){
        //alert(this);
        //Create object of Mapped URLs, use metaSearchTargets key as the key for this newly created object
        var domainResult = this.match(/:\/\/(www\.)?(.[^/:]+)/)[2];
        domainResult = domainResult.split(".");

        for (var x in metaSearchTargets) {
            xElm = x.split(".");
            if (xElm[0] == domainResult[0]){
                var key = x;
            }
        }

        domainNames[key] = this;

    });

    return domainNames;
}

function changeMetaSearchCheckBox(obj, mode) {

    mtsState = arguments[2];

    var currentBoxActive =  $j(obj).closest("form").attr("id");
    currentBoxActive = currentBoxActive.split("-");

    var metaQueryMode = mode;

    switch(mode) {
        case "destination":
        var metaQueryID = $j("#metasearch-"+currentBoxActive[1]+" select[name='checkHotel[DestinationID]']").val();
        break;

        case "hotel":
        var metaQueryID = $j("#metasearch-"+currentBoxActive[1]+" input:[name='checkHotel[HotelCode]']").val();
        break;
    }

    var metaInputLanguage = $j("#lang-"+currentBoxActive[1]+"-selected-value").val();

    if (getMtscookie('mtscheckin') != "") {
        var metaInputCheckinDate = getMtscookie('mtscheckin');
    } else {
        var metaInputCheckinDate = getMetaSearchCheckInDate(currentBoxActive[1]);
    }
    if (getMtscookie('mtscheckout') != "") {
        var metaInputCheckoutDate = getMtscookie('mtscheckout');
    } else {
        var metaInputCheckoutDate = getMetaSearchCheckOutDate(currentBoxActive[1]);
    }

    var chosenSites = new Array();

    for (var key in metaSearchTargets) {
        chosenSites.push(key);
    }

    $j.ajax({
        url: "//latestays.awd.ws/metasearch/",
        data: {
            mode: metaQueryMode,
            sf_culture: metaInputLanguage,
            id: metaQueryID,
            checkin: metaInputCheckinDate,
            checkout: metaInputCheckoutDate,
            chosensites: chosenSites
        },
        dataType: "jsonp",
        success: function(data){
            if (data != null) {
                var domainNames = genMetaSearchAjaxDomainNames(data);

                $j("#mts-"+currentBoxActive[1]+"-checkboxes").html(genMetaSearchCheckBoxAjax(metaInputLanguage, currentBoxActive[1], domainNames, mtsState));
            }
        },
        complete: function() {
            $j("#mts-bigbooking-checkboxes").find("div:last-child").addClass("last");
        }
    });
}

// Hotel List Dialog
var offMtsX = 218;
var offMtsY = 5;
var mtsWidth = 530;
var mtsHeight = 180;
var mouseLeft = false;
var cb = function(){
    if(mouseLeft == true){
        $dialog.dialog("close");
    }
};
var cbDelay = 1000;

function mtsDialog(hotelID, hotelName){

    var myDialogX = $j("#mts-dialoglink-"+hotelID).offset().left - $j(document).scrollLeft() - mtsWidth + $j("#mts-dialoglink-"+hotelID).outerWidth();
    var myDialogY = $j("#mts-dialoglink-"+hotelID).offset().top - $j(document).scrollTop() + $j("#mts-dialoglink-"+hotelID).outerHeight();

    var myDialogX = myDialogX + offMtsX;
    var myDialogY = myDialogY - offMtsY;

    html = "<div id=\"mts-dialog\" class=\"mts-dialog\"><form name=\"checkAvailQuick\" id=\"metasearch-premium\">";
    html += "<input type=\"hidden\" name=\"checkHotel[HotelCode]\" value=\""+hotelID+"\" />";
    html += "<input type=\"hidden\" name=\"checkHotel[LanguageCodeSearch]\" value=\""+metaSearchBoxesDefLang +"\" id=\"lang-premium-selected-value\" />";

    html += "<table width=\"498\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">";
    html += "<tr><td colspan=\"3\">";
    html += "<div id=\"arrow-point\"><img src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-arrow-point.png\" width=\"19\" height=\"15\" align=\"right\" /></div></td></tr>";
    html += "<tr><td width=\"1\"><img src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-1.png\" width=\"23\" height=\"23\" /></td>";
    html += " <td background=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-2.png\"><img src=\"http://static.asiawebdirect.com/images/gen/space.gif\" width=\"1\" height=\"5\" />";
    html += "</td>";
    html += "<td width=\"1\"><img src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-3.png\" width=\"23\" height=\"23\" /></td>";
    html += "</tr>";

    html += " <tr><td background=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-8.png\"><img src=\"http://static.asiawebdirect.com/images/gen/space.gif\" width=\"5\" height=\"5\" /></td>";
    html += "  <td valign=\"top\" bgcolor=\"#F6F6F6\">";

    // Start Metasearch Content

    switch(metaSearchBoxesDefLang) {
        case "ja_JP":
        html += "<div class=\"ftbp\"><span class=\"ftbp-hotels\">"+hotelName+"</span> "+metaSearchDialogLabels[2]+"</div>";
        break;

        default:
        html += "<div class=\"ftbp\">"+metaSearchDialogLabels[2]+" <span class=\"ftbp-hotels\">"+hotelName+"</span></div>";
        break;
    }

    html += "<div class=\"ftbp-line\"></div>";

    html += "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
    html += "<tbody><tr>";
    html += "<td><div class=\"small-black\">"+metaSearchDialogLabels[3]+":</div></td>";
    html += "<td width=\"1\"><div class=\"popup-form1\">";
    html += "<input type=\"text\" name=\"txtCheck_InShort\" class=\"check-field1\" id=\"txtCheck_InShort\" size=\"10\" readonly=\"readonly\"  value=\"dd/mm/yy\" onclick=\"javascript:prefixYear(2);opencalendar('dd/mm/yyyy',getFormElmMetaSearch('checkAvailQuick','txtCheck_InShort'),this, 'showChangeDateShortMetaSearchIn()', event.x, event.y);return false;\"/>";
    html += "<label><img style=\"padding:5px 0 0 0;\" src=\"http://static.asiawebdirect.com/portals/v7/images/topbar/calendar.png\" onclick=\"javascript:prefixYear(2);opencalendar('dd/mm/yyyy',getFormElmMetaSearch('checkAvailQuick', 'txtCheck_InShort'),this, 'showChangeDateShortMetaSearchIn()', event.x, event.y);return false;\" style=\"cursor:pointer;\" border=\"0\"></label>";
    html += "</div></td>";
    html += "<td valign=\"middle\"><img width=\"14\" height=\"39\" src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-line-y.gif\"></td>";
    html += " <td><div class=\"small-black\">"+metaSearchDialogLabels[4]+":</div></td>";
    html += "<td width=\"1\"><div class=\"popup-form1\">";
    html += "<input type=\"text\" name=\"txtCheck_OutShort\" class=\"check-field1\" id=\"txtCheck_OutShort\" size=\"10\" readonly=\"readonly\"  value=\"dd/mm/yy\" onclick=\"javascript:prefixYear(2);opencalendar('dd/mm/yyyy',getFormElmMetaSearch('checkAvailQuick','txtCheck_OutShort'),this, 'showChangeDateShortMetaSearchOut()', event.x, event.y);return false;\"/>";
    html += "<label><img style=\"padding:5px 0 0 0;\" src=\"http://static.asiawebdirect.com/portals/v7/images/topbar/calendar.png\" onclick=\"javascript:prefixYear(2);opencalendar('dd/mm/yyyy',getFormElmMetaSearch('checkAvailQuick', 'txtCheck_OutShort'),this, 'showChangeDateShortMetaSearchOut()', event.x, event.y);return false;\" style=\"cursor:pointer;\" border=\"0\"></label>";
    html += "</div></td>";
    html += " <td valign=\"middle\"><img width=\"14\" height=\"39\" src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-line-y.gif\"></td>";
    html += "<td><div class=\"small-black\">"+metaSearchDialogLabels[5]+":</div></td>";
    html += "<td><div class=\"popup-form2\">";

        // If there is mts language cookie, use it
        var currentMtsLang = getMtscookie('mtsLanguage');
        if (currentMtsLang != "") {
            var defaultBoxLang = currentMtsLang;
        } else {
            var defaultBoxLang = metaSearchBoxesDefLang ;
        }

        for(i=0; i<langCodeBox.length; i++){
            if(langCodeBox[i][1] == defaultBoxLang ) {
                var langSymbol = langCodeBox[i][1];
                var langTxt = langCodeBox[i][2];
                break;
            }
        }
        optLangList = genLangOptionList(langCodeBox, defaultBoxLang);

    html += "<span id=\"lang-premium-result\"><dl id=\"lang-premium\" class=\"dropdown lang-premium\"><dt><a href=\"javascript:void(0);\"><span><img class=\"flag\" src=\"http://static.asiawebdirect.com/portals/v7/images/flags/"+langSymbol+".png\" alt=\""+langTxt+"\" />"+langTxt+"</span></a></dt><dd><ul>"+optLangList+"</ul></dd></dl></span>";

    html += " </div></td>";
    html += " </tr>";
    html += " </tbody>";
    html += " </table>";
    html += "<div class=\"ftbp\" style=\"padding-top:5px;\">"+metaSearchDialogLabels[6]+"</div>";
    html += "<div class=\"ftbp-line\"></div>";
    html += "<div id=\"mts-premium\" class=\"metaSearchBox\">";
    html += "<div id=\"mts-premium-checkboxes\">"+metaSearchDialogLabels[7]+"</div>";
    html += "</div>";

    // End Metasearch Content

    html += "</td>";
    html += " <td background=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-4.png\"><img src=\"http://static.asiawebdirect.com/images/gen/space.gif\" width=\"5\" height=\"5\" /></td>";
    html += "</tr>";
    html += " <tr>";
    html += "<td><img src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-7.png\" width=\"23\" height=\"23\" /></td>";
    html += " <td background=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-6.png\"><img src=\"http://static.asiawebdirect.com/images/gen/space.gif\" width=\"5\" height=\"5\" /></td>";
    html += "<td><img src=\"http://static.asiawebdirect.com/images/metasearch/dialog/popup-search-f-5.png\" width=\"23\" height=\"23\" /></td>";
    html += "</tr>";
    html += "</table>";

    html +="</form>";

    html += "<div id=\"popup-search\"><input type=\"image\" onclick=\"initMetaSearchWindows('checkAvailQuick');return false;\" name=\"imageField2\" id=\"imageField2\" src=\"http://static.asiawebdirect.com/"+metaSearchBoxesDefLang+"/images/metasearch/dialog/popup-search-button-show-prices.png\" align=\"right\"></div>";
    html +="</div>";

    $j(document).ready(function(){

        $j(".ui-dialog-content").dialog("destroy");
        $j("#mts-dialog").remove();

        $dialog = $j(html).dialog({dialogClass:"mts-dialog", title:false, draggable: false, autoOpen: false, position: [myDialogX, myDialogY], width: mtsWidth, height: mtsHeight, resizable: false,

            open: function(event, ui) {
                mouseLeft = false;
                hideCalendar();
                setDefDateShortMetaSearch('checkAvailQuick');

                //Set Cookie for Chosen check in and check out dates

                setMetaSearchCheckInDate("premium", getMtscookie('mtscheckin'));
                setMetaSearchCheckOutDate("premium", getMtscookie('mtscheckout'));

                genLangDrpDwn('lang-premium');

                // Set Metasearch checkboxes

                var metaQueryHotelID = hotelID;

                // If there is mts language cookie, use it
                var currentMtsLang = getMtscookie('mtsLanguage');
                if(currentMtsLang != "") {
                    var metaInputLanguage = currentMtsLang;
                } else {
                    var metaInputLanguage = metaSearchBoxesDefLang;
                }

                $j("#lang-premium-selected-value").val(metaInputLanguage);

                var metaInputCheckinDate = $j("#mts-dialog input:[name=txtCheck_InShort]").val();
                var metaInputCheckoutDate = $j("#mts-dialog input:[name=txtCheck_OutShort]").val();

                var chosenSites = new Array();

                for (var key in metaSearchTargets) {
                    chosenSites.push(key);
                }

                //Check whether the Destination ID is mapped.

                $j.ajax({
                    url: "//latestays.awd.ws/metasearch/",
                    data: {
                        mode: "hotel",
                        sf_culture: metaInputLanguage,
                        id: metaQueryHotelID,
                        checkin: metaInputCheckinDate,
                        checkout: metaInputCheckoutDate,
                        chosensites: chosenSites
                    },
                    dataType: "jsonp",
                    success: function(data){
                        if (data != null) {
                            var domainNames = genMetaSearchAjaxDomainNames(data);
                            // Populate the default checkboxes for every search box on the page based on the ajax result
                            $j("#mts-premium-checkboxes").html(genMetaSearchCheckBoxAjax(metaInputLanguage,"premium", domainNames));
                        }
                    },
                    complete: function(){
                        $j("#mts-bigbooking-checkboxes").find("div:last-child").addClass("last");
                    }
                });

                if($j(".mts-overlay").length == 0) {
                    $j("body").append("<div class=\"mts-overlay\"></div>");
                }

                $j(".mts-dialog-link").bind("click", function(){
                    mouseLeft = false;
                    $j(".mts-dialog-link").off("mouseleave");
                    $j(".ui-dialog").off("mouseleave");
                    $j(".mts-overlay").css("visibility", "visible");
                    $j(".AWDtopbar").css("zIndex", 900);
                });

                $j(".mts-dialog-link").mouseleave(function() {
                    mouseLeft = true;
                    setTimeout(cb, cbDelay);
                });

                $j(".ui-dialog").mouseover(function(){
                    mouseLeft = false;
                });

                $j(".ui-dialog").mouseleave( function(){
                    mouseLeft = true;
                    setTimeout(cb, cbDelay);
                });

                $j(".popup-form1 label img").bind("click", function(){
                    mouseLeft = false;
                    if($j(".mts-overlay").css("visibility") == "hidden") {
                        $j(".mts-dialog-link").off("mouseleave");
                        $j(".ui-dialog").off("mouseleave");
                    }
                });

                $j("#calendar").bind("click", function(){
                    if($j(".mts-overlay").css("visibility") == "hidden") {
                        $j(".ui-dialog").mouseleave( function(){
                            mouseLeft = true;
                            setTimeout(cb, cbDelay);
                        });
                    }
                });

                $j(".ui-icon-closethick").bind("click", function(){
                    hideCalendar();
                });
            },

            close: function(event, ui) {

                $j(".mts-overlay").css("visibility", "hidden");

                $j(".mts-dialog-link").mouseleave(function() {
                    mouseLeft = true;
                    setTimeout(cb, cbDelay);
                });

                $j(".ui-dialog").mouseleave( function(){
                    mouseLeft = true;
                    setTimeout(cb, cbDelay);
                });

                $j(".AWDtopbar").css("zIndex", 999);
            }

        });

        if (!$j($dialog).dialog('isOpen')) {
            $dialog.dialog("open");
        }

    });
}


function getFormElmMetaSearch(formname, tmpname) {
    if (typeof document.forms[formname] !== 'undefined') {
        elm = document.forms[formname].elements[tmpname];
    }
    return elm;
}

var ckAvailStartTdyShort = new Date();
var ckAvailStartTdyDateShift = 1;
//remove time from Date
ckAvailStartTdyShort = new Date(ckAvailStartTdyShort.getFullYear(),  ckAvailStartTdyShort.getMonth(), ckAvailStartTdyShort.getDate());
var ckAvailStartDateShort = new Date(ckAvailStartTdyShort.getFullYear(),  ckAvailStartTdyShort.getMonth(), ckAvailStartTdyShort.getDate() + ckAvailStartTdyDateShift);

function showChangeDateShortMetaSearch(formname, values){
    if (values=='in') {
        setAllDateMetaSearch(formname, getFormElmMetaSearch(formname, 'txtCheck_InShort').value, 'in');
    }
    else
    if (values=='out')
    {
        setAllDateMetaSearch(formname, getFormElmMetaSearch(formname, 'txtCheck_OutShort').value, 'out');
    }
}

function showChangeDateShortMetaSearchIn(){
    showChangeDateShortMetaSearch('checkAvailQuick', 'in');
}
function showChangeDateShortMetaSearchOut(){
    showChangeDateShortMetaSearch('checkAvailQuick', 'out');
}

function setAllDateMetaSearch(formname, cDate, InOut) {

    if (InOut=='in')
    {
        var startDate = ChStrtoDate(cDate);
        var endDate = ChStrtoDate(getFormElmMetaSearch(formname, 'txtCheck_OutShort').value);
        if(startDate<ckAvailStartTdyShort) startDate = ckAvailStartTdyShort;
        if(startDate>=endDate) endDate = shortAddDate(startDate, ckAvailStartTdyDateShift);
    }
    else
    if (InOut=='out')
    {
        var startDate = ChStrtoDate(getFormElmMetaSearch(formname, 'txtCheck_InShort').value);
        var endDate = ChStrtoDate(cDate);
        if(startDate<ckAvailStartTdyShort) startDate = ckAvailStartTdyShort;
        if(startDate>=endDate) endDate = shortAddDate(startDate, ckAvailStartTdyDateShift);
    }
    else
    {
        var startDate = ckAvailStartTdyShort;
        var endDate = ckAvailStartDateShort;
    }

    getFormElmMetaSearch(formname, 'txtCheck_InShort').value = ChDatetoStr(startDate);
    getFormElmMetaSearch(formname, 'txtCheck_OutShort').value = ChDatetoStr(endDate);

}

function setDefDateShortMetaSearch(formname) {
    getFormElmMetaSearch(formname, 'txtCheck_InShort').value = ChDatetoStr(ckAvailStartTdyShort);
    getFormElmMetaSearch(formname, 'txtCheck_OutShort').value = ChDatetoStr(ckAvailStartDateShort);

    setAllDateMetaSearch(formname, ChDatetoStr(ckAvailStartTdyShort), 'in');
    setAllDateMetaSearch(formname, ChDatetoStr(ckAvailStartDateShort), 'out');
}

// End Hotel List Dialog


function getMtscookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    // if cookie exists
    if (offset != -1) {
      offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1) end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}
    var outputPath = 'http://static.asiawebdirect.com/reserve/output/';
var ckAvailStartTdy = new Date();
var DefNight = 1;
//remove time from Date
ckAvailStartTdy = new Date(ckAvailStartTdy.getFullYear(),  ckAvailStartTdy.getMonth(), ckAvailStartTdy.getDate());
var ckAvailStartDate = new Date(ckAvailStartTdy.getFullYear(),  ckAvailStartTdy.getMonth(), ckAvailStartTdy.getDate() + DefNight);

function getElcheckavailability(tmpname) {
	return document.forms['checkAvail'].elements[tmpname];
}

function addScriptCheckbox(id,src){
	var jScript = document.createElement("script");
	jScript.setAttribute("type", "text/javascript");
	jScript.setAttribute("id", id);
	jScript.setAttribute("src", src);
	document.getElementsByTagName("body")[0].appendChild(jScript);
}

function bigAddDate(cDate, addDay)
{
	return new Date(cDate.getFullYear(),  cDate.getMonth(), cDate.getDate() + addDay);
}

function showChangeDate(values) {
	if(values=='in') {
		bigsetAllDate(getElcheckavailability('txtCheck_In').value,'in');
	}
	if(values=='out') {
		bigsetAllDate(getElcheckavailability('txtCheck_Out').value,'out');
	}
}

function bigpadZero(num) {
	return (num< 10) ? '0' + num : num ;
}

function bigChDatetoStr(cDate) {
	return bigpadZero(cDate.getDate()) + '/' + bigpadZero(cDate.getMonth() + 1) + '/' + cDate.getFullYear();
}

function bigChStrtoDate(cDate) {
	var arrcDate = cDate.split("/");
	return new Date(arrcDate[2], Number(arrcDate[1])-1, Number(arrcDate[0]));
}

function bigsetAllDate(cDate,InOut) {
	if (InOut=='night')
	{
		var startDate = bigChStrtoDate(cDate);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else
	if (InOut=='in')
	{
		var startDate = bigChStrtoDate(cDate);
		var endDate = bigChStrtoDate(getElcheckavailability('txtCheck_Out').value);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		if(startDate>=endDate) endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else 
	if (InOut=='out')
	{
		var startDate = bigChStrtoDate(getElcheckavailability('txtCheck_In').value);
		var endDate = bigChStrtoDate(cDate);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		if(startDate>=endDate) endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else
	{
		var startDate = ckAvailStartTdy;
		var endDate = ckAvailStartDate;
	}

	var Nights = Math.floor((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24)); 
	setElement(getElcheckavailability('checkHotel[Nights]'), Nights);

	getElcheckavailability('txtCheck_In').value = ChDatetoStr(startDate);
	getElcheckavailability('txtCheck_Out').value = ChDatetoStr(endDate);
	
	var arrtmpDate = ChDatetoStr(startDate).split("/");
	var b = getElcheckavailability('checkHotel[sYear]');
	b.value = arrtmpDate[2];
	var b = getElcheckavailability('checkHotel[sMonth]');
	b.value = arrtmpDate[1];
	var b = getElcheckavailability('checkHotel[sDay]');
	b.value = arrtmpDate[0];

	var arrtmpDate = ChDatetoStr(endDate).split("/");
	var b = getElcheckavailability('checkHotel[eYear]');
	b.value = arrtmpDate[2];
	var b = getElcheckavailability('checkHotel[eMonth]');
	b.value = arrtmpDate[1];
	var b = getElcheckavailability('checkHotel[eDay]');
	b.value = arrtmpDate[0];
}

function changeCountryDestination(tmpAtext) {
	var cForm = document.forms['checkAvail'];
	var a;
	var cElement = cForm.elements['checkHotel[pCountryID]'];
	if(cElement!=null) 
		try {
			a = cElement .options[cElement.selectedIndex].value;
		} catch (e) {}
	else a = getElcheckavailability("pCountry").value;
	
	// var b = getElcheckavailability("pDestinationID").value;
	en_disList(true);
	var lang = document.forms['checkAvail'].elements['checkHotel[LanguageCode]'].value;
	var x = outputPath + 'Big/country/' + lang + "/" + a + '.js';
	// var x = pathwebcheckavailability + '?action=country&country='+a+'&deF='+b+'&hasAll='+tmpAtext+'&lang='+lang;
	addScriptCheckbox('jsCoUDestination', x);
}

function changepDestination() {

	if (typeof metaSearchBoxes == 'undefined') {
 
		var a = getElcheckavailability("pDestinationID").value;
		var b = getElcheckavailability("DestinationID").value;
		var obj = getElcheckavailability('checkHotel[pDestinationID]');
		var def = 0;
		if(a==obj.value) def = b;
		en_disList(true);
		var lang = document.forms['checkAvail'].elements['checkHotel[LanguageCode]'].value;
		// var x = pathwebcheckavailability + '?action=dest&dest='+obj.value+'&deF='+def+'&lang='+lang;
		var x = outputPath + 'Big/destination/' + lang + "/" + obj.value + '.js';

		addScriptCheckbox('jsChavDestination', x);
	
	}
}

function changelist(aarr, barr, obj, indexSelected) {

	if (typeof metaSearchBoxes !== 'undefined') {
	
		var defDestID = getElcheckavailability("pDestinationID").value;
		var defLangCode = document.forms['checkAvail'].elements['checkHotel[LanguageCode]'].value;
 
		switch(defLangCode) {
			case "en":
			var defDestLabel = "All Destinations";
			break;
			
			case "ja":
			var defDestLabel = "全エリア";
			break;
		}

		if (document.getElementById('bigboxSearch')) 
		{
			// Metasearch do nothing
		}
		else
		{
			aarr.unshift(defDestLabel);
			barr.unshift(defDestID);
		}

	 	// Metasearch
		obj = "checkHotel[DestinationID]";

		var i;
		var defShow = "";
		var overideDef = -1;
		if(obj=="checkHotel[DestinationID]")
		{
			defShow = getElcheckavailability("DestinationID").value;
		}
		obj = getElcheckavailability(obj);
		obj.length = 0;
		for(i=0;i<aarr.length;i++) {
			if(defShow!="")
			{
				if(defShow==barr[i]) overideDef = i;
			}
			obj.options[i]=new Option(aarr[i],barr[i]);
		}
		//obj.selectedIndex = indexSelected;
		try {obj.options[indexSelected].selected=true;} catch(e) {};
		if(overideDef>-1) try {obj.options[overideDef].selected=true;} catch(e) {};
		en_disListBig(false);

	} else {

		var i;
		var defShow = "";
		var overideDef = -1;
		if(obj=="checkHotel[pDestinationID]")
		{
			defShow = getElcheckavailability("pDestinationID").value;
		} else if(obj=="checkHotel[DestinationID]")
		{
			defShow = getElcheckavailability("DestinationID").value;
		}	
		obj = getElcheckavailability(obj);
		obj.length = 0;
		for(i=0;i<aarr.length;i++) {
			if(defShow!="")
			{
				if(defShow==barr[i]) overideDef = i;
			}
			obj.options[i]=new Option(aarr[i],barr[i]);
		}
		try {obj.options[indexSelected].selected=true;} catch(e) {};
		if(overideDef>-1) try {obj.options[overideDef].selected=true;} catch(e) {};
		en_disList(false);

	}  

}

function changeDestination() {
	var obj = document.forms['checkAvail'].elements['checkHotel[DestinationID]'];
	en_disList(true);
	var lang = document.forms['checkAvail'].elements['checkHotel[LanguageCode]'].value;
	// var x = pathwebcheckavailability + '?action=hotel&hotel='+obj.value+'&lang='+lang;
	var x = outputPath + 'Big/hotel/' + lang + "/" + obj.value + '.js';
	var cForm = document.forms['checkAvail'];
	// var cElement = cForm.elements['checkHotel[debug]'];
	// if(cElement!=null) 
	//	try {
	//		x = x + '&debug=' + cElement.value;
	//	} catch (e) {}

	addScriptCheckbox('jsChDsDestination', x);
}

function setSubmitButton(flag) {
	var cForm = document.forms['checkAvail'];
	var x;
	if(flag) x = "";
	else x = "none";
	var cElement = cForm.elements['Submit'];
	if(cElement!=null) k.style.display = x;
}

function en_disList(flag) {
	var cForm = document.forms['checkAvail'];
	var cElement = cForm.elements['checkHotel[pCountryID]'];
	if(cElement!=null) 
		try {
			cElement.disabled=flag;
		} catch (e) {}
	var cElement = cForm.elements['checkHotel[pDestinationID]'];
	cElement.disabled=flag;
	var cElement = cForm.elements['checkHotel[DestinationID]'];
	cElement.disabled=flag;
	var cElement = cForm.elements['checkHotel[Category]'];
	cElement.disabled=flag;
	var cElement = cForm.elements['checkHotel[HotelCode]'];
	cElement.disabled=flag;
	setSubmitButton(false);
}

var bigddd = 0;
function setDefDate() {
	bigddd = bigddd + 1;
	getElcheckavailability('txtCheck_In').value = bigChDatetoStr(ckAvailStartTdy);
	getElcheckavailability('txtCheck_Out').value = bigChDatetoStr(ckAvailStartDate);

	bigsetAllDate(bigChDatetoStr(ckAvailStartTdy), 'in');
	bigsetAllDate(bigChDatetoStr(ckAvailStartDate), 'out');
}

function setElement(cElement,cValue)
{
	for(var i=0;i<cElement.length;i++)
	{
		if(Number(cElement.options[i].value)==cValue)
		{
			cElement.selectedIndex = i;
			break;
		}
	}
	if(i==cElement.length) {
		if((cElement.name.indexOf("Year")!=-1) || (cElement.name.indexOf("Nights")!=-1)) {
			var oldYear = Number(cElement.options[cElement.length - 1].value) + 1;
			while (oldYear<=cValue)
			{
				cElement.options[cElement.length] = new Option(oldYear, oldYear);
				oldYear = oldYear + 1;
			}
			cElement.selectedIndex = cElement.length - 1;
		}
	}
}

function checkAvailability()
{
	var cForm = document.forms['checkAvail'];
	cForm.submit();
}


function updateCheckAvailAll()
{
	bigsetAllDate(getElcheckavailability('txtCheck_In').value,'night');
}

function makeStartShowCodeRight(flag) {
	try {
		var a;
		a = document.getElementById("StarRowHotelCode");
		var x;
		if(flag) x = "";
		else x = "none";
		if(a==null) a = document.all.StarRowHotelCode;
		if(a==null) a = document.StarRowHotelCode;
		a.style.display = x;
	} catch(e) {}
}

function makeStartShowRight(flag) {
	try {
		var a;
		a = document.getElementById("StarRowHotel");
		var x;
		if(flag) x = "";
		else x = "none";
		if(a==null) a = document.all.StarRowHotel;
		if(a==null) a = document.StarRowHotel;
		a.style.display = x;
	} catch(e) {}
}

function updateCheckAvailStar(obj) {
	try {
		if(obj.selectedIndex<=0) makeStartShowRight(true);
		else makeStartShowRight(false);
	} catch(e) {}
}


// Metasearch Required this for Asia/Macau condition on Bigbox Portal


function showDestination(fCountry) {
 
	var a = getElcheckavailability("pDestinationID").value;
	var b = getElcheckavailability("DestinationID").value;
 
	en_disListBig(true);
	var lang = getElcheckavailability('checkHotel[LanguageCode]').value;
	// var x = pathwebcheckavailabilityShort + '?action=dest&dest='+a+'&deF='+b+"&lang="+lang;
	var x = outputPath + 'Big/destination/' + lang + "/" + a + '.js';
	// if(fCountry!="") x = x + "&TypeSet=" + fCountry;

	addScriptCheckbox('jsShOChaVDestination', x);

}
 function en_disListBig(flag) {
	var cElement = getElcheckavailability('checkHotel[DestinationID]');
	cElement.disabled=flag;
	setSubmitButtonShort(false);
}
  
}

// end big booking box


// small booking box

if (document.getElementById('small-booking-premium')) {
    ﻿var ckAvailStartTdyShort = new Date();
var ckAvailStartTdyDateShift = 1;
//remove time from Date
ckAvailStartTdyShort = new Date(ckAvailStartTdyShort.getFullYear(),  ckAvailStartTdyShort.getMonth(), ckAvailStartTdyShort.getDate());
var ckAvailStartDateShort = new Date(ckAvailStartTdyShort.getFullYear(),  ckAvailStartTdyShort.getMonth(), ckAvailStartTdyShort.getDate() + ckAvailStartTdyDateShift);

function getElcheckavailabilityShort(tmpname) {
    return document.forms['checkAvailQuick'].elements[tmpname];
}

function shortAddDate(cDate, addDay)
{
    return new Date(cDate.getFullYear(),  cDate.getMonth(), cDate.getDate() + addDay);
}

function showChangeDateShort(values) {
    if(values=='in') {
        setAllDate(getElcheckavailabilityShort('txtCheck_InShort').value,'in');
    }
    else
    if (values=='out')
    {
        setAllDate(getElcheckavailabilityShort('txtCheck_OutShort').value,'out');
    }
}

function setAllDate(cDate,InOut) {
    if (InOut=='in')
    {
        var startDate = ChStrtoDate(cDate);
        var endDate = ChStrtoDate(getElcheckavailabilityShort('txtCheck_OutShort').value);
        if(startDate<ckAvailStartTdyShort) startDate = ckAvailStartTdyShort;
        if(startDate>=endDate) endDate = shortAddDate(startDate, ckAvailStartTdyDateShift);
    }
    else
    if (InOut=='out')
    {
        var startDate = ChStrtoDate(getElcheckavailabilityShort('txtCheck_InShort').value);
        var endDate = ChStrtoDate(cDate);
        if(startDate<ckAvailStartTdyShort) startDate = ckAvailStartTdyShort;
        if(startDate>=endDate) endDate = shortAddDate(startDate, ckAvailStartTdyDateShift);
    }
    else
    {
        var startDate = ckAvailStartTdyShort;
        var endDate = ckAvailStartDateShort;
    }

    var Nights = Math.floor((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));
    getElcheckavailabilityShort('checkHotel[Nights]').value = Nights;

    getElcheckavailabilityShort('txtCheck_InShort').value = ChDatetoStr(startDate);
    getElcheckavailabilityShort('txtCheck_OutShort').value = ChDatetoStr(endDate);

    var arrtmpDate = ChDatetoStr(startDate).split("/");
    var b = getElcheckavailabilityShort('checkHotel[sYear]');
    b.value = arrtmpDate[2];
    var b = getElcheckavailabilityShort('checkHotel[sMonth]');
    b.value = arrtmpDate[1];
    var b = getElcheckavailabilityShort('checkHotel[sDay]');
    b.value = arrtmpDate[0];

    var arrtmpDate = ChDatetoStr(endDate).split("/");
    var b = getElcheckavailabilityShort('checkHotel[eYear]');
    b.value = arrtmpDate[2];
    var b = getElcheckavailabilityShort('checkHotel[eMonth]');
    b.value = arrtmpDate[1];
    var b = getElcheckavailabilityShort('checkHotel[eDay]');
    b.value = arrtmpDate[0];
}

function createlistYearShort() {
    var a = getElcheckavailabilityShort('checkHotel[sMonth2]');
    a.length = 0;
    createListInOptions(ckAvailStartTdyShort, a);

    var b = getElcheckavailabilityShort('checkHotel[eMonth2]');
    b.length = 0;
    createListInOptions(ckAvailStartDateShort, b);

    getElcheckavailabilityShort('checkHotel[Nights]').value = ckAvailStartTdyDateShift;
}

function createListInOptions(tmptoday, obj)
{
    var sMonth = tmptoday.getMonth() + 1;
    var sYear = tmptoday.getFullYear();
    var i = 0;
    var arrmonth;

    var lang = getElcheckavailabilityShort('checkHotel[LanguageCode]').value;
    if(lang=="ja") arrmonth = new Array("", "1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
    else arrmonth = new Array("", "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    for(i=0;i<=17;i++) {
        sYearShow = String(sYear).substring(2,4);
        obj.options[i]=new Option(arrmonth[sMonth] +' ' + sYearShow, padZero(sMonth)+'/'+sYear);
        sMonth = sMonth + 1;
        if(sMonth>=13) {
            sMonth = 1;
            sYear = sYear + 1;
        }
    }
}

var ddd = 0;
function setDefDateShort() {
    ddd = ddd + 1;
    getElcheckavailabilityShort('txtCheck_InShort').value = ChDatetoStr(ckAvailStartTdyShort);
    getElcheckavailabilityShort('txtCheck_OutShort').value = ChDatetoStr(ckAvailStartDateShort);

    setAllDate(ChDatetoStr(ckAvailStartTdyShort), 'in');
    setAllDate(ChDatetoStr(ckAvailStartDateShort), 'out');
}

function ChDatetoStr(cDate) {
    return padZero(cDate.getDate()) + '/' + padZero(cDate.getMonth() + 1) + '/' + cDate.getFullYear();
}

function ChStrtoDate(cDate) {
    var arrcDate = cDate.split("/");
    return new Date(arrcDate[2], Number(arrcDate[1])-1, Number(arrcDate[0]));
}

function setElementShort(cElement,cValue)
{
    for(var i=0;i<cElement.length;i++)
    {
        if(cElement.options[i].value==cValue)
        {
            cElement.selectedIndex = i;
            break;
        }
    }
    if(i==cElement.length) {
        if(ddd<=2) setDefDateShort();
        return false;
    }
}

function updateCheckAvailAllShort(column, frommonth)
{
    if(column=='sDate')
    {
        var cElement = getElcheckavailabilityShort('checkHotel[sDay]');
        var sDay = cElement[cElement.selectedIndex].value;
        var cElement = getElcheckavailabilityShort('checkHotel[sMonth2]');
        var tmpMonth = cElement[cElement.selectedIndex].value;
        setAllDate(sDay +'/' + tmpMonth, 'in');
    }
    else
    if(column=='eDate')
    {
        var cElement = getElcheckavailabilityShort('checkHotel[eDay]');
        var sDay = cElement[cElement.selectedIndex].value;
        var cElement = getElcheckavailabilityShort('checkHotel[eMonth2]');
        var tmpMonth = cElement[cElement.selectedIndex].value;
        setAllDate(sDay +'/' + tmpMonth, 'out');
    }
}

function padZero(num) {
    return (num< 10) ? '0' + num : num ;
}

setDefDateShort();

function smallSearchBoxSubmit() {
    var urlMapping = {
                        "en_US": {"url": "http://www.hotels.com/PPCHotelDetails","pos": "HCOM_US","locale": "en_US"},
                        "ja_JP": {"url": "http://jp.hotels.com/PPCHotelDetails","pos": "HCOM_JP","locale": "ja_JP"},
                        "zh_CN": {"url": "http://www.hotels.cn/PPCHotelDetails","pos": "HCOM_CN","locale": "zh_CN"},
                        "th_TH": {"url": "http://th.hotels.com/PPCHotelDetails","pos": "HCOM_TH","locale": "th_TH"},
                        "id_ID": {"url": "http://id.hotels.com/PPCHotelDetails","pos": "HCOM_ID","locale": "in_ID"},
                        "ru_RU": {"url": "http://ru.hotels.com/PPCHotelDetails","pos": "HCOM_RU","locale": "ru_RU"},
                        "ko_KR": {"url": "http://kr.hotels.com/PPCHotelDetails","pos": "HCOM_KR","locale": "ko_KR"},
                        "ms_MY": {"url": "http://ms.hotels.com/PPCHotelDetails","pos": "HCOM_MY","locale": "ms_MY"}
                    };
    var $form = $j("#checkAvailQuick");
    var selectedLang = getSelectedValue("lang-smallbooking-premium-result");
    if (!getSelectedValue("lang-smallbooking-premium-result")) {
        selectedLang = "th_TH";
    }
    var urlMap = urlMapping[selectedLang];
    var params = new Object();
//    $form.attr("action", urlMap.url);
    params.pos = urlMap.pos;
    params.locale = urlMap.locale;
    params.hotelid = $j("#hotelid").val();
    params.arrivalDate = $j("#txtCheck_InShort").val();
    params.departureDate = $j("#txtCheck_OutShort").val();
    var url = urlMap.url + "?" + $j.param(params) + "&rffrid=" + $j("#rffrid").val();

    if (typeof track_the_click === "function") {
        track_the_click(url);
    }

    window.open(url);
    return false;
}

}

if(String(typeof(crossobj))=="undefined") {
    if(String(typeof(hasLongType))=="undefined") var hasShortType = "true";
    else var hasShortType = "false";
}


	if(String(typeof(crossobj))=="undefined") {
		var fixedX = -1			// x position (-1 if to appear below control)
		var fixedY = -1			// y position (-1 if to appear below control)
		var startAt = 0			// 0 - sunday ; 1 - monday
		var showWeekNumber = 1		// 0 - don't show; 1 - show
		var showToday = 1			// 0 - don't show; 1 - show
		var imgDir = "http://static.asiawebdirect.com/booking-boxes/images/"
		var mouseX = 0;
		var mouseY = 0;
		var gotoString = "Go To Current Month"
		var todayString = "Today is"
		var weekString = "Wk";

		//var scrollLeftMessage = "Click to scroll to previous month. Hold mouse button to scroll automatically."
		//var scrollRightMessage = "Click to scroll to next month. Hold mouse button to scroll automatically."
		//var selectMonthMessage = "Click to select a month."
		//var selectYearMessage = "Click to select a year."

		var scrollLeftMessage = ""
		var scrollRightMessage = ""
		var selectMonthMessage = ""
		var selectYearMessage = ""

		var closeCalendarMessage = "Close"
		var selectDateMessage = "Select [date] as date." // do not replace [date], it will be replaced by date.

		var crossobj, crossMonthObj, crossYearObj
		var monthSelected, yearSelected, dateSelected
		var omonthSelected, oyearSelected, odateSelected
		var monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2
		var ctlToPlaceValue1, ctlToPlaceValue2, ctlNow, dateFormat
		var nStartingYear

		var bPageLoaded=false
		var ie=document.all
		var dom=document.getElementById

		var ns4=document.layers
		var today = new Date()
		var dateNow = today.getDate()
		var monthNow = today.getMonth()
		var yearNow = today.getYear()
		if(yearNow<2000) yearNow = yearNow + 1900
		var imgsrc = new Array("drop1.gif","drop1.gif","left1.gif","left1.gif","right1.gif","right1.gif")
		var img = new Array()
		var badDate = imgDir + "baddate.gif"

		var imgBL = imgDir + "cornerbotleft.gif"
		var imgBR = imgDir + "cornerbotright.gif"
		var imgTL = imgDir + "cornertopleft.gif"
		var imgTR = imgDir + "cornertopright.gif"

		var bShow = false;
		var iStart,iEnd

		function awdDetectIe()
		{
			if (document.body.style.opacity!=undefined) {return 9;}
			else if (document.body.style.msBlockProgression!=undefined) {return 8;}
			else if (document.body.style.msInterpolationMode!=undefined) {return 7;}
			else if (document.body.style.textOverflow!=undefined) {return 6}
			else {return 5;}
		}

		/* hides <select> and <applet> objects (for IE only) */
		function hideElement( elmID, overDiv )
		{
		  if( ie )
		  {
			if((awdDetectIe()>=7) && (navigator.appName=="Microsoft Internet Explorer")) return false;
			for( i = 0; i < document.all.tags( elmID ).length; i++ )
			{
			  obj = document.all.tags( elmID )[i];
			  if( !obj || !obj.offsetParent )
			  {
				continue;
			  }

			  // Find the element's offsetTop and offsetLeft relative to the BODY tag.
			  objLeft   = obj.offsetLeft;
			  objTop    = obj.offsetTop;
			  objParent = obj.offsetParent;

			  while( objParent.tagName.toUpperCase() != "BODY" && objParent.tagName.toUpperCase() != "HTML")
			  {
				objLeft  += objParent.offsetLeft;
				objTop   += objParent.offsetTop;
				objParent = objParent.offsetParent;
			  }

			  objHeight = obj.offsetHeight - 5;
			  objWidth = obj.offsetWidth;

				var tmpoverDivoffsetTop = overDiv.offsetTop;
				if(LongIsinLayer || ShortIsinLayer) {
					aTag = document.getElementById(LayerParentCalendar);
					//if(aTag!=null) tmpoverDivoffsetTop += aTag.offsetTop;
					if(aTag!=null)
					{
						if(String(aTag.style.top)!="")
						{
							tmpoverDivoffsetTop += aTag.offsetTop;
						}
					}
				}

			  if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
			  else if(( tmpoverDivoffsetTop + overDiv.offsetHeight ) <= objTop );
			  else if( tmpoverDivoffsetTop >= ( objTop + objHeight ));
			  else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
			  else
			  {
				obj.style.visibility = "hidden";
				obj.style.display = "none";
			  }
			}
		  }
		}

		/*
		* unhides <select> and <applet> objects (for IE only)
		*/
		function showElement( elmID )
		{
			if( ie )
			{
				if((awdDetectIe()>=7) && (navigator.appName=="Microsoft Internet Explorer")) return false;
				for( i = 0; i < document.all.tags( elmID ).length; i++ )
				{
					obj = document.all.tags( elmID )[i];

					if( !obj || !obj.offsetParent )
					{
						continue;
					}
					if(obj.style.visibility=="hidden" && obj.style.display=="none"){
						obj.style.visibility = "visible";
						obj.style.display = "";
					}
				}
			}
		}

		function HolidayRec (d, m, y, desc)
		{
			this.d = d
			this.m = m
			this.y = y
			this.desc = desc
		}


		var HolidaysCounter = 0
		var Holidays = new Array()

		function addHoliday (d, m, y, desc)
		{
			Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )
		}


		if (dom)
		{
			for(i=0;i<imgsrc.length;i++)
			{
				img[i] = new Image
				img[i].src = imgDir + imgsrc[i]
			}
			mainLayer = "<div onclick='bShow=true' id='calendar' style='z-index:+999;position:absolute;top: 50px;visibility:hidden;'>"
			mainLayer += "	<table cellspacing=0 cellpadding=0 style='font-family:arial;font-size:11px;'>"
			mainLayer += "		<tr><td>"
			mainLayer += "			<table width=100% cellspacing=0 cellpadding=0 border=0>"
			mainLayer += "				<tr><td><img src="+imgTL+"></td>";
			mainLayer += "					<td bgcolor='#ffbf00' style='padding-top:3px;font-family:arial; font-size:11px;' width=158><font color='#ffffff'><B><span id='caption'></span></B></font></td>"
			mainLayer += "					<td align=right bgcolor='#ffbf00'>"
			mainLayer += "						<table id='closeButton' cellpadding=0 cellspacing=1 border=0 bgcolor=#f9d35f>"
			mainLayer += "							<tr><td><a href='javascript:hideCalendar()'onMouseOver='document.getElementById(\"closeButton\").className=\"whiteBorder\"' onMouseOut='document.getElementById(\"closeButton\").className=\"\"'><IMG SRC='"+imgDir+"close.gif' BORDER='0' ALT='"+closeCalendarMessage+"'></a></td></tr>"
			mainLayer += "						</table></td>"
			mainLayer += "					<td><img src="+imgTR+"></td></tr>"
			mainLayer += "			</table>"
			mainLayer += "		</td></tr>"
			mainLayer += "		<tr><td style='padding:0px' bgcolor=#ffffff>"
			mainLayer += "			<table width=100% cellspacing=0 cellpadding=0 border=0>"
			mainLayer += "				<tr><td width=1 bgcolor=#FFBF00></td><td bgcolor=#FFFFFF><span id='calendarcontent'></span></td><td width=1 bgcolor=#FFBF00></td></tr>"
			mainLayer += "			</table>"
			mainLayer += "		</td></tr>"

			if (showToday==1)
				mainLayer += "<tr><td align=center><table width=100% cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2 width=1><img src=" + imgBL + "></td><td align=center height=5 bgcolor=#FFFFFF><span id='lblToday' style='font-family:Verdana;font-size:9px;'></span></td><td rowspan=2><img src=" + imgBR + "></td></tr><tr><td bgcolor=#FFBF00 width=100% height=1></td></tr></table></td></tr>";

			mainLayer += "</table></div><div id='selectMonth' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectYear' style='z-index:+999;position:absolute;visibility:hidden;'></div>";

			document.write (mainLayer);
		}

		//var	monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")

		var monthName = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

		if (startAt==0)
		{
			dayName = new Array ("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
		}
		else
		{
			dayName = new Array ("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
		}
		var	styleAnchor="text-decoration:none;color:black;"

		// Set Border Color of Selected Date
		var	styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"
		//var	styleLightBorder="border-style:solid;border-width:1px;border-color:#FF0000;"

		function swapImage(srcImg, destImg){
			if (ie)	{ document.getElementById(srcImg).setAttribute("src",imgDir + destImg) }
		}

		function initca() {
			if (!ns4)
			{
				crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar
				hideCalendar()
				crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth	: document.selectMonth
				crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear

				monthConstructed=false;
				yearConstructed=false;

				if (showToday==1)
				{
					//document.getElementById("lblToday").innerHTML =	todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a>"
				}

				
				sHTML1="<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#f9d35f;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollLeftMessage+"\"' onclick=\"javascript:decMonth()\" onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#f9d35f\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG align=middle id='changeLeft' SRC='"+imgDir+"left1.gif' width=10 height=11 BORDER=0>&nbsp</span>&nbsp;"
				sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#f9d35f;cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#f9d35f\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG align=middle id='changeRight' SRC='"+imgDir+"right1.gif'	width=10 height=11 BORDER=0>&nbsp</span>&nbsp"
				
				sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#f9d35f;cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#f9d35f\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
				sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#f9d35f;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#f9d35f\";window.status=\"\"'	onclick='popUpYear()'></span>"
				//sHTML1+="<span id='spanYear' style='display: none; border-style:solid;border-width:1;border-color:#f9d35f;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#f9d35f\";window.status=\"\"'	onclick='popUpYear()'></span>&nbsp;"

				document.getElementById("caption").innerHTML  =	sHTML1

				bPageLoaded=true;
			}
			checkhasOtherCalendar();
		}

		var LongIsinLayer = false;
		var ShortIsinLayer = false;
		var LayerParentCalendar = "";

		function checkhasOtherCalendar() {
			if(LongIsinLayer==false) {
				for( j = 0; j < document.getElementsByTagName('div').length; j++ )
				{
					divtmp = document.getElementsByTagName('div')[j];
					
					for( i = 0; i < divtmp.getElementsByTagName('img').length; i++ )
					{
						obj = divtmp.getElementsByTagName('img')[i];
						if(obj.src.indexOf('images/calendar/calendar.gif')!=-1)
						{
							if(String(obj.onclick).indexOf('opencalendar')!=-1)
							{
								LongIsinLayer = true;
								ShortIsinLayer = true;
								LayerParentCalendar = divtmp.id;
								break;
							}
						}
					}
				}
			}
		}

		function hideCalendar()	{
			try
			{
				crossobj.visibility="hidden";
				if (crossMonthObj != null){crossMonthObj.visibility="hidden"}
				if (crossYearObj !=	null){crossYearObj.visibility="hidden"}

				showElement( 'SELECT' );
				showElement( 'APPLET' );
			} catch(e) {}
		}

		function padZero(num) {
			return (num< 10) ? '0' + num : num ;
		}

		function constructDate(d,m,y)
		{
			sTmp = dateFormat
			sTmp = sTmp.replace	("dd","<e>")
			sTmp = sTmp.replace	("d","<d>")
			sTmp = sTmp.replace	("<e>",padZero(d))
			sTmp = sTmp.replace	("<d>",d)
			sTmp = sTmp.replace	("mmm","<o>")
			sTmp = sTmp.replace	("mm","<n>")
			sTmp = sTmp.replace	("m","<m>")
			sTmp = sTmp.replace	("<m>",m+1)
			sTmp = sTmp.replace	("<n>",padZero(m+1))
			sTmp = sTmp.replace	("<o>",monthName[m])
			return sTmp.replace ("yyyy",y)
		}

		var eventdoonclose;
		function closeCalendar() {
			var	sTmp
			hideCalendar();
			if (yearSelected>(yearNow+prefixyearAddOn))
			{
				var strvar = padZero(dateNow) + "/" + (padZero(monthNow+1)) + "/" + yearNow;
			} 
			else 
			{
				var strvar = padZero(dateSelected) + "/" + (padZero(monthSelected+1)) + "/" + yearSelected;
			}
			ctlToPlaceValue1.value = strvar;
			eval(eventdoonclose);
			
			// Metasearch work  : set per session cookie for storing check in and check out dates
			
			if (typeof metaSearchBoxes !== 'undefined'){
  
				var boxName =  $j(ctlToPlaceValue1).closest("form").attr("id");
				boxName = boxName.split("-");
 
				var metaInputCheckinDate = getMetaSearchCheckInDate(boxName[1]);
				var metaInputCheckoutDate = getMetaSearchCheckOutDate(boxName[1]);
				
				document.cookie="mtscheckin="+metaInputCheckinDate+";path=/";
				document.cookie="mtscheckout="+metaInputCheckoutDate+";path=/";
				
				if (boxName[1] == "premium") {
					var mode = "hotel"
				} else {
					var mode = "destination"
				}
					
				changeMetaSearchCheckBox(ctlToPlaceValue1, mode, 1);
			}
		}

		/*** Year Pulldown	***/
		function StartDecYear()
		{
			intervalID2=setInterval("decYear()",80)
		}

		function StartIncYear()
		{
			intervalID2=setInterval("incYear()",80)
		}

		/*** Month Pulldown	***/
		function StartDecMonth()
		{
			intervalID1=setInterval("decMonth()",80)
		}

		function StartIncMonth()
		{
			intervalID1=setInterval("incMonth()",80)
		}

		function incMonth () {
			monthSelected++
			if (monthSelected>11) {
				monthSelected=0
				yearSelected++
			}
			constructCalendar()
		}

		function decMonth () {
			monthSelected--
			if (monthSelected<0) {
				monthSelected=11
				yearSelected--
			}
			constructCalendar()
		}

		function constructMonth() {
			popDownYear()
		//	if (!monthConstructed) {
				sHTML =	""
				iStart=0;
				iEnd=12;

					//iStart=monthNow;
					j=0;
					k=0;

					for(i=iStart; i<iEnd; i++) {
						j = i;
						sName =	monthName[j];
						//j = i + monthNow
						//if (j<=11) {
						//	k = yearNow
						//	sName =	monthName[j];
						//} else {
						//	j = j-12
						//	k = yearNow + 1
						//	sName =	monthName[j];
						//}
						k = yearSelected;
						if (i==monthSelected){
							sName =	"<B>" +	sName +	"</B>"
						}
						sHTML += "<tr><td id='m" + j + "/" + k + "' onmouseover='this.style.backgroundColor=\"#FFBF00\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='monthConstructed=false;monthSelected=" + j + ";yearSelected="+k+";constructCalendar();popDownMonth();event.cancelBubble=true' class=calendar10>&nbsp;" + sName + " &nbsp;</td></tr>"
					}

				document.getElementById("selectMonth").innerHTML = "<table width=43 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#FFBF00;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" +	sHTML +	"</table>"

				monthConstructed=true
		//	}
		}

		function popUpMonth() {
			constructMonth()
			crossMonthObj.visibility = (dom||ie)? "visible"	: "show"
			var oldcrossMonthObjleft = crossMonthObj.left;
			crossMonthObj.left = parseInt(crossobj.left) + 50
			if(crossMonthObj.left==oldcrossMonthObjleft) crossMonthObj.left = (parseInt(crossobj.left) + 50) +'px';
			var oldcrossMonthObjtop= crossMonthObj.top;
			crossMonthObj.top = parseInt(crossobj.top) + 26
			if(crossMonthObj.top==oldcrossMonthObjtop) crossMonthObj.top = (parseInt(crossobj.top) + 26) +'px';

			hideElement( 'SELECT', document.getElementById("selectMonth") );
			hideElement( 'APPLET', document.getElementById("selectMonth") );
		}

		function popDownMonth()	{
			crossMonthObj.visibility= "hidden"
		}

		/*** Year Pulldown ***/

		function incYear() {
			for	(i=0; i<7; i++){
				newYear	= (i+nStartingYear)+1
				if (newYear==yearSelected)
				{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }
				else
				{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }
				document.getElementById("y"+i).innerHTML = txtYear
			}
			nStartingYear ++;
			bShow=true
		}

		function decYear() {
			for	(i=0; i<7; i++){
				newYear	= (i+nStartingYear)-1
				if (newYear==yearSelected)
				{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }
				else
				{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }
				document.getElementById("y"+i).innerHTML = txtYear
			}
			nStartingYear --;
			bShow=true
		}

		function selectYear(nYear) {
			yearSelected=parseInt(nYear+nStartingYear);
			yearConstructed=false;
			constructMonth();
			constructCalendar();
			popDownYear();
		}

		function constructYear() {
			popDownMonth()
			sHTML =	""
			if (!yearConstructed) {
				sHTML =	"";
				//sHTML =	"<tr><td align='center'	onmouseover='this.style.backgroundColor=\"#FFBF00\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer'	onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"

				j =	0
				nStartingYear =	yearNow;
				for	(i=(yearNow); i<=(yearNow+prefixyearAddOn); i++) {
					sName =	i;
					if (i==yearSelected){
						sName =	"<B>" +	sName +	"</B>"
					}

					sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFBF00\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true' class=calendar10>&nbsp;" + sName + "&nbsp;</td></tr>"
					j ++;
				}

				//sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)'	onmouseup='clearInterval(intervalID2)'>+</td></tr>"

				document.getElementById("selectYear").innerHTML	= "<table width=47 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#FFBF00;'	bgcolor='#FFFFDD' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>"	+ sHTML	+ "</table>"

				yearConstructed	= true
			}
		}

		function popDownYear() {
			clearInterval(intervalID1)
			clearTimeout(timeoutID1)
			clearInterval(intervalID2)
			clearTimeout(timeoutID2)
			crossYearObj.visibility= "hidden"
		}

		function popUpYear() {
			var	leftOffset

			constructYear()

			crossYearObj.visibility	= (dom||ie)? "visible" : "show"
			leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft
			if (ie)
			{
				leftOffset += 6
			}
			var oldcrossYearObjleft = crossYearObj.left;
			crossYearObj.left =	leftOffset
			if(crossYearObj.left==oldcrossYearObjleft) crossYearObj.left = leftOffset +'px';
			var oldcrossYearObjtop = crossYearObj.top;
			crossYearObj.top = parseInt(crossobj.top) +	26
			if(crossYearObj.top==oldcrossYearObjtop) crossYearObj.top = (parseInt(crossobj.top) +	26) +'px';
		}

		/*** calendar ***/
	   function WeekNbr(n) {
		  // Algorithm used:
		  // From Klaus Tondering's Calendar document (The Authority/Guru)
		  // hhtp://www.tondering.dk/claus/calendar.html
		  // a = (14-month) / 12
		  // y = year + 4800 - a
		  // m = month + 12a - 3
		  // J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
		  // d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
		  // L = d4 / 1460
		  // d1 = ((d4 - L) mod 365) + L
		  // WeekNumber = d1 / 7 + 1

		  year = n.getFullYear();
		  month = n.getMonth() + 1;
		  if (startAt == 0) {
			 day = n.getDate() + 1;
		  }
		  else {
			 day = n.getDate();
		  }

		  a = Math.floor((14-month) / 12);
		  y = year + 4800 - a;
		  m = month + 12 * a - 3;
		  b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
		  J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
		  d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
		  L = Math.floor(d4 / 1460);
		  d1 = ((d4 - L) % 365) + L;
		  week = Math.floor(d1/7) + 1;

		  return week;
	   }

		function constructCalendar () {
			tmpyearSelected = yearSelected;
			
			//if ((monthSelected<monthNow) && (yearSelected==yearNow)) yearSelected = yearSelected+1;	//For dropdown changed

			var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31)
			var dateMessage
			var startDate =	new Date (tmpyearSelected,monthSelected,1)
			var endDate

			if (monthSelected==1)
			{
				endDate	= new Date (tmpyearSelected,monthSelected+1,1);
				endDate	= new Date (endDate - (24*60*60*1000));
				numDaysInMonth = endDate.getDate()
			}
			else
			{
				numDaysInMonth = aNumDays[monthSelected];
			}

			datePointer	= 0
			dayPointer = startDate.getDay() - startAt

			if (dayPointer<0)
			{
				dayPointer = 6
			}

			sHTML =	"<table	 border=0 style='font-family:verdana;font-size:10px;'><tr>"

			//if (showWeekNumber==1)
			//{
			//	sHTML += "<td width=27><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"divider.gif' width=1></td>"
			//}

			for	(i=0; i<7; i++)	{
				//sHTML += "<td width='' align='right'><B>"+ dayName[i]+"</B></td>"
				sHTML += "<td width='' align='center' class=calendar10>"+ dayName[i]+"</td>"
			}
			sHTML +="</tr><tr>"

			//if (showWeekNumber==1)
		//	{
		//		sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>"
		//	}

			for	( var i=1; i<=dayPointer;i++ )
			{
				sHTML += "<td class=calendar10>&nbsp;</td>"
			}

			for	( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )
			{
				dayPointer++;
				//sHTML += "<td align=right>"
				sStyle=styleAnchor
				if ((datePointer==odateSelected) && (monthSelected==omonthSelected) && (yearSelected==oyearSelected))
				{ sStyle+=styleLightBorder }

				sHint = ""
				for (k=0;k<HolidaysCounter;k++)
				{
					if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))
					{
						if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))
						{
							sStyle+="background-color:#FFDDDD;"
							sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc
						}
					}
				}

				var regexp= /\"/g
				sHint=sHint.replace(regexp,"&quot;")
				dateMessage = "onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' "

				currentDate = new Date(yearSelected, monthSelected, datePointer)
				//alert(currentDate)

				if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))
				{
					sHTML += "<td align=right class=calendar10>"
					sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#ff0000>&nbsp;" + datePointer + "</font>&nbsp;</a></b>"}
				//else if	(dayPointer % 7 == (startAt * -1)+1)
				//{
				//	sHTML += "<td align=right>"
				//	sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;<font color=#909090>" + datePointer + "</font>&nbsp;</a>" }
				else
				{
					sHTML += "<td align=right class=calendar10>"
					sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;" + datePointer + "&nbsp;</a>" }

				sHTML += ""
				if ((dayPointer+startAt) % 7 == startAt) {
					sHTML += "</tr><tr>"
				//	if ((showWeekNumber==1)&&(datePointer<numDaysInMonth))
				//	{
				//		sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>"
				//	}
				}
			}

			document.getElementById("calendarcontent").innerHTML   = sHTML
			document.getElementById("spanMonth").innerHTML = "&nbsp;" + monthName[monthSelected] + " &nbsp;<IMG id='changeMonth' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
			document.getElementById("spanYear").innerHTML =	"&nbsp;" + yearSelected	+ "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
		}

		var prefixyearAddOn = 1;
		function prefixYear(values) {
			//always show next 18 months
			var tnow = new Date();
			var sMonth = tnow.getMonth() + 1;
			var sYear = tnow.getFullYear();
			var sYearOld = sYear;
			var i;
			for(i=0;i<=17;i++) {
				sMonth = sMonth + 1;
				if(sMonth>=13) {
					sMonth = 1;
					sYear = sYear + 1;
				}
			}
			prefixyearAddOn = sYear - sYearOld;
		}

		function opencalendar(format,ctl1,ctl2, eventonclose, FixShowX, FixShowY) {
			eventdoonclose = eventonclose;
			hideCalendar();
			var	leftpos=0
			var	toppos=0
			if (bPageLoaded)
			{
				if ( crossobj.visibility ==	"hidden" ) {
					ctlToPlaceValue1	= ctl1
					ctlToPlaceValue2	= ctl2
					dateFormat=format;

					formatChar = "/"
					aFormat	= dateFormat.split(formatChar)

					tokensChanged =	0
					if ( formatChar	!= "" )
					{
						var strDate
						if (ctl1.value == "")
						{
							strDate = padZero(dateNow) + "/" + padZero(monthNow + 1) + "/" + yearNow;
						}
						else
						{
							strDate = ctl1.value;
						}

						aData =	strDate.split(formatChar)

						for	(i=0;i<3;i++)
						{
							if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
							{
								dateSelected = parseInt(aData[i], 10)
								tokensChanged ++
							}
							else if	((aFormat[i]=="m") || (aFormat[i]=="mm"))
							{
								monthSelected =	parseInt(aData[i], 10) - 1
								tokensChanged ++
							}
							else if	(aFormat[i]=="yyyy")
							{
								yearSelected = parseInt(aData[i], 10)
								tokensChanged ++
							}
							else if	(aFormat[i]=="mmm")
							{
								for	(j=0; j<12;	j++)
								{
									if (aData[i]==monthName[j])
									{
										monthSelected=j
										tokensChanged ++
									}
								}
							}
						}
					}

					if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
					{
						dateSelected = dateNow
						monthSelected =	monthNow
						yearSelected = yearNow
					}

					odateSelected=dateSelected;
					omonthSelected=monthSelected;
					oyearSelected=yearSelected;

					if(ctl1.type == "hidden") {
						toppos = ctl2.y;
						leftpos = ctl2.x;
						if(String(toppos)=="undefined") {
							toppos = FixShowY;
							leftpos = FixShowX;
							toppos = Math.ceil(ctl2.clientHeight/2) + toppos;
						} else toppos = ctl2.clientHeight + toppos;
					} else {
						toppos = ctl1.y;
						leftpos = ctl1.x;
						if(String(toppos)=="undefined") {
							toppos = ctl2.y;
							leftpos = ctl2.x;
							if(String(toppos)=="undefined") {
								toppos = FixShowY;
								leftpos = FixShowX;
								toppos = Math.ceil(ctl2.clientHeight/2) + toppos;
							} else toppos = ctl2.clientHeight + toppos;
						} else toppos = ctl2.clientHeight + toppos;
					}

					if(LongIsinLayer || ShortIsinLayer) {
						aTag = document.getElementById(LayerParentCalendar);
						if(aTag!=null) {
							var ctl1IsInThisLayer = aTag.getElementsByTagName('input')[ctl1.name];
							if((ctl1IsInThisLayer==null) || (ie)) toppos -= aTag.offsetTop;
						}
					}
					leftpos = leftpos - document.getElementById("calendar").clientWidth;
					if(leftpos<0) leftpos = 0;
					var tmpscrollTop = document.body.scrollTop;
					if(tmpscrollTop==0) {
						try {
							tmpscrollTop = document.documentElement.scrollTop;
						} catch(e) {tmpscrollTop = 0;}
					}
					if(ie) toppos = toppos + tmpscrollTop;
					var oldcrossobjleft = crossobj.left;
					crossobj.left =	fixedX==-1 ? leftpos : fixedX;
					if(crossobj.left==oldcrossobjleft) crossobj.left =	fixedX==-1 ? leftpos +'px' : fixedX + 'px';
					var oldcrossobjtop = crossobj.top;
					crossobj.top = fixedY==-1 ? toppos + 10 :	fixedY;
					if(crossobj.top==oldcrossobjtop) crossobj.top = fixedY==-1 ? (toppos + 10) +'px' :	fixedY +'px';


	var OP = (navigator.userAgent.indexOf('Opera') != -1);
	var OP = (navigator.userAgent.indexOf('Opera') != -1);
	var IE = (navigator.userAgent.indexOf('MSIE') != -1 && !OP);
	var GK = (navigator.userAgent.indexOf('Gecko') != -1);
	var SA = (navigator.userAgent.indexOf('Safari') != -1);
	var DOM = document.getElementById;
	var tmpcursorDistance = 5;

	var tmpHeight = 0;
	var tmpwidth = document.getElementById("calendar").clientWidth;

	var winX = getWinX() - (((GK && !SA) || OP) ? 17 : 0);
	var winY = getWinY() - (((GK && !SA) || OP) ? 17 : 0);
	var x = mouseX - 210;
	var y = mouseY + 10;

	if(x + tmpwidth + tmpcursorDistance > winX + getScrX())
	x -= tmpwidth + tmpcursorDistance;
	else x += tmpcursorDistance;

	var tmpobj;
	
	if(DOM) tmpobj = document.getElementById('calendar');
	else if(IE) tmpobj = document.all.calendar;

	if(DOM) tmpHeight = tmpobj.offsetHeight;
	else if(IE) tmpHeight = tmpobj.style.pixelHeight;

	if(y + tmpHeight + tmpcursorDistance > winY + getScrY())
	y -= tmpHeight;
	else y += tmpcursorDistance;

	if(x<0) x = 1;

	if(LongIsinLayer || ShortIsinLayer) {
	//var jueo=1;if(jueo==0) {
		aTag = document.getElementById(LayerParentCalendar);
		if(aTag!=null) {
			var ctl1IsInThisLayer = aTag.getElementsByTagName('input')[ctl1.name];
			//alert(aTag.style.top);alert(aTag.offsetTop);
			//alert(LayerParentCalendar);alert(ctl1IsInThisLayer);alert(ie);
			//if((ctl1IsInThisLayer==null) || (ie)) 
			if(String(aTag.style.top)!="")
			{
				y -= aTag.offsetTop;
			}
		}
	}

	crossobj.left = x + 'px';
	crossobj.top = y + 'px';

					constructCalendar (1, monthSelected, yearSelected);
					crossobj.visibility=(dom||ie)? "visible" : "show"

					hideElement( 'SELECT', document.getElementById("calendar") );
					hideElement( 'APPLET', document.getElementById("calendar") );

					bShow = true;
				}
				else
				{
					hideCalendar();
					if (ctlNow!=ctl1) {opencalendar(format,ctl1,ctl2, eventonclose, FixShowX, FixShowY)}
				}
				ctlNow = ctl1;
			}
		}

		var _is_ie=document.all;
		var _have_dom=document.getElementById;
		function getEl(tmpname) {
			var a = (_have_dom)?document.getElementById(tmpname) : _is_ie? eval("document.all."+tmpname)	: eval("document."+tmpname)
			return a;
		}

		function checkattach(wevent,names,wfunc) {
			var oldonload;
			oldonload = eval(wevent);
			if(typeof(oldonload)=='function') {
				eval(wevent+'=function '+names+'() {oldonload();'+wfunc+'();}');
			} else {
				eval(wevent+'=function '+names+'(event) {'+wfunc+'(event);}');
			}
		}

		function hidecal1 (event) {
			if (typeof(event) != "undefined" && typeof(event.keyCode) != "undefined" && event.keyCode==27)
			{
				hideCalendar()
			}
		}

		checkattach("document.onkeypress","addhideandonkeypress","hidecal1");

		function hidecal2 () {
			if (!bShow)
			{
				hideCalendar()
			}
			bShow = false
		}

		checkattach("document.onclick","addhideandonclick","hidecal2");

		//checkattach("window.onload","onloadinitca","initca");
		initca();


function getScrX() {
  var offset = 0;
  if(window.pageXOffset)
    offset = window.pageXOffset;
  else if(document.documentElement && document.documentElement.scrollLeft)
    offset = document.documentElement.scrollLeft;
  else if(document.body && document.body.scrollLeft)
    offset = document.body.scrollLeft;
  return offset;
}

function getScrY() {
  var offset = 0;
  if(window.pageYOffset)
    offset = window.pageYOffset;
  else if(document.documentElement && document.documentElement.scrollTop)
    offset = document.documentElement.scrollTop;
  else if(document.body && document.body.scrollTop)
    offset = document.body.scrollTop;
  return offset;
}

function getWinX() {
  var size = 0;
  if(window.innerWidth)
    size = window.innerWidth;
  else if(document.documentElement && document.documentElement.clientWidth)
    size = document.documentElement.clientWidth;
  else if(document.body && document.body.clientWidth)
    size = document.body.clientWidth;
  else size = screen.width;
  return size;
}

function getWinY() {
  var size = 0;
  if(window.innerHeight)
    size = window.innerHeight;
  else if(document.documentElement && document.documentElement.clientHeight)
    size = document.documentElement.clientHeight;
  else if(document.body && document.body.clientHeight)
    size = document.body.clientHeight;
  else size = screen.height;
  return size;
}

function getMouseXY(e) {
  if(e && e.pageX != null) {
    mouseX = e.pageX;
    mouseY = e.pageY;
  }
  else if(event && event.clientX != null) {
    mouseX = event.clientX + getScrX();
    mouseY = event.clientY + getScrY();
  }
  if(mouseX < 0) mouseX = 0;
  if(mouseY < 0) mouseY = 0;
  //if(tooltip && tooltip.active) tooltip.move();
}

document.onmousemove = getMouseXY;
	}



// end small booking box

// Big Box Metasearch

if (document.getElementById('bigboxSearch')) {
    ﻿var outputPath = 'http://static.asiawebdirect.com/reserve/output/';
var ckAvailStartTdy = new Date();
var DefNight = 1;
//remove time from Date
ckAvailStartTdy = new Date(ckAvailStartTdy.getFullYear(),  ckAvailStartTdy.getMonth(), ckAvailStartTdy.getDate());
var ckAvailStartDate = new Date(ckAvailStartTdy.getFullYear(),  ckAvailStartTdy.getMonth(), ckAvailStartTdy.getDate() + DefNight);

function getElcheckavailability(tmpname) {
	return document.forms['checkAvailStandard'].elements[tmpname];
}

function bigAddDate(cDate, addDay)
{
	return new Date(cDate.getFullYear(),  cDate.getMonth(), cDate.getDate() + addDay);
}

function showChangeDate(values) {
	if(values=='in') {
		bigsetAllDate(getElcheckavailability('txtCheck_In').value,'in');
	}
	if(values=='out') {
		bigsetAllDate(getElcheckavailability('txtCheck_Out').value,'out');
	}
}

function bigpadZero(num) {
	return (num< 10) ? '0' + num : num ;
}

function bigChDatetoStr(cDate) {
	return bigpadZero(cDate.getDate()) + '/' + bigpadZero(cDate.getMonth() + 1) + '/' + cDate.getFullYear();
}

function bigChStrtoDate(cDate) {
	var arrcDate = cDate.split("/");
	return new Date(arrcDate[2], Number(arrcDate[1])-1, Number(arrcDate[0]));
}

function bigsetAllDate(cDate,InOut) {
	if (InOut=='night')
	{
		var startDate = bigChStrtoDate(cDate);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else
	if (InOut=='in')
	{
		var startDate = bigChStrtoDate(cDate);
		var endDate = bigChStrtoDate(getElcheckavailability('txtCheck_Out').value);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		if(startDate>=endDate) endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else 
	if (InOut=='out')
	{
		var startDate = bigChStrtoDate(getElcheckavailability('txtCheck_In').value);
		var endDate = bigChStrtoDate(cDate);
		if(startDate<ckAvailStartTdy) startDate = ckAvailStartTdy;
		if(startDate>=endDate) endDate = bigAddDate(startDate, Number(getElcheckavailability('checkHotel[Nights]').value));
	}
	else
	{
		var startDate = ckAvailStartTdy;
		var endDate = ckAvailStartDate;
	}

	var Nights = Math.floor((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24)); 
	setElement(getElcheckavailability('checkHotel[Nights]'), Nights);

	getElcheckavailability('txtCheck_In').value = ChDatetoStr(startDate);
	getElcheckavailability('txtCheck_Out').value = ChDatetoStr(endDate);
	
	var arrtmpDate = ChDatetoStr(startDate).split("/");
	var b = getElcheckavailability('checkHotel[sYear]');
	b.value = arrtmpDate[2];
	var b = getElcheckavailability('checkHotel[sMonth]');
	b.value = arrtmpDate[1];
	var b = getElcheckavailability('checkHotel[sDay]');
	b.value = arrtmpDate[0];

	var arrtmpDate = ChDatetoStr(endDate).split("/");
	var b = getElcheckavailability('checkHotel[eYear]');
	b.value = arrtmpDate[2];
	var b = getElcheckavailability('checkHotel[eMonth]');
	b.value = arrtmpDate[1];
	var b = getElcheckavailability('checkHotel[eDay]');
	b.value = arrtmpDate[0];
}

function ChDatetoStr(cDate) {
	return padZero(cDate.getDate()) + '/' + padZero(cDate.getMonth() + 1) + '/' + cDate.getFullYear();
}

function ChStrtoDate(cDate) {
	var arrcDate = cDate.split("/");
	return new Date(arrcDate[2], Number(arrcDate[1])-1, Number(arrcDate[0]));
}

var bigddd = 0;
function setDefDate() {
	bigddd = bigddd + 1;
	getElcheckavailability('txtCheck_In').value = bigChDatetoStr(ckAvailStartTdy);
	getElcheckavailability('txtCheck_Out').value = bigChDatetoStr(ckAvailStartDate);

	bigsetAllDate(bigChDatetoStr(ckAvailStartTdy), 'in');
	bigsetAllDate(bigChDatetoStr(ckAvailStartDate), 'out');
}

function setElement(cElement,cValue)
{
	for(var i=0;i<cElement.length;i++)
	{
		if(Number(cElement.options[i].value)==cValue)
		{
			cElement.selectedIndex = i;
			break;
		}
	}
	if(i==cElement.length) {
		if((cElement.name.indexOf("Year")!=-1) || (cElement.name.indexOf("Nights")!=-1)) {
			var oldYear = Number(cElement.options[cElement.length - 1].value) + 1;
			while (oldYear<=cValue)
			{
				cElement.options[cElement.length] = new Option(oldYear, oldYear);
				oldYear = oldYear + 1;
			}
			cElement.selectedIndex = cElement.length - 1;
		}
	}
}

function updateCheckAvailAll()
{
	bigsetAllDate(getElcheckavailability('txtCheck_In').value,'night');
}
    setDefDate();
}

// End Big Box Metasearch

function MM_openBrWindow(theURL,winName,features) { //v2.0
    if (theURL=="/recommendation.htm") {
        theURL=theURL+"?p="+document.URL;
    }
    window.open(theURL,winName,features);
}
/**
 * jQuery Validation Plugin 1.8.1
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2011 Jörn Zaefferer
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;b=new c.validator(a,this[0]);c.data(this[0],"validator",b);if(b.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){b.cancelSubmit=true});b.settings.submitHandler&&this.find("input, button").filter(":submit").click(function(){b.submitButton=this});this.submit(function(d){function e(){if(b.settings.submitHandler){if(b.submitButton)var f=c("<input type='hidden'/>").attr("name",
b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&f.remove();return false}return true}b.settings.debug&&d.preventDefault();if(b.cancelSubmit){b.cancelSubmit=false;return e()}if(b.form()){if(b.pendingRequest){b.formSubmitted=true;return false}return e()}else{b.focusInvalid();return false}})}return b}else a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form();
else{var a=true,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a}},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(e,f){b[f]=d.attr(f);d.removeAttr(f)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;if(b.messages)e.messages[d.name]=c.extend(e.messages[d.name],b.messages);break;case "remove":if(!b){delete f[d.name];
return g}var h={};c.each(b.split(/\s/),function(j,i){h[i]=g[i];delete g[i]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);if(d.required){e=d.required;delete d.required;d=c.extend({required:e},d)}return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a,
b){this.settings=c.extend(true,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(arguments.length==1)return function(){var d=c.makeArray(arguments);d.unshift(a);return c.validator.format.apply(this,d)};if(arguments.length>2&&b.constructor!=Array)b=c.makeArray(arguments).slice(1);if(b.constructor!=Array)b=[b];c.each(b,function(d,e){a=a.replace(RegExp("\\{"+d+"\\}","g"),e)});return a};c.extend(c.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",
validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:c([]),errorLabelContainer:c([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(a){this.lastActive=a;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass);this.addWrapper(this.errorsFor(a)).hide()}},onfocusout:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.optional(a)))this.element(a)},
onkeyup:function(a){if(a.name in this.submitted||a==this.lastElement)this.element(a)},onclick:function(a){if(a.name in this.submitted)this.element(a);else a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).addClass(b).removeClass(d):c(a).addClass(b).removeClass(d)},unhighlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).removeClass(b).addClass(d):c(a).removeClass(b).addClass(d)}},setDefaults:function(a){c.extend(c.validator.defaults,
a)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:c.validator.format("Please enter no more than {0} characters."),
minlength:c.validator.format("Please enter at least {0} characters."),rangelength:c.validator.format("Please enter a value between {0} and {1} characters long."),range:c.validator.format("Please enter a value between {0} and {1}."),max:c.validator.format("Please enter a value less than or equal to {0}."),min:c.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){function a(e){var f=c.data(this[0].form,"validator");e="on"+e.type.replace(/^validate/,
"");f.settings[e]&&f.settings[e].call(f,this[0])}this.labelContainer=c(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||c(this.currentForm);this.containers=c(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var b=this.groups={};c.each(this.settings.groups,function(e,f){c.each(f.split(/\s/),function(g,h){b[h]=e})});var d=this.settings.rules;
c.each(d,function(e,f){d[e]=c.validator.normalizeRule(f)});c(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",a).validateDelegate(":radio, :checkbox, select, option","click",a);this.settings.invalidHandler&&c(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();c.extend(this.submitted,this.errorMap);this.invalid=c.extend({},this.errorMap);this.valid()||c(this.currentForm).triggerHandler("invalid-form",
[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(a){this.lastElement=a=this.clean(a);this.prepareElement(a);this.currentElements=c(a);var b=this.check(a);if(b)delete this.invalid[a.name];else this.invalid[a.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);this.showErrors();return b},showErrors:function(a){if(a){c.extend(this.errorMap,
a);this.errorList=[];for(var b in a)this.errorList.push({message:a[b],element:this.findByName(b)[0]});this.successList=c.grep(this.successList,function(d){return!(d.name in a)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){c.fn.resetForm&&c(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},
objectLength:function(a){var b=0,d;for(d in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{c(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(a){}},findLastActive:function(){var a=this.lastActive;return a&&c.grep(this.errorList,function(b){return b.element.name==
a.name}).length==1&&a},elements:function(){var a=this,b={};return c(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&a.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in b||!a.objectLength(c(this).rules()))return false;return b[this.name]=true})},clean:function(a){return c(a)[0]},errors:function(){return c(this.settings.errorElement+"."+this.settings.errorClass,
this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=c([]);this.toHide=c([]);this.currentElements=c([])},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset();this.toHide=this.errorsFor(a)},check:function(a){a=this.clean(a);if(this.checkable(a))a=this.findByName(a.name).not(this.settings.ignore)[0];var b=c(a).rules(),d=false,e;for(e in b){var f={method:e,parameters:b[e]};try{var g=
c.validator.methods[e].call(this,a.value.replace(/\r/g,""),a,f.parameters);if(g=="dependency-mismatch")d=true;else{d=false;if(g=="pending"){this.toHide=this.toHide.not(this.errorsFor(a));return}if(!g){this.formatAndAdd(a,f);return false}}}catch(h){this.settings.debug&&window.console&&console.log("exception occured when checking element "+a.id+", check the '"+f.method+"' method",h);throw h;}}if(!d){this.objectLength(b)&&this.successList.push(a);return true}},customMetaMessage:function(a,b){if(c.metadata){var d=
this.settings.meta?c(a).metadata()[this.settings.meta]:c(a).metadata();return d&&d.messages&&d.messages[b]}},customMessage:function(a,b){var d=this.settings.messages[a];return d&&(d.constructor==String?d:d[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a]},defaultMessage:function(a,b){return this.findDefined(this.customMessage(a.name,b),this.customMetaMessage(a,b),!this.settings.ignoreTitle&&a.title||undefined,c.validator.messages[b],"<strong>Warning: No message defined for "+
a.name+"</strong>")},formatAndAdd:function(a,b){var d=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;if(typeof d=="function")d=d.call(this,b.parameters,a);else if(e.test(d))d=jQuery.format(d.replace(e,"{$1}"),b.parameters);this.errorList.push({message:d,element:a});this.errorMap[a.name]=d;this.submitted[a.name]=d},addWrapper:function(a){if(this.settings.wrapper)a=a.add(a.parent(this.settings.wrapper));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];
this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}if(this.errorList.length)this.toShow=this.toShow.add(this.containers);if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight){a=0;for(b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass)}this.toHide=this.toHide.not(this.toShow);
this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);if(d.length){d.removeClass().addClass(this.settings.errorClass);d.attr("generated")&&d.html(b)}else{d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:true}).addClass(this.settings.errorClass).html(b||
"");if(this.settings.wrapper)d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a))}if(!b&&this.settings.success){d.text("");typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d)}this.toShow=this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},
idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(d,e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},
depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):true},dependTypes:{"boolean":function(a){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this,c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){if(!this.pending[a.name]){this.pendingRequest++;this.pending[a.name]=true}},stopRequest:function(a,b){this.pendingRequest--;if(this.pendingRequest<
0)this.pendingRequest=0;delete this.pending[a.name];if(b&&this.pendingRequest==0&&this.formSubmitted&&this.form()){c(this.currentForm).submit();this.formSubmitted=false}else if(!b&&this.pendingRequest==0&&this.formSubmitted){c(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false}},previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:true,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:true},
email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings,a)},classRules:function(a){var b={};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b=
{};a=c(a);for(var d in c.validator.methods){var e=a.attr(d);if(e)b[d]=e}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{};var b=c.data(a.form,"validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");if(d.settings.rules)b=c.validator.normalizeRule(d.settings.rules[a.name])||{};return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(e===
false)delete a[d];else if(e.param||e.depends){var f=true;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}if(f)a[d]=e.param!==undefined?e.param:true;else delete a[d]}});c.each(a,function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){if(a[this])a[this]=Number(a[this])});c.each(["rangelength","range"],function(){if(a[this])a[this]=[Number(a[this][0]),Number(a[this][1])]});if(c.validator.autoCreateRanges){if(a.min&&
a.max){a.range=[a.min,a.max];delete a.min;delete a.max}if(a.minlength&&a.maxlength){a.rangelength=[a.minlength,a.maxlength];delete a.minlength;delete a.maxlength}}a.messages&&delete a.messages;return a},normalizeRule:function(a){if(typeof a=="string"){var b={};c.each(a.split(/\s/),function(){b[this]=true});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=d!=undefined?d:c.validator.messages[a];b.length<3&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},
methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a,b)>0;default:return c.trim(a).length>0}},remote:function(a,b,d){if(this.optional(b))return"dependency-mismatch";var e=this.previousValue(b);this.settings.messages[b.name]||(this.settings.messages[b.name]={});e.originalMessage=this.settings.messages[b.name].remote;this.settings.messages[b.name].remote=
e.message;d=typeof d=="string"&&{url:d}||d;if(this.pending[b.name])return"pending";if(e.old===a)return e.valid;e.old=a;var f=this;this.startRequest(b);var g={};g[b.name]=a;c.ajax(c.extend(true,{url:d,mode:"abort",port:"validate"+b.name,dataType:"json",data:g,success:function(h){f.settings.messages[b.name].remote=e.originalMessage;var j=h===true;if(j){var i=f.formSubmitted;f.prepareElement(b);f.formSubmitted=i;f.successList.push(b);f.showErrors()}else{i={};h=h||f.defaultMessage(b,"remote");i[b.name]=
e.message=c.isFunction(h)?h(a):h;f.showErrors(i)}e.valid=j;f.stopRequest(b,j)}},d));return"pending"},minlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)>=d},maxlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,d){return this.optional(b)||a>=d},max:function(a,b,d){return this.optional(b)||a<=d},range:function(a,b,d){return this.optional(b)||
a>=d[0]&&a<=d[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(a)},
url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},
date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9-]+/.test(a))return false;var d=0,e=0,f=false;a=a.replace(/\D/g,"");for(var g=a.length-1;g>=
0;g--){e=a.charAt(g);e=parseInt(e,10);if(f)if((e*=2)>9)e-=9;d+=e;f=!f}return d%10==0},accept:function(a,b,d){d=typeof d=="string"?d.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+d+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery);
(function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(d,e,f){e=d.port;if(d.mode=="abort"){a[e]&&a[e].abort();a[e]=f}});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;if(("mode"in d?d:c.ajaxSettings).mode=="abort"){a[e]&&a[e].abort();return a[e]=b.apply(this,arguments)}return b.apply(this,arguments)}}})(jQuery);
(function(c){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.handle.call(this,e)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)},handler:function(e){arguments[0]=c.event.fix(e);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a,
b,d){return this.bind(b,function(e){var f=c(e.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery);

function guideSignup(nodeName, placeName) {
    jQuery(document).ready(function($) {
        var title = $('#dialog-content #guide-title').text();
        $('#dialog-content #guide-title').text(title.replace('{place}', placeName));
        var p2 = $('#guide-form p:eq(1)');
        p2.text(p2.text().replace('{place}', placeName));
        $('#dialog-content input[name="guide"]').val(nodeName);
        $("#dialog-content").dialog("open");
    });
    return false;
} 

$j(document).ready(function($){
	$('#dialog-form form input[type="submit"]').click(function(){
		$(this).parent().submit();
	});

	$("#dialog-content").dialog({
		autoOpen: false,
		modal: true,
		width: 550,
		height: 490,
		dialogClass: 'guide-dialog',
		resizable: false
	});

	$("#guide-form form").validate({
		submitHandler: function(form) {
	   		$.ajax({
				url: "/guide-signup",
				type: 'POST',
				data: $(form).serialize(),
	   			success: function(data) {
		   			if (typeof(data.success) != 'undefined') {
			   			success = true;
		   				$('#dialog-content #guide-link a').attr('href', data.success);
		   				$('#guide-form form, #dialog-content p.privacy').fadeOut("slow", function() {
		   					$('#dialog-content #guide-link').fadeIn("slow");
			   			});
			   		} else if (typeof(data.error) != 'undefined') {
			   			$('#dialog-content p.privacy').fadeOut(function() {
				   			$(this).text("There's been an error, please try again");
				   			$(this).css('color', 'red').fadeIn();
			   			});
			   		}
	   			}				
		   	});
	   	}
	});
});


// Dropdown workaround for language options on search widgets
function genLangDrpDwn(className){
    $j("."+className+" dt a").click(function() {
        $j("."+className+" dd ul").toggle();
    });

    $j("."+className+" dd ul li a").click(function() {
        var text = $j(this).html();
        $j("."+className+" dt a span").html(text);
        $j("."+className+" dd ul").hide();
        var currentMtsLang = getSelectedValue(className);

        $j("#"+className+"-selected-value").val(currentMtsLang);

        if (typeof metaSearchBoxes !== 'undefined') {

            // Metasearch change checkbox list
            boxName = className.split("-");
            lang = getSelectedValue(className);

            // Set Language Cookie
            document.cookie="mtsLanguage="+currentMtsLang+";path=/";

            // Change Box
            changeMetaSearchCheckBox($j(this), "hotel");

        }
    });

    $j(document).bind('click', function(e) {
        var $clicked = $j(e.target);
        if (! $clicked.parents().hasClass(""+className+""))
            $j("."+className+" dd ul").hide();
    });
}

function getSelectedValue(id) {
    return $j("#" + id).find("dt a span.value").html();
}

function genLangOptionList(langCodeBox, defaultBoxLang){

    var optLangList ="";

    for(i=0; i<langCodeBox.length; i++){
     optLangList = optLangList+'<li><a href="javascript:void(0);"><img class="flag" src="//static.asiawebdirect.com/portals/v7/images/flags/'+langCodeBox[i][1]+'.png" alt="'+langCodeBox[i][2]+'">'+langCodeBox[i][2]+'<span class="value">'+langCodeBox[i][1]+'</span></a></li>';
    }

    return optLangList;
}

$j = jQuery;

$j(document).ready(function(){

    var optLangElementIDs = new Array('lang-bigbooking-premium', 'lang-smallbooking-premium');

    $j.ajax({
      type: "GET",
      url: "//static.asiawebdirect.com/portals/v7/js/language.js",
      dataType: "script",
      success: function() {

        if (typeof metaSearchBoxes !== 'undefined') {
            // Metasearch use
            var currentMtsLang = getMtscookie('mtsLanguage');
            if(currentMtsLang != "") {
                //Overwrite this if there is a cookie
                defaultBoxLang = currentMtsLang;
            }

        }
        if (typeof defaultBoxLang !== 'undefined') {
            for(i=0; i<langCodeBox.length; i++){
                if(langCodeBox[i][1] == defaultBoxLang ) {
                    var langSymbol = langCodeBox[i][1];
                    var langTxt = langCodeBox[i][2];
                    break;
                }
            }

            // Find default language loaded
            optLangList = genLangOptionList(langCodeBox, defaultBoxLang);
            for(i=0; i<optLangElementIDs.length; i++) {
                $j('#'+optLangElementIDs[i]+'-result').html('<dl id="'+optLangElementIDs[i]+'" class="dropdown '+optLangElementIDs[i]+'"><dt><a href="javascript:void(0);"><span><img class="flag" src="//static.asiawebdirect.com/portals/v7/images/flags/'+langSymbol+'.png" alt="'+langTxt+'" />'+langTxt+'<span class="value">'+langSymbol+'</span></span></a></dt><dd><ul>'+optLangList+'</ul></dd></dl>');
                genLangDrpDwn(optLangElementIDs[i]);
            }

        }
      }
    });
});

// Meta Search Work
var mtsState = 0;

function popUpCenter(pageURL, name, w, h, l, t) {
    var left = ((screen.width/2)-(w/2))+l;
    var top =  t;

    if (typeof popUpCenter.winRefs == 'undefined'){
        popUpCenter.winRefs = {};
    }
    if (!(popUpCenter.winRefs[name] == null || popUpCenter.winRefs[name].closed)){
        popUpCenter.winRefs[name].close();
    }

    popUpCenter.winRefs[name] = window.open(pageURL, name, 'toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);

    if (popUpCenter.winRefs[name] != null){
        popUpCenter.winRefs[name].focus();
    }

}
function initMetaSearchWindows(formElm){

    var form = document.forms[formElm];
    var sitesList = form.metaSearchSite;
    var chosenSites = new Array();

    if (typeof sitesList !== 'undefined') {
        if(sitesList.length >= 2){
            for (i=0; i<sitesList.length; i++) {
                if(sitesList[i].checked){
                    chosenSites.push(sitesList[i].value);
                }
            }
        } else {
            if(sitesList.checked){
                chosenSites.push(sitesList.value);
            }
        }
    }

    if(chosenSites.length > 0){
        //ignore reverse on chrome and IE
        if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {}
        else if(navigator.appName == "Microsoft Internet Explorer") {}
        else chosenSites.reverse();
        for(var i=0; i<chosenSites.length; i++){
            if (chosenSites[i] != 'undefined') {
                var swinname = chosenSites[i].match(/:\/\/(www\.)?(.[^/:]+)/)[2];
                swinname = swinname.split(".");
                popUpCenter(chosenSites[i], swinname[0], 800, 800, (i*50) + 50, 0);
            }
        }
    } else {
        alert('Please select at least one website to perform search.');
    }
}

function getObjLength(a){
    var count = 0;
    for (var i in a) {
        if (a.hasOwnProperty(i)) {
            count++;
        }
    }
    return count;
}

function ucfirst(str) {
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

function genMetaSearchCheckBox(lang, checkboxName){
    if(typeof metaSearchTargets !== 'undefined'){

        var checkBox = "";
        var i=0;
        if (lang == "en_US") {
            for (var key in metaSearchTargets) {
               id = checkboxName+'box-m'+(i+1);
               var obj = metaSearchTargets[key];
               if (getObjLength(obj)>1){
                    for (var prop in obj) {
                      if (prop == lang) {
                        siteName = obj[prop];
                        break;
                      }
                    }
               } else {
                    siteName = key;
               }

               checkBox +='<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+key+'" checked="checked" /> <label for="'+id+'">'+metaSearchTargets[key]['en_US']+'</label></div>';
               i++;
            }
        } else {
            for (var key in metaSearchTargets) {
               id = checkboxName+'box-m'+(i+1);
               var obj = metaSearchTargets[key];
               if(getObjLength(obj)>1){
                    for (var prop in obj) {
                      if (prop == lang) {
                        siteName = obj[prop];
                        break;
                      }
                    }
                    checkBox +='<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+key+'" checked="checked" /> <label for="'+id+'">'+siteName+'</label></div>';
                    i++;
               }
            }
        }
        return checkBox;
    }
}

function genMetaSearchCheckBoxAjax(lang, checkboxName, domainNames, mtsState){

    //alert(lang);
    //alert(checkboxName);
    //alert(domainNames);

    var currentChosenSites = [];

    if($j('#mts-'+checkboxName+'-checkboxes input:checked').length > 0){
        $j('#mts-'+checkboxName+'-checkboxes input:checked').each(function() {
            var currentChosenSiteValue = this.value.match(/:\/\/(www\.)?(.[^/:]+)/)[2];
            currentChosenSiteValue = currentChosenSiteValue.split(".");
            currentChosenSites.push(currentChosenSiteValue[0]);

        });
    }

    if(typeof domainNames !== 'undefined'){

        var checkBox = "";
         if (lang == "en_US"){
            //alert("a");
            //alert(getObjLength(domainNames));
            //alert(domainNames);
            var i = 0;
            for (var x in metaSearchTargets){

                id = checkboxName+'box-m'+(i+1);
                siteName = x;
                checkBox += '<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+domainNames[x]+'"';

                if (typeof domainNames[x] !== 'undefined'){
                    siteName = siteName.split(".");
                    if (mtsState == 1) {
                        if (currentChosenSites.length>0){
                            if($j.inArray(siteName[0], currentChosenSites) >= 0){
                                checkBox += 'checked="checked"';
                            }
                        } else {
                            checkBox += 'checked="checked"';
                        }
                    } else {
                        checkBox += 'checked="checked"';
                    }
                } else {
                    checkBox += 'disabled="true"';
                }

                checkBox += '/> <label for="'+id+'">'+metaSearchTargets[x]['en_US']+'</label></div>';
                i++;
            }
        } else {
            //alert("b");
            //alert(getObjLength(domainNames));
            //alert(domainNames);
            var i = 0;
            for (var x in metaSearchTargets){
                id = checkboxName+'box-m'+(i+1);
                siteName = x;
                if(getObjLength(metaSearchTargets[x]) > 1) {
                    checkBox += '<div class="'+siteName.split(".")[0]+'"><input type="checkbox" id="'+id+'" name="metaSearchSite" value="'+domainNames[x]+'"';
                    var xElm = x.split(".");

                    if (typeof domainNames[x] !== 'undefined'){
                        siteName = siteName.split(".");
                        if (mtsState == 1) {
                            if (currentChosenSites.length>0){
                                if($j.inArray(siteName[0], currentChosenSites) >= 0){
                                    checkBox += 'checked="checked"';
                                }
                            } else {
                                checkBox += 'checked="checked"';
                            }
                        } else {
                            checkBox += 'checked="checked"';
                        }
                    } else {
                        checkBox += 'disabled="true"';
                    }

                    checkBox += '/> <label for="'+id+'">';

                    for (var y in metaSearchTargets[x] ) {
                        if (y == lang) {
                            checkBox += metaSearchTargets[x][y];
                            break;
                        }
                    }
                    checkBox += '</label></div>';
                }
                i++;
            }
        }
        mtsState = 0;
        return checkBox;
    }
}

function getMetaSearchCheckInDate(boxName) {

    switch(boxName){
        case "smallbooking":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val();
        break;

        case "bigbooking":
            var metaInputCheckinDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_In]").val();
        break;

    }

    return metaInputCheckinDate;
}

function getMetaSearchCheckOutDate(boxName) {

    switch(boxName){
        case "smallbooking":
        var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val();
        break;

        case "bigbooking":
        var metaInputCheckoutDate = $j("#metasearch-"+boxName+" input:[name=txtCheck_Out]").val();
        break;

    }
    return metaInputCheckoutDate;
}

function setMetaSearchCheckInDate(boxName, value) {
    if (value != "") {
        switch(boxName){
            case "smallbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val(value);
            break;

            case "bigbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_In]").val(value);
            break;

            case "topbarbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InTopBar]").val(value);
            break;

            case "premium":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_InShort]").val(value);
            break;
        }
    }
}

function setMetaSearchCheckOutDate(boxName, value) {
    if (value != "") {
        switch(boxName){
            case "smallbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val(value);
            break;

            case "bigbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_Out]").val(value);
            break;

            case "topbarbooking":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutTopBar]").val(value);
            break;

            case "premium":
                $j("#metasearch-"+boxName+" input:[name=txtCheck_OutShort]").val(value);
            break;
        }
    }
}

function genMetaSearchAjaxDomainNames(data) {
    var domainNames = new Object();

    $j.each(data, function(){
        //alert(this);
        //Create object of Mapped URLs, use metaSearchTargets key as the key for this newly created object
        var domainResult = this.match(/:\/\/(www\.)?(.[^/:]+)/)[2];
        domainResult = domainResult.split(".");

        for (var x in metaSearchTargets) {
            xElm = x.split(".");
            if (xElm[0] == domainResult[0]){
                var key = x;
            }
        }

        domainNames[key] = this;

    });

    return domainNames;
}

function changeMetaSearchCheckBox(obj) {

    mtsState = arguments[2];

    var currentBoxActive =  $j(obj).closest("form").attr("id");
    currentBoxActive = currentBoxActive.split("-");

    var metaQueryID = $j("#metasearch-"+currentBoxActive[1]+" input:[name='checkHotel[HotelCode]']").val();
    var metaInputLanguage = $j("#lang-"+currentBoxActive[1]+"-premium-selected-value").val();

    if (getMtscookie('mtscheckin') != "") {
        var metaInputCheckinDate = getMtscookie('mtscheckin');
    } else {
        var metaInputCheckinDate = getMetaSearchCheckInDate(currentBoxActive[1]);
    }
    if (getMtscookie('mtscheckout') != "") {
        var metaInputCheckoutDate = getMtscookie('mtscheckout');
    } else {
        var metaInputCheckoutDate = getMetaSearchCheckOutDate(currentBoxActive[1]);
    }

    var chosenSites = new Array();

    for (var key in metaSearchTargets) {
        chosenSites.push(key);
    }

    $j.ajax({
        url: "//latestays.awd.ws/metasearch/",
        data: {
            mode: "hotel",
            sf_culture: metaInputLanguage,
            id: metaQueryID,
            checkin: metaInputCheckinDate,
            checkout: metaInputCheckoutDate,
            chosensites: chosenSites
        },
        dataType: "jsonp",
        success: function(data){
            if (data != null) {
                var domainNames = genMetaSearchAjaxDomainNames(data);
                $j("#mts-"+currentBoxActive[1]+"-checkboxes").html(genMetaSearchCheckBoxAjax(metaInputLanguage, currentBoxActive[1], domainNames, mtsState));
            }
        },
        complete: function() {
            $j("#mts-bigbooking-checkboxes").find("div:last-child").addClass("last");
        }
    });
}


$j(document).ready(function(){
    if (typeof metaSearchBoxes !== 'undefined') {

        for(z=0; z<metaSearchBoxes.length; z++){
            if (typeof metaSearchBoxes[z] !== 'undefined'){
                var metaQueryHotelID = $j("#metasearch-"+metaSearchBoxes[z][1]+" input:[name='checkHotel[HotelCode]']").val();
            // If there is mts language cookie, use it
                var currentMtsLang = getMtscookie('mtsLanguage');
                if(currentMtsLang != "") {
                    var metaInputLanguage = currentMtsLang;
                } else {
                    var metaInputLanguage = metaSearchBoxes[z][0];
                }

                $j("#lang-"+metaSearchBoxes[z][1]+"-premium-selected-value").val(metaInputLanguage);

                $j("#metasearch-"+metaSearchBoxes[z][1]+" select[name='checkHotel[Nights]']").bind("change", function() {

                    var currentBoxActive =  $j(this).closest("form").attr("id");
                    currentBoxActive = currentBoxActive.split("-");

                    var metaInputCheckinDate = getMetaSearchCheckInDate(currentBoxActive[1]);
                    var metaInputCheckoutDate = getMetaSearchCheckOutDate(currentBoxActive[1]);

                    document.cookie="mtscheckin="+metaInputCheckinDate+";path=/";
                    document.cookie="mtscheckout="+metaInputCheckoutDate+";path=/";

                    changeMetaSearchCheckBox($j(this), "hotel");

                });

                // Set Cookie for each box

                //alert(getMtscookie('mtscheckin'));
                //alert(getMtscookie('mtscheckout'));

                var mtscheckin = getMtscookie('mtscheckin');
                var mtscheckout = getMtscookie('mtscheckout');

                if ((mtscheckin != "") && (mtscheckout != "")){

                    setMetaSearchCheckInDate(metaSearchBoxes[z][1], getMtscookie('mtscheckin'));
                    setMetaSearchCheckOutDate(metaSearchBoxes[z][1], getMtscookie('mtscheckout'));

                    // For night big box needed to recalculated based on the stored cookies.
                    var bigboxStartDate = bigChStrtoDate(getMtscookie('mtscheckin'))
                    var bigboxEndDate =bigChStrtoDate(getMtscookie('mtscheckout'))
                    var Nights = Math.floor((bigboxEndDate.getTime() - bigboxStartDate.getTime()) / (1000 * 60 * 60 * 24));
                    $j("#metasearch-"+metaSearchBoxes[z][1]+" select[name='checkHotel[Nights]']").val(bigpadZero(Nights));
                }

                if (getMtscookie('mtscheckin') != "") {
                    var metaInputCheckinDate = mtscheckin;
                } else {
                    var metaInputCheckinDate = getMetaSearchCheckInDate(metaSearchBoxes[z][1]);
                }
                if (getMtscookie('mtscheckout') != "") {
                    var metaInputCheckoutDate = mtscheckout;
                } else {
                    var metaInputCheckoutDate = getMetaSearchCheckOutDate(metaSearchBoxes[z][1]);
                }

            }
        }

        var chosenSites = new Array();

        for (var key in metaSearchTargets) {
            chosenSites.push(key);
        }

        //alert(chosenSites);
        //alert(metaQueryHotelID);
        //alert(metaInputLanguage);
        //alert(metaInputCheckinDate);
        //alert(metaInputCheckoutDate);

        // Check whether the Destination ID is mapped.

        $j.ajax({
            url: "//latestays.awd.ws/metasearch/",
            data: {
                mode: "hotel",
                sf_culture: metaInputLanguage,
                id: metaQueryHotelID,
                checkin: metaInputCheckinDate,
                checkout: metaInputCheckoutDate,
                chosensites: chosenSites
            },
            dataType: "jsonp",
            success: function(data){
                if (data != null) {
                    var domainNames = genMetaSearchAjaxDomainNames(data);
                    // Populate the default checkboxes for every search box on the page based on the ajax result
                    for (z=0; z<metaSearchBoxes.length; z++){
                        if (typeof metaSearchBoxes[z] !== 'undefined'){
                            $j("#mts-"+metaSearchBoxes[z][1]+"-checkboxes").html(genMetaSearchCheckBoxAjax(metaInputLanguage, metaSearchBoxes[z][1], domainNames));
                        }
                    }
                }
            },
            complete: function(){
                $j("#mts-bigbooking-checkboxes").find("div:last-child").addClass("last");
            }
        });

        $j(".buttonMts").click(function() {
            $j("#buttonMts-open").toggleClass('hide');
            $j("#metasearch-smallbooking .hotel-finder-cover-n").toggleClass("collapse");
            $j("#mts-smallbooking").toggle( 'slide', '', 500);
            return false;
        });
    }
});

function getMtscookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    // if cookie exists
    if (offset != -1) {
      offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1) end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}
function openOffersDialog7() {
	jQuery('#overlaySlider7').fadeIn('fast', function() {
		jQuery('#boxPopup7').css('display','block');
        jQuery('#boxPopup7').animate({'left':'25%'},200);
		if(typeof(awdDetectIe)=="function")
		{
			if(awdDetectIe()<=7) jQuery('#overlaySlider7').animate({'filter':'Alpha(Opacity=50)'},200);
			if(awdDetectIe()==6) 
			{
				jQuery('#overlaySlider7').css('position','absolute');
				jQuery('#overlaySlider7').css('width','100%');
				jQuery('#overlaySlider7').css('height',document.body.scrollHeight);
			}
		}
    });
}


function closeOffersDialog7(prospectElementID) {
	jQuery(function(jQuery) {
		jQuery(document).ready(function() {
			jQuery('#' + prospectElementID).css('position','absolute');
			jQuery('#' + prospectElementID).animate({'left':'-100%'}, 200, function() {
				jQuery('#' + prospectElementID).css('position','fixed');
				jQuery('#' + prospectElementID).css('left','100%');
				jQuery('#' + prospectElementID).css('display','none');
				jQuery('#overlaySlider7').fadeOut('fast');
			});
		});
	});
}

function Sliderdiscountcode(tempval)
{
	if(tempval==null) return false;

	tempval.focus();
	tempval.select();

	try {
		therange=tempval.createTextRange();
		therange.execCommand("Copy");
	} catch (err) {}
}

function getCookiecMsSlideR(name) {
	var dcookie = document.cookie;
	var cname = name + "=";
	var clen = dcookie.length;
	var cbegin = 0;
	while (cbegin < clen) {
		var vbegin = cbegin + cname.length;
		if (dcookie.substring(cbegin, vbegin) == cname) {
			var vend = dcookie.indexOf(";", vbegin);
			if (vend == -1)
				vend = clen;
			return unescape(dcookie.substring(vbegin, vend));
		}
		cbegin = dcookie.indexOf(" ", cbegin) + 1;
		if (cbegin == 0)
			break;
	}
	return null;
}

function setCookiecMsSlideR(name, value) {
	var cookie = name + "=" + escape(value) + "; path=/"; //;domain=.asiawebdirect.com
	document.cookie = cookie;
}
