function submitRequestForm() {
	var validation = validateRequiredFields();
	if ( validation ) {
		document.getElementById("requestForm").submit();
	}
}
function validateRequiredFields() {
	var valid = true;
	var errorAlert = "You must fill out all required fields! Please complete the missing highlighted fields.";
	var invalidColor = "#e4a2a2";
	var validColor = "#fff";
	if ( requiredFormFields.length > 0 ) {
		var form = document.getElementById("requestForm");
		for (var i = 0; i < requiredFormFields.length; i++) {
			var requiredField = requiredFormFields[i];
			if ( requiredField == undefined || form[requiredField] == undefined ) {
				continue;
			}
			if ( form[requiredField].type == "textarea" || form[requiredField].type == "text" ) {
				if ( isEmailField(requiredField) && (form[requiredField].value != "" && form[requiredField].value != "-1") && !validateEmail(form[requiredField]) ) {
					if ( valid ) {
						valid = false;
						errorAlert = "Invalid email address.\n";
						form[requiredField].focus();
						form[requiredField].style.backgroundColor = invalidColor;
						break;
					}
				} else if ( isPhoneField(requiredField) && (form[requiredField].value != "" && form[requiredField].value != "-1") && !validatePhone(form[requiredField]) ) {
					if ( valid ) {
						valid = false;
						errorAlert = "Invalid phone number.\n";
						form[requiredField].focus();
						form[requiredField].style.backgroundColor = invalidColor;
						break;
					}
				} else {
					if ( form[requiredField].value == "" || form[requiredField].value == "-1" ) {
						form[requiredField].style.backgroundColor = invalidColor;
						if ( valid ) {
							form[requiredField].focus();
						}
						valid = false;
					} else {
						form[requiredField].style.backgroundColor = validColor;
					}
				}
			} else if ( form[requiredField].type == "checkbox" ) {
				if ( !form[requiredField].checked ) {
					form[requiredField].style.backgroundColor = invalidColor;
					valid = false;
				} else {
					form[requiredField].style.backgroundColor = validColor;
				}
			} else if ( form[requiredField].type == "select" || form[requiredField].type == "select-one" ) {
				var selectedOption = form[requiredField].selectedIndex;
				if ( form[requiredField].options[selectedOption].value == "-1" ) {
					valid = false;
					form[requiredField].style.backgroundColor = invalidColor;
				} else {
					form[requiredField].style.backgroundColor = validColor;
				}
			} else {
				// unknown type, ignore
			}
		}
		
		if ( valid != true ) {
			alert(errorAlert);
		}
	}
	return valid;
}
function isEmailField(fieldName) {
	var isEmail = false;
	var lowerFieldName = fieldName.toLowerCase();
	if ( lowerFieldName.indexOf("email") > -1 ) {
		isEmail = true;
	}
	return isEmail;
}
function isPhoneField(fieldName) {
	var isPhone = false;
	var lowerFieldName = fieldName.toLowerCase();
	if ( lowerFieldName.indexOf("phone") > -1 ) {
		isPhone = true;
	}
	return isPhone;
}
function validateEmail(fld) {
	var reg = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	var address = fld.value;
	return reg.test(address);
}
function validatePhone(fld) {
	var regExp = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/;
	var phone = fld.value;
	return regExp.test(phone);
}