// Check for a valid select option
function checkSelect(objSelect, strName) {
	
	var strMsg = strName;
	var i = objSelect.selectedIndex;
	if (objSelect.options[i].value == '') {
		alert(strMsg);
		return false;
	} else
		return true;
}

//function checkAmount(objField) {
//	
//	var Max = 500;
//	if (objField > Max) {
//		alert ('Maximum order amount per item is limited to 500');
//		return Max;
//	}
//	else {
//		return objField;
//	}
//}

/* Verify a given field's value is integer value within a certain range.
 * If input passes validation, original value is returned;
 * else if not an integer, 1 is returned;
 * else if below lower limit, lower limit is returned;
 * else if above upper limit, upper limit is returned;
 * varAmt   - value to be checked
 * iLower   - lower limit for value (inclusive)
 * iUpper   - upper limit for value (inclusive)
 */
function checkAmount(varAmt, iLower, iUpper, bSuppressAlert)
{
	if (typeof(varAmt) == 'undefined' || varAmt.length == 0) { return iLower; }
	else if (varAmt.length == 0) { return iLower; }
	
	// if it's the letter 'o' (case-insensitive) change it to zero
	if (varAmt.toLowerCase() == 'o') { return 0; }

	// check that value is integer
	var reDigit = /^\d+$/;
	if (! reDigit.test(varAmt)) { return 1; }

	// check that it is within range
	if (varAmt < iLower) { return iLower; }
	if (varAmt > iUpper)
	{ 
		if (! bSuppressAlert) {
			alert("Maximum order amount per item is limited to " + iUpper);
		}
		return iUpper; 
	}
	
	// everything is ok, so return original amount
	return varAmt;
}

// Check for a NONE select option
function checkSelectNONE(objSelect, strName) {
	
	var strMsg = strName;
	var i = objSelect.selectedIndex;
	if (objSelect.options[i].value == 'NONE') {
		alert(strMsg);
		return false;
	} else
		return true;
}

// Check for a ST - STATE NOT ANSWERED select option
function checkSelectST(objSelect, strName) {
	
	var strMsg = strName;
	var i = objSelect.selectedIndex;
	if (objSelect.options[i].value == 'ST') {
		alert(strMsg);
		return false;
	} else
		return true;
}

// Check for a valid select option
function checkSelectDefaultValue(objSelect, strName, strExclude) {
	
	var strMsg = strName;
	var i = objSelect.selectedIndex;
	if (objSelect.options[i].value == '0') {
		alert(strMsg);
		return false;
	} else
		return true;
}

//Validate entry in text boxes.  Is the given field blank?
function checkBlank(objField, strName, strExclude) {
	
	var strMsg = 'Please enter ' + strName + '.';
	
	if (strExclude != '') {
		if (objField.value == strExclude) {
			alert(strMsg);
			return false;
		}
	}

	if (matchPatternInField(objField, '(^\[ \t]*$)', strMsg, false))
		return true;
	else
		return false;
}

//Validate the Zip Code (5 or 9 digit).
function checkZipCode(objField) {

	var strMsg = 'Please enter a Zip Code.';
	
	if (matchPatternInField(objField, '\\D\\S', strMsg, false))
			if (matchPatternInField(objField, '\\d{5}', strMsg, true))
				return true;
			else
				return false;
	else
		return false;
}


function checkEmail(objField) {
// Declare variables
	var str = objField.value; // email string (the value in the text box)		
	var reg = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // valid test expression
	
//Test the value (str) against the regular expression (reg)
	if (reg.test(str)) {
	return true;
	}
	else {
		alert("\"" + str + "\" is an invalid e-mail.  Please enter a valid email address.");
		objField.focus(); //Set focus back to the text box
		objField.select(); //Select the text in the text box
		return false;
	}
}  	

// Validate that the Field contains only digits of a specified length
// bAlert (if true then alert with error message; optional; default=true)
function checkNumberOnly(objField, intLength, strName, bAlert)  {
	if (typeof(bAlert) == "undefined" || bAlert == null)
	{
		bAlert = true;
	}

	var strMsg, strPattern;
	
	if (intLength > 0) {
		strMsg = 'Please enter a ' + intLength + ' digit ' + strName + '.';
		strPattern = '\\d{' + intLength + '}';
	}
	else {
		strMsg = 'Please enter a ' + strName + '.';
		strPattern = '\\d';
	}		
	
//	if (matchPatternInField(objField, '\\D\\S', strMsg, false, bAlert))
			if (matchPatternInField(objField, strPattern, strMsg, true, bAlert))
				return true;
			else
				return false;
//	else
//		return false;
}

// validate that one of a group of radio buttons is selected
// if yes, returns index of checked button
// if no, returns -1
function checkRadioSelected(oRadio) {
	var iSel = -1;
	for (var k = 0; k < oRadio.length; k++)
	{
		if (oRadio[k].checked)
		{
			iSel = k;
			break;
		}
	}
	return iSel;
}


//Validate date is not current date
function afterNow(sDate, strName) {
	
	var dtInput = new Date(sDate);
	var dtNow = new Date();
	var strMsg = 'Please enter ' + strName + '.';

	if (dtInput > dtNow) {
		return true;
	}
		alert(strMsg);
		return false;
	}

// Find a given pattern in a given field (or the lack of)
// bolNegate (if true then check for NO occurences of the pattern)
// bAlert (if true then alert with error message; optional; default=true)
function matchPatternInField(objField, strPattern, strErr, bolNegate, bAlert) {
	if (typeof(bAlert) == "undefined" || bAlert == null)
	{
		bAlert = true;
	}
			
	var objRE = new RegExp(strPattern); 
	if (bolNegate) {
		if (!objRE.test(objField.value)) {
			if (bAlert)
			{
				alert(strErr);
			}
			return false;		
		} else
			return true;
	} else {
		if (objRE.test(objField.value)) {
			if (bAlert)
			{
				alert(strErr);
			}
			return false;		
		} else
			return true;	
	}
}

