function validateValue(theField, minLength, maxLength, fieldName, bNum) {
	var valid=false;
	var errorMsg="";
	var regU = /^[0-9a-zA-Z]+$/;
	var regN = /^[0-9]{0,3}\.?[0-9]{1,2}$/;
	var regC = /^\-?[$]?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[9]|[2-9]\d)?\d{2})$/;
	var regT = /^(((((0)?([1-9])))|(1[012]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2}))/;

// currency: var regC = /^(-)?\d+(\.\d\d)?$/;
//	var regC = /^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/

	if(theField.value == null)
		errorMsg = "The "+fieldName+" field is empty. Please enter "+fieldName+".";
	else if (theField.value == "")
		errorMsg = "The "+fieldName+" field is empty. Please enter "+fieldName+".";
	else if (theField.value.length==0)
		errorMsg = "The "+fieldName+" field is empty. Please enter "+fieldName+".";
	else if (theField.value.length<minLength || theField.value.length>maxLength)
		errorMsg = "The value you enter for "+fieldName+" may be too short or long. Please re-enter "+fieldName+". Current Length="+theField.value.length+" Min="+minLength+" Max="+maxLength+".";
	else if (bNum == "user" && !regU.test(theField.value))
		errorMsg = "Please enter valid values only in "+fieldName+". You may only use alpha-numerica characters. Special charactiers (i.e. \#!@/,) or spaces are not allowed.";
	else if (bNum == "cur" && !regC.test(theField.value))
		errorMsg = "Please enter numeric values only in "+fieldName+".";
	else if (bNum == "date" && !regD.test(theField.value))
		errorMsg = "Please enter date values as 'mm/dd/yyyy' only in "+fieldName+".";
	else if (bNum == "time" && !regT.test(theField.value))
		errorMsg = "Please enter date values as 'hh:mm:ss AM/PM' only in "+fieldName+". Note: Seconds are optional.";
	else if (bNum == true && !regN.test(theField.value))
		errorMsg = bNum + "The value you entered in the "+fieldName+" field may be invalid. Please try again.";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}

function validateDates(theField, fieldName) {
	var valid=false;
	var errorMsg="";
	var regD = /(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/;
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
	var regD = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[9]|[2-9]\d)?\d{2})$/;

	if(theField.value == null)
		valid = true;
	else if (theField.value == "")
		valid = true;
	else if (!regD.test(theField.value))
		errorMsg = "Please enter date values as 'mm/dd/yyyy' only in "+fieldName+".";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}

function validateTimes(theField, fieldName) {
	var valid=false;
	var errorMsg="";
	var regT = /^(((((0)?([1-9])))|(1[012]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2}))/;

	if(theField.value == null)
		valid = true;
	else if (theField.value == "")
		valid = true;
	else if (!regT.test(theField.value))
		errorMsg = "Please enter date values as 'hh:mm:ss AM/PM' only in "+fieldName+".";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}


function validateEmail(theField, minLength, maxLength, fieldName) {
	var valid=false;
	var errorMsg="";
	var reg =  /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	if(theField.value == null)
		errorMsg = "The "+fieldName+" field is empty. Please enter "+fieldName+".";
	else if (theField.value.length==0)
		errorMsg = "The "+fieldName+" field is empty. Please enter "+fieldName+".";
	else if (theField.value.length<minLength || theField.value.length>maxLength)
		errorMsg = "The value you entered in the "+fieldName+" field may be too short or invalid. Please try again.";

	else if (!reg.test(theField.value))
		errorMsg = "The value you entered in the "+fieldName+" field may be invalid. Please try again.";

	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}

function bNumber(theField, fieldName) {
	var valid=false;
	var errorMsg="";
	var regN = /^[0-9]{0,2}\.?[0-9]{1,2}$/;

	if(theField.value == null)
		valid = true;
	else if (theField.value == "")
		valid = true;
	else if (!regN.test(theField.value))
		errorMsg = "The value you entered in the "+fieldName+" field may be invalid. Please try again.";
	else
		valid = true;

	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}

function validateNumeric(theField, minLength, maxLength, testValue, minValue, maxValue, fieldName) {
	var valid=false;
	var errorMsg="";

	if(theField.value=="TestCC#")
		valid = true;
	else if(theField.value=="")
		errorMsg = "The "+fieldName+" field is empty. Please enter a valid number.";
	else if (theField.value.length==0)
		errorMsg = "The "+fieldName+" field is empty. Please enter a valid number.";
	else if (theField.value.length<minLength || theField.value.length>maxLength)
		errorMsg = "The "+fieldName+" field is must be between "+minLength+" and "+maxLength+". Please enter a valid number.";
	else if (verifyLUHN(theField.value)==false)
		errorMsg = "The "+fieldName+" number you provided is invalid. Please enter a valid number.";
	else
		valid = true;
	
	if (valid==false) {
		window.alert(errorMsg);
		try {theField.focus();} catch(e) {}
	}
	return valid;
}

function verifyLUHN(num){
	var counter = new Number(0);
	var tempcount = new Number(0);
	var tempstring; 
	var half = new Number(parseInt((num.length - 1) * 0.5)); 
	for (var j=0; j <= half; j++){ 
		counter = counter + parseInt(num.substring(num.length - 2 * j - 1, num.length - 2 * j));
	} 
	half = parseInt(num.length * .5) - 1;

	for (j=0; j <= half; j++){ 
		tempcount = 2 * parseInt(num.substring(num.length - 2*j - 2,num.length - 2*j - 1)); 
		tempstring = tempcount.toString(); 
		if(tempstring.length == 2){ 
			counter = counter + parseInt(tempstring.substring(0,1)) + parseInt(tempstring.substring(1,2)); 
		} 
		else{
			counter = counter + parseInt(tempstring.substring(0,1)); 
		} 
	} 

	if(counter % 10 == 0){
		return true;
	} 
	else{ 
		return false; 
	}
}

// * Old regular expressions no longer in use.
// currency: var regC = /^(-)?\d+(\.\d\d)?$/;
