﻿//*********************************************************************
//Date Stuff
//*********************************************************************
var datePickerObj;
var currentDate = new Date();
var minDateGlobal = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + 1);
var maxDateGlobal = new Date(currentDate.getFullYear() + 1, 11, 31);

$(document).ready(function() {
    datePickerObj = $("#datepicker").datepicker({

        onSelect: function(dateText, inst) {
            datePickerObj.hide();

            var realMonth = inst.currentMonth + 1;
            if (ddlMonth.get(0).options[ddlMonth.get(0).selectedIndex].value != realMonth.toString() + inst.currentYear.toString()) {
                //Select Month for drop downs
                for (var i = 0; i < ddlMonth.get(0).options.length; i++) {
                    if (ddlMonth.get(0).options[i].value == padleft(realMonth.toString(), '0', 2) + inst.currentYear.toString()) {
                        ddlMonth.get(0).options[i].selected = true;
                        continue;
                    }
                }

                //Update day combo before trying to select day
                UpdateDayForMonth();
            }

            //Select Day for drop downs
            for (var i = 0; i < ddlDay.get(0).options.length; i++) {
                if (ddlDay.get(0).options[i].value == inst.currentDay) {
                    ddlDay.get(0).options[i].selected = true;
                    continue;
                }
            }
        },

        showAnim: 'fold',

        showButtonPanel: true,

        closeText: 'Close',

        minDate: minDateGlobal,

        maxDate: maxDateGlobal
    });
});

$("#searchBtnLnk").click(function(e) {
    //Build deep link
    var adultCount = ddlAdultCount.value;
    var childrenCount = ddlChildrenCount.value;
    var infantCount = ddlInfantCount.value;
    var duration = ddlDuration.value;
    var flexibility = ddlFlexibility.value;
    var regionCode = ddlRegionCode.value;
    var dayValue = ddlDay.get(0).value;
    var monthValue = ddlMonth.get(0).value;
    var yearValue = monthValue.substring(2, monthValue.length);
    monthValue = monthValue.substring(0, monthValue.length - 4);

    if (regionCode == "" && !isProductDetailPage) {
        var errorLabel = $("#searchError").get(0);
        errorLabel.innerHTML = "Error - Please select a region";
        errorLabel.style.display = "block";
        return false;
    }
    else if (monthValue > 0 && dayValue == 0) {
        var errorLabel = $("#searchError").get(0);
        errorLabel.innerHTML = "Error - Please select a date";
        errorLabel.style.display = "block";
        return false;
    }
    else if (dayValue > 0 && monthValue == 0) {
        var errorLabel = $("#searchError").get(0);
        errorLabel.innerHTML = "Error - Please select a month";
        errorLabel.style.display = "block";
        return false;
    }
    else {
        var regexStr = "[\\?&]CurrencyType=([^&#]*)";
        var regex = new RegExp(regexStr);
        var results = regex.exec(window.location.href);
        if (monthValue == 0 && dayValue == 0) {
            if (isProductDetailPage) {
                var errorLabel = $("#searchError").get(0);
                errorLabel.innerHTML = "Error - Please select a date";
                errorLabel.style.display = "block";
                return false;
            }
            else {
                //NO DATE SEARCH
                if (results == null) {
                    this.href = "../EUVilla/SearchResultsPage.aspx?ADCT=" + adultCount + "&CHCT=" + childrenCount + "&INCT=" + infantCount + "&DURTN=" + duration + "&FLEXR=" + flexibility + "&RCODE=" + regionCode;
                }
                else {
                    this.href = "../EUVilla/SearchResultsPage.aspx?ADCT=" + adultCount + "&CHCT=" + childrenCount + "&INCT=" + infantCount + "&DURTN=" + duration + "&FLEXR=" + flexibility + "&RCODE=" + regionCode + "&CurrencyType=" + results[1];
                }
            }
        }
        else {
            if (isProductDetailPage) {
                if (results == null) {
                    this.href = "../EUVilla/ProductDetailPage.aspx?ACODE=" + aCode + "&ADCT=" + adultCount + "&CHCT=" + childrenCount + "&IFCT=" + infantCount + "&DURTN=" + duration + "&SDATE=&SDATE=" + dayValue + "-" + monthValue + "-" + yearValue + "&FLEXR=" + flexibility + ""
                }
                else {
                    this.href = "../EUVilla/ProductDetailPage.aspx?ACODE=" + aCode + "&ADCT=" + adultCount + "&CHCT=" + childrenCount + "&IFCT=" + infantCount + "&DURTN=" + duration + "&SDATE=&SDATE=" + dayValue + "-" + monthValue + "-" + yearValue + "&FLEXR=" + flexibility + "&CurrencyType=" + results[1];
                }
            }
            else {
                //DATE SEARCH
                if (results == null) {
                    this.href = "../EUVilla/SearchResultsPage.aspx?ADCT=" + adultCount + "&CHCT=" + childrenCount + "&INCT=" + infantCount + "&DURTN=" + duration + "&FLEXR=" + flexibility + "&RCODE=" + regionCode + "&SDATE=" + dayValue + "-" + monthValue + "-" + yearValue;
                }
                else {
                    this.href = "../EUVilla/SearchResultsPage.aspx?ADCT=" + adultCount + "&CHCT=" + childrenCount + "&INCT=" + infantCount + "&DURTN=" + duration + "&FLEXR=" + flexibility + "&RCODE=" + regionCode + "&SDATE=" + dayValue + "-" + monthValue + "-" + yearValue + "&CurrencyType=" + results[1];
                }
            }
        }
    }
});

imgCalendar.click(function(e) {
    //Update Date from Combos

    if ($("#datepicker").css("display") == "none") {

        SetDate();

        datePickerObj.show();
    }
    else {
        datePickerObj.hide();
    }
});

ddlMonth.change(UpdateDayForMonth);

ddlDay.change(SetDate);

function SetDate() {
    if (datePickerObj != null) {
        var monthValue = ddlMonth.get(0).value;
        var strippedValue = monthValue.substring(0, monthValue.length - 4);
        var yearValue = monthValue.substring(2, monthValue.length);
        var dayValue;
        if (strippedValue == "00") {
            dayValue = 0;
        }
        else {
            dayValue = ddlDay.get(0).value;
        }

        datePickerObj.datepicker('setDate', new Date(yearValue, strippedValue - 1, dayValue));
    }
}

function padleft(val, ch, num) {
    var re = new RegExp(".{" + num + "}$");
    var pad = "";
    if (!ch) ch = " ";
    do {
        pad += ch;
    } while (pad.length < num);
    return re.exec(pad + val)[0];
}

function UpdateDayForMonth() {
    //Call Page Method
    var monthValue = ddlMonth.get(0).value;
    //if (monthValue > 0) {
        var strippedValue = monthValue.substring(0, monthValue.length - 4);
        var strippedYearValue = monthValue.substring(2, monthValue.length);
        PageMethods.getJSONDays(strippedValue, strippedYearValue, OnGetDaysComplete);
    //}
}

function ShowCalendar() {
    var calendar = $("#calendarPopup").get(0)

    if (calendar.style.display == "none") {
        calendar.style.display = "block";
    }
    else {
        calendar.style.display = "none";
    }
}

function OnGetDaysComplete(result, userContext, methodName) {
    var result = eval('(' + result + ')');
    var selectedValue = ddlDay.get(0).value;

    //Clear the List Box
    ddlDay.get(0).options.length = 0;

    //Loop New Items in
    for (i = 0; i < result.days.length; i++) {
        AddItemDays(result.days[i].text, result.days[i].value, selectedValue == result.days[i].value);
    }

    //Change Calendar Icon
    var monthValue = ddlMonth.get(0).value;
    var strippedValue = monthValue.substring(0, monthValue.length - 4);

    if (strippedValue == "00") {
        var currentTime = new Date();
        strippedValue = currentTime.getMonth() + 1;
        if (strippedValue < 10) {
            strippedValue = "0" + strippedValue;
        }

        //Select Day for drop downs
        for (var i = 0; i < ddlDay.get(0).options.length; i++) {
            if (ddlDay.get(0).options[i].value == "0") {
                ddlDay.get(0).options[i].selected = true;
                continue;
            }
        }
    }
   

    imgCalendar.get(0).src = "../../Images/JQueryUI/" + strippedValue + ".gif";

    SetDate();
}

function AddItemDays(Text, Value, Selected) {
    // Create an Option object
    var opt = document.createElement("option");

    // Add an Option object to Drop Down/List Box
    ddlDay.get(0).options.add(opt);
    // Assign text and value to Option object
    opt.text = Text;
    opt.value = Value;
    opt.selected = Selected;
}