(function($){var defaults={outputMode:"label",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}};$.validity={settings:$.extend(defaults,{}),patterns:{integer:/^\d+$/,date:/^([01]?\d)\/([012]?\d|30|31)\/\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{3}(\.\d{0,2})?|\d{1,3}(\.\d{0,2})?|\.\d{1,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:/^[01]?\d:[0-5]\d?\s?[aApP]\.?[mM]\.?$/,time24:/^(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})$/,nonHtml:/^[^<>]*$/},messages:{require:"#{field} is required.",match:"#{field} is in an invalid format.",integer:"#{field} must be a positive, whole number.",date:"#{field} must be formatted as a date.",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} must be formatted as a number.",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.",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}.",nonHtml:"#{field} cannot contain HTML characters.",generic:"Invalid."},outputs:{},setup:function(options){this.settings=$.extend(this.settings,options)},report:null,isValidating:function(){return !!this.report},start:function(){if(this.outputs[this.settings.outputMode]&&this.outputs[this.settings.outputMode].start){this.outputs[this.settings.outputMode].start()}this.report={errors:0,valid:true}},end:function(){var results=this.report||{errors:0,valid:true};this.report=null;if(this.outputs[this.settings.outputMode]&&this.outputs[this.settings.outputMode].end){this.outputs[this.settings.outputMode].end(results)}return results},clear:function(){this.start();this.end()},expose:function(func){if(typeof(func)!="string"||!/^[a-z0-9_]+$/gi.test(func)||eval("typeof("+func+")")!="function"){return null}return eval(func)}};$.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){return obj.value.length},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)}: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}: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}: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}: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}: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}))},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},nonHtml:function(msg){return validate(this,function(obj){return $.validity.patterns.nonHtml.test(obj.value)},msg||$.validity.messages.nonHtml)},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}});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();if($.validity.outputs[$.validity.settings.outputMode]&&$.validity.outputs[$.validity.settings.outputMode].raise){$.validity.outputs[$.validity.settings.outputMode].raise($(obj),msg)}}function raiseAggregateError($obj,msg){addToReport();if($.validity.outputs[$.validity.settings.outputMode]&&$.validity.outputs[$.validity.settings.outputMode].raiseAggregate){$.validity.outputs[$.validity.settings.outputMode].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){str=str.replace("#{"+p+"}",obj[p])}return capitalize(str)}function infer(field){var $f=$(field),ret=$.validity.settings.defaultFieldName;if($f.attr("title").length){ret=$f.attr("title")}else{if(/^([A-Z0-9][a-z]*)+$/.test(field.id)){ret=field.id.replace(/([A-Z0-9])[a-z]*/g," $&")}else{if(/^[a-z0-9_]*$/.test(field.id)){var arr=field.id.split("_");for(var i=0;i<arr.length;i++){arr[i]=capitalize(arr[i])}ret=arr.join(" ")}}}return ret}function capitalize(sz){return sz.substring?sz.substring(0,1).toUpperCase()+sz.substring(1,sz.length):sz}})(jQuery);(function(a){function b(c){return c.attr("id").length?c.attr("id"):c.attr("name")}a.validity.outputs.label={start:function(){a("label.error").remove()},end:function(c){if(!c.valid&&a.validity.settings.scrollTo){location.hash=a("label.error:eq(0)").attr("for")}},raise:function(e,c){var d="label.error[for='"+b(e)+"']";if(a(d).length){a(d).text(c)}else{a("<label/>").attr("for",b(e)).addClass("error").text(c).click(function(){if(e.length){e[0].select()}}).insertAfter(e)}},raiseAggregate:function(d,c){if(d.length){this.raise(a(d.get(d.length-1)),c)}}}})(jQuery);(function(c){var a="validity-modal-msg",b="body";c.validity.outputs.modal={start:function(){c("."+a).remove()},end:function(d){if(!d.valid&&c.validity.settings.scrollTo){location.hash=c("."+a+":eq(0)").attr("id")}},raise:function(h,g){if(h.length){var f=h.offset(),d=h.get(0),e={left:parseInt(f.left+h.width()+4,10)+"px",top:parseInt(f.top-10,10)+"px"};c("<div/>").addClass(a).css(e).text(g).click(c.validity.settings.modalErrorsClickable?function(){c(this).remove()}:null).appendTo(b)}},raiseAggregate:function(e,d){if(e.length){this.raise(c(e.get(e.length-1)),d)}}}})(jQuery);(function(d){var c=".validity-summary-container",b="validity-erroneous",f="."+b,e="<li/>",a=[];d.validity.outputs.summary={start:function(){d(f).removeClass(b);a=[]},end:function(h){d(c).hide().find("ul").html("");if(a.length){for(var g=0;g<a.length;g++){d(e).text(a[g]).appendTo(c+" ul")}d(c).show();if(d.validity.settings.scrollTo){location.hash=d(f+":eq(0)").attr("id")}}},raise:function(h,g){a.push(g);h.addClass(b)},raiseAggregate:function(h,g){this.raise(h,g)}}})(jQuery);
