Icontem

File: dist/jquery.annex.validation-plugin.js.map

Recommend this page to a friend!
  Classes of Sebastian Schlapkohl  >  jQuery Annex  >  dist/jquery.annex.validation-plugin.js.map  >  Download  
File: dist/jquery.annex.validation-plugin.js.map
Role: Example script
Content type: text/plain
Description: Example script
Class: jQuery Annex
General purpose functions missing in jQuery
Author: By
Last change: fixes for urlParam and urlAnchor // new multilineTextEllipsis implementation

reworked urlParam methods and urlAnchor methods to be more robust and consistent // added new tests for those methods // reworked multilineTextEllipsis to implement more precise algorithm with linear runtime not growing anymore based on length difference between text and available screen space
Date: 13 days ago
Size: 65,177 bytes
 

Contents

Class file image Download
{"version":3,"sources":["jquery.annex.validation-plugin.js"],"names":["global","factory","jQuery","$","define","amd","module","exports","__AVA_ENV__","require","jqueryAnnexData","ex","window","this","fn","jquery","extend","validation","config","isValid","messages","registeredTargets","all","globalCallback","noop","additionalWidgetEvents","validateOnWidgetEvents","defaultValidationData","isDirty","isOptional","hasNonOptionalValue","optionalValues","asyncError","asyncCount","asyncLeft","values","functions","validate","targets","isTriggeredByWidget","isSet","validationRest","length","each","index","$target","validationData","data","status","first","one","e","stopPropagation","merge","target","document","trigger","container","formDataToObject","attr","replace","isArray","value","inArray","unmarkValidationError","rules","key","markValidationError","callback","isFunction","unsetValidation","$errorContainer","errorContainer","addClass","removeClass","asyncCallbackFactory","msg","context","asyncRes","res","isA","trim","push","asyncErrorCallbackFactory","log","validators","customcase","customRes","dynamicMessage","tmpRes","required","notempty","additionalEmptyValues","Array","prototype","slice","call","arguments","emptyValues","optional","minlength","parseInt","maxlength","rangelength","rangemin","rangemax","proxy","min","isNumeric","max","range","email","ruleRes","test","email_array","split","local_array","i","domain_array","url","date","__internal__","datetimeParts","formatValid","splitValue","Date","getMonth","getDate","getFullYear","time","datetime","dateISO","timeISO","datetimeISO","dateDE","timeDE","datetimeDE","number","parseFloat","numberDE","digits","creditcard","characterclass","characterClassRegEx","RegExp","triggerValidation","targetGroup","orDefault","executeOnValidation","assert","validationIsTriggeredByWidgetEvents","doValidate","setAdditionalValidationWidgetEvents","events","eventString","setValidationFromTags","isPlainObject","exists","suppressSubmit","setValidation","$container","find","closest","off","on","validated","preventDefault","is","that","removeData","asyncRulesCount","rule","ruleLength","objectLength","ruleName","ruleMessage","ruleArgs","args","rulePartKey","rulePartValue","hasAsyncMarker","randomUuid","apply","blurChangeTimeout","focusTimeout","$elements","filter","_this_","countermand","schedule","ignoreMissingValidationData","groupsToSearch","elementIndex","removeFromArray"],"mappings":"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","file":"jquery.annex.validation-plugin.js","sourcesContent":["/**\n * jQueryAnnex - Validation Plugin\n * Provides the means to validate (form-)values on the fly in the client.\n * This is especially useful if you develop JS-driven apps without classical forms and reloads.\n *\n * All methods in this plugin are derived from my PHP5-framework \"HtmlForm\", which also includes\n * JS-validation (coupled with server-side validation) for forms. The validation capabilities aim to\n * as convenient and complete as possible.\n *\n * There are generally two methods of defining validation: either use jQuery to select value-bearing tags and\n * objects and register a/several validator(s) on it, or write the registration(s) directly into the markup via\n * data attributes.\n *\n * Have a look at the plugin-validation-example.html in the repository for example usage and test it locally in\n * your browser.\n *\n * @author Sebastian Schlapkohl <jqueryannex@ifschleife.de>\n * @version Revision 44 developed and tested with jQuery 3.3.1, 2.2.4 and 1.12.4\n **/\n\n\n\n// automatically determine if annex should be loaded traditionally, as an AMD-module or via commonjs, if included before anything that\n// exposes \"define\" (require.js e.g.), it will load normally, extending jQuery directly and globally\n// if loaded as AMD-module it expects Annex to be available as \"jqueryannex\"\n(function(global, factory){\n\tvar jQuery = global.jQuery || global.$;\n\n\tif( (typeof define === 'function') && define.amd ){\n\t\tdefine(['jqueryannex'], factory);\n\t} else if( (typeof module === 'object') && module.exports ){\n\t\tif( !global.__AVA_ENV__ ){\n\t\t\ttry {\n\t\t\t\tif( !jQuery ){\n\t\t\t\t\tjQuery = require('jquery');\n\t\t\t\t}\n\n\t\t\t\tif( !jQuery.jqueryAnnexData ){\n\t\t\t\t\tjQuery = require('jqueryannex');\n\t\t\t\t}\n\t\t\t} catch(ex){}\n\t\t}\n\n\t\tmodule.exports = jQuery\n\t\t\t? factory(jQuery)\n\t\t\t: function(jQuery){\n\t\t\t\treturn factory(jQuery);\n\t\t\t}\n\t\t;\n\t} else {\n\t\tfactory(jQuery);\n\t}\n}((typeof window !== 'undefined') ? window : this, function($){\n\n\t//--|CHECK-AND-PREPARE-JQUERY----------\n\n\t(function(){\n\t\tif( !$ || !$.fn || !$().jquery ){\n\t\t\tthrow 'jQueryAnnex Validation Plugin | cannot extend jQuery, since it does not seem to be available as \"jQuery\" or is missing basic functionality';\n\t\t}\n\n\t\tif( !$.jqueryAnnexData ){\n\t\t\tthrow 'jQueryAnnex Validation Plugin | cannot extend jQuery Annex, since it does not seem to be available yet';\n\t\t}\n\t}());\n\n\n\n\t//--|JQUERYANNEXDATA----------\n\n\t$.extend($.jqueryAnnexData, {\n\n\t\t// plugin is stored as part of jqueryAnnexData-dictionary\n\t\tvalidation : {\n\n\t\t\t// general state of page wide validation and basic validation data structure for elements\n\t\t\tconfig : {\n\t\t\t\tisValid : true,\n\t\t\t\tmessages : [],\n\n\t\t\t\tregisteredTargets : {\n\t\t\t\t\tall : []\n\t\t\t\t},\n\n\t\t\t\tglobalCallback : $.noop,\n\n\t\t\t\tadditionalWidgetEvents : '',\n\t\t\t\tvalidateOnWidgetEvents : true,\n\n\t\t\t\tdefaultValidationData : {\n\t\t\t\t\tisValid : true,\n\t\t\t\t\tisDirty : false,\n\n\t\t\t\t\tisOptional : false,\n\t\t\t\t\thasNonOptionalValue : false,\n\t\t\t\t\toptionalValues : [''],\n\n\t\t\t\t\tasyncError : false,\n\t\t\t\t\tasyncCount : 0,\n\t\t\t\t\tasyncLeft : 0,\n\n\t\t\t\t\tmessages : [],\n\n\t\t\t\t\tvalues : []\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// helper functions for internal plugin use\n\t\t\tfunctions : {\n\t\t\t\tvalidate : function(targets, isTriggeredByWidget){\n\n\t\t\t\t\tif( !$.isSet(isTriggeredByWidget) ){\n\t\t\t\t\t\tisTriggeredByWidget = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !isTriggeredByWidget || (isTriggeredByWidget && $.jqueryAnnexData.validation.config.validateOnWidgetEvents) ){\n\t\t\t\t\t\tvar validationRest = targets.length;\n\n\t\t\t\t\t\t$.jqueryAnnexData.validation.config.isValid = true;\n\t\t\t\t\t\t$.jqueryAnnexData.validation.config.messages = [];\n\n\t\t\t\t\t\t$.each(targets, function(index, $target){\n\t\t\t\t\t\t\tif( $.isSet($target) ){\n\t\t\t\t\t\t\t\tvar validationData = $target.data('validationdata');\n\n\t\t\t\t\t\t\t\t// catch trailing elements, not cleaned properly\n\t\t\t\t\t\t\t\tif( $.isSet(validationData) ){\n\t\t\t\t\t\t\t\t\tif( !isTriggeredByWidget || validationData.status.isDirty ){\n\t\t\t\t\t\t\t\t\t\t$target.first().one('finished.validation', function(e, isValid){\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.config.isValid = $.jqueryAnnexData.validation.config.isValid && isValid;\n\n\t\t\t\t\t\t\t\t\t\t\tif( !isValid ){\n\t\t\t\t\t\t\t\t\t\t\t\t$.merge($.jqueryAnnexData.validation.config.messages, $(e.target).data('validationdata').status.messages);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tvalidationRest--;\n\t\t\t\t\t\t\t\t\t\t\tif( validationRest <= 0 ){\n\t\t\t\t\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.config.globalCallback($.jqueryAnnexData.validation.config.isValid, $.jqueryAnnexData.validation.config.messages);\n\t\t\t\t\t\t\t\t\t\t\t\t$(document).trigger('finished.validation', $.jqueryAnnexData.validation.config.isValid);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tvar isOptional = validationData.status.isOptional;\n\t\t\t\t\t\t\t\t\t\tvar asyncCount = validationData.status.asyncCount;\n\t\t\t\t\t\t\t\t\t\tvalidationData.status = $.extend(true, {}, $.jqueryAnnexData.validation.config.defaultValidationData);\n\t\t\t\t\t\t\t\t\t\tvalidationData.status.isDirty = true;\n\t\t\t\t\t\t\t\t\t\tvalidationData.status.isOptional = isOptional;\n\t\t\t\t\t\t\t\t\t\tvalidationData.status.asyncCount = asyncCount;\n\t\t\t\t\t\t\t\t\t\tvalidationData.status.asyncLeft = asyncCount;\n\n\t\t\t\t\t\t\t\t\t\tvalidationData.status.values = validationData.container.formDataToObject()[$target.attr('name').replace(/\\[\\]/, '')];\n\n\t\t\t\t\t\t\t\t\t\tif( $.isSet(validationData.status.values) ){\n\t\t\t\t\t\t\t\t\t\t\tif( !$.isArray(validationData.status.values) ){\n\t\t\t\t\t\t\t\t\t\t\t\tvalidationData.status.values = [validationData.status.values];\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalidationData.status.values = [];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif( validationData.status.isOptional ){\n\t\t\t\t\t\t\t\t\t\t\t$.each(validationData.status.values, function(index, value){\n\t\t\t\t\t\t\t\t\t\t\t\tif( $.inArray(value, validationData.status.optionalValues) === -1 ){\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalidationData.status.hasNonOptionalValue = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t$target.data('validationdata', validationData);\n\n\t\t\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.unmarkValidationError($target);\n\n\t\t\t\t\t\t\t\t\t\tif(\n\t\t\t\t\t\t\t\t\t\t\t(!validationData.status.isOptional\n\t\t\t\t\t\t\t\t\t\t\t|| validationData.status.hasNonOptionalValue)\n\t\t\t\t\t\t\t\t\t\t\t&& !$.isSet($target.attr('disabled'))\n\t\t\t\t\t\t\t\t\t\t){\n\t\t\t\t\t\t\t\t\t\t\t$.each(validationData.rules, function(key, value){\n\t\t\t\t\t\t\t\t\t\t\t\tvalidationData.status.isValid = value() && validationData.status.isValid;\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\tif( !validationData.status.isValid ){\n\t\t\t\t\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.markValidationError($target);\n\n\t\t\t\t\t\t\t\t\t\t\t\tif( validationData.status.asyncLeft <= 0 ){\n\t\t\t\t\t\t\t\t\t\t\t\t\tif( $.isSet(validationData.callback) && $.isFunction(validationData.callback) ){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalidationData.callback(false, validationData.status.messages, $target);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t$target.trigger('error.validation', validationData.status.messages);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tvalidationData.status.asyncLeft = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif( validationData.status.asyncLeft <= 0 ){\n\t\t\t\t\t\t\t\t\t\t\tif( validationData.status.isValid ){\n\t\t\t\t\t\t\t\t\t\t\t\tif( $.isSet(validationData.callback) && $.isFunction(validationData.callback) ){\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalidationData.callback(true, [], $target);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t$target.trigger('success.validation');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t$target.trigger('finished.validation', validationData.status.isValid);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// manually kill validation for elements with lost validation data\n\t\t\t\t\t\t\t\t\t$target.unsetValidation(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\n\n\n\t\t\t\tmarkValidationError : function($target){\n\t\t\t\t\tvar $errorContainer = $target.data('validationdata').errorContainer;\n\n\t\t\t\t\tif( $.isSet($errorContainer) ){\n\t\t\t\t\t\t$errorContainer.addClass('validationerror');\n\t\t\t\t\t}\n\n\t\t\t\t\t$target.addClass('validationerror');\n\t\t\t\t},\n\n\n\n\t\t\t\tunmarkValidationError : function($target){\n\t\t\t\t\tvar $errorContainer = $target.data('validationdata').errorContainer;\n\n\t\t\t\t\tif( $.isSet($errorContainer) ){\n\t\t\t\t\t\t$errorContainer.removeClass('validationerror');\n\t\t\t\t\t}\n\n\t\t\t\t\t$target.removeClass('validationerror');\n\t\t\t\t},\n\n\n\n\t\t\t\tasyncCallbackFactory : function($target, msg){\n\t\t\t\t\tvar context = $target.data('validationdata').status;\n\t\t\t\t\tvar callback = $target.data('validationdata').callback;\n\n\t\t\t\t\tvar asyncCallBack = function(asyncRes){\n\t\t\t\t\t\tvar res =\n\t\t\t\t\t\t\t$.isA(asyncRes, 'boolean')\n\t\t\t\t\t\t\t? asyncRes\n\t\t\t\t\t\t\t: ($.trim(''+asyncRes) === '')\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tcontext.asyncError = context.asyncError && !res;\n\t\t\t\t\t\tcontext.isValid = context.isValid && res;\n\t\t\t\t\t\tcontext.asyncLeft--;\n\n\t\t\t\t\t\tif( !context.isValid ){\n\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.markValidationError($target);\n\n\t\t\t\t\t\t\tif( !res ){\n\t\t\t\t\t\t\t\tif( $.isA(asyncRes, 'string') && ($.trim(''+asyncRes) !== '') ){\n\t\t\t\t\t\t\t\t\tcontext.messages.push($.trim(''+asyncRes));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif( context.asyncLeft <= 0 ){\n\t\t\t\t\t\t\t\tif( $.isSet(callback) && $.isFunction(callback) ){\n\t\t\t\t\t\t\t\t\tcallback(false, context.messages, $target);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$target.trigger('error.validation', context.messages);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if( context.asyncLeft <= 0 ){\n\t\t\t\t\t\t\tif( $.isSet(callback) && $.isFunction(callback) ){\n\t\t\t\t\t\t\t\tcallback(true, [], $target);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$target.trigger('success.validation');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( context.asyncLeft <= 0 ){\n\t\t\t\t\t\t\t$target.trigger('finished.validation', context.isValid);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\treturn asyncCallBack;\n\t\t\t\t},\n\n\n\n\t\t\t\tasyncErrorCallbackFactory : function($target){\n\t\t\t\t\tvar context = $target.data('validationdata').status;\n\t\t\t\t\tvar callback = $target.data('validationdata').callback;\n\n\t\t\t\t\tvar asyncErrorCallBack = function(){\n\t\t\t\t\t\tcontext.asyncLeft--;\n\t\t\t\t\t\tcontext.asyncError = true;\n\n\t\t\t\t\t\tcontext.isValid = context.isValid && !context.asyncError;\n\n\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.markValidationError($target);\n\t\t\t\t\t\tcontext.messages.push('communication error, could not retrieve data from server');\n\t\t\t\t\t\t$.log('communication error, could not retrieve data from server');\n\n\t\t\t\t\t\tif( context.asyncLeft <= 0 ){\n\t\t\t\t\t\t\tif( $.isSet(callback) && $.isFunction(callback) ){\n\t\t\t\t\t\t\t\tcallback(false, context.messages, $target);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$target.trigger('error.validation', context.messages);\n\t\t\t\t\t\t\t$target.trigger('finished.validation', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\treturn asyncErrorCallBack;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// rule methods to apply validation to values\n\t\t\tvalidators : {\n\t\t\t\tcustomcase : function(msg, customRes){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\t\t\t\t\tvar dynamicMessage = null;\n\n\t\t\t\t\tif( $.isArray(customRes) && (customRes.length < 2) ){\n\t\t\t\t\t\tcustomRes = customRes[0];\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !$.isFunction(customRes) ){\n\t\t\t\t\t\tif( $.isA(customRes, 'boolean') ){\n\t\t\t\t\t\t\tres = customRes;\n\t\t\t\t\t\t} else if( $.trim(''+customRes) !== '' ){\n\t\t\t\t\t\t\tres = false;\n\t\t\t\t\t\t\tdynamicMessage =  $.trim(''+customRes);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar tmpRes = customRes(\n\t\t\t\t\t\t\t$(this),\n\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.asyncCallbackFactory($(this), msg),\n\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.asyncErrorCallbackFactory($(this))\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif( $.isSet(tmpRes) ){\n\t\t\t\t\t\t\tif( $.isA(tmpRes, 'boolean') ){\n\t\t\t\t\t\t\t\tres = tmpRes;\n\t\t\t\t\t\t\t} else if( $.trim(''+tmpRes) !== '' ){\n\t\t\t\t\t\t\t\tres = false;\n\t\t\t\t\t\t\t\tdynamicMessage = $.trim(''+tmpRes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !$.isSet(dynamicMessage) ){\n\t\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\trequired : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tif( context.values.length === 1 ){\n\t\t\t\t\t\tres = context.values[0] !== '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres = context.values.length > 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && (msg !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tnotempty : function(msg){\n\t\t\t\t\tvar additionalEmptyValues = Array.prototype.slice.call(arguments, 1);\n\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tvar emptyValues = [''];\n\t\t\t\t\t$.merge(emptyValues, additionalEmptyValues);\n\n\t\t\t\t\tif( context.values.length === 1 ){\n\t\t\t\t\t\tres = ($.inArray($.trim(context.values[0]), emptyValues) === -1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres = context.values.length !== 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\toptional : function(){\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\n\n\n\t\t\t\tminlength : function(msg, minlength){\n\t\t\t\t\tminlength = parseInt(minlength, 10);\n\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tif( context.values.length === 1 ){\n\t\t\t\t\t\tres = context.values[0].length >= minlength;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres = (context.values.length >= minlength);\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tmaxlength : function(msg, maxlength){\n\t\t\t\t\tmaxlength = parseInt(maxlength, 10);\n\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tif( context.values.length === 1 ){\n\t\t\t\t\t\tres = context.values[0].length <= maxlength;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres = (context.values.length <= maxlength);\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\trangelength : function(msg, rangemin, rangemax){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tif( $.isSet(rangemin, rangemax) ){\n\t\t\t\t\t\tres =\n\t\t\t\t\t\t\t$.proxy($.jqueryAnnexData.validation.validators.minlength, $(this), null, rangemin)()\n\t\t\t\t\t\t\t&& $.proxy($.jqueryAnnexData.validation.validators.maxlength, $(this), null, rangemax)()\n\t\t\t\t\t\t;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tmin : function(msg, min){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && ($.isNumeric(value) && (parseInt(value, 10) >= min));\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tmax : function(msg, max){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && ($.isNumeric(value) && (parseInt(value, 10) <= max));\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\trange : function(msg, min, max){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tif( $.isSet(min, max) ){\n\t\t\t\t\t\tres =\n\t\t\t\t\t\t\t$.proxy($.jqueryAnnexData.validation.validators.min, $(this), null, min)()\n\t\t\t\t\t\t\t&& $.proxy($.jqueryAnnexData.validation.validators.max, $(this), null, max)()\n\t\t\t\t\t\t;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\temail : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tvar ruleRes = /^[^@]{1,64}@[^@]{1,255}$/.test(value);\n\n\t\t\t\t\t\tif( ruleRes ){\n\t\t\t\t\t\t\tvar email_array = value.split('@');\n\t\t\t\t\t\t\tvar local_array = email_array[0].split('.');\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < local_array.length; i++) {\n\t\t\t\t\t\t\t\tif( !(/^(([A-Za-z0-9!#$%&'*+\\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\\/=?^_`{|}~\\.-]{0,63})|(\\\\\\\"[^(\\\\|\\\\\\\")]{0,62}\\\\\\\"))$/.test(local_array[i])) ){\n\t\t\t\t\t\t\t\t\truleRes = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar domain_array = '';\n\t\t\t\t\t\t\tif( !(/^\\[?[0-9\\.]+\\]?$/.test(email_array[1])) ){\n\t\t\t\t\t\t\t\tdomain_array = email_array[1].split('.');\n\n\t\t\t\t\t\t\t\tif( domain_array.length < 2 ){\n\t\t\t\t\t\t\t\t\truleRes = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor( i = 0; i < domain_array.length; i++ ){\n\t\t\t\t\t\t\t\t\tif( !(/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]{2,5}))$/.test(domain_array[i])) ){\n\t\t\t\t\t\t\t\t\t\truleRes = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tres = res && ruleRes;\n\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\turl : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && /^(https?|ftp)\\:\\/\\/([a-z0-9+!*(),;?&=$_.-]+(\\:[a-z0-9+!*(),;?&=$_.-]+)?@)?([a-z0-9+$_-]+\\.)*[a-z0-9+$_-]{2,3}(\\:[0-9]{2,5})?(\\/([a-z0-9+$_-]\\.?)+)*\\/?(\\?[a-z+&$_.-][a-z0-9;:@\\/&%=+$_.-]*)?(#[a-z_.-][a-z0-9+$_.-]*)?$/.test(value);\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdate : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar formatValid = /^(0?[1-9]|1[0-2])\\/(0?[1-9]|[1-2][0-9]|3[0-1])\\/([1-2][0-9]{3})$/.test(value);\n\t\t\t\t\t\tvar splitValue = formatValid ? value.split('/') : null;\n\n\t\t\t\t\t\tif( formatValid ){\n\t\t\t\t\t\t\tfor( var i = 0; i < 2; i++ ){\n\t\t\t\t\t\t\t\tif( splitValue[i].length  < 2 ){\n\t\t\t\t\t\t\t\t\tsplitValue[i] = '0'+splitValue[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar date = formatValid ? new Date(splitValue[2]+'-'+splitValue[0]+'-'+splitValue[1]) : null;\n\t\t\t\t\t\tvar ruleRes =\n\t\t\t\t\t\t\t((date !== null) && (splitValue !== null))\n\t\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\t!/Invalid|NaN/.test(date)\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[0], 10) === (date.getMonth() + 1))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[1], 10) === (date.getDate()))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[2], 10) === (date.getFullYear()))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tres = res && ruleRes;\n\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\ttime : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[1]);\n\t\t\t\t\t\t\t\tif( datetimeParts.length >= 3 ){\n\t\t\t\t\t\t\t\t\tvalue += ' '+$.trim(datetimeParts[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar ruleRes = /^((0?[0-9]|1[0-1])\\:[0-5][0-9](\\:[0-5][0-9])? ?(am|AM|pm|PM)|12\\:[0-5][0-9](\\:[0-5][0-9])? ?(pm|PM))$/.test(value);\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdatetime : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tres =\n\t\t\t\t\t\t$.proxy($.jqueryAnnexData.validation.validators.date, $(this), null, '__internal__')()\n\t\t\t\t\t\t&& $.proxy($.jqueryAnnexData.validation.validators.time, $(this), null, '__internal__')()\n\t\t\t\t\t;\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdateISO : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.replace(/T/, ' ').split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar formatValid = /^([1-2][0-9]{3})\\-(0?[1-9]|1[0-2])\\-(0?[1-9]|[1-2][0-9]|3[0-1])$/.test(value);\n\t\t\t\t\t\tvar splitValue = formatValid ? value.split('-') : null;\n\n\t\t\t\t\t\tif( formatValid ){\n\t\t\t\t\t\t\tfor( var i = 1; i < 3; i++ ){\n\t\t\t\t\t\t\t\tif( splitValue[i].length  < 2 ){\n\t\t\t\t\t\t\t\t\tsplitValue[i] = '0'+splitValue[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar date = formatValid ? new Date(parseInt(splitValue[0], 10), parseInt(splitValue[1], 10) - 1,  parseInt(splitValue[2], 10)) : null;\n\t\t\t\t\t\tvar ruleRes =\n\t\t\t\t\t\t\t((date !== null) && (splitValue !== null))\n\t\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\t!/Invalid|NaN/.test(date)\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[0], 10) === (date.getFullYear()))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[1], 10) === (date.getMonth() + 1))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[2], 10) === (date.getDate()))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\ttimeISO : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.replace(/T/, ' ').split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[1]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar ruleRes = /^([0-1][0-9]|2[0-3])\\:[0-5][0-9]\\:[0-5][0-9]$/.test(value);\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdatetimeISO : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tres =\n\t\t\t\t\t\t$.proxy($.jqueryAnnexData.validation.validators.dateISO, $(this), null, '__internal__')()\n\t\t\t\t\t\t&& $.proxy($.jqueryAnnexData.validation.validators.timeISO, $(this), null, '__internal__')()\n\t\t\t\t\t;\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdateDE : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar formatValid = /^(0?[1-9]|[1-2][0-9]|3[0-1])\\.(0?[1-9]|1[0-2])\\.([1-2][0-9]{3})$/.test(value);\n\t\t\t\t\t\tvar splitValue = formatValid ? value.split('.') : null;\n\n\t\t\t\t\t\tif( formatValid ){\n\t\t\t\t\t\t\tfor( var i = 0; i < 2; i++ ){\n\t\t\t\t\t\t\t\tif( splitValue[i].length  < 2 ){\n\t\t\t\t\t\t\t\t\tsplitValue[i] = '0'+splitValue[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar date = formatValid ? new Date(parseInt(splitValue[2], 10), parseInt(splitValue[1], 10) - 1,  parseInt(splitValue[0], 10)) : null;\n\t\t\t\t\t\tvar ruleRes =\n\t\t\t\t\t\t\t((date !== null) && (splitValue !== null))\n\t\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\t!/Invalid|NaN/.test(date)\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[0], 10) === (date.getDate()))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[1], 10) === (date.getMonth() + 1))\n\t\t\t\t\t\t\t\t&& (parseInt(splitValue[2], 10) === (date.getFullYear()))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: false\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\ttimeDE : function(msg, __internal__){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tif( $.isSet(__internal__) && (__internal__ === '__internal__') ){\n\t\t\t\t\t\t\tvar datetimeParts = value.split(' ');\n\t\t\t\t\t\t\tif( datetimeParts.length >= 2 ){\n\t\t\t\t\t\t\t\tvalue = $.trim(datetimeParts[1]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar ruleRes = /^([0-1][0-9]|2[0-3])\\:[0-5][0-9](\\:[0-5][0-9])?h?$/.test(value);\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdatetimeDE : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tres =\n\t\t\t\t\t\t$.proxy($.jqueryAnnexData.validation.validators.dateDE, $(this), null, '__internal__')()\n\t\t\t\t\t\t&& $.proxy($.jqueryAnnexData.validation.validators.timeDE, $(this), null, '__internal__')()\n\t\t\t\t\t;\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tnumber : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && ((value === ''+parseInt(value, 10)) || (value === ''+parseFloat(value)));\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tnumberDE : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tvar ruleRes = /^[0-9]+(\\,[0-9]+)?$/.test(value);\n\n\t\t\t\t\t\tif( ruleRes ){\n\t\t\t\t\t\t\tvalue = value.replace(/\\,/g, '.');\n\t\t\t\t\t\t\truleRes = ((value === ''+parseInt(value, 10)) || (value === ''+parseFloat(value)));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tres = res && ruleRes;\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tdigits : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && /^[0-9]+$/.test(value);\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tcreditcard : function(msg){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && /^[0-9]{3,4}\\-[0-9]{4}\\-[0-9]{4}\\-[0-9]{4}$/.test(value);\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\n\n\n\t\t\t\tcharacterclass : function(msg, characterclass){\n\t\t\t\t\tvar res = true;\n\t\t\t\t\tvar context = $(this).data('validationdata').status;\n\n\t\t\t\t\tvar characterClassRegEx = new RegExp('^['+characterclass+']*$');\n\n\t\t\t\t\t$.each(context.values, function(index, value){\n\t\t\t\t\t\tres = res && characterClassRegEx.test(value);\n\t\t\t\t\t\tif( !res ) return false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif( !res && $.isSet(msg) && ($.trim(msg) !== '') ){\n\t\t\t\t\t\tcontext.messages.push(msg);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t});\n\n\n\n\t//--|JQUERY-$-GENERAL-FUNCTIONS----------\n\n\t$.extend({\n\n\t\ttriggerValidation : function(targetGroup){\n\t\t\ttargetGroup = $.orDefault(targetGroup, 'all', 'string');\n\t\t\t$.jqueryAnnexData.validation.functions.validate($.jqueryAnnexData.validation.config.registeredTargets[targetGroup]);\n\t\t},\n\n\n\n\t\texecuteOnValidation : function(callback){\n\t\t\t$.assert($.isFunction(callback), 'executeOnValidation | callback is no function');\n\n\t\t\t$.jqueryAnnexData.validation.config.globalCallback = callback;\n\t\t},\n\n\n\n\t\tvalidationIsTriggeredByWidgetEvents : function(doValidate){\n\t\t\tdoValidate = !!doValidate;\n\t\t\t$.jqueryAnnexData.validation.config.validateOnWidgetEvents = doValidate;\n\t\t},\n\n\n\n\t\tsetAdditionalValidationWidgetEvents : function(events){\n\t\t\t$.assert($.isArray(events), 'events need to be an array');\n\n\t\t\tvar eventString = '';\n\t\t\t$.each(events, function(index, value){\n\t\t\t\teventString += value+'.validation ';\n\t\t\t});\n\t\t\teventString = ' '+$.trim(eventString);\n\n\t\t\t$.jqueryAnnexData.validation.config.additionalWidgetEvents = eventString;\n\t\t},\n\n\n\n\t\tsetValidationFromTags : function(){\n\t\t\t$(':input[data-validation]').each(function(){\n\t\t\t\tif( $.isPlainObject($(this).data('validation')) || $.isArray($(this).data('validation')) ){\n\t\t\t\t\tvar callback = ($.isSet($(this).data('validation-callback')) && $.isFunction($(this).data('validation-callback'))) ? $(this).data('validation-callback') : null;\n\t\t\t\t\tvar errorContainer = ($.isSet($(this).data('validation-errorcontainer')) && $.exists($(this).data('validation-errorcontainer'))) ? $(this).data('validation-errorcontainer') : null;\n\t\t\t\t\tvar container = ($.isSet($(this).data('validation-container')) && $.exists($(this).data('validation-container'))) ? $(this).data('validation-container') : null;\n\t\t\t\t\tvar targetGroup = ($.isSet($(this).data('validation-targetgroup'))) ? $(this).data('validation-targetgroup') : null;\n\t\t\t\t\tvar suppressSubmit = ($.isSet($(this).data('validation-suppresssubmit'))) ? ($(this).data('validation-suppresssubmit') === 'true') : false;\n\t\t\t\t\t$(this).setValidation($(this).data('validation'), callback, errorContainer, container, targetGroup, suppressSubmit);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t});\n\n\n\n\t//--|JQUERY-OBJECT-GENERAL-FUNCTIONS----------\n\n\t$.fn.extend({\n\n\t\tsetValidation : function(validators, callback, $errorContainer, $container, targetGroup, suppressSubmit){\n\t\t\tvalidators = $.orDefault(validators, [], 'array');\n\t\t\ttargetGroup = $.orDefault(targetGroup, 'all', 'string');\n\t\t\tsuppressSubmit = $.orDefault(suppressSubmit, false, 'bool');\n\n\t\t\tif( !$.isSet($container) ){\n\t\t\t\t$container = $(this).closest('form');\n\n\t\t\t\tif( !$.exists($container) ){\n\t\t\t\t\t$container = $(this);\n\t\t\t\t} else {\n\t\t\t\t\t$container.off('submit.validation');\n\t\t\t\t\t$container.on('submit.validation', function(e, validated){\n\t\t\t\t\t\tif( !$.isSet(validated) ){\n\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t$(document).one('finished.validation', function(e, isValid){\n\t\t\t\t\t\t\t\t$container.trigger('submit.validation', isValid);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.validate($.jqueryAnnexData.validation.config.registeredTargets[targetGroup]);\n\t\t\t\t\t\t} else if( !validated || suppressSubmit ){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$container = $container.find(':input');\n\t\t\t}\n\n\t\t\t// apply to each set member individually to avoid setting data for whole set\n\t\t\t$(this).each(function(){\n\t\t\t\t$.assert($(this).is(':input'), 'setValidation | element is no value-bearing form element');\n\t\t\t\t$.assert($.isSet($(this).attr('name')), 'setValidation | element has no attribute \"name\"');\n\n\t\t\t\tvar that = this;\n\n\t\t\t\t$(this).removeData('validationdata');\n\t\t\t\tvar validationData = {\n\t\t\t\t\tstatus : $.extend({}, $.jqueryAnnexData.validation.config.defaultValidationData),\n\t\t\t\t\trules : {},\n\t\t\t\t\tcallback : callback,\n\t\t\t\t\tcontainer : $container,\n\t\t\t\t\terrorContainer : $errorContainer\n\t\t\t\t};\n\n\t\t\t\tvar asyncRulesCount = 0;\n\t\t\t\t$.each(validators, function(index, rule){\n\t\t\t\t\tvar ruleLength = $.objectLength(rule);\n\t\t\t\t\tif( $.isPlainObject(rule) && (ruleLength >= 1) && (ruleLength <= 2) ){\n\t\t\t\t\t\tif( ruleLength === 2 ){\n\t\t\t\t\t\t\t$.assert($.exists('args', rule));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar ruleName = null;\n\t\t\t\t\t\tvar ruleMessage = null;\n\t\t\t\t\t\tvar ruleArgs = $.exists('args', rule) ? ($.isArray(rule.args) ? rule.args : [rule.args]) : [];\n\t\t\t\t\t\t$.each(rule, function(rulePartKey, rulePartValue){\n\t\t\t\t\t\t\tif( rulePartKey !== 'args' ){\n\t\t\t\t\t\t\t\truleName = rulePartKey;\n\t\t\t\t\t\t\t\truleMessage = rulePartValue;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif( $.isSet(ruleName) ){\n\t\t\t\t\t\t\truleName = ruleName.split('_async');\n\t\t\t\t\t\t\tvar hasAsyncMarker = (ruleName.length > 1);\n\t\t\t\t\t\t\truleName = ruleName[0];\n\n\t\t\t\t\t\t\tif( ruleName === 'optional' ){\n\t\t\t\t\t\t\t\tvalidationData.status.isOptional = true;\n\t\t\t\t\t\t\t\t$.merge(validationData.status.optionalValues, ruleArgs);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif( $.isFunction($.jqueryAnnexData.validation.validators[ruleName]) ){\n\t\t\t\t\t\t\t\tif( hasAsyncMarker ){\n\t\t\t\t\t\t\t\t\tasyncRulesCount++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvalidationData.rules[ruleName+'_'+$.randomUuid(true)] = $.proxy.apply($, $.merge([], $.merge([$.jqueryAnnexData.validation.validators[ruleName], $(that), ''+$.trim(ruleMessage)], ruleArgs)));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvalidationData.status.asyncCount = asyncRulesCount;\n\n\t\t\t\t$.jqueryAnnexData.validation.config.registeredTargets.all.push($(this));\n\t\t\t\tif( targetGroup !== 'all' ){\n\t\t\t\t\tif( !$.isSet($.jqueryAnnexData.validation.config.registeredTargets[targetGroup]) ){\n\t\t\t\t\t\t$.jqueryAnnexData.validation.config.registeredTargets[targetGroup] = [];\n\t\t\t\t\t}\n\t\t\t\t\t$.jqueryAnnexData.validation.config.registeredTargets[targetGroup].push($(this));\n\t\t\t\t}\n\n\t\t\t\tvar blurChangeTimeout = null,\n\t\t\t\t\tfocusTimeout = null,\n\t\t\t\t\t$elements = $container.find('[name=\"'+$(this).attr('name')+'\"]');\n\n\t\t\t\tif( $elements.length === 0 ){\n\t\t\t\t\t$elements = $container.filter('[name=\"'+$(this).attr('name')+'\"]');\n\t\t\t\t}\n\n\t\t\t\t$elements.each(function(){\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.data('validationdata', validationData)\n\t\t\t\t\t\t.off('change.validation blur.validation focus.validation'+$.jqueryAnnexData.validation.config.additionalWidgetEvents)\n\t\t\t\t\t\t.on('change.validation blur.validation'+$.jqueryAnnexData.validation.config.additionalWidgetEvents, function(){\n\t\t\t\t\t\t\tvar _this_ = this;\n\n\t\t\t\t\t\t\t$.countermand(blurChangeTimeout);\n\t\t\t\t\t\t\tblurChangeTimeout = $.schedule(10, function(){\n\t\t\t\t\t\t\t\t$(_this_).data('validationdata').status.isDirty = true;\n\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.functions.validate($.jqueryAnnexData.validation.config.registeredTargets[targetGroup], true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('focus.validation', function(){\n\t\t\t\t\t\t\tvar _this_ = this;\n\n\t\t\t\t\t\t\t$.countermand(focusTimeout);\n\t\t\t\t\t\t\tfocusTimeout = $.schedule(10, function(){\n\t\t\t\t\t\t\t\t$(_this_).data('validationdata').status.isDirty = true;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})\n\t\t\t\t\t;\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\n\n\t\tunsetValidation : function(ignoreMissingValidationData, targetGroup){\n\t\t\tignoreMissingValidationData = $.orDefault(ignoreMissingValidationData, false, 'bool');\n\t\t\ttargetGroup = ($.isSet(targetGroup) && $.jqueryAnnexData.validation.config.registeredTargets[targetGroup]) ? ''+targetGroup : null;\n\n\t\t\t// handle all set members individually to clearly identify them in registeredTarget-array\n\t\t\t$(this).each(function(){\n\t\t\t\t$.assert($(this).is(':input'), 'unsetValidation | element is no value-bearing form element');\n\t\t\t\t$.assert($.isSet($(this).attr('name')), 'unsetValidation | element has no attribute \"name\"');\n\n\t\t\t\tvar _this_ = this;\n\n\t\t\t\tif( $.isSet($(this).data('validationdata')) || ignoreMissingValidationData ){\n\t\t\t\t\t$(this).removeData('validationdata');\n\n\t\t\t\t\tvar groupsToSearch = {};\n\n\t\t\t\t\tif( $.isSet(targetGroup) ){\n\t\t\t\t\t\tgroupsToSearch.all = $.jqueryAnnexData.validation.config.registeredTargets.all;\n\t\t\t\t\t\tgroupsToSearch[targetGroup] = $.jqueryAnnexData.validation.config.registeredTargets[targetGroup];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroupsToSearch = $.jqueryAnnexData.validation.config.registeredTargets;\n\t\t\t\t\t}\n\n\t\t\t\t\t$.each(groupsToSearch, function(key, targetGroup){\n\t\t\t\t\t\tif( $.isSet(targetGroup) ){\n\t\t\t\t\t\t\tvar elementIndex = -1;\n\t\t\t\t\t\t\tfor( var i = 0; i < targetGroup.length; i++ ){\n\t\t\t\t\t\t\t\tif( $(_this_).attr('name') === targetGroup[i].attr('name') ){\n\t\t\t\t\t\t\t\t\telementIndex = i;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif( elementIndex >= 0 ){\n\t\t\t\t\t\t\t\t$.jqueryAnnexData.validation.config.registeredTargets[key] = $.removeFromArray($.jqueryAnnexData.validation.config.registeredTargets[key], elementIndex);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif( $.jqueryAnnexData.validation.config.registeredTargets[key].length === 0 ){\n\t\t\t\t\t\t\t\t$(this).closest('form').off('submit.validation');\n\n\t\t\t\t\t\t\t\tif( key !== 'all' ){\n\t\t\t\t\t\t\t\t\tdelete $.jqueryAnnexData.validation.config.registeredTargets[key];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t$(this).off('change.validation blur.validation'+$.jqueryAnnexData.validation.config.additionalWidgetEvents);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn this;\n\t\t}\n\n\t});\n\n\treturn $;\n\n}));\n"]}