// This checks the form for required fields and displays an alert box listing missing items.
// The hidden _required field and its corresponding displayed form field are case-sensitive.
// Insert the following in the form tag:  onSubmit="return checkRequired()".

// Nov. 11 2000: Added the 2nd OR condition to the "select" statement.

function checkRequired() {
	with (window.document.forms[0]) {
		
		var p_alert = "The following fields are required:\n\n";
		var alertCount = 0;
		
		for (var x = 0; x < elements.length; x++) {
			if (elements[x].name.indexOf("_required") > 0 && elements[x].name.indexOf("_required_off") == -1) {
				field_name = elements[x].name.substring(0,elements[x].name.indexOf("_required"));
				t = eval(field_name).type;
				if (typeof t == "undefined" && eval(field_name + "[0].type") == "radio") {
					// radio buttons
					var radioIsGood = 0;
					var radioGrp = eval(field_name);
					for (var y = 0; y < radioGrp.length; y++)
						if (radioGrp[y].checked) { radioIsGood = 1; break; }
					if (!radioIsGood) p_alert += elements[x].value + "\n";
				} else if (typeof t == "undefined" && eval(field_name + "[0].type") == "checkbox") {
					// checkboxes all of same name
					var checkboxIsGood = 0;
					var checkboxGrp = eval(field_name);
					for (var y = 0; y < checkboxGrp.length; y++)
						if (checkboxGrp[y].checked) { checkboxIsGood = 1; break; }
					if (!checkboxIsGood) p_alert += elements[x].value + "\n";
				} else if (t == "checkbox" && !eval(field_name).checked) {
					// checkboxes of different name
					p_alert += elements[x].value + "\n";
				} else if (t.indexOf("select") > -1) {
					// selects
					if (eval(field_name).selectedIndex == -1 || !eval(field_name).options[eval(field_name).selectedIndex].value.length) p_alert += elements[x].value + "\n";
				} else if (!eval(field_name).value.length) {
					// text fields
					p_alert += elements[x].value + "\n";
				} 
			}
		}
		
		if (p_alert != "The following fields are required:\n\n") { alert(p_alert); return false; }
				
		return true;
		
	}
}
// END "REQUIRED FIELDS" ALERT
