// 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
function checkNumberOnly(objField, intLength, strName)  {

	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))
			if (matchPatternInField(objField, strPattern, strMsg, true))
				return true;
			else
				return false;
	else
		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)
function matchPatternInField(objField, strPattern, strErr, bolNegate) {
			
	var objRE = new RegExp(strPattern); 
	if (bolNegate) {
		if (!objRE.test(objField.value)) {
			alert(strErr);
			return false;		
		} else
			return true;
	} else {
		if (objRE.test(objField.value)) {
			alert(strErr);
			return false;		
		} else
			return true;	
	}
}
