Valid Swedish social security number yyyymmddXXXXvalidate_swesc
+
+
+ UK VAT Numbervalidate_ukvatnumber
+
+
Custom validation
diff --git a/jquery.formvalidator.js b/jquery.formvalidator.js
index 7dd2a69..2209b0d 100644
--- a/jquery.formvalidator.js
+++ b/jquery.formvalidator.js
@@ -400,6 +400,78 @@ jQueryFormUtils.validateSwedishMobileNumber = function(number) {
return (/07[0-9{1}]/).test(begin) || (begin === '467' && number.substr(3, 1) === '0');
};
+/**
+ * Validate that string is a UK VAT Number
+ * TODO: Extra Checking for other VAT Numbers (Other countries and UK Government/Health Authorities)
+ * Code Adapted from http://www.codingforums.com/showthread.php?t=211967
+ *
+ * @param {Number}
+ * @return {Boolean}
+ */
+jQueryFormUtils.validateUKVATNumber = function(number) {
+ number = number.replace(/[^0-9]/g, '');
+
+ //Check Length
+ if(number.length < 9) {
+ return false;
+ }
+
+ var valid = false;
+
+ var VATsplit = [];
+ VATsplit = number.split("");
+
+ var checkDigits = Number(VATsplit[7] + VATsplit[8]); // two final digits as a number
+
+ var firstDigit = VATsplit[0];
+ var secondDigit = VATsplit[1];
+ if ((firstDigit == 0) && (secondDigit >0)) {
+ return false;
+ }
+
+ var total = 0;
+ for (var i=0; i<7; i++) { // first 7 digits
+ total += VATsplit[i] * (8-i); // sum weighted cumulative total
+ }
+
+ var c = 0;
+ var i = 0;
+
+ for (var m = 8; m>=2; m--) {
+ c += VATsplit[i] * m;
+ i++;
+ }
+
+ // Traditional Algorithm for VAT numbers issued before 2010
+
+ while (total > 0) {
+ total -= 97; // deduct 97 repeatedly until total is negative
+ }
+ total = Math.abs(total); // make positive
+
+ if (checkDigits == total) {
+ valid = true;
+ }
+
+ // If not valid try the new method (introduced November 2009) by subtracting 55 from the mod 97 check digit if we can - else add 42
+
+ if (!valid) {
+ total = total%97 // modulus 97
+
+ if (total >= 55) {
+ total = total - 55
+ } else {
+ total = total + 42
+ }
+
+ if (total == checkDigits) {
+ valid = true;
+ }
+ }
+
+ return valid;
+};
+
/**
* Is this a valid birth date YYYY-MM-DD
*
@@ -467,7 +539,9 @@ jQueryFormUtils.parseDate = function(val, dateFormat) {
var day = findDateUnit('d', formatParts, matches);
var year = findDateUnit('y', formatParts, matches);
- if (month === 2 && day > 28 || month > 12 || month === 0) {
+ if ((month === 2 && day > 28 && (year % 4 !== 0 || year % 100 === 0 && year % 400 !== 0))
+ || (month === 2 && day > 29 && (year % 4 === 0 || year % 100 !== 0 && year % 400 === 0))
+ || month > 12 || month === 0) {
return false;
}
if ((this.isShortMonth(month) && day > 30) || (!this.isShortMonth(month) && day > 31) || day === 0) {
@@ -779,6 +853,11 @@ jQueryFormUtils.validateInput = function(el, language, config, form) {
else if (validationRules.indexOf('validate_spamcheck') > -1 && !jQueryFormUtils.simpleSpamCheck(value, validationRules)) {
return language.badSecurityAnswer;
}
+
+ // UK VAT Number check
+ else if (validationRules.indexOf('validate_ukvatnumber') > -1 && !jQueryFormUtils.validateUKVATNumber(value)) {
+ return language.badUKVatAnswer;
+ }
// Custom regexp validation
if (validationRules.indexOf('validate_custom') > -1 && validationRules.indexOf('regexp/') > -1) {
@@ -833,7 +912,8 @@ jQueryFormUtils.LANG = {
badFloat : 'Incorrect float value',
badCustomVal : 'You gave an incorrect answer',
badInt : 'Incorrect integer value',
- badSecurityNumber : 'Your social security number was incorrect'
+ badSecurityNumber : 'Your social security number was incorrect',
+ badUKVatAnswer : 'Incorrect UK VAT Number'
};
diff --git a/jquery.formvalidator.min.js b/jquery.formvalidator.min.js
index 995efd1..eed2fe5 100644
--- a/jquery.formvalidator.min.js
+++ b/jquery.formvalidator.min.js
@@ -10,4 +10,4 @@
*
* $version 1.2
*/
-(function(a){a.extend(a.fn,{validateOnBlur:function(b,c){a(this).find("textarea,input").blur(function(){a(this).doValidate(b,c)});return a(this)},showHelpOnFocus:function(b){if(typeof b==="undefined"){b="data-help"}a(this).find("textarea,input").each(function(){var c=a(this).attr(b);if(c){a(this).focus(function(){var b=a(this);if(b.parent().find(".jquery_form_help").length===0){b.after(a("").addClass("jquery_form_help").text(c).hide().fadeIn())}}).blur(function(){a(this).parent().find(".jquery_form_help").fadeOut("slow",function(){a(this).remove()})})}});return a(this)},doValidate:function(b,c,d){if(typeof d==="undefined"){d=true}var e=a(this);var f={validationRuleAttribute:"data-validation",errorElementClass:"error",borderColorOnError:"red",dateFormat:"yyyy-mm-dd"};if(c){a.extend(f,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}var g=e.attr("type");if(jQueryFormUtils.defaultBorderColor===null&&g!=="submit"&&g!=="checkbox"&&g!=="radio"){jQueryFormUtils.defaultBorderColor=e.css("border-color")}e.removeClass(f.errorElementClass).parent().find(".jquery_form_error_message").remove();if(f.borderColorOnError!==""){e.css("border-color",jQueryFormUtils.defaultBorderColor)}var h=jQueryFormUtils.validateInput(e,b,f);if(h===true){e.unbind("keyup")}else{e.addClass(f.errorElementClass).parent().append(''+h+"");if(f.borderColorOnError!==""){e.css("border-color",f.borderColorOnError)}if(d){e.bind("keyup",function(){a(this).doValidate(b,c,false)})}}return a(this)},validate:function(b,c){var d={ignore:[],errorElementClass:"error",borderColorOnError:"red",errorMessageClass:"jquery_form_error_message",validationRuleAttribute:"data-validation",errorMessagePosition:"top",scrollToTopOnError:true,dateFormat:"yyyy-mm-dd"};if(c){a.extend(d,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}var e=function(a,b){if(b==="submit"||b==="button"){return true}for(var c=0;c0){for(var j=0;j";for(var j=0;j * "+g[j]}i.children().eq(0).before('
'+k+"
");if(d.scrollToTopOnError){a(window).scrollTop(i.offset().top-20)}}else{for(var j=0;j0){m.eq(0).text(h[j].attr("data-error"))}else{l.append(''+h[j].attr("data-error")+"")}}}return false}return true},restrictLength:function(a){new jQueryFormUtils.lengthRestriction(this,a);return this}})})(jQuery);var jQueryFormUtils={};jQueryFormUtils.defaultBorderColor=null;jQueryFormUtils.validateEmail=function(a){var b=/^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(b.test(a)){var c=a.split("@");if(c.length===2){return jQueryFormUtils.validateDomain(c[1])}}return false};jQueryFormUtils.validatePhoneNumber=function(a){var b=a.match(/\+/g);var c=a.match(/-/g);if(b!==null&&b.length>1||c!==null&&c.length>1){return false}if(b!==null&&a.indexOf("+")!==0){return false}a=a.replace(/([-|\+])/g,"");return a.length>8&&a.match(/[^0-9]/g)===null};jQueryFormUtils.validateSwedishMobileNumber=function(a){if(!jQueryFormUtils.validatePhoneNumber(a)){return false}a=a.replace(/[^0-9]/g,"");var b=a.substring(0,3);if(a.length!==10&&b!=="467"){return false}else if(a.length!==11&&b==="467"){return false}return/07[0-9{1}]/.test(b)||b==="467"&&a.substr(3,1)==="0"};jQueryFormUtils.validateBirthdate=function(a,b){var c=this.parseDate(a,b);if(!c){return false}var d=new Date;var e=d.getFullYear();var f=c[0];var g=c[1];var h=c[2];if(f===e){var i=d.getMonth()+1;if(g===i){var j=d.getDate();return h<=j}else{return ge-124}};jQueryFormUtils.parseDate=function(a,b){var c=b.replace(/[a-zA-Z]/gi,"").substring(0,1);var d="^";var e=b.split(c);for(var f=0;f0?"\\"+c:"")+"(\\d{"+e[f].length+"})"}d+="$";var g=a.match(new RegExp(d));if(g===null){return false}var h=function(a,b,c){for(var d=0;d28||i>12||i===0){return false}if(this.isShortMonth(i)&&j>30||!this.isShortMonth(i)&&j>31||j===0){return false}return[k,i,j]};jQueryFormUtils.parseDateInt=function(a){if(a.indexOf("0")===0){a=a.replace("0","")}return parseInt(a,10)};jQueryFormUtils.validateSwedishSecurityNumber=function(a){if(!a.match(/^(\d{4})(\d{2})(\d{2})(\d{4})$/)){return false}var b=RegExp.$1;var c=jQueryFormUtils.parseDateInt(RegExp.$2);var d=jQueryFormUtils.parseDateInt(RegExp.$3);var e=new Array(31,28,31,30,31,30,31,31,30,31,30,31);if(b%400===0||b%4===0&&b%100!==0){e[1]=29}if(c<1||c>12||d<1||d>e[c-1]){return false}a=a.substring(2,a.length);var f="";for(var g=0;g24||c>59||b===24&&c>0){return false}}return true};jQueryFormUtils.validateFloat=function(a){return a.match(/^(\-|)([0-9]+)\.([0-9]+)$/)!==null};jQueryFormUtils.validateInteger=function(a){return a!==""&&a.replace(/[0-9]/g,"")===""};jQueryFormUtils.isShortMonth=function(a){return a%2===0&&a<7||a%2!==0&&a>7};jQueryFormUtils.simpleSpamCheck=function(a,b){var c=b.match(/captcha([0-9a-z]+)/i)[1].replace("captcha","");return a===c};jQueryFormUtils.validateDomain=function(a){a=a.replace("ftp://","").replace("https://","").replace("http://","").replace("www.","");var b=new Array(".com",".net",".org",".biz",".coop",".info",".museum",".name",".pro",".edu",".gov",".int",".mil",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".aq",".ar",".as",".at",".au",".aw",".az",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".ca",".cc",".cd",".cf",".cg",".ch",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cu",".cv",".cx",".cy",".cz",".de",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".es",".et",".fi",".fj",".fk",".fm",".fo",".fr",".ga",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gv",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".it",".je",".jm",".jo",".jp",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".nl",".no",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".ru",".sa",".sb",".sc",".sd",".se",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".uk",".um",".us",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".ws",".wf",".ye",".yt",".yu",".za",".zm",".zw",".mobi",".xxx");var c=a.lastIndexOf(".");var d=a.substring(0,c);var e=a.substring(c,a.length);var f=false;for(var g=0;g<2||c>57){return false}else{var l=d.substring(0,1);var m=d.substring(d.length-1,d.length);if(l==="-"||l==="."||m==="-"||m==="."){return false}if(d.split(".").length>3||d.split("..").length>1){return false}if(d.replace(/[0-9a-z\.\-]/g,"")!==""){return false}}return true};jQueryFormUtils.validateInput=function(a,b,c,d){var e=jQuery.trim(a.val());var f=a.attr(c.validationRuleAttribute);if(typeof f!=="undefined"&&f!==null){var g=function(a,b){var c=new RegExp("("+b+"[0-9-]+)","g");return a.match(c)[0].replace(/[^0-9\-]/g,"")};if(f.indexOf("required")>-1&&e===""){return b.requiredFields}if(f.indexOf("validate_min_length")>-1&&e.length-1&&e.length>g(f,"length")){return b.toLongStart+g(f,"length")+b.toLongEnd}if(f.indexOf("validate_length")>-1){var h=g(f,"length").split("-");if(e.lengthparseInt(h[1],10)){return b.badLength+g(f,"length")+b.toLongEnd}}if(f.indexOf("validate_email")>-1&&!jQueryFormUtils.validateEmail(e)){return b.badEmail}else if(f.indexOf("validate_domain")>-1&&!jQueryFormUtils.validateDomain(e)){return b.badDomain}else if(f.indexOf("validate_url")>-1&&!jQueryFormUtils.validateUrl(e)){return b.badUrl}else if(f.indexOf("validate_float")>-1&&!jQueryFormUtils.validateFloat(e)){return b.badFloat}else if(f.indexOf("validate_int")>-1&&!jQueryFormUtils.validateInteger(e)){return b.badInt}else if(f.indexOf("validate_time")>-1&&!jQueryFormUtils.validateTime(e)){return b.badTime}else if(f.indexOf("validate_date")>-1&&!jQueryFormUtils.parseDate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_birthdate")>-1&&!jQueryFormUtils.validateBirthdate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_phone")>-1&&!jQueryFormUtils.validatePhoneNumber(e)){return b.badTelephone}else if(f.indexOf("validate_swemobile")>-1&&!jQueryFormUtils.validateSwedishMobileNumber(e)){return b.badTelephone}else if(f.indexOf("validate_spamcheck")>-1&&!jQueryFormUtils.simpleSpamCheck(e,f)){return b.badSecurityAnswer}if(f.indexOf("validate_custom")>-1&&f.indexOf("regexp/")>-1){var i=new RegExp(f.split("regexp/")[1].split("/")[0]);if(!i.test(e)){return b.badCustomVal}}if(f.indexOf("validate_swesc")>-1&&!jQueryFormUtils.validateSwedishSecurityNumber(e)){return b.badSecurityNumber}if(f.indexOf("validate_confirmation")>-1&&typeof d!=="undefined"){var j="";var k=d.find("input[name="+a.attr("name")+"_confirmation]").eq(0);if(k){j=k.val()}if(e!==j){return b.notConfirmed}}}return true};jQueryFormUtils.LANG={errorTitle:"Form submission failed!",requiredFields:"You have not answered all required fields",badTime:"You have not given a correct time",badEmail:"You have not given a correct e-mail address",badTelephone:"You have not given a correct phone number",badSecurityAnswer:"You have not given a correct answer to the security question",badDate:"You have not given a correct date",toLongStart:"You have given an answer longer then ",toLongEnd:" characters",toShortStart:"You have given an answer shorter then ",toShortEnd:" characters",badLength:"You have to give an answer between ",notConfirmed:"Values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"Incorrect url value",badFloat:"Incorrect float value",badCustomVal:"You gave an incorrect answer",badInt:"Incorrect integer value",badSecurityNumber:"Your social security number was incorrect"};jQueryFormUtils.validateUrl=function(a){var b=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return b.test(a)};jQueryFormUtils.lengthRestriction=function(a,b){this.input=a;this.maxLength=parseInt(b.text(),10);var c=this;$(this.input).keyup(function(){$(this).val($(this).val().substring(0,c.maxLength));b.text(c.maxLength-$(this).val().length)}).focus(function(){$(this).keyup()}).trigger("keyup")}
\ No newline at end of file
+(function($){$.extend($.fn,{validateOnBlur:function(language,settings){$(this).find("textarea,input").blur(function(){$(this).doValidate(language,settings)});return $(this)},showHelpOnFocus:function(attrName){if(typeof attrName==="undefined"){attrName="data-help"}$(this).find("textarea,input").each(function(){var help=$(this).attr(attrName);if(help){$(this).focus(function(){var $element=$(this);if($element.parent().find(".jquery_form_help").length===0){$element.after($("").addClass("jquery_form_help").text(help).hide().fadeIn())}}).blur(function(){$(this).parent().find(".jquery_form_help").fadeOut("slow",function(){$(this).remove()})})}});return $(this)},doValidate:function(language,settings,attachKeyupEvent){if(typeof attachKeyupEvent==="undefined"){attachKeyupEvent=true}var $element=$(this);var config={validationRuleAttribute:"data-validation",errorElementClass:"error",borderColorOnError:"red",dateFormat:"yyyy-mm-dd"};if(settings){$.extend(config,settings)}if(language){$.extend(jQueryFormUtils.LANG,language)}else{language=jQueryFormUtils.LANG}var elementType=$element.attr("type");if(jQueryFormUtils.defaultBorderColor===null&&elementType!=="submit"&&elementType!=="checkbox"&&elementType!=="radio"){jQueryFormUtils.defaultBorderColor=$element.css("border-color")}$element.removeClass(config.errorElementClass).parent().find(".jquery_form_error_message").remove();if(config.borderColorOnError!==""){$element.css("border-color",jQueryFormUtils.defaultBorderColor)}var validation=jQueryFormUtils.validateInput($element,language,config);if(validation===true){$element.unbind("keyup")}else{$element.addClass(config.errorElementClass).parent().append(''+validation+"");if(config.borderColorOnError!==""){$element.css("border-color",config.borderColorOnError)}if(attachKeyupEvent){$element.bind("keyup",function(){$(this).doValidate(language,settings,false)})}}return $(this)},validate:function(language,settings){var config={ignore:[],errorElementClass:"error",borderColorOnError:"red",errorMessageClass:"jquery_form_error_message",validationRuleAttribute:"data-validation",errorMessagePosition:"top",scrollToTopOnError:true,dateFormat:"yyyy-mm-dd"};if(settings){$.extend(config,settings)}if(language){$.extend(jQueryFormUtils.LANG,language)}else{language=jQueryFormUtils.LANG}var ignoreInput=function(name,type){if(type==="submit"||type==="button"){return true}for(var i=0;i0){for(var i=0;i";for(var i=0;i * "+errorMessages[i]}$form.children().eq(0).before('
'+messages+"
");if(config.scrollToTopOnError){$(window).scrollTop($form.offset().top-20)}}else{for(var i=0;i0){errorSpan.eq(0).text(errorInputs[i].attr("data-error"))}else{parent.append(''+errorInputs[i].attr("data-error")+"")}}}return false}return true},restrictLength:function(maxLengthElement){new jQueryFormUtils.lengthRestriction(this,maxLengthElement);return this}})})(jQuery);var jQueryFormUtils={};jQueryFormUtils.defaultBorderColor=null;jQueryFormUtils.validateEmail=function(email){var emailFilter=/^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(emailFilter.test(email)){var parts=email.split("@");if(parts.length===2){return jQueryFormUtils.validateDomain(parts[1])}}return false};jQueryFormUtils.validatePhoneNumber=function(tele){var numPlus=tele.match(/\+/g);var numHifen=tele.match(/-/g);if((numPlus!==null&&numPlus.length>1)||(numHifen!==null&&numHifen.length>1)){return false}if(numPlus!==null&&tele.indexOf("+")!==0){return false}tele=tele.replace(/([-|\+])/g,"");return tele.length>8&&tele.match(/[^0-9]/g)===null};jQueryFormUtils.validateSwedishMobileNumber=function(number){if(!jQueryFormUtils.validatePhoneNumber(number)){return false}number=number.replace(/[^0-9]/g,"");var begin=number.substring(0,3);if(number.length!==10&&begin!=="467"){return false}else{if(number.length!==11&&begin==="467"){return false}}return(/07[0-9{1}]/).test(begin)||(begin==="467"&&number.substr(3,1)==="0")};jQueryFormUtils.validateUKVATNumber=function(number){number=number.replace(/[^0-9]/g,"");if(number.length<9){return false}var valid=false;var VATsplit=[];VATsplit=number.split("");var checkDigits=Number(VATsplit[7]+VATsplit[8]);var firstDigit=VATsplit[0];var secondDigit=VATsplit[1];if((firstDigit==0)&&(secondDigit>0)){return false}var total=0;for(var i=0;i<7;i++){total+=VATsplit[i]*(8-i)}var c=0;var i=0;for(var m=8;m>=2;m--){c+=VATsplit[i]*m;i++}while(total>0){total-=97}total=Math.abs(total);if(checkDigits==total){valid=true}if(!valid){total=total%97;if(total>=55){total=total-55}else{total=total+42}if(total==checkDigits){valid=true}}return valid};jQueryFormUtils.validateBirthdate=function(val,dateFormat){var inputDate=this.parseDate(val,dateFormat);if(!inputDate){return false}var d=new Date();var currentYear=d.getFullYear();var year=inputDate[0];var month=inputDate[1];var day=inputDate[2];if(year===currentYear){var currentMonth=d.getMonth()+1;if(month===currentMonth){var currentDay=d.getDate();return day<=currentDay}else{return month(currentYear-124)}};jQueryFormUtils.parseDate=function(val,dateFormat){var divider=dateFormat.replace(/[a-zA-Z]/gi,"").substring(0,1);var regexp="^";var formatParts=dateFormat.split(divider);for(var i=0;i0?"\\"+divider:"")+"(\\d{"+formatParts[i].length+"})"}regexp+="$";var matches=val.match(new RegExp(regexp));if(matches===null){return false}var findDateUnit=function(unit,formatParts,matches){for(var i=0;i28&&(year%4!==0||year%100===0&&year%400!==0))||(month===2&&day>29&&(year%4===0||year%100!==0&&year%400===0))||month>12||month===0){return false}if((this.isShortMonth(month)&&day>30)||(!this.isShortMonth(month)&&day>31)||day===0){return false}return[year,month,day]};jQueryFormUtils.parseDateInt=function(val){if(val.indexOf("0")===0){val=val.replace("0","")}return parseInt(val,10)};jQueryFormUtils.validateSwedishSecurityNumber=function(securityNumber){if(!securityNumber.match(/^(\d{4})(\d{2})(\d{2})(\d{4})$/)){return false}var year=RegExp.$1;var month=jQueryFormUtils.parseDateInt(RegExp.$2);var day=jQueryFormUtils.parseDateInt(RegExp.$3);var months=new Array(31,28,31,30,31,30,31,31,30,31,30,31);if(year%400===0||year%4===0&&year%100!==0){months[1]=29}if(month<1||month>12||day<1||day>months[month-1]){return false}securityNumber=securityNumber.substring(2,securityNumber.length);var check="";for(var i=0;i24||minutes>59)||(hours===24&&minutes>0)){return false}}return true};jQueryFormUtils.validateFloat=function(val){return val.match(/^(\-|)([0-9]+)\.([0-9]+)$/)!==null};jQueryFormUtils.validateInteger=function(val){return val!==""&&val.replace(/[0-9]/g,"")===""};jQueryFormUtils.isShortMonth=function(m){return(m%2===0&&m<7)||(m%2!==0&&m>7)};jQueryFormUtils.simpleSpamCheck=function(val,classAttr){var answer=classAttr.match(/captcha([0-9a-z]+)/i)[1].replace("captcha","");return val===answer};jQueryFormUtils.validateDomain=function(val){val=val.replace("ftp://","").replace("https://","").replace("http://","").replace("www.","");var arr=new Array(".com",".net",".org",".biz",".coop",".info",".museum",".name",".pro",".edu",".gov",".int",".mil",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".aq",".ar",".as",".at",".au",".aw",".az",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".ca",".cc",".cd",".cf",".cg",".ch",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cu",".cv",".cx",".cy",".cz",".de",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".es",".et",".fi",".fj",".fk",".fm",".fo",".fr",".ga",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gv",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".it",".je",".jm",".jo",".jp",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".nl",".no",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".ru",".sa",".sb",".sc",".sd",".se",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".uk",".um",".us",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".ws",".wf",".ye",".yt",".yu",".za",".zm",".zw",".mobi",".xxx");var dot=val.lastIndexOf(".");var domain=val.substring(0,dot);var ext=val.substring(dot,val.length);var hasTopDomain=false;for(var i=0;i<2||dot>57){return false}else{var firstChar=domain.substring(0,1);var lastChar=domain.substring(domain.length-1,domain.length);if(firstChar==="-"||firstChar==="."||lastChar==="-"||lastChar==="."){return false}if(domain.split(".").length>3||domain.split("..").length>1){return false}if(domain.replace(/[0-9a-z\.\-]/g,"")!==""){return false}}}return true};jQueryFormUtils.validateInput=function(el,language,config,form){var value=jQuery.trim(el.val());var validationRules=el.attr(config.validationRuleAttribute);if(typeof validationRules!=="undefined"&&validationRules!==null){var getAttributeInteger=function(attrValue,attrName){var regex=new RegExp("("+attrName+"[0-9-]+)","g");return attrValue.match(regex)[0].replace(/[^0-9\-]/g,"")};if(validationRules.indexOf("required")>-1&&value===""){return language.requiredFields}if(validationRules.indexOf("validate_min_length")>-1&&value.length-1&&value.length>getAttributeInteger(validationRules,"length")){return language.toLongStart+getAttributeInteger(validationRules,"length")+language.toLongEnd}if(validationRules.indexOf("validate_length")>-1){var range=getAttributeInteger(validationRules,"length").split("-");if(value.lengthparseInt(range[1],10)){return language.badLength+getAttributeInteger(validationRules,"length")+language.toLongEnd}}if(validationRules.indexOf("validate_email")>-1&&!jQueryFormUtils.validateEmail(value)){return language.badEmail}else{if(validationRules.indexOf("validate_domain")>-1&&!jQueryFormUtils.validateDomain(value)){return language.badDomain}else{if(validationRules.indexOf("validate_url")>-1&&!jQueryFormUtils.validateUrl(value)){return language.badUrl}else{if(validationRules.indexOf("validate_float")>-1&&!jQueryFormUtils.validateFloat(value)){return language.badFloat}else{if(validationRules.indexOf("validate_int")>-1&&!jQueryFormUtils.validateInteger(value)){return language.badInt}else{if(validationRules.indexOf("validate_time")>-1&&!jQueryFormUtils.validateTime(value)){return language.badTime}else{if(validationRules.indexOf("validate_date")>-1&&!jQueryFormUtils.parseDate(value,config.dateFormat)){return language.badDate}else{if(validationRules.indexOf("validate_birthdate")>-1&&!jQueryFormUtils.validateBirthdate(value,config.dateFormat)){return language.badDate}else{if(validationRules.indexOf("validate_phone")>-1&&!jQueryFormUtils.validatePhoneNumber(value)){return language.badTelephone}else{if(validationRules.indexOf("validate_swemobile")>-1&&!jQueryFormUtils.validateSwedishMobileNumber(value)){return language.badTelephone}else{if(validationRules.indexOf("validate_spamcheck")>-1&&!jQueryFormUtils.simpleSpamCheck(value,validationRules)){return language.badSecurityAnswer}else{if(validationRules.indexOf("validate_ukvatnumber")>-1&&!jQueryFormUtils.validateUKVATNumber(value)){return language.badUKVatAnswer}}}}}}}}}}}}if(validationRules.indexOf("validate_custom")>-1&&validationRules.indexOf("regexp/")>-1){var regexp=new RegExp(validationRules.split("regexp/")[1].split("/")[0]);if(!regexp.test(value)){return language.badCustomVal}}if(validationRules.indexOf("validate_swesc")>-1&&!jQueryFormUtils.validateSwedishSecurityNumber(value)){return language.badSecurityNumber}if(validationRules.indexOf("validate_confirmation")>-1&&typeof(form)!=="undefined"){var conf="";var confInput=form.find("input[name="+el.attr("name")+"_confirmation]").eq(0);if(confInput){conf=confInput.val()}if(value!==conf){return language.notConfirmed}}}return true};jQueryFormUtils.LANG={errorTitle:"Form submission failed!",requiredFields:"You have not answered all required fields",badTime:"You have not given a correct time",badEmail:"You have not given a correct e-mail address",badTelephone:"You have not given a correct phone number",badSecurityAnswer:"You have not given a correct answer to the security question",badDate:"You have not given a correct date",toLongStart:"You have given an answer longer then ",toLongEnd:" characters",toShortStart:"You have given an answer shorter then ",toShortEnd:" characters",badLength:"You have to give an answer between ",notConfirmed:"Values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"Incorrect url value",badFloat:"Incorrect float value",badCustomVal:"You gave an incorrect answer",badInt:"Incorrect integer value",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number"};jQueryFormUtils.validateUrl=function(url){var urlFilter=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return urlFilter.test(url)};jQueryFormUtils.lengthRestriction=function(inputElement,maxLengthElement){this.input=inputElement;this.maxLength=parseInt(maxLengthElement.text(),10);var self=this;$(this.input).keyup(function(){$(this).val($(this).val().substring(0,self.maxLength));maxLengthElement.text(self.maxLength-$(this).val().length)}).focus(function(){$(this).keyup()}).trigger("keyup")};
\ No newline at end of file