﻿///////////////////////////////////////////////
// VALIDATE ROUTINES FOR SEARCH FORMS 
///////////////////////////////////////////////

function validateairport() {
    var airportid = $('.SelectedAirportCode').val();
    if (airportid.length == 0) {
        // return false to stop form submit
        return false;
    }
    return true;
}

function validatearrivedate() {
    var dropdate = $('.arrival-date').val();
    if (!isValidDate(dropdate, "mm/dd/yyyy")) {
        return false;
    }
    return true;
}

function validatedepartdate() {
    var pickdate = $('.depart-date').val();
    if (!isValidDate(pickdate, "mm/dd/yyyy")) {
        return false;
    }
    return true;
}

function validadate() {

    // enforce date later than sysdate
   var sysDate = new Date(); 
   var effDateChar = getFormatDate($('.arrival-date').val(), $('.ArrivalTime').val()); // EFFECTIVE_DATE

   // compare the 2 dates 
   if (effDateChar < sysDate) {
        return false; 
   } 
   return true; 
}

function getFormatDate(edate, etime) {
    var cal = new Array(); 
    cal[1] = "January"; 
    cal[2] = "February"; 
    cal[3]  = "March"; 
    cal[4]  = "April"; 
    cal[5]  = "May"; 
    cal[6]  = "June"; 
    cal[7]  = "July"; 
    cal[8]  = "August"; 
    cal[9]  = "September"; 
    cal[10]  = "October"; 
    cal[11]  = "November"; 
    cal[12]  = "December";

    var bufArray = edate.split("/"); 
    var effDateMonth = cal[bufArray[0]]; 
    var effDateDay = bufArray[1]; 
    var effDateYear = bufArray[2]; 
    var effDateDate = new Date(effDateMonth + " " + effDateDay + ", " + effDateYear + " " + etime);

    return effDateDate;

}

function validdates() {
        //check to see if the depart is greater or equal to the arrivaldate
        var dropdate = getFormatDate($('.arrival-date').val(), $('.ArrivalTime').val());
        var pickdate = getFormatDate($('.depart-date').val(), $('.DepartureTime').val());;

        if (dropdate >= pickdate)
        {
            return false;
        }
    return true;
}

function isValidDate(date_string, format) {

    var days = [0,31,28,31,30,31,30,31,31,30,31,30,31];
    var year, month, day, date_parts = null;
    var rtrn = false;
    var decisionTree = {
        'm/d/y':{
            're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{2}|\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm/dd/yy':{
            're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{2})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm/dd/yyyy':{
            're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'y/m/d':{
            're':/^(\d{2}|\d{4})[./-](\d{1,2})[./-](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        },
        'yy/mm/dd':{
            're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        },
        'yyyy/mm/dd':{
            're':/^(\d{4})[./-](\d{1,2})[./-](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        }
    };
    var test = decisionTree[format];
    if (test) {
        date_parts = date_string.match(test.re);
        if (date_parts) {
            year = date_parts[test.year];
            month = date_parts[test.month];
            day = date_parts[test.day];

            test = (month == 2 && 
                    isLeapYear() && 
                    29 || 
                    days[month] || 0);

            rtrn = 1 <= day && day <= test;
        }
    }

    function isLeapYear() {
        return (year % 4 != 0 ? false : 
            ( year % 100 != 0? true: 
            ( year % 1000 != 0? false : true)));
    }
    return rtrn;
}//eof isValidDate

