﻿function frmCheckAvailabilityFormValidator(){

	var strDateOfArrivalDay 		= parseInt(document.getElementById('idtxtDateOfArrivalDay').value)
	var strDateOfArrivalMonth 		= parseInt((document.getElementById('idtxtDateOfArrivalYearMonth').value).split("/")[1])-1
	var strDateOfArrivalYear 		= parseInt((document.getElementById('idtxtDateOfArrivalYearMonth').value).split("/")[0])
	var strDateOfDepartureDay 		= parseInt(document.getElementById('idtxtDateOfDepartureDay').value)  
	var strDateOfDepartureMonth 	= parseInt((document.getElementById('idtxtDateOfDepartureYearMonth').value).split("/")[1])-1
	var strDateOfDepartureYear 		= parseInt((document.getElementById('idtxtDateOfDepartureYearMonth').value).split("/")[0])
	var strDateOfArrival 			= new Date(strDateOfArrivalYear,strDateOfArrivalMonth,strDateOfArrivalDay,00,00,00);
	var strDateOfDeparture 			= new Date(strDateOfDepartureYear,strDateOfDepartureMonth,strDateOfDepartureDay,00,00,00);
	var strTodaysDate				= new Date();
	var strMinDaysInAdvance 		= new Date(strTodaysDate.getFullYear(), strTodaysDate.getMonth(), strTodaysDate.getDate());

	if (strDateOfArrival < strMinDaysInAdvance){
		alert('Date of arrival has already past.');
		document.getElementById('idtxtDateOfArrivalDay').focus();
		return (false);
	}
	
	if (strDateOfArrival >= strDateOfDeparture){
		alert('Date of arrival cannot be after or on the date of departure.');
		document.getElementById('idtxtDateOfArrivalDay').focus();
		return (false);      
	}

	switch(strDateOfArrivalMonth+1){
		case (4): case (6): case (9): case (11):
			if (strDateOfArrivalDay > 30){
				document.getElementById('idtxtDateOfArrivalDay').focus();
				alert('There are only 30 days in the selected date of arrival month, not 31.');
				return (false);  	
			}
		break;    
		case (2):
			if (strDateOfArrivalYear%4 == 0){
				//Leap Year     
				if (strDateOfDepartureDay > 29){
					alert('There are only 29 days in the selected date of arrival month.');
					document.getElementById('idtxtDateOfArrivalDay').focus();
					return (false); 
				}
			}else{
				//Not a Leap Year
				if (strDateOfDepartureDay > 28){
					alert('There are only 28 days in the selected date of arrival month.');
					document.getElementById('idtxtDateOfArrivalDay').focus();
					return (false); 
				}      	
			}
		break; 
	}

	switch(strDateOfDepartureMonth+1){
		case (4): case (6): case (9): case (11):
			if (strDateOfDepartureDay > 30){
				alert('There are only 30 days in the selected date of departure month, not 31.');
				document.getElementById('idtxtDateOfDepartureDay').focus();
				return (false);  	
			}
		break;    
		case (2):
			if (strDateOfDepartureYear%4 == 0){
				//Leap Year     
				if (strDateOfDepartureDay > 29){
					alert('There are only 29 days in the selected date of departure month.');
					document.getElementById('idtxtDateOfDepartureDay').focus();
					return (false); 
				}
			}else{
				//Not a Leap Year
				if (strDateOfDepartureDay > 28){
					alert('There are only 28 days in the selected date of departure month.');
					document.getElementById('idtxtDateOfDepartureDay').focus();
					return (false); 
				}      	
			}
		break; 
	}
    
	return (true);
}
