var ActionForms = new Class({
	Implements: Options,

	options: {
		action_forms : 'form',
		action_function : null,
		action_url : 'JsonServer.php'
	},

	initialize: function(options){
		this.setOptions(options);
		this.action_forms = $$(this.options.action_forms);
		this.registerForms();
	},
	
	registerForms : function()
	{
		if(this.action_forms != null)
		{
			LOADER.addLoad();
			this.action_forms.each(function(el){
				LOADER.addLoad();
				var input = el.getElements("input");
				var action_btn = null;
				if(input != null)
				{
					input.each(function(el, key){
						if(el.get("type") != null && el.get("type") == "submit")
						{
							if(action_btn == null)
								action_btn = el;
						}
					});
				}
				if(action_btn != null)
				{
					action_btn.addEvent("click", function(event){
						LOADER.addLoad();
						event.stop();
						var data = new Hash();
						var input = el.getElements("input");
						if(input != null)
						{
							input.each(function(el, key){
								if(el.name != null)
								{
									if(el.type == "checkbox")
									{
										if(el.checked)
											data.set(el.name, el.value);
									}
									else
										data.set(el.name, el.value);
								}
							});
						}
						var textareas = el.getElements("textarea");
						if(textareas != null)
						{
							textareas.each(function(el, key){
								if(el.name != null)
								{
									data.set(el.name, el.get("value"));
								}
							});
						}
						new Request.JSON(
						{
							url: this.options.action_url, 
							onSuccess : function(result){
								if(this.options.action_function != null)
								{
									LOADER.addLoad();
									this.options.action_function(result, data, el);
									LOADER.removeLoad();
								}
							}.bind(this)
						}).post(data);
						LOADER.removeLoad();
					}.bind(this));
				}
				LOADER.removeLoad();
			}.bind(this));
			LOADER.removeLoad();
		}
	}
});