{"version":3,"sources":["core/validate.js","rules/core.js","rules/upload.js"],"names":["html5Types","email","url","date","time","week","month","number","color","range","html5Attributes","validity","node","rule","param","valid","dmx","rules","message","getAttribute","Array","isArray","replace","match","i","setCustomValidity","bootstrap5forms","validate","setBootstrap5Message","bootstrap4forms","setBootstrap4Message","bootstrap3forms","setBootstrapMessage","setErrorMessage","setMessage","console","warn","bootstrapVersion","document","addEventListener","event","window","bootstrap","Alert","parseInt","VERSION","querySelector","tagName","elements","length","classList","add","type","firstCheckbox","form","array","find","elm","name","dirty","call","requestUpdate","willValidate","hasAttribute","value","attr","attributes","attribute","test","substr","toLowerCase","validateReset","remove","querySelectorAll","forEach","closest","id","err","getElementById","createElement","className","group","insertAdjacentElement","textContent","contains","nextSibling","parentElement","formGroup","feedback","appendChild","nodes","getCount","element","nodeName","options","reduce","n","opt","selected","checked","Object","assign","required","min","max","pattern","RegExp","minlength","maxlength","alphanumeric","lettersonly","letterswithbasicpunc","nowhitespace","digits","creditcard","cDigit","nCheck","nDigit","bEven","charAt","bic","iban","ibancheck","bbanpattern","p","toUpperCase","ibancheckdigits","leadingZeroes","cRest","AL","AD","AT","AZ","BE","BH","BA","BR","BG","CR","HR","CY","CZ","DK","DO","EE","FO","FI","FR","GE","DE","GI","GR","GL","GT","HU","IS","IE","IL","IT","KZ","KW","LV","LB","LI","LT","LU","MK","MT","MR","MU","MC","MD","ME","NL","NO","PK","PS","PL","PT","RO","SM","SA","RS","SK","SI","ES","SE","CH","TN","TR","AE","GB","VG","substring","indexOf","vat","integer","ipv4","ipv6","minitems","maxitems","equalto","target","notequalto","accept","allowed","split","files","file","ok","j","check","minsize","size","maxsize","mintotalsize","maxtotalsize","minfiles","maxfiles"],"mappings":"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","file":"../dmxValidator/dmxValidator.js","sourcesContent":["(function() {\r\n\r\n var html5Types = {\r\n 'email': 'email',\r\n 'url': 'url',\r\n 'date': 'date',\r\n 'time': 'time',\r\n 'week': 'week',\r\n 'month': 'month',\r\n 'number': 'number',\r\n 'color': 'color',\r\n 'range': 'number'\r\n };\r\n\r\n var html5Attributes = ['min', 'max', 'accept', 'pattern', 'minlength', 'maxlength'];\r\n\r\n dmx.bootstrapVersion = 0; \r\n dmx.bootstrap3forms = false;\r\n dmx.bootstrap4forms = false;\r\n dmx.bootstrap5forms = false;\r\n\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n dmx.bootstrapVersion = window.bootstrap && bootstrap.Alert ? parseInt(bootstrap.Alert.VERSION) : 0;\r\n dmx.bootstrap3forms = !!document.querySelector('script[src$=\"dmxBootstrap3Forms.js\"]');\r\n dmx.bootstrap4forms = dmx.bootstrapVersion == 4;\r\n dmx.bootstrap5forms = dmx.bootstrapVersion == 5;\r\n });\r\n\r\n dmx.rules = {};\r\n\r\n dmx.validate = function(node) {\r\n if (node.tagName == 'FORM') {\r\n var valid = true;\r\n\r\n for (var i = 0; i < node.elements.length; i++) {\r\n if (!dmx.validate(node.elements[i])) {\r\n valid = false;\r\n }\r\n }\r\n\r\n if (dmx.bootstrap4forms || dmx.bootstrap5forms) {\r\n node.classList.add('was-validated');\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n if (node.type == 'checkbox' || node.type == 'radio') {\r\n var firstCheckbox = null; //document.querySelector('input[name=\"' + node.name + '\"]');\r\n if (node.form) {\r\n firstCheckbox = dmx.array(node.form.elements).find(function(elm) {\r\n return elm.name == node.name;\r\n });\r\n }\r\n if (firstCheckbox && node != firstCheckbox) {\r\n return dmx.validate(firstCheckbox);\r\n }\r\n }\r\n\r\n if (!node.dirty) {\r\n node.dirty = true;\r\n if (dmx.bootstrap3forms) {\r\n var setCustomValidity = node.setCustomValidity;\r\n node.setCustomValidity = function(message) {\r\n setCustomValidity.call(node, message);\r\n dmx.validate.setBootstrapMessage(node, message);\r\n };\r\n }\r\n }\r\n\r\n dmx.requestUpdate();\r\n\r\n if (!node.willValidate) {\r\n node.setCustomValidity('');\r\n return true;\r\n }\r\n\r\n // Google reCAPTCHA v2\r\n if (node.getAttribute('name') == 'g-recaptcha-response' && !validity(node, 'required')) {\r\n return false;\r\n }\r\n\r\n if (node.hasAttribute('required') && !validity(node, 'required')) {\r\n return false;\r\n }\r\n\r\n if (node.value && node.value.length) {\r\n for (var type in html5Types) {\r\n if (node.type == type && !validity(node, html5Types[type])) {\r\n return false;\r\n }\r\n }\r\n\r\n for (var i in html5Attributes) {\r\n var attr = html5Attributes[i];\r\n if (node.hasAttribute(attr) && !validity(node, attr, node.getAttribute(attr))) {\r\n return false;\r\n }\r\n }\r\n\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (/^data-rule-/.test(attribute.name)) {\r\n var rule = attribute.name.substr(10).toLowerCase();\r\n\r\n if (!validity(node, rule, attribute.value)) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n node.setCustomValidity('');\r\n\r\n return true;\r\n };\r\n\r\n dmx.validateReset = function(node) {\r\n if (node.tagName == 'FORM') {\r\n for (var i = 0; i < node.elements.length; i++) {\r\n dmx.validateReset(node[i]);\r\n }\r\n\r\n if (dmx.bootstrap4forms || dmx.bootstrap5forms) {\r\n node.classList.remove('was-validated');\r\n }\r\n\r\n return;\r\n }\r\n\r\n node.dirty = false;\r\n\r\n if (dmx.bootstrap5forms) {\r\n if ((node.type == 'checkbox' || node.type == 'radio') && node.name) {\r\n dmx.validate.setBootstrap5Message(node, '');\r\n var nodes = dmx.array(node.form.querySelectorAll('[name=\"' + node.name + '\"]'));\r\n nodes.forEach(function(node) { node.classList.remove('is-valid', 'is-invalid'); });\r\n } else {\r\n node.classList.remove('is-valid', 'is-invalid');\r\n }\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, '');\r\n if ((node.type == 'checkbox' || node.type == 'radio') && node.name) {\r\n dmx.validate.setBootstrap5Message(node, '');\r\n var nodes = dmx.array(node.form.querySelectorAll('[name=\"' + node.name + '\"]'));\r\n nodes.forEach(function(node) { node.classList.remove('is-valid', 'is-invalid'); });\r\n } else {\r\n node.classList.remove('is-valid', 'is-invalid');\r\n }\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, '');\r\n node.closest('.form-group').remove('has-success', 'has-success', 'has-feedback');\r\n } else {\r\n dmx.validate.setErrorMessage(node, '');\r\n node.classList.remove('dmxValidator-valid', 'dmxValidator-invalid');\r\n }\r\n }\r\n\r\n function validity(node, rule, param) {\r\n var valid = true;\r\n\r\n if (dmx.rules[rule]) {\r\n valid = dmx.rules[rule].validity(node, param);\r\n if (!valid) setMessage(node, rule, param);\r\n } else {\r\n console.warn('Validation rule ' + rule + ' not found!');\r\n }\r\n\r\n if (valid) {\r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(node, '');\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, '');\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, '');\r\n } else {\r\n dmx.validate.setErrorMessage(node, '');\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n function setMessage(node, rule, param) {\r\n var message = node.getAttribute('data-msg-' + rule) || dmx.rules[rule].message;\r\n if (Array.isArray(param)) {\r\n message = message.replace(/\\{(\\d)\\}/g, function(match, i) {\r\n return param[i];\r\n });\r\n } else {\r\n message = message.replace(/\\{0\\}/g, param);\r\n }\r\n\r\n node.setCustomValidity(message);\r\n\r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(node, message);\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, message);\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, message);\r\n } else {\r\n dmx.validate.setErrorMessage(node, message);\r\n }\r\n }\r\n\r\n dmx.validate.setErrorMessage = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('span');\r\n err.id = id;\r\n err.className = 'dmxValidator-error';\r\n\r\n if (type == 'checkbox' || type == 'radio') {\r\n var group = node.closest('.checkbox-group, .radio-group');\r\n\r\n if (group) {\r\n group.insertAdjacentElement('afterend', err);\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n\r\n if (message) {\r\n node.classList.remove('dmxValidator-valid');\r\n node.classList.add('dmxValidator-invalid');\r\n } else {\r\n node.classList.remove('dmxValidator-invalid');\r\n node.classList.add('dmxValidator-valid');\r\n }\r\n }\r\n\r\n dmx.validate.setBootstrapMessage = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('span');\r\n err.id = id;\r\n err.className = 'help-block';\r\n\r\n if (type == 'checkbox' || type == 'radio') {\r\n var group = node.closest('.checkbox-group, .radio-group');\r\n\r\n if (group) {\r\n group.insertAdjacentElement('beforeend', err);\r\n } else {\r\n var elm = node.closest('.checkbox, .radio');\r\n if (elm) {\r\n elm.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n } else if (node.classList.contains('filestyle')) {\r\n node.nextSibling.insertAdjacentElement('afterend', err);\r\n } else if (node.parentElement.classList.contains('input-group')) {\r\n node.parentElement.insertAdjacentElement('afterend', err);\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n\r\n var formGroup = node.closest('.form-group');\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response' && formGroup) {\r\n var feedback = formGroup.querySelector('.form-control-feedback');\r\n\r\n if (type != 'checkbox' && type != 'radio') {\r\n formGroup.classList.add('has-feedback');\r\n\r\n if (!feedback) {\r\n feedback = document.createElement('span');\r\n feedback.className = 'glyphicon form-control-feedback';\r\n var elm = formGroup.querySelector('.input-group, .checkbox-group, input, select, textarea, button');\r\n elm.insertAdjacentElement('afterend', feedback);\r\n }\r\n }\r\n\r\n if (message) {\r\n formGroup.classList.remove('has-success');\r\n formGroup.classList.add('has-error');\r\n if (feedback) {\r\n feedback.classList.remove('glyphicon-ok');\r\n feedback.classList.add('glyphicon-remove');\r\n }\r\n } else {\r\n formGroup.classList.remove('has-error');\r\n if (feedback) feedback.classList.remove('glyphicon-remove');\r\n if (!(node.form && node.form.hasAttribute('data-novalid'))) {\r\n formGroup.classList.add('has-success');\r\n if (feedback) feedback.classList.add('glyphicon-ok');\r\n }\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n dmx.validate.setBootstrap4Message = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var name = node.getAttribute('name');\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (name || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('div');\r\n err.id = id;\r\n err.className = 'invalid-feedback';\r\n if ((type == 'checkbox' || type == 'radio') && name) {\r\n var nodes = node.form.querySelectorAll('[name=\"' + name + '\"]');\r\n nodes[nodes.length-1].parentElement.appendChild(err);\r\n } else {\r\n node.parentElement.appendChild(err);\r\n }\r\n }\r\n\r\n if (node.hasAttribute('medium-editor-textarea-id')) {\r\n node = document.getElementById(node.getAttribute('medium-editor-textarea-id'));\r\n }\r\n\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response') {\r\n if ((type == 'checkbox' || type == 'radio') && name) {\r\n var nodes = dmx.array(node.form.querySelectorAll('[name=\"' + name + '\"]'));\r\n if (message) {\r\n nodes.forEach(function(node) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n });\r\n } else {\r\n nodes.forEach(function(node) {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n });\r\n }\r\n } else {\r\n if (message) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n } else {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n }\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n dmx.validate.setBootstrap5Message = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var name = node.getAttribute('name');\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (name || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('div');\r\n err.id = id;\r\n err.className = 'invalid-feedback';\r\n if ((type == 'checkbox' || type == 'radio') && name) {\r\n var nodes = node.form.querySelectorAll('[name=\"' + name + '\"]');\r\n if (nodes.length) {\r\n node = nodes[nodes.length-1];\r\n }\r\n }\r\n node.parentElement.appendChild(err);\r\n }\r\n\r\n if (node.hasAttribute('medium-editor-textarea-id')) {\r\n node = document.getElementById(node.getAttribute('medium-editor-textarea-id'));\r\n }\r\n\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response') {\r\n if ((type == 'checkbox' || type == 'radio') && name) {\r\n var nodes = dmx.array(node.form.querySelectorAll('[name=\"' + name + '\"]'));\r\n if (message) {\r\n nodes.forEach(function(node) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n });\r\n } else {\r\n nodes.forEach(function(node) {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n });\r\n }\r\n } else {\r\n if (message) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n } else {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n }\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n})();\r\n","(function() {\r\n\r\nObject.assign(dmx.rules, {\r\n\r\n required: {\r\n message: 'This field is required.',\r\n validity: function(element) {\r\n if (element.type.toLowerCase() == 'checkbox' || element.type.toLowerCase() == 'radio') {\r\n //return element.checked;\r\n if (element.name) {\r\n return !!document.querySelector('[name=\"' + element.name + '\"]:checked');\r\n } else {\r\n return element.checked;\r\n }\r\n }\r\n\r\n if (element.hasAttribute('medium-editor-textarea-id')) {\r\n return !!(element.value && !/^\\s*]*>\\s*]*>\\s*<\\/p>\\s*$/.test(element.value))\r\n }\r\n\r\n return !!(element.value && element.value.length);\r\n }\r\n },\r\n\r\n email: {\r\n message: 'Please enter a valid email address.',\r\n validity: function(element) {\r\n return /^(?!\\.)((?!.*\\.{2})[a-zA-Z0-9\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFFu20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF\\.!#$%&'*+-/=?^_`{|}~\\-\\d]+)@(?!\\.)([a-zA-Z0-9\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFF\\u20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF\\-\\.\\d]+)((\\.([a-zA-Z\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFF\\u20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF]){2,63})+)$/i.test(element.value);\r\n }\r\n },\r\n\r\n url: {\r\n message: 'Please enter a valid URL.',\r\n validity: function(element) {\r\n return /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test(element.value);\r\n }\r\n },\r\n\r\n date: {\r\n message: 'Please enter a valid date.',\r\n validity: function(element) {\r\n return /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(element.value);\r\n }\r\n },\r\n\r\n time: {\r\n message: 'Please enter a valid time.',\r\n validity: function(element) {\r\n return /^([01][0-9]|2[0-4]):[0-5][0-9](:([0-5][0-9]|60))?$/.test(element.value);\r\n }\r\n },\r\n\r\n month: {\r\n message: 'Please enter a valid month.',\r\n validity: function(element) {\r\n return /^\\d{4}-(0[1-9]|1[012])$/.test(element.value);\r\n }\r\n },\r\n\r\n week: {\r\n message: 'Please enter a valid week.',\r\n validity: function(element) {\r\n return /^\\d{4}-W(0[1-9]|[1-4][0-9]|5[0-3])$/.test(element.value);\r\n }\r\n },\r\n\r\n color: {\r\n message: 'Please enter a color in the format #xxxxxx.',\r\n validity: function(element) {\r\n return /^#[a-fA-F0-9]{6}$/.test(element.value);\r\n }\r\n },\r\n\r\n number: {\r\n message: 'Please enter a valid number.',\r\n validity: function(element) {\r\n return /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(element.value);\r\n }\r\n },\r\n\r\n min: {\r\n message: 'Please enter a value greater than or equal to {0}.',\r\n validity: function(element, param) {\r\n return +element.value >= param;\r\n }\r\n },\r\n\r\n max: {\r\n message: 'Please enter a value less than or equal to {0}.',\r\n validity: function(element, param) {\r\n return +element.value <= param;\r\n }\r\n },\r\n\r\n pattern: {\r\n message: 'Invalid format.',\r\n validity: function(element, param) {\r\n if (!/^text|search|url|tel|email|password$/i.test(element.type)) {\r\n return true;\r\n }\r\n\r\n if (typeof param == 'string') {\r\n param = new RegExp('^(?:' + param + ')$');\r\n }\r\n\r\n return param.test(element.value);\r\n }\r\n },\r\n\r\n minlength: {\r\n message: 'Please enter at least {0} characters.',\r\n validity: function(element, param) {\r\n return element.value.length >= param;\r\n }\r\n },\r\n\r\n maxlength: {\r\n message: 'Please enter no more than {0} characters.',\r\n validity: function(element, param) {\r\n return element.value.length <= param;\r\n }\r\n },\r\n\r\n alphanumeric: {\r\n message: 'Letters, numbers, and underscores only please.',\r\n validity: function(element) {\r\n return /^\\w+$/i.test(element.value);\r\n }\r\n },\r\n\r\n lettersonly: {\r\n message: 'Letters only please.',\r\n validity: function(element) {\r\n return /^[a-z]+$/i.test(element.value);\r\n }\r\n },\r\n\r\n letterswithbasicpunc: {\r\n message: 'Letters or punctuation only please.',\r\n validity: function(element) {\r\n return /^[a-z\\-.,()'\"\\s]+$/i.test(element.value);\r\n }\r\n },\r\n\r\n nowhitespace: {\r\n message: 'No white space please.',\r\n validity: function(element) {\r\n return /^\\S+$/i.test(element.value);\r\n }\r\n },\r\n\r\n digits: {\r\n message: 'Please enter only digits.',\r\n validity: function(element) {\r\n return /^\\d+$/.test(element.value);\r\n }\r\n },\r\n\r\n creditcard: {\r\n message: 'Please enter a valid credit card number.',\r\n validity: function(element) {\r\n var value = element.value;\r\n\r\n // accept only spaces, digits and dashes\r\n if ( /[^0-9 \\-]+/.test( value ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar nCheck = 0,\r\n\t\t\t\tnDigit = 0,\r\n\t\t\t\tbEven = false,\r\n\t\t\t\tn, cDigit;\r\n\r\n\t\t\tvalue = value.replace( /\\D/g, \"\" );\r\n\r\n\t\t\t// Basing min and max length on\r\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\r\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\r\n\t\t\t\tcDigit = value.charAt( n );\r\n\t\t\t\tnDigit = parseInt( cDigit, 10 );\r\n\t\t\t\tif ( bEven ) {\r\n\t\t\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\r\n\t\t\t\t\t\tnDigit -= 9;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tnCheck += nDigit;\r\n\t\t\t\tbEven = !bEven;\r\n\t\t\t}\r\n\r\n\t\t\treturn ( nCheck % 10 ) === 0;\r\n }\r\n },\r\n\r\n bic: {\r\n message: 'Please specify a valid BIC code.',\r\n validity: function(element) {\r\n return /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(element.value);\r\n }\r\n },\r\n\r\n iban: {\r\n message: 'Please specify a valid IBAN.',\r\n validity: function(element) {\r\n // remove spaces and to upper case\r\n \tvar iban = element.value.replace(/ /g, \"\").toUpperCase(),\r\n \t\tibancheckdigits = \"\",\r\n \t\tleadingZeroes = true,\r\n \t\tcRest = \"\",\r\n \t\tcOperator = \"\",\r\n \t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\r\n\r\n \t// check the country code and find the country specific format\r\n \tcountrycode = iban.substring(0, 2);\r\n \tbbancountrypatterns = {\r\n \t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n \t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\r\n \t\t\"AT\": \"\\\\d{16}\",\r\n \t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\r\n \t\t\"BE\": \"\\\\d{12}\",\r\n \t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\r\n \t\t\"BA\": \"\\\\d{16}\",\r\n \t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\r\n \t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\r\n \t\t\"CR\": \"\\\\d{17}\",\r\n \t\t\"HR\": \"\\\\d{17}\",\r\n \t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n \t\t\"CZ\": \"\\\\d{20}\",\r\n \t\t\"DK\": \"\\\\d{14}\",\r\n \t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\r\n \t\t\"EE\": \"\\\\d{16}\",\r\n \t\t\"FO\": \"\\\\d{14}\",\r\n \t\t\"FI\": \"\\\\d{14}\",\r\n \t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n \t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\r\n \t\t\"DE\": \"\\\\d{18}\",\r\n \t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\r\n \t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\r\n \t\t\"GL\": \"\\\\d{14}\",\r\n \t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\r\n \t\t\"HU\": \"\\\\d{24}\",\r\n \t\t\"IS\": \"\\\\d{22}\",\r\n \t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\r\n \t\t\"IL\": \"\\\\d{19}\",\r\n \t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n \t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n \t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\r\n \t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\r\n \t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\r\n \t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n \t\t\"LT\": \"\\\\d{16}\",\r\n \t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n \t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\r\n \t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\r\n \t\t\"MR\": \"\\\\d{23}\",\r\n \t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\r\n \t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n \t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\r\n \t\t\"ME\": \"\\\\d{18}\",\r\n \t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\r\n \t\t\"NO\": \"\\\\d{11}\",\r\n \t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\r\n \t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\r\n \t\t\"PL\": \"\\\\d{24}\",\r\n \t\t\"PT\": \"\\\\d{21}\",\r\n \t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\r\n \t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n \t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\r\n \t\t\"RS\": \"\\\\d{18}\",\r\n \t\t\"SK\": \"\\\\d{20}\",\r\n \t\t\"SI\": \"\\\\d{15}\",\r\n \t\t\"ES\": \"\\\\d{20}\",\r\n \t\t\"SE\": \"\\\\d{20}\",\r\n \t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n \t\t\"TN\": \"\\\\d{20}\",\r\n \t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\r\n \t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\r\n \t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\r\n \t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\r\n \t};\r\n\r\n \tbbanpattern = bbancountrypatterns[countrycode];\r\n \t// As new countries will start using IBAN in the\r\n \t// future, we only check if the countrycode is known.\r\n \t// This prevents false negatives, while almost all\r\n \t// false positives introduced by this, will be caught\r\n \t// by the checksum validation below anyway.\r\n \t// Strict checking should return FALSE for unknown\r\n \t// countries.\r\n \tif (typeof bbanpattern !== \"undefined\") {\r\n \t\tibanregexp = new RegExp(\"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\");\r\n \t\tif (!(ibanregexp.test(iban))) {\r\n \t\t\treturn false; // invalid country specific format\r\n \t\t}\r\n \t}\r\n\r\n \t// now check the checksum, first convert to digits\r\n \tibancheck = iban.substring(4, iban.length) + iban.substring(0, 4);\r\n \tfor (i = 0; i < ibancheck.length; i++) {\r\n \t\tcharAt = ibancheck.charAt(i);\r\n \t\tif (charAt !== \"0\") {\r\n \t\t\tleadingZeroes = false;\r\n \t\t}\r\n \t\tif (!leadingZeroes) {\r\n \t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf(charAt);\r\n \t\t}\r\n \t}\r\n\r\n \t// calculate the result of: ibancheckdigits % 97\r\n \tfor (p = 0; p < ibancheckdigits.length; p++) {\r\n \t\tcChar = ibancheckdigits.charAt(p);\r\n \t\tcOperator = \"\" + cRest + \"\" + cChar;\r\n \t\tcRest = cOperator % 97;\r\n \t}\r\n \treturn cRest === 1;\r\n }\r\n },\r\n\r\n vat: {\r\n message: 'Please specify a valid VAT Number.',\r\n validity: function(element) {\r\n return /^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$/.test(element.value);\r\n }\r\n },\r\n\r\n integer: {\r\n message: 'A positive or negative non-decimal number please.',\r\n validity: function(element) {\r\n return /^-?\\d+$/.test(element.value);\r\n }\r\n },\r\n\r\n ipv4: {\r\n message: 'Please enter a valid IP v4 address.',\r\n validity: function(element) {\r\n return /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test(element.value);\r\n }\r\n },\r\n\r\n ipv6: {\r\n message: 'Please enter a valid IP v6 address.',\r\n validity: function(element) {\r\n return /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(element.value);\r\n }\r\n },\r\n\r\n minitems: {\r\n message: 'Please select at least {0} items.',\r\n validity: function(element, param) {\r\n return getCount(element) >= param;\r\n }\r\n },\r\n\r\n maxitems: {\r\n message: 'Please select no more tham {0} items.',\r\n validity: function(element, param) {\r\n return getCount(element) <= param;\r\n }\r\n },\r\n\r\n equalto: {\r\n message: 'Please enter the same value again.',\r\n validity: function(element, param) {\r\n if (param[0] != '#') param = '[name=\"' + param + '\"]';\r\n var target = element.form.querySelector(param);\r\n if (!target) {\r\n console.warn('Target element ' + param + ' for equalTo rule not found.');\r\n return true;\r\n }\r\n return element.value == target.value;\r\n }\r\n },\r\n\r\n notequalto: {\r\n message: 'Please enter a different value, values must not be the same.',\r\n validity: function(element, param) {\r\n if (param[0] != '#') param = '[name=\"' + param + '\"]';\r\n var target = element.form.querySelector(param);\r\n if (!target) {\r\n console.warn('Target element ' + param + ' for equalTo rule not found.');\r\n return true;\r\n }\r\n return element.value != target.value;\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction getCount(element) {\r\n if (element.nodeName == 'SELECT') {\r\n return dmx.array(element.options).reduce(function(n, opt) {\r\n return n + opt.selected;\r\n }, 0);\r\n }\r\n\r\n if (element.type.toLowerCase() == 'checkbox') {\r\n return dmx.array(element.form.elements).reduce(function(n, elm) {\r\n return n + (elm.name == element.name && elm.checked);\r\n }, 0);\r\n }\r\n\r\n return 1;\r\n}\r\n\r\n})();\r\n","(function() {\r\n\r\nObject.assign(dmx.rules, {\r\n\r\n accept: {\r\n message: 'This file type is not allowed for upload.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n var allowed = param.replace(/\\s/g, '').split(',');\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n var file = element.files[i], ok = false;\r\n\r\n for (var j = 0; j < allowed.length; j++) {\r\n var check = allowed[j];\r\n\r\n if (check.charAt(0) == '.') {\r\n if (file.name.match(new RegExp('\\\\' + check + '$', 'i'))) {\r\n ok = true;\r\n break;\r\n }\r\n } else if (/(audio|video|image)\\/\\*/i.test(check)) {\r\n if (file.type.match(new RegExp('^' + check.replace(/\\*/g, '.*') + '$', 'i'))) {\r\n ok = true;\r\n break;\r\n }\r\n } else {\r\n if (file.type.toLowerCase() == check.toLowerCase()) {\r\n ok = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!ok) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n minsize: {\r\n message: 'Please select a file of at least {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n if (element.files[i].size < param) return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxsize: {\r\n message: 'Please select a file of no more than {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n if (element.files[i].size > param) return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n mintotalsize: {\r\n message: 'Total size of selected files should be at least {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n var size = 0;\r\n for (var i = 0; i < element.files.length; i++) {\r\n size += element.files[i].size;\r\n }\r\n if (size < param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxtotalsize: {\r\n message: 'Total size of selected files should be no more than {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n var size = 0;\r\n for (var i = 0; i < element.files.length; i++) {\r\n size += element.files[i].size;\r\n }\r\n if (size > param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n minfiles: {\r\n message: 'Please select at least {0} files.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n if (element.files.length < param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxfiles: {\r\n message: 'Please select no more than {0} files.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n if (element.files.length > param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n});\r\n\r\n})();\r\n"]}