/*
 * jQuery.validity v1.0.2
 * http://validity.thatscaptaintoyou.com/
 * http://code.google.com/p/validity/
 * 
 * Copyright (c) 2009 Wyatt Allen
 * Dual licensed under the MIT and GPL licenses.
 *
 * Date: 2009-10-12 (Monday, 12 October 2009)
 * Revision: 127
 */
(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();}};$.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($){function getIdentifier($obj){return $obj.attr('id').length?$obj.attr('id'):$obj.attr('name');}
$.validity.outputs.label={start:function(){$("label.error").remove();},end:function(results){if(!results.valid&&$.validity.settings.scrollTo){location.hash=$("label.error:eq(0)").attr('for');}},raise:function($obj,msg){var
labelSelector="label.error[for='"+getIdentifier($obj)+"']";if($(labelSelector).length){$(labelSelector).text(msg);}
else{$("<label/>").attr("for",getIdentifier($obj)).addClass("error").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);}};})(jQuery);