/*
 The amazing JQRPC...
    Replacement for base.js,AJAXBase.js and AJAXFramework.js
    Made possible by the inclusion of the jQuery library...

    Written as a plugin for jQuery. allows simple Remote Procedure Calling (RPC)
    using the JSON data format. To use RPC server-side include JQRPC.php

 Dependencies: DWjQuery.js, json2.js
*/


$.extend({
	JQRPC : function(url,fn,args,callback)
			{
				$.ajax({
					url: url,
					type: 'POST',
					data:{
						'params':JSON.stringify({'fn':fn , 'args' : args })   
					},
					success: callback,
					dataType: 'json'
				});
			}
		});


/**
	Serialize a form's values into a JS object.
	@tparam string src The form element ID 
*/
function serializeForm(src)
{
	var formElements = new Object();
	var src=$("#"+src)[0];
	for(var i = 0; i<src.elements.length; i++)
	{
		var currElmnt = src.elements[i];
		if(!(currElmnt.name==undefined||currElmnt.name==null||currElmnt.name==""))
		{
			if(currElmnt.type=='file')
			{
				//Thanks again Microsoft, for intruducing a "security feature" which breaks everything... Well done!
				stupidDumbIEStr = 'C:\\fakepath\\';
				dumbStupidRetardedIE = currElmnt.value.indexOf(stupidDumbIEStr);
				if(dumbStupidRetardedIE>-1)
					formElements[currElmnt.name] = currElmnt.value.substr(stupidDumbIEStr.length);
				else
					formElements[currElmnt.name] = currElmnt.value;
			}
			else
				formElements[currElmnt.name] = currElmnt.value;
			
		}
	}
	return formElements;
}


/**
	generic submit form function... serialises the form data and sends it as a AJAX post.
	@param url : The server-side script to call
	@param src : The form to submit
	@param dest : The place to write the results to.
	@param postProcess : The javascript functions to call when done. Can be an array, called in postProcessAjaxFunction...
 add any additional arguments in strict order of the particular ajax function's requirements.
*/	
function SubmitForm(url,src,dest,postProcess)
{
	var serialForm = serializeForm(src);

	$.JQRPC(url,src+'Handler', {
			formData: serialForm,//would need to call json_decode on the server side...
			formName: src,
			dest : dest
		}, postProcess);
};



