jQuery.extend(jQuery.fn,{validate:function(a){var b=new jQuery.validator(a,this[0]);if(b.settings.onsubmit){this.find("input.cancel:submit").click(function(){b.cancelSubmit=true});this.find("input.submit").click(function(){b.submitBtn=this});this.submit(function(c){if(b.settings.debug){c.preventDefault()}function d(){if(b.settings.submitHandler){b.settings.submitHandler.call(b,b.currentForm);if(includesubmit){return true}else{return false}}if($("form#paymentDetails").length>0&&$("input#makePayment").length>0){if(!$.fn.formOverlay.currentlyActive){$.fn.formOverlay.currentlyActive=true;$.fn.formOverlay.displayOverlay()}}return true}if(b.cancelSubmit){b.cancelSubmit=false;return d()}if(b.form()){return d()}else{b.focusInvalid(b.submitBtn);return false}})}return b},push:function(a){return this.setArray(jQuery.merge(this.get(),a))}});jQuery.extend(jQuery.expr[":"],{blank:"!jQuery.trim(a.value)",filled:"!!jQuery.trim(a.value)",unchecked:"!a.checked"});String.format=function(a,b){if(arguments.length==1){return function(){var c=jQuery.makeArray(arguments);c.unshift(a);return String.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.submitBtn={};this.currentForm=b;this.labelContainer=this.settings.errorLabelContainer;this.errorContext=this.labelContainer.length&&this.labelContainer||jQuery(b);this.containers=this.settings.errorContainer.add(this.settings.errorLabelContainer);this.submitted={};this.invalid={};this.reset();this.refresh()};jQuery.extend(jQuery.validator,{defaults:{messages:{},errorElement:"em",errorClass:"error",errorPlacement:function(a,b){b.next("em").remove();b.after("<em class='errorContainer'></em>");b.next("em.errorContainer").html(a)},success:function(a){a.removeClass("error").addClass("success");a.parents("em").addClass("successContainer")},focusInvalid:true,errorContainer:jQuery([]),errorLabelContainer:jQuery([]),onsubmit:true,ignore:[],onblur:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.required(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)}}},setDefaults:function(a){jQuery.extend(jQuery.validator.defaults,a)},messages:{required:"&nbsp;"},prototype:{form:function(){this.prepareForm();for(var a=0;this.elements[a];a++){this.check(this.elements[a])}jQuery.extend(this.submitted,this.errorMap);this.invalid=jQuery.extend({},this.errorMap);this.settings.invalidHandler&&this.settings.invalidHandler.call(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}this.showErrors();return a},showErrors:function(a){if(a){jQuery.extend(this.errorMap,a);for(name in a){this.errorList.push({message:a[name],element:jQuery("[@name='"+name+"']:first",this.currentForm)[0]})}this.successList=jQuery.grep(this.successList,function(b){return !(b.name in a)})}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 a=0;for(i in this.invalid){a++}return a},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(a){this.submitBtn=a;if(this.settings.focusInvalid){try{jQuery(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus()}catch(b){}}},findLastActive:function(){var a=this.lastActive;return a&&jQuery.grep(this.errorList,function(b){return b.element.name==a.name}).length==1&&a},refresh:function(){var b=this;b.rulesCache={};function c(){b.lastActive=this;if(b.settings.focusCleanup&&!b.blockFocusCleanup){jQuery(this).removeClass(b.settings.errorClass);b.errorsFor(this).hide()}}this.elements=jQuery(this.currentForm).find("input, select, textarea").not(":submit, :reset").not("[@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 b.rulesCache||!b.rules(this).length){return false}b.rulesCache[this.name]=b.rules(this);return true});this.elements.focus(c);b.settings.onblur&&b.elements.blur(function(){b.settings.onblur.call(b,this)});b.settings.onkeyup&&b.elements.keyup(function(){b.settings.onkeyup.call(b,this)});if(b.settings.onclick){var a=jQuery([]);b.elements.each(function(){if(b.checkable(this)){a.push(b.checkableGroup(this))}});a.click(function(){b.settings.onclick.call(b,this)})}},clean:function(a){return jQuery(a)[0]},errors:function(){return jQuery(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(a){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=jQuery([]);this.toHide=jQuery([])},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){if(!$(this.submitBtn).attr("id")){$(this.submitBtn).attr("id","none")}if(!($(this.submitBtn).attr("id").match("exclude_2")&&$(c).attr("id").match("_2"))){c=this.clean(c);jQuery(c).removeClass(this.settings.errorClass);var g=this.rulesCache[c.name];for(var b=0;g[b];b++){var f=g[b];try{var a=jQuery.validator.methods[f.method].call(this,jQuery.trim(c.value),c,f.parameters);if(a===-1){break}if(!a){jQuery(c).addClass(this.settings.errorClass);this.formatAndAdd(f,c);return false}}catch(d){this.settings.debug&&window.console&&console.error("exception occured when checking element "+c.id+", check the '"+f.method+"' method");throw d}}if(g.length&&this.settings.success){this.successList.push(c)}}return true},configuredMessage:function(c,b){var a=this.settings.messages[c];return a&&(a.constructor==String?a:a[b])},defaultMessage:function(a,b){return this.configuredMessage(a.name,b)||a.title||jQuery.validator.messages[b]||"</>"},formatAndAdd:function(c,a){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.showLabel(a.element,a.message)}if(this.errorList.length){this.toShow.push(this.containers)}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);if(this.settings.overrideErrors||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.html("&nbsp;");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(b){var c=this.data(b);if(!c){return[]}var d=[];if(typeof c=="string"){var a={};a[c]=true;c=a}jQuery.each(c,function(e,f){d[d.length]={method:e,parameters:f}});return d},data:function(a){return this.settings.rules?this.settings.rules[a.name]:this.settings.meta?jQuery(a).data()[this.settings.meta]:jQuery(a).data()},checkable:function(a){return/radio|checkbox/i.test(a.type)},checkableGroup:function(a){return jQuery(a.form||document).find('[@name="'+a.name+'"]')},getLength:function(b,a){switch(a.nodeName.toLowerCase()){case"select":return jQuery("option:selected",a).length;case"input":if(this.checkable(a)){return this.checkableGroup(a).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)}},required:function(a){return !jQuery.validator.methods.required.call(this,jQuery.trim(a.value),a)}},methods:{required:function(c,b,d){if(!this.depend(d,b)){return -1}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}},minLength:function(b,a,c){return this.required(a)||this.getLength(b,a)>=c},maxLength:function(b,a,c){return this.required(a)||this.getLength(b,a)<=c},rangeLength:function(c,a,d){var b=this.getLength(c,a);return this.required(a)||(b>=d[0]&&b<=d[1])},minValue:function(b,a,c){return this.required(a)||b>=c},maxValue:function(b,a,c){return this.required(a)||b<=c},rangeValue:function(b,a,c){return this.required(a)||(b>=c[0]&&b<=c[1])},email:function(b,a){return this.required(a)||/^[\w-+\.]+@([\w-]+\.)+[\w-]{2,}$/i.test(b)},postcode:function(b,a){return this.required(a)||/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i.test(b)},date:function(b,a){return this.required(a)||!/Invalid|NaN/.test(new Date(b))},dateISO:function(b,a){return this.required(a)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(b)},dateDE:function(b,a){return this.required(a)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(b)},number:function(b,a){return this.required(a)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(b)},numberDE:function(b,a){return this.required(a)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(b)},digits:function(b,a){return this.required(a)||/^\d+$/.test(b)},creditcard:function(e,b){if(this.required(b)){return true}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.required(a)||b.match(new RegExp(".("+c+")$"))},equalTo:function(b,a,c){return b==jQuery(c).val()},notEqualTo:function(b,a,c){return b!=jQuery(c).val()}},addMethod:function(a,c,b){jQuery.validator.methods[a]=c;jQuery.validator.messages[a]=b}});