var FormSubmit = Class.create();
Object.extend(FormSubmit.prototype, {

	_oForm: null,
	_postQuery: null,
	_submited: null,
	_onsubmit: null,
	
	initialize: function(id, onsubmit){
		this.setObject(id);
		this._submited = false;
		this.setQuery("dummy=1");

		if(typeof(onsubmit) == 'function')
			this._onsubmit = onsubmit;
	},
	
	submit: function(){this.submitt()},
	
	submitt: function(){
		var str="";

		var fields = this._oForm.getElementsByTagName('input');
		for(var i=0;i<fields.length;i++){
			if(fields[i].getAttribute('type').toLowerCase() == 'radio'){	// Si es radio, manda el Value solo si esta checked
				if(fields[i].checked)
					str += ((str == "") ? "" : "&" ) + fields[i].name + "=" + fields[i].value;
			}else																																							// Si no es radio manda nomas...
				str += ((str == "") ? "" : "&" ) + fields[i].name + "=" + fields[i].value;
		}

		var fields = this._oForm.getElementsByTagName('select');
		for(var i=0;i<fields.length;i++){
			if(fields[i].getAttribute('multiple') != null){
				for(var z=0;z<fields[i].options.length;z++){
					if(fields[i].options[z].selected)
						str += ((str == "") ? "" : "&" ) + fields[i].name + "[]" + "=" + fields[i].options[z].value;
				}
			}else{
				str += ((str == "") ? "" : "&" ) + fields[i].name + "=" + fields[i].value;
			}
		}

		var fields = this._oForm.getElementsByTagName('textarea');
		for(var i=0;i<fields.length;i++)
			str += ((str == "") ? "" : "&" ) + fields[i].name + "=" + fields[i].value;

		this.setQuery(str);
		this.callAJAX();
		
		this._submited = true;
	},

	setObject: function(id){
		this._oForm = $(id);
	},
	
	getObject: function(){
		return this._oForm;
	},
	
	setQuery: function(s){
		this._postQuery = s;
	},
	
	getQuery: function(){
		this._submited = false;
		return this._postQuery;
	},
	
	hasSubmited: function(){
		return this._submited ? true : false;
	},
	
	callAJAX: function(){
		if(this._onsubmit){
			var me = this;
			
			var method = this._oForm.getAttribute('method') ? this._oForm.getAttribute('method') : 'post';
			
			var rqD= new Requester(method);
			rqD.request(this._oForm.getAttribute('action'), this.getQuery(), function(doc) {
				me._onsubmit(doc);
			});
		}
	}
});
