function booking_onChange(ctrl)
{
	if(!chkDate(ctrl))
	{
		return false;
	}

	var a_dt;
	var d_dt;
	var a_dt_only;
	var d_dt_only;
	a_dt_only = new Date(document.all.txtCheckInDt.value);
	d_dt_only = new Date(document.all.txtCheckOutDt.value);
	a_dt = new Date(document.all.txtCheckInDt.value + ' ' + document.all.dpnCheckInTime.value  );
	d_dt = new Date(document.all.txtCheckOutDt.value + ' ' + document.all.dpnCheckOutTime.value  );

	var now = new Date();

	if(a_dt <= now || d_dt <= now )
	{
		alert('Date can not be in the past');
		return false;
	}


	var blk_start;
	var blk_end;

	blk_start = new Date('11/19/2007');
	blk_end = new Date('11/24/2007');

	if((a_dt_only >= blk_start && a_dt_only <= blk_end) || (d_dt_only >= blk_start && d_dt_only <= blk_end))
	{
		alert('We are sorry, but no parking slots are available for this date.\n\n Please try a different date.');
		ctrl.value = '';
		return false;
	}


	/* added temp */
	if(a_dt_only <= blk_start && d_dt_only >= blk_start)
	{
		alert('We are sorry, but no parking slots are available for this date.\n\n Please try a different date.');
		ctrl.value = '';
		document.all.txtCheckInDt.value='';
		document.all.txtCheckOutDt.value = '';
		return false;
	}
	/* added temp end */

	if(a_dt>=d_dt)
	{
		alert('Please enter a arrival date before the departure date.');
		ctrl.value = '';
		return false;
	}

	if(document.all.txtCheckInDt.value != '' && document.all.txtCheckOutDt.value != '' )
	{
		return true;
	}

	else
	{
		return false;
	}
}

function chkDate(dateField)
{
	if(dateField.value != "")
	{
		if(!isDate(dateField))
		{
			dateField.value = "";
			dateField.focus();
			return false;
		}
	}
	return true;
}

// Helpers
function isDate(dateField)
{
	var dateStr=new String(dateField.value);
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	//Try to infer the date first------------------------
	if (matchArray == null)
	{
		//Check if user has entered date in mm/dd/yy format
		if(dateStr.search(".*\/.*\/.*") == -1)
		{
			//If user hasnt entered date in this format then ensure it is a number
			if(!isNaN(dateStr))
			{
				if(dateStr.length == 8)
				{
					dateStr = dateStr.substr(0,2) + "/" + dateStr.substr(2,2) + "/" + dateStr.substr(4);
					dateField.value = dateStr;
					matchArray = dateStr.match(datePat);
				}
			}
		}
	}

	if (matchArray == null)
	{
		alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
		return false;
	}

	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[5];

	if(year < 1800)
	{
		alert('Year should be greater than or equal to 1800');
		return false;
	}

	if (month < 1 || month > 12)
	{ // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}

	if (day < 1 || day > 31)
	{
		alert("Day must be between 1 and 31.");
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		alert("Month "+month+" doesn't have 31 days!")
		return false;
	}

	if (month == 2)
	{ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap))
		{
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	return true; // date is valid
}



