(function($,undefined){var
defaults={outputMode:"tooltip",scrollTo:false,modalErrorsClickable:true,defaultFieldName:"This field",elementSupport:":text, :password, textarea, select, :radio, :checkbox",argToString:function(val){return val.getDate?(val.getMonth()+1)+"/"+val.getDate()+"/"+val.getFullYear():val;},debugPrivates:false},__private;$.validity={settings:$.extend(defaults,{}),patterns:{integer:/^\d+$/,date:/^([012]?\d|30|31)\/((0?\d)|(1[012]))\/\d{1,4}$/,email:/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,usd:/^\$?((\d{1,3}(,\d{3})*)|\d+)(\.(\d{2})?)?$/,url:/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,number:/^[+-]?(\d+(\.\d*)?|\.\d+)([Ee]-?\d+)?$/,zip:/^\d{5}(-\d{4})?$/,phone:/^[2-9]\d{2}-\d{3}-\d{4}$/,guid:/^(\{?([0-9a-fA-F]){8}-(([0-9a-fA-F]){4}-){3}([0-9a-fA-F]){12}\}?)$/,time12:/^((0?\d)|(1[12])):[0-5]\d?\s?[aApP]\.?[mM]\.?$/,time24:/^(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})$/,nonHtml:/^[^<>]*$/},messages:{require:"#{field} doit être renseigné.",match:"#{field} a un format invalide.",integer:"#{field} must be a positive, whole number.",date:"#{field} doit être une date. (dd/mm/yyyy)",email:"#{field} must be formatted as an email.",usd:"#{field} must be formatted as a US Dollar amount.",url:"#{field} must be formatted as a URL.",number:"#{field} doit être un nombre.",zip:"#{field} must be formatted as a zipcode ##### or #####-####.",phone:"#{field} must be formatted as a phone number ###-###-####.",guid:"#{field} must be formatted as a guid like {3F2504E0-4F89-11D3-9A0C-0305E82C3301}.",time24:"#{field} must be formatted as a 24 hour time: 23:00.",time12:"#{field} must be formatted as a 12 hour time: 12:00 AM/PM",lessThan:"#{field} must be less than #{max}.",lessThanOrEqualTo:"#{field} must be less than or equal to #{max}.",greaterThan:"#{field} must be greater than #{min}.",greaterThanOrEqualTo:"#{field} must be greater than or equal to #{min}.",range:"#{field} must be between #{min} and #{max}.",tooLong:"#{field} cannot be longer than #{max} characters.",tooShort:"#{field} cannot be shorter than #{min} characters.",nonHtml:"#{field} cannot contain HTML characters.",alphabet:"#{field} contains disallowed characters.",minCharClass:"#{field} cannot have more than #{min} #{charClass} characters.",maxCharClass:"#{field} cannot have less than #{min} #{charClass} characters.",equal:"Values don't match.",distinct:"A value was repeated.",sum:"Values don't add to #{sum}.",sumMax:"The sum of the values must be less than #{max}.",sumMin:"The sum of the values must be greater than #{min}.",radioChecked:"The selected value is not valid.",generic:"Invalid."},out:{start:function(){this.defer("start");},end:function(results){this.defer("end",results);},raise:function($obj,msg){this.defer("raise",$obj,msg);},raiseAggregate:function($obj,msg){this.defer("raiseAggregate",$obj,msg);},defer:function(name){var
v=$.validity,o=v.outputs[v.settings.outputMode];o[name].apply(o,Array.prototype.slice.call(arguments,1));}},charClasses:{alphabetical:/\w/g,numeric:/\d/g,alphanumeric:/[A-Za-z0-9]/g,symbol:/[^A-Za-z0-9]/g},outputs:{},__private:undefined,setup:function(options){this.settings=$.extend(this.settings,options);if(this.settings.debugPrivates){this.__private=__private;}
else{this.__private=undefined;}},report:null,isValidating:function(){return!!this.report;},start:function(){this.out.start();this.report={errors:0,valid:true};},end:function(){var results=this.report||{errors:0,valid:true};this.report=null;this.out.end(results);return results;},clear:function(){this.start();this.end();}};$.fn.extend({validity:function(arg){return this.each(function(){if(this.tagName.toLowerCase()=="form"){var f=null;if(typeof(arg)=="string"){f=function(){$(arg).require();};}
else if($.isFunction(arg)){f=arg;}
if(arg){$(this).bind("submit",function(){$.validity.start();f();return $.validity.end().valid;});}}});},require:function(msg){return validate(this,function(obj){var val=$(obj).val();var res=val.length;return res;},msg||$.validity.messages.require);},match:function(rule,msg){if(!msg){msg=$.validity.messages.match;if(typeof(rule)==="string"&&$.validity.messages[rule]){msg=$.validity.messages[rule];}}
if(typeof(rule)=="string"){rule=$.validity.patterns[rule];}
return validate(this,$.isFunction(rule)?function(obj){return!obj.value.length||rule(obj.value);}:function(obj){if(rule.global){rule.lastIndex=0;}
return!obj.value.length||rule.test(obj.value);},msg);},range:function(min,max,msg){return validate(this,min.getTime&&max.getTime?function(obj){var d=new Date(obj.value);return d>=new Date(min)&&d<=new Date(max);}:min.substring&&max.substring&&Big?function(obj){var n=new Big(obj.value);return(n.greaterThanOrEqualTo(new Big(min))&&n.lessThanOrEqualTo(new Big(max)));}:function(obj){var f=parseFloat(obj.value);return f>=min&&f<=max;},msg||format($.validity.messages.range,{min:$.validity.settings.argToString(min),max:$.validity.settings.argToString(max)}));},greaterThan:function(min,msg){return validate(this,min.getTime?function(obj){return new Date(obj.value)>min;}:min.substring&&Big?function(obj){return new Big(obj.value).greaterThan(new Big(min));}:function(obj){return parseFloat(obj.value)>min;},msg||format($.validity.messages.greaterThan,{min:$.validity.settings.argToString(min)}));},greaterThanOrEqualTo:function(min,msg){return validate(this,min.getTime?function(obj){return new Date(obj.value)>=min;}:min.substring&&Big?function(obj){return new Big(obj.value).greaterThanOrEqualTo(new Big(min));}:function(obj){return parseFloat(obj.value)>=min;},msg||format($.validity.messages.greaterThanOrEqualTo,{min:$.validity.settings.argToString(min)}));},lessThan:function(max,msg){return validate(this,max.getTime?function(obj){return new Date(obj.value)<max;}:max.substring&&Big?function(obj){return new Big(obj.value).lessThan(new Big(max));}:function(obj){return parseFloat(obj.value)<max;},msg||format($.validity.messages.lessThan,{max:$.validity.settings.argToString(max)}));},lessThanOrEqualTo:function(max,msg){return validate(this,max.getTime?function(obj){return new Date(obj.value)<=max;}:max.substring&&Big?function(obj){return new Big(obj.value).lessThanOrEqualTo(new Big(max));}:function(obj){return parseFloat(obj.value)<=max;},msg||format($.validity.messages.lessThanOrEqualTo,{max:$.validity.settings.argToString(max)}));},maxLength:function(max,msg){return validate(this,function(obj){return obj.value.length<=max;},msg||format($.validity.messages.tooLong,{max:max}));},minLength:function(min,msg){return validate(this,function(obj){return obj.value.length>=min;},msg||format($.validity.messages.tooShort,{min:min}));},alphabet:function(alpha,msg){var chars=[];return validate(this,function(obj){for(var idx=0;idx<obj.value.length;++idx){if(alpha.indexOf(obj.value.charAt(idx))==-1){chars.push(obj.value.charAt(idx));return false;}}
return true;},msg||format($.validity.messages.alphabet,{chars:chars.join(", ")}));},minCharClass:function(charClass,min,msg){if(typeof(charClass)=="string"){charClass=charClass.toLowerCase();if($.validity.charClasses[charClass]){charClass=$.validity.charClasses[charClass];}}
return validate(this,function(obj){return(obj.value.match(charClass)||[]).length>=min;},msg||format($.validity.messages.minCharClass,{min:min,charClass:charClass}));},maxCharClass:function(charClass,max,msg){if(typeof(charClass)=="string"){charClass=charClass.toLowerCase();if($.validity.charClasses[charClass]){charClass=$.validity.charClasses[charClass];}}
return validate(this,function(obj){return(obj.value.match(charClass)||[]).length<=max;},msg||format($.validity.messages.maxCharClass,{max:max,charClass:charClass}));},nonHtml:function(msg){return validate(this,function(obj){return $.validity.patterns.nonHtml.test(obj.value);},msg||$.validity.messages.nonHtml);},equal:function(arg0,arg1){var
$reduction=(this.reduction||this).filter($.validity.settings.elementSupport),transform=function(val){return val;},msg=$.validity.messages.equal;if($reduction.length){if($.isFunction(arg0)){transform=arg0;if(typeof(arg1)=="string"){msg=arg1;}}
else if(typeof(arg0)=="string"){msg=arg0;}
var
map=$.map($reduction,function(obj){return transform(obj.value);}),first=map[0],valid=true;for(var i in map){if(map[i]!=first){valid=false;}}
if(!valid){raiseAggregateError($reduction,msg);this.reduction=$([]);}}
return this;},distinct:function(arg0,arg1){var
$reduction=(this.reduction||this).filter($.validity.settings.elementSupport),transform=function(val){return val;},msg=$.validity.messages.distinct,subMap=[],valid=true;if($reduction.length){if($.isFunction(arg0)){transform=arg0;if(typeof(arg1)=="string"){msg=arg1;}}
else if(typeof(arg0)=="string"){msg=arg0;}
var map=$.map($reduction,function(obj){return transform(obj.value);});for(var i1=0;i1<map.length;++i1){if(map[i1].length){for(var i2=0;i2<subMap.length;++i2){if(subMap[i2]==map[i1]){valid=false;}}
subMap.push(map[i1]);}}
if(!valid){raiseAggregateError($reduction,msg);this.reduction=$([]);}}
return this;},sum:function(sum,msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.length&&sum!=numericSum($reduction)){raiseAggregateError($reduction,msg||format($.validity.messages.sum,{sum:sum}));this.reduction=$([]);}
return this;},sumMax:function(max,msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.length&&max<numericSum($reduction)){raiseAggregateError($reduction,msg||format($.validity.messages.sumMax,{max:max}));this.reduction=$([]);}
return this;},sumMin:function(min,msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.length&&min<numericSum($reduction)){raiseAggregateError($reduction,msg||format($.validity.messages.sumMin,{min:min}));this.reduction=$([]);}
return this;},radioChecked:function(val,msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.is(":radio")&&$reduction.find(":checked").val()!=val){raiseAggregateError($reduction,msg||$.validity.messages.radioChecked);}},radioNotChecked:function(val,msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.is(":radio")&&$reduction.filter(":checked").val()==val){raiseAggregateError($reduction,msg||$.validity.messages.radioChecked);}},checkboxChecked:function(msg){var $reduction=(this.reduction||this).filter($.validity.settings.elementSupport);if($reduction.is(":checkbox")&&!$reduction.is(":checked")){raiseAggregateError($reduction,msg||$.validity.messages.radioChecked);}},assert:function(expression,msg){var $reduction=this.reduction||this;if($reduction.length){if($.isFunction(expression)){return validate(this,expression,msg||$.validity.messages.generic);}
else if(!expression){raiseAggregateError($reduction,msg||$.validity.messages.generic);this.reduction=$([]);}}
return this;},fail:function(msg){return this.assert(false,msg);}});function validate($obj,regimen,message){var
$reduction=($obj.reduction||$obj).filter($.validity.settings.elementSupport),elements=[];$reduction.each(function(){if(regimen(this)){elements.push(this);}
else{raiseError(this,format(message,{field:infer(this)}));}});$obj.reduction=$(elements);return $obj;}
function addToReport(){if($.validity.isValidating()){$.validity.report.errors++;$.validity.report.valid=false;}}
function raiseError(obj,msg){addToReport();$.validity.out.raise($(obj),msg);}
function raiseAggregateError($obj,msg){addToReport();$.validity.out.raiseAggregate($obj,msg);}
function numericSum(obj){var accumulator=0;obj.each(function(){var n=parseFloat(this.value);accumulator+=isNaN(n)?0:n;});return accumulator;}
function format(str,obj){for(var p in obj){if(obj.hasOwnProperty(p)){str=str.replace(new RegExp("#\\{"+p+"\\}","g"),obj[p]);}}
return capitalize(str);}
function infer(field){var
$f=$(field),id=$f.prop("id"),ret=$.validity.settings.defaultFieldName;if($f.prop("title").length){ret=$f.prop("title");}
else if(/^([A-Z0-9][a-z]*)+$/.test(id)){ret=id.replace(/([A-Z0-9])[a-z]*/g," $&");}
else if(/^[a-z0-9]+(_[a-z0-9]+)*$/.test(id)){var arr=id.split("_");for(var i=0;i<arr.length;++i){arr[i]=capitalize(arr[i]);}
ret=arr.join(" ");}
return $.trim(ret);}
function capitalize(sz){return sz.substring?sz.substring(0,1).toUpperCase()+sz.substring(1,sz.length):sz;}
__private={validate:validate,addToReport:addToReport,raiseError:raiseError,raiseAggregateError:raiseAggregateError,numericSum:numericSum,format:format,infer:infer,capitalize:capitalize};})(jQuery);(function($){$.validity.outputs.tooltip={tooltipClass:"validity-tooltip",start:function(){$("."+$.validity.outputs.tooltip.tooltipClass).remove();},end:function(results){},raise:function($obj,msg){var pos=$obj.offset();pos.left+=$obj.width()+18;pos.top+=8;$("<div class=\"validity-tooltip\">"+
msg+"<div class=\"validity-tooltip-outer\">"+"<div class=\"validity-tooltip-inner\"></div>"+"</div>"+"</div>").click(function(){$obj.focus();$(this).fadeOut();}).css(pos).hide().appendTo("body").fadeIn();},raiseAggregate:function($obj,msg){if($obj.length){this.raise($obj.filter(":last"),msg);}}};})(jQuery);(function($){function getIdentifier($obj){return $obj.attr('id').length?$obj.attr('id'):$obj.attr('name');}
$.validity.outputs.label={cssClass:"error",start:function(){$("."+$.validity.settings.cssClass).remove();},end:function(results){if(!results.valid&&$.validity.settings.scrollTo){location.hash=$("."+$.validity.outputs.label.cssClass+":eq(0)").attr('for');}},raise:function($obj,msg){var
labelSelector="."+$.validity.outputs.label.cssClass+"[for='"+getIdentifier($obj)+"']";if($(labelSelector).length){$(labelSelector).text(msg);}
else{$("<label/>").attr("for",getIdentifier($obj)).addClass($.validity.outputs.label.cssClass).text(msg).click(function(){if($obj.length){$obj[0].select();}}).insertAfter($obj);}},raiseAggregate:function($obj,msg){if($obj.length){this.raise($($obj.get($obj.length-1)),msg);}}};})(jQuery);(function($){var
errorClass="validity-modal-msg",container="body";$.validity.outputs.modal={start:function(){$("."+errorClass).remove();},end:function(results){if(!results.valid&&$.validity.settings.scrollTo){location.hash=$("."+errorClass+":eq(0)").attr('id');}},raise:function($obj,msg){if($obj.length){var
off=$obj.offset(),obj=$obj.get(0),errorStyle={left:parseInt(off.left+$obj.width()+4,10)+"px",top:parseInt(off.top-10,10)+"px"};$("<div/>").addClass(errorClass).css(errorStyle).text(msg).click($.validity.settings.modalErrorsClickable?function(){$(this).remove();}:null).appendTo(container);}},raiseAggregate:function($obj,msg){if($obj.length){this.raise($($obj.get($obj.length-1)),msg);}}};})(jQuery);(function($){var
container=".validity-summary-container",erroneous="validity-erroneous",errors="."+erroneous,wrapper="<li/>",buffer=[];$.validity.outputs.summary={start:function(){$(errors).removeClass(erroneous);buffer=[];},end:function(results){$(container).hide().find("ul").html('');if(buffer.length){for(var i=0;i<buffer.length;++i){$(wrapper).text(buffer[i]).appendTo(container+" ul");}
$(container).show();if($.validity.settings.scrollTo){location.hash=$(errors+":eq(0)").attr("id");}}},raise:function($obj,msg){buffer.push(msg);$obj.addClass(erroneous);},raiseAggregate:function($obj,msg){this.raise($obj,msg);},container:function(){document.write("<div class=\"validity-summary-container\">"+"The form didn't submit for the following reason(s):"+"<ul></ul>"+"</div>");}};})(jQuery);
