jQuery.extend({
	// Serialize an array of form elements or a set of
	// key/values into a query string
	recursive_param: function( s, a , name) {
			if (typeof(a)=="number" || typeof(a)=="string" || typeof(a)=="boolean")
			{
				if(name!="")
				{
					s.push( encodeURIComponent(name) + "=" + encodeURIComponent( a ) );
				}
			}
//			else if ( a.constructor == Array || a.jquery )
//			{
//				alert(dump(a));
//				// If an array was passed in, assume that it is an array
//				// of form elements
//				// Serialize the form elements
//				jQuery.each( a, function(){
//					s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) );
//				});
//			}
			else // es un objeto (como un hash de php)
			{
				// Serialize the key/values
				for ( var j in a )
				{
					var varname = (name!=""?name+"["+j+"]":j);
					// If the value is an array then the key names need to be repeated
					jQuery.recursive_param(s,a[j],varname);
				}
			}
	}
});

jQuery.extend({
	// Serialize an array of form elements or a set of
	// key/values into a query string
	param: function( a ) {
		var s = [];

		jQuery.recursive_param(s,a,"");

		//alert(s.join("&").replace(/%20/g, "+"))
		// Return the resulting serialization
		return s.join("&").replace(/%20/g, "+");
	}


});

