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) {

    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 an 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.\nFor reservations longer than 15 nights, call 1-800-447-2757 between 7 a.m. and 10 p.m. Central Time.");
            form._ctl0_ContentPlaceHolder1_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//
    {
        //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."  );
        alert("Reservations are not being taken for an arrival of " + arrDate + ".\n However, first-come/first-serve sites may be available, see Season information below for details. \n The next reservation season begins  " + AlternateEarliestCampSeason + ".");
        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.ddlEquipment.options[form.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 an equipment");
        form.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 myForm = document.forms[0];

    var tempMonth = myForm._ctl0_ContentPlaceHolder1_DropDownFromMonth.value;
    var tempDay = myForm._ctl0_ContentPlaceHolder1_DropDownFromDay.value;
    var tempYear = myForm._ctl0_ContentPlaceHolder1_DropDownFromYear.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 validateBoatInfo(BoatName, BoatNumber) {

    if (BoatName.value == '') {
        alert("Please specify Boat Name");
        return false;
    }
    if (BoatNumber.value == '') {
        alert("Please specify Boat Number");
        return false;
    }
    else {

        return true;



    }
    return true;

}
function CheckForAgreement() {

    cb = document.forms[0]._ctl0_ContentPlaceHolder1_cbAgreement;
    if (!cb.checked) {
        alert("Please make sure that you have read and understood the agreement. Please check the checkbox if you agree with this agreement.");

        cb.focus();

        return false;
    }

    return true;
}
function validateCreditCard(cardNumberField, expMonthField, expYearField, CVVNumber, AccountHolderName, Address, City, ddlCountry, Zip) {

    //debugger;
    
    gvGC = document.getElementById("_ctl0_ContentPlaceHolder1_Gridview1"); ;
    
    cb = document.forms[0]._ctl0_ContentPlaceHolder1_cbAgreement;
    if (!cb.checked) {
        alert("Please make sure that you have read and understood the agreement. Please check the checkbox if you agree with this agreement.");

        //cb.focus();

        return false;
    }


    if (AccountHolderName.value == '') {
        alert("Please specify valid account holder name");
        return false;
    }
    else {
        var data = AccountHolderName.value;
        //var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_0123456789";
        var iChars = "!@#$%^&*()+=\\\'`;/{}|\":<>?~_";
        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;
            }
        }


    }
    //alert(Zip.value);
    //alert(Zip.value == '');
    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 strCountry = ddlCountry.value;
        // alert(strCountry);
        //alert(Zip.value);
        //alert(strCountry);
        var regZip;
        if (strCountry == "USA") {
            regZip = /[0-9]{5}(-[0-9]{4})?/;
        }
        else if (strCountry == "CAN") {
            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;
        }

    }

    var cardType = document.getElementById("_ctl0_ContentPlaceHolder1_ddlCardType").value;

    cardNumber = cardNumberField.value;
    expYear = expYearField.value;
    expMonth = expMonthField.value;
    
    if (gvGC != null) {

        var sGC = ValidateGiftCard();
        
        var sGCMessage = sGC.split("||");
        
        var isGCValid = sGCMessage[0];
        var gcMsg = sGCMessage[1];
        var gcTotal = sGCMessage[2];

        if ((isGCValid == "F") && gcMsg != "") {
            alert(gcMsg);
            return false;
        }


        var ccTotal = document.getElementById("_ctl0_ContentPlaceHolder1_txtCCAmount").value;
        //Check the total amount needed for the shopping cart
        var dCartTotal = 0;
        if (document.getElementById("_ctl0_ContentPlaceHolder1_PanelMinDue") != null) {
            if (document.getElementById("_ctl0_ContentPlaceHolder1_RadiobuttonFull").checked == true) {
                dCartTotal = document.getElementById("_ctl0_ContentPlaceHolder1_hidCartTotal").value;
            }
            else {
                dCartTotal = document.getElementById("_ctl0_ContentPlaceHolder1_hidMinDue").value;
            }
        }
        else {

            dCartTotal = document.getElementById("_ctl0_ContentPlaceHolder1_hidCartTotal").value;
        }
        //&& isGCValid == "F"
        if (cardType == "X" && cardNumber == "" && CVVNumber.value == "" && Number(gcTotal) == 0) {
            alert("please enter atleast any one payment method");
            return false;
        }
        else {


            //Check amount
            if (Number(gcTotal) + Number(ccTotal) != Number(dCartTotal)) { //message

                alert("The payment amount entered does not match the shopping cart total.");
                return false;
            }
            else {

                //Gift card amount >0
                //GiftCard validations
                if (gcTotal > 0) {

                    if (isGCValid == "F") {
                        alert(gcMsg);
                        return false;
                    }

                }


                //ccamount >0 
                //credit card validations
                if (Number(ccTotal) > 0) {


                    firstChar = cardNumber.charAt(0);
                    if (!(firstChar == '4' || firstChar == '5' || firstChar == '6')) {
                        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 (((cardNumber.charAt(0) == '4') && (cardType != 'V')) || ((cardNumber.charAt(0) == '5') && (cardType != 'M')) || (cardType == 'X')) {
                        alert("Invalid card type specified.");
                        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{3}$/;
                        if (CVVNumber.value.search(re3digit) == -1) {
                            alert("Please enter valid 3 digit numbers for CVVNumber");
                            return false;
                        }
                    }
                }
            }
        }
    }
    else {

        firstChar = cardNumber.charAt(0);
        if (!(firstChar == '4' || firstChar == '5' || firstChar == '6')) {
            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 (((cardNumber.charAt(0) == '4') && (cardType != 'V')) || ((cardNumber.charAt(0) == '5') && (cardType != 'M')) || (cardType == 'X')) {
            alert("Invalid card type specified.");
            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{3}$/;
            if (CVVNumber.value.search(re3digit) == -1) {
                alert("Please enter valid 3 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() {
    try {
        var myForm = document.forms[0];

        var strConfirm = new String();

        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 sBoatDraft = "N/A";
        var sBoatLen = "N/A";
        var sBoatwidth = "N/A";
        var sPpl = "N/A";

        var sElect = "";
        var sPet = "";
        var sADA = "";
        var sWater = "";
        var sPull = "";
        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;
        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlBoatDraft) != "undefined") sBoatDraft = myForm._ctl0_ContentPlaceHolder1_ddlBoatDraft.options[myForm._ctl0_ContentPlaceHolder1_ddlBoatDraft.selectedIndex].text;
        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlBoatLen) != "undefined") sBoatLen = myForm._ctl0_ContentPlaceHolder1_ddlBoatLen.options[myForm._ctl0_ContentPlaceHolder1_ddlBoatLen.selectedIndex].text;
        if (typeof (myForm._ctl0_ContentPlaceHolder1_ddlBoatWidth) != "undefined") sBoatwidth = myForm._ctl0_ContentPlaceHolder1_ddlBoatWidth.options[myForm._ctl0_ContentPlaceHolder1_ddlBoatWidth.selectedIndex].text;

        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");
        sPull = PrefData(document.getElementsByName("_ctl0:ContentPlaceHolder1:chkPull"), "_ctl0_ContentPlaceHolder1_chkPull");
        //var strConfirm = "You have selected the following arrival date and site preferences.\nTo confirm, select OK.  To change search, select Cancel.\n\n";
        var strConfirm = "You have selected the following arrival date.\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";
        if (sPpl == "N/A") {
            strConfirm += "- " + "Boat Length: " + sBoatLen + ".\n\n";
            strConfirm += "- " + "Boat Draft: " + sBoatDraft + ".\n\n";
            strConfirm += "- " + "Boat Width: " + sBoatwidth + ".\n\n";
        }
        else {
            //strConfirm += "- Preferences:\n";
            strConfirm += "\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 Accessible: " + sADA + ".\n";
            if (sPull != "") strConfirm += "  Pull Thru: " + sPull + ".\n";
        }
        //if (sPull!="") strConfirm += "  Pull through: " + sPull+ ".\n";
        return confirm(strConfirm);
    }
    catch (e) {
        alert(e);
    }
}

function PrefData(myArr, myName) {
    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 ValidateGiftCard() {

    //debugger;

    var gvGC = document.getElementById("_ctl0_ContentPlaceHolder1_Gridview1");

    var rCount = gvGC.rows.length;

    var i = 1;
    var msg = "";
    var GCTotalAmount = 0;


    for (i; i < rCount - 1; i++) {
        //msg = "";
        var rowElement = gvGC.rows[i];
        var j = i + 1;
        var gc;
        //for (j; j < rowElement.cells.length; j++) {
        ctrlGCNo = "_ctl0_ContentPlaceHolder1_Gridview1__ctl" + j + "_txtGCNo";
        ctrlGCPin = "_ctl0_ContentPlaceHolder1_Gridview1__ctl" + j + "_txtGCPin";
        ctrlGCAmount = "_ctl0_ContentPlaceHolder1_Gridview1__ctl" + j + "_txtGCAmount";

        var GCNo = document.getElementById(ctrlGCNo).value;
        var GCPin = document.getElementById(ctrlGCPin).value;
        var GCAmount = document.getElementById(ctrlGCAmount).value;
        
        if (i == rCount - 2 && GCNo == "" && GCPin == "" && GCAmount == "") {
            msg = "";
        }
        else {

            //Check if the duplicate gift card entered
            if (GCNo == "") {

                msg = "Please enter Gift Card Number or pin";

            }
            else if (GCPin == "") {

                msg = "Please enter Gift Card Number or Pin";

            }
            else if (GCAmount == "") {

                msg = "Please enter Gift Card Amount";

            }
            else {
                //Validate Gift Card length and type

                if (rCount >= 4) {
                    k = j;
                    for (k; k < rCount - 1; k++) {
                        l = k + 1;
                        for (l; l <= rCount - 1; l++) {

                            if (document.getElementById("_ctl0:ContentPlaceHolder1:Gridview1:_ctl" + k + ":txtGCNo").value == document.getElementById("_ctl0:ContentPlaceHolder1:Gridview1:_ctl" + l + ":txtGCNo").value) {
                                msg = "Please enter different gift card";
                            }
                        }
                    }
                }

                var regGCNo = /^\d{10}$/;

                if (GCNo.length == 10) {
                    if (GCNo.search(regGCNo) == -1) {
                        msg = "Gift card number or pin is not valid."
                    }
                }
                else {
                    msg = "Gift card number or pin is not valid.";
                }

                var regGCPin = /^\d{4}$/;

                if (GCPin.length == 4) {
                    if (GCPin.search(regGCPin) == -1) {
                        msg = "Gift Card Number or pin is not valid."
                    }
                }
                else {
                    msg = "Gift card number or pin is not valid";
                }

                function test1(str) {
                    str = alltrim(str);
                    return /^[-+]?[0-9]+(\.[0-9]+)?$/.test(str);
                }

                var regGCAmount = /^[-+]?[0-9]+(\.[0-9]+)?$/;

                if (GCAmount.search(regGCAmount) == -1) {
                    msg = "Gift card Amount is not valid";
                }

                GCTotalAmount = Number(GCTotalAmount) + Number(document.getElementById(ctrlGCAmount).value);

            }
        }
    }

    if (GCTotalAmount > document.getElementById("_ctl0_ContentPlaceHolder1_hidCartTotal").value) {
        msg = "Payment amount is greater than required";
    }


    if (msg == "") {
        return "T||" + msg + "||" + GCTotalAmount;
    }
    else {
        //alert(msg);
        return "F||" + msg + "||" + GCTotalAmount;
    }




}
