{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Bundles/jqueryval.js","webpack:///./Scripts/jquery-validate sync \\.js$","webpack:///./Scripts/jquery-validate/jquery.validate-vsdoc.js","webpack:///./Scripts/jquery-validate/jquery.validate.js","webpack:///./Scripts/jquery-validate/jquery.validate.min.js","webpack:///./Scripts/jquery-validate/jquery.validate.unobtrusive.js","webpack:///./Scripts/jquery-validate/jquery.validate.unobtrusive.min.js","webpack:///external \"jQuery\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","keys","forEach","map","webpackContext","req","id","webpackContextResolve","e","Error","code","resolve","$","jQuery","extend","fn","validate","options","this","length","validator","data","settings","onsubmit","find","filter","click","cancelSubmit","submitHandler","submitButton","submit","event","handle","hidden","attr","val","appendTo","currentForm","remove","debug","preventDefault","form","pendingRequest","formSubmitted","focusInvalid","window","console","warn","valid","is","each","element","removeAttrs","attributes","result","$element","split","index","removeAttr","rules","command","argument","staticRules","existingRules","normalizeRule","messages","filtered","method","normalizeRules","metadataRules","classRules","attributeRules","required","param","expr","blank","a","trim","filled","unchecked","checked","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","replace","RegExp","groups","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","addWrapper","errorsFor","hide","onfocusout","checkable","submitted","optional","onkeyup","lastElement","onclick","parentNode","highlight","addClass","removeClass","setDefaults","remote","email","url","date","dateISO","number","digits","creditcard","equalTo","accept","maxlength","minlength","rangelength","range","max","min","autoCreateRanges","labelContainer","errorContext","containers","add","valueCache","pending","invalid","reset","delegate","eventType","type","validateDelegate","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","clean","prepareElement","numberOfInvalids","toHide","errors","errorList","push","message","findByName","successList","grep","defaultShowErrors","resetForm","hideErrors","objectLength","obj","count","size","findLastActive","focus","trigger","rulesCache","not","error","selector","toShow","dependencyMismatch","rule","parameters","methods","formatAndAdd","log","customMetaMessage","metadata","meta","customMessage","String","findDefined","undefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","label","html","idOrName","generated","wrap","append","errorPlacement","insertAfter","text","document","getElementsByName","getLength","nodeName","toLowerCase","depend","dependTypes","_typeof","startRequest","stopRequest","previousValue","old","classRuleSettings","dateDE","numberDE","addClassRules","className","classes","prop","depends","keepRule","parameter","isFunction","Number","transformed","addMethod","previous","originalMessage","ajax","port","dataType","response","Date","nCheck","nDigit","bEven","cDigit","charAt","parseInt","match","unbind","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","special","focusin","focusout","addEventListener","blur","original","fix","handler","setup","teardown","removeEventListener","target","define","on","hasClass","concat","dataRules","hideThese","which","elementValue","inArray","keyCode","cleanElement","checkElement","validationTargetFor","removeData","join","validity","badInput","rulesCount","TypeError","customDataMessage","toUpperCase","substring","place","group","errorID","elementID","describedBy","parents","testgroup","describer","destroy","off","normalizeAttributeRule","isNaN","getAttribute","parts","isArray","toString","context","b","f","g","h","j","string","adapters","$jQval","setValidationValues","ruleName","escapeAttributeValue","getModelPrefix","fieldName","substr","lastIndexOf","appendModelPrefix","prefix","indexOf","onError","inputElement","container","replaceAttrValue","parseJSON","empty","onErrors","list","onSuccess","onReset","$form","validationInfo","onResetProxy","proxy","defaultOptions","unobtrusive","execInContext","func","attachValidation","parseElement","skipAttach","valInfo","paramValues","adapt","parse","$selector","$forms","addBack","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","nonalphamin","extension","fullOtherName","other","tagName","splitAndTrim","additionalfields","paramName","field","regex","k","__dummy__"],"mappings":"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","file":"jqueryval.bundle.20250313.1.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 309);\n","function requireAll(r) { r.keys().forEach(r); }\r\nrequireAll(require.context('../Scripts/jquery-validate/', true, /\\.js$/));","var map = {\n\t\"./jquery.validate-vsdoc.js\": 311,\n\t\"./jquery.validate.js\": 312,\n\t\"./jquery.validate.min.js\": 313,\n\t\"./jquery.validate.unobtrusive.js\": 314,\n\t\"./jquery.validate.unobtrusive.min.js\": 315\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 310;","/*\r\n* This file has been commented to support Visual Studio Intellisense.\r\n* You should not use this file at runtime inside the browser--it is only\r\n* intended to be used only for design-time IntelliSense. Please use the\r\n* standard jQuery library for all production use.\r\n*\r\n* Comment version: 1.14.0\r\n*/\r\n\r\n/*\r\n* Note: While Microsoft is not the author of this file, Microsoft is\r\n* offering you a license subject to the terms of the Microsoft Software\r\n* License Terms for Microsoft ASP.NET Model View Controller 3.\r\n* Microsoft reserves all other rights. The notices below are provided\r\n* for informational purposes only and are not the license terms under\r\n* which Microsoft distributed this file.\r\n*\r\n* jQuery Validation Plugin - v1.14.0 - 2/4/2013\r\n* https://github.com/jzaefferer/jquery-validation\r\n* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT\r\n*\r\n*/\r\n\r\n(function($) {\r\n\r\n$.extend($.fn, {\r\n\t// http://docs.jquery.com/Plugins/Validation/validate\r\n\tvalidate: function( options ) {\r\n\t\t/// \r\n\t\t/// Validates the selected form. This method sets up event handlers for submit, focus,\r\n\t\t/// keyup, blur and click to trigger validation of the entire form or individual\r\n\t\t/// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout,\r\n\t\t/// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// A set of key/value pairs that configure the validate. All options are optional.\r\n\t\t/// \r\n\r\n\t\t// if nothing is selected, return nothing; can't chain anyway\r\n\t\tif (!this.length) {\r\n\t\t\toptions && options.debug && window.console && console.warn( \"nothing selected, can't validate, returning nothing\" );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if a validator for this form was already created\r\n\t\tvar validator = $.data(this[0], 'validator');\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\t\t\r\n\t\tvalidator = new $.validator( options, this[0] );\r\n\t\t$.data(this[0], 'validator', validator); \r\n\t\t\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\t\t\r\n\t\t\t// allow suppresing validation by adding a cancel class to the submit button\r\n\t\t\tthis.find(\"input, button\").filter(\".cancel\").click(function() {\r\n\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t// when a submitHandler is used, capture the submitting button\r\n\t\t\tif (validator.settings.submitHandler) {\r\n\t\t\t\tthis.find(\"input, button\").filter(\":submit\").click(function() {\r\n\t\t\t\t\tvalidator.submitButton = this;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\r\n\t\t\t// validate the form on submit\r\n\t\t\tthis.submit( function( event ) {\r\n\t\t\t\tif ( validator.settings.debug )\r\n\t\t\t\t\t// prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\t\tif (validator.submitButton) {\r\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t\t\tvar hidden = $(\"\").attr(\"name\", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm );\r\n\t\t\t\t\t\tif (validator.submitButton) {\r\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn validator;\r\n\t},\r\n\t// http://docs.jquery.com/Plugins/Validation/valid\r\n\tvalid: function() {\r\n\t\t/// \r\n\t\t/// Checks if the selected form is valid or if all selected elements are valid.\r\n\t\t/// validate() needs to be called on the form before checking it using this method.\r\n\t\t/// \r\n\t\t/// \r\n\r\n if ( $(this[0]).is('form')) {\r\n return this.validate().form();\r\n } else {\r\n var valid = true;\r\n var validator = $(this[0].form).validate();\r\n this.each(function() {\r\n\t\t\t\tvalid &= validator.element(this);\r\n });\r\n return valid;\r\n }\r\n },\r\n\t// attributes: space seperated list of attributes to retrieve and remove\r\n\tremoveAttrs: function(attributes) {\r\n\t\t/// \r\n\t\t/// Remove the specified attributes from the first matched element and return them.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// A space-seperated list of attribute names to remove.\r\n\t\t/// \r\n\r\n\t\tvar result = {},\r\n\t\t\t$element = this;\r\n\t\t$.each(attributes.split(/\\s/), function(index, value) {\r\n\t\t\tresult[value] = $element.attr(value);\r\n\t\t\t$element.removeAttr(value);\r\n\t\t});\r\n\t\treturn result;\r\n\t},\r\n\t// http://docs.jquery.com/Plugins/Validation/rules\r\n\trules: function(command, argument) {\r\n\t\t/// \r\n\t\t/// Return the validations rules for the first selected element.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// Can be either \"add\" or \"remove\".\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// A list of rules to add or remove.\r\n\t\t/// \r\n\r\n\t\tvar element = this[0];\r\n\t\t\r\n\t\tif (command) {\r\n\t\t\tvar settings = $.data(element.form, 'validator').settings;\r\n\t\t\tvar staticRules = settings.rules;\r\n\t\t\tvar existingRules = $.validator.staticRules(element);\r\n\t\t\tswitch(command) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\r\n\t\t\t\tstaticRules[element.name] = existingRules;\r\n\t\t\t\tif (argument.messages)\r\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif (!argument) {\r\n\t\t\t\t\tdelete staticRules[element.name];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tvar filtered = {};\r\n\t\t\t\t$.each(argument.split(/\\s/), function(index, method) {\r\n\t\t\t\t\tfiltered[method] = existingRules[method];\r\n\t\t\t\t\tdelete existingRules[method];\r\n\t\t\t\t});\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tvar data = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.metadataRules(element),\r\n\t\t\t$.validator.classRules(element),\r\n\t\t\t$.validator.attributeRules(element),\r\n\t\t\t$.validator.staticRules(element)\r\n\t\t), element);\r\n\t\t\r\n\t\t// make sure required is at front\r\n\t\tif (data.required) {\r\n\t\t\tvar param = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend({required: param}, data);\r\n\t\t}\r\n\t\t\r\n\t\treturn data;\r\n\t}\r\n});\r\n\r\n// Custom selectors\r\n$.extend($.expr[\":\"], {\r\n\t// http://docs.jquery.com/Plugins/Validation/blank\r\n\tblank: function(a) {return !$.trim(\"\" + a.value);},\r\n\t// http://docs.jquery.com/Plugins/Validation/filled\r\n\tfilled: function(a) {return !!$.trim(\"\" + a.value);},\r\n\t// http://docs.jquery.com/Plugins/Validation/unchecked\r\n\tunchecked: function(a) {return !a.checked;}\r\n});\r\n\r\n// constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n$.validator.format = function(source, params) {\r\n\t/// \r\n\t/// Replaces {n} placeholders with arguments.\r\n\t/// One or more arguments can be passed, in addition to the string template itself, to insert\r\n\t/// into the string.\r\n\t/// \r\n\t/// \r\n\t/// The string to format.\r\n\t/// \r\n\t/// \r\n\t/// The first argument to insert, or an array of Strings to insert\r\n\t/// \r\n\t/// \r\n\r\n\tif ( arguments.length == 1 ) \r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray(arguments);\r\n\t\t\targs.unshift(source);\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\tif ( arguments.length > 2 && params.constructor != Array ) {\r\n\t\tparams = $.makeArray(arguments).slice(1);\r\n\t}\r\n\tif ( params.constructor != Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each(params, function(i, n) {\r\n\t\tsource = source.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), n);\r\n\t});\r\n\treturn source;\r\n};\r\n\r\n$.extend($.validator, {\r\n\t\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: [],\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function(element) {\r\n\t\t\tthis.lastActive = element;\r\n\t\t\t\t\r\n\t\t\t// hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\r\n\t\t\t\tthis.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function(element) {\r\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\r\n\t\t\t\tthis.element(element);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function(element) {\r\n\t\t\tif ( element.name in this.submitted || element == this.lastElement ) {\r\n\t\t\t\tthis.element(element);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function(element) {\r\n\t\t\t// click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted )\r\n\t\t\t\tthis.element(element);\r\n\t\t\t// or option elements, check parent select in that case\r\n\t\t\telse if (element.parentNode.name in this.submitted)\r\n\t\t\t\tthis.element(element.parentNode);\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\t$(element).addClass(errorClass).removeClass(validClass);\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\t$(element).removeClass(errorClass).addClass(validClass);\r\n\t\t}\r\n\t},\r\n\r\n\t// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults\r\n\tsetDefaults: function(settings) {\r\n\t\t/// \r\n\t\t/// Modify default settings for validation.\r\n\t\t/// Accepts everything that Plugins/Validation/validate accepts.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// Options to set as default.\r\n\t\t/// \r\n\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date (ISO).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tcreditcard: \"Please enter a valid credit card number.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\taccept: \"Please enter a value with a valid extension.\",\r\n\t\tmaxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\r\n\t\tminlength: $.validator.format(\"Please enter at least {0} characters.\"),\r\n\t\trangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\r\n\t\trange: $.validator.format(\"Please enter a value between {0} and {1}.\"),\r\n\t\tmax: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\r\n\t\tmin: $.validator.format(\"Please enter a value greater than or equal to {0}.\")\r\n\t},\r\n\t\r\n\tautoCreateRanges: false,\r\n\t\r\n\tprototype: {\r\n\t\t\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\r\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\t\t\t\r\n\t\t\tvar groups = (this.groups = {});\r\n\t\t\t$.each(this.settings.groups, function(key, value) {\r\n\t\t\t\t$.each(value.split(/\\s/), function(index, name) {\r\n\t\t\t\t\tgroups[name] = key;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tvar rules = this.settings.rules;\r\n\t\t\t$.each(rules, function(key, value) {\r\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tfunction delegate(event) {\r\n\t\t\t\tvar validator = $.data(this[0].form, \"validator\"),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace(/^validate/, \"\");\r\n\t\t\t\tvalidator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );\r\n\t\t\t}\r\n\t\t\t$(this.currentForm)\r\n\t\t\t\t.validateDelegate(\":text, :password, :file, select, textarea\", \"focusin focusout keyup\", delegate)\r\n\t\t\t\t.validateDelegate(\":radio, :checkbox, select, option\", \"click\", delegate);\r\n\r\n\t\t\tif (this.settings.invalidHandler)\r\n\t\t\t\t$(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler);\r\n\t\t},\r\n\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/form\r\n\t\tform: function() {\r\n\t\t\t/// \r\n\t\t\t/// Validates the form, returns true if it is valid, false otherwise.\r\n\t\t\t/// This behaves as a normal submit event, but returns the result.\r\n\t\t\t/// \r\n\t\t\t/// \r\n\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend(this.submitted, this.errorMap);\r\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\r\n\t\t\tif (!this.valid())\r\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\t\t\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\r\n\t\t\t\tthis.check( elements[i] );\r\n\t\t\t}\r\n\t\t\treturn this.valid(); \r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/element\r\n\t\telement: function( element ) {\r\n\t\t\t/// \r\n\t\t\t/// Validates a single element, returns true if it is valid, false otherwise.\r\n\t\t\t/// This behaves as validation on blur or keyup, but returns the result.\r\n\t\t\t/// \r\n\t\t\t/// \r\n\t\t\t/// An element to validate, must be inside the validated form.\r\n\t\t\t/// \r\n\t\t\t/// \r\n\r\n\t\t\telement = this.clean( element );\r\n\t\t\tthis.lastElement = element;\r\n\t\t\tthis.prepareElement( element );\r\n\t\t\tthis.currentElements = $(element);\r\n\t\t\tvar result = this.check( element );\r\n\t\t\tif ( result ) {\r\n\t\t\t\tdelete this.invalid[element.name];\r\n\t\t\t} else {\r\n\t\t\t\tthis.invalid[element.name] = true;\r\n\t\t\t}\r\n\t\t\tif ( !this.numberOfInvalids() ) {\r\n\t\t\t\t// Hide error containers on last error\r\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/showErrors\r\n\t\tshowErrors: function(errors) {\r\n\t\t\t/// \r\n\t\t\t/// Show the specified messages.\r\n\t\t\t/// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement.\r\n\t\t\t/// \r\n\t\t\t/// \r\n\t\t\t/// One or more key/value pairs of input names and messages.\r\n\t\t\t/// \r\n\r\n\t\t\tif(errors) {\r\n\t\t\t\t// add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = [];\r\n\t\t\t\tfor ( var name in errors ) {\r\n\t\t\t\t\tthis.errorList.push({\r\n\t\t\t\t\t\tmessage: errors[name],\r\n\t\t\t\t\t\telement: this.findByName(name)[0]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function(element) {\r\n\t\t\t\t\treturn !(element.name in errors);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tthis.settings.showErrors\r\n\t\t\t\t? this.settings.showErrors.call( this, this.errorMap, this.errorList )\r\n\t\t\t\t: this.defaultShowErrors();\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/resetForm\r\n\t\tresetForm: function() {\r\n\t\t\t/// \r\n\t\t\t/// Resets the controlled form.\r\n\t\t\t/// Resets input fields to their original value (requires form plugin), removes classes\r\n\t\t\t/// indicating invalid elements and hides error messages.\r\n\t\t\t/// \r\n\r\n\t\t\tif ( $.fn.resetForm )\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.elements().removeClass( this.settings.errorClass );\r\n\t\t},\r\n\t\t\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\t/// \r\n\t\t\t/// Returns the number of invalid fields.\r\n\t\t\t/// This depends on the internal validator state. It covers all fields only after\r\n\t\t\t/// validating the complete form (on submit or via $(\"form\").valid()). After validating\r\n\t\t\t/// a single element, only that element is counted. Most useful in combination with the\r\n\t\t\t/// invalidHandler-option.\r\n\t\t\t/// \r\n\t\t\t/// \r\n\r\n\t\t\treturn this.objectLength(this.invalid);\r\n\t\t},\r\n\t\t\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\tvar count = 0;\r\n\t\t\tfor ( var i in obj )\r\n\t\t\t\tcount++;\r\n\t\t\treturn count;\r\n\t\t},\r\n\t\t\r\n\t\thideErrors: function() {\r\n\t\t\tthis.addWrapper( this.toHide ).hide();\r\n\t\t},\r\n\t\t\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() == 0;\r\n\t\t},\r\n\t\t\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\t\t\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\r\n\t\t\t\t\t.filter(\":visible\")\r\n\t\t\t\t\t.focus()\r\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t.trigger(\"focusin\");\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep(this.errorList, function(n) {\r\n\t\t\t\treturn n.element.name == lastActive.name;\r\n\t\t\t}).length == 1 && lastActive;\r\n\t\t},\r\n\t\t\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\t\t\t\r\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\t// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved\r\n\t\t\treturn $([]).add(this.currentForm.elements)\r\n\t\t\t.filter(\":input\")\r\n\t\t\t.not(\":submit, :reset, :image, [disabled]\")\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter(function() {\r\n\t\t\t\t!this.name && validator.settings.debug && window.console && console.error( \"%o has no name assigned\", this);\r\n\t\t\t\r\n\t\t\t\t// select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) )\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t\r\n\t\t\t\trulesCache[this.name] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[0];\r\n\t\t},\r\n\t\t\r\n\t\terrors: function() {\r\n\t\t\treturn $( this.settings.errorElement + \".\" + this.settings.errorClass, this.errorContext );\r\n\t\t},\r\n\t\t\r\n\t\treset: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $([]);\r\n\t\t\tthis.toHide = $([]);\r\n\t\t\tthis.currentElements = $([]);\r\n\t\t},\r\n\t\t\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\t\t\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor(element);\r\n\t\t},\r\n\t\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.clean( element );\r\n\t\t\t\r\n\t\t\t// if radio/checkbox, validate first element in group instead\r\n\t\t\tif (this.checkable(element)) {\r\n\t\t\t element = this.findByName(element.name).not(this.settings.ignore)[0];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar rules = $(element).rules();\r\n\t\t\tvar dependencyMismatch = false;\r\n\t\t\tfor (var method in rules) {\r\n\t\t\t\tvar rule = { method: method, parameters: rules[method] };\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar result = $.validator.methods[method].call( this, element.value.replace(/\\r/g, \"\"), element, rule.parameters );\r\n\t\t\t\t\t\r\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result == \"dependency-mismatch\" ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ( result == \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\tthis.settings.debug && window.console && console.log(\"exception occured when checking element \" + element.id\r\n\t\t\t\t\t\t + \", check the '\" + rule.method + \"' method\", e);\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (dependencyMismatch)\r\n\t\t\t\treturn;\r\n\t\t\tif ( this.objectLength(rules) )\r\n\t\t\t\tthis.successList.push(element);\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t\r\n\t\t// return the custom message for the given element and validation method\r\n\t\t// specified in the element's \"messages\" metadata\r\n\t\tcustomMetaMessage: function(element, method) {\r\n\t\t\tif (!$.metadata)\r\n\t\t\t\treturn;\r\n\t\t\t\r\n\t\t\tvar meta = this.settings.meta\r\n\t\t\t\t? $(element).metadata()[this.settings.meta]\r\n\t\t\t\t: $(element).metadata();\r\n\t\t\t\r\n\t\t\treturn meta && meta.messages && meta.messages[method];\r\n\t\t},\r\n\t\t\r\n\t\t// return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[name];\r\n\t\t\treturn m && (m.constructor == String\r\n\t\t\t\t? m\r\n\t\t\t\t: m[method]);\r\n\t\t},\r\n\t\t\r\n\t\t// return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor(var i = 0; i < arguments.length; i++) {\r\n\t\t\t\tif (arguments[i] !== undefined)\r\n\t\t\t\t\treturn arguments[i];\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\t\t\r\n\t\tdefaultMessage: function( element, method) {\r\n\t\t\treturn this.findDefined(\r\n\t\t\t\tthis.customMessage( element.name, method ),\r\n\t\t\t\tthis.customMetaMessage( element, method ),\r\n\t\t\t\t// title is never undefined, so handle empty string as undefined\r\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t$.validator.messages[method],\r\n\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\r\n\t\t\t);\r\n\t\t},\r\n\t\t\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message == \"function\" ) {\r\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\r\n\t\t\t} else if (theregex.test(message)) {\r\n\t\t\t\tmessage = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);\r\n\t\t\t}\t\t\t\r\n\t\t\tthis.errorList.push({\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.errorMap[element.name] = message;\r\n\t\t\tthis.submitted[element.name] = message;\r\n\t\t},\r\n\t\t\r\n\t\taddWrapper: function(toToggle) {\r\n\t\t\tif ( this.settings.wrapper )\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\t\t\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tfor ( var i = 0; this.errorList[i]; i++ ) {\r\n\t\t\t\tvar error = this.errorList[i];\r\n\t\t\t\tthis.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif (this.settings.success) {\r\n\t\t\t\tfor ( var i = 0; this.successList[i]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[i] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.settings.unhighlight) {\r\n\t\t\t\tfor ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\t\t\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not(this.invalidElements());\r\n\t\t},\r\n\t\t\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $(this.errorList).map(function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tshowLabel: function(element, message) {\r\n\t\t\tvar label = this.errorsFor( element );\r\n\t\t\tif ( label.length ) {\r\n\t\t\t\t// refresh error/success class\r\n\t\t\t\tlabel.removeClass().addClass( this.settings.errorClass );\r\n\t\t\t\r\n\t\t\t\t// check if we have a generated label, replace the message then\r\n\t\t\t\tlabel.attr(\"generated\") && label.html(message);\r\n\t\t\t} else {\r\n\t\t\t\t// create label\r\n\t\t\t\tlabel = $(\"<\" + this.settings.errorElement + \"/>\")\r\n\t\t\t\t\t.attr({\"for\": this.idOrName(element), generated: true})\r\n\t\t\t\t\t.addClass(this.settings.errorClass)\r\n\t\t\t\t\t.html(message || \"\");\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\t\t// make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tlabel = label.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( !this.labelContainer.append(label).length )\r\n\t\t\t\t\tthis.settings.errorPlacement\r\n\t\t\t\t\t\t? this.settings.errorPlacement(label, $(element) )\r\n\t\t\t\t\t\t: label.insertAfter(element);\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\tlabel.text(\"\");\r\n\t\t\t\ttypeof this.settings.success == \"string\"\r\n\t\t\t\t\t? label.addClass( this.settings.success )\r\n\t\t\t\t\t: this.settings.success( label );\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add(label);\r\n\t\t},\r\n\t\t\r\n\t\terrorsFor: function(element) {\r\n\t\t\tvar name = this.idOrName(element);\r\n \t\treturn this.errors().filter(function() {\r\n\t\t\t\treturn $(this).attr('for') == name;\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tidOrName: function(element) {\r\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn /radio|checkbox/i.test(element.type);\r\n\t\t},\r\n\t\t\r\n\t\tfindByName: function( name ) {\r\n\t\t\t// select by name and filter by form for performance over form.find(\"[name=...]\")\r\n\t\t\tvar form = this.currentForm;\r\n\t\t\treturn $(document.getElementsByName(name)).map(function(index, element) {\r\n\t\t\t\treturn element.form == form && element.name == name && element || null;\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tgetLength: function(value, element) {\r\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn $(\"option:selected\", element).length;\r\n\t\t\tcase 'input':\r\n\t\t\t\tif( this.checkable( element) )\r\n\t\t\t\t\treturn this.findByName(element.name).filter(':checked').length;\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\t\r\n\t\tdepend: function(param, element) {\r\n\t\t\treturn this.dependTypes[typeof param]\r\n\t\t\t\t? this.dependTypes[typeof param](param, element)\r\n\t\t\t\t: true;\r\n\t\t},\r\n\t\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function(param, element) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function(param, element) {\r\n\t\t\t\treturn !!$(param, element.form).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function(param, element) {\r\n\t\t\t\treturn param(element);\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\toptional: function(element) {\r\n\t\t\treturn !$.validator.methods.required.call(this, $.trim(element.value), element) && \"dependency-mismatch\";\r\n\t\t},\r\n\t\t\r\n\t\tstartRequest: function(element) {\r\n\t\t\tif (!this.pending[element.name]) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\tthis.pending[element.name] = true;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tstopRequest: function(element, valid) {\r\n\t\t\tthis.pendingRequest--;\r\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif (this.pendingRequest < 0)\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\tdelete this.pending[element.name];\r\n\t\t\tif ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$(this.currentForm).submit();\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {\r\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tpreviousValue: function(element) {\r\n\t\t\treturn $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t},\r\n\t\r\n\tclassRuleSettings: {\r\n\t\trequired: {required: true},\r\n\t\temail: {email: true},\r\n\t\turl: {url: true},\r\n\t\tdate: {date: true},\r\n\t\tdateISO: {dateISO: true},\r\n\t\tdateDE: {dateDE: true},\r\n\t\tnumber: {number: true},\r\n\t\tnumberDE: {numberDE: true},\r\n\t\tdigits: {digits: true},\r\n\t\tcreditcard: {creditcard: true}\r\n\t},\r\n\t\r\n\taddClassRules: function(className, rules) {\r\n\t\t/// \r\n\t\t/// Add a compound class method - useful to refactor common combinations of rules into a single\r\n\t\t/// class.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// The name of the class rule to add\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// The compound rules\r\n\t\t/// \r\n\r\n\t\tclassName.constructor == String ?\r\n\t\t\tthis.classRuleSettings[className] = rules :\r\n\t\t\t$.extend(this.classRuleSettings, className);\r\n\t},\r\n\t\r\n\tclassRules: function(element) {\r\n\t\tvar rules = {};\r\n\t\tvar classes = $(element).attr('class');\r\n\t\tclasses && $.each(classes.split(' '), function() {\r\n\t\t\tif (this in $.validator.classRuleSettings) {\r\n\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn rules;\r\n\t},\r\n\t\r\n\tattributeRules: function(element) {\r\n\t\tvar rules = {};\r\n\t\tvar $element = $(element);\r\n\r\n\t\tfor (var method in $.validator.methods) {\r\n\t\t\tvar value = $element.attr(method);\r\n\t\t\tif (value) {\r\n\t\t\t\trules[method] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\r\n\t\tif (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\t\t\r\n\t\treturn rules;\r\n\t},\r\n\t\r\n\tmetadataRules: function(element) {\r\n\t\tif (!$.metadata) return {};\r\n\t\t\r\n\t\tvar meta = $.data(element.form, 'validator').settings.meta;\r\n\t\treturn meta ?\r\n\t\t\t$(element).metadata()[meta] :\r\n\t\t\t$(element).metadata();\r\n\t},\r\n\t\r\n\tstaticRules: function(element) {\r\n\t\tvar rules = {};\r\n\t\tvar validator = $.data(element.form, 'validator');\r\n\t\tif (validator.settings.rules) {\r\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\t\r\n\tnormalizeRules: function(rules, element) {\r\n\t\t// handle dependency check\r\n\t\t$.each(rules, function(prop, val) {\r\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif (val === false) {\r\n\t\t\t\tdelete rules[prop];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (val.param || val.depends) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch (typeof val.depends) {\r\n\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tkeepRule = val.depends.call(element, element);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (keepRule) {\r\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdelete rules[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\t// evaluate parameters\r\n\t\t$.each(rules, function(rule, parameter) {\r\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\r\n\t\t});\r\n\t\t\r\n\t\t// clean number parameters\r\n\t\t$.each(['minlength', 'maxlength', 'min', 'max'], function() {\r\n\t\t\tif (rules[this]) {\r\n\t\t\t\trules[this] = Number(rules[this]);\r\n\t\t\t}\r\n\t\t});\r\n\t\t$.each(['rangelength', 'range'], function() {\r\n\t\t\tif (rules[this]) {\r\n\t\t\t\trules[this] = [Number(rules[this][0]), Number(rules[this][1])];\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tif ($.validator.autoCreateRanges) {\r\n\t\t\t// auto-create ranges\r\n\t\t\tif (rules.min && rules.max) {\r\n\t\t\t\trules.range = [rules.min, rules.max];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif (rules.minlength && rules.maxlength) {\r\n\t\t\t\trules.rangelength = [rules.minlength, rules.maxlength];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// To support custom messages in metadata ignore rule methods titled \"messages\"\r\n\t\tif (rules.messages) {\r\n\t\t\tdelete rules.messages;\r\n\t\t}\r\n\t\t\r\n\t\treturn rules;\r\n\t},\r\n\t\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function(data) {\r\n\t\tif( typeof data == \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each(data.split(/\\s/), function() {\r\n\t\t\t\ttransformed[this] = true;\r\n\t\t\t});\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\t\r\n\t// http://docs.jquery.com/Plugins/Validation/Validator/addMethod\r\n\taddMethod: function(name, method, message) {\r\n\t\t/// \r\n\t\t/// Add a custom validation method. It must consist of a name (must be a legal javascript \r\n\t\t/// identifier), a javascript based function and a default string message.\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// The name of the method, used to identify and referencing it, must be a valid javascript\r\n\t\t/// identifier\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// The actual method implementation, returning true if an element is valid\r\n\t\t/// \r\n\t\t/// \r\n\t\t/// (Optional) The default message to display for this method. Can be a function created by \r\n\t\t/// jQuery.validator.format(value). When undefined, an already existing message is used \r\n\t\t/// (handy for localization), otherwise the field-specific messages have to be defined.\r\n\t\t/// \r\n\r\n\t\t$.validator.methods[name] = method;\r\n\t\t$.validator.messages[name] = message != undefined ? message : $.validator.messages[name];\r\n\t\tif (method.length < 3) {\r\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/required\r\n\t\trequired: function(value, element, param) {\r\n\t\t\t// check if dependency is met\r\n\t\t\tif ( !this.depend(param, element) )\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase 'select':\r\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $(element).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\tcase 'input':\r\n\t\t\t\tif ( this.checkable(element) )\r\n\t\t\t\t\treturn this.getLength(value, element) > 0;\r\n\t\t\tdefault:\r\n\t\t\t\treturn $.trim(value).length > 0;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/remote\r\n\t\tremote: function(value, element, param) {\r\n\t\t\tif ( this.optional(element) )\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t\r\n\t\t\tvar previous = this.previousValue(element);\r\n\t\t\tif (!this.settings.messages[element.name] )\r\n\t\t\t\tthis.settings.messages[element.name] = {};\r\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\r\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\r\n\t\t\t\r\n\t\t\tparam = typeof param == \"string\" && {url:param} || param; \r\n\t\t\t\r\n\t\t\tif ( this.pending[element.name] ) {\r\n\t\t\t\treturn \"pending\";\r\n\t\t\t}\r\n\t\t\tif ( previous.old === value ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = value;\r\n\t\t\tvar validator = this;\r\n\t\t\tthis.startRequest(element);\r\n\t\t\tvar data = {};\r\n\t\t\tdata[element.name] = value;\r\n\t\t\t$.ajax($.extend(true, {\r\n\t\t\t\turl: param,\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(response) {\r\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\r\n\t\t\t\t\tvar valid = response === true;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tvar submitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.prepareElement(element);\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push(element);\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar errors = {};\r\n\t\t\t\t\t\tvar message = response || validator.defaultMessage(element, \"remote\");\r\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\r\n\t\t\t\t\t\tvalidator.showErrors(errors);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest(element, valid);\r\n\t\t\t\t}\r\n\t\t\t}, param));\r\n\t\t\treturn \"pending\";\r\n\t\t},\r\n\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/minlength\r\n\t\tminlength: function(value, element, param) {\r\n\t\t\treturn this.optional(element) || this.getLength($.trim(value), element) >= param;\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/maxlength\r\n\t\tmaxlength: function(value, element, param) {\r\n\t\t\treturn this.optional(element) || this.getLength($.trim(value), element) <= param;\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/rangelength\r\n\t\trangelength: function(value, element, param) {\r\n\t\t\tvar length = this.getLength($.trim(value), element);\r\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/min\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional(element) || value >= param;\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/max\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional(element) || value <= param;\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/range\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/email\r\n\t\temail: function(value, element) {\r\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\r\n\t\t\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i.test(value);\r\n\t\t},\r\n\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/url\r\n\t\turl: function(value, element) {\r\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\r\n\t\t\treturn this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\r\n\t\t},\r\n \r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/date\r\n\t\tdate: function(value, element) {\r\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value));\r\n\t\t},\r\n\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/dateISO\r\n\t\tdateISO: function(value, element) {\r\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/-]\\d{1,2}[\\/-]\\d{1,2}$/.test(value);\r\n\t\t},\r\n\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/number\r\n\t\tnumber: function(value, element) {\r\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)(?:\\.\\d+)?$/.test(value);\r\n\t\t},\r\n\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/digits\r\n\t\tdigits: function(value, element) {\r\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/creditcard\r\n\t\t// based on http://en.wikipedia.org/wiki/Luhn\r\n\t\tcreditcard: function(value, element) {\r\n\t\t\tif ( this.optional(element) )\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t// accept only digits and dashes\r\n\t\t\tif (/[^0-9-]+/.test(value))\r\n\t\t\t\treturn false;\r\n\t\t\tvar nCheck = 0,\r\n\t\t\t\tnDigit = 0,\r\n\t\t\t\tbEven = false;\r\n\r\n\t\t\tvalue = value.replace(/\\D/g, \"\");\r\n\r\n\t\t\tfor (var n = value.length - 1; n >= 0; n--) {\r\n\t\t\t\tvar cDigit = value.charAt(n);\r\n\t\t\t\tvar nDigit = 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}\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\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/accept\r\n\t\taccept: function(value, element, param) {\r\n\t\t\tparam = typeof param == \"string\" ? param.replace(/,/g, '|') : \"png|jpe?g|gif\";\r\n\t\t\treturn this.optional(element) || value.match(new RegExp(\".(\" + param + \")$\", \"i\")); \r\n\t\t},\r\n\t\t\r\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/equalTo\r\n\t\tequalTo: function(value, element, param) {\r\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\r\n\t\t\tvar target = $(param).unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function() {\r\n\t\t\t\t$(element).valid();\r\n\t\t\t});\r\n\t\t\treturn value == target.val();\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n});\r\n\r\n// deprecated, use $.validator.format instead\r\n$.format = $.validator.format;\r\n\r\n})(jQuery);\r\n\r\n// ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() \r\n;(function($) {\r\n\tvar pendingRequests = {};\r\n\t\t// Use a prefilter if available (1.5+)\r\n\tif ( $.ajaxPrefilter ) {\r\n\t\t$.ajaxPrefilter(function(settings, _, xhr) {\r\n\t\t var port = settings.port;\r\n\t\t if (settings.mode == \"abort\") {\r\n\t\t\t if ( pendingRequests[port] ) {\r\n\t\t\t\t pendingRequests[port].abort();\r\n\t\t\t }\t\t\t\tpendingRequests[port] = xhr;\r\n\t\t }\r\n\t });\r\n\t} else {\r\n\t\t// Proxy ajax\r\n\t\tvar ajax = $.ajax;\r\n\t\t$.ajax = function(settings) {\r\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\t\tif (mode == \"abort\") {\r\n\t\t\t\tif ( pendingRequests[port] ) {\r\n\t\t\t\t\tpendingRequests[port].abort();\r\n\t\t\t\t}\r\n\r\n\t\t\t return (pendingRequests[port] = ajax.apply(this, arguments));\r\n\t\t }\r\n\t\t return ajax.apply(this, arguments);\r\n\t };\r\n }\r\n})(jQuery);\r\n\r\n// provides cross-browser focusin and focusout events\r\n// IE has native support, in other browsers, use event caputuring (neither bubbles)\r\n\r\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\r\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target \r\n;(function($) {\r\n\t// only implement if not provided by jQuery core (since 1.4)\r\n\t// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs\r\n\tif (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {\r\n\t\t$.each({\r\n\t\t\tfocus: 'focusin',\r\n\t\t\tblur: 'focusout'\t\r\n\t\t}, function( original, fix ){\r\n\t\t\t$.event.special[fix] = {\r\n\t\t\t\tsetup:function() {\r\n\t\t\t\t\tthis.addEventListener( original, handler, true );\r\n\t\t\t\t},\r\n\t\t\t\tteardown:function() {\r\n\t\t\t\t\tthis.removeEventListener( original, handler, true );\r\n\t\t\t\t},\r\n\t\t\t\thandler: function(e) {\r\n\t\t\t\t\targuments[0] = $.event.fix(e);\r\n\t\t\t\t\targuments[0].type = fix;\r\n\t\t\t\t\treturn $.event.handle.apply(this, arguments);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tfunction handler(e) {\r\n\t\t\t\te = $.event.fix(e);\r\n\t\t\t\te.type = fix;\r\n\t\t\t\treturn $.event.handle.call(this, e);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\t$.extend($.fn, {\r\n\t\tvalidateDelegate: function(delegate, type, handler) {\r\n\t\t\treturn this.bind(type, function(event) {\r\n\t\t\t\tvar target = $(event.target);\r\n\t\t\t\tif (target.is(delegate)) {\r\n\t\t\t\t\treturn handler.apply(target, arguments);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n})(jQuery);\r\n","/*!\r\n * jQuery Validation Plugin v1.14.0\r\n *\r\n * http://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2015 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend($.fn, {\r\n\t// http://jqueryvalidation.org/validate/\r\n\tvalidate: function( options ) {\r\n\r\n\t\t// if nothing is selected, return nothing; can't chain anyway\r\n\t\tif ( !this.length ) {\r\n\t\t\tif ( options && options.debug && window.console ) {\r\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if a validator for this form was already created\r\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\r\n\t\t// Add novalidate tag if HTML5.\r\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\r\n\r\n\t\tvalidator = new $.validator( options, this[ 0 ] );\r\n\t\t$.data( this[ 0 ], \"validator\", validator );\r\n\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\r\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\r\n\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\tvalidator.submitButton = event.target;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\r\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\r\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// validate the form on submit\r\n\t\t\tthis.on( \"submit.validate\", function( event ) {\r\n\t\t\t\tif ( validator.settings.debug ) {\r\n\t\t\t\t\t// prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tvar hidden, result;\r\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\t\tif ( validator.submitButton ) {\r\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t\t\thidden = $( \"\" )\r\n\t\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\r\n\t\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\r\n\t\t\t\t\t\t\t\t.appendTo( validator.currentForm );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\r\n\t\t\t\t\t\tif ( validator.submitButton ) {\r\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( result !== undefined ) {\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn validator;\r\n\t},\r\n\t// http://jqueryvalidation.org/valid/\r\n\tvalid: function() {\r\n\t\tvar valid, validator, errorList;\r\n\r\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\r\n\t\t\tvalid = this.validate().form();\r\n\t\t} else {\r\n\t\t\terrorList = [];\r\n\t\t\tvalid = true;\r\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvalid = validator.element( this ) && valid;\r\n\t\t\t\terrorList = errorList.concat( validator.errorList );\r\n\t\t\t});\r\n\t\t\tvalidator.errorList = errorList;\r\n\t\t}\r\n\t\treturn valid;\r\n\t},\r\n\r\n\t// http://jqueryvalidation.org/rules/\r\n\trules: function( command, argument ) {\r\n\t\tvar element = this[ 0 ],\r\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\r\n\r\n\t\tif ( command ) {\r\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\r\n\t\t\tstaticRules = settings.rules;\r\n\t\t\texistingRules = $.validator.staticRules( element );\r\n\t\t\tswitch ( command ) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\r\n\t\t\t\t// remove messages from rules, but allow them to be set separately\r\n\t\t\t\tdelete existingRules.messages;\r\n\t\t\t\tstaticRules[ element.name ] = existingRules;\r\n\t\t\t\tif ( argument.messages ) {\r\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif ( !argument ) {\r\n\t\t\t\t\tdelete staticRules[ element.name ];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tfiltered = {};\r\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\r\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\r\n\t\t\t\t\tdelete existingRules[ method ];\r\n\t\t\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\t\t\t$( element ).removeAttr( \"aria-required\" );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.classRules( element ),\r\n\t\t\t$.validator.attributeRules( element ),\r\n\t\t\t$.validator.dataRules( element ),\r\n\t\t\t$.validator.staticRules( element )\r\n\t\t), element );\r\n\r\n\t\t// make sure required is at front\r\n\t\tif ( data.required ) {\r\n\t\t\tparam = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend( { required: param }, data );\r\n\t\t\t$( element ).attr( \"aria-required\", \"true\" );\r\n\t\t}\r\n\r\n\t\t// make sure remote is at back\r\n\t\tif ( data.remote ) {\r\n\t\t\tparam = data.remote;\r\n\t\t\tdelete data.remote;\r\n\t\t\tdata = $.extend( data, { remote: param });\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n});\r\n\r\n// Custom selectors\r\n$.extend( $.expr[ \":\" ], {\r\n\t// http://jqueryvalidation.org/blank-selector/\r\n\tblank: function( a ) {\r\n\t\treturn !$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\t// http://jqueryvalidation.org/filled-selector/\r\n\tfilled: function( a ) {\r\n\t\treturn !!$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\t// http://jqueryvalidation.org/unchecked-selector/\r\n\tunchecked: function( a ) {\r\n\t\treturn !$( a ).prop( \"checked\" );\r\n\t}\r\n});\r\n\r\n// constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n// http://jqueryvalidation.org/jQuery.validator.format/\r\n$.validator.format = function( source, params ) {\r\n\tif ( arguments.length === 1 ) {\r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray( arguments );\r\n\t\t\targs.unshift( source );\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\t}\r\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\r\n\t\tparams = $.makeArray( arguments ).slice( 1 );\r\n\t}\r\n\tif ( params.constructor !== Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each( params, function( i, n ) {\r\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\r\n\t\t\treturn n;\r\n\t\t});\r\n\t});\r\n\treturn source;\r\n};\r\n\r\n$.extend( $.validator, {\r\n\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusCleanup: false,\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: \":hidden\",\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function( element ) {\r\n\t\t\tthis.lastActive = element;\r\n\r\n\t\t\t// Hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup ) {\r\n\t\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function( element ) {\r\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function( element, event ) {\r\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\r\n\t\t\t// Shift => 16\r\n\t\t\t// Ctrl => 17\r\n\t\t\t// Alt => 18\r\n\t\t\t// Caps lock => 20\r\n\t\t\t// End => 35\r\n\t\t\t// Home => 36\r\n\t\t\t// Left arrow => 37\r\n\t\t\t// Up arrow => 38\r\n\t\t\t// Right arrow => 39\r\n\t\t\t// Down arrow => 40\r\n\t\t\t// Insert => 45\r\n\t\t\t// Num lock => 144\r\n\t\t\t// AltGr key => 225\r\n\t\t\tvar excludedKeys = [\r\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\r\n\t\t\t\t38, 39, 40, 45, 144, 225\r\n\t\t\t];\r\n\r\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function( element ) {\r\n\t\t\t// click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted ) {\r\n\t\t\t\tthis.element( element );\r\n\r\n\t\t\t// or option elements, check parent select in that case\r\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\r\n\t\t\t\tthis.element( element.parentNode );\r\n\t\t\t}\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// http://jqueryvalidation.org/jQuery.validator.setDefaults/\r\n\tsetDefaults: function( settings ) {\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date ( ISO ).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tcreditcard: \"Please enter a valid credit card number.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\r\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\r\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\r\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\r\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\r\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" )\r\n\t},\r\n\r\n\tautoCreateRanges: false,\r\n\r\n\tprototype: {\r\n\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\r\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tvar groups = ( this.groups = {} ),\r\n\t\t\t\trules;\r\n\t\t\t$.each( this.settings.groups, function( key, value ) {\r\n\t\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\t\tvalue = value.split( /\\s/ );\r\n\t\t\t\t}\r\n\t\t\t\t$.each( value, function( index, name ) {\r\n\t\t\t\t\tgroups[ name ] = key;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\trules = this.settings.rules;\r\n\t\t\t$.each( rules, function( key, value ) {\r\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\r\n\t\t\t});\r\n\r\n\t\t\tfunction delegate( event ) {\r\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\r\n\t\t\t\t\tsettings = validator.settings;\r\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\r\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\r\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\r\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\r\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\r\n\t\t\t\t\t\"[type='radio'], [type='checkbox']\", delegate)\r\n\t\t\t\t// Support: Chrome, oldIE\r\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\r\n\t\t\t\t.on(\"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate);\r\n\r\n\t\t\tif ( this.settings.invalidHandler ) {\r\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\r\n\t\t\t}\r\n\r\n\t\t\t// Add aria-required to any Static/Data/Class required fields before first validation\r\n\t\t\t// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html\r\n\t\t\t$( this.currentForm ).find( \"[required], [data-rule-required], .required\" ).attr( \"aria-required\", \"true\" );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.form/\r\n\t\tform: function() {\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend( this.submitted, this.errorMap );\r\n\t\t\tthis.invalid = $.extend({}, this.errorMap );\r\n\t\t\tif ( !this.valid() ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\r\n\t\t\t\tthis.check( elements[ i ] );\r\n\t\t\t}\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.element/\r\n\t\telement: function( element ) {\r\n\t\t\tvar cleanElement = this.clean( element ),\r\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\r\n\t\t\t\tresult = true;\r\n\r\n\t\t\tthis.lastElement = checkElement;\r\n\r\n\t\t\tif ( checkElement === undefined ) {\r\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\r\n\t\t\t} else {\r\n\t\t\t\tthis.prepareElement( checkElement );\r\n\t\t\t\tthis.currentElements = $( checkElement );\r\n\r\n\t\t\t\tresult = this.check( checkElement ) !== false;\r\n\t\t\t\tif ( result ) {\r\n\t\t\t\t\tdelete this.invalid[ checkElement.name ];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Add aria-invalid status for screen readers\r\n\t\t\t$( element ).attr( \"aria-invalid\", !result );\r\n\r\n\t\t\tif ( !this.numberOfInvalids() ) {\r\n\t\t\t\t// Hide error containers on last error\r\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.showErrors/\r\n\t\tshowErrors: function( errors ) {\r\n\t\t\tif ( errors ) {\r\n\t\t\t\t// add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = [];\r\n\t\t\t\tfor ( var name in errors ) {\r\n\t\t\t\t\tthis.errorList.push({\r\n\t\t\t\t\t\tmessage: errors[ name ],\r\n\t\t\t\t\t\telement: this.findByName( name )[ 0 ]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\r\n\t\t\t\t\treturn !( element.name in errors );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif ( this.settings.showErrors ) {\r\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\r\n\t\t\t} else {\r\n\t\t\t\tthis.defaultShowErrors();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.resetForm/\r\n\t\tresetForm: function() {\r\n\t\t\tif ( $.fn.resetForm ) {\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\t}\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.lastElement = null;\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tvar i, elements = this.elements()\r\n\t\t\t\t.removeData( \"previousValue\" )\r\n\t\t\t\t.removeAttr( \"aria-invalid\" );\r\n\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\r\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\telements.removeClass( this.settings.errorClass );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\treturn this.objectLength( this.invalid );\r\n\t\t},\r\n\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\t/* jshint unused: false */\r\n\t\t\tvar count = 0,\r\n\t\t\t\ti;\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\thideErrors: function() {\r\n\t\t\tthis.hideThese( this.toHide );\r\n\t\t},\r\n\r\n\t\thideThese: function( errors ) {\r\n\t\t\terrors.not( this.containers ).text( \"\" );\r\n\t\t\tthis.addWrapper( errors ).hide();\r\n\t\t},\r\n\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() === 0;\r\n\t\t},\r\n\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif ( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])\r\n\t\t\t\t\t.filter( \":visible\" )\r\n\t\t\t\t\t.focus()\r\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t.trigger( \"focusin\" );\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\r\n\t\t\t\treturn n.element.name === lastActive.name;\r\n\t\t\t}).length === 1 && lastActive;\r\n\t\t},\r\n\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\r\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\treturn $( this.currentForm )\r\n\t\t\t.find( \"input, select, textarea\" )\r\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter( function() {\r\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\r\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trulesCache[ this.name ] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[ 0 ];\r\n\t\t},\r\n\r\n\t\terrors: function() {\r\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\r\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $( [] );\r\n\t\t\tthis.toHide = $( [] );\r\n\t\t\tthis.currentElements = $( [] );\r\n\t\t},\r\n\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor( element );\r\n\t\t},\r\n\r\n\t\telementValue: function( element ) {\r\n\t\t\tvar val,\r\n\t\t\t\t$element = $( element ),\r\n\t\t\t\ttype = element.type;\r\n\r\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\r\n\t\t\t\treturn this.findByName( element.name ).filter(\":checked\").val();\r\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\r\n\t\t\t\treturn element.validity.badInput ? false : $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tval = $element.val();\r\n\t\t\tif ( typeof val === \"string\" ) {\r\n\t\t\t\treturn val.replace(/\\r/g, \"\" );\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\r\n\r\n\t\t\tvar rules = $( element ).rules(),\r\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}).length,\r\n\t\t\t\tdependencyMismatch = false,\r\n\t\t\t\tval = this.elementValue( element ),\r\n\t\t\t\tresult, method, rule;\r\n\r\n\t\t\tfor ( method in rules ) {\r\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\r\n\t\t\t\ttry {\r\n\r\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\r\n\r\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\r\n\t\t\t\t\tif ( result === \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( e instanceof TypeError ) {\r\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( dependencyMismatch ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( this.objectLength( rules ) ) {\r\n\t\t\t\tthis.successList.push( element );\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t// return the custom message for the given element and validation method\r\n\t\t// specified in the element's HTML5 data attribute\r\n\t\t// return the generic message if present and no method specific message is present\r\n\t\tcustomDataMessage: function( element, method ) {\r\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\r\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\r\n\t\t},\r\n\r\n\t\t// return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[ name ];\r\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ]);\r\n\t\t},\r\n\r\n\t\t// return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor ( var i = 0; i < arguments.length; i++) {\r\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\r\n\t\t\t\t\treturn arguments[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\r\n\t\tdefaultMessage: function( element, method ) {\r\n\t\t\treturn this.findDefined(\r\n\t\t\t\tthis.customMessage( element.name, method ),\r\n\t\t\t\tthis.customDataMessage( element, method ),\r\n\t\t\t\t// title is never undefined, so handle empty string as undefined\r\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t$.validator.messages[ method ],\r\n\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message === \"function\" ) {\r\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\r\n\t\t\t} else if ( theregex.test( message ) ) {\r\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\r\n\t\t\t}\r\n\t\t\tthis.errorList.push({\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element,\r\n\t\t\t\tmethod: rule.method\r\n\t\t\t});\r\n\r\n\t\t\tthis.errorMap[ element.name ] = message;\r\n\t\t\tthis.submitted[ element.name ] = message;\r\n\t\t},\r\n\r\n\t\taddWrapper: function( toToggle ) {\r\n\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\t}\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tvar i, elements, error;\r\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\r\n\t\t\t\terror = this.errorList[ i ];\r\n\t\t\t\tif ( this.settings.highlight ) {\r\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif ( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.success ) {\r\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not( this.invalidElements() );\r\n\t\t},\r\n\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $( this.errorList ).map(function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tshowLabel: function( element, message ) {\r\n\t\t\tvar place, group, errorID,\r\n\t\t\t\terror = this.errorsFor( element ),\r\n\t\t\t\telementID = this.idOrName( element ),\r\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\r\n\t\t\tif ( error.length ) {\r\n\t\t\t\t// refresh error/success class\r\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\r\n\t\t\t\t// replace message on existing label\r\n\t\t\t\terror.html( message );\r\n\t\t\t} else {\r\n\t\t\t\t// create error element\r\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\r\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\r\n\t\t\t\t\t.addClass( this.settings.errorClass )\r\n\t\t\t\t\t.html( message || \"\" );\r\n\r\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\r\n\t\t\t\tplace = error;\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\t\t// make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.labelContainer.length ) {\r\n\t\t\t\t\tthis.labelContainer.append( place );\r\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\r\n\t\t\t\t\tthis.settings.errorPlacement( place, $( element ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tplace.insertAfter( element );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Link error back to the element\r\n\t\t\t\tif ( error.is( \"label\" ) ) {\r\n\t\t\t\t\t// If the error is a label, then associate using 'for'\r\n\t\t\t\t\terror.attr( \"for\", elementID );\r\n\t\t\t\t} else if ( error.parents( \"label[for='\" + elementID + \"']\" ).length === 0 ) {\r\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\r\n\t\t\t\t\t// to explicitly apply aria-describedby\r\n\r\n\t\t\t\t\terrorID = error.attr( \"id\" ).replace( /(:|\\.|\\[|\\]|\\$)/g, \"\\\\$1\");\r\n\t\t\t\t\t// Respect existing non-error aria-describedby\r\n\t\t\t\t\tif ( !describedBy ) {\r\n\t\t\t\t\t\tdescribedBy = errorID;\r\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + errorID + \"\\\\b\" ) ) ) {\r\n\t\t\t\t\t\t// Add to end of list if not already present\r\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\r\n\r\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\r\n\t\t\t\t\tgroup = this.groups[ element.name ];\r\n\t\t\t\t\tif ( group ) {\r\n\t\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\t\tif ( testgroup === group ) {\r\n\t\t\t\t\t\t\t\t$( \"[name='\" + name + \"']\", this.currentForm )\r\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\terror.text( \"\" );\r\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\r\n\t\t\t\t\terror.addClass( this.settings.success );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.settings.success( error, element );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add( error );\r\n\t\t},\r\n\r\n\t\terrorsFor: function( element ) {\r\n\t\t\tvar name = this.idOrName( element ),\r\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\r\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\r\n\r\n\t\t\t// aria-describedby should directly reference the error element\r\n\t\t\tif ( describer ) {\r\n\t\t\t\tselector = selector + \", #\" + describer.replace( /\\s+/g, \", #\" );\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t\t\t.errors()\r\n\t\t\t\t.filter( selector );\r\n\t\t},\r\n\r\n\t\tidOrName: function( element ) {\r\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\r\n\t\t},\r\n\r\n\t\tvalidationTargetFor: function( element ) {\r\n\r\n\t\t\t// If radio/checkbox, validate first element in group instead\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\telement = this.findByName( element.name );\r\n\t\t\t}\r\n\r\n\t\t\t// Always apply ignore filter\r\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\r\n\t\t},\r\n\r\n\t\tfindByName: function( name ) {\r\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + name + \"']\" );\r\n\t\t},\r\n\r\n\t\tgetLength: function( value, element ) {\r\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase \"select\":\r\n\t\t\t\treturn $( \"option:selected\", element ).length;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\r\n\t\tdepend: function( param, element ) {\r\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;\r\n\t\t},\r\n\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function( param ) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function( param, element ) {\r\n\t\t\t\treturn !!$( param, element.form ).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function( param, element ) {\r\n\t\t\t\treturn param( element );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\toptional: function( element ) {\r\n\t\t\tvar val = this.elementValue( element );\r\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\r\n\t\t},\r\n\r\n\t\tstartRequest: function( element ) {\r\n\t\t\tif ( !this.pending[ element.name ] ) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\tthis.pending[ element.name ] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopRequest: function( element, valid ) {\r\n\t\t\tthis.pendingRequest--;\r\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif ( this.pendingRequest < 0 ) {\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\t}\r\n\t\t\tdelete this.pending[ element.name ];\r\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$( this.currentForm ).submit();\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpreviousValue: function( element ) {\r\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// cleans up all forms and elements, removes validator-specific events\r\n\t\tdestroy: function() {\r\n\t\t\tthis.resetForm();\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.off( \".validate\" )\r\n\t\t\t\t.removeData( \"validator\" );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclassRuleSettings: {\r\n\t\trequired: { required: true },\r\n\t\temail: { email: true },\r\n\t\turl: { url: true },\r\n\t\tdate: { date: true },\r\n\t\tdateISO: { dateISO: true },\r\n\t\tnumber: { number: true },\r\n\t\tdigits: { digits: true },\r\n\t\tcreditcard: { creditcard: true }\r\n\t},\r\n\r\n\taddClassRules: function( className, rules ) {\r\n\t\tif ( className.constructor === String ) {\r\n\t\t\tthis.classRuleSettings[ className ] = rules;\r\n\t\t} else {\r\n\t\t\t$.extend( this.classRuleSettings, className );\r\n\t\t}\r\n\t},\r\n\r\n\tclassRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tclasses = $( element ).attr( \"class\" );\r\n\r\n\t\tif ( classes ) {\r\n\t\t\t$.each( classes.split( \" \" ), function() {\r\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\r\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\r\n\r\n\t\t// convert the value to a number for number inputs, and for text for backwards compability\r\n\t\t// allows type=\"date\" and others to be compared as strings\r\n\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\r\n\t\t\tvalue = Number( value );\r\n\r\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\r\n\t\t\tif ( isNaN( value ) ) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( value || value === 0 ) {\r\n\t\t\trules[ method ] = value;\r\n\t\t} else if ( type === method && type !== \"range\" ) {\r\n\r\n\t\t\t// exception: the jquery validate 'range' method\r\n\t\t\t// does not test for the html5 'range' type\r\n\t\t\trules[ method ] = true;\r\n\t\t}\r\n\t},\r\n\r\n\tattributeRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\r\n\t\t\t// support for in both html5 and older browsers\r\n\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\tvalue = element.getAttribute( method );\r\n\r\n\t\t\t\t// Some browsers return an empty string for the required attribute\r\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\r\n\t\t\t\tif ( value === \"\" ) {\r\n\t\t\t\t\tvalue = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// force non-HTML5 browsers to return bool\r\n\t\t\t\tvalue = !!value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $element.attr( method );\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\r\n\t\t// maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\r\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tdataRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tstaticRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tvalidator = $.data( element.form, \"validator\" );\r\n\r\n\t\tif ( validator.settings.rules ) {\r\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeRules: function( rules, element ) {\r\n\t\t// handle dependency check\r\n\t\t$.each( rules, function( prop, val ) {\r\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif ( val === false ) {\r\n\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( val.param || val.depends ) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch ( typeof val.depends ) {\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif ( keepRule ) {\r\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// evaluate parameters\r\n\t\t$.each( rules, function( rule, parameter ) {\r\n\t\t\trules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter;\r\n\t\t});\r\n\r\n\t\t// clean number parameters\r\n\t\t$.each([ \"minlength\", \"maxlength\" ], function() {\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\trules[ this ] = Number( rules[ this ] );\r\n\t\t\t}\r\n\t\t});\r\n\t\t$.each([ \"rangelength\", \"range\" ], function() {\r\n\t\t\tvar parts;\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\r\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ];\r\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\r\n\t\t\t\t\tparts = rules[ this ].replace(/[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\r\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif ( $.validator.autoCreateRanges ) {\r\n\t\t\t// auto-create ranges\r\n\t\t\tif ( rules.min != null && rules.max != null ) {\r\n\t\t\t\trules.range = [ rules.min, rules.max ];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\r\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function( data ) {\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each( data.split( /\\s/ ), function() {\r\n\t\t\t\ttransformed[ this ] = true;\r\n\t\t\t});\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\r\n\t// http://jqueryvalidation.org/jQuery.validator.addMethod/\r\n\taddMethod: function( name, method, message ) {\r\n\t\t$.validator.methods[ name ] = method;\r\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\r\n\t\tif ( method.length < 3 ) {\r\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\r\n\t\t// http://jqueryvalidation.org/required-method/\r\n\t\trequired: function( value, element, param ) {\r\n\t\t\t// check if dependency is met\r\n\t\t\tif ( !this.depend( param, element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\r\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $( element ).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\t}\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\treturn this.getLength( value, element ) > 0;\r\n\t\t\t}\r\n\t\t\treturn value.length > 0;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/email-method/\r\n\t\temail: function( value, element ) {\r\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\r\n\t\t\t// Retrieved 2014-01-14\r\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\r\n\t\t\t// Or use custom methods to implement your own email validation\r\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/url-method/\r\n\t\turl: function( value, element ) {\r\n\r\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\r\n\t\t\t// https://gist.github.com/dperini/729294\r\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\r\n\t\t\t// modified to allow protocol-relative URLs\r\n\t\t\treturn this.optional( element ) || /^(?:(?:(?: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( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/date-method/\r\n\t\tdate: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/dateISO-method/\r\n\t\tdateISO: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/number-method/\r\n\t\tnumber: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/digits-method/\r\n\t\tdigits: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/creditcard-method/\r\n\t\t// based on http://en.wikipedia.org/wiki/Luhn_algorithm\r\n\t\tcreditcard: function( value, element ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\t// accept only spaces, digits and dashes\r\n\t\t\tif ( /[^0-9 \\-]+/.test( value ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\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\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/minlength-method/\r\n\t\tminlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length >= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/maxlength-method/\r\n\t\tmaxlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length <= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/rangelength-method/\r\n\t\trangelength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/min-method/\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value >= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/max-method/\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value <= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/range-method/\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/equalTo-method/\r\n\t\tequalTo: function( value, element, param ) {\r\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\r\n\t\t\tvar target = $( param );\r\n\t\t\tif ( this.settings.onfocusout ) {\r\n\t\t\t\ttarget.off( \".validate-equalTo\" ).on( \"blur.validate-equalTo\", function() {\r\n\t\t\t\t\t$( element ).valid();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn value === target.val();\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/remote-method/\r\n\t\tremote: function( value, element, param ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\r\n\t\t\tvar previous = this.previousValue( element ),\r\n\t\t\t\tvalidator, data;\r\n\r\n\t\t\tif (!this.settings.messages[ element.name ] ) {\r\n\t\t\t\tthis.settings.messages[ element.name ] = {};\r\n\t\t\t}\r\n\t\t\tprevious.originalMessage = this.settings.messages[ element.name ].remote;\r\n\t\t\tthis.settings.messages[ element.name ].remote = previous.message;\r\n\r\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\r\n\r\n\t\t\tif ( previous.old === value ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = value;\r\n\t\t\tvalidator = this;\r\n\t\t\tthis.startRequest( element );\r\n\t\t\tdata = {};\r\n\t\t\tdata[ element.name ] = value;\r\n\t\t\t$.ajax( $.extend( true, {\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontext: validator.currentForm,\r\n\t\t\t\tsuccess: function( response ) {\r\n\t\t\t\t\tvar valid = response === true || response === \"true\",\r\n\t\t\t\t\t\terrors, message, submitted;\r\n\r\n\t\t\t\t\tvalidator.settings.messages[ element.name ].remote = previous.originalMessage;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.prepareElement( element );\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push( element );\r\n\t\t\t\t\t\tdelete validator.invalid[ element.name ];\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrors = {};\r\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, \"remote\" );\r\n\t\t\t\t\t\terrors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\r\n\t\t\t\t\t\tvalidator.showErrors( errors );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest( element, valid );\r\n\t\t\t\t}\r\n\t\t\t}, param ) );\r\n\t\t\treturn \"pending\";\r\n\t\t}\r\n\t}\r\n\r\n});\r\n\r\n// ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\r\n\r\nvar pendingRequests = {},\r\n\tajax;\r\n// Use a prefilter if available (1.5+)\r\nif ( $.ajaxPrefilter ) {\r\n\t$.ajaxPrefilter(function( settings, _, xhr ) {\r\n\t\tvar port = settings.port;\r\n\t\tif ( settings.mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[port] ) {\r\n\t\t\t\tpendingRequests[port].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[port] = xhr;\r\n\t\t}\r\n\t});\r\n} else {\r\n\t// Proxy ajax\r\n\tajax = $.ajax;\r\n\t$.ajax = function( settings ) {\r\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\tif ( mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[port] ) {\r\n\t\t\t\tpendingRequests[port].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[port] = ajax.apply(this, arguments);\r\n\t\t\treturn pendingRequests[port];\r\n\t\t}\r\n\t\treturn ajax.apply(this, arguments);\r\n\t};\r\n}\r\n\r\n}));","/*! jQuery Validation Plugin - v1.14.0 - 6/30/2015\r\n * http://jqueryvalidation.org/\r\n * Copyright (c) 2015 Jörn Zaefferer; Licensed MIT */\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn(\"Nothing selected, can't validate, returning nothing.\"));var c=a.data(this[0],\"validator\");return c?c:(this.attr(\"novalidate\",\"novalidate\"),c=new a.validator(b,this[0]),a.data(this[0],\"validator\",c),c.settings.onsubmit&&(this.on(\"click.validate\",\":submit\",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass(\"cancel\")&&(c.cancelSubmit=!0),void 0!==a(this).attr(\"formnovalidate\")&&(c.cancelSubmit=!0)}),this.on(\"submit.validate\",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a(\"\").attr(\"name\",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is(\"form\")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,d=d.concat(c.errorList)}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,\"validator\").settings,e=d.rules,f=a.validator.staticRules(j),b){case\"add\":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case\"remove\":return c?(i={},a.each(c.split(/\\s/),function(b,c){i[c]=f[c],delete f[c],\"required\"===c&&a(j).removeAttr(\"aria-required\")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr(\"aria-required\",\"true\")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[\":\"],{blank:function(b){return!a.trim(\"\"+a(b).val())},filled:function(b){return!!a.trim(\"\"+a(b).val())},unchecked:function(b){return!a(b).prop(\"checked\")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp(\"\\\\{\"+a+\"\\\\}\",\"g\"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&\"\"===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b===this.lastElement)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date ( ISO ).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:a.validator.format(\"Please enter no more than {0} characters.\"),minlength:a.validator.format(\"Please enter at least {0} characters.\"),rangelength:a.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:a.validator.format(\"Please enter a value between {0} and {1}.\"),max:a.validator.format(\"Please enter a value less than or equal to {0}.\"),min:a.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,\"validator\"),d=\"on\"+b.type.replace(/^validate/,\"\"),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){\"string\"==typeof c&&(c=c.split(/\\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on(\"focusin.validate focusout.validate keyup.validate\",\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']\",b).on(\"click.validate\",\"select, option, [type='radio'], [type='checkbox']\",b),this.settings.invalidHandler&&a(this.currentForm).on(\"invalid-form.validate\",this.settings.invalidHandler),a(this.currentForm).find(\"[required], [data-rule-required], .required\").attr(\"aria-required\",\"true\")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr(\"aria-invalid\",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors();var b,c=this.elements().removeData(\"previousValue\").removeAttr(\"aria-invalid\");if(this.settings.unhighlight)for(b=0;c[b];b++)this.settings.unhighlight.call(this,c[b],this.settings.errorClass,\"\");else c.removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(\"\"),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, :disabled\").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(\" \").join(\".\");return a(this.settings.errorElement+\".\"+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return\"radio\"===e||\"checkbox\"===e?this.findByName(b.name).filter(\":checked\").val():\"number\"===e&&\"undefined\"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),\"string\"==typeof c?c.replace(/\\r/g,\"\"):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),\"dependency-mismatch\"===c&&1===g){h=!0;continue}if(h=!1,\"pending\"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log(\"Exception occurred when checking element \"+b.id+\", check the '\"+e.method+\"' method.\",j),j instanceof TypeError&&(j.message+=\". Exception occurred when checking element \"+b.id+\", check the '\"+e.method+\"' method.\"),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data(\"msg\"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data(\"msg\")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for \"+b.name+\"\")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\\$?\\{(\\d+)\\}/g;\"function\"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,\"{$1}\"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr(\"aria-describedby\");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a(\"<\"+this.settings.errorElement+\">\").attr(\"id\",h+\"-error\").addClass(this.settings.errorClass).html(c||\"\"),d=g,this.settings.wrapper&&(d=g.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is(\"label\")?g.attr(\"for\",h):0===g.parents(\"label[for='\"+h+\"']\").length&&(f=g.attr(\"id\").replace(/(:|\\.|\\[|\\]|\\$)/g,\"\\\\$1\"),i?i.match(new RegExp(\"\\\\b\"+f+\"\\\\b\"))||(i+=\" \"+f):i=f,a(b).attr(\"aria-describedby\",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a(\"[name='\"+b+\"']\",this.currentForm).attr(\"aria-describedby\",g.attr(\"id\"))}))),!c&&this.settings.success&&(g.text(\"\"),\"string\"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr(\"aria-describedby\"),e=\"label[for='\"+c+\"'], label[for='\"+c+\"'] *\";return d&&(e=e+\", #\"+d.replace(/\\s+/g,\", #\")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find(\"[name='\"+b+\"']\")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case\"select\":return a(\"option:selected\",c).length;case\"input\":if(this.checkable(c))return this.findByName(c.name).filter(\":checked\").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{\"boolean\":function(a){return a},string:function(b,c){return!!a(b,c.form).length},\"function\":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&\"dependency-mismatch\"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,\"previousValue\")||a.data(b,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(b,\"remote\")})},destroy:function(){this.resetForm(),a(this.currentForm).off(\".validate\").removeData(\"validator\")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr(\"class\");return d&&a.each(d.split(\" \"),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&\"range\"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute(\"type\");for(c in a.validator.methods)\"required\"===c?(d=b.getAttribute(c),\"\"===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute(\"type\");for(c in a.validator.methods)d=f.data(\"rule\"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,\"validator\");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case\"string\":f=!!a(e.depends,c.form).length;break;case\"function\":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each([\"minlength\",\"maxlength\"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each([\"rangelength\",\"range\"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:\"string\"==typeof b[this]&&(c=b[this].replace(/[\\[\\]]/g,\"\").split(/[\\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if(\"string\"==typeof b){var c={};a.each(b.split(/\\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return\"dependency-mismatch\";if(\"select\"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?: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(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\\D/g,\"\"),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.off(\".validate-equalTo\").on(\"blur.validate-equalTo\",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return\"dependency-mismatch\";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d=\"string\"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{mode:\"abort\",port:\"validate\"+c.name,dataType:\"json\",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||\"true\"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,\"remote\"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),\"pending\")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;\"abort\"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=(\"mode\"in d?d:a.ajaxSettings).mode,f=(\"port\"in d?d:a.ajaxSettings).port;return\"abort\"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})});","/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*!\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"\").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n if (container) {\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this),\r\n key = '__jquery_unobtrusive_validation_form_reset';\r\n if ($form.data(key)) {\r\n return;\r\n }\r\n // Set a flag that indicates we're currently resetting the form.\r\n $form.data(key, true);\r\n try {\r\n $form.data(\"validator\").resetForm();\r\n } finally {\r\n $form.removeData(key);\r\n }\r\n\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n }\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// \r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// \r\n /// The HTML element to be parsed.\r\n /// [Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// \r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// \r\n /// Any valid jQuery selector.\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .addBack()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).\r\n /// The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.\r\n /// \r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.\r\n /// The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".\r\n /// \r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\r\n /// [Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(\":checkbox\")) {\r\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\r\n }\r\n else if (field.is(\":radio\")) {\r\n return field.filter(\":checked\").val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n}(jQuery));","/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n(function(a){var d=a.validator,b,e=\"unobtrusiveValidation\";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\\s+|\\s+$/g,\"\").split(/\\s*,\\s*/g)}function f(a){return a.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g,\"\\\\$1\")}function h(a){return a.substr(0,a.lastIndexOf(\".\")+1)}function g(a,b){if(a.indexOf(\"*.\")===0)a=a.replace(\"*.\",b);return a}function m(c,e){var b=a(this).find(\"[data-valmsg-for='\"+f(e[0].name)+\"']\"),d=b.attr(\"data-valmsg-replace\"),g=d?a.parseJSON(d)!==false:null;b.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");c.data(\"unobtrusiveContainer\",b);if(g){b.empty();c.removeClass(\"input-validation-error\").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find(\"[data-valmsg-summary=true]\"),b=c.find(\"ul\");if(b&&b.length&&d.errorList.length){b.empty();c.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");a.each(d.errorList,function(){a(\"\").html(this.message).appendTo(b)})}}function k(d){var b=d.data(\"unobtrusiveContainer\"),c=b.attr(\"data-valmsg-replace\"),e=c?a.parseJSON(c):null;if(b){b.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");d.removeData(\"unobtrusiveContainer\");e&&b.empty()}}function n(){var b=a(this),c=\"__jquery_unobtrusive_validation_form_reset\";if(b.data(c))return;b.data(c,true);try{b.data(\"validator\").resetForm()}finally{b.removeData(c)}b.find(\".validation-summary-errors\").addClass(\"validation-summary-valid\").removeClass(\"validation-summary-errors\");b.find(\".field-validation-error\").addClass(\"field-validation-valid\").removeClass(\"field-validation-error\").removeData(\"unobtrusiveContainer\").find(\">*\").removeData(\"unobtrusiveContainer\")}function i(b){var c=a(b),f=c.data(e),i=a.proxy(n,b),g=d.unobtrusive.options||{},h=function(e,d){var c=g[e];c&&a.isFunction(c)&&c.apply(b,d)};if(!f){f={options:{errorClass:g.errorClass||\"input-validation-error\",errorElement:g.errorElement||\"span\",errorPlacement:function(){m.apply(b,arguments);h(\"errorPlacement\",arguments)},invalidHandler:function(){l.apply(b,arguments);h(\"invalidHandler\",arguments)},messages:{},rules:{},success:function(){k.apply(b,arguments);h(\"success\",arguments)}},attachValidation:function(){c.off(\"reset.\"+e,i).on(\"reset.\"+e,i).validate(this.options)},validate:function(){c.validate();return c.valid()}};c.data(e,f)}return f}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents(\"form\")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c=\"data-val-\"+this.name,i=d.attr(c),h={};if(i!==undefined){c+=\"-\";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(c){var b=a(c),e=b.parents().addBack().filter(\"form\").add(b.find(\"form\")).has(\"[data-val=true]\");b.find(\"[data-val=true]\").each(function(){d.unobtrusive.parseElement(this,true)});e.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||\"min\",b||\"max\"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||\"val\"],function(e){c(e,d||a,e.params[b])})};d.addMethod(\"__dummy__\",function(){return true});d.addMethod(\"regex\",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod(\"nonalphamin\",function(c,d,b){var a;if(b){a=c.match(/\\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal(\"accept\",\"mimtype\");b.addSingleVal(\"extension\",\"extension\")}else b.addSingleVal(\"extension\",\"extension\",\"accept\");b.addSingleVal(\"regex\",\"pattern\");b.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");b.addMinMax(\"length\",\"minlength\",\"maxlength\",\"rangelength\").addMinMax(\"range\",\"min\",\"max\",\"range\");b.addMinMax(\"minlength\",\"minlength\").addMinMax(\"maxlength\",\"minlength\",\"maxlength\");b.add(\"equalto\",[\"other\"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(\":input\").filter(\"[name='\"+f(d)+\"']\")[0];c(b,\"equalTo\",e)});b.add(\"required\",function(a){(a.element.tagName.toUpperCase()!==\"INPUT\"||a.element.type.toUpperCase()!==\"CHECKBOX\")&&c(a,\"required\",true)});b.add(\"remote\",[\"url\",\"type\",\"additionalfields\"],function(b){var d={url:b.params.url,type:b.params.type||\"GET\",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){var d=a(b.form).find(\":input\").filter(\"[name='\"+f(c)+\"']\");return d.is(\":checkbox\")?d.filter(\":checked\").val()||d.filter(\":hidden\").val()||\"\":d.is(\":radio\")?d.filter(\":checked\").val()||\"\":d.val()}});c(b,\"remote\",d)});b.add(\"password\",[\"min\",\"nonalphamin\",\"regex\"],function(a){a.params.min&&c(a,\"minlength\",a.params.min);a.params.nonalphamin&&c(a,\"nonalphamin\",a.params.nonalphamin);a.params.regex&&c(a,\"regex\",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery);","module.exports = jQuery;"],"sourceRoot":""}