jQuery.extend(jQuery.fn,{validate:function(A){if(!this.length){A&&A.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return }var B=jQuery.data(this[0],"validator");if(B){return B}B=new jQuery.validator(A,this[0]);jQuery.data(this[0],"validator",B);if(B.settings.onsubmit){this.find("input.cancel:submit").click(function(){B.cancelSubmit=true});this.submit(function(C){if(B.settings.debug){C.preventDefault()}function D(){if(B.settings.submitHandler){B.settings.submitHandler.call(B,B.currentForm);return false}return true}if(B.cancelSubmit){B.cancelSubmit=false;return D()}if(B.form()){if(B.pendingRequest){B.formSubmitted=true;return false}return D()}else{B.focusInvalid();return false}})}return B},valid:function(){if(jQuery(this[0]).is("form")){return this.validate().form()}else{var B=true;var A=jQuery(this[0].form).validate();this.each(function(){B=A.element(this)&&B});return B}},rules:function(){var A=this[0];var B=jQuery.validator.normalizeRules(jQuery.extend({},jQuery.validator.metadataRules(A),jQuery.validator.classRules(A),jQuery.validator.attributeRules(A),jQuery.validator.staticRules(A)),A);var C=[];if(B.required){C.push({method:"required",parameters:B.required});delete B.required}jQuery.each(B,function(E,D){C.push({method:E,parameters:D})});return C},push:function(A){return this.setArray(this.add(A).get())}});jQuery.extend(jQuery.expr[":"],{blank:"!jQuery.trim(a.value)",filled:"!!jQuery.trim(a.value)",unchecked:"!a.checked"});jQuery.format=function(A,B){if(arguments.length==1){return function(){var C=jQuery.makeArray(arguments);C.unshift(A);return jQuery.format.apply(this,C)}}if(arguments.length>2&&B.constructor!=Array){B=jQuery.makeArray(arguments).slice(1)}if(B.constructor!=Array){B=[B]}jQuery.each(B,function(C,D){A=A.replace(new RegExp("\\{"+C+"\\}","g"),D)});return A};jQuery.validator=function(A,B){this.settings=jQuery.extend({},jQuery.validator.defaults,A);this.currentForm=B;this.init()};jQuery.extend(jQuery.validator,{defaults:{messages:{},errorClass:"error",errorElement:"label",focusInvalid:true,errorContainer:jQuery([]),errorLabelContainer:jQuery([]),onsubmit:true,ignore:[],onfocusin:function(A){this.lastActive=A;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,A,this.settings.errorClass);this.errorsFor(A).hide()}},onfocusout:function(A){if(!this.checkable(A)&&(A.name in this.submitted||!this.optional(A))){this.element(A)}},onkeyup:function(A){if(A.name in this.submitted||A==this.lastElement){this.element(A)}},onclick:function(A){if(A.name in this.submitted){this.element(A)}},highlight:function(B,A){jQuery(B).addClass(A)},unhighlight:function(B,A){jQuery(B).removeClass(A)}},setDefaults:function(A){jQuery.extend(jQuery.validator.defaults,A)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",dateDE:"Bitte geben Sie ein gültiges Datum ein.",number:"Please enter a valid number.",numberDE:"Bitte geben Sie eine Nummer ein.",digits:"Please enter only digits",creditcard:"Please enter a valid credit card.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:jQuery.format("Please enter no more than {0} characters."),maxLength:jQuery.format("Please enter no more than {0} characters."),minlength:jQuery.format("Please enter at least {0} characters."),minLength:jQuery.format("Please enter at least {0} characters."),rangelength:jQuery.format("Please enter a value between {0} and {1} characters long."),rangeLength:jQuery.format("Please enter a value between {0} and {1} characters long."),rangeValue:jQuery.format("Please enter a value between {0} and {1}."),range:jQuery.format("Please enter a value between {0} and {1}."),maxValue:jQuery.format("Please enter a value less than or equal to {0}."),max:jQuery.format("Please enter a value less than or equal to {0}."),minValue:jQuery.format("Please enter a value greater than or equal to {0}."),min:jQuery.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=jQuery(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||jQuery(this.currentForm);this.containers=jQuery(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();function A(C){var B=jQuery.data(this[0].form,"validator");B.settings["on"+C.type]&&B.settings["on"+C.type].call(B,this[0])}jQuery(this.currentForm).delegate("focusin focusout keyup",":text, :password, :file, select, textarea",A).delegate("click",":radio, :checkbox",A)},form:function(){this.prepareForm();var B=this.elements();for(var A=0;B[A];A++){this.check(B[A])}jQuery.extend(this.submitted,this.errorMap);this.invalid=jQuery.extend({},this.errorMap);jQuery(this.currentForm).triggerHandler("invalid-form.validate",[this]);this.showErrors();return this.valid()},element:function(B){B=this.clean(B);this.lastElement=B;this.prepareElement(B);var A=this.check(B);if(A){delete this.invalid[B.name]}else{this.invalid[B.name]=true}if(!this.numberOfInvalids()){this.toHide.push(this.containers)}this.showErrors();return A},showErrors:function(B){if(B){jQuery.extend(this.errorMap,B);this.errorList=[];for(var A in B){this.errorList.push({message:B[A],element:this.findByName(A)[0]})}this.successList=jQuery.grep(this.successList,function(C){return !(C.name in B)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){if(jQuery.fn.resetForm){jQuery(this.currentForm).resetForm()}this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){var B=0;for(var A in this.invalid){B++}return B},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid){try{jQuery(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus()}catch(A){}}},findLastActive:function(){var A=this.lastActive;return A&&jQuery.grep(this.errorList,function(B){return B.element.name==A.name}).length==1&&A},elements:function(){var B=this;var A={};return jQuery([]).add(this.currentForm.elements).filter("input, select, textarea").not(":submit, :reset, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&B.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in A||!jQuery(this).rules().length){return false}A[this.name]=true;return true})},clean:function(A){return jQuery(A)[0]},errors:function(){return jQuery(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=jQuery([]);this.toHide=jQuery([]);this.formSubmitted=false},prepareForm:function(){this.reset();this.toHide=this.errors().push(this.containers)},prepareElement:function(A){this.reset();this.toHide=this.errorsFor(this.clean(A))},check:function(C){C=this.clean(C);this.settings.unhighlight&&this.settings.unhighlight.call(this,C,this.settings.errorClass);var F=jQuery(C).rules();for(var B=0;F[B];B++){var E=F[B];try{var A=jQuery.validator.methods[E.method].call(this,jQuery.trim(C.value),C,E.parameters);if(A=="dependency-mismatch"){return }if(A=="pending"){this.toHide=this.toHide.not(this.errorsFor(C));return }if(!A){this.formatAndAdd(C,E);return false}}catch(D){this.settings.debug&&window.console&&console.warn("exception occured when checking element "+C.id+", check the '"+E.method+"' method");throw D}}if(F.length){this.successList.push(C)}return true},customMessage:function(B,C){var A=this.settings.messages[B];return A&&(A.constructor==String?A:A[C])},findDefined:function(){for(var A=0;A<arguments.length;A++){if(arguments[A]!==undefined){return arguments[A]}}return undefined},defaultMessage:function(A,B){return this.findDefined(this.customMessage(A.name,B),A.title||undefined,jQuery.validator.messages[B],"<strong>Warning: No message defined for "+A.name+"</strong>")},formatAndAdd:function(A,C){var B=this.defaultMessage(A,C.method);if(typeof B=="function"){B=B.call(this,C.parameters,A)}this.errorList.push({message:B,element:A});this.errorMap[A.name]=B;this.submitted[A.name]=B},addWrapper:function(A){if(this.settings.wrapper){A.push(A.parents(this.settings.wrapper))}return A},defaultShowErrors:function(){for(var B=0;this.errorList[B];B++){var A=this.errorList[B];this.settings.highlight&&this.settings.highlight.call(this,A.element,this.settings.errorClass);this.showLabel(A.element,A.message)}if(this.errorList.length){this.toShow.push(this.containers)}if(this.settings.success){for(var B=0;this.successList[B];B++){this.showLabel(this.successList[B])}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},showLabel:function(B,C){var A=this.errorsFor(B);if(A.length){A.removeClass().addClass(this.settings.errorClass);A.attr("generated")&&A.html(C)}else{A=jQuery("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(B),generated:true}).addClass(this.settings.errorClass).html(C||"");if(this.settings.wrapper){A=A.hide().show().wrap("<"+this.settings.wrapper+">").parent()}if(!this.labelContainer.append(A).length){this.settings.errorPlacement?this.settings.errorPlacement(A,jQuery(B)):A.insertAfter(B)}}if(!C&&this.settings.success){A.text("");typeof this.settings.success=="string"?A.addClass(this.settings.success):this.settings.success(A)}this.toShow.push(A)},errorsFor:function(A){return this.errors().filter("[@for='"+this.idOrName(A)+"']")},idOrName:function(A){return this.checkable(A)?A.name:A.id||A.name},rules:function(A){return jQuery(A).rules()},checkable:function(A){return/radio|checkbox/i.test(A.type)},findByName:function(A){var B=this.currentForm;return jQuery(document.getElementsByName(A)).map(function(C,D){return D.form==B&&D||null})},getLength:function(B,A){switch(A.nodeName.toLowerCase()){case"select":return jQuery("option:selected",A).length;case"input":if(this.checkable(A)){return this.findByName(A.name).filter(":checked").length}}return B.length},depend:function(B,A){return this.dependTypes[typeof B]?this.dependTypes[typeof B](B,A):true},dependTypes:{"boolean":function(B,A){return B},string:function(B,A){return !!jQuery(B,A.form).length},"function":function(B,A){return B(A)}},optional:function(A){return !jQuery.validator.methods.required.call(this,jQuery.trim(A.value),A)&&"dependency-mismatch"},startRequest:function(A){if(!this.pending[A.name]){this.pendingRequest++;this.pending[A.name]=true}},stopRequest:function(A,B){this.pendingRequest--;if(this.pendingRequest<0){this.pendingRequest=0}delete this.pending[A.name];if(B&&this.pendingRequest==0&&this.formSubmitted&&this.form()){jQuery(this.currentForm).submit()}},previousValue:function(A){return jQuery.data(A,"previousValue")||jQuery.data(A,"previousValue",previous={old:null,valid:true,message:this.defaultMessage(A,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(A,B){A.constructor==String?this.classRuleSettings[A]=B:jQuery.extend(this.classRuleSettings,A)},classRules:function(B){var C={};var A=jQuery(B).attr("class");A&&jQuery.each(A.split(" "),function(){if(this in jQuery.validator.classRuleSettings){jQuery.extend(C,jQuery.validator.classRuleSettings[this])}});return C},attributeRules:function(B){var D={};var A=jQuery(B);for(method in jQuery.validator.methods){var C=A.attr(method);if(C!==undefined&&C!==""){D[method]=C}}if(D.maxlength&&/-1|2147483647|524288/.test(D.maxlength)){delete D.maxlength;delete D.maxLength}return D},metadataRules:function(A){if(!jQuery.metadata){return{}}var B=jQuery.data(A.form,"validator").settings.meta;return B?jQuery(A).metadata()[B]:jQuery(A).metadata()},staticRules:function(B){var C={};var A=jQuery.data(B.form,"validator");if(A.settings.rules){C=jQuery.validator.normalizeRule(A.settings.rules[B.name])||{}}return C},normalizeRules:function(B,A){jQuery.each({minLength:"minlength",maxLength:"maxlength",rangeLength:"rangelength",minValue:"min",maxValue:"max",rangeValue:"range"},function(D,C){if(B[D]){B[C]=B[D];delete B[D]}});jQuery.each(B,function(C,D){B[C]=jQuery.isFunction(D)?D(A):D});jQuery.each(["minlength","maxlength","min","max"],function(){if(B[this]){B[this]=Number(B[this])}});jQuery.each(["rangelength","range"],function(){if(B[this]){B[this]=[Number(B[this][0]),Number(B[this][1])]}});if(jQuery.validator.autoCreateRanges){if(B.min&&B.max){B.range=[B.min,B.max];delete B.min;delete B.max}if(B.minlength&&B.maxlength){B.rangelength=[B.minlength,B.maxlength];delete B.minlength;delete B.maxlength}}return B},normalizeRule:function(B){if(typeof B=="string"){var A={};A[B]=true;B=A}return B},addMethod:function(A,C,B){jQuery.validator.methods[A]=C;jQuery.validator.messages[A]=B;if(C.length<3){jQuery.validator.addClassRules(A,jQuery.validator.normalizeRule(A))}},methods:{required:function(C,B,D){if(!this.depend(D,B)){return"dependency-mismatch"}switch(B.nodeName.toLowerCase()){case"select":var A=jQuery("option:selected",B);return A.length>0&&(B.type=="select-multiple"||(jQuery.browser.msie&&!(A[0].attributes.value.specified)?A[0].text:A[0].value).length>0);case"input":if(this.checkable(B)){return this.getLength(C,B)>0}default:return C.length>0}},remote:function(E,B,F){if(this.optional(B)){return"dependency-mismatch"}var C=this.previousValue(B);if(!this.settings.messages[B.name]){this.settings.messages[B.name]={}}this.settings.messages[B.name].remote=typeof C.message=="function"?C.message(E):C.message;if(C.old!==E){C.old=E;var A=this;this.startRequest(B);var D={};D[B.name]=E;jQuery.ajax({url:F,mode:"abort",port:"validate"+B.name,dataType:"json",data:D,success:function(H){if(!H){var I={};I[B.name]=H||A.defaultMessage(B,"remote");A.showErrors(I)}else{var G=A.formSubmitted;A.prepareElement(B);A.formSubmitted=G;A.successList.push(B);A.showErrors()}C.valid=H;A.stopRequest(B,H)}});return"pending"}else{if(this.pending[B.name]){return"pending"}}return C.valid},minlength:function(B,A,C){return this.optional(A)||this.getLength(B,A)>=C},minLength:function(B,A,C){return jQuery.validator.methods.minlength.apply(this,arguments)},maxlength:function(B,A,C){return this.optional(A)||this.getLength(B,A)<=C},maxLength:function(B,A,C){return jQuery.validator.methods.maxlength.apply(this,arguments)},rangelength:function(C,A,D){var B=this.getLength(C,A);return this.optional(A)||(B>=D[0]&&B<=D[1])},rangeLength:function(B,A,C){return jQuery.validator.methods.rangelength.apply(this,arguments)},min:function(B,A,C){return this.optional(A)||B>=C},minValue:function(){return jQuery.validator.methods.min.apply(this,arguments)},max:function(B,A,C){return this.optional(A)||B<=C},maxValue:function(){return jQuery.validator.methods.max.apply(this,arguments)},range:function(B,A,C){return this.optional(A)||(B>=C[0]&&B<=C[1])},rangeValue:function(){return jQuery.validator.methods.range.apply(this,arguments)},email:function(B,A){return this.optional(A)||/^((([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.test(B)},url:function(B,A){return this.optional(A)||/^(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.test(B)},date:function(B,A){return this.optional(A)||!/Invalid|NaN/.test(new Date(B))},dateISO:function(B,A){return this.optional(A)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(B)},dateDE:function(B,A){return this.optional(A)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(B)},number:function(B,A){return this.optional(A)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(B)},numberDE:function(B,A){return this.optional(A)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(B)},digits:function(B,A){return this.optional(A)||/^\d+$/.test(B)},creditcard:function(E,B){if(this.optional(B)){return"dependency-mismatch"}var F=0,D=0,A=false;E=E.replace(/\D/g,"");for(n=E.length-1;n>=0;n--){var C=E.charAt(n);var D=parseInt(C,10);if(A){if((D*=2)>9){D-=9}}F+=D;A=!A}return(F%10)==0},accept:function(B,A,C){C=typeof C=="string"?C:"png|jpe?g|gif";return this.optional(A)||B.match(new RegExp(".("+C+")$","i"))},equalTo:function(B,A,C){return B==jQuery(C).val()}}});(function(C){var B=C.ajax;var A={};C.ajax=function(E){E=jQuery.extend(E,jQuery.extend({},jQuery.ajaxSettings,E));var D=E.port;if(E.mode=="abort"){if(A[D]){A[D].abort()}return A[D]=B.apply(this,arguments)}return B.apply(this,arguments)}})(jQuery);(function(A){A.each({focus:"focusin",blur:"focusout"},function(C,B){A.event.special[B]={setup:function(){if(A.browser.msie){return false}this.addEventListener(C,A.event.special[B].handler,true)},teardown:function(){if(A.browser.msie){return false}this.removeEventListener(C,A.event.special[B].handler,true)},handler:function(D){arguments[0]=A.event.fix(D);arguments[0].type=B;return A.event.handle.apply(this,arguments)}}});A.extend(A.fn,{delegate:function(D,C,B){return this.bind(D,function(E){var F=A(E.target);if(F.is(C)){return B.apply(F,arguments)}})},triggerEvent:function(B,C){return this.triggerHandler(B,[jQuery.event.fix({type:B,target:C})])}})})(jQuery);