formDefs = {};

function validateForm(formEl) {

	if (!formDefs[formEl.id] || formDefs[formEl.id].validationRules) return true;
	
	var vRules = formDefs[formEl.id].validationRules;
	
	var vErrs = [];
	
	if (vRules.textFields) for (var i = 0; i < vRules.textFields.length; i++) {
		if (formEl[vRules.textFields[i].name]) {
			var fieldEl = formEl[vRules.textFields[i].name];
			var ruleDef = vRules.textFields[i];
			if (ruleDef.type == "length" && (
				(ruleDef.minLength && fieldEl.value.length < ruleDef.minLength) ||
				(ruleDef.maxLength && fieldEl.value.length > ruleDef.maxLength) ||
				!fieldEl.value.length
			)) {
				if (vRules.textFields[i].errorMessage) alert(vRules.textFields[i].errorMessage);
				else {
					var fieldLabel = vRules.textFields[i].fieldLabel || vRules.textFields[i].name;
					var msgAppend = "";
					if (ruleDef.minLength) append += "\n(you must enter at least " + ruleDef.minLength + " characters)";
					if (ruleDef.maxLength) append += "\n(you must enter no more than " + ruleDef.maxLength + " characters)";
					alert("Please enter a value for the " + fieldLabel + " field." + msgAppend);
				}
				vErrs.push({ type: "textfield", errorKey: "length", fieldEl: formEl[vRules.textFields[i].name], fieldDef: vRules.textFields[i] });
			}
		}
	}
	
	if (vErrs.length) return false;
	else return true;
	
	return true;

}
