function mobilemenu(){ jQuery(".mobnav li").click(function(){ jQuery(this).find('ul:first').stop(true,true).slideToggle('slow');; }); jQuery(".mob_menu_header").click(function(){ jQuery('.mobilemenu').slideToggle('slow'); //if(jQuery('.mobnav li').is(':visible')){jQuery('.mobnav li').hide();} }); } jQuery(document).ready(function(){ mobilemenu(); });var jqer=jQuery.noConflict(); function headmenu(){ jqer(" .nav ul ").css({display: "none"}); jqer(".nav li").hover(function(){ var extrawidth=25; var setwidth=''; jqer(this).find('ul li').each(function(){ var thehtml=jqer(this).html(); if((thehtml)!==null){ var thecontainer=''; jqer(thecontainer).appendTo('body'); newwidth=jqer('.findwidth').width(); if (newwidth > setwidth){setwidth=newwidth;} jqer('.findwidth').remove(); jqer('.nav li ul li').css({"width": setwidth+extrawidth+"px"}); } }); jqer(this).find('ul:first').css({visibility: "visible",display: "none"}).stop(true,true).slideDown(400); },function(){ jqer(this).find('ul:first').css({visibility: "visible",display: "block"}).stop(true,true).slideUp(400); }); }jQuery(); headmenu();var jqr=jQuery.noConflict(); function sidemenu(){ //jqer(" .leftnav ul ").css({display: "none"}); // Opera Fix jqr(".leftnav li, ").hover(function(){ jqr(this).find('ul:first').css({visibility: "visible",display: "none",height:"auto"}).stop(true,true).show(400); jqr(this).find('ul:first li,ul:first li a').css({padding:0,margin:"3px",height:"auto"}) },function(){ jqr(this).find('ul:first').css({visibility: "visible",display: "block"}).stop(true,true).hide(400); }); }jQuery(); sidemenu();(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;this.attr("novalidate","novalidate");b=new c.validator(a,this[0]);c.data(this[0],"validator",b);b.settings.onsubmit&&(a=this.find("input, button"),a.filter(".cancel").click(function(){b.cancelSubmit=!0}),b.settings.submitHandler&&a.filter(":submit").click(function(){b.submitButton=this}),this.submit(function(a){function e(){if(b.settings.submitHandler){if(b.submitButton)var a=c("").attr("name", b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&a.remove();return!1}return!0}b.settings.debug&&a.preventDefault();if(b.cancelSubmit)return b.cancelSubmit=!1,e();if(b.form())return b.pendingRequest?(b.formSubmitted=!0,!1):e();b.focusInvalid();return!1}));return b}a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form(); var a=!0,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(a,c){b[c]=d.attr(c);d.removeAttr(c)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;b.messages&&(e.messages[d.name]=c.extend(e.messages[d.name],b.messages));break;case "remove":if(!b)return delete f[d.name], g;var h={};c.each(b.split(/\s/),function(a,b){h[b]=g[b];delete g[b]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);d.required&&(e=d.required,delete d.required,d=c.extend({required:e},d));return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a,b){this.settings= c.extend(!0,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(1==arguments.length)return function(){var b=c.makeArray(arguments);b.unshift(a);return c.validator.format.apply(this,b)};2Warning: No message defined for "+a.name+"")},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;"function"==typeof c?c=c.call(this,b.parameters,a):e.test(c)&&(c=jQuery.format(c.replace(e,"{$1}"),b.parameters));this.errorList.push({message:c,element:a});this.errorMap[a.name]=c;this.submitted[a.name]= c},addWrapper:function(a){this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper)));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}this.errorList.length&&(this.toShow=this.toShow.add(this.containers));if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]); if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);d.length?(d.removeClass(this.settings.validClass).addClass(this.settings.errorClass), d.attr("generated")&&d.html(b)):(d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:!0}).addClass(this.settings.errorClass).html(b||""),this.settings.wrapper&&(d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a)));!b&&this.settings.success&&(d.text(""),"string"==typeof this.settings.success?d.addClass(this.settings.success):this.settings.success(d)); this.toShow=this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]);return a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(c, e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a,b){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this, c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(a,b){this.pendingRequest--;0>this.pendingRequest&&(this.pendingRequest=0);delete this.pending[a.name];b&&0==this.pendingRequest&&this.formSubmitted&&this.form()?(c(this.currentForm).submit(),this.formSubmitted=!1):!b&&0==this.pendingRequest&&this.formSubmitted&&(c(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)}, previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:!0,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},dateDE:{dateDE:!0},number:{number:!0},numberDE:{numberDE:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings,a)},classRules:function(a){var b= {};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b={};a=c(a);for(var d in c.validator.methods){var e;(e="required"===d&&"function"===typeof c.fn.prop?a.prop(d):a.attr(d))?b[d]=e:a[0].getAttribute("type")===d&&(b[d]=!0)}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{};var b=c.data(a.form, "validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");d.settings.rules&&(b=c.validator.normalizeRule(d.settings.rules[a.name])||{});return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(!1===e)delete a[d];else if(e.param||e.depends){var f=!0;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}f?a[d]=void 0!==e.param?e.param:!0:delete a[d]}});c.each(a, function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){a[this]&&(a[this]=Number(a[this]))});c.each(["rangelength","range"],function(){a[this]&&(a[this]=[Number(a[this][0]),Number(a[this][1])])});c.validator.autoCreateRanges&&(a.min&&a.max&&(a.range=[a.min,a.max],delete a.min,delete a.max),a.minlength&&a.maxlength&&(a.rangelength=[a.minlength,a.maxlength],delete a.minlength,delete a.maxlength));a.messages&&delete a.messages;return a},normalizeRule:function(a){if("string"== typeof a){var b={};c.each(a.split(/\s/),function(){b[this]=!0});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=void 0!=d?d:c.validator.messages[a];3>b.length&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&0=d},maxlength:function(a,b,d){return this.optional(b)|| this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},email:function(a,b){return this.optional(b)||/^((([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(a)}, url:function(a,b){return this.optional(b)||/^(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(a)}, date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 -]+/.test(a))return!1;var c=0,e=0,f=!1;a=a.replace(/\D/g,"");for(var g=a.length-1;0<=g;g--)e= a.charAt(g),e=parseInt(e,10),f&&9<(e*=2)&&(e-=9),c+=e,f=!f;return 0==c%10},accept:function(a,b,c){c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+c+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery); (function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(b,c,f){c=b.port;"abort"==b.mode&&(a[c]&&a[c].abort(),a[c]=f)});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;return"abort"==("mode"in d?d:c.ajaxSettings).mode?(a[e]&&a[e].abort(),a[e]=b.apply(this,arguments)):b.apply(this,arguments)}}})(jQuery); (function(c){jQuery.event.special.focusin||jQuery.event.special.focusout||!document.addEventListener||c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(a){a=c.event.fix(a);a.type=b;return c.event.handle.call(this,a)}c.event.special[b]={setup:function(){this.addEventListener(a,d,!0)},teardown:function(){this.removeEventListener(a,d,!0)},handler:function(a){arguments[0]=c.event.fix(a);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a, b,d){return this.bind(b,function(b){var f=c(b.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery);jQuery("#Contactform").validate({rules:{name:{required:true,minlength:4},email:{required:true,email:true},address:{required:true},phone:{required:false},subject:{required:true,minlength:5,maxlength:50},enquiry:{required:true,minlength:20,sanitize:true}},messages:{name:{required:"Please Enter your Name ",minlength:"Minimum 4 charaters Required"},email:{required:"Please enter an email address "},address:{required:"Please enter an address "},phone:{required:"Please enter a phone number "},subject:{required:"Please enter a subject ",minlength:"Minimum 5 charaters Required",maxlength:"Maximum 50 charaters Please"},enquiry:{required:"Please leave a message ",minlength:"Minimum 20 charaters Required",sanitize:"Please use only letters and numbers"}},errorPlacement:function(error,element){error.appendTo(element.siblings("label"))}});jQuery("#register").validate({ rules: { username: { required: true, minlength: 4 }, password: { required: true, minlength: 7 }, emailaddress: {required:true, email: true}, address: {required:true}, city: {required:true}, zipcode: {required:true}, country: {required:true}, phone: { required: true,number: true ,minlength:10}, firstname: { required: true,minlength:2, maxlength: 50}, lastname: { required: true,minlength:2, maxlength: 50} }, messages: { username: { required: "Please Enter a User Name ", minlength: "Minimum 4 charaters Required" }, password: { required: "Please enter a password", minlength: "Minimum 7 charaters Required" }, emailaddress: { required: "Please enter an email address " }, address: { required: "Please enter an address " }, city: { required: "Please enter a town/city" }, zipcode: { required: "Please enter a Zip Code" }, country: { required: "Please enter a country " }, phone: { required: "Please enter a phone number", minlength: "Minimum 10 charaters Required" }, firstname: { required: "Please enter your first name ", minlength: "Minimum 2 charaters Required", maxlength: "Maximum 50 charaters Required" }, lastname: { required: "Please enter your last name", minlength: "Minimum 2 charaters Required", maxlength: "Maximum 50 charaters Required" } }, errorPlacement:function(error,element){ error.appendTo(element.siblings("label")) }, }); jQuery("#login").validate({ errorPlacement:function(error,element){ error.appendTo(element.siblings("label")) }, }); jQuery('firstname').each(function() {jQuery(this).rules('add', {required: true,minlength: 4, maxlength: 10,messages: {required: "Please Enter your Name", minlength: "Minimum 4 charaters Required", maxlength: "Must be less than 50 characters"} }); }); jQuery('#textval-2').each(function() {jQuery(this).rules('add', {required: true,minlength:4, maxlength: 10,messages: {required: "Please Enter your Name", minlength: "Minimum 4 charaters Required", maxlength: "Must be less than 50 characters"} }); }); jQuery('.allinputs').each(function() {jQuery(this).rules('add', {required: true,messages: { required: "< required field >"} }); }); ;jQuery(window).load(function () { if( jQuery.trim( jQuery('#maincontenterror').html() ).length>6 ) { setTimeout(function(){ jQuery('#maincontenterror').slideUp('slow'); }, 20000); jQuery('#maincontenterror').slideDown(2000,function(){ jQuery('.click_to_dismiss').click(function(){ jQuery('#maincontenterror').slideUp('slow'); }); }); }; }); /*! * jQuery Validation Plugin v1.13.1 * * http://jqueryvalidation.org/ * * Copyright (c) 2014 Jörn Zaefferer * Released under the MIT license */ (function( factory ) { if ( typeof define === "function" && define.amd ) { define( ["jquery", "./jquery.validate"], factory ); } else { factory( jQuery ); } }(function( $ ) { (function() { function stripHtml(value) { // remove html tags and space chars return value.replace(/<.[^<>]*?>/g, " ").replace(/ | /gi, " ") // remove punctuation .replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g, ""); } $.validator.addMethod("maxWords", function(value, element, params) { return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params; }, $.validator.format("Please enter {0} words or less.")); $.validator.addMethod("minWords", function(value, element, params) { return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; }, $.validator.format("Please enter at least {0} words.")); $.validator.addMethod("rangeWords", function(value, element, params) { var valueStripped = stripHtml(value), regex = /\b\w+\b/g; return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]; }, $.validator.format("Please enter between {0} and {1} words.")); }()); // Accept a value from a file input based on a required mimetype $.validator.addMethod("accept", function(value, element, param) { // Split mime on commas in case we have multiple types we can accept var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*", optionalValue = this.optional(element), i, file; // Element is optional if (optionalValue) { return optionalValue; } if ($(element).attr("type") === "file") { // If we are using a wildcard, make it regex friendly typeParam = typeParam.replace(/\*/g, ".*"); // Check if the element has a FileList before checking each file if (element.files && element.files.length) { for (i = 0; i < element.files.length; i++) { file = element.files[i]; // Grab the mimetype from the loaded file, verify it matches if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { return false; } } } } // Either return true because we've validated each file, or because the // browser does not support element.files and the FileList feature return true; }, $.validator.format("Please enter a value with a valid mimetype.")); $.validator.addMethod("alphanumeric", function(value, element) { return this.optional(element) || /^\w+$/i.test(value); }, "Letters, numbers, and underscores only please"); /* * Dutch bank account numbers (not 'giro' numbers) have 9 digits * and pass the '11 check'. * We accept the notation with spaces, as that is common. * acceptable: 123456789 or 12 34 56 789 */ $.validator.addMethod("bankaccountNL", function(value, element) { if (this.optional(element)) { return true; } if (!(/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(value))) { return false; } // now '11 check' var account = value.replace(/ /g, ""), // remove spaces sum = 0, len = account.length, pos, factor, digit; for ( pos = 0; pos < len; pos++ ) { factor = len - pos; digit = account.substring(pos, pos + 1); sum = sum + factor * digit; } return sum % 11 === 0; }, "Please specify a valid bank account number"); $.validator.addMethod("bankorgiroaccountNL", function(value, element) { return this.optional(element) || ($.validator.methods.bankaccountNL.call(this, value, element)) || ($.validator.methods.giroaccountNL.call(this, value, element)); }, "Please specify a valid bank or giro account number"); /** * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. * * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) * * BIC definition in detail: * - First 4 characters - bank code (only letters) * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) * - Next 2 characters - location code (letters and digits) * a. shall not start with '0' or '1' * b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant) * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) */ $.validator.addMethod("bic", function(value, element) { return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value ); }, "Please specify a valid BIC code"); /* * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal */ $.validator.addMethod( "cifES", function( value ) { "use strict"; var num = [], controlDigit, sum, i, count, tmp, secondDigit; value = value.toUpperCase(); // Quick format test if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { return false; } for ( i = 0; i < 9; i++ ) { num[ i ] = parseInt( value.charAt( i ), 10 ); } // Algorithm for checking CIF codes sum = num[ 2 ] + num[ 4 ] + num[ 6 ]; for ( count = 1; count < 8; count += 2 ) { tmp = ( 2 * num[ count ] ).toString(); secondDigit = tmp.charAt( 1 ); sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) ); } /* The first (position 1) is a letter following the following criteria: * A. Corporations * B. LLCs * C. General partnerships * D. Companies limited partnerships * E. Communities of goods * F. Cooperative Societies * G. Associations * H. Communities of homeowners in horizontal property regime * J. Civil Societies * K. Old format * L. Old format * M. Old format * N. Nonresident entities * P. Local authorities * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008) * S. Organs of State Administration and regions * V. Agrarian Transformation * W. Permanent establishments of non-resident in Spain */ if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) { sum += ""; controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 ); value += controlDigit; return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) ); } return false; }, "Please specify a valid CIF number." ); /* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) */ $.validator.addMethod("creditcardtypes", function(value, element, param) { if (/[^0-9\-]+/.test(value)) { return false; } value = value.replace(/\D/g, ""); var validTypes = 0x0000; if (param.mastercard) { validTypes |= 0x0001; } if (param.visa) { validTypes |= 0x0002; } if (param.amex) { validTypes |= 0x0004; } if (param.dinersclub) { validTypes |= 0x0008; } if (param.enroute) { validTypes |= 0x0010; } if (param.discover) { validTypes |= 0x0020; } if (param.jcb) { validTypes |= 0x0040; } if (param.unknown) { validTypes |= 0x0080; } if (param.all) { validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; } if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard return value.length === 16; } if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa return value.length === 16; } if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex return value.length === 15; } if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub return value.length === 14; } if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute return value.length === 15; } if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover return value.length === 16; } if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb return value.length === 16; } if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb return value.length === 15; } if (validTypes & 0x0080) { //unknown return true; } return false; }, "Please enter a valid credit card number."); /** * Validates currencies with any given symbols by @jameslouiz * Symbols can be optional or required. Symbols required by default * * Usage examples: * currency: ["£", false] - Use false for soft currency validation * currency: ["$", false] * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc * * * * Soft symbol checking * currencyInput: { * currency: ["$", false] * } * * Strict symbol checking (default) * currencyInput: { * currency: "$" * //OR * currency: ["$", true] * } * * Multiple Symbols * currencyInput: { * currency: "$,£,¢" * } */ $.validator.addMethod("currency", function(value, element, param) { var isParamString = typeof param === "string", symbol = isParamString ? param : param[0], soft = isParamString ? true : param[1], regex; symbol = symbol.replace(/,/g, ""); symbol = soft ? symbol + "]" : symbol + "]?"; regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$"; regex = new RegExp(regex); return this.optional(element) || regex.test(value); }, "Please specify a valid currency"); $.validator.addMethod("Aucurrency", function (value, element) { return this.optional(element) || /^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/.test(value); }, "Please specify a valid amount"); $.validator.addMethod("dateFA", function(value, element) { return this.optional(element) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(value); }, "Please enter a correct date"); /** * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. * * @example $.validator.methods.date("01/01/1900") * @result true * * @example $.validator.methods.date("01/13/1990") * @result false * * @example $.validator.methods.date("01.01.1900") * @result false * * @example * @desc Declares an optional input element whose value must be a valid date. * * @name $.validator.methods.dateITA * @type Boolean * @cat Plugins/Validate/Methods */ $.validator.addMethod("dateITA", function(value, element) { var check = false, re = /^\d{1,2}\/\d{1,2}\/\d{4}$/, adata, gg, mm, aaaa, xdata; if ( re.test(value)) { adata = value.split("/"); gg = parseInt(adata[0], 10); mm = parseInt(adata[1], 10); aaaa = parseInt(adata[2], 10); xdata = new Date(aaaa, mm - 1, gg, 12, 0, 0, 0); if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth () === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) { check = true; } else { check = false; } } else { check = false; } return this.optional(element) || check; }, "Please enter a correct date"); $.validator.addMethod("dateNL", function(value, element) { return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value); }, "Please enter a correct date"); // Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept $.validator.addMethod("extension", function(value, element, param) { param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif"; return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); }, $.validator.format("Please enter a value with a valid extension.")); /** * Dutch giro account numbers (not bank numbers) have max 7 digits */ $.validator.addMethod("giroaccountNL", function(value, element) { return this.optional(element) || /^[0-9]{1,7}$/.test(value); }, "Please specify a valid giro account number"); /** * IBAN is the international bank account number. * It has a country - specific format, that is checked here too */ $.validator.addMethod("iban", function(value, element) { // some quick simple tests to prevent needless work if (this.optional(element)) { return true; } // remove spaces and to upper case var iban = value.replace(/ /g, "").toUpperCase(), ibancheckdigits = "", leadingZeroes = true, cRest = "", cOperator = "", countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p; if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(iban))) { return false; } // check the country code and find the country specific format countrycode = iban.substring(0, 2); bbancountrypatterns = { "AL": "\\d{8}[\\dA-Z]{16}", "AD": "\\d{8}[\\dA-Z]{12}", "AT": "\\d{16}", "AZ": "[\\dA-Z]{4}\\d{20}", "BE": "\\d{12}", "BH": "[A-Z]{4}[\\dA-Z]{14}", "BA": "\\d{16}", "BR": "\\d{23}[A-Z][\\dA-Z]", "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}", "CR": "\\d{17}", "HR": "\\d{17}", "CY": "\\d{8}[\\dA-Z]{16}", "CZ": "\\d{20}", "DK": "\\d{14}", "DO": "[A-Z]{4}\\d{20}", "EE": "\\d{16}", "FO": "\\d{14}", "FI": "\\d{14}", "FR": "\\d{10}[\\dA-Z]{11}\\d{2}", "GE": "[\\dA-Z]{2}\\d{16}", "DE": "\\d{18}", "GI": "[A-Z]{4}[\\dA-Z]{15}", "GR": "\\d{7}[\\dA-Z]{16}", "GL": "\\d{14}", "GT": "[\\dA-Z]{4}[\\dA-Z]{20}", "HU": "\\d{24}", "IS": "\\d{22}", "IE": "[\\dA-Z]{4}\\d{14}", "IL": "\\d{19}", "IT": "[A-Z]\\d{10}[\\dA-Z]{12}", "KZ": "\\d{3}[\\dA-Z]{13}", "KW": "[A-Z]{4}[\\dA-Z]{22}", "LV": "[A-Z]{4}[\\dA-Z]{13}", "LB": "\\d{4}[\\dA-Z]{20}", "LI": "\\d{5}[\\dA-Z]{12}", "LT": "\\d{16}", "LU": "\\d{3}[\\dA-Z]{13}", "MK": "\\d{3}[\\dA-Z]{10}\\d{2}", "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}", "MR": "\\d{23}", "MU": "[A-Z]{4}\\d{19}[A-Z]{3}", "MC": "\\d{10}[\\dA-Z]{11}\\d{2}", "MD": "[\\dA-Z]{2}\\d{18}", "ME": "\\d{18}", "NL": "[A-Z]{4}\\d{10}", "NO": "\\d{11}", "PK": "[\\dA-Z]{4}\\d{16}", "PS": "[\\dA-Z]{4}\\d{21}", "PL": "\\d{24}", "PT": "\\d{21}", "RO": "[A-Z]{4}[\\dA-Z]{16}", "SM": "[A-Z]\\d{10}[\\dA-Z]{12}", "SA": "\\d{2}[\\dA-Z]{18}", "RS": "\\d{18}", "SK": "\\d{20}", "SI": "\\d{15}", "ES": "\\d{20}", "SE": "\\d{20}", "CH": "\\d{5}[\\dA-Z]{12}", "TN": "\\d{20}", "TR": "\\d{5}[\\dA-Z]{17}", "AE": "\\d{3}\\d{16}", "GB": "[A-Z]{4}\\d{14}", "VG": "[\\dA-Z]{4}\\d{16}" }; bbanpattern = bbancountrypatterns[countrycode]; // As new countries will start using IBAN in the // future, we only check if the countrycode is known. // This prevents false negatives, while almost all // false positives introduced by this, will be caught // by the checksum validation below anyway. // Strict checking should return FALSE for unknown // countries. if (typeof bbanpattern !== "undefined") { ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); if (!(ibanregexp.test(iban))) { return false; // invalid country specific format } } // now check the checksum, first convert to digits ibancheck = iban.substring(4, iban.length) + iban.substring(0, 4); for (i = 0; i < ibancheck.length; i++) { charAt = ibancheck.charAt(i); if (charAt !== "0") { leadingZeroes = false; } if (!leadingZeroes) { ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(charAt); } } // calculate the result of: ibancheckdigits % 97 for (p = 0; p < ibancheckdigits.length; p++) { cChar = ibancheckdigits.charAt(p); cOperator = "" + cRest + "" + cChar; cRest = cOperator % 97; } return cRest === 1; }, "Please specify a valid IBAN"); $.validator.addMethod('decimal', function(value, element) { return this.optional(element) || /^((\d+)(\.\d{2}))$/.test(value); }, "Please enter a correct value, format xxxx.xx"); $.validator.addMethod("integer", function(value, element) { return this.optional(element) || /^-?\d+$/.test(value); }, "A positive or negative non-decimal number please"); $.validator.addMethod("ipv4", function(value, element) { return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value); }, "Please enter a valid IP v4 address."); $.validator.addMethod("ipv6", function(value, element) { return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value); }, "Please enter a valid IP v6 address."); $.validator.addMethod("lettersonly", function(value, element) { return this.optional(element) || /^[a-z]+$/i.test(value); }, "Letters only please"); $.validator.addMethod("letterswithbasicpunc", function(value, element) { return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); }, "Letters or punctuation only please"); $.validator.addMethod("mobileNL", function(value, element) { return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); }, "Please specify a valid mobile number"); /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. * A number of very detailed GB telephone number RegEx patterns can also be found at: * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers */ $.validator.addMethod("mobileUK", function(phone_number, element) { phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/); }, "Please specify a valid mobile number"); /* * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain */ $.validator.addMethod( "nieES", function( value ) { "use strict"; value = value.toUpperCase(); // Basic format test if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { return false; } // Test NIE //T if ( /^[T]{1}/.test( value ) ) { return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) ); } //XYZ if ( /^[XYZ]{1}/.test( value ) ) { return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.replace( "X", "0" ) .replace( "Y", "1" ) .replace( "Z", "2" ) .substring( 0, 8 ) % 23 ) ); } return false; }, "Please specify a valid NIE number." ); /* * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals */ $.validator.addMethod( "nifES", function( value ) { "use strict"; value = value.toUpperCase(); // Basic format test if ( !value.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)") ) { return false; } // Test NIF if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); } // Test specials NIF (starts with K, L or M) if ( /^[KLM]{1}/.test( value ) ) { return ( value[ 8 ] === String.fromCharCode( 64 ) ); } return false; }, "Please specify a valid NIF number." ); $.validator.addMethod("nowhitespace", function(value, element) { return this.optional(element) || /^\S+$/i.test(value); }, "No white space please"); /** * Return true if the field value matches the given format RegExp * * @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) * @result true * * @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) * @result false * * @name $.validator.methods.pattern * @type Boolean * @cat Plugins/Validate/Methods */ $.validator.addMethod("pattern", function(value, element, param) { if (this.optional(element)) { return true; } if (typeof param === "string") { param = new RegExp("^(?:" + param + ")$"); } return param.test(value); }, "Invalid format."); /** * Dutch phone numbers have 10 digits (or 11 and start with +31). */ $.validator.addMethod("phoneNL", function(value, element) { return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(value); }, "Please specify a valid phone number."); /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. * A number of very detailed GB telephone number RegEx patterns can also be found at: * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers */ $.validator.addMethod("phoneUK", function(phone_number, element) { phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/); }, "Please specify a valid phone number"); /** * matches US phone number format * * where the area code may not start with 1 and the prefix may not start with 1 * allows '-' or ' ' as a separator and allows parens around area code * some people may want to put a '1' in front of their number * * 1(212)-999-2345 or * 212 999 2344 or * 212-999-0983 * * but not * 111-123-5434 * and not * 212 123 4567 */ $.validator.addMethod("phoneUS", function(phone_number, element) { phone_number = phone_number.replace(/\s+/g, ""); return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/); }, "Please specify a valid phone number"); /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. * A number of very detailed GB telephone number RegEx patterns can also be found at: * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers */ //Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers $.validator.addMethod("phonesUK", function(phone_number, element) { phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/); }, "Please specify a valid uk phone number"); /** * Matches a valid Canadian Postal Code * * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) * @result true * * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) * @result false * * @name jQuery.validator.methods.postalCodeCA * @type Boolean * @cat Plugins/Validate/Methods */ $.validator.addMethod( "postalCodeCA", function( value, element ) { return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value ); }, "Please specify a valid postal code" ); /* * Valida CEPs do brasileiros: * * Formatos aceitos: * 99999-999 * 99.999-999 * 99999999 */ $.validator.addMethod("postalcodeBR", function(cep_value, element) { return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); }, "Informe um CEP válido."); /* Matches Italian postcode (CAP) */ $.validator.addMethod("postalcodeIT", function(value, element) { return this.optional(element) || /^\d{5}$/.test(value); }, "Please specify a valid postal code"); $.validator.addMethod("postalcodeNL", function(value, element) { return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value); }, "Please specify a valid postal code"); // Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) $.validator.addMethod("postcodeUK", function(value, element) { return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); }, "Please specify a valid UK postcode"); /* * Lets you say "at least X inputs that match selector Y must be filled." * * The end result is that neither of these inputs: * * * * * ...will validate unless at least one of them is filled. * * partnumber: {require_from_group: [1,".productinfo"]}, * description: {require_from_group: [1,".productinfo"]} * * options[0]: number of fields that must be filled in the group * options[1]: CSS selector that defines the group of conditionally required fields */ $.validator.addMethod("require_from_group", function(value, element, options) { var $fields = $(options[1], element.form), $fieldsFirst = $fields.eq(0), validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this), isValid = $fields.filter(function() { return validator.elementValue(this); }).length >= options[0]; // Store the cloned validator for future validation $fieldsFirst.data("valid_req_grp", validator); // If element isn't being validated, run each require_from_group field's validation rules if (!$(element).data("being_validated")) { $fields.data("being_validated", true); $fields.each(function() { validator.element(this); }); $fields.data("being_validated", false); } return isValid; }, $.validator.format("Please fill at least {0} of these fields.")); /* * Lets you say "either at least X inputs that match selector Y must be filled, * OR they must all be skipped (left blank)." * * The end result, is that none of these inputs: * * * * * * ...will validate unless either at least two of them are filled, * OR none of them are. * * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, * description: {skip_or_fill_minimum: [2,".productinfo"]}, * color: {skip_or_fill_minimum: [2,".productinfo"]} * * options[0]: number of fields that must be filled in the group * options[1]: CSS selector that defines the group of conditionally required fields * */ $.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { var $fields = $(options[1], element.form), $fieldsFirst = $fields.eq(0), validator = $fieldsFirst.data("valid_skip") ? $fieldsFirst.data("valid_skip") : $.extend({}, this), numberFilled = $fields.filter(function() { return validator.elementValue(this); }).length, isValid = numberFilled === 0 || numberFilled >= options[0]; // Store the cloned validator for future validation $fieldsFirst.data("valid_skip", validator); // If element isn't being validated, run each skip_or_fill_minimum field's validation rules if (!$(element).data("being_validated")) { $fields.data("being_validated", true); $fields.each(function() { validator.element(this); }); $fields.data("being_validated", false); } return isValid; }, $.validator.format("Please either skip these fields or fill at least {0} of them.")); /* Validates US States and/or Territories by @jdforsythe * Can be case insensitive or require capitalization - default is case insensitive * Can include US Territories or not - default does not * Can include US Military postal abbreviations (AA, AE, AP) - default does not * * Note: "States" always includes DC (District of Colombia) * * Usage examples: * * This is the default - case insensitive, no territories, no military zones * stateInput: { * caseSensitive: false, * includeTerritories: false, * includeMilitary: false * } * * Only allow capital letters, no territories, no military zones * stateInput: { * caseSensitive: false * } * * Case insensitive, include territories but not military zones * stateInput: { * includeTerritories: true * } * * Only allow capital letters, include territories and military zones * stateInput: { * caseSensitive: true, * includeTerritories: true, * includeMilitary: true * } * * * */ jQuery.validator.addMethod("stateUS", function(value, element, options) { var isDefault = typeof options === "undefined", caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive, includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories, includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary, regex; if (!includeTerritories && !includeMilitary) { regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; } else if (includeTerritories && includeMilitary) { regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; } else if (includeTerritories) { regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; } else { regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; } regex = caseSensitive ? new RegExp(regex) : new RegExp(regex, "i"); return this.optional(element) || regex.test(value); }, "Please specify a valid state"); // TODO check if value starts with <, otherwise don't try stripping anything $.validator.addMethod("strippedminlength", function(value, element, param) { return $(value).text().length >= param; }, $.validator.format("Please enter at least {0} characters")); $.validator.addMethod("time", function(value, element) { return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(value); }, "Please enter a valid time, between 00:00 and 23:59"); $.validator.addMethod("time12h", function(value, element) { return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value); }, "Please enter a valid time in 12-hour am/pm format"); // same as url, but TLD is optional $.validator.addMethod("url2", function(value, element) { return this.optional(element) || /^(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(value); }, $.validator.messages.url); /** * Return true, if the value is a valid vehicle identification number (VIN). * * Works with all kind of text inputs. * * @example * @desc Declares a required input element whose value must be a valid vehicle identification number. * * @name $.validator.methods.vinUS * @type Boolean * @cat Plugins/Validate/Methods */ $.validator.addMethod("vinUS", function(v) { if (v.length !== 17) { return false; } var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ], VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ], FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ], rs = 0, i, n, d, f, cd, cdv; for (i = 0; i < 17; i++) { f = FL[i]; d = v.slice(i, i + 1); if (i === 8) { cdv = d; } if (!isNaN(d)) { d *= f; } else { for (n = 0; n < LL.length; n++) { if (d.toUpperCase() === LL[n]) { d = VL[n]; d *= f; if (isNaN(cdv) && n === 8) { cdv = LL[n]; } break; } } } rs += d; } cd = rs % 11; if (cd === 10) { cd = "X"; } if (cd === cdv) { return true; } return false; }, "The specified vehicle identification number (VIN) is invalid."); $.validator.addMethod("zipcodeUS", function(value, element) { return this.optional(element) || /^\d{5}(-\d{4})?$/.test(value); }, "The specified US ZIP Code is invalid"); $.validator.addMethod("ziprange", function(value, element) { return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); }, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"); }));jQuery(function(a){a(".ar_assessment_images img").mouseenter(function(){a(".ar_asses_main_img img").stop(!0,!0).fadeOut(1200).delay(200).remove();a(".ar_asses_main_img").append('');a(".ar_asses_main_img img").stop(!0,!0).fadeIn(1200);return!1})});jQuery(document).ready(function(){jQuery(".topScroll").hover(function(){jQuery(".topScroll").css("cursor","pointer")});jQuery(".topScroll").click(function(){jQuery("html, body").delay(100).animate({scrollTop:jqmag(".headerOuter").position().top},820)})});jQuery(document).ready(function() { jQuery.validator.addClassRules({ require_field: { required: true, maxlength: 40 }, require_max_100: { required: true //maxlength: 100 }, require_five: { required: true, minlength: 5, maxlength: 20 }, require_10: { required: true, minlength: 10, maxlength: 200 }, require_email: { required: true, email: true }, require_int: { required: true, digits: true, maxlength: 20 }, require_int_4: { required: true, digits: true, minlength: 4, maxlength: 20 }, require_cvv: { required: true, digits: true, minlength: 3, maxlength: 4 }, require_credit_card: { required: true, digits: true, minlength: 12, maxlength: 19 }, require_int_10: { required: true, digits: true, minlength: 10, maxlength: 20 }, require_int_8: { required: true, digits: true, minlength: 8, maxlength: 20 }, require_currency: { required: true, currency: ["$", false], minlength: 2, maxlength: 20 }, require_decimal: { required: true, decimal:true, minlength: 3, maxlength: 20 } }); jQuery("#formbuilder").validate({ errorPlacement:function(error,element) { error.appendTo(element.siblings("label")) } }); });jQuery.fn.extend({bigimage:function(){jq(this).hover(function(){jq(this).stop().children(".zoomimage").fadeTo("fast",1)},function(){jq(this).stop().children(".zoomimage").hide()});jq(".zoomimage").click(function(){jq(".photolarge").html("");jq(".photolarge").append('');jq(".photolarge img").stop().animate({width:"77%"});jq(".photolarge").css({border:"solid 1px grey","z-index":"100000","margin-left":"-20px"});jq(".photolarge").stop().animate({width:"694px", height:"auto"});jq(".photolarge img").stop().fadeTo("slow",1);jq("html, body").stop().animate({scrollTop:jq(".photolarge").offset().top-50},1E3);jq(".photolarge").is(":visible")&&jq(".zoomimage, .ar_asses_main_img img").animate({opacity:0});jq(".photolarge").click(function(){jq(".photolarge img").stop().animate({width:"0"});jq(".photolarge").stop().fadeOut("slow",0);jq(".photolarge").stop().animate({width:0});jq(".photolarge").css({border:"none"});jq(".photolarge").not(":visible")&&jq(".ar_asses_main_img img").animate({opacity:1}); jq("html, body").stop().animate({scrollTop:jq(".photolarge").offset().top},1E3)})})}});jQuery.easing.jswing=jQuery.easing.swing; jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return jQuery.easing[jQuery.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a+c;return-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){if((a/=d/2)<1)return b/ 2*a*a*a+c;return b/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a+c;return-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a*a+c;return b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e, a,c,b,d){return-b*Math.cos(a/d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return a==0?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){if(a==0)return c;if(a==d)return c+b;if((a/=d/2)<1)return b/2*Math.pow(2,10*(a-1))+c;return b/2*(-Math.pow(2,-10*--a)+2)+c}, easeInCirc:function(e,a,c,b,d){return-b*(Math.sqrt(1-(a/=d)*a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){if((a/=d/2)<1)return-b/2*(Math.sqrt(1-a*a)-1)+c;return b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);if(g':' data="'+t+'" type="application/x-shockwave-flash">';var r={width:"100%",height:"100%",allowscriptaccess:"always",wmode:"transparent",quality:"high",flashvars:"",movie:t+(e.browser.msie?"?"+i:""),name:i};return e.each(n,function(e,t){r.flashvars+=e+"="+t+"&"}),e.each(r,function(e,t){a+=''}),a+="",e(a)}function n(e){return Math.round(100*e)/100}function i(e){return/mpegurl/i.test(e)?"application/x-mpegurl":"video/"+e}function a(e){return/^(video|application)/.test(e)||(e=i(e)),!!g.canPlayType(e).replace("no","")}function r(t,n){var i=e.grep(t,function(e){return e.type===n});return i.length?i[0]:null}function o(e){var t=e.attr("src"),n=e.attr("type")||"",i=t.split(y)[1];return n=/mpegurl/.test(n)?"mpegurl":n.replace("video/",""),{src:t,suffix:i||n,type:n||i}}function s(t){var n=this,i=[];e("source",t).each(function(){i.push(o(e(this)))}),i.length||i.push(o(t)),n.initialSources=i,n.resolve=function(t){return t?(e.isArray(t)?t={sources:e.map(t,function(t){var n,i=e.extend({},t);return e.each(t,function(e){n=e}),i.type=n,i.src=t[n],delete i[n],i})}:"string"==typeof t&&(t={src:t,sources:[]},e.each(i,function(e,n){"flash"!=n.type&&t.sources.push({type:n.type,src:t.src.replace(y,"."+n.suffix+"$2")})})),t):{sources:i}}}function l(e){return e=parseInt(e,10),e>=10?e:"0"+e}function d(e){e=e||0;var t=Math.floor(e/3600),n=Math.floor(e/60);return e-=60*n,t>=1?(n-=60*t,t+":"+l(n)+":"+l(e)):l(n)+":"+l(e)}!function(e){if(!e.browser){var t=e.browser={},n=navigator.userAgent.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(n)||/(safari)[ \/]([\w.]+)/.exec(n)||/(webkit)[ \/]([\w.]+)/.exec(n)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(n)||/(msie) ([\w.]+)/.exec(n)||n.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(n)||[];i[1]&&(t[i[1]]=!0,t.version=i[2]||"0")}}(jQuery),e(function(){"function"==typeof e.fn.flowplayer&&e("video").parent(".flowplayer").flowplayer()});var u=[],c=[],f=window.navigator.userAgent;window.flowplayer=function(t){return e.isFunction(t)?c.push(t):"number"==typeof t||void 0===t?u[t||0]:e(t).data("flowplayer")},e(window).on("beforeunload",function(){e.each(u,function(t,n){n.conf.splash?n.unload():n.bind("error",function(){e(".flowplayer.is-error .fp-message").remove()})})}),e.extend(flowplayer,{version:"5.4.3",engine:{},conf:{},support:{},defaults:{debug:!1,disabled:!1,engine:"html5",fullscreen:window==window.top,keyboard:!0,ratio:9/16,adaptiveRatio:!1,flashfit:!1,rtmp:0,splash:!1,swf:"//releases.flowplayer.org/5.4.3/flowplayer.swf",speeds:[.25,.5,1,1.5,2],tooltip:!0,volume:"object"!=typeof localStorage?1:"true"==localStorage.muted?0:isNaN(localStorage.volume)?1:localStorage.volume||1,errors:["","Video loading aborted","Network error","Video not properly encoded","Video file not found","Unsupported video","Skin not found","SWF file not found","Subtitles not found","Invalid RTMP URL","Unsupported video format. Try installing Adobe Flash."],errorUrls:["","","","","","","","","","","http://get.adobe.com/flashplayer/"],playlist:[]}});var p=1;e.fn.flowplayer=function(t,n){return"string"==typeof t&&(t={swf:t}),e.isFunction(t)&&(n=t,t={}),!t&&this.data("flowplayer")||this.each(function(){var i,a,r=e(this).addClass("is-loading"),o=e.extend({},flowplayer.defaults,flowplayer.conf,t,r.data()),l=e("video",r).addClass("fp-engine").removeAttr("controls"),d=l.length?new s(l):null,f={};if(o.playlist.length){var v,g=l.attr("preload");l.length&&l.replaceWith(v=e("

")),l=e("

")[0],i=0;i0&&flowplayer.support.video&&u[0].pause(),u.remove(),is_absolute||s.rtmp||(c=e("").attr("src",c)[0].src),o)o.__play(c);else{a="fp"+(""+Math.random()).slice(3,15);var f={hostname:s.embedded?s.hostname:location.hostname,url:c,callback:"jQuery."+a};i.data("origin")&&(f.origin=i.data("origin")),is_absolute&&delete s.rtmp,e.each(["key","autoplay","preload","rtmp","loop","debug","preload","splash"],function(e,t){s[t]&&(f[t]=s[t])}),f.rtmp&&(f.rtmp=d(f.rtmp)),r=t(s.swf,f),r.prependTo(i),o=r[0],setTimeout(function(){try{if(!o.PercentLoaded())return i.trigger("error",[n,{code:7,url:s.swf}])}catch(e){}},5e3),e[a]=function(t,i){s.debug&&"status"!=t&&console.log("--",t,i);var a=e.Event(t);switch(t){case"ready":i=e.extend(l,i);break;case"click":a.flash=!0;break;case"keydown":a.which=i;break;case"seek":l.time=i;break;case"buffered":l.buffered=!0;break;case"status":n.trigger("progress",i.time),i.buffer<=l.bytes&&!l.buffered?(l.buffer=i.buffer/l.bytes*l.duration,n.trigger("buffer",l.buffer)):l.buffered&&n.trigger("buffered")}setTimeout(function(){n.trigger(a,i)},1)}}},speed:e.noop,unload:function(){o&&o.__unload&&o.__unload(),delete e[a],e("object",i).remove(),o=0}};e.each("pause,resume,seek,volume".split(","),function(e,t){l[t]=function(e){n.ready&&("seek"==t&&n.video.time&&!n.paused&&n.trigger("beforeseek"),void 0===e?o["__"+t]():o["__"+t](e))}});var d=e(window);return n.bind("ready fullscreen fullscreen-exit",function(t){var a=i.height(),r=i.width();if(n.conf.flashfit||/full/.test(t.type)){var o,s,l=n.isFullscreen,u=l&&F,c=!flowplayer.support.inlineBlock,f=l?u?screen.availWidth:d.width():r,p=l?u?screen.availHeight:d.height():a,v=u?screen.width-screen.availWidth:0,g=u?screen.height-screen.availHeight:0,m=c?r:"",h=c?a:"";(n.conf.flashfit||"fullscreen"===t.type)&&(o=n.video.width/n.video.height,s=n.video.height/n.video.width,h=Math.max(s*f),m=Math.max(o*p),h=h>p?m*s:h,h=Math.min(Math.round(h),p),m=m>f?h*o:m,m=Math.min(Math.round(m),f),g=Math.max(Math.round((p+g-h)/2),0),v=Math.max(Math.round((f+v-m)/2),0)),e("object",i).css({width:m,height:h,marginTop:g,marginLeft:v})}}),l};var v,g=e("

00:00 00:00

'.replace(/class="/g,'class="fp-'));var u=i("progress"),c=i("buffer"),f=i("elapsed"),p=i("remaining"),v=i("waiting"),g=i("ratio"),m=i("speed"),h=i("duration"),y=g.css("paddingTop"),b=i("timeline").slider2(t.rtl),w=b.data("api"),k=(i("volume"),i("fullscreen")),x=i("volumeslider").slider2(t.rtl),C=x.data("api"),T=n.is(".fixed-controls, .no-toggle");w.disableAnimation(n.hasClass("is-touch")),l.animation||v.html("

loading …

"),a(s.ratio);try{s.fullscreen||k.remove()}catch(S){k.remove()}t.bind("ready",function(){var e=t.video.duration;w.disable(t.disabled||!e),s.adaptiveRatio&&a(t.video.height/t.video.width),h.add(p).html(d(e)),e>=3600&&n.addClass("is-long")||n.removeClass("is-long"),C.slide(t.volumeLevel)}).bind("unload",function(){y||g.css("paddingTop","")}).bind("buffer",function(){var e=t.video,n=e.buffer/e.duration;!e.seekable&&l.seekable&&w.max(n),1>n?c.css("width",100*n+"%"):c.css({width:"100%"})}).bind("speed",function(e,t,n){m.text(n+"x").addClass("fp-hilite"),setTimeout(function(){m.removeClass("fp-hilite")},1e3)}).bind("buffered",function(){c.css({width:"100%"}),w.max(1)}).bind("progress",function(){var e=t.video.time,n=t.video.duration;w.dragging||w.slide(e/n,t.seeking?0:250),f.html(d(e)),p.html("-"+d(n-e))}).bind("finish resume seek",function(e){n.toggleClass("is-finished","finish"==e.type)}).bind("stop",function(){f.html(d(0)),w.slide(0,100)}).bind("finish",function(){f.html(d(t.video.duration)),w.slide(1,100),n.removeClass("is-seeking")}).bind("beforeseek",function(){u.stop()}).bind("volume",function(){C.slide(t.volumeLevel)}).bind("disable",function(){var e=t.disabled;w.disable(e),C.disable(e),n.toggleClass("is-disabled",t.disabled)}).bind("mute",function(e,t,i){n.toggleClass("is-muted",i)}).bind("error",function(t,i,a){if(n.removeClass("is-loading").addClass("is-error"),a){a.message=s.errors[a.code],i.error=!0;var r=e(".fp-message",n);e("h2",r).text((i.engine||"html5")+": "+a.message),e("p",r).text(a.url||i.video.url||i.video.src||s.errorUrls[a.code]),n.unbind("mouseenter click").removeClass("is-mouseover")}}).bind("mouseenter mouseleave",function(e){if(!T){var t,i="mouseenter"==e.type;r(i),i?(n.bind("pause.x mousemove.x volume.x",function(){r(!0),t=new Date}),o=setInterval(function(){new Date-t>5e3&&(r(!1),t=new Date)},100)):(n.unbind(".x"),clearInterval(o))}}).bind("mouseleave",function(){(w.dragging||C.dragging)&&n.addClass("is-mouseover").removeClass("is-mouseout")}).bind("click.player",function(n){return e(n.target).is(".fp-ui, .fp-engine")||n.flash?(n.preventDefault(),t.toggle()):void 0}),s.poster&&n.css("backgroundImage","url("+s.poster+")");var F=n.css("backgroundColor"),_="none"!=n.css("backgroundImage")||F&&"rgba(0, 0, 0, 0)"!=F&&"transparent"!=F;!_||s.splash||s.autoplay||t.bind("ready stop",function(){n.addClass("is-poster").one("progress",function(){n.removeClass("is-poster")})}),!_&&t.forcedSplash&&n.css("backgroundColor","#555"),e(".fp-toggle, .fp-play",n).click(t.toggle),e.each(["mute","fullscreen","unload"],function(e,n){i(n).click(function(){t[n]()})}),b.bind("slide",function(e,n){t.seeking=!0,t.seek(n*t.video.duration)}),x.bind("slide",function(e,n){t.volume(n)}),i("time").click(function(){e(this).toggleClass("is-inverted")}),r(T)});var b,w,k="is-help";e(document).bind("keydown.fp",function(t){var n=b,i=t.ctrlKey||t.metaKey||t.altKey,a=t.which,r=n&&n.conf;if(n&&r.keyboard&&!n.disabled){if(-1!=e.inArray(a,[63,187,191,219]))return w.toggleClass(k),!1;if(27==a&&w.hasClass(k))return w.toggleClass(k),!1;if(!i&&n.ready){if(t.preventDefault(),t.shiftKey)return 39==a?n.speed(!0):37==a&&n.speed(!1),void 0;if(58>a&&a>47)return n.seekTo(a-48);switch(a){case 38:case 75:n.volume(n.volumeLevel+.15);break;case 40:case 74:n.volume(n.volumeLevel-.15);break;case 39:case 76:n.seeking=!0,n.seek(!0);break;case 37:case 72:n.seeking=!0,n.seek(!1);break;case 190:n.seekTo();break;case 32:n.toggle();break;case 70:r.fullscreen&&n.fullscreen();break;case 77:n.mute();break;case 27:n[n.isFullscreen?"fullscreen":"unload"]()}}}}),flowplayer(function(t,n){t.conf.keyboard&&(n.bind("mouseenter mouseleave",function(e){b=t.disabled||"mouseenter"!=e.type?0:t,b&&(w=n)}),n.append('

spaceplay / pause

escstop

ffullscreen

shift + slower / faster (latest Chrome and Safari)

volume

mmute

seek

 . seek to previous

126 seek to 10%, 20%, …60%

'),t.conf.tooltip&&e(".fp-ui",n).attr("title","Hit ? for help").on("mouseout.tip",function(){e(this).removeAttr("title").off("mouseout.tip")}),e(".fp-close",n).click(function(){n.toggleClass(k)}))});var x,C=e.browser.mozilla?"moz":"webkit",T="fullscreen",S="fullscreen-exit",F=flowplayer.support.fullscreen,_="function"==typeof document.exitFullscreen,E=navigator.userAgent.toLowerCase(),M=/(safari)[ \/]([\w.]+)/.exec(E)&&!/(chrome)[ \/]([\w.]+)/.exec(E);e(document).bind(_?"fullscreenchange":C+"fullscreenchange",function(t){var n=e(document.webkitCurrentFullScreenElement||document.mozFullScreenElement||document.fullscreenElement||t.target);n.length&&!x?x=n.trigger(T,[n]):(x.trigger(S,[x]),x=null)}),flowplayer(function(t,n){if(t.conf.fullscreen){var i,a=e(window),r={pos:0,play:!1};t.isFullscreen=!1,t.fullscreen=function(e){return t.disabled?void 0:(void 0===e&&(e=!t.isFullscreen),e&&(i=a.scrollTop()),F?e?_?n[0].requestFullscreen():(n[0][C+"RequestFullScreen"](Element.ALLOW_KEYBOARD_INPUT),!M||document.webkitCurrentFullScreenElement||document.mozFullScreenElement||n[0][C+"RequestFullScreen"]()):_?document.exitFullscreen():document[C+"CancelFullScreen"]():("flash"===t.engine&&t.conf.rtmp&&(r={pos:t.video.time,play:t.playing}),t.trigger(e?T:S,[t])),t)};var o;n.bind("mousedown.fs",function(){+new Date-o<150&&t.ready&&t.fullscreen(),o=+new Date}),t.bind(T,function(){n.addClass("is-fullscreen"),t.isFullscreen=!0}).bind(S,function(){n.removeClass("is-fullscreen"),t.isFullscreen=!1,a.scrollTop(i)}).bind("ready",function(){r.pos&&!isNaN(r.pos)&&setTimeout(function(){t.play(),t.seek(r.pos),r.play||setTimeout(function(){t.pause()},100),r={pos:0,play:!1}},250)})}}),flowplayer(function(t,n){function i(){return e(r.query,n)}function a(){return e(r.query+"."+o,n)}var r=e.extend({active:"is-active",advance:!0,query:".fp-playlist a"},t.conf),o=r.active;t.play=function(n){return void 0===n?t.resume():"number"!=typeof n||t.conf.playlist[n]?("number"!=typeof n&&t.load.apply(null,arguments),t.unbind("resume.fromfirst"),t.video.index=n,t.load("string"==typeof t.conf.playlist[n]?t.conf.playlist[n].toString():e.map(t.conf.playlist[n],function(t){return e.extend({},t)})),t):t},t.next=function(e){e&&e.preventDefault();var n=t.video.index;return-1!=n&&(n=n===t.conf.playlist.length-1?0:n+1,t.play(n)),t},t.prev=function(e){e&&e.preventDefault();var n=t.video.index;return-1!=n&&(n=0===n?t.conf.playlist.length-1:n-1,t.play(n)),t},e(".fp-next",n).click(t.next),e(".fp-prev",n).click(t.prev),r.advance&&n.unbind("finish.pl").bind("finish.pl",function(e,t){var i=t.video.index+1;i1&&t.one("resume.fromfirst",function(){return t.play(0),!1}))});var s=!1;if(t.conf.playlist.length){s=!0;var l=n.find(".fp-playlist");if(!l.length){l=e('
');var d=e(".fp-next,.fp-prev",n).eq(0).before(l);d.length||e("video",n).after(l)}l.empty(),e.each(t.conf.playlist,function(t,n){var i;if("string"==typeof n)i=n;else for(var a in n[0])if(n[0].hasOwnProperty(a)){i=n[0][a];break}l.append(e("").attr({href:i,"data-index":t}))})}if(i().length){s||(t.conf.playlist=[],i().each(function(){var n=e(this).attr("href");e(this).attr("data-index",t.conf.playlist.length),t.conf.playlist.push(n)})),n.on("click",r.query,function(n){n.preventDefault();var i=e(n.target).closest(r.query),a=Number(i.attr("data-index"));-1!=a&&t.play(a)});var u=i().filter("[data-cuepoints]").length;t.bind("load",function(i,r,s){var l=a().removeClass(o),d=l.attr("data-index"),c=s.index=t.video.index||0,f=e('a[data-index="'+c+'"]',n).addClass(o),p=c==t.conf.playlist.length-1;n.removeClass("video"+d).addClass("video"+c).toggleClass("last-video",p),s.index=r.video.index=c,s.is_last=r.video.is_last=p,u&&(t.cuepoints=f.data("cuepoints"))}).bind("unload.pl",function(){a().toggleClass(o)})}t.conf.playlist.length&&(t.conf.loop=!1)});var D=/ ?cue\d+ ?/;flowplayer(function(t,n){function i(e){n[0].className=n[0].className.replace(D," "),e>=0&&n.addClass("cue"+e)}var a=0;t.cuepoints=t.conf.cuepoints||[],t.bind("progress",function(e,r,o){if(a&&.015>o-a)return a=o;a=o;for(var s,l=t.cuepoints||[],d=0;do&&(o=a+i);var s=e("").addClass("fp-cuepoint fp-cuepoint"+n).css("left",100*(o/a)+"%");s.appendTo(r).mousedown(function(){return t.seek(o),!1})})})}),flowplayer(function(t,n){function i(e){var t=e.split(":");return 2==t.length&&t.unshift(0),60*60*t[0]+60*t[1]+parseFloat(t[2].replace(",","."))}var a=e("track",n),r=t.conf;if(!flowplayer.support.subtitles||(t.subtitles=a.length&&a[0].track,!r.nativesubtitles||"html5"!=r.engine)){a.remove();var o=/^(([0-9]{2}:)?[0-9]{2}:[0-9]{2}[,.]{1}[0-9]{3}) --\> (([0-9]{2}:)?[0-9]{2}:[0-9]{2}[,.]{1}[0-9]{3})(.*)/;t.subtitles=[];var s=a.attr("src");if(s){e.get(s,function(n){for(var a,r,s,l,d=0,u=n.split("\n"),c=u.length,f={};c>d;d++)if(r=o.exec(u[d])){for(a=u[d-1],s="

"+u[++d]+"


";e.trim(u[++d])&&d"+u[d]+"


";f={title:a,startTime:i(r[1]),endTime:i(r[2]||r[3]),text:s},l={time:f.startTime,subtitle:f},t.subtitles.push(f),t.cuepoints.push(l),t.cuepoints.push({time:f.endTime,subtitleEnd:a}),0===f.startTime&&t.trigger("cuepoint",l)}}).fail(function(){return t.trigger("error",{code:8,url:s}),!1});var l,d=e("
",n).appendTo(n);t.bind("cuepoint",function(e,t,n){n.subtitle?(l=n.index,d.html(n.subtitle.text).addClass("fp-active")):n.subtitleEnd&&(d.removeClass("fp-active"),l=n.index)}).bind("seek",function(n,i,a){l&&t.cuepoints[l]&&t.cuepoints[l].time>a&&(d.removeClass("fp-active"),l=null),e.each(t.cuepoints||[],function(e,n){var i=n.subtitle;i&&l!=n.index?a>=n.time&&(!i.endTime||a<=i.endTime)&&t.trigger("cuepoint",n):n.subtitleEnd&&a>=n.time&&n.index==l+1&&t.trigger("cuepoint",n)})})}}}),flowplayer(function(t,n){function i(){if(r&&"undefined"!=typeof _gat){var e=_gat._getTracker(a),i=t.video;e._setAllowLinker(!0),e._trackEvent("Video / Seconds played",t.engine+"/"+i.type,n.attr("title")||i.src.split("/").slice(-1)[0].replace(y,""),Math.round(r/1e3)),r=0}}var a=t.conf.analytics,r=0,o=0;a&&("undefined"==typeof _gat&&e.getScript("//google-analytics.com/ga.js"),t.bind("load unload",i).bind("progress",function(){t.seeking||(r+=o?+new Date-o:0,o=+new Date)}).bind("pause",function(){o=0}),e(window).unload(i))});var A=/IEMobile/.test(f);(flowplayer.support.touch||A)&&flowplayer(function(t,n){var i=/Android/.test(f)&&!/Firefox/.test(f)&&!/Opera/.test(f),a=/Silk/.test(f);if(i){t.conf.videoTypePreference="mp4";var r=t.load;t.load=function(){var e=r.apply(t,arguments);return t.trigger("ready",t,t.video),e}}flowplayer.support.volume||n.addClass("no-volume no-mute"),n.addClass("is-touch"),n.find(".fp-timeline").data("api").disableAnimation();var o=!1;n.bind("touchmove",function(){o=!0}).bind("touchend click",function(){return o?(o=!1,void 0):t.playing&&!n.hasClass("is-mouseover")?(n.addClass("is-mouseover").removeClass("is-mouseout"),!1):(t.paused&&n.hasClass("is-mouseout")&&t.toggle(),t.paused&&A&&e("video",n)[0].play(),void 0)}),t.conf.native_fullscreen&&(e.browser.webkit||e.browser.safari)&&(t.fullscreen=function(){var t=e("video",n);t[0].webkitEnterFullScreen(),t.one("webkitendfullscreen",function(){t.prop("controls",!0).prop("controls",!1)})}),(i||a)&&t.bind("ready",function(){var i=e("video",n);i.one("canplay",function(){i[0].play()}),i[0].play(),t.bind("progress.dur",function(){var a=i[0].duration;1!==a&&(t.video.duration=a,e(".fp-duration",n).html(d(a)),t.unbind("progress.dur"))})})}),flowplayer(function(t,n){if(t.conf.embed!==!1){var i=t.conf,a=e(".fp-ui",n),r=e("",{"class":"fp-embed",title:"Copy to your site"}).appendTo(a),o=e("
",{"class":"fp-embed-code"}).append("