function ckRequired(p_arFormFields){

	var okForm;
	okForm = true;
	
	var l_sMessage;
	l_sMessage = "The following fields are required: ";
	
	var l_arFF;
	l_arFF = eval(p_arFormFields);
	
	var i;
	for(i = 0; i < l_arFF.length; i++){
		okForm = okForm && ckBlank(l_arFF[i]);
		if(ckBlank(l_arFF[i]) == false){
			l_sMessage = l_sMessage + "\n" + " - " + l_arFF[i].replace("_", " ");			
		}
	}	
	if (okForm == false){
		alert(l_sMessage);
		return(false);
	}else{
		return(true);
	}
}	

function ckBlank(formfield){
	var okBlank;
	okBlank = false;
	
	var l_sFormField;
	l_sFormField = "document.form1." + formfield + ".value";
		
	if (eval(l_sFormField) != ""){
		okBlank = true;
	}else{
		okBlank = false;
	}
	return(okBlank);
}

function ckBlankOB(formfield){
// This funtion is designed to be invoked with "onBlur"
// so that it will immediately call attention the field
// onBlur="ckBlankOB(this);"
// formfield is an object reference in this function

	if (formfield.value != ""){
		okBlank = true;
	}else{
		okBlank = false;
		alert("The field " + formfield.name.replace("_", " ") + " is required.");
		//formfield.focus(); - causes an infinite loop if 2 fields in a row are blank - don't do it.
	}
}

function ckEmail(formfield){
	var okEmail;
	okEmail = false;

	var exp1;
	exp1 = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
	
	var l_sFormField;
	l_sFormField = "document.form1." + formfield + ".value";
         
	if (exp1.test(eval(l_sFormField)) == true){
		okEmail = true;
	} else {      
		okEmail = false;
		alert("Please enter a valid e-mail address.");
    }
    return(okEmail);
}

function matchEmail(formfield1, formfield2){
	var okMatch;
	okMatch = false;
	
	var l_sFormField1;
	l_sFormField1 = "document.form1." + formfield1 + ".value";
	
	var l_sFormField2;
	l_sFormField2 = "document.form1." + formfield2 + ".value";

	if (eval(l_sFormField1) == eval(l_sFormField2)){
		okMatch = true;
	}else{
		okMatch = false;
	alert("The e-mail addresses you entered do not match.");
	}
	return(okMatch);
}

function ckPhone(formfield){
	var okPhone;
	okPhone = false;
			
	var exp1;
	exp1 = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/;
						
	var l_sFormField;
	l_sFormField = "document.form1." + formfield + ".value";
				
	if (exp1.test(eval(l_sFormField)) == true) {
		okPhone = true;
	} else {
		okPhone = false;
	alert("Please enter a phone number in the format (555) 555-5555.");
	}
	return(okPhone);
}

function ckRange(formfield,l,h){

var okFormField;

l = eval(l);
h = eval(h);

var l_sFormField;
l_sFormField = "document.form1." + formfield + ".value";

	if (isNaN(eval(l_sFormField))){
		okFormField = false;
		alert("Please enter a number between " + l + " and " + h);		
	} else {
		if (eval(l_sFormField) > l && eval(l_sFormField) < h){
			okFormField = true;
			} else {
			okFormField = false;
			alert("Please enter a number between " + l + " and " + h);	
		}
	}
 return okFormField;
}

function ckNumeric(formfield){

var okFormField;

var l_sFormField;
l_sFormField = "document.form1." + formfield + ".value";

var exp1;
exp1 = /[^0-9]/;

	if (exp1.test(eval(l_sFormField)) == true){
		okFormField = false;
		alert("Please enter only numbers. Do not include commas, decimal points, dollar signs or letters for the field " + formfield.replace("_", " "));
	} else {      
		//Return true to indicate the form field is OK	
		okFormField = true;
	}
	return(okFormField);
}

function AlphaNum(formfield){

var okFormField;

var l_sFormField;
l_sFormField = "document.form1." + formfield + ".value";

var exp1;
exp1 = /[^A-Za-z0-9_]/;

	if (exp1.test(eval(l_sFormField)) == true){
		okFormField = false;
		alert("Invalid input for field " + formfield.replace("_", " "));
	} else {      
		//Return true to indicate the form field is OK	
		okFormField = true;
	}
	return(okFormField);
}

function NumOnly(formfield)
{

	var okFormField;
	
	//This is a regular expression that allows alpha numeric values and the underscore character
	var exp1;
	exp1 = /[^0-9]/;
	
	var ffvalue;
	ffvalue = formfield.value;
	
		if (exp1.test(ffvalue) == true){
			okFormField = false;
			alert("Your entry contains an unacceptable character. Only numeric characters are acceptable.");
		} else {      
			//Return true to indicate the form field is OK	
			okFormField = true;
		}
		return(okFormField);
	}


function AutoTab(p_ffCurrent, p_ffNext)
{
	if(p_ffCurrent.value.length == p_ffCurrent.getAttribute("maxlength"))
	{
		p_ffNext.focus();
	}
}

function trim(p_sTrimThis) {
	return p_sTrimThis.replace(/^\s+|\s+$/g,"");
}

function ckPhoneNumbers()
{
	okFormField = true;
	//var ff;
	//ff = trim(document.Form3.phone1.value);
	//alert("The trimmed value is " + trim(document.Form3.phone1.value).length);
	var l_sMessage;
	l_sMessage = "";
	if(document.form1.phone1.value.length < 3)
	{
		l_sMessage = l_sMessage + "Three (3) digits are required in the first phone field." + "\n";
		okFormField = false;
	}
	if(document.form1.phone2.value.length < 3)
	{
		l_sMessage = l_sMessage + "Three (3) digits are required in the second phone field." + "\n";
		okFormField = false;
	}
	if(document.form1.phone3.value.length < 4)
	{
		l_sMessage = l_sMessage + "Four (4) digits are required in the third phone field." + "\n";
		okFormField = false;
	}
	if(okFormField == false)
	{
		alert(l_sMessage);
		return(false);
	} else {
		return(true);
	}
}