
/**************************************************************

	Script		: mooValidate
	Version		: 2.1
	Authors		: Samuel Birch
	Desc		: Form validation
	Licence		: Open Source MIT Licence
	Update		: Christophe Persoz - ogoon media
				: v2.2, work with mootools 1.21 now ;)

**************************************************************/

var Validate=new Class({getOptions:function(){return{validateOnBlur:true,errorClass:"err",errorMsgClass:"errMsg",onFail:Class.empty,onSuccess:true,showErrorsInline:true}},initialize:function(b,a){this.setOptions(this.getOptions(),a);this.form=$(b);this.elements=this.form.getElements(".required");this.list=[];this.elements.each(function(d,c){if(this.options.validateOnBlur){d.addEvent("blur",this.validate.bind(this,d))}}.bind(this));this.form.addEvent("submit",function(h){var f=new Fx.Tween(this.form,{property:"opacity",duration:200});var d=new Event(h);var g=true;this.elements.each(function(j,e){if(!this.validate(j)){d.stop();g=false;this.list.include(j)}else{this.list.erase(j)}}.bind(this));if(g){if(this.options.onSuccess){d.stop();var c=$("response").empty().addClass("ajax-loading");var z=$('msg_resp').setStyle('display','block');this.form.set("send",{onRequest:function(){f.start(1,0);c.set("html","<p>envoi en cours...</p>")},onComplete:function(e){c.removeClass("ajax-loading");c.set("html",e);(function(){location.reload()}).delay(4500);$(b).reset()},onFailure:function(){c.set("html",'<p class="e">une erreur est survenue,<br />merci de bien vouloir recommencer.</p>');(function(){f.start(1)}).delay(4500)}});this.form.send()}}}.bind(this))},validate:function(c){var d=true;this.clearMsg(c);switch(c.type){case"text":case"textarea":case"select-one":if(c.value!=""){if(c.hasClass("email")){var e=/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;if(c.value.toUpperCase().match(e)){d=true}else{d=false;this.setMsg(c,"email invalide")}}if(c.hasClass("number")){var f=/[-+]?[0-9]*\.?[0-9]+/;if(c.value.match(f)){d=true}else{d=false;this.setMsg(c,"Valeur invalide")}}}else{d=false;this.setMsg(c)}break;case"checkbox":if(!c.checked){d=false;this.setMsg(c)}else{d=true}break;case"radio":var a=$A(this.form[c.name]);var b=false;a.each(function(h,g){if(h.checked){b=true}});if(!b){d=false;this.setMsg(a.getLast(),"Choisissez une option")}else{d=true;this.clearMsg(a.getLast())}break}return d},setMsg:function(a,b){if(b==undefined){b=a.title}if(this.options.showErrorsInline){if(a.error==undefined){a.error=new Element("span").addClass(this.options.errorMsgClass).set("text",b).inject(a,"after")}else{a.error.set("text",b)}a.addClass(this.options.errorClass)}},clearMsg:function(a){a.removeClass(this.options.errorClass);if(a.error!=undefined){a.error.destroy();a.error=undefined}}});Validate.implement(new Options);Validate.implement(new Events);