// core functionality required
var ERROR_OK	=  0;
var ERROR_ERROR	= -1;

var _errors		= [];
function clearErrors() { _errors = []; }

function validateRequiredFields( required )
{
	if( !required ) { return false; }
	
	clearErrors();
	
	// loop thru the required fields and validate
	// the data
	var i;
	var element;
	var reqd;
	for( i=0; i<required.length; i++ )
	{
		reqd	= required[i];
		element = $("#"+reqd.id);
		if( !reqd.handler(element.val()) ) { _errors.push(reqd.label); }
	}
	
	return !(_errors.length > 0);
}

function serialize( formId )
{
	var params = {};
	jQuery.each(jQuery("#"+formId).serializeArray(), function( k, v ) { 
		if( params[v.name] )
		{
			if( params[v.name] instanceof Array ) { params[v.name].push(v.value); }
			else
			{
				var tmp = params[v.name];
				params[v.name] = [tmp, v.value];
			}
		}
		else { params[v.name] = v.value; }
	});
	
	return params;
}

function resetForm( formId )
{
	if( !formId ) { return; }
	
 	$(":input", "#"+formId)
 		.not(":button, :submit, :reset")
 		.val("")
 		.removeAttr("checked")
 		.removeAttr("selected");
}
