function disableButton(formobj, state) {
	if (document.all || document.getElementById) {
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0; i<formobj.length; i++){
			var obj = formobj.elements[i];
			if(obj.type.toLowerCase() == "submit") {
				//obj.disabled = state;
			}
		}
	}
}

function validateForm(formobj, requiredNames, disable) {
	var required = requiredNames.split(",");
	var msg="";
	var validateMsg="";
	var savePW="";
	var invalidPW=0;
	var noPW="";
	
	for (var i=0; i<required.length; i++) {

		var fields     = required[i].split(" ");
		var fieldName  = fields[0];
		var isOptional = (fields[1] != null);

		obj = formobj.elements[fieldName];
		if (obj) {
			switch (obj.type) {
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == "") {
					msg += " - " + fieldName + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1) {
					msg += " - " + fieldName + "\n";
				}
				break;
			case "hidden":
			case "text":
			case "textarea":
			case "password":
			case "file":
				if (obj.value == "" || obj.value == null) {
					if (!isOptional) {
						msg += " - " + fieldName + "\n";
					}
					if (fieldName.match(/phone/i)) {
						msg += "If you wish your phone number to be unlisted, enter 555-555-5555.\n";
					}
				}
				else {
					if (fieldName.match(/phone/i) != null) {
						var phoneMask = /[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]/;
						if (obj.value.match(phoneMask) == null) {
							msg += " - " + fieldName + ": Invalid phone number format\n";
						}
					}
					if (fieldName.match(/email/i) != null) {
						var emailMask = /.*@.*\..*/i;
						if (obj.value.match(emailMask) == null) {
							msg += " - " + fieldName + ": Invalid email format\n";
						}
					}
				}
				if (obj.type == "password") {
					var tmpstr = obj.value;
					if (savePW == "OPTIONAL_PW" && tmpstr.length == 0) {
					}
					else if (savePW.length && obj.value != savePW) {
						invalidPW = 1;
						savePW = "";
					}
					else {
						savePW = obj.value;
						if (isOptional && savePW.length == 0) {
							savePW = "OPTIONAL_PW";
						}
						else if (savePW.length < 6) {
							invalidPW = 2;
							savePW = "";
						}
					}
				}
				break;
			case undefined:
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					msg += " - " + fieldName + "\n";
				}
				break;
			default:
				msg += "Not handled: " + obj.type + " " + fieldName;
			}
		}
	}

	if (msg.length) {
		msg = "The following fields are required:\n" + msg;
	}
	else if (invalidPW) {
		if (invalidPW == 1)
			msg = "Passwords do not match.  Verify your password and try again.";
		else if (invalidPW == 2)
			msg = "Passwords must be at least 6 characters long.";
	}
	else {
		if (formobj.elements["thwart"] && formobj.elements["validate"]) {
			var thwart = formobj.elements["thwart"].value;
			var valid = formobj.elements["validate"].value;
			if (thwart.length && thwart*902 != valid) {
				msg  = "Invalid Verification Code.\n";
				msg += "Please enter the number in the field to the right.";
			}
		}
	}

	if (msg.length) {
		alert(msg);
	}
	else if (disable) {
		//disableButton(formobj, true);
	}
	return !msg.length;
}
