var reValEmail = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9]{1,}[a-z0-9_\-\.]*)(\.[a-z]{2,4}(\.[a-z]{2}){0,2})$/i;
var reLTrim = /^\s+/;
var reRTrim = /\s+$/;
var objForm = document.forms[0];
var strErr = '';
var strErrHead = "The following information is missing or invalid:     \n____________________________________\n\n";
var strErrFoot = "____________________________________\nPlease re-enter and submit again.";
var strErrLineBegin = "     -  ";
var strErrLineEnd = "\n";

function addError(strErrorMsg) {
	strErr += strErrLineBegin + strErrorMsg + strErrLineEnd;
}

function hasErrors(oForm) {
	if (!oForm) oForm = objForm;
	if (strErr != '') {
		return true;
	} else {
		return false;
	}
}

function popError(blnUseHeadFoot) {
	if (strErr != '') {
		if (blnUseHeadFoot == undefined || blnUseHeadFoot == true) {
			alert(strErrHead + strErr + strErrFoot);
		} else {
			alert(strErr);
		}
		strErr = '';
	}
}

function trimField(oField) {
	if (oField.value) {
		if (oField.value != '') {
			oField.value = oField.value.replace(reLTrim,"").replace(reRTrim,"");
			return true;
		}
	}
	return false;
}

function trimAllText(oForm) {
	if (!oForm) oForm = objForm;
	for (var i = 0; i < oForm.elements.length; i++) {
		if (oForm.elements[i].type == 'text') {
			trimField(oForm.elements[i]);
		}
	}
}

function valRequired(strFieldName, strErrorText) {
	var oField = objForm[strFieldName];
	if (oField) {
		if (oField.value == "") {
			if (strErrorText) {
				addError(strErrorText);
			} else {
				addError(strFieldName);
			}
			return false;
		} else {
			return true;
		}
	}
	return false;
}

function valEmail(strFieldName, strErrorText, blnRequired) {
	if (blnRequired && !valRequired(strFieldName, strErrorText)) { return false; }
	var oField = objForm[strFieldName];
	if (oField) {
		if (reValEmail.test(oField.value)) {
			return true;
		} else {
			if (strErrorText) {
				addError(strErrorText);
			} else {
				addError(strFieldName);
			}
			return false;
		}
	}
	return false;
}

function valRegEx(strRegEx, strFieldName, strErrorText, blnRequired) {
	if (blnRequired && !valRequired(strFieldName, strErrorText)) { return false; }
	var oField = objForm[strFieldName];
	if (oField && strRegEx) {
		var re = new RegExp(strRegEx);
		if (re.test(oField.value)) {
			return true;
		} else {
			if (strErrorText) {
				addError(strErrorText);
			} else {
				addError(strFieldName);
			}
			return false;
		}
	}
	return false;
}
