(function(a){a.fn.formValidator=function(b){a(this).click(function(){var c=a.formValidator(b);if(c&&jQuery.isFunction(b.onSuccess)){b.onSuccess();return false}else{return c}})};a.formValidator=function(d){var c=a.extend({},a.formValidator.defaults,d);var b=true;var e="";a(c.scope+" .error-both, "+c.scope+" .error-same, "+c.scope+" .error-input").removeClass("error-both").removeClass("error-same").removeClass("error-input");a(c.scope+" .req-email, "+c.scope+" .req-string, "+c.scope+" .req-same, "+c.scope+" .req-both, "+c.scope+" .req-numeric, "+c.scope+" .req-date, "+c.scope+" .req-min").each(function(){thisValid=a.formValidator.validate(a(this),c);b=b&&thisValid.error;if(!thisValid.error){e=thisValid.message}});if((c.scope!="")&&b){a(c.errorDiv).fadeOut()}if(!b&&e!=""){var f=(c.customErrMsg!="")?c.customErrMsg:e;a(c.errorDiv).hide().html(f).fadeIn()}return b};a.formValidator.validate=function(f,b){var g=f.val();var i=b.errorClass;var k=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;var e=/(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)|(^-?\d*$)/;var d=true;var l=true;var j="";if(f.hasClass("req-string")){d=(g!="");if(!d){j=b.errorMsg.reqString}l=l&&d}if(f.hasClass("req-same")){d=true;group=f.attr("rel");d=true;a(b.scope+' .req-same[rel="'+group+'"]').each(function(){if(a(this).val()!=g||g==""){d=false}});if(!d){a(b.scope+' .req-same[rel="'+group+'"]').parent().parent().addClass("error-same");j=b.errorMsg.reqSame}else{a(b.scope+' .req-same[rel="'+group+'"]').parent().parent().removeClass("error-same")}l=l&&d}if(f.hasClass("req-both")){d=true;if(g!=""){group=f.attr("rel");a(b.scope+' .req-both[rel="'+group+'"]').each(function(){if(a(this).val()==""){d=false}});if(!d){a(b.scope+' .req-both[rel="'+group+'"]').parent().parent().addClass("error-both");j=b.errorMsg.reqBoth}else{a(b.scope+' .req-both[rel="'+group+'"]').parent().parent().removeClass("error-both")}}l=l&&d}if(f.hasClass("req-email")){d=k.test(g);if(!d){j=(g=="")?b.errorMsg.reqMailEmpty:b.errorMsg.reqMailNotValid}l=l&&d}if(f.hasClass("req-date")){d=true;var h=g.split(b.dateSeperator);var c=new Date();if(g==""){d=true}else{if(h.length<3){d=false}else{d=(h[0]<=12)&&(h[1]<=31)&&(h[2]<=c.getFullYear())}}if(!d){j=b.errorMsg.reqDate}l=l&&d}if(f.hasClass("req-min")){d=(g.length>=f.attr("minlength"));if(!d){j=b.errorMsg.reqMin.replace("%1",f.attr("minlength"))}l=l&&d}if(f.hasClass("req-numeric")){d=e.test(g);if(!d){j=b.errorMsg.reqNum}l=l&&d}if(l){f.removeClass(i)}else{f.addClass(i)}return{error:l,message:j}};a.formValidator.defaults={onSuccess:null,scope:"",errorClass:"error-input",errorDiv:"",errorMsg:{reqString:"Tous les champs obligatoires n'ont pas été renseignés",reqDate:"La date n'est pas valide",reqNum:"Seul les nombres sont autorisés",reqMailNotValid:"Votre adresse email n'est pas valide",reqMailEmpty:"Veuillez renseigner votre adresse email",reqSame:"Les champs répétés ne sont pas identiques",reqBoth:"Related field(s) required",reqMin:"La longueur minimale est de %1 caractères"},customErrMsg:"",dateSeperator:"."}})(jQuery);
