// DATE: 12/28/2007
// MAKE SURE TO COMMENT THESE OUT AND SET THEM TO THE APPROPRIATE VALUE FOR YOUR SITE.
// ALTERNATIVELY, YOU CAN OVERLOAD THEM ON THE SpryFormSubmit FUNCTION
// OR BY REASSIGNING THEIR VALUES AT THE BOTTOM OF YOUR HTML PAGE
//var CM_SPRY_FORM_SUBMISSION_HANDLER_TYPE = '';
//var CM_SPRY_FORM_SUBMISSION_FAILURE_MESSAGE = 'FAILURE';

function SpryFormSubmit(formElement, type, failureMessage, containerId)
{
	if (typeof formElement == 'string')
		formElement = document.getElementById(formElement);

	if (!Spry || Spry.Widget.Form.validate(formElement))
	{
		return true;
	}
	else
	{
		var handler = SpryFormSubmit_Invalid;
		
		if (type == null)
		{
			if (CM_SPRY_FORM_SUBMISSION_HANDLER_TYPE)
			{
				type = CM_SPRY_FORM_SUBMISSION_HANDLER_TYPE;
			}
			else
			{
				type = 'POPUP';
			}
		}
		
		if (failureMessage == null)
		{
			if (CM_SPRY_FORM_SUBMISSION_FAILURE_MESSAGE)
			{
				failureMessage = CM_SPRY_FORM_SUBMISSION_FAILURE_MESSAGE;
			}
			else
			{
				failureMessage = 'FAILURE';
			}
		}
		
		switch (type.toUpperCase())
		{
			case "POPUP":
				handler = SpryFormSubmit_PopUp;
				break;
			case "INLINE":
				handler = SpryFormSubmit_Inline;
				break;
			case "SILENT":
				handler = SpryFormSubmit_Silent;
				break;
			case "DEBUG":
				handler = SpryFormSubmit_Debug;
				break;
			default:
				break;
		}

		return handler(formElement, failureMessage, containerId);
	}
}


function SpryFormSubmit_Invalid(formElement, failureMessage, containerId)
{
	alert('Invalid SpryFormSubmit handler type.  TYPE = [ POPUP, INLINE, SILENT, DEBUG ]');
	return false;
}

function SpryFormSubmit_PopUp(formElement, failureMessage, containerId)
{
	alert(failureMessage);
	return false;
}

function SpryFormSubmit_Inline(formElement, failureMessage, containerId)
{
	if (typeof(displayMessage) == "function")
	{
		//showError(failureMessage, containerId);
		displayMessage(null, "error", failureMessage);
		return false;
	}
	else
	{
		return SpryFormSubmit_PopUp(formElement, failureMessage, containerId);
	}
}

function SpryFormSubmit_Silent(formElement, failureMessage, containerId)
{
	return false;
}

function SpryFormSubmit_Debug(formElement, failureMessage, containerId)
{
	alert('DEBUG MODE NOT IMPLEMENTED');
	return false;
}


if (typeof(RegisterTab) == "function") {
	/* SPRY INTEGRATION WITH TABS */
	function FindParentTab(node) {
		while (node.parentNode
			&& node.parentNode.className != "TabDisplay"
			&& node.parentNode.nodeName != 'BODY') {
				node = node.parentNode;
		}
	
		if (node.parentNode) {
			return node.parentNode;
		} else {
			return null;
		}
	}
	
	function AddToArray(array, value) {
		var found = false;
		for (var i=0; i<array.length; i++) {
			if (array[i] == value) {
				found = true;
				break;
			}
		}
		if (!found) { array.push(value); }
		
		return array;
	}
	
	if (Spry.Widget.Form.validate) {
		Spry.Widget.Form.superValidate = Spry.Widget.Form.validate;
	} else {
		Spry.Widget.Form.superValidate = function(vform) {};
	}
		
	Spry.Widget.Form.validate = function(vform) {
		var isValid = Spry.Widget.Form.superValidate(vform);
		var q = Spry.Widget.Form.onSubmitWidgetQueue;
		var qlen = q.length;
		var parentTab = null;
		var errTabs = new Array();
		for (var i = 0; i < qlen; i++) {
			if (!q[i].isDisabled() && q[i].form == vform) {
				if (typeof(q[i].element) != "undefined") {
					parentTab = FindParentTab(q[i].element);
					if (parentTab) {
						parentTab.__button.style.backgroundColor='';
						if (!q[i].validate()) {
							errTabs = AddToArray(errTabs, parentTab);
						}
					}
				}
			}
		}
		
		for (var i = 0; i < errTabs.length; i++) {
			//errTabs[i].__button.style.backgroundColor = '#FF0000';
			errTabs[i].__button.className = 'error';
		}
		
		return isValid;
	}
}