From 7da3b98e210a80411c87ba52be4405940a41aa49 Mon Sep 17 00:00:00 2001
From: Ray
Date: Mon, 15 Feb 2016 23:19:37 -0800
Subject: [PATCH 1/3] Fix IE compatibility issue, numeral errors on empty
strings
-Array.prototype.find not supported yet in IE (switch to using regex)
-Check for empty string before calling numeral functions
-Avoid testing on alternate delimiters in numeral -- numeral does not seem to be returning
correct values
---
form-validator/sanitize.dev.js | 5 ++++-
form-validator/src/core-validators.js | 8 ++++----
test/form.html | 28 +++++++--------------------
test/phantom-polyfills.js | 23 ----------------------
test/qunit.html | 1 -
5 files changed, 15 insertions(+), 50 deletions(-)
delete mode 100644 test/phantom-polyfills.js
diff --git a/form-validator/sanitize.dev.js b/form-validator/sanitize.dev.js
index a1a15f2..df52a1e 100644
--- a/form-validator/sanitize.dev.js
+++ b/form-validator/sanitize.dev.js
@@ -67,6 +67,9 @@
return this.insert(val, $input, 'left');
},
numberFormat : function(val, $input) {
+ if (val.length === 0) {
+ return val;
+ }
if ( 'numeral' in window ) {
//If this has been previously formatted, it needs to be unformatted first before being reformatted.
//Else numeral will fail
@@ -74,7 +77,7 @@
val = numeral(val).format( $input.attr('data-sanitize-number-format') );
}
else {
- throw new Error('Using sanitation function "numberFormat" requires that you include numeral.js ' +
+ throw new ReferenceError('Using sanitation function "numberFormat" requires that you include numeral.js ' +
'(http://numeraljs.com/)');
}
return val;
diff --git a/form-validator/src/core-validators.js b/form-validator/src/core-validators.js
index c6b38b2..6009ed5 100644
--- a/form-validator/src/core-validators.js
+++ b/form-validator/src/core-validators.js
@@ -166,16 +166,16 @@
allowsSteps = false;
var sanitize = $el.attr('data-sanitize') || '';
- var isFormattedWithNumeral = sanitize.split(/\s/).find(function (name) {
- return (name === 'numberFormat');
- });
+ var isFormattedWithNumeral = sanitize.match(/(^|[\s])numberFormat([\s]|$)/i);
if (isFormattedWithNumeral) {
if (!window.numeral) {
throw new ReferenceError('The data-sanitize value numberFormat cannot be used without the numeral' +
' library. Please see Data Validation in http://www.formvalidator.net for more information.');
}
//Unformat input first, then convert back to String
- val = String(numeral().unformat(val));
+ if (val.length) {
+ val = String(numeral().unformat(val));
+ }
}
if (allowing.indexOf('number') === -1) {
diff --git a/test/form.html b/test/form.html
index cf01323..6c83132 100644
--- a/test/form.html
+++ b/test/form.html
@@ -264,12 +264,16 @@
-
diff --git a/test/phantom-polyfills.js b/test/phantom-polyfills.js
deleted file mode 100644
index a2c4d0c..0000000
--- a/test/phantom-polyfills.js
+++ /dev/null
@@ -1,23 +0,0 @@
-//MDN
-if (!Array.prototype.find) {
- Array.prototype.find = function(predicate) {
- if (this === null) {
- throw new TypeError('Array.prototype.find called on null or undefined');
- }
- if (typeof predicate !== 'function') {
- throw new TypeError('predicate must be a function');
- }
- var list = Object(this);
- var length = list.length >>> 0;
- var thisArg = arguments[1];
- var value;
-
- for (var i = 0; i < length; i++) {
- value = list[i];
- if (predicate.call(thisArg, value, i, list)) {
- return value;
- }
- }
- return undefined;
- };
-}
diff --git a/test/qunit.html b/test/qunit.html
index 4fcec7b..ed07da1 100644
--- a/test/qunit.html
+++ b/test/qunit.html
@@ -11,7 +11,6 @@
-
From c64621e5f43c4e9a85ce02d78c7a489aa7b48c50 Mon Sep 17 00:00:00 2001
From: Ray
Date: Mon, 15 Feb 2016 23:58:04 -0800
Subject: [PATCH 2/3] Don't version .dev files; remove code in version task
The mechanism used to version these files is prone to error, because
it does a global search and replace looking
for the prior version and replacing it with the new version.
If any versions have been skipped or any version number has been
altered by hand, this won't work.
The .dev files are not for release and so do not need to be versioned.
The production files contain a banner which will automatically
pull the right version number when the files are built.
---
Gruntfile.js | 17 ++---------------
form-validator/brazil.dev.js | 1 -
form-validator/date.dev.js | 1 -
form-validator/file.dev.js | 1 -
form-validator/html5.dev.js | 1 -
form-validator/jsconf.dev.js | 1 -
form-validator/lang/cz.dev.js | 1 -
form-validator/lang/de.dev.js | 1 -
form-validator/lang/es.dev.js | 1 -
form-validator/lang/fr.dev.js | 1 -
form-validator/lang/pl.dev.js | 1 -
form-validator/lang/pt.dev.js | 1 -
form-validator/lang/ro.dev.js | 1 -
form-validator/lang/ru.dev.js | 1 -
form-validator/lang/sv.dev.js | 1 -
form-validator/location.dev.js | 1 -
form-validator/sanitize.dev.js | 1 -
form-validator/security.dev.js | 1 -
form-validator/sweden.dev.js | 1 -
form-validator/toggleDisabled.dev.js | 1 -
form-validator/uk.dev.js | 1 -
21 files changed, 2 insertions(+), 35 deletions(-)
diff --git a/Gruntfile.js b/Gruntfile.js
index be6f9c3..be6e8cd 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -126,8 +126,8 @@ module.exports = function (grunt) {
});
/*
- * Change to new version or the next version number in all files
- * containing the version definition
+ * Change to new version or the next version number. The project must be built again after this task
+ * in order for the version change to take effect.
*/
grunt.registerTask('version', 'Bump up the version number, or change version name by adding --new-version=3.1.0', function () {
var pkg = grunt.config.get('pkg'),
@@ -142,19 +142,6 @@ module.exports = function (grunt) {
}
grunt.log.writeln('* Moving from version ' + currentVersion + ' to ' + newVersion);
- var fromVersion = '@version ' + currentVersion,
- toVersion = '@version ' + newVersion;
-
-
- // replace version in config files and dev-files
- fs.readdirSync(SRC_DIR).forEach(function(file) {
- if (isJavascriptFile(file)) {
- replaceInFile(SRC_DIR+file, fromVersion, toVersion);
- }
- });
- filesToBuild.devFiles.forEach(function (filePath) {
- replaceInFile(filePath, fromVersion, toVersion);
- });
replaceInFile('package.json', '"version": "' + currentVersion + '"', '"version": "' + newVersion + '"');
replaceInFile('formvalidator.jquery.json', '"version": "' + currentVersion + '"', '"version": "' + newVersion + '"');
diff --git a/form-validator/brazil.dev.js b/form-validator/brazil.dev.js
index 5d9b542..35a9087 100644
--- a/form-validator/brazil.dev.js
+++ b/form-validator/brazil.dev.js
@@ -11,7 +11,6 @@
*
* @website http://formvalidator.net/#brazil-validators
* @license MIT
- * @version 2.2.163
*/
$.formUtils.addValidator({
diff --git a/form-validator/date.dev.js b/form-validator/date.dev.js
index a98c3c6..775d7a6 100644
--- a/form-validator/date.dev.js
+++ b/form-validator/date.dev.js
@@ -10,7 +10,6 @@
*
* @website http://formvalidator.net/#location-validators
* @license MIT
- * @version 2.2.163
*/
(function($) {
diff --git a/form-validator/file.dev.js b/form-validator/file.dev.js
index d729844..b24f681 100644
--- a/form-validator/file.dev.js
+++ b/form-validator/file.dev.js
@@ -10,7 +10,6 @@
*
* @website http://formvalidator.net/#file-validators
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/html5.dev.js b/form-validator/html5.dev.js
index c21ba74..aa38d2f 100644
--- a/form-validator/html5.dev.js
+++ b/form-validator/html5.dev.js
@@ -17,7 +17,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.157
*/
(function($, window) {
diff --git a/form-validator/jsconf.dev.js b/form-validator/jsconf.dev.js
index 4fc8d1b..3d61188 100644
--- a/form-validator/jsconf.dev.js
+++ b/form-validator/jsconf.dev.js
@@ -7,7 +7,6 @@
*
* @website http://formvalidator.net/#location-validators
* @license MIT
- * @version 2.2.163
*/
(function($) {
diff --git a/form-validator/lang/cz.dev.js b/form-validator/lang/cz.dev.js
index 074def1..e9d9891 100644
--- a/form-validator/lang/cz.dev.js
+++ b/form-validator/lang/cz.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/de.dev.js b/form-validator/lang/de.dev.js
index 250ed02..5c71bc2 100644
--- a/form-validator/lang/de.dev.js
+++ b/form-validator/lang/de.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/es.dev.js b/form-validator/lang/es.dev.js
index 2cf1868..0c6f775 100644
--- a/form-validator/lang/es.dev.js
+++ b/form-validator/lang/es.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/fr.dev.js b/form-validator/lang/fr.dev.js
index 1366ed0..4d394a3 100644
--- a/form-validator/lang/fr.dev.js
+++ b/form-validator/lang/fr.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/pl.dev.js b/form-validator/lang/pl.dev.js
index e9e3447..a49dca4 100644
--- a/form-validator/lang/pl.dev.js
+++ b/form-validator/lang/pl.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/pt.dev.js b/form-validator/lang/pt.dev.js
index 080803e..1c1310f 100644
--- a/form-validator/lang/pt.dev.js
+++ b/form-validator/lang/pt.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/ro.dev.js b/form-validator/lang/ro.dev.js
index f603c90..06af791 100644
--- a/form-validator/lang/ro.dev.js
+++ b/form-validator/lang/ro.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/ru.dev.js b/form-validator/lang/ru.dev.js
index 7e9f23b..f9cf152 100644
--- a/form-validator/lang/ru.dev.js
+++ b/form-validator/lang/ru.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/lang/sv.dev.js b/form-validator/lang/sv.dev.js
index 5031afd..9d132bd 100644
--- a/form-validator/lang/sv.dev.js
+++ b/form-validator/lang/sv.dev.js
@@ -6,7 +6,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/location.dev.js b/form-validator/location.dev.js
index b050230..c79cba2 100644
--- a/form-validator/location.dev.js
+++ b/form-validator/location.dev.js
@@ -10,7 +10,6 @@
*
* @website http://formvalidator.net/#location-validators
* @license MIT
- * @version 2.2.163
*/
(function($) {
diff --git a/form-validator/sanitize.dev.js b/form-validator/sanitize.dev.js
index df52a1e..2487b8e 100644
--- a/form-validator/sanitize.dev.js
+++ b/form-validator/sanitize.dev.js
@@ -23,7 +23,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/security.dev.js b/form-validator/security.dev.js
index 717753d..594ef4c 100644
--- a/form-validator/security.dev.js
+++ b/form-validator/security.dev.js
@@ -14,7 +14,6 @@
*
* @website http://formvalidator.net/#security-validators
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/sweden.dev.js b/form-validator/sweden.dev.js
index 8ffe404..011f151 100644
--- a/form-validator/sweden.dev.js
+++ b/form-validator/sweden.dev.js
@@ -13,7 +13,6 @@
*
* @website http://formvalidator.net/#swedish-validators
* @license MIT
- * @version 2.2.163
*/
(function($, window) {
diff --git a/form-validator/toggleDisabled.dev.js b/form-validator/toggleDisabled.dev.js
index 8581bc8..8601ba8 100644
--- a/form-validator/toggleDisabled.dev.js
+++ b/form-validator/toggleDisabled.dev.js
@@ -8,7 +8,6 @@
*
* @website http://formvalidator.net/
* @license MIT
- * @version 2.2.138
*/
(function($, window, undefined) {
diff --git a/form-validator/uk.dev.js b/form-validator/uk.dev.js
index 000628f..7aa35ce 100644
--- a/form-validator/uk.dev.js
+++ b/form-validator/uk.dev.js
@@ -9,7 +9,6 @@
*
* @website http://formvalidator.net/#uk-validators
* @license MIT
- * @version 2.2.163
*/
$.formUtils.addValidator({
name : 'ukvatnumber',
From 4cfe00a999fe8607f01d9655f8a279d9139b9a1c Mon Sep 17 00:00:00 2001
From: Ray
Date: Tue, 16 Feb 2016 00:43:32 -0800
Subject: [PATCH 3/3] Bump version number
---
form-validator/brazil.js | 2 +-
form-validator/date.js | 2 +-
form-validator/file.js | 2 +-
form-validator/html5.js | 2 +-
form-validator/jquery.form-validator.min.js | 4 ++--
form-validator/jsconf.js | 2 +-
form-validator/lang/cz.js | 2 +-
form-validator/lang/de.js | 2 +-
form-validator/lang/es.js | 2 +-
form-validator/lang/fr.js | 2 +-
form-validator/lang/it.js | 2 +-
form-validator/lang/pl.js | 2 +-
form-validator/lang/pt.js | 2 +-
form-validator/lang/ro.js | 2 +-
form-validator/lang/ru.js | 2 +-
form-validator/lang/sv.js | 2 +-
form-validator/location.js | 2 +-
form-validator/sanitize.js | 4 ++--
form-validator/security.js | 2 +-
form-validator/sweden.js | 2 +-
form-validator/toggleDisabled.js | 2 +-
form-validator/uk.js | 2 +-
formvalidator.jquery.json | 2 +-
package.json | 2 +-
24 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/form-validator/brazil.js b/form-validator/brazil.js
index 85499ca..7d73e53 100644
--- a/form-validator/brazil.js
+++ b/form-validator/brazil.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/date.js b/form-validator/date.js
index 092082f..c25fcbe 100644
--- a/form-validator/date.js
+++ b/form-validator/date.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/file.js b/form-validator/file.js
index 9dbd8fa..42ce527 100644
--- a/form-validator/file.js
+++ b/form-validator/file.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/html5.js b/form-validator/html5.js
index a434e89..3ba496b 100644
--- a/form-validator/html5.js
+++ b/form-validator/html5.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/jquery.form-validator.min.js b/form-validator/jquery.form-validator.min.js
index 6eca563..a54dcf1 100644
--- a/form-validator/jquery.form-validator.min.js
+++ b/form-validator/jquery.form-validator.min.js
@@ -1,9 +1,9 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
*/
-!function(a,b){"use strict";var c=a(b);a.formUtils=a.extend(a.formUtils||{},{$win:c,defaultConfig:function(){return{ignore:[],errorElementClass:"error",borderColorOnError:"#b94a48",errorMessageClass:"form-error",validationRuleAttribute:"data-validation",validationErrorMsgAttribute:"data-validation-error-msg",errorMessagePosition:"element",errorMessageTemplate:{container:'
{messages}
',messages:"{errorTitle}
{fields}
",field:"
{msg}
"},errorMessageCustom:this.errorDialogs.setTemplateMessage,scrollToTopOnError:!0,dateFormat:"yyyy-mm-dd",addValidClassOnAll:!1,decimalSeparator:".",inputParentClassOnError:"has-error",inputParentClassOnSuccess:"has-success",validateHiddenInputs:!1}},validators:{},_events:{load:[],valid:[],invalid:[]},haltValidation:!1,isValidatingEntireForm:!1,addValidator:function(a){var b=0===a.name.indexOf("validate_")?a.name:"validate_"+a.name;void 0===a.validateOnKeyUp&&(a.validateOnKeyUp=!0),this.validators[b]=a},isLoadingModules:!1,loadedModules:{},loadModules:function(b,d,e){if(void 0===e&&(e=!0),a.formUtils.isLoadingModules)return void setTimeout(function(){a.formUtils.loadModules(b,d,e)});var f=!1,g=function(b,d){var g=a.split(b),h=g.length,i=function(){h--,0===h&&(a.formUtils.isLoadingModules=!1,e&&f&&("function"==typeof e?e():c.trigger("validatorsLoaded")))};h>0&&(a.formUtils.isLoadingModules=!0);var j="?_="+(new Date).getTime(),k=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];a.each(g,function(b,c){if(c=a.trim(c),0===c.length)i();else{var e=d+c+(".js"===c.slice(-3)?"":".js"),g=document.createElement("SCRIPT");e in a.formUtils.loadedModules?i():(a.formUtils.loadedModules[e]=1,f=!0,g.type="text/javascript",g.onload=i,g.src=e+(".dev.js"===e.slice(-7)?j:""),g.onerror=function(){a.formUtils.warn("Unable to load form validation module "+e)},g.onreadystatechange=function(){("complete"===this.readyState||"loaded"===this.readyState)&&(i(),this.onload=null,this.onreadystatechange=null)},k.appendChild(g))}})};if(d)g(b,d);else{var h=function(){var c=!1;return a('script[src*="form-validator"]').each(function(){return c=this.src.substr(0,this.src.lastIndexOf("/"))+"/","/"===c&&(c=""),!1}),c!==!1?(g(b,c),!0):!1};h()||a(h)}},warn:function(a){"console"in b?"function"==typeof b.console.warn?b.console.warn(a):"function"==typeof b.console.log&&b.console.log(a):alert(a)},validateInput:function(b,c,d,e,f){b.trigger("beforeValidation"),d=d||a.formUtils.defaultConfig(),c=c||a.formUtils.LANG;var g=b.val()||"",h={isValid:!0,shouldChangeDisplay:!0,errorMsg:""},i=b.valAttr("optional"),j=!1,k=!1,l=!1,m=b.valAttr("if-checked"),n=b.valAttr("if-checked-value");if(b.attr("disabled")||!b.is(":visible")&&!d.validateHiddenInputs)return h.shouldChangeDisplay=!1,h;if(null!=m&&(j=!0,l=e.find('input[name="'+m+'"]'),null!=n?l.each(function(b,c){a(c).prop("checked")&&a(c).val()===n&&(k=!0)}):l.prop("checked")&&(k=!0)),!g&&"true"===i||j&&!k)return h.shouldChangeDisplay=d.addValidClassOnAll,h;var o=b.attr(d.validationRuleAttribute),p=!0;if(!o)return h.shouldChangeDisplay=d.addValidClassOnAll,h;var q=b.valAttr("ignore");return q&&a.each(q.split(""),function(a,b){g=g.replace(new RegExp("\\"+b),"")}),a.split(o,function(h){0!==h.indexOf("validate_")&&(h="validate_"+h);var i=a.formUtils.validators[h];if(!i||"function"!=typeof i.validatorFunction)throw new Error('Using undefined validator "'+h+'". Maybe you have forgotten to load the module that "'+h+'" belongs to?');"validate_checkbox_group"===h&&(b=e.find('[name="'+b.attr("name")+'"]:eq(0)'));var j=null;return("keyup"!==f||i.validateOnKeyUp)&&(j=i.validatorFunction(g,b,d,c,e)),j?void 0:(p=null,null!==j&&(p=b.attr(d.validationErrorMsgAttribute+"-"+h.replace("validate_","")),p||(p=b.attr(d.validationErrorMsgAttribute),p||(p="function"!=typeof i.errorMessageKey?c[i.errorMessageKey]:c[i.errorMessageKey(d)],p||(p=i.errorMessage)))),!1)}," "),"string"==typeof p?(b.trigger("validation",!1),h.errorMsg=p,h.isValid=!1,h.shouldChangeDisplay=!0):null===p?h.shouldChangeDisplay=d.addValidClassOnAll:(b.trigger("validation",!0),h.shouldChangeDisplay=!0),"function"==typeof d.onElementValidate&&null!==p&&d.onElementValidate(h.isValid,b,e,p),h},parseDate:function(b,c,d){var e,f,g,h,i=c.replace(/[a-zA-Z]/gi,"").substring(0,1),j="^",k=c.split(i||null);if(a.each(k,function(a,b){j+=(a>0?"\\"+i:"")+"(\\d{"+b.length+"})"}),j+="$",d){var l=[];a.each(b.split(i),function(a,b){1===b.length&&(b="0"+b),l.push(b)}),b=l.join(i)}if(e=b.match(new RegExp(j)),null===e)return!1;var m=function(b,c,d){for(var e=0;e28&&(h%4!==0||h%100===0&&h%400!==0)||2===g&&f>29&&(h%4===0||h%100!==0&&h%400===0)||g>12||0===g?!1:this.isShortMonth(g)&&f>30||!this.isShortMonth(g)&&f>31||0===f?!1:[h,g,f]},parseDateInt:function(a){return 0===a.indexOf("0")&&(a=a.replace("0","")),parseInt(a,10)},isShortMonth:function(a){return a%2===0&&7>a||a%2!==0&&a>7},lengthRestriction:function(b,c){var d=parseInt(c.text(),10),e=0,f=function(){var a=b.val().length;if(a>d){var f=b.scrollTop();b.val(b.val().substring(0,d)),b.scrollTop(f)}e=d-a,0>e&&(e=0),c.text(e)};a(b).bind("keydown keyup keypress focus blur",f).bind("cut paste",function(){setTimeout(f,100)}),a(document).bind("ready",f)},numericRangeCheck:function(b,c){var d=a.split(c),e=parseInt(c.substr(3),10);return 1===d.length&&-1===c.indexOf("min")&&-1===c.indexOf("max")&&(d=[c,c]),2===d.length&&(bparseInt(d[1],10))?["out",d[0],d[1]]:0===c.indexOf("min")&&e>b?["min",e]:0===c.indexOf("max")&&b>e?["max",e]:["ok"]},_numSuggestionElements:0,_selectedSuggestion:null,_previousTypedVal:null,suggest:function(b,d,e){var f={css:{maxHeight:"150px",background:"#FFF",lineHeight:"150%",textDecoration:"underline",overflowX:"hidden",overflowY:"auto",border:"#CCC solid 1px",borderTop:"none",cursor:"pointer"},activeSuggestionCSS:{background:"#E9E9E9"}},g=function(a,b){var c=b.offset();a.css({width:b.outerWidth(),left:c.left+"px",top:c.top+b.outerHeight()+"px"})};e&&a.extend(f,e),f.css.position="absolute",f.css["z-index"]=9999,b.attr("autocomplete","off"),0===this._numSuggestionElements&&c.bind("resize",function(){a(".jquery-form-suggestions").each(function(){var b=a(this),c=b.attr("data-suggest-container");g(b,a(".suggestions-"+c).eq(0))})}),this._numSuggestionElements++;var h=function(b){var c=b.valAttr("suggestion-nr");a.formUtils._selectedSuggestion=null,a.formUtils._previousTypedVal=null,a(".jquery-form-suggestion-"+c).fadeOut("fast")};return b.data("suggestions",d).valAttr("suggestion-nr",this._numSuggestionElements).unbind("focus.suggest").bind("focus.suggest",function(){a(this).trigger("keyup"),a.formUtils._selectedSuggestion=null}).unbind("keyup.suggest").bind("keyup.suggest",function(){var c=a(this),d=[],e=a.trim(c.val()).toLocaleLowerCase();if(e!==a.formUtils._previousTypedVal){a.formUtils._previousTypedVal=e;var i=!1,j=c.valAttr("suggestion-nr"),k=a(".jquery-form-suggestion-"+j);if(k.scrollTop(0),""!==e){var l=e.length>2;a.each(c.data("suggestions"),function(a,b){var c=b.toLocaleLowerCase();return c===e?(d.push(""+b+""),i=!0,!1):void((0===c.indexOf(e)||l&&c.indexOf(e)>-1)&&d.push(b.replace(new RegExp(e,"gi"),"$&")))})}i||0===d.length&&k.length>0?k.hide():d.length>0&&0===k.length?(k=a("").css(f.css).appendTo("body"),b.addClass("suggestions-"+j),k.attr("data-suggest-container",j).addClass("jquery-form-suggestions").addClass("jquery-form-suggestion-"+j)):d.length>0&&!k.is(":visible")&&k.show(),d.length>0&&e.length!==d[0].length&&(g(k,c),k.html(""),a.each(d,function(b,d){a("").append(d).css({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"5px"}).addClass("form-suggest-element").appendTo(k).click(function(){c.focus(),c.val(a(this).text()),h(c)})}))}}).unbind("keydown.validation").bind("keydown.validation",function(b){var c,d,e=b.keyCode?b.keyCode:b.which,g=a(this);if(13===e&&null!==a.formUtils._selectedSuggestion){if(c=g.valAttr("suggestion-nr"),d=a(".jquery-form-suggestion-"+c),d.length>0){var i=d.find("div").eq(a.formUtils._selectedSuggestion).text();g.val(i),h(g),b.preventDefault()}}else{c=g.valAttr("suggestion-nr"),d=a(".jquery-form-suggestion-"+c);var j=d.children();if(j.length>0&&a.inArray(e,[38,40])>-1){38===e?(null===a.formUtils._selectedSuggestion?a.formUtils._selectedSuggestion=j.length-1:a.formUtils._selectedSuggestion--,a.formUtils._selectedSuggestion<0&&(a.formUtils._selectedSuggestion=j.length-1)):40===e&&(null===a.formUtils._selectedSuggestion?a.formUtils._selectedSuggestion=0:a.formUtils._selectedSuggestion++,a.formUtils._selectedSuggestion>j.length-1&&(a.formUtils._selectedSuggestion=0));var k=d.innerHeight(),l=d.scrollTop(),m=d.children().eq(0).outerHeight(),n=m*a.formUtils._selectedSuggestion;return(l>n||n>l+k)&&d.scrollTop(n),j.removeClass("active-suggestion").css("background","none").eq(a.formUtils._selectedSuggestion).addClass("active-suggestion").css(f.activeSuggestionCSS),b.preventDefault(),!1}}}).unbind("blur.suggest").bind("blur.suggest",function(){h(a(this))}),b},LANG:{errorTitle:"Form submission failed!",requiredField:"This is a required field",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",lengthBadStart:"The input value must be between ",lengthBadEnd:" characters",lengthTooLongStart:"The input value is longer than ",lengthTooShortStart:"The input value is shorter than ",notConfirmed:"Input values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"The input value is not a correct URL",badCustomVal:"The input value is incorrect",andSpaces:" and spaces ",badInt:"The input value was not a correct number",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number",badStrength:"The password isn't strong enough",badNumberOfSelectedOptionsStart:"You have to choose at least ",badNumberOfSelectedOptionsEnd:" answers",badAlphaNumeric:"The input value can only contain alphanumeric characters ",badAlphaNumericExtra:" and ",wrongFileSize:"The file you are trying to upload is too large (max %s)",wrongFileType:"Only files of type %s is allowed",groupCheckedRangeStart:"Please choose between ",groupCheckedTooFewStart:"Please choose at least ",groupCheckedTooManyStart:"Please choose a maximum of ",groupCheckedEnd:" item(s)",badCreditCard:"The credit card number is not correct",badCVV:"The CVV number was not correct",wrongFileDim:"Incorrect image dimensions,",imageTooTall:"the image can not be taller than",imageTooWide:"the image can not be wider than",imageTooSmall:"the image was too small",min:"min",max:"max",imageRatioNotAccepted:"Image ratio is not be accepted",badBrazilTelephoneAnswer:"The phone number entered is invalid",badBrazilCEPAnswer:"The CEP entered is invalid",badBrazilCPFAnswer:"The CPF entered is invalid"}})}(jQuery,window),function(a){"use strict";a.split=function(b,c){if("function"!=typeof c){if(!b)return[];var d=[];return a.each(b.split(c?c:/[,|\-\s]\s*/g),function(b,c){c=a.trim(c),c.length&&d.push(c)}),d}b&&a.each(b.split(/[,|\-\s]\s*/g),function(b,d){return d=a.trim(d),d.length?c(d,b):void 0})},a.validate=function(b){var c=a.extend(a.formUtils.defaultConfig(),{form:"form",validateOnEvent:!1,validateOnBlur:!0,validateCheckboxRadioOnClick:!0,showHelpOnFocus:!0,addSuggestions:!0,modules:"",onModulesLoaded:null,language:!1,onSuccess:!1,onError:!1,onElementValidate:!1});if(b=a.extend(c,b||{}),b.lang&&"en"!==b.lang){var d="lang/"+b.lang+".js";b.modules+=b.modules.length?","+d:d}a(b.form).each(function(c,d){d.validationConfig=b;var e=a(d);a.formUtils.$win.trigger("formValidationSetup",[e,b]),e.trigger("formValidationSetup",[b]),e.find(".has-help-txt").unbind("focus.validation").unbind("blur.validation"),e.removeClass("has-validation-callback").unbind("submit.validation").unbind("reset.validation").find("input[data-validation],textarea[data-validation]").unbind("blur.validation"),e.bind("submit.validation",function(){var c=a(this);if(a.formUtils.haltValidation)return!1;if(a.formUtils.isLoadingModules)return setTimeout(function(){c.trigger("submit.validation")},200),!1;var d=c.isValid(b.language,b);if(a.formUtils.haltValidation)return!1;if(!d||"function"!=typeof b.onSuccess)return d||"function"!=typeof b.onError?d:(b.onError(c),!1);var e=b.onSuccess(c);return e===!1?!1:void 0}).bind("reset.validation",function(){var c=a(this),d=c.find("."+b.errorElementClass+",.valid");c.find("."+b.errorMessageClass+".alert").remove(),a.formUtils.errorDialogs.removeErrorStyling(d,b)}).addClass("has-validation-callback"),b.showHelpOnFocus&&e.showHelpOnFocus(),b.addSuggestions&&e.addSuggestions(),b.validateOnBlur&&(e.validateOnBlur(b.language,b),e.bind("html5ValidationAttrsFound",function(){e.validateOnBlur(b.language,b)})),b.validateOnEvent&&e.validateOnEvent(b.language,b)}),""!==b.modules&&a.formUtils.loadModules(b.modules,!1,function(){"function"==typeof b.onModulesLoaded&&b.onModulesLoaded(),a.formUtils.$win.trigger("validatorsLoaded",["string"==typeof b.form?a(b.form):b.form,b])})}}(jQuery),function(a){"use strict";a.formUtils=a.extend(a.formUtils||{},{validators:{},isLoadingModules:!1,loadedModules:{},loadModules:function(b,c,d){if(void 0===d&&(d=!0),a.formUtils.isLoadingModules)return void setTimeout(function(){a.formUtils.loadModules(b,c,d)},10);var e=!1,f=function(b,c){var f=a.split(b),g=f.length,h=function(){g--,0===g&&(a.formUtils.isLoadingModules=!1,d&&e&&("function"==typeof d?d():a.formUtils.$win.trigger("validatorsLoaded")))};g>0&&(a.formUtils.isLoadingModules=!0);var i="?_="+(new Date).getTime(),j=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];a.each(f,function(b,d){if(d=a.trim(d),0===d.length)h();else{var f=c+d+(".js"===d.slice(-3)?"":".js"),g=document.createElement("SCRIPT");f in a.formUtils.loadedModules?h():(a.formUtils.loadedModules[f]=1,e=!0,g.type="text/javascript",g.onload=h,g.src=f+(".dev.js"===f.slice(-7)?i:""),g.onerror=function(){a.formUtils.warn("Unable to load form validation module "+f)},g.onreadystatechange=function(){("complete"===this.readyState||"loaded"===this.readyState)&&(h(),this.onload=null,this.onreadystatechange=null)},j.appendChild(g))}})};if(c)f(b,c);else{var g=function(){var c=!1;return a('script[src*="form-validator"]').each(function(){return c=this.src.substr(0,this.src.lastIndexOf("/"))+"/","/"===c&&(c=""),!1}),c!==!1?(f(b,c),!0):!1};g()||a(g)}}})}(jQuery),function(a){var b=0;a.fn.validateOnBlur=function(b,c){return this.find("*[data-validation]").bind("blur.validation",function(){a(this).validateInputOnBlur(b,c,!0,"blur")}),c.validateCheckboxRadioOnClick&&this.find("input[type=checkbox][data-validation],input[type=radio][data-validation]").bind("click.validation",function(){a(this).validateInputOnBlur(b,c,!0,"click")}),this},a.fn.validateOnEvent=function(b,c){return this.find("*[data-validation-event]").each(function(){var d=a(this),e=d.valAttr("event");e&&d.unbind(e+".validation").bind(e+".validation",function(d){9!==(d||{}).keyCode&&a(this).validateInputOnBlur(b,c,!0,e)})}),this},a.fn.showHelpOnFocus=function(c){return c||(c="data-validation-help"),this.find(".has-help-txt").valAttr("has-keyup-event",!1).removeClass("has-help-txt"),this.find("textarea,input").each(function(){var d=a(this),e="jquery_form_help_"+ ++b,f=d.attr(c);f&&d.addClass("has-help-txt").unbind("focus.help").bind("focus.help",function(){var b=d.parent().find("."+e);0===b.length&&(b=a("").addClass(e).addClass("help").addClass("help-block").text(f).hide(),d.after(b)),b.fadeIn()}).unbind("blur.help").bind("blur.help",function(){a(this).parent().find("."+e).fadeOut("slow")})}),this},a.fn.validate=function(b,c,d){var e=a.extend({},a.formUtils.LANG,d||{});this.each(function(){var d=a(this),f=d.closest("form").get(0).validationConfig||{};d.one("validation",function(a,c){"function"==typeof b&&b(c,this,a)}),d.validateInputOnBlur(e,a.extend({},f,c||{}),!0)})},a.fn.willPostponeValidation=function(){return(this.valAttr("suggestion-nr")||this.valAttr("postpone")||this.hasClass("hasDatepicker"))&&!window.postponedValidation},a.fn.validateInputOnBlur=function(b,c,d,e){if(a.formUtils.eventType=e,this.willPostponeValidation()){var f=this,g=this.valAttr("postpone")||200;return window.postponedValidation=function(){f.validateInputOnBlur(b,c,d,e),window.postponedValidation=!1},setTimeout(function(){window.postponedValidation&&window.postponedValidation()},g),this}b=a.extend({},a.formUtils.LANG,b||{}),a.formUtils.errorDialogs.removeErrorStyling(this,c);var h=this,i=h.closest("form"),j=a.formUtils.validateInput(h,b,c,i,e);return d&&h.unbind("keyup.validation"),j.isValid?j.shouldChangeDisplay&&(h.addClass("valid"),a.formUtils.errorDialogs.getParentContainer(h).addClass(c.inputParentClassOnSuccess)):j.isValid||(a.formUtils.errorDialogs.applyErrorStyling(h,c),a.formUtils.errorDialogs.setInlineErrorMessage(h,j.errorMsg,c,c.errorMessagePosition),d&&h.bind("keyup.validation",function(d){9!==d.keyCode&&a(this).validateInputOnBlur(b,c,!1,"keyup")})),this},a.fn.valAttr=function(a,b){return void 0===b?this.attr("data-validation-"+a):b===!1||null===b?this.removeAttr("data-validation-"+a):(a=a.length>0?"-"+a:"",this.attr("data-validation"+a,b))},a.fn.isValid=function(b,c,d){if(a.formUtils.isLoadingModules){var e=this;return setTimeout(function(){e.isValid(b,c,d)},200),null}c=a.extend({},a.formUtils.defaultConfig(),c||{}),b=a.extend({},a.formUtils.LANG,b||{}),d=d!==!1,a.formUtils.errorDisplayPreventedWhenHalted&&(delete a.formUtils.errorDisplayPreventedWhenHalted,d=!1),a.formUtils.isValidatingEntireForm=!0,a.formUtils.haltValidation=!1;var f=function(b,e){a.inArray(b,h)<0&&h.push(b),i.push(e),e.attr("current-error",b),d&&a.formUtils.errorDialogs.applyErrorStyling(e,c)},g=[],h=[],i=[],j=this,k=function(b,d){return"submit"===d||"button"===d||"reset"===d?!0:a.inArray(b,c.ignore||[])>-1};if(d&&(j.find("."+c.errorMessageClass+".alert").remove(),a.formUtils.errorDialogs.removeErrorStyling(j.find("."+c.errorElementClass+",.valid"),c)),j.find("input,textarea,select").filter(':not([type="submit"],[type="button"])').each(function(){var d=a(this),e=d.attr("type"),h="radio"===e||"checkbox"===e,i=d.attr("name");if(!k(i,e)&&(!h||a.inArray(i,g)<0)){h&&g.push(i);var l=a.formUtils.validateInput(d,b,c,j,"submit");l.shouldChangeDisplay&&(l.isValid?l.isValid&&(d.valAttr("current-error",!1).addClass("valid"),a.formUtils.errorDialogs.getParentContainer(d).addClass(c.inputParentClassOnSuccess)):f(l.errorMsg,d))}}),"function"==typeof c.onValidate){var l=c.onValidate(j);a.isArray(l)?a.each(l,function(a,b){f(b.message,b.element)}):l&&l.element&&l.message&&f(l.message,l.element)}return a.formUtils.isValidatingEntireForm=!1,!a.formUtils.haltValidation&&i.length>0?(d&&("top"===c.errorMessagePosition?a.formUtils.errorDialogs.setTemplateMessage(j,b.errorTitle,h,c):"custom"===c.errorMessagePosition?(a.formUtils.warn("Use deprecated function errorMessageCustom"),"function"==typeof c.errorMessageCustom&&c.errorMessageCustom(j,b.errorTitle,h,c)):a.each(i,function(b,d){a.formUtils.errorDialogs.setInlineErrorMessage(d,d.attr("current-error"),c,c.errorMessagePosition)}),c.scrollToTopOnError&&a.formUtils.$win.scrollTop(j.offset().top-20)),!1):(!d&&a.formUtils.haltValidation&&(a.formUtils.errorDisplayPreventedWhenHalted=!0),!a.formUtils.haltValidation)},a.fn.validateForm=function(b,c){return a.formUtils.warn("Use of deprecated function $.validateForm, use $.isValid instead"),this.isValid(b,c,!0)},a.fn.restrictLength=function(b){return new a.formUtils.lengthRestriction(this,b),this},a.fn.addSuggestions=function(b){var c=!1;return this.find("input").each(function(){var d=a(this);c=a.split(d.attr("data-suggestions")),c.length>0&&!d.hasClass("has-suggestions")&&(a.formUtils.suggest(d,c,b),d.addClass("has-suggestions"))}),this}}(jQuery),function(a){"use strict";var b={getParentContainer:function(b){if(b.valAttr("error-msg-container"))return a(b.valAttr("error-msg-container"));var c=b.parent();if(!c.hasClass("form-group")&&!c.closest("form").hasClass("form-horizontal")){var d=c.closest(".form-group");if(d.length)return d.eq(0)}return c},applyErrorStyling:function(a,b){a.addClass(b.errorElementClass).removeClass("valid"),this.getParentContainer(a).addClass(b.inputParentClassOnError).removeClass(b.inputParentClassOnSuccess),""!==b.borderColorOnError&&a.css("border-color",b.borderColorOnError)},removeErrorStyling:function(c,d){c.each(function(){var c=a(this);b.setInlineErrorMessage(c,"",d,d.errorMessagePosition),c.removeClass("valid").removeClass(d.errorElementClass).css("border-color",""),b.getParentContainer(c).removeClass(d.inputParentClassOnError).removeClass(d.inputParentClassOnSuccess).find("."+d.errorMessageClass).remove()})},setInlineErrorMessage:function(b,c,d,e){var f,g=document.getElementById(b.attr("name")+"_err_msg"),h=function(d){a.formUtils.$win.trigger("validationErrorDisplay",[b,d]),d.html(c)};if(g?(a.formUtils.warn("Using deprecated element reference "+g.id),e=a(g)):"function"==typeof e&&(e=e(b,c,d)),"object"==typeof e){var i=!1;e.find("."+d.errorMessageClass).each(function(){return this.inputReferer===b[0]?(i=a(this),!1):void 0}),i?c?h(i):i.remove():""!==c&&(f=a(''),h(f),f[0].inputReferer=b[0],e.prepend(f))}else{var j=this.getParentContainer(b);f=j.find("."+d.errorMessageClass+".help-block"),0===f.length&&(f=a("").addClass("help-block").addClass(d.errorMessageClass),f.appendTo(j)),h(f)}},setTemplateMessage:function(b,c,d,e){var f,g=e.errorMessageTemplate.messages.replace(/\{errorTitle\}/g,c),h=[];a.each(d,function(a,b){h.push(e.errorMessageTemplate.field.replace(/\{msg\}/g,b))}),g=g.replace(/\{fields\}/g,h.join("")),f=e.errorMessageTemplate.container.replace(/\{errorMessageClass\}/g,e.errorMessageClass),f=f.replace(/\{messages\}/g,g),b.children().eq(0).before(f)}};a.formUtils=a.extend(a.formUtils||{},{errorDialogs:b})}(jQuery),function(a){a.formUtils.addValidator({name:"email",validatorFunction:function(b){var c=b.toLowerCase().split("@"),d=c[0],e=c[1];if(d&&e){if(0===d.indexOf('"')){var f=d.length;if(d=d.replace(/\"/g,""),d.length!==f-2)return!1}return a.formUtils.validators.validate_domain.validatorFunction(c[1])&&0!==d.indexOf(".")&&"."!==d.substring(d.length-1,d.length)&&-1===d.indexOf("..")&&!/[^\w\+\.\-\#\-\_\~\!\$\&\'\(\)\*\+\,\;\=\:]/.test(d)}return!1},errorMessage:"",errorMessageKey:"badEmail"}),a.formUtils.addValidator({name:"domain",validatorFunction:function(a){return a.length>0&&a.length<=253&&!/[^a-zA-Z0-9]/.test(a.slice(-2))&&!/[^a-zA-Z0-9]/.test(a.substr(0,1))&&!/[^a-zA-Z0-9\.\-]/.test(a)&&1===a.split("..").length&&a.split(".").length>1},errorMessage:"",errorMessageKey:"badDomain"}),a.formUtils.addValidator({name:"required",validatorFunction:function(b,c,d,e,f){switch(c.attr("type")){case"checkbox":return c.is(":checked");case"radio":return f.find('input[name="'+c.attr("name")+'"]').filter(":checked").length>0;default:return""!==a.trim(b)}},errorMessage:"",errorMessageKey:function(a){return"top"===a.errorMessagePosition||"custom"===a.errorMessagePosition?"requiredFields":"requiredField"}}),a.formUtils.addValidator({name:"length",validatorFunction:function(b,c,d,e){var f=c.valAttr("length"),g=c.attr("type");if(void 0===f)return alert('Please add attribute "data-validation-length" to '+c[0].nodeName+" named "+c.attr("name")),!0;var h,i="file"===g&&void 0!==c.get(0).files?c.get(0).files.length:b.length,j=a.formUtils.numericRangeCheck(i,f);switch(j[0]){case"out":this.errorMessage=e.lengthBadStart+f+e.lengthBadEnd,h=!1;break;case"min":this.errorMessage=e.lengthTooShortStart+j[1]+e.lengthBadEnd,h=!1;break;case"max":this.errorMessage=e.lengthTooLongStart+j[1]+e.lengthBadEnd,h=!1;break;default:h=!0}return h},errorMessage:"",errorMessageKey:""}),a.formUtils.addValidator({name:"url",validatorFunction:function(b){var c=/^(https?|ftp):\/\/((((\w|-|\.|~|[\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])(\w|-|\.|~|[\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])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;if(c.test(b)){var d=b.split("://")[1],e=d.indexOf("/");return e>-1&&(d=d.substr(0,e)),a.formUtils.validators.validate_domain.validatorFunction(d)}return!1},errorMessage:"",errorMessageKey:"badUrl"}),a.formUtils.addValidator({name:"number",validatorFunction:function(a,b,c){if(""!==a){var d,e,f=b.valAttr("allowing")||"",g=b.valAttr("decimal-separator")||c.decimalSeparator,h=!1,i=b.valAttr("step")||"",j=!1,k=b.attr("data-sanitize")||"",l=k.split(/\s/).find(function(a){return"numberFormat"===a});if(l){if(!window.numeral)throw new ReferenceError("The data-sanitize value numberFormat cannot be used without the numeral library. Please see Data Validation in http://www.formvalidator.net for more information.");a=String(numeral().unformat(a))}if(-1===f.indexOf("number")&&(f+=",number"),-1===f.indexOf("negative")&&0===a.indexOf("-"))return!1;if(f.indexOf("range")>-1&&(d=parseFloat(f.substring(f.indexOf("[")+1,f.indexOf(";"))),e=parseFloat(f.substring(f.indexOf(";")+1,f.indexOf("]"))),h=!0),""!==i&&(j=!0),","===g){if(a.indexOf(".")>-1)return!1;a=a.replace(",",".")}if(""===a.replace(/[0-9-]/g,"")&&(!h||a>=d&&e>=a)&&(!j||a%i===0))return!0;if(f.indexOf("float")>-1&&null!==a.match(new RegExp("^([0-9-]+)\\.([0-9]+)$"))&&(!h||a>=d&&e>=a)&&(!j||a%i===0))return!0}return!1},errorMessage:"",errorMessageKey:"badInt"}),a.formUtils.addValidator({name:"alphanumeric",validatorFunction:function(b,c,d,e){var f="^([a-zA-Z0-9",g="]+)$",h=c.valAttr("allowing"),i="";if(h){i=f+h+g;var j=h.replace(/\\/g,"");j.indexOf(" ")>-1&&(j=j.replace(" ",""),j+=e.andSpaces||a.formUtils.LANG.andSpaces),this.errorMessage=e.badAlphaNumeric+e.badAlphaNumericExtra+j}else i=f+g,this.errorMessage=e.badAlphaNumeric;return new RegExp(i).test(b)},errorMessage:"",errorMessageKey:""}),a.formUtils.addValidator({name:"custom",validatorFunction:function(a,b){var c=new RegExp(b.valAttr("regexp"));return c.test(a)},errorMessage:"",errorMessageKey:"badCustomVal"}),a.formUtils.addValidator({name:"date",validatorFunction:function(b,c,d){var e=c.valAttr("format")||d.dateFormat||"yyyy-mm-dd",f="false"===c.valAttr("require-leading-zero");return a.formUtils.parseDate(b,e,f)!==!1},errorMessage:"",errorMessageKey:"badDate"}),a.formUtils.addValidator({name:"checkbox_group",validatorFunction:function(b,c,d,e,f){var g=!0,h=c.attr("name"),i=a('input[type=checkbox][name^="'+h+'"]',f),j=i.filter(":checked").length,k=c.valAttr("qty");if(void 0===k){var l=c.get(0).nodeName;alert('Attribute "data-validation-qty" is missing from '+l+" named "+c.attr("name"))}var m=a.formUtils.numericRangeCheck(j,k);switch(m[0]){case"out":this.errorMessage=e.groupCheckedRangeStart+k+e.groupCheckedEnd,g=!1;break;case"min":this.errorMessage=e.groupCheckedTooFewStart+m[1]+e.groupCheckedEnd,g=!1;break;case"max":this.errorMessage=e.groupCheckedTooManyStart+m[1]+e.groupCheckedEnd,g=!1;break;default:g=!0}if(!g){var n=function(){i.unbind("click",n),i.filter("*[data-validation]").validateInputOnBlur(e,d,!1,"blur")};i.bind("click",n)}return g}})}(jQuery);
\ No newline at end of file
+!function(a,b){"use strict";var c=a(b);a.formUtils=a.extend(a.formUtils||{},{$win:c,defaultConfig:function(){return{ignore:[],errorElementClass:"error",borderColorOnError:"#b94a48",errorMessageClass:"form-error",validationRuleAttribute:"data-validation",validationErrorMsgAttribute:"data-validation-error-msg",errorMessagePosition:"element",errorMessageTemplate:{container:'
{messages}
',messages:"{errorTitle}
{fields}
",field:"
{msg}
"},errorMessageCustom:this.errorDialogs.setTemplateMessage,scrollToTopOnError:!0,dateFormat:"yyyy-mm-dd",addValidClassOnAll:!1,decimalSeparator:".",inputParentClassOnError:"has-error",inputParentClassOnSuccess:"has-success",validateHiddenInputs:!1}},validators:{},_events:{load:[],valid:[],invalid:[]},haltValidation:!1,isValidatingEntireForm:!1,addValidator:function(a){var b=0===a.name.indexOf("validate_")?a.name:"validate_"+a.name;void 0===a.validateOnKeyUp&&(a.validateOnKeyUp=!0),this.validators[b]=a},isLoadingModules:!1,loadedModules:{},loadModules:function(b,d,e){if(void 0===e&&(e=!0),a.formUtils.isLoadingModules)return void setTimeout(function(){a.formUtils.loadModules(b,d,e)});var f=!1,g=function(b,d){var g=a.split(b),h=g.length,i=function(){h--,0===h&&(a.formUtils.isLoadingModules=!1,e&&f&&("function"==typeof e?e():c.trigger("validatorsLoaded")))};h>0&&(a.formUtils.isLoadingModules=!0);var j="?_="+(new Date).getTime(),k=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];a.each(g,function(b,c){if(c=a.trim(c),0===c.length)i();else{var e=d+c+(".js"===c.slice(-3)?"":".js"),g=document.createElement("SCRIPT");e in a.formUtils.loadedModules?i():(a.formUtils.loadedModules[e]=1,f=!0,g.type="text/javascript",g.onload=i,g.src=e+(".dev.js"===e.slice(-7)?j:""),g.onerror=function(){a.formUtils.warn("Unable to load form validation module "+e)},g.onreadystatechange=function(){("complete"===this.readyState||"loaded"===this.readyState)&&(i(),this.onload=null,this.onreadystatechange=null)},k.appendChild(g))}})};if(d)g(b,d);else{var h=function(){var c=!1;return a('script[src*="form-validator"]').each(function(){return c=this.src.substr(0,this.src.lastIndexOf("/"))+"/","/"===c&&(c=""),!1}),c!==!1?(g(b,c),!0):!1};h()||a(h)}},warn:function(a){"console"in b?"function"==typeof b.console.warn?b.console.warn(a):"function"==typeof b.console.log&&b.console.log(a):alert(a)},validateInput:function(b,c,d,e,f){b.trigger("beforeValidation"),d=d||a.formUtils.defaultConfig(),c=c||a.formUtils.LANG;var g=b.val()||"",h={isValid:!0,shouldChangeDisplay:!0,errorMsg:""},i=b.valAttr("optional"),j=!1,k=!1,l=!1,m=b.valAttr("if-checked"),n=b.valAttr("if-checked-value");if(b.attr("disabled")||!b.is(":visible")&&!d.validateHiddenInputs)return h.shouldChangeDisplay=!1,h;if(null!=m&&(j=!0,l=e.find('input[name="'+m+'"]'),null!=n?l.each(function(b,c){a(c).prop("checked")&&a(c).val()===n&&(k=!0)}):l.prop("checked")&&(k=!0)),!g&&"true"===i||j&&!k)return h.shouldChangeDisplay=d.addValidClassOnAll,h;var o=b.attr(d.validationRuleAttribute),p=!0;if(!o)return h.shouldChangeDisplay=d.addValidClassOnAll,h;var q=b.valAttr("ignore");return q&&a.each(q.split(""),function(a,b){g=g.replace(new RegExp("\\"+b),"")}),a.split(o,function(h){0!==h.indexOf("validate_")&&(h="validate_"+h);var i=a.formUtils.validators[h];if(!i||"function"!=typeof i.validatorFunction)throw new Error('Using undefined validator "'+h+'". Maybe you have forgotten to load the module that "'+h+'" belongs to?');"validate_checkbox_group"===h&&(b=e.find('[name="'+b.attr("name")+'"]:eq(0)'));var j=null;return("keyup"!==f||i.validateOnKeyUp)&&(j=i.validatorFunction(g,b,d,c,e)),j?void 0:(p=null,null!==j&&(p=b.attr(d.validationErrorMsgAttribute+"-"+h.replace("validate_","")),p||(p=b.attr(d.validationErrorMsgAttribute),p||(p="function"!=typeof i.errorMessageKey?c[i.errorMessageKey]:c[i.errorMessageKey(d)],p||(p=i.errorMessage)))),!1)}," "),"string"==typeof p?(b.trigger("validation",!1),h.errorMsg=p,h.isValid=!1,h.shouldChangeDisplay=!0):null===p?h.shouldChangeDisplay=d.addValidClassOnAll:(b.trigger("validation",!0),h.shouldChangeDisplay=!0),"function"==typeof d.onElementValidate&&null!==p&&d.onElementValidate(h.isValid,b,e,p),h},parseDate:function(b,c,d){var e,f,g,h,i=c.replace(/[a-zA-Z]/gi,"").substring(0,1),j="^",k=c.split(i||null);if(a.each(k,function(a,b){j+=(a>0?"\\"+i:"")+"(\\d{"+b.length+"})"}),j+="$",d){var l=[];a.each(b.split(i),function(a,b){1===b.length&&(b="0"+b),l.push(b)}),b=l.join(i)}if(e=b.match(new RegExp(j)),null===e)return!1;var m=function(b,c,d){for(var e=0;e28&&(h%4!==0||h%100===0&&h%400!==0)||2===g&&f>29&&(h%4===0||h%100!==0&&h%400===0)||g>12||0===g?!1:this.isShortMonth(g)&&f>30||!this.isShortMonth(g)&&f>31||0===f?!1:[h,g,f]},parseDateInt:function(a){return 0===a.indexOf("0")&&(a=a.replace("0","")),parseInt(a,10)},isShortMonth:function(a){return a%2===0&&7>a||a%2!==0&&a>7},lengthRestriction:function(b,c){var d=parseInt(c.text(),10),e=0,f=function(){var a=b.val().length;if(a>d){var f=b.scrollTop();b.val(b.val().substring(0,d)),b.scrollTop(f)}e=d-a,0>e&&(e=0),c.text(e)};a(b).bind("keydown keyup keypress focus blur",f).bind("cut paste",function(){setTimeout(f,100)}),a(document).bind("ready",f)},numericRangeCheck:function(b,c){var d=a.split(c),e=parseInt(c.substr(3),10);return 1===d.length&&-1===c.indexOf("min")&&-1===c.indexOf("max")&&(d=[c,c]),2===d.length&&(bparseInt(d[1],10))?["out",d[0],d[1]]:0===c.indexOf("min")&&e>b?["min",e]:0===c.indexOf("max")&&b>e?["max",e]:["ok"]},_numSuggestionElements:0,_selectedSuggestion:null,_previousTypedVal:null,suggest:function(b,d,e){var f={css:{maxHeight:"150px",background:"#FFF",lineHeight:"150%",textDecoration:"underline",overflowX:"hidden",overflowY:"auto",border:"#CCC solid 1px",borderTop:"none",cursor:"pointer"},activeSuggestionCSS:{background:"#E9E9E9"}},g=function(a,b){var c=b.offset();a.css({width:b.outerWidth(),left:c.left+"px",top:c.top+b.outerHeight()+"px"})};e&&a.extend(f,e),f.css.position="absolute",f.css["z-index"]=9999,b.attr("autocomplete","off"),0===this._numSuggestionElements&&c.bind("resize",function(){a(".jquery-form-suggestions").each(function(){var b=a(this),c=b.attr("data-suggest-container");g(b,a(".suggestions-"+c).eq(0))})}),this._numSuggestionElements++;var h=function(b){var c=b.valAttr("suggestion-nr");a.formUtils._selectedSuggestion=null,a.formUtils._previousTypedVal=null,a(".jquery-form-suggestion-"+c).fadeOut("fast")};return b.data("suggestions",d).valAttr("suggestion-nr",this._numSuggestionElements).unbind("focus.suggest").bind("focus.suggest",function(){a(this).trigger("keyup"),a.formUtils._selectedSuggestion=null}).unbind("keyup.suggest").bind("keyup.suggest",function(){var c=a(this),d=[],e=a.trim(c.val()).toLocaleLowerCase();if(e!==a.formUtils._previousTypedVal){a.formUtils._previousTypedVal=e;var i=!1,j=c.valAttr("suggestion-nr"),k=a(".jquery-form-suggestion-"+j);if(k.scrollTop(0),""!==e){var l=e.length>2;a.each(c.data("suggestions"),function(a,b){var c=b.toLocaleLowerCase();return c===e?(d.push(""+b+""),i=!0,!1):void((0===c.indexOf(e)||l&&c.indexOf(e)>-1)&&d.push(b.replace(new RegExp(e,"gi"),"$&")))})}i||0===d.length&&k.length>0?k.hide():d.length>0&&0===k.length?(k=a("").css(f.css).appendTo("body"),b.addClass("suggestions-"+j),k.attr("data-suggest-container",j).addClass("jquery-form-suggestions").addClass("jquery-form-suggestion-"+j)):d.length>0&&!k.is(":visible")&&k.show(),d.length>0&&e.length!==d[0].length&&(g(k,c),k.html(""),a.each(d,function(b,d){a("").append(d).css({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"5px"}).addClass("form-suggest-element").appendTo(k).click(function(){c.focus(),c.val(a(this).text()),h(c)})}))}}).unbind("keydown.validation").bind("keydown.validation",function(b){var c,d,e=b.keyCode?b.keyCode:b.which,g=a(this);if(13===e&&null!==a.formUtils._selectedSuggestion){if(c=g.valAttr("suggestion-nr"),d=a(".jquery-form-suggestion-"+c),d.length>0){var i=d.find("div").eq(a.formUtils._selectedSuggestion).text();g.val(i),h(g),b.preventDefault()}}else{c=g.valAttr("suggestion-nr"),d=a(".jquery-form-suggestion-"+c);var j=d.children();if(j.length>0&&a.inArray(e,[38,40])>-1){38===e?(null===a.formUtils._selectedSuggestion?a.formUtils._selectedSuggestion=j.length-1:a.formUtils._selectedSuggestion--,a.formUtils._selectedSuggestion<0&&(a.formUtils._selectedSuggestion=j.length-1)):40===e&&(null===a.formUtils._selectedSuggestion?a.formUtils._selectedSuggestion=0:a.formUtils._selectedSuggestion++,a.formUtils._selectedSuggestion>j.length-1&&(a.formUtils._selectedSuggestion=0));var k=d.innerHeight(),l=d.scrollTop(),m=d.children().eq(0).outerHeight(),n=m*a.formUtils._selectedSuggestion;return(l>n||n>l+k)&&d.scrollTop(n),j.removeClass("active-suggestion").css("background","none").eq(a.formUtils._selectedSuggestion).addClass("active-suggestion").css(f.activeSuggestionCSS),b.preventDefault(),!1}}}).unbind("blur.suggest").bind("blur.suggest",function(){h(a(this))}),b},LANG:{errorTitle:"Form submission failed!",requiredField:"This is a required field",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",lengthBadStart:"The input value must be between ",lengthBadEnd:" characters",lengthTooLongStart:"The input value is longer than ",lengthTooShortStart:"The input value is shorter than ",notConfirmed:"Input values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"The input value is not a correct URL",badCustomVal:"The input value is incorrect",andSpaces:" and spaces ",badInt:"The input value was not a correct number",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number",badStrength:"The password isn't strong enough",badNumberOfSelectedOptionsStart:"You have to choose at least ",badNumberOfSelectedOptionsEnd:" answers",badAlphaNumeric:"The input value can only contain alphanumeric characters ",badAlphaNumericExtra:" and ",wrongFileSize:"The file you are trying to upload is too large (max %s)",wrongFileType:"Only files of type %s is allowed",groupCheckedRangeStart:"Please choose between ",groupCheckedTooFewStart:"Please choose at least ",groupCheckedTooManyStart:"Please choose a maximum of ",groupCheckedEnd:" item(s)",badCreditCard:"The credit card number is not correct",badCVV:"The CVV number was not correct",wrongFileDim:"Incorrect image dimensions,",imageTooTall:"the image can not be taller than",imageTooWide:"the image can not be wider than",imageTooSmall:"the image was too small",min:"min",max:"max",imageRatioNotAccepted:"Image ratio is not be accepted",badBrazilTelephoneAnswer:"The phone number entered is invalid",badBrazilCEPAnswer:"The CEP entered is invalid",badBrazilCPFAnswer:"The CPF entered is invalid"}})}(jQuery,window),function(a){"use strict";a.split=function(b,c){if("function"!=typeof c){if(!b)return[];var d=[];return a.each(b.split(c?c:/[,|\-\s]\s*/g),function(b,c){c=a.trim(c),c.length&&d.push(c)}),d}b&&a.each(b.split(/[,|\-\s]\s*/g),function(b,d){return d=a.trim(d),d.length?c(d,b):void 0})},a.validate=function(b){var c=a.extend(a.formUtils.defaultConfig(),{form:"form",validateOnEvent:!1,validateOnBlur:!0,validateCheckboxRadioOnClick:!0,showHelpOnFocus:!0,addSuggestions:!0,modules:"",onModulesLoaded:null,language:!1,onSuccess:!1,onError:!1,onElementValidate:!1});if(b=a.extend(c,b||{}),b.lang&&"en"!==b.lang){var d="lang/"+b.lang+".js";b.modules+=b.modules.length?","+d:d}a(b.form).each(function(c,d){d.validationConfig=b;var e=a(d);a.formUtils.$win.trigger("formValidationSetup",[e,b]),e.trigger("formValidationSetup",[b]),e.find(".has-help-txt").unbind("focus.validation").unbind("blur.validation"),e.removeClass("has-validation-callback").unbind("submit.validation").unbind("reset.validation").find("input[data-validation],textarea[data-validation]").unbind("blur.validation"),e.bind("submit.validation",function(){var c=a(this);if(a.formUtils.haltValidation)return!1;if(a.formUtils.isLoadingModules)return setTimeout(function(){c.trigger("submit.validation")},200),!1;var d=c.isValid(b.language,b);if(a.formUtils.haltValidation)return!1;if(!d||"function"!=typeof b.onSuccess)return d||"function"!=typeof b.onError?d:(b.onError(c),!1);var e=b.onSuccess(c);return e===!1?!1:void 0}).bind("reset.validation",function(){var c=a(this),d=c.find("."+b.errorElementClass+",.valid");c.find("."+b.errorMessageClass+".alert").remove(),a.formUtils.errorDialogs.removeErrorStyling(d,b)}).addClass("has-validation-callback"),b.showHelpOnFocus&&e.showHelpOnFocus(),b.addSuggestions&&e.addSuggestions(),b.validateOnBlur&&(e.validateOnBlur(b.language,b),e.bind("html5ValidationAttrsFound",function(){e.validateOnBlur(b.language,b)})),b.validateOnEvent&&e.validateOnEvent(b.language,b)}),""!==b.modules&&a.formUtils.loadModules(b.modules,!1,function(){"function"==typeof b.onModulesLoaded&&b.onModulesLoaded(),a.formUtils.$win.trigger("validatorsLoaded",["string"==typeof b.form?a(b.form):b.form,b])})}}(jQuery),function(a){"use strict";a.formUtils=a.extend(a.formUtils||{},{validators:{},isLoadingModules:!1,loadedModules:{},loadModules:function(b,c,d){if(void 0===d&&(d=!0),a.formUtils.isLoadingModules)return void setTimeout(function(){a.formUtils.loadModules(b,c,d)},10);var e=!1,f=function(b,c){var f=a.split(b),g=f.length,h=function(){g--,0===g&&(a.formUtils.isLoadingModules=!1,d&&e&&("function"==typeof d?d():a.formUtils.$win.trigger("validatorsLoaded")))};g>0&&(a.formUtils.isLoadingModules=!0);var i="?_="+(new Date).getTime(),j=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];a.each(f,function(b,d){if(d=a.trim(d),0===d.length)h();else{var f=c+d+(".js"===d.slice(-3)?"":".js"),g=document.createElement("SCRIPT");f in a.formUtils.loadedModules?h():(a.formUtils.loadedModules[f]=1,e=!0,g.type="text/javascript",g.onload=h,g.src=f+(".dev.js"===f.slice(-7)?i:""),g.onerror=function(){a.formUtils.warn("Unable to load form validation module "+f)},g.onreadystatechange=function(){("complete"===this.readyState||"loaded"===this.readyState)&&(h(),this.onload=null,this.onreadystatechange=null)},j.appendChild(g))}})};if(c)f(b,c);else{var g=function(){var c=!1;return a('script[src*="form-validator"]').each(function(){return c=this.src.substr(0,this.src.lastIndexOf("/"))+"/","/"===c&&(c=""),!1}),c!==!1?(f(b,c),!0):!1};g()||a(g)}}})}(jQuery),function(a){var b=0;a.fn.validateOnBlur=function(b,c){return this.find("*[data-validation]").bind("blur.validation",function(){a(this).validateInputOnBlur(b,c,!0,"blur")}),c.validateCheckboxRadioOnClick&&this.find("input[type=checkbox][data-validation],input[type=radio][data-validation]").bind("click.validation",function(){a(this).validateInputOnBlur(b,c,!0,"click")}),this},a.fn.validateOnEvent=function(b,c){return this.find("*[data-validation-event]").each(function(){var d=a(this),e=d.valAttr("event");e&&d.unbind(e+".validation").bind(e+".validation",function(d){9!==(d||{}).keyCode&&a(this).validateInputOnBlur(b,c,!0,e)})}),this},a.fn.showHelpOnFocus=function(c){return c||(c="data-validation-help"),this.find(".has-help-txt").valAttr("has-keyup-event",!1).removeClass("has-help-txt"),this.find("textarea,input").each(function(){var d=a(this),e="jquery_form_help_"+ ++b,f=d.attr(c);f&&d.addClass("has-help-txt").unbind("focus.help").bind("focus.help",function(){var b=d.parent().find("."+e);0===b.length&&(b=a("").addClass(e).addClass("help").addClass("help-block").text(f).hide(),d.after(b)),b.fadeIn()}).unbind("blur.help").bind("blur.help",function(){a(this).parent().find("."+e).fadeOut("slow")})}),this},a.fn.validate=function(b,c,d){var e=a.extend({},a.formUtils.LANG,d||{});this.each(function(){var d=a(this),f=d.closest("form").get(0).validationConfig||{};d.one("validation",function(a,c){"function"==typeof b&&b(c,this,a)}),d.validateInputOnBlur(e,a.extend({},f,c||{}),!0)})},a.fn.willPostponeValidation=function(){return(this.valAttr("suggestion-nr")||this.valAttr("postpone")||this.hasClass("hasDatepicker"))&&!window.postponedValidation},a.fn.validateInputOnBlur=function(b,c,d,e){if(a.formUtils.eventType=e,this.willPostponeValidation()){var f=this,g=this.valAttr("postpone")||200;return window.postponedValidation=function(){f.validateInputOnBlur(b,c,d,e),window.postponedValidation=!1},setTimeout(function(){window.postponedValidation&&window.postponedValidation()},g),this}b=a.extend({},a.formUtils.LANG,b||{}),a.formUtils.errorDialogs.removeErrorStyling(this,c);var h=this,i=h.closest("form"),j=a.formUtils.validateInput(h,b,c,i,e);return d&&h.unbind("keyup.validation"),j.isValid?j.shouldChangeDisplay&&(h.addClass("valid"),a.formUtils.errorDialogs.getParentContainer(h).addClass(c.inputParentClassOnSuccess)):j.isValid||(a.formUtils.errorDialogs.applyErrorStyling(h,c),a.formUtils.errorDialogs.setInlineErrorMessage(h,j.errorMsg,c,c.errorMessagePosition),d&&h.bind("keyup.validation",function(d){9!==d.keyCode&&a(this).validateInputOnBlur(b,c,!1,"keyup")})),this},a.fn.valAttr=function(a,b){return void 0===b?this.attr("data-validation-"+a):b===!1||null===b?this.removeAttr("data-validation-"+a):(a=a.length>0?"-"+a:"",this.attr("data-validation"+a,b))},a.fn.isValid=function(b,c,d){if(a.formUtils.isLoadingModules){var e=this;return setTimeout(function(){e.isValid(b,c,d)},200),null}c=a.extend({},a.formUtils.defaultConfig(),c||{}),b=a.extend({},a.formUtils.LANG,b||{}),d=d!==!1,a.formUtils.errorDisplayPreventedWhenHalted&&(delete a.formUtils.errorDisplayPreventedWhenHalted,d=!1),a.formUtils.isValidatingEntireForm=!0,a.formUtils.haltValidation=!1;var f=function(b,e){a.inArray(b,h)<0&&h.push(b),i.push(e),e.attr("current-error",b),d&&a.formUtils.errorDialogs.applyErrorStyling(e,c)},g=[],h=[],i=[],j=this,k=function(b,d){return"submit"===d||"button"===d||"reset"===d?!0:a.inArray(b,c.ignore||[])>-1};if(d&&(j.find("."+c.errorMessageClass+".alert").remove(),a.formUtils.errorDialogs.removeErrorStyling(j.find("."+c.errorElementClass+",.valid"),c)),j.find("input,textarea,select").filter(':not([type="submit"],[type="button"])').each(function(){var d=a(this),e=d.attr("type"),h="radio"===e||"checkbox"===e,i=d.attr("name");if(!k(i,e)&&(!h||a.inArray(i,g)<0)){h&&g.push(i);var l=a.formUtils.validateInput(d,b,c,j,"submit");l.shouldChangeDisplay&&(l.isValid?l.isValid&&(d.valAttr("current-error",!1).addClass("valid"),a.formUtils.errorDialogs.getParentContainer(d).addClass(c.inputParentClassOnSuccess)):f(l.errorMsg,d))}}),"function"==typeof c.onValidate){var l=c.onValidate(j);a.isArray(l)?a.each(l,function(a,b){f(b.message,b.element)}):l&&l.element&&l.message&&f(l.message,l.element)}return a.formUtils.isValidatingEntireForm=!1,!a.formUtils.haltValidation&&i.length>0?(d&&("top"===c.errorMessagePosition?a.formUtils.errorDialogs.setTemplateMessage(j,b.errorTitle,h,c):"custom"===c.errorMessagePosition?(a.formUtils.warn("Use deprecated function errorMessageCustom"),"function"==typeof c.errorMessageCustom&&c.errorMessageCustom(j,b.errorTitle,h,c)):a.each(i,function(b,d){a.formUtils.errorDialogs.setInlineErrorMessage(d,d.attr("current-error"),c,c.errorMessagePosition)}),c.scrollToTopOnError&&a.formUtils.$win.scrollTop(j.offset().top-20)),!1):(!d&&a.formUtils.haltValidation&&(a.formUtils.errorDisplayPreventedWhenHalted=!0),!a.formUtils.haltValidation)},a.fn.validateForm=function(b,c){return a.formUtils.warn("Use of deprecated function $.validateForm, use $.isValid instead"),this.isValid(b,c,!0)},a.fn.restrictLength=function(b){return new a.formUtils.lengthRestriction(this,b),this},a.fn.addSuggestions=function(b){var c=!1;return this.find("input").each(function(){var d=a(this);c=a.split(d.attr("data-suggestions")),c.length>0&&!d.hasClass("has-suggestions")&&(a.formUtils.suggest(d,c,b),d.addClass("has-suggestions"))}),this}}(jQuery),function(a){"use strict";var b={getParentContainer:function(b){if(b.valAttr("error-msg-container"))return a(b.valAttr("error-msg-container"));var c=b.parent();if(!c.hasClass("form-group")&&!c.closest("form").hasClass("form-horizontal")){var d=c.closest(".form-group");if(d.length)return d.eq(0)}return c},applyErrorStyling:function(a,b){a.addClass(b.errorElementClass).removeClass("valid"),this.getParentContainer(a).addClass(b.inputParentClassOnError).removeClass(b.inputParentClassOnSuccess),""!==b.borderColorOnError&&a.css("border-color",b.borderColorOnError)},removeErrorStyling:function(c,d){c.each(function(){var c=a(this);b.setInlineErrorMessage(c,"",d,d.errorMessagePosition),c.removeClass("valid").removeClass(d.errorElementClass).css("border-color",""),b.getParentContainer(c).removeClass(d.inputParentClassOnError).removeClass(d.inputParentClassOnSuccess).find("."+d.errorMessageClass).remove()})},setInlineErrorMessage:function(b,c,d,e){var f,g=document.getElementById(b.attr("name")+"_err_msg"),h=function(d){a.formUtils.$win.trigger("validationErrorDisplay",[b,d]),d.html(c)};if(g?(a.formUtils.warn("Using deprecated element reference "+g.id),e=a(g)):"function"==typeof e&&(e=e(b,c,d)),"object"==typeof e){var i=!1;e.find("."+d.errorMessageClass).each(function(){return this.inputReferer===b[0]?(i=a(this),!1):void 0}),i?c?h(i):i.remove():""!==c&&(f=a(''),h(f),f[0].inputReferer=b[0],e.prepend(f))}else{var j=this.getParentContainer(b);f=j.find("."+d.errorMessageClass+".help-block"),0===f.length&&(f=a("").addClass("help-block").addClass(d.errorMessageClass),f.appendTo(j)),h(f)}},setTemplateMessage:function(b,c,d,e){var f,g=e.errorMessageTemplate.messages.replace(/\{errorTitle\}/g,c),h=[];a.each(d,function(a,b){h.push(e.errorMessageTemplate.field.replace(/\{msg\}/g,b))}),g=g.replace(/\{fields\}/g,h.join("")),f=e.errorMessageTemplate.container.replace(/\{errorMessageClass\}/g,e.errorMessageClass),f=f.replace(/\{messages\}/g,g),b.children().eq(0).before(f)}};a.formUtils=a.extend(a.formUtils||{},{errorDialogs:b})}(jQuery),function(a){a.formUtils.addValidator({name:"email",validatorFunction:function(b){var c=b.toLowerCase().split("@"),d=c[0],e=c[1];if(d&&e){if(0===d.indexOf('"')){var f=d.length;if(d=d.replace(/\"/g,""),d.length!==f-2)return!1}return a.formUtils.validators.validate_domain.validatorFunction(c[1])&&0!==d.indexOf(".")&&"."!==d.substring(d.length-1,d.length)&&-1===d.indexOf("..")&&!/[^\w\+\.\-\#\-\_\~\!\$\&\'\(\)\*\+\,\;\=\:]/.test(d)}return!1},errorMessage:"",errorMessageKey:"badEmail"}),a.formUtils.addValidator({name:"domain",validatorFunction:function(a){return a.length>0&&a.length<=253&&!/[^a-zA-Z0-9]/.test(a.slice(-2))&&!/[^a-zA-Z0-9]/.test(a.substr(0,1))&&!/[^a-zA-Z0-9\.\-]/.test(a)&&1===a.split("..").length&&a.split(".").length>1},errorMessage:"",errorMessageKey:"badDomain"}),a.formUtils.addValidator({name:"required",validatorFunction:function(b,c,d,e,f){switch(c.attr("type")){case"checkbox":return c.is(":checked");case"radio":return f.find('input[name="'+c.attr("name")+'"]').filter(":checked").length>0;default:return""!==a.trim(b)}},errorMessage:"",errorMessageKey:function(a){return"top"===a.errorMessagePosition||"custom"===a.errorMessagePosition?"requiredFields":"requiredField"}}),a.formUtils.addValidator({name:"length",validatorFunction:function(b,c,d,e){var f=c.valAttr("length"),g=c.attr("type");if(void 0===f)return alert('Please add attribute "data-validation-length" to '+c[0].nodeName+" named "+c.attr("name")),!0;var h,i="file"===g&&void 0!==c.get(0).files?c.get(0).files.length:b.length,j=a.formUtils.numericRangeCheck(i,f);switch(j[0]){case"out":this.errorMessage=e.lengthBadStart+f+e.lengthBadEnd,h=!1;break;case"min":this.errorMessage=e.lengthTooShortStart+j[1]+e.lengthBadEnd,h=!1;break;case"max":this.errorMessage=e.lengthTooLongStart+j[1]+e.lengthBadEnd,h=!1;break;default:h=!0}return h},errorMessage:"",errorMessageKey:""}),a.formUtils.addValidator({name:"url",validatorFunction:function(b){var c=/^(https?|ftp):\/\/((((\w|-|\.|~|[\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])(\w|-|\.|~|[\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])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;if(c.test(b)){var d=b.split("://")[1],e=d.indexOf("/");return e>-1&&(d=d.substr(0,e)),a.formUtils.validators.validate_domain.validatorFunction(d)}return!1},errorMessage:"",errorMessageKey:"badUrl"}),a.formUtils.addValidator({name:"number",validatorFunction:function(a,b,c){if(""!==a){var d,e,f=b.valAttr("allowing")||"",g=b.valAttr("decimal-separator")||c.decimalSeparator,h=!1,i=b.valAttr("step")||"",j=!1,k=b.attr("data-sanitize")||"",l=k.match(/(^|[\s])numberFormat([\s]|$)/i);if(l){if(!window.numeral)throw new ReferenceError("The data-sanitize value numberFormat cannot be used without the numeral library. Please see Data Validation in http://www.formvalidator.net for more information.");a.length&&(a=String(numeral().unformat(a)))}if(-1===f.indexOf("number")&&(f+=",number"),-1===f.indexOf("negative")&&0===a.indexOf("-"))return!1;if(f.indexOf("range")>-1&&(d=parseFloat(f.substring(f.indexOf("[")+1,f.indexOf(";"))),e=parseFloat(f.substring(f.indexOf(";")+1,f.indexOf("]"))),h=!0),""!==i&&(j=!0),","===g){if(a.indexOf(".")>-1)return!1;a=a.replace(",",".")}if(""===a.replace(/[0-9-]/g,"")&&(!h||a>=d&&e>=a)&&(!j||a%i===0))return!0;if(f.indexOf("float")>-1&&null!==a.match(new RegExp("^([0-9-]+)\\.([0-9]+)$"))&&(!h||a>=d&&e>=a)&&(!j||a%i===0))return!0}return!1},errorMessage:"",errorMessageKey:"badInt"}),a.formUtils.addValidator({name:"alphanumeric",validatorFunction:function(b,c,d,e){var f="^([a-zA-Z0-9",g="]+)$",h=c.valAttr("allowing"),i="";if(h){i=f+h+g;var j=h.replace(/\\/g,"");j.indexOf(" ")>-1&&(j=j.replace(" ",""),j+=e.andSpaces||a.formUtils.LANG.andSpaces),this.errorMessage=e.badAlphaNumeric+e.badAlphaNumericExtra+j}else i=f+g,this.errorMessage=e.badAlphaNumeric;return new RegExp(i).test(b)},errorMessage:"",errorMessageKey:""}),a.formUtils.addValidator({name:"custom",validatorFunction:function(a,b){var c=new RegExp(b.valAttr("regexp"));return c.test(a)},errorMessage:"",errorMessageKey:"badCustomVal"}),a.formUtils.addValidator({name:"date",validatorFunction:function(b,c,d){var e=c.valAttr("format")||d.dateFormat||"yyyy-mm-dd",f="false"===c.valAttr("require-leading-zero");return a.formUtils.parseDate(b,e,f)!==!1},errorMessage:"",errorMessageKey:"badDate"}),a.formUtils.addValidator({name:"checkbox_group",validatorFunction:function(b,c,d,e,f){var g=!0,h=c.attr("name"),i=a('input[type=checkbox][name^="'+h+'"]',f),j=i.filter(":checked").length,k=c.valAttr("qty");if(void 0===k){var l=c.get(0).nodeName;alert('Attribute "data-validation-qty" is missing from '+l+" named "+c.attr("name"))}var m=a.formUtils.numericRangeCheck(j,k);switch(m[0]){case"out":this.errorMessage=e.groupCheckedRangeStart+k+e.groupCheckedEnd,g=!1;break;case"min":this.errorMessage=e.groupCheckedTooFewStart+m[1]+e.groupCheckedEnd,g=!1;break;case"max":this.errorMessage=e.groupCheckedTooManyStart+m[1]+e.groupCheckedEnd,g=!1;break;default:g=!0}if(!g){var n=function(){i.unbind("click",n),i.filter("*[data-validation]").validateInputOnBlur(e,d,!1,"blur")};i.bind("click",n)}return g}})}(jQuery);
\ No newline at end of file
diff --git a/form-validator/jsconf.js b/form-validator/jsconf.js
index eb7b8c7..f09f57d 100644
--- a/form-validator/jsconf.js
+++ b/form-validator/jsconf.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/cz.js b/form-validator/lang/cz.js
index 835e9f2..4b357ad 100644
--- a/form-validator/lang/cz.js
+++ b/form-validator/lang/cz.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/de.js b/form-validator/lang/de.js
index 70551b8..d8f4cd0 100644
--- a/form-validator/lang/de.js
+++ b/form-validator/lang/de.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/es.js b/form-validator/lang/es.js
index 93480e4..c29b510 100644
--- a/form-validator/lang/es.js
+++ b/form-validator/lang/es.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/fr.js b/form-validator/lang/fr.js
index 3c1c22d..c29198f 100644
--- a/form-validator/lang/fr.js
+++ b/form-validator/lang/fr.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/it.js b/form-validator/lang/it.js
index 81b4a2e..32fefbe 100644
--- a/form-validator/lang/it.js
+++ b/form-validator/lang/it.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/pl.js b/form-validator/lang/pl.js
index 1605fc4..9dbc9c4 100644
--- a/form-validator/lang/pl.js
+++ b/form-validator/lang/pl.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/pt.js b/form-validator/lang/pt.js
index 694336c..d2f8f64 100644
--- a/form-validator/lang/pt.js
+++ b/form-validator/lang/pt.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/ro.js b/form-validator/lang/ro.js
index 7b3066d..5ab9bbf 100644
--- a/form-validator/lang/ro.js
+++ b/form-validator/lang/ro.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/ru.js b/form-validator/lang/ru.js
index d3ee4b2..a33be8c 100644
--- a/form-validator/lang/ru.js
+++ b/form-validator/lang/ru.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/lang/sv.js b/form-validator/lang/sv.js
index 85d948c..7bd9979 100644
--- a/form-validator/lang/sv.js
+++ b/form-validator/lang/sv.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/location.js b/form-validator/location.js
index 46842bb..4f7f2c6 100644
--- a/form-validator/location.js
+++ b/form-validator/location.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/sanitize.js b/form-validator/sanitize.js
index 1ccbea6..44a2e1d 100644
--- a/form-validator/sanitize.js
+++ b/form-validator/sanitize.js
@@ -1,9 +1,9 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
*/
-!function(a,b){"use strict";var c='[type="button"], [type="submit"], [type="radio"], [type="checkbox"], [type="reset"], [type="search"]',d={upper:function(a){return a.toLocaleUpperCase()},lower:function(a){return a.toLocaleLowerCase()},trim:function(b){return a.trim(b)},trimLeft:function(a){return a.replace(/^\s+/,"")},trimRight:function(a){return a.replace(/\s+$/,"")},capitalize:function(b){var c=b.split(" ");return a.each(c,function(a,b){c[a]=b.substr(0,1).toUpperCase()+b.substr(1,b.length)}),c.join(" ")},insert:function(a,b,c){var d=(b.attr("data-sanitize-insert-"+c)||"").replace(/\[SPACE\]/g," ");return"left"===c&&0===a.indexOf(d)||"right"===c&&a.substring(a.length-d.length)===d?a:("left"===c?d:"")+a+("right"===c?d:"")},insertRight:function(a,b){return this.insert(a,b,"right")},insertLeft:function(a,b){return this.insert(a,b,"left")},numberFormat:function(a,c){if(!("numeral"in b))throw new Error('Using sanitation function "numberFormat" requires that you include numeral.js (http://numeraljs.com/)');return a=numeral().unformat(a),a=numeral(a).format(c.attr("data-sanitize-number-format"))},strip:function(b,c){var d=c.attr("data-sanitize-strip")||"";return a.split(d,function(a){b=b.replace(new RegExp("\\"+a,"g"),"")}),b},escape:function(b){var c={"<":"__%AMP%__lt;",">":"__%AMP%__gt;","&":"__%AMP%__amp;","'":"__%AMP%__#8217;",'"':"__%AMP%__quot;"};return a.each(c,function(a,c){b=b.replace(new RegExp(a,"g"),c)}),b.replace(new RegExp("__%AMP%__","g"),"&")}},e=function(b,e,f){e||(e=a("form")),e.each||(e=a(e));var g=function(){var b=a(this),c=b.val();a.split(b.attr("data-sanitize"),function(a){if(!(a in d))throw new Error('Use of unknown sanitize command "'+a+'"');c=d[a](c,b,f)}),b.val(c).trigger("keyup.validation")};e.each(function(){var b=a(this);f.sanitizeAll&&b.find("input,textarea").not(c).each(function(){var b=a(this),c=b.attr("data-sanitize")||"";b.attr("data-sanitize",f.sanitizeAll+" "+c)}),b.find("[data-sanitize]").unbind("blur.sanitation",g).bind("blur.sanitation",g),a(function(){b.trigger("blur.sanitation")})})};a(b).on("validatorsLoaded formValidationSetup",e),a.formUtils.setupSanitation=e}(jQuery,window);
\ No newline at end of file
+!function(a,b){"use strict";var c='[type="button"], [type="submit"], [type="radio"], [type="checkbox"], [type="reset"], [type="search"]',d={upper:function(a){return a.toLocaleUpperCase()},lower:function(a){return a.toLocaleLowerCase()},trim:function(b){return a.trim(b)},trimLeft:function(a){return a.replace(/^\s+/,"")},trimRight:function(a){return a.replace(/\s+$/,"")},capitalize:function(b){var c=b.split(" ");return a.each(c,function(a,b){c[a]=b.substr(0,1).toUpperCase()+b.substr(1,b.length)}),c.join(" ")},insert:function(a,b,c){var d=(b.attr("data-sanitize-insert-"+c)||"").replace(/\[SPACE\]/g," ");return"left"===c&&0===a.indexOf(d)||"right"===c&&a.substring(a.length-d.length)===d?a:("left"===c?d:"")+a+("right"===c?d:"")},insertRight:function(a,b){return this.insert(a,b,"right")},insertLeft:function(a,b){return this.insert(a,b,"left")},numberFormat:function(a,c){if(0===a.length)return a;if(!("numeral"in b))throw new ReferenceError('Using sanitation function "numberFormat" requires that you include numeral.js (http://numeraljs.com/)');return a=numeral().unformat(a),a=numeral(a).format(c.attr("data-sanitize-number-format"))},strip:function(b,c){var d=c.attr("data-sanitize-strip")||"";return a.split(d,function(a){b=b.replace(new RegExp("\\"+a,"g"),"")}),b},escape:function(b){var c={"<":"__%AMP%__lt;",">":"__%AMP%__gt;","&":"__%AMP%__amp;","'":"__%AMP%__#8217;",'"':"__%AMP%__quot;"};return a.each(c,function(a,c){b=b.replace(new RegExp(a,"g"),c)}),b.replace(new RegExp("__%AMP%__","g"),"&")}},e=function(b,e,f){e||(e=a("form")),e.each||(e=a(e));var g=function(){var b=a(this),c=b.val();a.split(b.attr("data-sanitize"),function(a){if(!(a in d))throw new Error('Use of unknown sanitize command "'+a+'"');c=d[a](c,b,f)}),b.val(c).trigger("keyup.validation")};e.each(function(){var b=a(this);f.sanitizeAll&&b.find("input,textarea").not(c).each(function(){var b=a(this),c=b.attr("data-sanitize")||"";b.attr("data-sanitize",f.sanitizeAll+" "+c)}),b.find("[data-sanitize]").unbind("blur.sanitation",g).bind("blur.sanitation",g),a(function(){b.trigger("blur.sanitation")})})};a(b).on("validatorsLoaded formValidationSetup",e),a.formUtils.setupSanitation=e}(jQuery,window);
\ No newline at end of file
diff --git a/form-validator/security.js b/form-validator/security.js
index a77e971..1b53bb0 100644
--- a/form-validator/security.js
+++ b/form-validator/security.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/sweden.js b/form-validator/sweden.js
index 419921b..491ad6a 100644
--- a/form-validator/sweden.js
+++ b/form-validator/sweden.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/toggleDisabled.js b/form-validator/toggleDisabled.js
index cdc6f6d..a4821d9 100644
--- a/form-validator/toggleDisabled.js
+++ b/form-validator/toggleDisabled.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/form-validator/uk.js b/form-validator/uk.js
index c65364c..8a04d6b 100644
--- a/form-validator/uk.js
+++ b/form-validator/uk.js
@@ -1,7 +1,7 @@
/**
* JQUERY-FORM-VALIDATOR
*
- * @version 2.2.163
+ * @version 2.2.164
* @website http://formvalidator.net/
* @author Victor Jonsson, http://victorjonsson.se
* @license MIT
diff --git a/formvalidator.jquery.json b/formvalidator.jquery.json
index c23c6b7..f011ded 100644
--- a/formvalidator.jquery.json
+++ b/formvalidator.jquery.json
@@ -7,7 +7,7 @@
"validation",
"validator"
],
- "version": "2.2.163",
+ "version": "2.2.164",
"author": {
"name": "Victor Jonsson",
"url": "http://victorjonsson.se",
diff --git a/package.json b/package.json
index c35b86b..2e0825b 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "jquery-form-validator",
"description": "With this feature rich jQuery plugin it becomes easy to validate user input while keeping your HTML markup clean from javascript code. Even though this plugin has a wide range of validation functions it's designed to require as little bandwidth as possible. This is achieved by grouping together validation functions in \"modules\", making it possible for the programmer to load only those functions that's needed to validate a particular form.",
- "version": "2.2.163",
+ "version": "2.2.164",
"main": "./form-validator/jquery.form-validator.min.js",
"keywords": [
"form",