var AjaxFormValidator = Class.create();

AjaxFormValidator.prototype = {
	form: '',
	url: '',
	additionalParams: '',
	inlineElem: '',
	errorDisplay: 'alert',
	errors: '',
	callback: null,

	initialize: function(form,url,additionalParams) {
		this.form = $(form);
		this.url = url;
	},

	validate: function(additionalparams) {
		if(!additionalparams) additionalparams = '';
		var params = Form.serialize(this.form) + additionalparams;
		var myAjax = new Ajax.Request(this.url,{method:'post', parameters: params, onSuccess: this.processForm.bind(this)});
		return false;
	},

	processForm: function(req) {
		var result = eval( '(' + req.responseText + ')' );
		this.errores = result.errores;
		this.minimos = result.minimos;
		this.todos = result.todos;
		//salir = false;
		//if(this.minimos && !this.todos) {
		//	salir=confirm('Ha cubierto los campos mínimos. Si lo desea puede continuar su '
		//	+'registro en otro momento. En ese caso pulse "Si". Se le enviará un recordatorio diario.');
		//
		//}
		if(this.todos) {
		  var obj = $('boton_submit');
	    obj.disabled = !(obj.disabled);
	    var z = (obj.disabled) ? 'disabled' : 'enabled';
		  obj.value="Enviar";
			mensajeEstado('Ha realizado su preinscripción correctamente. En caso de obtener plaza nos pondremos en contacto con usted antes del inicio del curso');
			this.form.submit();
		} else {
		  var obj = $('boton_submit');
	    obj.disabled = !(obj.disabled);
	    var z = (obj.disabled) ? 'disabled' : 'enabled';
		  obj.value="Enviar";
			mensajeEstado('Revise los datos introducidos.');
			switch(this.errorDisplay) {
				case 'none':
					break;
				case 'inline':
					this.showErrorsInline(this.errores);
					break;
				default:
					this.showErrorsAlert(this.errores);
			}
		}
	},

	showErrorsAlert: function(errors) {
		var errorString = '';
		errors.each(function(error){
			errorString += error + '\n';
		});
		alert(errorString);
	},

	showErrorsInline: function(errors) {
		var html = '<ul>';
		errors.each(function(error){
			html += '<li>' + error + '</li>';
		});
		html += '</ul>';
		$(this.inlineElem).innerHTML = html;
		$(this.inlineElem).show();
	}
}