
(function($){$.fn.validationEngineLanguage=function(){};$.validationEngineLanguage={newLang:function(){$.validationEngineLanguage.allRules={"required":{"regex":"none","alertText":"* Ce champs est requis","alertTextCheckboxMultiple":"*Choisir un option","alertTextCheckboxe":"* Ce checkbox est requis"},"length":{"regex":"none","alertText":"* Entre ","alertText2":" et ","alertText3":" caractères requis"},"date":{"regex":"/^[0-9]{2}\.\[0-9]{2}\.\[0-9]{4}$/","alertText":"* Date invalide, format jj.mm.aaaa requis"},"heure":{"regex":"/^[0-9]{2}\:\[0-9]{2}$/","alertText":"Format hh:mm requis"},"onlyLetter":{"regex":"/^[a-zA-Z\ \']+$/","alertText":"Champ obligatoire"}}}}})(jQuery);$(document).ready(function(){$.validationEngineLanguage.newLang()
$("[class^=validate]").validationEngine({success:false,failure:function(){}})});jQuery.fn.validationEngine=function(settings){allRules=$.validationEngineLanguage.allRules
settings=jQuery.extend({allrules:allRules,inlineValidation:true,success:false,failure:function(){}},settings);$("form").bind("submit",function(caller){if(submitValidation(this)==false){if(settings.success){settings.success&&settings.success();return false;}}else{settings.failure&&settings.failure();return false;}})
if(settings.inlineValidation==true){$(this).not("[type=checkbox]").bind("blur",function(caller){loadValidation(this)})
$(this+"[type=checkbox]").bind("click",function(caller){loadValidation(this)})}
var buildPrompt=function(caller,promptText,showTriangle){var divFormError=document.createElement('div')
var formErrorContent=document.createElement('div')
var arrow=document.createElement('div')
$(divFormError).addClass("formError")
$(divFormError).addClass($(caller).attr("id"))
$(formErrorContent).addClass("formErrorContent")
$(arrow).addClass("formErrorArrow")
$("body").append(divFormError)
$(divFormError).append(arrow)
$(divFormError).append(formErrorContent)
if(showTriangle==true){$(arrow).html('<div class="line10"></div><div class="line9"></div><div class="line8"></div><div class="line7"></div><div class="line6"></div><div class="line5"></div><div class="line4"></div><div class="line3"></div><div class="line2"></div><div class="line1"></div>');}
$(formErrorContent).html(promptText)
callerTopPosition=$(caller).offset().top;callerleftPosition=$(caller).offset().left;callerWidth=$(caller).width()
callerHeight=$(caller).height()
inputHeight=$(divFormError).height()
callerleftPosition=callerleftPosition+callerWidth-30
callerTopPosition=callerTopPosition-inputHeight-10
$(divFormError).css({top:callerTopPosition,left:callerleftPosition,opacity:0})
$(divFormError).fadeTo("fast",0.8);};var updatePromptText=function(caller,promptText){updateThisPrompt=$(caller).attr("id")
$("."+updateThisPrompt).find(".formErrorContent").html(promptText)
callerTopPosition=$(caller).offset().top;inputHeight=$("."+updateThisPrompt).height()
callerTopPosition=callerTopPosition-inputHeight-10
$("."+updateThisPrompt).animate({top:callerTopPosition});}
var loadValidation=function(caller){rulesParsing=$(caller).attr('class');rulesRegExp=/\[(.*)\]/;getRules=rulesRegExp.exec(rulesParsing);str=getRules[1]
pattern=/\W+/;result=str.split(pattern);var validateCalll=validateCall(caller,result)
return validateCalll};var validateCall=function(caller,rules){var promptText=""
var prompt=$(caller).attr("id");var caller=caller;var callerName=$(caller).attr("name");isError=false;callerType=$(caller).attr("type");for(i=0;i<rules.length;i++){switch(rules[i]){case"optional":if(!$(caller).val()){closePrompt(caller)
return isError}
break;case"required":_required(caller,rules);break;case"custom":_customRegex(caller,rules,i);break;case"length":_length(caller,rules,i);break;default:;};};if(isError==true){var showTriangle=true
if($("input[name="+callerName+"]").size()>1&&callerType=="radio"){caller=$("input[name="+callerName+"]:first")
showTriangle=false
var callerId="."+$(caller).attr("id")
if($(callerId).size()==0){isError=true}else{isError=false}}
if($("input[name="+callerName+"]").size()>1&&callerType=="checkbox"){caller=$("input[name="+callerName+"]:first")
showTriangle=false
var callerId="div."+$(caller).attr("id")
if($(callerId).size()==0){isError=true}else{isError=false}}
if(isError==true){($("div."+prompt).size()==0)?buildPrompt(caller,promptText,showTriangle):updatePromptText(caller,promptText)}}else{if($("input[name="+callerName+"]").size()>1&&callerType=="radio"){caller=$("input[name="+callerName+"]:first")}
if($("input[name="+callerName+"]").size()>1&&callerType=="checkbox"){caller=$("input[name="+callerName+"]:first")}
closePrompt(caller)}
function _required(caller,rules){callerType=$(caller).attr("type")
if(callerType=="text"||callerType=="password"||callerType=="textarea"){if(!$(caller).val()){isError=true
promptText+=settings.allrules[rules[i]].alertText+"<br />"}}}
function _customRegex(caller,rules,position){customRule=rules[position+1]
pattern=eval(settings.allrules[customRule].regex)
if(!pattern.test($(caller).attr('value'))){isError=true
promptText+=settings.allrules[customRule].alertText+"<br />"}}
function _length(caller,rules,position){startLength=eval(rules[position+1])
endLength=eval(rules[position+2])
feildLength=$(caller).attr('value').length
if(feildLength<startLength||feildLength>endLength){isError=true
promptText+=settings.allrules["length"].alertText+startLength+settings.allrules["length"].alertText2+endLength+settings.allrules["length"].alertText3+"<br />"}}
return(isError)?isError:false;};var closePrompt=function(caller){closingPrompt=$(caller).attr("id")
$("."+closingPrompt).fadeTo("fast",0,function(){$("."+closingPrompt).remove()});};var submitValidation=function(caller){var stopForm=false
$(caller).find(".formError").remove()
var toValidateSize=$(caller).find("[class^=validate]").size()
$(caller).find("[class^=validate]").each(function(){var validationPass=loadValidation(this)
return(validationPass)?stopForm=true:"";});if(stopForm){destination=$(".formError:first").offset().top;$("html:not(:animated),body:not(:animated)").animate({scrollTop:destination},1100)
return true;}else{return false}};};

