/*
	ValidateDates.JS
	validates the flights search
*/
    var HOURS = 1000*60*60;
    function ValidateDates(frmSearch)
    {
        //if ( !ValidateDates(frmSearch) )  return false ;
        var elmItem1;
        var elmItem2;

        // get the start date field and work out if its 3 days or later
        elmItem1 = frmSearch.startDateD;
        elmItem2 = frmSearch.startDateMY;

        var startD8 = getValidDateObj(elmItem1.value,elmItem2.value);

        if(!isValidDate(startD8,"start")){
            elmItem1.focus();
                return false;
        }

        var isReturn;
        if (frmSearch.returnValue != null) { // For the main search form
            isReturn = frmSearch.returnValue.value == 'true';
        } else if (frmSearch.returnFlight != null) { // For the affiliate iframe
            isReturn = frmSearch.returnFlight[0];
        } else {
            isReturn = true;
        }
        if (isReturn) {
            
            elmItem1 = frmSearch.endDateD;
            elmItem2 = frmSearch.endDateMY;
    
            if(elmItem1 != null){
                var endD8 = getValidDateObj(elmItem1.value,elmItem2.value);
    
                if(!isValidDate(endD8,"end")){
                    elmItem1.focus();
                            return false;
                }
    
                if(startD8.getTime()+(HOURS*24)>endD8.getTime()){
                        alert("Please select a return date which is after the Departure Date.");
                        elmItem1.focus();
                            return false;       
                }
            }
        }
        
        return true ;
    }

    function isValidDate(d8,prefix){
        var minimumDateMillis = eval(prefix+"MinDateMillis");
        
        if(minimumDateMillis==null){
            //alert("null");
            var nowD8 = new Date();
            minimumDateMillis = nowD8.getTime()+(HOURS*72);//default to 3 days ahead
        }
        
        if(minimumDateMillis > d8.getTime() + (23*HOURS)){
            var valDate=new Date(minimumDateMillis);
            alert("Please select "+prefix+" date after "+getDateStringFromDate(valDate));
            return false;
        }
        
        var maximumDateMillis = eval(prefix+"MaxDateMillis");
        
        if(maximumDateMillis==null){
            //alert("null");
            var nowD8 = new Date();
            maximumDateMillis = nowD8.getTime()+(HOURS*24*365);//default to a year
        }
        
        if(maximumDateMillis < d8.getTime()){
            var valDate=new Date(maximumDateMillis);
            alert("Please select "+prefix+" date before "+getDateStringFromDate(valDate));
            return false;
        }       
        return true;
    }
    
    function getDateStringFromDate(d){
        return d.getDate() + ' ' + months[d.getMonth()] + ' ' + d.getFullYear();
    }   
    
function getValidDateObj(D,MY){
        var fy=MY.substring(MY.indexOf("-")+1);
        var mSelect=0;
        var monthName=MY.substring(0,MY.indexOf("-"));
        for(var i=0;i<months.length;i++){
            var srch=months[i].substring(0,3);
            if(srch.toLowerCase()==monthName.toLowerCase()){
                mSelect=i;
                break;
            }
    }
        if(D.length<2){D="0"+D};
        if(mSelect<10){mSelect="0"+mSelect;}
        var mm = mSelect;
        var dd = D;
        var yy = fy; //.substring(2,4);
        var dateStr=yy+", "+mm+", "+dd;
        var newD8;
        try{
            newD8 = new Date(yy,mm,dd);
        }
        catch(e){
            alert("Invalid date object '"+dateStr+"' please select a real date.");
        }
        return newD8;
}	