function checkForm(form,submitForm) {
// form = string containing the fully qualified DOM reference to the form object [ i.e. 'document.email' ]
// submitForm = set to 1 if you want this function to submit the form
//              default will return true or false [ i.e. called from onSubmit="return checkForm()" ]
	var failed = "";
	var firstFailed = "";
	if (validateObjs != null) {
		for (var i = 0; i < validateObjs.length; i++) {
			if (validateObjs[i] != null) { // sanity check
				failed += validateElement(form,validateObjs[i]);
				// set the first element that failed to focus later
				if (failed != "" && firstFailed == "") { firstFailed = validateObjs[i].name; }
			}
		}
	}
	if (failed != "") {
		alert(failed);
		eval(form + "." + firstFailed + ".focus()");
		if (!submitForm) { return false; }
	} else {
		if (submitForm) {
			eval(form + ".submit()");
		} else {
			return true;
		}
	}
}

function validateObj(eleName, eleAlias, required, eleFormat, maxLength) {
// eleName = HTML name
// eleAlias = alias to use for errors
// required = 1 -> yes, 0 -> no
// eleFormat = required format (ALPHA | NUMERIC | ALPHANUMERIC | Regular Expression ie '.+\\@.+\\.\\w+' for e-mail address)
//             because we are passing the format as a string, we have to escape the escape character '\'
// eleLength = max length
	this.name = eleName;
	this.alias = eleAlias;
	this.required = required;
	this.format = eleFormat;
	this.maxLength = maxLength;
}

function validateElement(form,element) {
	var domEle = eval(form + "." + element.name);
	var data = getData(form,element.name);
	//alert ("Validating: " + form + "." + element.name + " --- type: " + domEle.type); // TESTING!
	if (data.length <= 0 && element.required) {
		return "Please fill in the " + element.alias + " field.\n";
	}
	if (data.length > element.maxLength) {
		return "Please limit your entry to less than " + element.maxLength + " characters in the " + element.alias + " field.\n";	
	}
	if (element.format && data) {
		var regExp;
		if (element.format.toUpperCase() == "ALPHA") {
			regExp = new RegExp("^[ a-zA-Z]*$");
		} else if (element.format.toUpperCase() == "NUMERIC") {
			regExp = new RegExp("^[0-9]*$");
		} else if (element.format.toUpperCase() == "ALPHANUMERIC") {
			regExp = new RegExp("^[ a-zA-Z0-9_]*$");
		} else {
			regExp = new RegExp(element.format);
		}
		if (!regExp.test(data)) {
			return "Please enter a valid " + element.alias + ".\n";
		}
	}
	return "";
}

function getData(form,elementName) {
	var data;
	var domEle = eval(form + "." + elementName);

	// get the data to vaildate
	if (domEle.type == "checkbox" || domEle.type == "radio") {
		for (var i = 0; i < form.elements.length; i++) {
			if (form.elements[i].name == elementName && form.elements[i].checked) {
				data = form.elements[i].value;
			}
		}
	} else if (domEle.type.indexOf("select") != -1) {
		data = domEle[domEle.selectedIndex].value;
	} else {
		data = domEle.value;
	}
	return data;
}
