﻿/**
submitForm function
A generic function used to validate a form and submit it via AJAX
response. The function then feeds the response into the parent element.
	formName:		String. The ID of the form to be submitted
	returnElement:	String. The ID of the DOM element in which to place
					the returned information from the form. If this element
					does not exist, the responseText will be displayed
					in an alert message.
*/
function submitForm(formName, returnElement) {
	var goodEmail = true;
	var myForm = $(formName);
	if (myForm) {
		var requiredFields = $$("#" + formName + " .required");
		//alert(requiredFields.inspect());
		//return false;
		var validate = requiredFields.partition(function(e){
			if ($(e).present()) {
				if ($(e).readAttribute("type") == "checkbox") return $(e).checked;
				// make sure their email is not just jibberish
				if ($(e).readAttribute("name") == "email") {
					goodEmail = validEmail($F(e));
					return validEmail($F(e));
				} else return true;
			} else return false;
		});
		
		// submit the form if valid, otherwise complain
		if (validate[1].size() == 0) {
			var d = new Date();
			var bucket = $(returnElement);
			myForm.request({
				parameters: { nocache: d.getTime().toString() }, // used to combat caching in stupid IE browser
				onSuccess: function(transport){
					if (bucket) bucket.innerHTML = transport.responseText;
					else alert(transport.responseText);
				},
				onFailure: function(transport) {
					if (bucket) bucket.innerHTML = transport.responseText;
					else alert(transport.responseText);
				}
			});
		} else {
			var errMsg = "Please complete the entire form";
			if (!goodEmail) {
				errMsg = errMsg + "\nand provide a valid email address";
			}
			errMsg = errMsg + ".\nThank you.";
			alert(errMsg);
		}
	} else {
		alert("Invalid form name!");
	}
}
