<!--
function displayErrMsg(errMsg)
{
	alert(errMsg);
	return false;
}

function hasValue(obj)
{
	switch (obj.type)
	{
		case "select-one":
			if (obj[obj.selectedIndex].value != "") return true;
			break;
		case "select-multiple":
			for (i = 0; i < obj.options.length; i++) {
				if (obj.options[i].selected && obj.options[i].value != "") return true;
			}
			break;
		case "text":
		case "hidden":
		case "password":
		case "textarea":
			if (obj.value.length > 0 && obj.value > " ") return true;
			break;
		case "checkbox":
		case "radio":
			if (obj.checked) return true;
			break;
		default:
			//check to see if this is an object array
			if (obj.length >= 0) {
				//check each element of the object array
				for (i = 0; i < obj.length; i++) {
					if (hasValue(obj[i])) return true;
				}
			}
			break;
	}
	
	//if we made it this far, the object does not have a value
	return false;
}

// is the value an integer
function validNumeric(number)
{
	var nonNumericRegExp = /\D/;
	
	if (nonNumericRegExp.test(number.value)) {
		//contains something other than 0-9
		return false;
	} else {
		return true;
	}
}

function validPostal(postalCD)
{
	var usRegExp = /^\d{5}$/;
	
	if (usRegExp.test(postalCD)) {
		return true;
	} else {
		return false;
	}
}

function validEmail(emailValue)
{
	var emailRegExp = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,7}|[0-9]{1,3})(\]?)$/;
	
	if (emailRegExp.test(emailValue)) {
		return true;
	} else {
		return false;
	}
}

function validatePhone(phoneType, phone1, phone2, phone3, phoneRequired)
{
	//if phone is required, make sure it's valued
	if (phoneRequired) {
		if (!hasValue(phone1) && !hasValue(phone2) && !hasValue(phone3)) {
			displayErrMsg(phoneType + ' Number is required.\r\nPlease re-enter.');
			phone1.focus();
			return false;
		}
	}
	
	//if part is populated, all must be populated
	if (hasValue(phone1) || hasValue(phone2) || hasValue(phone3)) {
		if (!hasValue(phone1) || !hasValue(phone2) || !hasValue(phone3)) {
			displayErrMsg(phoneType + ' Number is incomplete.\r\nPlease re-enter.');
			phone1.focus();
			return false;
		} else {
			var nonNumericRegExp = /^\d{3}$/;
			if (!nonNumericRegExp.test(phone1.value)) {
				//contains something other than 0-9
				displayErrMsg(phoneType + ' Number is invalid.\r\nPlease re-enter.');
				phone1.focus()
				return false;
			}
			if (!nonNumericRegExp.test(phone2.value)) {
				//contains something other than 0-9
				displayErrMsg(phoneType + ' Number is invalid.\r\nPlease re-enter.');
				phone2.focus()
				return false;
			}
			var nonNumericRegExp = /^\d{4}$/;
			if (!nonNumericRegExp.test(phone3.value)) {
				//contains something other than 0-9
				displayErrMsg(phoneType + ' Number is invalid.\r\nPlease re-enter.');
				phone3.focus()
				return false;
			}
		}
	}
	
	return true;
}

function validateAddress(addrType, addrStreet, addrCity, addrState, addrZip)
{
	
	if (!hasValue(addrStreet)) {
		displayErrMsg(addrType + ' Address is required.\r\nPlease re-enter.');
		addrStreet.focus();
		return false;
	}
	if (!hasValue(addrCity)) {
		displayErrMsg(addrType + ' City is required.\r\nPlease re-enter.');
		addrCity.focus();
		return false;
	}
	if (!hasValue(addrState)) {
		displayErrMsg(addrType + ' State is required.\r\nPlease re-enter.');
		addrState.focus();
		return false;
	}
	if (!hasValue(addrZip)) {
		displayErrMsg(addrType + ' Zip is required.\r\nPlease re-enter.');
		addrZip.focus();
		return false;
	} else {
		if (!validPostal(addrZip.value)) {
			displayErrMsg(addrType + ' Zip is invalid.\r\nPlease re-enter.');
			addrZip.focus();
			return false;
		}
	}
	
	return true;
}

function validateEmail(emailAddr)
{
	if (!hasValue(emailAddr)) {
		displayErrMsg('Email Address is required.\r\nPlease re-enter.');
		emailAddr.focus();
		return false;
	} else {
		if (!validEmail(emailAddr.value)) {
			displayErrMsg('Email Address is invalid.\r\nPlease re-enter.');
			emailAddr.focus();
			return false;
		}
	}
	
	return true;
}

// handles dashes and slashes, needs a 4 digit date, checks for days in a month,
// month value is 1-12, checks for # of days in february leap year.
function chkDate(objName)
{
	var dateField = objName;
	var strDate;
	var strDateArray;
	var strMonth;
	var strDay;
	var strYear;
	var intMonth;
	var intDay;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array("-","/");
	var intElementNr;
	
	strDate = dateField.value;
	
	//if the dateField is empty, don't raise an error
	if (!hasValue(dateField, "TEXT"))
		return true;
	
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++)
	{
	
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1)
		{
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
	
			if (strDateArray.length != 3)
			{
				displayErrMsg("Date is invalid.\r\nPlease enter in MM/DD/YYYY format.");
				dateField.focus();
				return false;
			}
			else
			{
				strMonth = strDateArray[0];
				strDay = strDateArray[1];
				strYear = strDateArray[2];
			}
	
			booFound = true;
		}
	}
	
	if (booFound == false)
	{
		displayErrMsg("Date is invalid.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	if (strYear.length != 4)
	{
		displayErrMsg("Year must be 4 digits.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth))
	{
		displayErrMsg("Month portion of date is not numeric.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	intDay = parseInt(strDay, 10);
	if (isNaN(intDay))
	{
		displayErrMsg("Day portion of date is not numeric.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear))
	{
		displayErrMsg("Year portion of date is not numeric.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	if (intMonth > 12 || intMonth < 1)
	{
		displayErrMsg("Month must be between 1 and 12.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	if (intDay < 1 || intDay > 31)
	{
		displayErrMsg("Day must be between 1 and 31.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30))
	{
		displayErrMsg("The specified month cannot contain more than 30 days.\r\nPlease enter in MM/DD/YYYY format.");
		dateField.focus();
		return false;
	}
	
	if (intMonth == 2)
	{
		if (LeapYear(intYear) == true)
		{
			if (intDay > 29)
			{
				displayErrMsg("February cannot contain more than 29 days in a leap year.\r\nPlease enter in MM/DD/YYYY format.");
				dateField.focus();
				return false;
			}
		}
		else
		{
			if (intDay > 28)
			{
				displayErrMsg("February cannot contain more than 28 days in a non leap year.\r\nPlease enter in MM/DD/YYYY format.");
				dateField.focus();
				return false;
			}
		}
	}
	
	if (strMonth.length == 1)
	{
		strMonth = '0' + strMonth
	}
	if (strDay.length == 1)
	{
		strDay = '0' + strDay;
	}
	
	dateField.value = strMonth + '/' + strDay + '/' + strYear;
	
	return true;
}

// leap year must be divisable by 4, 100, and 400
function LeapYear(intYear)
{
	if (intYear % 100 == 0)
	{
		if (intYear % 400 == 0) return true;
	}
	else
	{
		if ((intYear % 4) == 0) return true;
	}
	return false;
}
//-->