var IE4 = (document.all && !document.getElementById) ? true : false;
var NS4 = (document.layers) ? true : false;
var IE5 = (document.all && document.getElementById) ? true : false;
var N6 = (document.getElementById && !document.all) ? true : false;
var NS = (window.Event) ? 1 : 0;

var type = "ie";
var ddlResort;
var updateDiv;
var ControlId;
var xmlHttp;

function checkKey(e) {
    var code = (NS) ? e.which : event.keyCode;
    if (code == "13") {
        return false;
    }
}
//document.onkeypress = checkKey;



function GetXmlHttpObject() {

    xmlHttp = null;

    var ua = navigator.userAgent.toLowerCase();
    if (!window.ActiveXObject)
        xmlHttp = new XMLHttpRequest();
    else if (ua.indexOf('msie 5') == -1)
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    else
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    return xmlHttp;
}

function setSrc(id, url) {
    if (NS4) { eval("document." + id + ".document." + id).src = url }
    else if (IE4) { eval("document.all." + id).src = url }
    else if (IE5 || N6) { document.getElementById(id).src = url };
}

function getObject(object) {
    if (document.getElementById && document.getElementById(object) != null) {
        return document.getElementById(object);
    } else if (document.layers && document.layers[object] != null) {
        return document.layers[object];
    } else if (document.all) {
        return document.all[object];
    }
}

function showHide(object) {

    if (document.getElementById && document.getElementById(object) != null) {
        if (document.getElementById(object).style.display == 'none') {
            document.getElementById(object).style.display = '';
        } else {
            document.getElementById(object).style.display = 'none';
        }
    } else if (document.layers && document.layers[object] != null) {
        if (document.layers[object].visibility == 'hidden') {
            document.layers[object].visibility = 'visible'
        } else {
            document.layers[object].visibility = 'hidden'
        }
    } else if (document.all) {
        if (document.all[object]) {
            if (document.all[object].style.display == 'none') {
                document.all[object].style.display = '';
            } else {
                document.all[object].style.display = 'none';
            }
        }
        else if (document.getElementById(object)) {
            if (document.getElementById(object).style.display == 'none') {
                document.getElementById(object).style.display = '';
            } else {
                document.getElementById(object).style.display = 'none';
            }
        }
    }
}

function showHideExt(object, img) {

    if (document.getElementById && document.getElementById(object) != null) {
        if (document.getElementById(object).style.display == 'none') {
            document.getElementById(object).style.display = '';
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_exp.gif");
        } else {
            document.getElementById(object).style.display = 'none';
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_min.gif");
        }
    } else if (document.layers && document.layers[object] != null) {
        if (document.layers[object].visibility == 'hidden') {
            document.layers[object].visibility = 'visible'
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_exp.gif");
        } else {
            document.layers[object].visibility = 'hidden'
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_min.gif");
        }
    } else if (document.all) {
        if (document.all[object].style.display == 'none') {
            document.all[object].style.display = '';
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_exp.gif");
        } else {
            document.all[object].style.display = 'none';
            setSrc(img, "/App_Themes/SkiExtras/img/interior/prodselect_min.gif");
        }
    }
}

function showHideByAction(object, Action) {
    if (document.getElementById && document.getElementById(object) != null) {
        document.getElementById(object).style.display = (Action == 'show') ? '' : 'none';
    } else if (document.layers && document.layers[object] != null) {
        document.layers[object].visibility = (Action == 'show') ? 'visible' : 'hidden';
    } else if (document.all) {
        document.all[object].style.display = (Action == 'show') ? '' : 'none';
    }
}

function enableDisableByAction(object, Action) {

    if (document.getElementById && document.getElementById(object) != null) {
        document.getElementById(object).disabled = (Action == 'show') ? false : true;
    }
    else if (document.layers && document.layers[object] != null) {
        document.layers[object].disabled = (Action == 'show') ? false : true;
    }
    else if (document.all) {
        document.all[object].disabled = (Action == 'show') ? false : true;
    }
}

function ShowHideDetail() {
    showHide('resinfo_intro');
    showHide('resinfo_photos');
    showHide('resinfo_full');
}


function getYearDays(year) {
    if (checkleapyear(year) == true)
        return 365;
    else
        return 366;
}


function GetDateBeforeDays(currdate, days) {
    var oneday = 60 * 1000 * 60 * 24;
    var daysbefore = parseInt(days);
    var currdatems = currdate.getTime();

    var addms = oneday * daysbefore;

    var daysbeforedate = new Date();
    daysbeforedate.setTime(currdatems - addms);
    return daysbeforedate;
}

function GetDateAfterDays(currdate, days) {
    var oneday = 60 * 1000 * 60 * 24;
    var daysafter = parseInt(days);
    var currdatems = currdate.getTime();

    var addms = oneday * daysafter;

    var daysafterdate = new Date();
    daysafterdate.setTime(currdatems + addms);
    return daysafterdate;
}


function DoExpand(divt, divd) {
    showHide(divd)
    showHide(divt)
}

function DoExpandExt(divt, divd, img) {
    showHideExt(divt, img)
    showHide(divd)
}


function make_return(ouwardlist, returnlist) {
    arr = getObject(ouwardlist).value.split(" - ");
    getObject(returnlist).value = arr[1] + " - " + arr[0];
}

function make_return_nav(x) {
    arr = x.Interior_engine1_ddlOutward1.value.split(" - ");
    if (x.Interior_engine1_ddlReturn1 != null)
        x.Interior_engine1_ddlReturn1.value = arr[1] + " - " + arr[0];
}


function flip(id, s, m) {
    for (n = 1; n <= m; n++) {
        div = id + n
        div2 = 'img' + n
        if (document.getElementById(div)) {
            xImg = document.getElementById(div2)
            n == s ? xImg.src = 'img/int/accom/accom_a2_minimise.gif' : xImg.src = 'img/int/accom/accom_a2_expand.gif'
            n == s ? sShow(div) : sHide(div)
        }
    }

}

function imgflip(id, s, m) {
    div2 = 'img' + s
    xImg = document.getElementById(div2)
    xImg.src.indexOf('img/int/accom/accom_a2_expand.gif') > 0 ? flip(id, s, m) : flip(id, 0, m)
}

function flipimgtxt(div) {
    if (GetVisibility('div_' + div) == true) {
        sHide('div_' + div + '_img');
        sShow('div_' + div + '_txt');
        sHide('div_' + div);
    } else {
        sShow('div_' + div + '_img');
        sHide('div_' + div + '_txt');
        sShow('div_' + div);
    }
}

function setDatesIns(Control) {
    var startdate = getObject(Control + '_txtStartDate').value;
    if (startdate.indexOf('/') > 0) {

        var iDay = startdate.split('/')[0];
        var iMonth = startdate.split('/')[1];
        var iYear = startdate.split('/')[2];
        var pType = parseInt(getObject(Control + '_ddlPolicyType').value);

        if (!(isNaN(iDay) || isNaN(iMonth) || isNaN(iYear))) {
            switch (pType) {
                case 1:
                    var cDate = new Date(iYear, iMonth - 1, iDay);

                    var nDate = GetDateAfterDays(cDate, 1);
                    iDay = nDate.getDate();
                    iMonth = nDate.getMonth() + 1;
                    iYear = nDate.getFullYear();

                    iDay = (iDay < 10) ? '0' + iDay : iDay;
                    iMonth = (iMonth < 10) ? '0' + iMonth : iMonth;

                    var newDate = iDay + '/' + iMonth + '/' + iYear;
                    getObject(Control + '_txtEndDate').value = newDate;
                    break;

                case 3:
                    var cDate = new Date(iYear, iMonth - 1, iDay);
                    var nDate = GetDateAfterDays(cDate, 365);

                    iDay = nDate.getDate();
                    iMonth = nDate.getMonth() + 1;
                    iYear = nDate.getFullYear();

                    iDay = (iDay < 10) ? '0' + iDay : iDay;
                    iMonth = (iMonth < 10) ? '0' + iMonth : iMonth;
                    var newDate = iDay + '/' + iMonth + '/' + iYear;
                    getObject(Control + '_txtEndDate').value = newDate;

                    break;
            }
        } else {
            alert('Please enter correct date');
        }
    } else {
        alert('Please enter correct date');
    }
}

function EnableDisableControls(Control) {
    DisableControls(Control);

    var PolicyType = getObject(Control + '_ddlPolicyType').value;
    var ddlCoverFor = getObject(Control + '_ddlCoverFor').value;

    switch (ddlCoverFor) {
        case '1':
            getObject(Control + '_ddlInfants').value = 0;
            getObject(Control + '_ddlChildren').value = 0;
            getObject(Control + '_ddlAdults').value = 1;
            break;
        case '2': //Couple
            switch (PolicyType) {
                case '1':
                    enableDisableByAction(Control + '_ddlInfants', 'show');
                    getObject(Control + '_ddlChildren').value = 0;
                    getObject(Control + '_ddlAdults').value = 2;
                    break;
                default:
                    getObject(Control + '_ddlInfants').value = 0;
                    getObject(Control + '_ddlChildren').value = 0;
                    getObject(Control + '_ddlAdults').value = 2;
                    enableDisableByAction(Control + '_ddlInfants', 'hide');
                    break;
            }
            break;
        case '3':
            enableDisableByAction(Control + '_ddlInfants', 'show');
            enableDisableByAction(Control + '_ddlChildren', 'show');
            getObject(Control + '_ddlAdults').value = 1;
            break;
        case '4':
            enableDisableByAction(Control + '_ddlInfants', 'show');
            enableDisableByAction(Control + '_ddlChildren', 'show');
            getObject(Control + '_ddlAdults').value = 2;
            break;
        case '5':
            enableDisableByAction(Control + '_ddlAdults', 'show');
            getObject(Control + '_ddlInfants').value = 0;
            getObject(Control + '_ddlChildren').value = 0;
            break;
    }

    switch (PolicyType) {
        case '5':
            getObject(Control + '_ddlCoverFor').value = 1;
            break;
    }

}

function DisableControls(Control) {
    enableDisableByAction(Control + '_ddlInfants', 'hide');
    enableDisableByAction(Control + '_ddlChildren', 'hide');
    enableDisableByAction(Control + '_ddlAdults', 'hide');
}


function ResetSelection(Control) {
    EnableDisableControls(Control);
}

function GetVisibility(div) {
    obj = getObject(div);
    if (!document.layers) {
        if (obj.style.display == 'block')
            return true;
        else
            return false;
    } else {
        if (obj.visibility == 'show')
            return true;
        else
            return false;
    }
}

function sShow(div) {
    if (document.getElementById)
        obj = eval("document.getElementById('" + div + "')");
    else if (document.all)
        obj = eval("document.all." + div);
    else if (document.layers)
        obj = eval("document.layers['" + div + "']");
    !document.layers ? obj.style.display = 'block' : obj.visibility = 'show'
}

function sHide(div) {
    if (document.getElementById)
        obj = eval("document.getElementById('" + div + "')");
    else if (document.all)
        obj = eval("document.all." + div);
    else if (document.layers)
        obj = eval("document.layers['" + div + "']");
    !document.layers ? obj.style.display = 'none' : obj.visibility = 'hidden'
}

function ShowHideFAQs(divid) {
    sHide('generalFAQ');
    sHide('skihireFAQ');
    sHide('skischoolFAQ');
    sHide('liftPassFAQ');
    sHide('insuranceFAQ');
    sShow(divid);

}

function ShowHideTerms(divid) {
    sHide('generalTerm');
    sHide('accommodationTerm');
    sHide('skihireTerm');
    sHide('insuranceTerm');
    sHide('liftPassTerm');
    sHide('skischoolTerm');
    sShow(divid);

}

function AskChildAges(id, Quantity, RoomNumber) {
    var cdef
    for (def = 0; def < 19; def++) {
        cdef += '<option value=' + def + '>' + def + '</option>'
    }

    var div = getObject(id)
    if (div) {
        div.innerHTML = ""
        cs = ""
        if (Quantity > 0) {
            cs = '<span style="COLOR: #71b4ef">Please specify the ages of the children in Room ' + RoomNumber + ':</span>'
            cs += '<table style="MARGIN-TOP: 10px" border="0" cellpadding="0" cellspacing="0">'

            for (ca = 1; ca <= Quantity; ca++) {
                cs += '<tr>'
                cs += '<td style="WIDTH: 75px; HEIGHT: 25px">Child ' + ca + '</td>'
                cs += '    <td style="PADDING-RIGHT: 15px">'
                cs += '    	<select name="' + id + '_' + ca + '">'
                cs += cdef
                cs += '     </select> years'
                cs += '    </td>'
                cs += ' </tr>'
            }
            cs += '</table>'
        }
        div.innerHTML = cs
    }
}

//------------------------------------------ AJAX Caller Functions -----------------------------------------

function Signup(email, referrer) {
    sShow('signupmsg');
    getObject('signupmsg').innerHTML = '<b>Please wait...</b>';
    AjaxHandler.SignupNewsletter(email, referrer, Signup_CallBack);
}

function SetCountry(value, selcnt, selres) {
    ddlResort = selres;
    getObject(selcnt).value = value;
    AjaxHandler.GetResorts(value, GetResorts_CallBack);
}

function GetResortList(value, selres) {
    ddlResort = selres;
    AjaxHandler.GetResorts(value, GetResorts_CallBack);
}

function CheckCodeWithJS(addedCode, productId, startDate, days, shopId, resortId) {
    return AjaxHandler.CheckCode(addedCode, productId, shopId, resortId);
}

function DoResortComparison() {
    var c1 = getObject('c1').options[getObject('c1').options.selectedIndex].value;
    var r1 = getObject('r1').options[getObject('r1').options.selectedIndex].value;
    var c2 = getObject('c2').options[getObject('c2').options.selectedIndex].value;
    var r2 = getObject('r2').options[getObject('r2').options.selectedIndex].value;
    var c3 = getObject('c3').options[getObject('c3').options.selectedIndex].value;
    var r3 = getObject('r3').options[getObject('r3').options.selectedIndex].value;

    getObject('resortCompare').innerHTML = '<img src="img/preloader/preload.gif">';

    AjaxHandler.GetResortComparison(c1, r1, c2, r2, c3, r3, ResortComparison_CallBack)
}

function SearchComtec(Country, Resort, AirPortCode, DeptDateMin, NightsMax, SortMode, ResultsLimit, AdultPriceMax) {
    getObject('divComtecResults').innerHTML = '<img src="img/preloader/preload.gif">';

    AjaxHandler.DoComtecSearch(Country, Resort, AirPortCode, DeptDateMin, NightsMax, SortMode, ResultsLimit, AdultPriceMax, Comtec_CallBack);
}


function SearchComtecExt(ResultsLimit, AdultPriceMax) {
    var Destination = getObject('destination').value;
    var Country = Destination.split(' - ')[0];
    var Resort = Destination.split(' - ')[1];
    var AirPortCode = getObject('ddlAirportCode').value;
    var NightsMax = getObject('ddlNightsMax').value;
    var DeptDateMin = getObject('DeptDateMin').value;
    var SortMode = 'resort_name';

    getObject('divComtecResults').innerHTML = '<img src="img/preloader/preload.gif">';

    AjaxHandler.DoComtecSearch(Country, Resort, AirPortCode, DeptDateMin, NightsMax, SortMode, ResultsLimit, AdultPriceMax, Comtec_CallBack);
}


function ShowVideo(Location, URL) {
    var embed = '<object width="390" height="304" viewastext><param name="movie" value="{0}" /><param name="wmode" value="transparent" /><embed src="{1}" type="application/x-shockwave-flash" wmode="transparent" width="382" height="304"></embed></object>';
    embed = embed.replace('{0}', URL);
    embed = embed.replace('{1}', URL);
    AjaxHandler.GetPlayList(Location, URL, Video_Callback);
    getObject('divVideo').innerHTML = embed;
}

function GetCarCities(Control, Value, Type) {
    ControlId = Control;
    switch (Type) {
        case 1:
            if (Value == 227) {
                getObject(Control + '_ddlPickupCity').options.length = 0;
                getObject(Control + '_ddlPickupCity').options[0] = new Option("--- Select Cities ---", "0");
                getObject(Control + '_ddlPickupCity').disabled = true;
                getObject(Control + '_ddlPickupState').disabled = false;
            } else {
                AjaxHandler.GetCitiesByCountry(Value, GetCities_CallBack);
                getObject(Control + '_ddlPickupState').options[0].selected = true;
                getObject(Control + '_ddlPickupState').disabled = true;
            }

            break;
        case 2:
            AjaxHandler.GetCitiesByState(Value, GetCities_CallBack);
            break;
    }
}

function DisableState(Control) {
    if (getObject(Control + '_ddlPickupCountry').options[getObject(Control + '_ddlPickupCountry').selectedIndex].value == 227)
        getObject(Control + '_ddlPickupState').disabled = false;
    else
        getObject(Control + '_ddlPickupState').disabled = true;
}

function getInformation(div, pid, sid, tab) {

    updateDiv = div;
    document.getElementById(updateDiv).innerHTML = "<img src='img/preloader/preload.gif' width='50px' height='50px'/>";
    xmlHttp = GetXmlHttpObject();

    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    getObject(pid + 'natab1').className = 'newaccom_tab newaccom_tab_0';
    getObject(pid + 'natab2').className = 'newaccom_tab newaccom_tab_0';
    getObject(pid + 'natab3').className = 'newaccom_tab newaccom_tab_0';
    getObject(pid + 'natab4').className = 'newaccom_tab newaccom_tab_0';
    getObject(pid + tab).className = 'newaccom_tab newaccom_tab_1';

    getObject(pid + 'tabsep1').className = 'newaccom_tabsep_0_0';
    getObject(pid + 'tabsep2').className = 'newaccom_tabsep_0_0';
    getObject(pid + 'tabsep3').className = 'newaccom_tabsep_0_0';
    getObject(pid + 'tabsep4').className = 'newaccom_tabsep_0_0';

    switch (pid + tab) {
        case pid + 'natab1':
            getObject(pid + 'tabsep1').className = 'newaccom_tabsep_1_0';
            break;
        case pid + 'natab2':
            getObject(pid + 'tabsep1').className = 'newaccom_tabsep_0_1';
            getObject(pid + 'tabsep2').className = 'newaccom_tabsep_1_0';
            break;
        case pid + 'natab3':
            getObject(pid + 'tabsep2').className = 'newaccom_tabsep_0_1';
            getObject(pid + 'tabsep3').className = 'newaccom_tabsep_1_0';
            break;
        case pid + 'natab4':
            getObject(pid + 'tabsep3').className = 'newaccom_tabsep_0_1';
            getObject(pid + 'tabsep4').className = 'newaccom_tabsep_1_0';
            break;
    }

    var url = "usercontrols/accommodation/ajax/accomm_information.aspx?pid=" + pid + "&sid=" + sid + "&x=" + Math.random();

    xmlHttp.onreadystatechange = AccommDetails_CallBack;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

function checkAvailablility(str) {

    updateDiv = "lblResults";
    getObject(updateDiv).innerHTML = "<img src='img/preloader/preload.gif' />";
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }

    var url = "usercontrols/accommodation/ajax/accomm_results.aspx" + str + "&sid=" + Math.random();
    xmlHttp.onreadystatechange = AccommResults_CallBack;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

//--------------------------------------------- AJAX Call Back Functions ----------------------------------
function Signup_CallBack(res) {
    if (res.value != null) {
        getObject('signupmsg').innerHTML = res.value; //'<b>Thank you for sigining up</b>';
    } else
        getObject('signupmsg').innerHTML = 'Failed';
}

function AccommResults_CallBack() {

    if (xmlHttp.readyState == 4) {
        getObject(updateDiv).innerHTML = xmlHttp.responseText;
    }
}

function AccommDetails_CallBack() {

    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        getObject(updateDiv).innerHTML = xmlHttp.responseText;
    }
}

function GetResorts_CallBack(res) {
    var dtResorts = res.value;
    if (dtResorts != null) {
        var ddlResorts = getObject(ddlResort);
        if (ddlResorts != null) {
            ddlResorts.options.length = 0;
            for (var Index = 0; Index < dtResorts.Rows.length; Index++) {
                ddlResorts.options[Index] = new Option(dtResorts.Rows[Index]['strLocationName'], dtResorts.Rows[Index]['intPKLocationId']);
            }
        }
    }
}


function GetCities_CallBack(res) {
    var dtCities = res.value;
    if (dtCities != null) {
        getObject(ControlId + '_ddlPickupCity').disabled = false;
        var ddlCities = getObject(ControlId + '_ddlPickupCity');
        if (ddlCities != null) {
            ddlCities.options.length = 0;
            for (var Index = 0; Index < dtCities.Rows.length; Index++) {
                ddlCities.options[Index] = new Option(dtCities.Rows[Index]['CityName'], dtCities.Rows[Index]['Cities_ID']);
            }
        }
    }
}

function ResortComparison_CallBack(res) {
    if (res.value != null) {
        getObject('resortCompare').innerHTML = res.value;
    } else {
        alert('system is unable to compare the selected resorts');
        //AjaxHandler.GetResortComparison(13,108,30,92,4,79,ResortComparison_CallBack)
    }

}

function Comtec_CallBack(res) {
    if (res.value != null) {
        getObject('divComtecResults').innerHTML = res.value;
    } else {
        getObject('divComtecResults').innerHTML = 'No Results Returned';
    }
}


function Video_Callback(res) {
    if (res.value != null) {
        getObject('divPlayList').innerHTML = res.value.split('#')[0];
    }
}
var selectedPackage = new Array();

function AddRemovePackage(select_element, packageHiddenField, adultPackage, childrenPackage) {
    var packageId = select_element.name.substring(8);
    var adultOrchild = document.getElementById("isAdult_" + packageId)

    if (select_element.options[select_element.selectedIndex].text == '0') {
        for (var i = 0; i < selectedPackage.length; i++) {
            if (selectedPackage[i] == packageId) {
                selectedPackage.splice(i, 1);
            }
        }
    }
    else {
        found = false;
        for (var i = 0; i < selectedPackage.length; i++) {
            if (selectedPackage[i] == packageId)
                found = true;
        }
        if (found == false) {
            selectedPackage.push(packageId);
        }
    }

    packageHiddenField.value = '';
    for (var i = 0; i < selectedPackage.length; i++) {
        if (i < selectedPackage.length - 1) {
            //document.getElementById(packageHiddenField).value += selectedPackage[i] + ',';
            packageHiddenField.value += selectedPackage[i] + ',';
        }
        else {
            //document.getElementById(packageHiddenField).value += selectedPackage[i];
            packageHiddenField.value += selectedPackage[i];
        }
    }
    var adultHidden = 0;
    var childrenHidden = 0;
    for (var i = 0; i < selectedPackage.length; i++) {
        var selectPackage = document.getElementById("package_" + selectedPackage[i])
        var inputPackage = document.getElementById("isAdult_" + selectedPackage[i])
        if (inputPackage.value == "1") {
            adultHidden += parseInt(selectPackage.options[selectPackage.selectedIndex].text);
        }
        else {
            childrenHidden += parseInt(selectPackage.options[selectPackage.selectedIndex].text);
        }
    }

    adultPackage.value = parseInt(adultHidden);
    childrenPackage.value = parseInt(childrenHidden);

}
