/**
 * form.js
 * 
 * Traitement des formulaires AJAX.
 * Analyse un arbre, retrouve les formulaires, modifie ceux-ci pour que leur soumission soit réalisée en ajax.
 * 
 * Auteur : David Coudrier
 */

var Forms = new Class({
});

Forms.AJAX = new Class ({
	
	Implements: [Options, Events],
	
	options: {
		//onSubmit: $empty(form),
		//onComplete: $empty(form),
		frame: null,
		request: {
			link: 'chain',
			update: false
		}
	},
	
	initialize: function(frame) {
		var forms = frame.getElements('form');
		forms.each(function(form) {
			if (form.get('enctype') != 'multipart/form-data') {
				var f = new Form.AJAX(frame, form);
			}
		});
	}
});


//var Forms = new Class({
//});
//
//Forms.AJAX = new Class ({
//	
//	Implements: [Options, Events],
//	
//	options: {
//		//onSubmit: $empty(form),
//		//onComplete: $empty(form),
//		frame: null,
//		request: {
//			link: 'chain',
//			update: false
//		}
//	},
//	
//	initialize: function(frame) {
//		this.options.request.update = frame;
//		
//		this.request = new Request.HTML(this.options.request);
//		var forms = frame.getElements('form');
//		forms.each(function(form) {
//			if (form.get('enctype') != 'multipart/form-data') {
//				form.addEvent('submit', this._submitHandler.bind(this));
//			}
//		}.bind(this));
//	},
//	
//	_submitHandler: function(event) {
//		form = event.target;
//		this.request.send({
//			url: form.get('action'),
//			method: form.get('method'),
//			data: form
//		});
//		event.stop();
//	}
//});


var Form = new Class({
});

Form.AJAX = new Class ({
	
	Implements: [Options, Events],
	
	options: {
		//onSubmit: $empty(form),
		//onComplete: $empty(form),
		frame: null,
		request: {
			link: 'chain',
			update: false
		}
	},
	
	initialize: function(frame, form) {
		this.options.request.update = frame;

		this.request = new Request.HTML(this.options.request);
		$(form).addEvent('submit', this._submitHandler.bind(this));
	},
	
	_submitHandler: function(event) {
		form = event.target;
		this.request.send({
			url: form.get('action'),
			method: form.get('method'),
			data: form
		});
		event.stop();
	}
});