{"version":3,"file":"validate.js","names":["defineDs","exports","module","define","validate","attributes","constraints","options","v","extend","results","runValidations","attr","validator","isPromise","Error","processValidationResults","obj","slice","call","arguments","forEach","source","version","major","minor","patch","metadata","toString","format","isEmpty","Promise","EMPTY_STRING_REGEXP","validatorName","value","validators","validatorOptions","error","isDomElement","isJqueryElement","collectFormValues","getDeepObjectValue","result","name","push","attribute","globalOptions","errors","pruneEmptyErrors","expandMultipleErrors","convertErrorMessages","formatters","undefined","async","WrapErrors","wrapErrors","cleanAttributes","resolve","reject","waitForResults","then","err","single","fullMessages","reduce","memo","r","args","apply","isNumber","isNaN","isFunction","isInteger","isBoolean","isObject","Object","isDate","Date","isDefined","p","o","isString","jquery","querySelectorAll","querySelector","document","HTMLElement","nodeType","nodeName","test","isArray","length","str","vals","replace","FORMAT_REGEXP","m0","m1","m2","String","prettify","parseFloat","Math","round","toFixed","map","s","join","toLowerCase","stringifyValue","isHash","contains","indexOf","unique","array","filter","el","index","forEachKeyInKeypath","object","keypath","callback","key","i","escape","form","values","j","input","inputs","option","item","getAttribute","sanitizeFormValue","type","checked","multiple","selected","selectedIndex","trim","nullify","capitalize","toUpperCase","ret","msg","errorInfo","groupErrorsByAttribute","list","flattenErrorsToArray","self","whitelist","whitelistCreator","last","buildObjectWhitelist","ow","lastObject","cleanRecursive","w","exposeModule","root","amd","warn","console","presence","allowEmpty","message","is","maximum","minimum","tokenizer","val","notValid","wrongLength","count","tooShort","tooLong","numericality","checks","greaterThan","c","greaterThanOrEqualTo","equalTo","lessThan","lessThanOrEqualTo","divisibleBy","strict","pattern","onlyInteger","RegExp","noStrings","notInteger","odd","notOdd","even","notEven","datetime","parse","earliest","NaN","latest","dateOnly","tooEarly","date","tooLate","match","flags","exec","inclusion","within","exclusion","email","PATTERN","equality","otherValue","comparator","v1","v2","url","schemes","allowLocal","regex","tld","detailed","flat","grouped","constraint","sort"],"sources":["Common/Framework/ScriptLibraries/Scripts/validate.js"],"sourcesContent":["/* eslint-disable */\r\n /*!\r\n\t* validate.js 0.11.1\r\n\t*\r\n\t* (c) 2013-2016 Nicklas Ansman, 2013 Wrapp\r\n\t* Validate.js may be freely distributed under the MIT license.\r\n\t* For all details and documentation:\r\n\t* http://validatejs.org/\r\n\t*/\r\n\r\n defineDs('Common/Framework/ScriptLibraries/Scripts/validate', [\r\n ], function () {\r\n\r\n (function (exports, module, define) {\r\n \t\"use strict\";\r\n\r\n \t// The main function that calls the validators specified by the constraints.\r\n \t// The options are the following:\r\n \t// - format (string) - An option that controls how the returned value is formatted\r\n \t// * flat - Returns a flat array of just the error messages\r\n \t// * grouped - Returns the messages grouped by attribute (default)\r\n \t// * detailed - Returns an array of the raw validation data\r\n \t// - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\r\n \t//\r\n \t// Please note that the options are also passed to each validator.\r\n \tvar validate = function (attributes, constraints, options) {\r\n \t\toptions = v.extend({}, v.options, options);\r\n\r\n \t\tvar results = v.runValidations(attributes, constraints, options)\r\n , attr\r\n , validator;\r\n\r\n \t\tfor (attr in results) {\r\n \t\t\tfor (validator in results[attr]) {\r\n \t\t\t\tif (v.isPromise(results[attr][validator])) {\r\n \t\t\t\t\tthrow new Error(\"Use validate.async if you want support for promises\");\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn validate.processValidationResults(results, options);\r\n \t};\r\n\r\n \tvar v = validate;\r\n\r\n \t// Copies over attributes from one or more sources to a single destination.\r\n \t// Very much similar to underscore's extend.\r\n \t// The first argument is the target object and the remaining arguments will be\r\n \t// used as sources.\r\n \tv.extend = function (obj) {\r\n \t\t[].slice.call(arguments, 1).forEach(function (source) {\r\n \t\t\tfor (var attr in source) {\r\n \t\t\t\tobj[attr] = source[attr];\r\n \t\t\t}\r\n \t\t});\r\n \t\treturn obj;\r\n \t};\r\n\r\n \tv.extend(validate, {\r\n \t\t// This is the version of the library as a semver.\r\n \t\t// The toString function will allow it to be coerced into a string\r\n \t\tversion: {\r\n \t\t\tmajor: 0,\r\n \t\t\tminor: 11,\r\n \t\t\tpatch: 1,\r\n \t\t\tmetadata: null,\r\n \t\t\ttoString: function () {\r\n \t\t\t\tvar version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\r\n \t\t\t\tif (!v.isEmpty(v.version.metadata)) {\r\n \t\t\t\t\tversion += \"+\" + v.version.metadata;\r\n \t\t\t\t}\r\n \t\t\t\treturn version;\r\n \t\t\t}\r\n \t\t},\r\n\r\n \t\t// Below is the dependencies that are used in validate.js\r\n\r\n \t\t// The constructor of the Promise implementation.\r\n \t\t// If you are using Q.js, RSVP or any other A+ compatible implementation\r\n \t\t// override this attribute to be the constructor of that promise.\r\n \t\t// Since jQuery promises aren't A+ compatible they won't work.\r\n \t\tPromise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\r\n\r\n \t\tEMPTY_STRING_REGEXP: /^\\s*$/,\r\n\r\n \t\t// Runs the validators specified by the constraints object.\r\n \t\t// Will return an array of the format:\r\n \t\t// [{attribute: \"\", error: \"\"}, ...]\r\n \t\trunValidations: function (attributes, constraints, options) {\r\n \t\t\tvar results = []\r\n , attr\r\n , validatorName\r\n , value\r\n , validators\r\n , validator\r\n , validatorOptions\r\n , error;\r\n\r\n \t\t\tif (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\r\n \t\t\t\tattributes = v.collectFormValues(attributes);\r\n \t\t\t}\r\n\r\n \t\t\t// Loops through each constraints, finds the correct validator and run it.\r\n \t\t\tfor (attr in constraints) {\r\n \t\t\t\tvalue = v.getDeepObjectValue(attributes, attr);\r\n \t\t\t\t// This allows the constraints for an attribute to be a function.\r\n \t\t\t\t// The function will be called with the value, attribute name, the complete dict of\r\n \t\t\t\t// attributes as well as the options and constraints passed in.\r\n \t\t\t\t// This is useful when you want to have different\r\n \t\t\t\t// validations depending on the attribute value.\r\n \t\t\t\tvalidators = v.result(constraints[attr], value, attributes, attr, options, constraints);\r\n\r\n \t\t\t\tfor (validatorName in validators) {\r\n \t\t\t\t\tvalidator = v.validators[validatorName];\r\n\r\n \t\t\t\t\tif (!validator) {\r\n \t\t\t\t\t\terror = v.format(\"Unknown validator %{name}\", { name: validatorName });\r\n \t\t\t\t\t\tthrow new Error(error);\r\n \t\t\t\t\t}\r\n\r\n \t\t\t\t\tvalidatorOptions = validators[validatorName];\r\n \t\t\t\t\t// This allows the options to be a function. The function will be\r\n \t\t\t\t\t// called with the value, attribute name, the complete dict of\r\n \t\t\t\t\t// attributes as well as the options and constraints passed in.\r\n \t\t\t\t\t// This is useful when you want to have different\r\n \t\t\t\t\t// validations depending on the attribute value.\r\n \t\t\t\t\tvalidatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\r\n \t\t\t\t\tif (!validatorOptions) {\r\n \t\t\t\t\t\tcontinue;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tresults.push({\r\n \t\t\t\t\t\tattribute: attr,\r\n \t\t\t\t\t\tvalue: value,\r\n \t\t\t\t\t\tvalidator: validatorName,\r\n \t\t\t\t\t\tglobalOptions: options,\r\n \t\t\t\t\t\tattributes: attributes,\r\n \t\t\t\t\t\toptions: validatorOptions,\r\n \t\t\t\t\t\terror: validator.call(validator,\r\n value,\r\n validatorOptions,\r\n attr,\r\n attributes,\r\n options)\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\treturn results;\r\n \t\t},\r\n\r\n \t\t// Takes the output from runValidations and converts it to the correct\r\n \t\t// output format.\r\n \t\tprocessValidationResults: function (errors, options) {\r\n \t\t\terrors = v.pruneEmptyErrors(errors, options);\r\n \t\t\terrors = v.expandMultipleErrors(errors, options);\r\n \t\t\terrors = v.convertErrorMessages(errors, options);\r\n\r\n \t\t\tvar format = options.format || \"grouped\";\r\n\r\n \t\t\tif (typeof v.formatters[format] === 'function') {\r\n \t\t\t\terrors = v.formatters[format](errors);\r\n \t\t\t} else {\r\n \t\t\t\tthrow new Error(v.format(\"Unknown format %{format}\", options));\r\n \t\t\t}\r\n\r\n \t\t\treturn v.isEmpty(errors) ? undefined : errors;\r\n \t\t},\r\n\r\n \t\t// Runs the validations with support for promises.\r\n \t\t// This function will return a promise that is settled when all the\r\n \t\t// validation promises have been completed.\r\n \t\t// It can be called even if no validations returned a promise.\r\n \t\tasync: function (attributes, constraints, options) {\r\n \t\t\toptions = v.extend({}, v.async.options, options);\r\n\r\n \t\t\tvar WrapErrors = options.wrapErrors || function (errors) {\r\n \t\t\t\treturn errors;\r\n \t\t\t};\r\n\r\n \t\t\t// Removes unknown attributes\r\n \t\t\tif (options.cleanAttributes !== false) {\r\n \t\t\t\tattributes = v.cleanAttributes(attributes, constraints);\r\n \t\t\t}\r\n\r\n \t\t\tvar results = v.runValidations(attributes, constraints, options);\r\n\r\n \t\t\treturn new v.Promise(function (resolve, reject) {\r\n \t\t\t\tv.waitForResults(results).then(function () {\r\n \t\t\t\t\tvar errors = v.processValidationResults(results, options);\r\n \t\t\t\t\tif (errors) {\r\n \t\t\t\t\t\treject(new WrapErrors(errors, options, attributes, constraints));\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\tresolve(attributes);\r\n \t\t\t\t\t}\r\n \t\t\t\t}, function (err) {\r\n \t\t\t\t\treject(err);\r\n \t\t\t\t});\r\n \t\t\t});\r\n \t\t},\r\n\r\n \t\tsingle: function (value, constraints, options) {\r\n \t\t\toptions = v.extend({}, v.single.options, options, {\r\n \t\t\t\tformat: \"flat\",\r\n \t\t\t\tfullMessages: false\r\n \t\t\t});\r\n \t\t\treturn v({ single: value }, { single: constraints }, options);\r\n \t\t},\r\n\r\n \t\t// Returns a promise that is resolved when all promises in the results array\r\n \t\t// are settled. The promise returned from this function is always resolved,\r\n \t\t// never rejected.\r\n \t\t// This function modifies the input argument, it replaces the promises\r\n \t\t// with the value returned from the promise.\r\n \t\twaitForResults: function (results) {\r\n \t\t\t// Create a sequence of all the results starting with a resolved promise.\r\n \t\t\treturn results.reduce(function (memo, result) {\r\n \t\t\t\t// If this result isn't a promise skip it in the sequence.\r\n \t\t\t\tif (!v.isPromise(result.error)) {\r\n \t\t\t\t\treturn memo;\r\n \t\t\t\t}\r\n\r\n \t\t\t\treturn memo.then(function () {\r\n \t\t\t\t\treturn result.error.then(function (error) {\r\n \t\t\t\t\t\tresult.error = error || null;\r\n \t\t\t\t\t});\r\n \t\t\t\t});\r\n \t\t\t}, new v.Promise(function (r) { r(); })); // A resolved promise\r\n \t\t},\r\n\r\n \t\t// If the given argument is a call: function the and: function return the value\r\n \t\t// otherwise just return the value. Additional arguments will be passed as\r\n \t\t// arguments to the function.\r\n \t\t// Example:\r\n \t\t// ```\r\n \t\t// result('foo') // 'foo'\r\n \t\t// result(Math.max, 1, 2) // 2\r\n \t\t// ```\r\n \t\tresult: function (value) {\r\n \t\t\tvar args = [].slice.call(arguments, 1);\r\n \t\t\tif (typeof value === 'function') {\r\n \t\t\t\tvalue = value.apply(null, args);\r\n \t\t\t}\r\n \t\t\treturn value;\r\n \t\t},\r\n\r\n \t\t// Checks if the value is a number. This function does not consider NaN a\r\n \t\t// number like many other `isNumber` functions do.\r\n \t\tisNumber: function (value) {\r\n \t\t\treturn typeof value === 'number' && !isNaN(value);\r\n \t\t},\r\n\r\n \t\t// Returns false if the object is not a function\r\n \t\tisFunction: function (value) {\r\n \t\t\treturn typeof value === 'function';\r\n \t\t},\r\n\r\n \t\t// A simple check to verify that the value is an integer. Uses `isNumber`\r\n \t\t// and a simple modulo check.\r\n \t\tisInteger: function (value) {\r\n \t\t\treturn v.isNumber(value) && value % 1 === 0;\r\n \t\t},\r\n\r\n \t\t// Checks if the value is a boolean\r\n \t\tisBoolean: function (value) {\r\n \t\t\treturn typeof value === 'boolean';\r\n \t\t},\r\n\r\n \t\t// Uses the `Object` function to check if the given argument is an object.\r\n \t\tisObject: function (obj) {\r\n \t\t\treturn obj === Object(obj);\r\n \t\t},\r\n\r\n \t\t// Simply checks if the object is an instance of a date\r\n \t\tisDate: function (obj) {\r\n \t\t\treturn obj instanceof Date;\r\n \t\t},\r\n\r\n \t\t// Returns false if the object is `null` of `undefined`\r\n \t\tisDefined: function (obj) {\r\n \t\t\treturn obj !== null && obj !== undefined;\r\n \t\t},\r\n\r\n \t\t// Checks if the given argument is a promise. Anything with a `then`\r\n \t\t// function is considered a promise.\r\n \t\tisPromise: function (p) {\r\n \t\t\treturn !!p && v.isFunction(p.then);\r\n \t\t},\r\n\r\n \t\tisJqueryElement: function (o) {\r\n \t\t\treturn o && v.isString(o.jquery);\r\n \t\t},\r\n\r\n \t\tisDomElement: function (o) {\r\n \t\t\tif (!o) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\tif (!o.querySelectorAll || !o.querySelector) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isObject(document) && o === document) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n\r\n \t\t\t// http://stackoverflow.com/a/384380/699304\r\n \t\t\t/* istanbul ignore else */\r\n \t\t\tif (typeof HTMLElement === \"object\") {\r\n \t\t\t\treturn o instanceof HTMLElement;\r\n \t\t\t} else {\r\n \t\t\t\treturn o &&\r\n typeof o === \"object\" &&\r\n o !== null &&\r\n o.nodeType === 1 &&\r\n typeof o.nodeName === \"string\";\r\n \t\t\t}\r\n \t\t},\r\n\r\n \t\tisEmpty: function (value) {\r\n \t\t\tvar attr;\r\n\r\n \t\t\t// Null and undefined are empty\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n\r\n \t\t\t// functions are non empty\r\n \t\t\tif (v.isFunction(value)) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\t// Whitespace only strings are empty\r\n \t\t\tif (v.isString(value)) {\r\n \t\t\t\treturn v.EMPTY_STRING_REGEXP.test(value);\r\n \t\t\t}\r\n\r\n \t\t\t// For arrays we use the length property\r\n \t\t\tif (v.isArray(value)) {\r\n \t\t\t\treturn value.length === 0;\r\n \t\t\t}\r\n\r\n \t\t\t// Dates have no attributes but aren't empty\r\n \t\t\tif (v.isDate(value)) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\t// If we find at least one property we consider it non empty\r\n \t\t\tif (v.isObject(value)) {\r\n \t\t\t\tfor (attr in value) {\r\n \t\t\t\t\treturn false;\r\n \t\t\t\t}\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n\r\n \t\t\treturn false;\r\n \t\t},\r\n\r\n \t\t// Formats the specified strings with the given values like so:\r\n \t\t// ```\r\n \t\t// format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\r\n \t\t// ```\r\n \t\t// If you want to write %{...} without having it replaced simply\r\n \t\t// prefix it with % like this `Foo: %%{foo}` and it will be returned\r\n \t\t// as `\"Foo: %{foo}\"`\r\n \t\tformat: v.extend(function (str, vals) {\r\n \t\t\tif (!v.isString(str)) {\r\n \t\t\t\treturn str;\r\n \t\t\t}\r\n \t\t\treturn str.replace(v.format.FORMAT_REGEXP, function (m0, m1, m2) {\r\n \t\t\t\tif (m1 === '%') {\r\n \t\t\t\t\treturn \"%{\" + m2 + \"}\";\r\n \t\t\t\t} else {\r\n \t\t\t\t\treturn String(vals[m2]);\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t}, {\r\n \t\t\t// Finds %{key} style patterns in the given string\r\n \t\t\tFORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\r\n \t\t}),\r\n\r\n \t\t// \"Prettifies\" the given string.\r\n \t\t// Prettifying means replacing [.\\_-] with spaces as well as splitting\r\n \t\t// camel case words.\r\n \t\tprettify: function (str) {\r\n \t\t\tif (v.isNumber(str)) {\r\n \t\t\t\t// If there are more than 2 decimals round it to two\r\n \t\t\t\tif ((str * 100) % 1 === 0) {\r\n \t\t\t\t\treturn \"\" + str;\r\n \t\t\t\t} else {\r\n \t\t\t\t\treturn parseFloat(Math.round(str * 100) / 100).toFixed(2);\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isArray(str)) {\r\n \t\t\t\treturn str.map(function (s) { return v.prettify(s); }).join(\", \");\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isObject(str)) {\r\n \t\t\t\treturn str.toString();\r\n \t\t\t}\r\n\r\n \t\t\t// Ensure the string is actually a string\r\n \t\t\tstr = \"\" + str;\r\n\r\n \t\t\treturn str\r\n // Splits keys separated by periods\r\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\r\n // Removes backslashes\r\n .replace(/\\\\+/g, '')\r\n // Replaces - and - with space\r\n .replace(/[_-]/g, ' ')\r\n // Splits camel cased words\r\n .replace(/([a-z])([A-Z])/g, function (m0, m1, m2) {\r\n \treturn \"\" + m1 + \" \" + m2.toLowerCase();\r\n })\r\n .toLowerCase();\r\n \t\t},\r\n\r\n \t\tstringifyValue: function (value) {\r\n \t\t\treturn v.prettify(value);\r\n \t\t},\r\n\r\n \t\tisString: function (value) {\r\n \t\t\treturn typeof value === 'string';\r\n \t\t},\r\n\r\n \t\tisArray: function (value) {\r\n \t\t\treturn {}.toString.call(value) === '[object Array]';\r\n \t\t},\r\n\r\n \t\t// Checks if the object is a hash, which is equivalent to an object that\r\n \t\t// is neither an array nor a function.\r\n \t\tisHash: function (value) {\r\n \t\t\treturn v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\r\n \t\t},\r\n\r\n \t\tcontains: function (obj, value) {\r\n \t\t\tif (!v.isDefined(obj)) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t\tif (v.isArray(obj)) {\r\n \t\t\t\treturn obj.indexOf(value) !== -1;\r\n \t\t\t}\r\n \t\t\treturn value in obj;\r\n \t\t},\r\n\r\n \t\tunique: function (array) {\r\n \t\t\tif (!v.isArray(array)) {\r\n \t\t\t\treturn array;\r\n \t\t\t}\r\n \t\t\treturn array.filter(function (el, index, array) {\r\n \t\t\t\treturn array.indexOf(el) == index;\r\n \t\t\t});\r\n \t\t},\r\n\r\n \t\tforEachKeyInKeypath: function (object, keypath, callback) {\r\n \t\t\tif (!v.isString(keypath)) {\r\n \t\t\t\treturn undefined;\r\n \t\t\t}\r\n\r\n \t\t\tvar key = \"\"\r\n , i\r\n , escape = false;\r\n\r\n \t\t\tfor (i = 0; i < keypath.length; ++i) {\r\n \t\t\t\tswitch (keypath[i]) {\r\n \t\t\t\t\tcase '.':\r\n \t\t\t\t\t\tif (escape) {\r\n \t\t\t\t\t\t\tescape = false;\r\n \t\t\t\t\t\t\tkey += '.';\r\n \t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\tobject = callback(object, key, false);\r\n \t\t\t\t\t\t\tkey = \"\";\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tbreak;\r\n\r\n \t\t\t\t\tcase '\\\\':\r\n \t\t\t\t\t\tif (escape) {\r\n \t\t\t\t\t\t\tescape = false;\r\n \t\t\t\t\t\t\tkey += '\\\\';\r\n \t\t\t\t\t\t} else {\r\n \t\t\t\t\t\t\tescape = true;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t\tbreak;\r\n\r\n \t\t\t\t\tdefault:\r\n \t\t\t\t\t\tescape = false;\r\n \t\t\t\t\t\tkey += keypath[i];\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\treturn callback(object, key, true);\r\n \t\t},\r\n\r\n \t\tgetDeepObjectValue: function (obj, keypath) {\r\n \t\t\tif (!v.isObject(obj)) {\r\n \t\t\t\treturn undefined;\r\n \t\t\t}\r\n\r\n \t\t\treturn v.forEachKeyInKeypath(obj, keypath, function (obj, key) {\r\n \t\t\t\tif (v.isObject(obj)) {\r\n \t\t\t\t\treturn obj[key];\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t},\r\n\r\n \t\t// This returns an object with all the values of the form.\r\n \t\t// It uses the input name as key and the value as value\r\n \t\t// So for example this:\r\n \t\t// \r\n \t\t// would return:\r\n \t\t// {email: \"foo@bar.com\"}\r\n \t\tcollectFormValues: function (form, options) {\r\n \t\t\tvar values = {}\r\n , i\r\n , j\r\n , input\r\n , inputs\r\n , option\r\n , value;\r\n\r\n \t\t\tif (v.isJqueryElement(form)) {\r\n \t\t\t\tform = form[0];\r\n \t\t\t}\r\n\r\n \t\t\tif (!form) {\r\n \t\t\t\treturn values;\r\n \t\t\t}\r\n\r\n \t\t\toptions = options || {};\r\n\r\n \t\t\tinputs = form.querySelectorAll(\"input[name], textarea[name]\");\r\n \t\t\tfor (i = 0; i < inputs.length; ++i) {\r\n \t\t\t\tinput = inputs.item(i);\r\n\r\n \t\t\t\tif (v.isDefined(input.getAttribute(\"data-ignored\"))) {\r\n \t\t\t\t\tcontinue;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tvalue = v.sanitizeFormValue(input.value, options);\r\n \t\t\t\tif (input.type === \"number\") {\r\n \t\t\t\t\tvalue = value ? +value : null;\r\n \t\t\t\t} else if (input.type === \"checkbox\") {\r\n \t\t\t\t\tif (input.attributes.value) {\r\n \t\t\t\t\t\tif (!input.checked) {\r\n \t\t\t\t\t\t\tvalue = values[input.name] || null;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\tvalue = input.checked;\r\n \t\t\t\t\t}\r\n \t\t\t\t} else if (input.type === \"radio\") {\r\n \t\t\t\t\tif (!input.checked) {\r\n \t\t\t\t\t\tvalue = values[input.name] || null;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\tvalues[input.name] = value;\r\n \t\t\t}\r\n\r\n \t\t\tinputs = form.querySelectorAll(\"select[name]\");\r\n \t\t\tfor (i = 0; i < inputs.length; ++i) {\r\n \t\t\t\tinput = inputs.item(i);\r\n \t\t\t\tif (input.multiple) {\r\n \t\t\t\t\tvalue = [];\r\n \t\t\t\t\tfor (j in input.options) {\r\n \t\t\t\t\t\toption = input.options[j];\r\n \t\t\t\t\t\tif (option.selected) {\r\n \t\t\t\t\t\t\tvalue.push(v.sanitizeFormValue(option.value, options));\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t} else {\r\n \t\t\t\t\tvalue = v.sanitizeFormValue(input.options[input.selectedIndex].value, options);\r\n \t\t\t\t}\r\n \t\t\t\tvalues[input.name] = value;\r\n \t\t\t}\r\n\r\n \t\t\treturn values;\r\n \t\t},\r\n\r\n \t\tsanitizeFormValue: function (value, options) {\r\n \t\t\tif (options.trim && v.isString(value)) {\r\n \t\t\t\tvalue = value.trim();\r\n \t\t\t}\r\n\r\n \t\t\tif (options.nullify !== false && value === \"\") {\r\n \t\t\t\treturn null;\r\n \t\t\t}\r\n \t\t\treturn value;\r\n \t\t},\r\n\r\n \t\tcapitalize: function (str) {\r\n \t\t\tif (!v.isString(str)) {\r\n \t\t\t\treturn str;\r\n \t\t\t}\r\n \t\t\treturn str[0].toUpperCase() + str.slice(1);\r\n \t\t},\r\n\r\n \t\t// Remove all errors who's error attribute is empty (null or undefined)\r\n \t\tpruneEmptyErrors: function (errors) {\r\n \t\t\treturn errors.filter(function (error) {\r\n \t\t\t\treturn !v.isEmpty(error.error);\r\n \t\t\t});\r\n \t\t},\r\n\r\n \t\t// In\r\n \t\t// [{error: [\"err1\", \"err2\"], ...}]\r\n \t\t// Out\r\n \t\t// [{error: \"err1\", ...}, {error: \"err2\", ...}]\r\n \t\t//\r\n \t\t// All attributes in an error with multiple messages are duplicated\r\n \t\t// when expanding the errors.\r\n \t\texpandMultipleErrors: function (errors) {\r\n \t\t\tvar ret = [];\r\n \t\t\terrors.forEach(function (error) {\r\n \t\t\t\t// Removes errors without a message\r\n \t\t\t\tif (v.isArray(error.error)) {\r\n \t\t\t\t\terror.error.forEach(function (msg) {\r\n \t\t\t\t\t\tret.push(v.extend({}, error, { error: msg }));\r\n \t\t\t\t\t});\r\n \t\t\t\t} else {\r\n \t\t\t\t\tret.push(error);\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t\treturn ret;\r\n \t\t},\r\n\r\n \t\t// Converts the error mesages by prepending the attribute name unless the\r\n \t\t// message is prefixed by ^\r\n \t\tconvertErrorMessages: function (errors, options) {\r\n \t\t\toptions = options || {};\r\n\r\n \t\t\tvar ret = [];\r\n \t\t\terrors.forEach(function (errorInfo) {\r\n \t\t\t\tvar error = v.result(errorInfo.error,\r\n errorInfo.value,\r\n errorInfo.attribute,\r\n errorInfo.options,\r\n errorInfo.attributes,\r\n errorInfo.globalOptions);\r\n\r\n \t\t\t\tif (!v.isString(error)) {\r\n \t\t\t\t\tret.push(errorInfo);\r\n \t\t\t\t\treturn;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tif (error[0] === '^') {\r\n \t\t\t\t\terror = error.slice(1);\r\n \t\t\t\t} else if (options.fullMessages !== false) {\r\n \t\t\t\t\terror = v.capitalize(v.prettify(errorInfo.attribute)) + \" \" + error;\r\n \t\t\t\t}\r\n \t\t\t\terror = error.replace(/\\\\\\^/g, \"^\");\r\n \t\t\t\terror = v.format(error, { value: v.stringifyValue(errorInfo.value) });\r\n \t\t\t\tret.push(v.extend({}, errorInfo, { error: error }));\r\n \t\t\t});\r\n \t\t\treturn ret;\r\n \t\t},\r\n\r\n \t\t// In:\r\n \t\t// [{attribute: \"\", ...}]\r\n \t\t// Out:\r\n \t\t// {\"\": [{attribute: \"\", ...}]}\r\n \t\tgroupErrorsByAttribute: function (errors) {\r\n \t\t\tvar ret = {};\r\n \t\t\terrors.forEach(function (error) {\r\n \t\t\t\tvar list = ret[error.attribute];\r\n \t\t\t\tif (list) {\r\n \t\t\t\t\tlist.push(error);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tret[error.attribute] = [error];\r\n \t\t\t\t}\r\n \t\t\t});\r\n \t\t\treturn ret;\r\n \t\t},\r\n\r\n \t\t// In:\r\n \t\t// [{error: \"\", ...}, {error: \"\", ...}]\r\n \t\t// Out:\r\n \t\t// [\"\", \"\"]\r\n \t\tflattenErrorsToArray: function (errors) {\r\n \t\t\treturn errors\r\n .map(function (error) { return error.error; })\r\n .filter(function (value, index, self) {\r\n \treturn self.indexOf(value) === index;\r\n });\r\n \t\t},\r\n\r\n \t\tcleanAttributes: function (attributes, whitelist) {\r\n \t\t\tfunction whitelistCreator(obj, key, last) {\r\n \t\t\t\tif (v.isObject(obj[key])) {\r\n \t\t\t\t\treturn obj[key];\r\n \t\t\t\t}\r\n \t\t\t\treturn (obj[key] = last ? true : {});\r\n \t\t\t}\r\n\r\n \t\t\tfunction buildObjectWhitelist(whitelist) {\r\n \t\t\t\tvar ow = {}\r\n , lastObject\r\n , attr;\r\n \t\t\t\tfor (attr in whitelist) {\r\n \t\t\t\t\tif (!whitelist[attr]) {\r\n \t\t\t\t\t\tcontinue;\r\n \t\t\t\t\t}\r\n \t\t\t\t\tv.forEachKeyInKeypath(ow, attr, whitelistCreator);\r\n \t\t\t\t}\r\n \t\t\t\treturn ow;\r\n \t\t\t}\r\n\r\n \t\t\tfunction cleanRecursive(attributes, whitelist) {\r\n \t\t\t\tif (!v.isObject(attributes)) {\r\n \t\t\t\t\treturn attributes;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tvar ret = v.extend({}, attributes)\r\n , w\r\n , attribute;\r\n\r\n \t\t\t\tfor (attribute in attributes) {\r\n \t\t\t\t\tw = whitelist[attribute];\r\n\r\n \t\t\t\t\tif (v.isObject(w)) {\r\n \t\t\t\t\t\tret[attribute] = cleanRecursive(ret[attribute], w);\r\n \t\t\t\t\t} else if (!w) {\r\n \t\t\t\t\t\tdelete ret[attribute];\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t\treturn ret;\r\n \t\t\t}\r\n\r\n \t\t\tif (!v.isObject(whitelist) || !v.isObject(attributes)) {\r\n \t\t\t\treturn {};\r\n \t\t\t}\r\n\r\n \t\t\twhitelist = buildObjectWhitelist(whitelist);\r\n \t\t\treturn cleanRecursive(attributes, whitelist);\r\n \t\t},\r\n\r\n \t\texposeModule: function (validate, root, exports, module, define) {\r\n \t\t\tif (exports) {\r\n \t\t\t\tif (module && module.exports) {\r\n \t\t\t\t\texports = module.exports = validate;\r\n \t\t\t\t}\r\n \t\t\t\texports.validate = validate;\r\n \t\t\t} else {\r\n \t\t\t\troot.validate = validate;\r\n \t\t\t\tif (validate.isFunction(define) && define.amd) {\r\n \t\t\t\t\tdefine([], function () { return validate; });\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t},\r\n\r\n \t\twarn: function (msg) {\r\n \t\t\tif (typeof console !== \"undefined\" && console.warn) {\r\n \t\t\t\tconsole.warn(\"[validate.js] \" + msg);\r\n \t\t\t}\r\n \t\t},\r\n\r\n \t\terror: function (msg) {\r\n \t\t\tif (typeof console !== \"undefined\" && console.error) {\r\n \t\t\t\tconsole.error(\"[validate.js] \" + msg);\r\n \t\t\t}\r\n \t\t}\r\n \t});\r\n\r\n \tvalidate.validators = {\r\n \t\t// Presence validates that the value isn't empty\r\n \t\tpresence: function (value, options) {\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n \t\t\tif (options.allowEmpty ? !v.isDefined(value) : v.isEmpty(value)) {\r\n \t\t\t\treturn options.message || this.message || \"can't be blank\";\r\n \t\t\t}\r\n \t\t},\r\n \t\tlength: function (value, options, attribute) {\r\n \t\t\t// Empty values are allowed\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n\r\n \t\t\tvar is = options.is\r\n , maximum = options.maximum\r\n , minimum = options.minimum\r\n , tokenizer = options.tokenizer || function (val) { return val; }\r\n , err\r\n , errors = [];\r\n\r\n \t\t\tvalue = tokenizer(value);\r\n \t\t\tvar length = value.length;\r\n \t\t\tif (!v.isNumber(length)) {\r\n \t\t\t\tv.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", { attr: attribute }));\r\n \t\t\t\treturn options.message || this.notValid || \"has an incorrect length\";\r\n \t\t\t}\r\n\r\n \t\t\t// Is checks\r\n \t\t\tif (v.isNumber(is) && length !== is) {\r\n \t\t\t\terr = options.wrongLength ||\r\n this.wrongLength ||\r\n \"is the wrong length (should be %{count} characters)\";\r\n \t\t\t\terrors.push(v.format(err, { count: is }));\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isNumber(minimum) && length < minimum) {\r\n \t\t\t\terr = options.tooShort ||\r\n this.tooShort ||\r\n \"is too short (minimum is %{count} characters)\";\r\n \t\t\t\terrors.push(v.format(err, { count: minimum }));\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isNumber(maximum) && length > maximum) {\r\n \t\t\t\terr = options.tooLong ||\r\n this.tooLong ||\r\n \"is too long (maximum is %{count} characters)\";\r\n \t\t\t\terrors.push(v.format(err, { count: maximum }));\r\n \t\t\t}\r\n\r\n \t\t\tif (errors.length > 0) {\r\n \t\t\t\treturn options.message || errors;\r\n \t\t\t}\r\n \t\t},\r\n \t\tnumericality: function (value, options) {\r\n \t\t\t// Empty values are fine\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n\r\n \t\t\tvar errors = []\r\n , name\r\n , count\r\n , checks = {\r\n \tgreaterThan: function (v, c) { return v > c; },\r\n \tgreaterThanOrEqualTo: function (v, c) { return v >= c; },\r\n \tequalTo: function (v, c) { return v === c; },\r\n \tlessThan: function (v, c) { return v < c; },\r\n \tlessThanOrEqualTo: function (v, c) { return v <= c; },\r\n \tdivisibleBy: function (v, c) { return v % c === 0; }\r\n };\r\n\r\n \t\t\t// Strict will check that it is a valid looking number\r\n \t\t\tif (v.isString(value) && options.strict) {\r\n \t\t\t\tvar pattern = \"^(0|[1-9]\\\\d*)\";\r\n \t\t\t\tif (!options.onlyInteger) {\r\n \t\t\t\t\tpattern += \"(\\\\.\\\\d+)?\";\r\n \t\t\t\t}\r\n \t\t\t\tpattern += \"$\";\r\n\r\n \t\t\t\tif (!(new RegExp(pattern).test(value))) {\r\n \t\t\t\t\treturn options.message ||\r\n options.notValid ||\r\n this.notValid ||\r\n this.message ||\r\n \"must be a valid number\";\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\t// Coerce the value to a number unless we're being strict.\r\n \t\t\tif (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\r\n \t\t\t\tvalue = +value;\r\n \t\t\t}\r\n\r\n \t\t\t// If it's not a number we shouldn't continue since it will compare it.\r\n \t\t\tif (!v.isNumber(value)) {\r\n \t\t\t\treturn options.message ||\r\n options.notValid ||\r\n this.notValid ||\r\n this.message ||\r\n \"is not a number\";\r\n \t\t\t}\r\n\r\n \t\t\t// Same logic as above, sort of. Don't bother with comparisons if this\r\n \t\t\t// doesn't pass.\r\n \t\t\tif (options.onlyInteger && !v.isInteger(value)) {\r\n \t\t\t\treturn options.message ||\r\n options.notInteger ||\r\n this.notInteger ||\r\n this.message ||\r\n \"must be an integer\";\r\n \t\t\t}\r\n\r\n \t\t\tfor (name in checks) {\r\n \t\t\t\tcount = options[name];\r\n \t\t\t\tif (v.isNumber(count) && !checks[name](value, count)) {\r\n \t\t\t\t\t// This picks the default message if specified\r\n \t\t\t\t\t// For example the greaterThan check uses the message from\r\n \t\t\t\t\t// this.notGreaterThan so we capitalize the name and prepend \"not\"\r\n \t\t\t\t\tvar key = \"not\" + v.capitalize(name);\r\n \t\t\t\t\tvar msg = options[key] ||\r\n this[key] ||\r\n this.message ||\r\n \"must be %{type} %{count}\";\r\n\r\n \t\t\t\t\terrors.push(v.format(msg, {\r\n \t\t\t\t\t\tcount: count,\r\n \t\t\t\t\t\ttype: v.prettify(name)\r\n \t\t\t\t\t}));\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\tif (options.odd && value % 2 !== 1) {\r\n \t\t\t\terrors.push(options.notOdd ||\r\n this.notOdd ||\r\n this.message ||\r\n \"must be odd\");\r\n \t\t\t}\r\n \t\t\tif (options.even && value % 2 !== 0) {\r\n \t\t\t\terrors.push(options.notEven ||\r\n this.notEven ||\r\n this.message ||\r\n \"must be even\");\r\n \t\t\t}\r\n\r\n \t\t\tif (errors.length) {\r\n \t\t\t\treturn options.message || errors;\r\n \t\t\t}\r\n \t\t},\r\n \t\tdatetime: v.extend(function (value, options) {\r\n \t\t\tif (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\r\n \t\t\t\tthrow new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\r\n \t\t\t}\r\n\r\n \t\t\t// Empty values are fine\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n\r\n \t\t\tvar err\r\n , errors = []\r\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\r\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\r\n\r\n \t\t\tvalue = this.parse(value, options);\r\n\r\n \t\t\t// 86400000 is the number of seconds in a day, this is used to remove\r\n \t\t\t// the time from the date\r\n \t\t\tif (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\r\n \t\t\t\terr = options.notValid ||\r\n options.message ||\r\n this.notValid ||\r\n \"must be a valid date\";\r\n \t\t\t\treturn v.format(err, { value: arguments[0] });\r\n \t\t\t}\r\n\r\n \t\t\tif (!isNaN(earliest) && value < earliest) {\r\n \t\t\t\terr = options.tooEarly ||\r\n options.message ||\r\n this.tooEarly ||\r\n \"must be no earlier than %{date}\";\r\n \t\t\t\terr = v.format(err, {\r\n \t\t\t\t\tvalue: this.format(value, options),\r\n \t\t\t\t\tdate: this.format(earliest, options)\r\n \t\t\t\t});\r\n \t\t\t\terrors.push(err);\r\n \t\t\t}\r\n\r\n \t\t\tif (!isNaN(latest) && value > latest) {\r\n \t\t\t\terr = options.tooLate ||\r\n options.message ||\r\n this.tooLate ||\r\n \"must be no later than %{date}\";\r\n \t\t\t\terr = v.format(err, {\r\n \t\t\t\t\tdate: this.format(latest, options),\r\n \t\t\t\t\tvalue: this.format(value, options)\r\n \t\t\t\t});\r\n \t\t\t\terrors.push(err);\r\n \t\t\t}\r\n\r\n \t\t\tif (errors.length) {\r\n \t\t\t\treturn v.unique(errors);\r\n \t\t\t}\r\n \t\t}, {\r\n \t\t\tparse: null,\r\n \t\t\tformat: null\r\n \t\t}),\r\n \t\tdate: function (value, options) {\r\n \t\t\toptions = v.extend({}, options, { dateOnly: true });\r\n \t\t\treturn v.validators.datetime.call(v.validators.datetime, value, options);\r\n \t\t},\r\n \t\tformat: function (value, options) {\r\n \t\t\tif (v.isString(options) || (options instanceof RegExp)) {\r\n \t\t\t\toptions = { pattern: options };\r\n \t\t\t}\r\n\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n\r\n \t\t\tvar message = options.message || this.message || \"is invalid\"\r\n , pattern = options.pattern\r\n , match;\r\n\r\n \t\t\t// Empty values are allowed\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tif (!v.isString(value)) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isString(pattern)) {\r\n \t\t\t\tpattern = new RegExp(options.pattern, options.flags);\r\n \t\t\t}\r\n \t\t\tmatch = pattern.exec(value);\r\n \t\t\tif (!match || match[0].length != value.length) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n \t\t},\r\n \t\tinclusion: function (value, options) {\r\n \t\t\t// Empty values are fine\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tif (v.isArray(options)) {\r\n \t\t\t\toptions = { within: options };\r\n \t\t\t}\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n \t\t\tif (v.contains(options.within, value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tvar message = options.message ||\r\n this.message ||\r\n \"^%{value} is not included in the list\";\r\n \t\t\treturn v.format(message, { value: value });\r\n \t\t},\r\n \t\texclusion: function (value, options) {\r\n \t\t\t// Empty values are fine\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tif (v.isArray(options)) {\r\n \t\t\t\toptions = { within: options };\r\n \t\t\t}\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n \t\t\tif (!v.contains(options.within, value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tvar message = options.message || this.message || \"^%{value} is restricted\";\r\n \t\t\treturn v.format(message, { value: value });\r\n \t\t},\r\n \t\temail: v.extend(function (value, options) {\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n \t\t\tvar message = options.message || this.message || \"is not a valid email\";\r\n \t\t\t// Empty values are fine\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n \t\t\tif (!v.isString(value)) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n \t\t\tif (!this.PATTERN.exec(value)) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n \t\t}, {\r\n \t\t\tPATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\r\n \t\t}),\r\n \t\tequality: function (value, options, attribute, attributes) {\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\tif (v.isString(options)) {\r\n \t\t\t\toptions = { attribute: options };\r\n \t\t\t}\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n \t\t\tvar message = options.message ||\r\n this.message ||\r\n \"is not equal to %{attribute}\";\r\n\r\n \t\t\tif (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\r\n \t\t\t\tthrow new Error(\"The attribute must be a non empty string\");\r\n \t\t\t}\r\n\r\n \t\t\tvar otherValue = v.getDeepObjectValue(attributes, options.attribute)\r\n , comparator = options.comparator || function (v1, v2) {\r\n \treturn v1 === v2;\r\n };\r\n\r\n \t\t\tif (!comparator(value, otherValue, options, attribute, attributes)) {\r\n \t\t\t\treturn v.format(message, { attribute: v.prettify(options.attribute) });\r\n \t\t\t}\r\n \t\t},\r\n\r\n \t\t// A URL validator that is used to validate URLs with the ability to\r\n \t\t// restrict schemes and some domains.\r\n \t\turl: function (value, options) {\r\n \t\t\tif (!v.isDefined(value)) {\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\toptions = v.extend({}, this.options, options);\r\n\r\n \t\t\tvar message = options.message || this.message || \"is not a valid url\"\r\n , schemes = options.schemes || this.schemes || ['http', 'https']\r\n , allowLocal = options.allowLocal || this.allowLocal || false;\r\n\r\n \t\t\tif (!v.isString(value)) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n\r\n \t\t\t// https://gist.github.com/dperini/729294\r\n \t\t\tvar regex =\r\n \"^\" +\r\n // protocol identifier\r\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\r\n // user:pass authentication\r\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\r\n \"(?:\";\r\n\r\n \t\t\tvar tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\r\n\r\n \t\t\tif (allowLocal) {\r\n \t\t\t\ttld += \"?\";\r\n \t\t\t} else {\r\n \t\t\t\tregex +=\r\n // IP address exclusion\r\n // private & local networks\r\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\r\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\r\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\r\n \t\t\t}\r\n\r\n \t\t\tregex +=\r\n // IP address dotted notation octets\r\n // excludes loopback network 0.0.0.0\r\n // excludes reserved space >= 224.0.0.0\r\n // excludes network & broacast addresses\r\n // (first & last IP address of each class)\r\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\r\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\r\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\r\n \"|\" +\r\n // host name\r\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\r\n // domain name\r\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\r\n tld +\r\n \")\" +\r\n // port number\r\n \"(?::\\\\d{2,5})?\" +\r\n // resource path\r\n \"(?:[/?#]\\\\S*)?\" +\r\n \"$\";\r\n\r\n \t\t\tvar PATTERN = new RegExp(regex, 'i');\r\n \t\t\tif (!PATTERN.exec(value)) {\r\n \t\t\t\treturn message;\r\n \t\t\t}\r\n \t\t}\r\n \t};\r\n\r\n \tvalidate.formatters = {\r\n \t\tdetailed: function (errors) { return errors; },\r\n \t\tflat: v.flattenErrorsToArray,\r\n \t\tgrouped: function (errors) {\r\n \t\t\tvar attr;\r\n\r\n \t\t\terrors = v.groupErrorsByAttribute(errors);\r\n \t\t\tfor (attr in errors) {\r\n \t\t\t\terrors[attr] = v.flattenErrorsToArray(errors[attr]);\r\n \t\t\t}\r\n \t\t\treturn errors;\r\n \t\t},\r\n \t\tconstraint: function (errors) {\r\n \t\t\tvar attr;\r\n \t\t\terrors = v.groupErrorsByAttribute(errors);\r\n \t\t\tfor (attr in errors) {\r\n \t\t\t\terrors[attr] = errors[attr].map(function (result) {\r\n \t\t\t\t\treturn result.validator;\r\n \t\t\t\t}).sort();\r\n \t\t\t}\r\n \t\t\treturn errors;\r\n \t\t}\r\n \t};\r\n\r\n \tvalidate.exposeModule(validate, this, exports, module, define);\r\n }).call(this,\r\n\t\t\t\t typeof exports !== 'undefined' ? /* istanbul ignore next */ exports : null,\r\n\t\t\t\t typeof module !== 'undefined' ? /* istanbul ignore next */ module : null,\r\n\t\t\t\t typeof define !== 'undefined' ? /* istanbul ignore next */ define : null);\r\n\r\n\r\n return validate;\r\n });\r\n"],"mappings":"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","ignoreList":[]}