function valDate(inDate, inCompareToToday) {
// Function to validate a date.  Format must be M/D/YYYY
	if (inDate.length == 0)
		return true;	// null date is valid

	// Get month
	sep = inDate.indexOf("/");
	if (sep == -1)
		return false;
	vMonth = new Number(inDate.substr(0, sep));
	rest = inDate.substr(sep+1);
	//alert("vMonth:" + vMonth + ", sep:" + sep + " rest:" + rest);
	if (isNaN(vMonth))
		return false;
	if (rest.length < 6)
		return false;	// remainder of date is too small for day/year

	// Get Day
	sep = rest.indexOf("/");
	if (sep == -1)
		return false;
	vDay = new Number(rest.substr(0, sep));
	rest = rest.substr(sep+1);
	//alert("vDay:" + vDay + ", sep:" + sep + " rest:" + rest);
	if (isNaN(vDay))
		return false;
	if (rest.length != 4)
		return false;	// remainder of date is not year

	// Get Year
	vYear = new Number(rest);
	//alert("vYear:" + vYear);
	if (isNaN(vYear))
		return false;

	// Validate the date
	if (vMonth < 1 || vMonth > 12)
		return false;

	if (vDay < 1 || vDay > 31)
		return false;

	if (inCompareToToday)
	{
		today = new Date();
		vDate = new Date(vYear, vMonth, vDay);
		if (isNaN(vDate))
			return false;
	
		if (vDate < today)
			return false;	// Date cannot be earlier than today
	}

	return true;
}

function valTime(inTime) {
	if (inTime.length == 0)
		return true;	// null date is valid

	// Get hour
	sep = inTime.indexOf(":");
	if (sep == -1) {
		//alert("colon not found");
		return false;
	}
	vHour = new Number(inTime.substr(0, sep));
	rest = inTime.substr(sep+1);
	//alert("vHour:" + vHour + ", sep:" + sep + " rest:" + rest);
	if (isNaN(vHour)) {
		alert("vHour is not numeric");
		return false;
	}
	if (rest.length != 2) {
		//alert("rest.length != 2");
		return false;	// remainder of date is too small for minutes
	}

	// Get Day
	sep = rest.indexOf("/");
	if (sep == -1)
		vMin = new Number(rest);
	else
		vMin = new Number(rest.substr(0, sep));
	//alert("vMin:" + vMin);
	if (isNaN(vMin)) {
		alert("vMin is NaN");
		return false;
	}

	// Validate the Time
	if (vHour < 1 || vHour > 12) {
		//alert("vHour < 1 or > 12");
		return false;
	}

	if (vMin < 0 || vMin > 60) {
		//alert("vMin < 0 or > 60");
		return false;
	}

	return true;
}

function MakeDateTime(inDateString, inTimeString, inAMPM) {
	if (inTimeString.length > 0) {
		if (inAMPM)
			return new Date(inDateString + " " + inTimeString + " AM");
		else
			return new Date(inDateString + " " + inTimeString + " PM");
	}
	else
		return new Date(inDateString);
}

function CheckEmail(addr) {
	var filter=/^.+@.+\..{2,3}$/
	
	if (filter.test(addr))
		return true;
	else
		return false;
}

function isInteger(value) {
	var filter = /^[0-9]+$/;
	return filter.test(value);
}

function SelectDDLOption(ddl, value) {
	for (i=0; i<ddl.length; i++) {
		if (ddl.options[i].value == value) {
			ddl.options[i].selected = true;
			return;
		}
	}
}
