var ajaxForm = new Class({
	Implements: Options,
	options: {
		subform: false,
		anigif: "/img/ajax-loader.gif",
		transition: Fx.Transitions.Quart.easeInOut,
		duration: 800,
		successheight: false
	},
	initialize: function(el,options){
		this.setOptions(options);
		if(!$(el)) return alert('Error en ajaxform.js: No se encontró el formulario a enviar.');
		
		this.fid = el;
		this.eform = $(el);
		this.url = this.eform.get('action');
		this.subform = this.options.subform && $(this.options.subform) ? this.options.subform : this.eform.getElement('table').get('id');
		this.subformheight = $(this.subform).getCoordinates().height+'px';
		this.successheight = this.options.successheight;
		$(this.subform).setStyle('height',this.subformheight); // fijar el alto
		this.formfx = new Fx.Morph(this.eform,{ duration: this.options.duration, transition: this.options.transition, link:'chain'});

		this.eform.addEvent("submit", function(e){
			e = new Event(e);e.stop(); // No te submitas!
			this.formfx.start({'opacity':0}).chain(function(){ //desaparece
			
				new Element('div',{
					'class':'ajax_loader',
					'styles':{ 'text-align':'center','height':this.subformheight,'line-height':this.subformheight },
					'html':'&nbsp;<img src="'+this.options.anigif+'" alt="Cargando..." />&nbsp;'
				}).inject(this.subform,'after');// loader
				
				$(this.subform).setStyle('display','none');//desaparece el contenedor del form
				
				this.formfx.start({'opacity':1}).chain(function(){// mostrar (loader)
					new Request({
						url:this.url+'?isAjax=1&fid='+this.fid,
						encoding:'iso-8859-1',
						evalScripts:true
					}).send(this.eform);
				}.bind(this));
			}.bind(this));
		}.bindWithEvent(this));
	}
});
