var MaxSearchDateRange = 14;
function changeArrivalDateRb(form) {
    form.rbArrivalDate.checked = true;
    form.rbDateRange.checked = false;
}

function changeDateRangeRb(form) {
    form.rbArrivalDate.checked = false;
    form.rbDateRange.checked = true;
}


function changeSearchRb(form) {
    if (form.lbParkSelect.selectedIndex == 0) {
        for (var i = 1; i < form.lbParkSelect.options.length; i++) {
            if (form.lbParkSelect.options[i].selected == true) {
                form.lbParkSelect.options[0].selected = false;
            }
        }
    }
    form.rbSearchParks.checked = true;
    form.rbSearchAllParks.checked = false;
}

function resetParkSelect(form) {
    form.lbParkSelect.selectedIndex = 0;
}


var todaysDate = new Date();
var todaysMonthYear = todaysDate.getMonth() + 1;
todaysMonthYear = todaysMonthYear + "/" + todaysDate.getFullYear();
var todaysDay = todaysDate.getDate();
var tempDate = createDate(todaysMonthYear, todaysDay);


function basicCheckDates(form, isQuickCheck) {
    //debugger;
    var eArrivalDate = new Date(g_earliestArrivalDate);
    var eArrivalDateMonthYear = eArrivalDate.getMonth() + 1;
    eArrivalDateMonthYear = eArrivalDateMonthYear + "/" + eArrivalDate.getFullYear();
    var eArrivalDay = eArrivalDate.getDate();
    var tArrivalDate = createDate(eArrivalDateMonthYear, eArrivalDay);

    //validate the arrival date
    var isValidDate = validDate(form.hdnArrDt.value);
    var fullDate = form.hdnArrDt.value;
    var dateDiff = compareDates(fullDate, tArrivalDate);

    if (isValidDate == -1) {
        alert("Not a valid date.\nThe search date exceeds the number of days in that month!");
        return false;
    }
    if (dateDiff == 1) {
        alert("Search date must be greater than or equal to " + tArrivalDate);
        return false;
    }

    // todo - put this code seperately, if possible | KJ
    //if ((typeof( form.ddlEquipment ) != 'undefined') && (form.ddlEquipment.value == ""))
    //{			
    //alert("Please select an equipment.");
    //form.ddlEquipment.focus();
    //return false;		
    //}

    if ((typeof (form._ctl0_ContentPlaceHolder1_ddlEquipment) != 'undefined') && (form._ctl0_ContentPlaceHolder1_ddlEquipment.value != "")) {
        if (form._ctl0_ContentPlaceHolder1_ddlEquipment.options[form._ctl0_ContentPlaceHolder1_ddlEquipment.selectedIndex].value == "-1") {
            alert("Please select equipment.");
            form._ctl0_ContentPlaceHolder1_ddlEquipment.focus();
            return false;
        }
    }

    if ((typeof (form._ctl0_ContentPlaceHolder1_ddlPeople) != 'undefined') && (form._ctl0_ContentPlaceHolder1_ddlPeople.value != "")) {
        if (form._ctl0_ContentPlaceHolder1_ddlPeople.options[form._ctl0_ContentPlaceHolder1_ddlPeople.selectedIndex].value == "-1") {
            alert("Please select number of people.");
            form._ctl0_ContentPlaceHolder1_ddlPeople.focus();
            return false;
        }
    }
    //see if the date is greater than the last checkin date
    var lastBookingDate = new Date(g_lastBookingDate);
    var lastBookingDateMonthYear = lastBookingDate.getMonth() + 1;
    lastBookingDateMonthYear = lastBookingDateMonthYear + "/" + lastBookingDate.getFullYear();
    var lastBookingDay = lastBookingDate.getDate();
    var tlastBookingDate = createDate(lastBookingDateMonthYear, lastBookingDay);

    var AllCheckedLastBookingDate;

    //if (g_CurrHour < g_InvOpenHour)
    //{
    //	AllCheckedLastBookingDate = g_LastBookingDateMinusOne;		
    //}
    //else
    //{
    AllCheckedLastBookingDate = tlastBookingDate;
    //}

    dateDiff = compareDates(fullDate, tlastBookingDate);
    if (dateDiff == -1) {
        alert("The arrival date cannot be greater than " + AllCheckedLastBookingDate);
        return false;
    }
    /***************************************************************************************
    if (dateDiff == 0)
    {
    if (g_CurrHour < g_InvOpenHour)
    {
    alert("The arrival date cannot be greater than " + AllCheckedLastBookingDate);
    return false;				
    }
    }
    ***************************************************************************************/

    /////////////////////////////////////////////////////////////////////////////
    /// SPECIAL CHECK FOR MN SP 
    /// AKSHAY - 11/22/2006
    /////////////////////////////////////////////////////////////////////////////
    if ((typeof (form._ctl0_ContentPlaceHolder1_ddlNight) != 'undefined') && (form._ctl0_ContentPlaceHolder1_ddlNight.value != "")) {
        if (parseInt(form._ctl0_ContentPlaceHolder1_ddlNight.options[form._ctl0_ContentPlaceHolder1_ddlNight.selectedIndex].value) > 15) {
            alert("Cannot select more than 15 nights reservation.");
            //form.ddlNight.focus();
            return false;
        }
    }
    /////////////////////////////////////////////////////////////////////////////

    if (typeof (isQuickCheck) == 'undefined') {
        if (CheckCampSeasonValid(form, fullDate)) {
            return true;
        }
        else {
            return false;
        }
    }
    return true;
} //end basicCheckDates

function CheckCampSeasonValid(form, arrDate) {
    // Check if The selected Arrival Dates in some camp season and get the season Id //
    //debugger;
    var iArrivalSeasonNumber = -1;
    var AlternateEarliestCampSeason = "";
    for (var i = 0; i < iTotalSeason; i++) {
        var dtCampSeasonST = eval("dtSeasonStart_" + i);
        var dtCampSeasonEND = eval("dtSeasonEnd_" + i);

        var iStartCompare = compareDates(arrDate, dtCampSeasonST);
        var iEndCompare = compareDates(arrDate, dtCampSeasonEND);

        if (AlternateEarliestCampSeason == "") {
            if (compareDates(tempDate, dtCampSeasonST) == 1) {
                AlternateEarliestCampSeason = dtCampSeasonST;
            }
        }
        if ((iStartCompare != 1) && (iEndCompare != -1)) {
            iArrivalSeasonNumber = i; // Got the Season Matching //
        }
    }

    // Check to see if an Arrival date was found in One of the seasons // 
    if (iArrivalSeasonNumber == -1) // No camp season found//
    {
        var msg = "";
        msg = "There are no camp seasons available for reservation for arrival on " + arrDate + " .";
        if (AlternateEarliestCampSeason != "") {
            msg = msg + "\n Earliest arrival possible on or after selected date is " + AlternateEarliestCampSeason + " .";
        }

        //msg = msg + "\n Please change the search.";
        
        alert(msg)
        //alert("There are no camp seasons available for reservation for arrival on " + arrDate + ".\n Earliest arrival possible on or after selected date is " + AlternateEarliestCampSeason + ".\nSee Season information below for details.");
        return false;
    }

    /////////////////////////////////////////////////////////////////////////
    // Check to see if the number of nights are valid in this season //	
    /////////////////////////////////////////////////////////////////////////
    //-Akshay : Commented for now -//
    /*
    var iNightSelected = form.ddlNight.options[form.ddlNight.selectedIndex].value;	
    if ( iNightSelected > eval( "iMaxStay_" + iArrivalSeasonNumber ) )
    {
    alert("Maximum no. of nights of stay between " + eval("dtSeasonStart_" + iArrivalSeasonNumber)  + " and " + eval("dtSeasonEnd_" + iArrivalSeasonNumber) + " is " + eval( "iMaxStay_" + iArrivalSeasonNumber ) + ".\nSee Season Info Below for details.");
    return false;	
    }
	
	var iPplSelected = form.ddlPeople.options[form.ddlPeople.selectedIndex].value;	
    if ( iPplSelected > eval( "iMaxCap_" + iArrivalSeasonNumber ) )
    {
    alert("Maximum capacity between " + eval("dtSeasonStart_" + iArrivalSeasonNumber)  + " and " + eval("dtSeasonEnd_" + iArrivalSeasonNumber) + " is " + eval( "iMaxCap_" + iArrivalSeasonNumber ) + ".\nSee season information Below for details.");
    return false;	
    }	
	
	*/
    /////////////////////////////////////////////////////////////////////////

    return true;
}
function checkDates(form) {
    var eArrivalDate = new Date(g_earliestArrivalDate);
    var eArrivalDateMonthYear = eArrivalDate.getMonth() + 1;
    eArrivalDateMonthYear = eArrivalDateMonthYear + "/" + eArrivalDate.getFullYear();
    var eArrivalDay = eArrivalDate.getDate();
    var tlastBookingDate = g_lastBookingDate;
    var tArrivalDate = createDate(eArrivalDateMonthYear, eArrivalDay);
    var AllCheckedLastBookingDate;

    //if (g_CurrHour < g_InvOpenHour)
    //{
    //	AllCheckedLastBookingDate = g_LastBookingDateMinusOne;
    //}
    //else
    //{
    AllCheckedLastBookingDate = g_lastBookingDate;
    //}

    if (form._ctl0_ContentPlaceHolder1_rbArrivalDate.checked) {
        //validate the arrival date
        var isValidDate = checkDateExists(form._ctl0_ContentPlaceHolder1_ddlArrivalDateMonthYear.value, form._ctl0_ContentPlaceHolder1_ddlArrivalDateDay.value);
        var fullDate = createDate(form._ctl0_ContentPlaceHolder1_ddlArrivalDateMonthYear.value, form._ctl0_ContentPlaceHolder1_ddlArrivalDateDay.value);
        var dateDiff = compareDates(fullDate, tArrivalDate);
        if (isValidDate == -1) {
            alert("The arrival date of the date range exceeds the number of days in that month!");
            return false;
        }
        if (dateDiff == 1) {
            alert("Search date must be greater than or equal to " + tArrivalDate);
            return false;
        }

        //see if the date is greater than the last checkin date
        var lastBookingDate = new Date(g_lastBookingDate);

        var lastBookingDateMonthYear = lastBookingDate.getMonth() + 1;
        lastBookingDateMonthYear = lastBookingDateMonthYear + "/" + lastBookingDate.getFullYear();
        var lastBookingDay = lastBookingDate.getDate();
        var tlastBookingDate = createDate(lastBookingDateMonthYear, lastBookingDay);
        dateDiff = compareDates(fullDate, tlastBookingDate);

        if (dateDiff == -1) {
            alert("The arrival date cannot be greater than " + AllCheckedLastBookingDate);
            return false;
        }
        if (dateDiff == 0) {
            if (g_CurrHour < g_InvOpenHour) {
                alert("The arrival date cannot be greater than " + AllCheckedLastBookingDate);
                return false;
            }
        }

    } //end form.rbArrivalDate.checked

    if (form._ctl0_ContentPlaceHolder1_rbDateRange.checked) {
        //validate the start date
        var isValidDate = checkDateExists(form.d_ctl0_ContentPlaceHolder1_dlDateRangeBeginMonthYear.value, form._ctl0_ContentPlaceHolder1_ddlDateRangeBeginDay.value);
        if (isValidDate == -1) {
            alert("The beginning date of the date range exceeds the number of days in that month!");
            return false;
        }
        //validate the end date
        var isValidDate = checkDateExists(form.ddlDateRangeEndMonthYear.value, form.ddlDateRangeEndDay.value);
        if (isValidDate == -1) {
            alert("The end date of the date range exceeds the number of days in that month!");
            return false;
        }
        //make sure the start date is less than the end date
        var beginFullDate = createDate(form.ddlDateRangeBeginMonthYear.value, form.ddlDateRangeBeginDay.value);
        var endFullDate = createDate(form.ddlDateRangeEndMonthYear.value, form.ddlDateRangeEndDay.value);
        var dateDiff = compareDates(beginFullDate, endFullDate);
        if (dateDiff == -1) {
            alert("End date must be greater than the beginning date when doing a date range search.");
            return false;
        }
        //make sure the start date is greater than todays date, no need to check
        //for end date since end date must be greater than start date.
        dateDiff = compareDates(beginFullDate, tArrivalDate);
        if (dateDiff == 1) {
            alert("Start date range must be greater than or equal to " + tArrivalDate);
            return false;
        }


        //make sure the max search is for MaxSearchDateRange days
        var daysDiff = getDaysDiff(beginFullDate, endFullDate);
        if (daysDiff > MaxSearchDateRange) {
            alert("You may only search within a " + MaxSearchDateRange + " day time block.");
            return false;
        }

        //see if the end date is greater than the last available date
        var lastBookingDate = new Date(g_lastBookingDate);
        var lastBookingDateMonthYear = lastBookingDate.getMonth() + 1;
        lastBookingDateMonthYear = lastBookingDateMonthYear + "/" + lastBookingDate.getFullYear();
        var lastBookingDay = lastBookingDate.getDate();
        var tlastBookingDate = createDate(lastBookingDateMonthYear, lastBookingDay);

        dateDiff = compareDates(beginFullDate, tlastBookingDate);
        if (dateDiff == -1) {
            alert("Start date range cannot be greater than " + AllCheckedLastBookingDate);
            return false;
        }
        if (dateDiff == 0) {
            if (g_CurrHour < g_InvOpenHour) {
                alert("Start date range cannot be greater than " + AllCheckedLastBookingDate);
                return false;
            }
        }

        dateDiff = compareDates(endFullDate, tlastBookingDate);
        if (dateDiff == -1) {
            alert("End date range cannot be greater than " + AllCheckedLastBookingDate);
            return false;
        }
        if (dateDiff == 0) {
            if (g_CurrHour < g_InvOpenHour) {
                alert("End date range cannot be greater than " + AllCheckedLastBookingDate);
                return false;
            }
        }

    } //end form.rbDateRange.checked
    //check to see if a park has been selected
    if (form._ctl0_ContentPlaceHolder1_lbParkSelect.selectedIndex <= 0 && form._ctl0_ContentPlaceHolder1_rbSearchParks.checked) {
        alert("Please select a park");
        form.lbParkSelect.focus();
        return false;
    }
    alert(form._ctl0_ContentPlaceHolder1_ddlEquipment.options[form._ctl0_ContentPlaceHolder1_ddlEquipment.selectedIndex].value);
    //check to see if equipment has been selected
    if ((form._ctl0_ContentPlaceHolder1_ddlEquipment.selectedIndex <= 0) || (form._ctl0_ContentPlaceHolder1_ddlEquipment.options[form._ctl0_ContentPlaceHolder1_ddlEquipment.selectedIndex].value == "-1")) {
        alert("Please select equipment");
        form._ctl0_ContentPlaceHolder1_ddlEquipment.focus();
        return false;
    }
    // Check for Confirmation from user // 
    return ConfirmSelection();

} //end checkdates

//function gets the number of days between date 1 and date 2
function getDaysDiff(date1, date2) {
    var date1Month = date1.substring(0, date1.indexOf("/"));
    var date1Day = date1.substring(date1.indexOf("/") + 1, date1.lastIndexOf("/"));
    var date1Year = date1.substring(date1.lastIndexOf("/") + 1, date1.length);
    var date2Month = date2.substring(0, date2.indexOf("/"));
    var date2Day = date2.substring(date2.indexOf("/") + 1, date2.lastIndexOf("/"));
    var date2Year = date2.substring(date2.lastIndexOf("/") + 1, date2.length);

    var beginDateObj = new Date(date1Year, date1Month, date1Day);
    var endDateObj = new Date(date2Year, date2Month, date2Day);
    var diff = new Date();

    diff.setTime(Math.abs(beginDateObj.getTime() - endDateObj.getTime()));

    var timeDiff = diff.getTime();
    var days = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
    return days;


}
//compares date 1 to date 2 in the format mm/dd/yyyy.  If Date 1 is greater than date 2 it
//returns a -1 if date 1 is less than date 2 it returns a 1 if they are equal a 0 is returned

function compareDates(date1, date2) {
    var date1Month = date1.substring(0, date1.indexOf("/"));
    var date1Day = date1.substring(date1.indexOf("/") + 1, date1.lastIndexOf("/"));
    var date1Year = date1.substring(date1.lastIndexOf("/") + 1, date1.length);
    var date2Month = date2.substring(0, date2.indexOf("/"));
    var date2Day = date2.substring(date2.indexOf("/") + 1, date2.lastIndexOf("/"));
    var date2Year = date2.substring(date2.lastIndexOf("/") + 1, date2.length);

    if (parseInt(date1Year) > parseInt(date2Year)) { return -1; }
    if (parseInt(date1Year) < parseInt(date2Year)) { return 1; }
    if (parseInt(date1Year) == parseInt(date2Year)) {
        if (parseInt(date1Month) > parseInt(date2Month)) { return -1; }
        if (parseInt(date1Month) < parseInt(date2Month)) { return 1; }
        if (parseInt(date1Month) == parseInt(date2Month)) {
            if (parseInt(date1Day) > parseInt(date2Day)) { return -1; }
            if (parseInt(date1Day) < parseInt(date2Day)) { return 1; }
            if (parseInt(date1Day) == parseInt(date2Day)) { return 0; }
        }
    }

} //end compareDates

//check the validity of the date
function checkDateExists(dateMonthYear, dateDay) {
    //build date
    var fullDate = createDate(dateMonthYear, dateDay);
    //see if date is valid
    var isDateValid = validDate(fullDate);
    return isDateValid;

}


/*
this function will check to see if the date selected is 
actually a valid date.  this function only checks to see if the
day falls within the month
*/
function validDate(isValidDate) {
    var dateMonth = isValidDate.substring(0, isValidDate.indexOf("/"));
    var dateDay = isValidDate.substring(isValidDate.indexOf("/") + 1, isValidDate.lastIndexOf("/"));
    var dateYear = isValidDate.substring(isValidDate.lastIndexOf("/") + 1, isValidDate.length);
    var intDays = 0;

    if (dateMonth == 1 || dateMonth == 3 || dateMonth == 5 || dateMonth == 7 || dateMonth == 8 || dateMonth == 10 || dateMonth == 12) {
        intDays = 31;
    }

    if (dateMonth == 4 || dateMonth == 6 || dateMonth == 9 || dateMonth == 11) {
        intDays = 30;
    }

    if (dateMonth == 2) {
        var isLeapYear = checkYear(dateYear);
        //if the value of isLeapYear is 1 then it is a leap year
        if (isLeapYear == 1) {
            intDays = 29;
            //no leap year
        } else {
            intDays = 28;
        }
    }

    if (dateDay > intDays) {
        //not valid day in the month
        return -1;
    } else {
        //valid day
        return 0;
    }

}

/*this function takes two strings and creates a date*/
function createDate(monthYear, dayOfMonth) {
    var dateMonth = monthYear.substring(0, monthYear.indexOf("/"));
    var dateDay = dayOfMonth;
    var dateYear = monthYear.substring(monthYear.indexOf("/") + 1, monthYear.length);
    var retDate = dateMonth + "/" + dateDay + "/" + dateYear;
    return retDate;
}
function createDate1(dateYear, dateMonth, dateDay) {

    var retDate = dateMonth + "/" + dateDay + "/" + dateYear;
    return retDate;
}
function createDate2() {
    //		var tempMonth = document.Form1.DropDownFromMonth[document.Form1.DropDownFromMonth.selectedIndex].value;
    //		var tempDay = document.Form1.DropDownFromDay[document.Form1.DropDownFromDay.selectedIndex].value;
    //		var tempYear = document.Form1.DropDownFromYear[document.Form1.DropDownFromYear.selectedIndex].value;

    var tempMonth = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromMonth[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromMonth.selectedIndex].value;
    var tempDay = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromDay[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromDay.selectedIndex].value;
    var tempYear = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromYear[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromYear.selectedIndex].value;

    return createDate1(tempYear, tempMonth, tempDay)
}

function checkYear(year) {
    return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}

function CheckDatesOnly(form) {
}

/*   validateCCNumber() - checks that a credit card number is a valid credit
*                        card number, and that the card is not expired.
*
*   Parameters: cardNumberField - a text field where cc number has been swiped or entered manually
*               expMonthField - a text field where the exp month has been entered
*               expYearField - a text field where the exp year has been entered
*
*   Returns: boolean value - true for valid card, false for invalid card
*
*   Comments: Visa card numbers begin with 4, MasterCard with 5, Discover with 6.
*             MasterCard and Discover numbers must be 16 digits in length. Visa cards
*             must be either 13 or 16 digits in length. 
*/

function validateCreditCard(cardNumberField, expMonthField, expYearField, CVVNumber, AccountHolderName, Address, City, Zip,ddlCountry) {


    var strCountry = ddlCountry.value;
    
    if (AccountHolderName.value == '') {
        alert("Please specify valid account holder name");
        return false;
    }
    //Commented as per akshay we will allowe special characters.
//    else {
//        var data = AccountHolderName.value;
//        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_0123456789";
//        for (var i = 0; i < data.length; i++) {
//            if (iChars.indexOf(data.charAt(i)) != -1) {
//                alert("Account Holder Name should be alphabetic");
//                return false;
//            }
//        }
//    }
    if (Address.value == '') {
        alert("Please specify valid address");
        return false;
    }
//    else {
//        var data = Address.value;
//        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_";
//        for (var i = 0; i < data.length; i++) {
//            if (iChars.indexOf(data.charAt(i)) != -1) {
//                alert("Address has special characters. \nThese are not allowed.");
//                return false;
//            }
//        }
//    }
    if (City.value == '') {
        alert("Please specify valid City");
        return false;
    }
//    else {
//        var data = City.value;
//        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_0123456789";
//        for (var i = 0; i < data.length; i++) {
//            if (iChars.indexOf(data.charAt(i)) != -1) {
//                alert("City should be alphabetic.");
//                return false;
//            }
//        }
    //    }

    if (strCountry == "US" || strCountry == "CA") {
        if (ValidateZip(Zip, strCountry) == false) {
            return false;
        }
    }
    
    
    /*if (Zip.value == '') {
        alert("Please specify valid zip");
        return false;
    }
    else {
       
        
        var re5digit = /^\d{5}$/;
        if (Zip.value.search(re5digit) == -1) {
            alert("Please enter valid 5 digit numbers for zip");
            return false;
        }
    }*/


    var cardType = document.getElementById("_ctl0_ContentPlaceHolder1_ddlCardType").value;
    
    cardNumber = cardNumberField.value;
    expYear = expYearField.value;
    expMonth = expMonthField.value;

    if (((cardNumber.charAt(0) == '4') && (cardType != 'V')) || ((cardNumber.charAt(0) == '5') && (cardType != 'M')) || (cardType == 'X')) {
        alert("Invalid card type specified.");
        return false;
    }
    
    firstChar = cardNumber.charAt(0);
    if (!(firstChar == '4' || firstChar == '5' || firstChar == '3')) {
        alert("Please specify a valid card number.");
        cardNumberField.focus();
        return false;
    }


    if (cardNumber.charAt(0) == '4' && (!(cardNumber.length == 13 || cardNumber.length == 16))) {
        alert("Invalid card number specified.");

        ccStr = "";
        cardNumberField.value = "";
        expMonthField.value = "";
        expYearField.value = "";
        cardNumberField.focus();

        return false;
    }

    if ((cardNumber.charAt(0) == '5') && (cardNumber.length != 16)) { //|| cardNumber.charAt(0) == '6'
        alert("Invalid card number specified.");

        ccStr = "";
        cardNumberField.value = "";
        expMonthField.value = "";
        expYearField.value = "";
        cardNumberField.focus();

        return false;
    }

    
    if (!luhnCheck(cardNumber)) {
        //return true;////////////////////////For testing only
        alert("Please specify a valid card number.");

        ccStr = "";
        cardNumberField.value = "";
        expMonthField.value = "";
        expYearField.value = "";
        cardNumberField.focus();

        return false;
    }

    // Check the credit card expiration date

    today = new Date();

    if (expYear.length <= 2) {
        if (expYear > 96) expYear = "19" + expYear;
        else if (expYear < 21) expYear = "20" + expYear;
    }

    if ((expYear.length != 4) || (expYear < today.getYear())) {
        alert("Please specify a valid expiration year.");

        expYearField.value = "";
        expYearField.focus();

        return false;
    }

    // Year is okay. Check the month.

    else {

        //	alert(expMonth);

        if (expMonth.length != 2) {
            alert("Please specify a valid expiration month.");

            expMonthField.value = "";
            expMonthField.focus();

            return false;
        }
        else if (!(expMonth.charAt(0) == '0' || expMonth.charAt(0) == '1')) {
            alert("Please specify a valid expiration month.");

            expMonthField.value = "";
            expMonthField.focus();

            return false;

        }
        else if (expMonth.charAt(0) == '0') {
            if (expMonth.charAt(1) < '1' || expMonth.charAt(1) > '9') {
                alert("Please specify a valid expiration month.");
                expMonthField.value = "";
                expMonthField.focus();
                return false;
            }
        }
        else if (expMonth.charAt(0) == '1') {
            if (expMonth.charAt(1) < '0' || expMonth.charAt(1) > '2') {
                alert("Please specify a valid expiration month.");
                expMonthField.value = "";
                expMonthField.focus();
                return false;
            }
        }
        else if (expMonth.charAt(0) == '0') {
            expMonth = expMonth.charAt(1);
        }

        if (expYear == today.getYear() && expMonth <= (today.getMonth())) {//+ 1

            alert("Please specify a valid expiration month.");

            expMonthField.value = "";
            expMonthField.focus();

            return false;
        }
    }

    if (CVVNumber.value == '') {
        alert("Please specify valid CVV number");
        return false;
    }
    /*
    else 
    {
        var re3digit = /^\d{4}$/;
        if (CVVNumber.value.search(re3digit) == -1) 
        {
            alert("Please enter valid 4 digit numbers for CVVNumber");
            return false;
        }
    }
    */
    return true;
}



/*   luhnCheck() - checks that a credit card number is a valid credit
*                 card number using the Luhn algorithm.
*
*   Parameters: String cardNumber - a credit card number
*               
*   Returns: boolean value - true for valid number, false for invalid number
*
*   Comments: Called by validateCCNumber()
*/

function luhnCheck(s) {

    var i, n, c, r, t;

    // First, reverse the string and remove any non-numeric characters.

    r = "";
    for (i = 0; i < s.length; i++) {
        c = parseInt(s.charAt(i), 10);
        if (c >= 0 && c <= 9)
            r = c + r;
    }

    // Check for a bad string.

    if (r.length <= 1)
        return false;

    // Now run through each single digit to create a new string. Even digits
    // are multiplied by two, odd digits are left alone.

    t = "";
    for (i = 0; i < r.length; i++) {
        c = parseInt(r.charAt(i), 10);
        if (i % 2 != 0)
            c *= 2;
        t = t + c;
    }

    // Finally, add up all the single digits in this string.

    n = 0;
    for (i = 0; i < t.length; i++) {
        c = parseInt(t.charAt(i), 10);
        n = n + c;
    }

    // If the resulting sum is an even multiple of ten (but not zero), the
    // card number is good.

    if (n != 0 && n % 10 == 0)
        return true;
    else
        return false;
}

function ConfirmSelection() {
    //debugger;
    try {
        //var ControlIdPrefix = "myForm._ctl0_ContentPlaceHolder1_" ;  
        var myForm = document.forms[0];

        var strConfirm = new String();
        //ctrl = ControlIdPrefix + "ddlCampground";

        var sCamp = myForm._ctl0_ContentPlaceHolder1_ddlCampground.options[myForm._ctl0_ContentPlaceHolder1_ddlCampground.selectedIndex].text;
        var sArrive = myForm.hdnArrDt.value;
        var arriveDay = getDayNameOfWeek(new Date(sArrive));
        sArrive = arriveDay + ", " + sArrive;
        var sEquip = "N/A";
        var sNite = "N/A";
        var sPpl = "N/A";

        var sElect = "";
        var sPet = "";
        var sADA = "";
        var sWater = "";
        var sSewer = "";

        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlEquipment) != "undefined") sEquip = myForm._ctl0_ContentPlaceHolder1_ddlEquipment.options[myForm._ctl0_ContentPlaceHolder1_ddlEquipment.selectedIndex].text;
        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlNight) != "undefined") sNite = myForm._ctl0_ContentPlaceHolder1_ddlNight.options[myForm._ctl0_ContentPlaceHolder1_ddlNight.selectedIndex].text;
        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlPeople) != "undefined") sPpl = myForm._ctl0_ContentPlaceHolder1_ddlPeople.options[myForm._ctl0_ContentPlaceHolder1_ddlPeople.selectedIndex].text;

        //check later how to do it
        //    if (typeof(myForm._ctl0_ContentPlaceHolder1_chkElecFlag)!= "undefined") sElect = PrefData(document.getElementsByName("_ctl0_ContentPlaceHolder1_chkElecFlag"), "_ctl0_ContentPlaceHolder1_chkElecFlag");
        //    if (typeof(myForm._ctl0_ContentPlaceHolder1_chkPetFlag)!= "undefined") sPet   = PrefData(document.getElementsByName("_ctl0_ContentPlaceHolder1_chkPetFlag"),  "_ctl0_ContentPlaceHolder1_chkPetFlag");
        //    if (typeof(myForm._ctl0_ContentPlaceHolder1_chkADAFlag)!= "undefined") sADA   = PrefData(document.getElementsByName("_ctl0_ContentPlaceHolder1_chkADAFlag"),  "_ctl0_ContentPlaceHolder1_chkADAFlag");
        //    if (typeof(myForm._ctl0_ContentPlaceHolder1_chkWaterFlag)!= "undefined") sWater = PrefData(document.getElementsByName("_ctl0_ContentPlaceHolder1_chkWaterFlag"),  "_ctl0_ContentPlaceHolder1_chkWaterFlag");
        //    if (typeof(myForm._ctl0_ContentPlaceHolder1_chkSewerFlag)!= "undefined") sSewer = PrefData(document.getElementsByName("_ctl0_ContentPlaceHolder1_chkSewerFlag"),  "_ctl0_ContentPlaceHolder1_chkSewerFlag");


        sElect = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkElecFlag"), "_ctl0_ContentPlaceHolder1_chkElecFlag");
        sPet = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkPetFlag"), "_ctl0_ContentPlaceHolder1_chkPetFlag");
        sADA = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkADAFlag"), "_ctl0_ContentPlaceHolder1_chkADAFlag");
        sWater = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkWaterFlag"), "_ctl0_ContentPlaceHolder1_chkWaterFlag");
        sSewer = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkSewerFlag"), "_ctl0_ContentPlaceHolder1_chkSewerFlag");



        var strConfirm = "You have selected the following arrival date and site preferences.\nTo confirm, select OK.  To change search, select Cancel.\n\n";
        //strConfirm += "- Campground: "+ sCamp+ ".\n";
        //strConfirm += "- Equipment: "+ sEquip + ".\n";
        strConfirm += "- Arrival Date: " + sArrive + ".\n";
        strConfirm += "- " + "Number of Nights: " + sNite + ".\n\n";
        //+ ".\n- #Ppl: " + sPpl + ".\n\n" ;

        strConfirm += "- Preferences:\n";
        if (sElect != "") strConfirm += "  Electric: " + sElect + ".\n";
        if (sPet != "") strConfirm += "  Pet: " + sPet + ".\n";
        if (sWater != "") strConfirm += "  Water: " + sWater + ".\n";
        if (sSewer != "") strConfirm += "  Sewer: " + sSewer + ".\n";
        if (sADA != "") strConfirm += "  ADA: " + sADA + ".\n";

        return confirm(strConfirm);
    }
    catch (e) {
        alert(e);
    }
}

function PrefData(myArr, myName) {
    //debugger;
    var arrPREF = myArr;
    if (typeof (myArr) != 'undefined') {
        arrPREF = myArr;
        if (arrPREF.length > 0) {
            for (var i = 0; i <= arrPREF.length; i++) {
                if (arrPREF[i].checked) {
                    if (arrPREF[i].id == myName + "_0") return "Yes";
                    if (arrPREF[i].id == myName + "_1") return "No";
                    if (arrPREF[i].id == myName + "_2") return "No Preference";
                }
            }
        }
        else {
            return "";
        }
    }
    else {
        return "";
    }
}
function getDayNameOfWeek(sArrivalDate) {
    var iDayofweek = sArrivalDate.getDay();

    var sDayofweek = new String();
    switch (iDayofweek) {
        case 0: { sDayofweek = "Sunday"; break; }
        case 1: { sDayofweek = "Monday"; break; }
        case 2: { sDayofweek = "Tuesday"; break; }
        case 3: { sDayofweek = "Wednesday"; break; }
        case 4: { sDayofweek = "Thursday"; break; }
        case 5: { sDayofweek = "Friday"; break; }
        case 6: { sDayofweek = "Saturday"; break; }
    }
    return sDayofweek;
}

function W_btnNext_onClick() {
    ///var tempDate	  = document.Form1.ddlArrivalDates.options[document.Form1.ddlArrivalDates.selectedIndex].value;
    var tempMonth = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromMonth[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromMonth.selectedIndex].value;
    var tempDay = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromDay[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromDay.selectedIndex].value;
    var tempYear = document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromYear[document.forms[0]._ctl0_ContentPlaceHolder1_DropDownFromYear.selectedIndex].value;

    var tempNumNights = 1;

    var strMsg = "The following is your selection:\n\n";
    strMsg += "Arrival Date: " + tempMonth + "/" + tempDay + "/" + tempYear;
    strMsg += "\nNum Nights:  " + tempNumNights;
    strMsg += "\n\n Click Ok to continue.";

    //if (confirm(strMsg))
    //{
    document.forms[0].hdnArrDt.value = tempMonth + "/" + tempDay + "/" + tempYear;
    document.forms[0].hdnNights.value = tempNumNights;
    var myStatus = false;
    if (checkSearchCriteria(basicCheckDates(document.forms[0]))) {
        if (ConfirmSelection()) {
            myStatus = true;
        }
    }
    if (!myStatus) {
        checkSearchCriteria(false);
        return false;
    }
    else {
        return true;
    }
}

function FixWindowHeight() {
    //debugger;
    
    var windowHeight = window.screen.height;
    var PageHeight ;
    var agt = navigator.userAgent.toLowerCase();
    if (agt.indexOf("firefox") != -1) {

        PageHeight = windowHeight - 97 - 80 - 200;
        document.getElementById("tblContent").style.height = PageHeight + "px";
    }
    else {
        PageHeight = windowHeight - 97 - 80 - 211;
        document.getElementById("tblContent").style.height = PageHeight;
    }
    //document.getElementById("tblContent").height = PageHeight;





}

function ValidateZip(Zip, strCountry) {
    //debugger;
    if (Zip.value == '') {
        alert("Please specify valid zip");
        return false;
    }
    else {

        var regZip;
        if (strCountry == "US") {
            //regZip = /([0-9]{5}(-[0-9]{4})?)|([A-Z][0-9][A-Z] [0-9][A-Z][0-9])|([A-Z]([0-9]|[0-9]{2}|[A-Z][0-9]|[A-Z][0-9]{2}|[0-9][A-Z]|[A-Z][0-9][A-Z]) [0-9][A-Z]{2}|GIR 0AA)|((ACT|NSW|NT|QLD|SA|TAS|VIC|WA)( |  )[0-9]{4})/;

            regZip = /^[0-9]{5}$/
        }
        else if (strCountry == "CA") {
            regZip = /^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$/;
        }

        if (Zip.value.search(regZip) == -1) {
            alert("Please enter valid zip for the selected country.");
            return false;
        }

        return true;


    }
} 