{"version":3,"file":"js/4857-08cb2240a4f03d24d768.js","mappings":"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","sources":["webpack://lionwheel/./node_modules/@nathanvda/cocoon/cocoon.js","webpack://lionwheel/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack://lionwheel/./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack://lionwheel/./node_modules/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js","webpack://lionwheel/./node_modules/bootstrap-notify/bootstrap-notify.js","webpack://lionwheel/./node_modules/jqdoublescroll/jquery.doubleScroll.js","webpack://lionwheel/./node_modules/jquery-highlight/jquery.highlight.js","webpack://lionwheel/./node_modules/jquery-validation/dist/jquery.validate.js","webpack://lionwheel/./node_modules/perfect-scrollbar/dist/perfect-scrollbar.js","webpack://lionwheel/./node_modules/tooltipster/dist/js/tooltipster.bundle.js"],"sourcesContent":["(function($) {\n\n var cocoon_element_counter = 0;\n\n var create_new_id = function() {\n return (new Date().getTime() + cocoon_element_counter++);\n }\n\n var newcontent_braced = function(id) {\n return '[' + id + ']$1';\n }\n\n var newcontent_underscord = function(id) {\n return '_' + id + '_$1';\n }\n\n var getInsertionNodeElem = function(insertionNode, insertionTraversal, $this){\n\n if (!insertionNode){\n return $this.parent();\n }\n\n if (typeof insertionNode == 'function'){\n if(insertionTraversal){\n console.warn('association-insertion-traversal is ignored, because association-insertion-node is given as a function.')\n }\n return insertionNode($this);\n }\n\n if(typeof insertionNode == 'string'){\n if (insertionTraversal){\n return $this[insertionTraversal](insertionNode);\n }else{\n return insertionNode == \"this\" ? $this : $(insertionNode);\n }\n }\n\n }\n\n $(document).on('click', '.add_fields', function(e) {\n e.preventDefault();\n e.stopPropagation();\n \n var $this = $(this),\n assoc = $this.data('association'),\n assocs = $this.data('associations'),\n content = $this.data('association-insertion-template'),\n insertionMethod = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before',\n insertionNode = $this.data('association-insertion-node'),\n insertionTraversal = $this.data('association-insertion-traversal'),\n count = parseInt($this.data('count'), 10),\n regexp_braced = new RegExp('\\\\[new_' + assoc + '\\\\](.*?\\\\s)', 'g'),\n regexp_underscord = new RegExp('_new_' + assoc + '_(\\\\w*)', 'g'),\n new_id = create_new_id(),\n new_content = content.replace(regexp_braced, newcontent_braced(new_id)),\n new_contents = [],\n originalEvent = e;\n\n\n if (new_content == content) {\n regexp_braced = new RegExp('\\\\[new_' + assocs + '\\\\](.*?\\\\s)', 'g');\n regexp_underscord = new RegExp('_new_' + assocs + '_(\\\\w*)', 'g');\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n }\n\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents = [new_content];\n\n count = (isNaN(count) ? 1 : Math.max(count, 1));\n count -= 1;\n\n while (count) {\n new_id = create_new_id();\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents.push(new_content);\n\n count -= 1;\n }\n\n var insertionNodeElem = getInsertionNodeElem(insertionNode, insertionTraversal, $this)\n\n if( !insertionNodeElem || (insertionNodeElem.length == 0) ){\n console.warn(\"Couldn't find the element to insert the template. Make sure your `data-association-insertion-*` on `link_to_add_association` is correct.\")\n }\n\n $.each(new_contents, function(i, node) {\n var contentNode = $(node);\n\n var before_insert = jQuery.Event('cocoon:before-insert');\n insertionNodeElem.trigger(before_insert, [contentNode, originalEvent]);\n\n if (!before_insert.isDefaultPrevented()) {\n // allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)\n // to be called on the node. allows the insertion node to be the parent of the inserted\n // code and doesn't force it to be a sibling like after/before does. default: 'before'\n var addedContent = insertionNodeElem[insertionMethod](contentNode);\n\n insertionNodeElem.trigger('cocoon:after-insert', [contentNode,\n originalEvent]);\n }\n });\n });\n\n $(document).on('click', '.remove_fields.dynamic, .remove_fields.existing', function(e) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields',\n node_to_delete = $this.closest('.' + wrapper_class),\n trigger_node = node_to_delete.parent(),\n originalEvent = e;\n\n e.preventDefault();\n e.stopPropagation();\n\n var before_remove = jQuery.Event('cocoon:before-remove');\n trigger_node.trigger(before_remove, [node_to_delete, originalEvent]);\n\n if (!before_remove.isDefaultPrevented()) {\n var timeout = trigger_node.data('remove-timeout') || 0;\n\n setTimeout(function() {\n if ($this.hasClass('dynamic')) {\n node_to_delete.detach();\n } else {\n $this.prev(\"input[type=hidden]\").val(\"1\");\n node_to_delete.hide();\n }\n trigger_node.trigger('cocoon:after-remove', [node_to_delete,\n originalEvent]);\n }, timeout);\n }\n });\n\n\n $(document).on(\"ready page:load turbolinks:load\", function() {\n $('.remove_fields.existing.destroyed').each(function(i, obj) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields';\n\n $this.closest('.' + wrapper_class).hide();\n });\n });\n\n})(jQuery);\n\n\n","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n \"use strict\";\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })(function(undefined) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function() {\n createClass(FileChecksum, null, [ {\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n } ]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function(event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function(event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n } ]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function() {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n } ]);\n return BlobRecord;\n }();\n var BlobUpload = function() {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function(event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function(event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [ {\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n } ]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function() {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [ {\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function(error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function(error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function(error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n } ]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function() {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function(error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function(event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n } ]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function() {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function(input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [ {\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function(error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function(input) {\n toArray$1(input.files).forEach(function(file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n } ]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function(error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button, disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!Array.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","/**\n * Arabic translation for bootstrap-datepicker\n * Mohammed Alshehri \n */\n;(function($){\n $.fn.datepicker.dates['ar'] = {\n days: [\"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأحد\"],\n daysShort: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\", \"أحد\"],\n daysMin: [\"ح\", \"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"],\n months: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n monthsShort: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n today: \"هذا اليوم\",\n rtl: true\n };\n}(jQuery));\n","/*\n* Project: Bootstrap Notify = v3.1.3\n* Description: Turns standard Bootstrap alerts into \"Growl-like\" notifications.\n* Author: Mouse0270 aka Robert McIntosh\n* License: MIT License\n* Website: https://github.com/mouse0270/bootstrap-growl\n*/\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node/CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\t// Create the defaults once\n\tvar defaults = {\n\t\t\telement: 'body',\n\t\t\tposition: null,\n\t\t\ttype: \"info\",\n\t\t\tallow_dismiss: true,\n\t\t\tnewest_on_top: false,\n\t\t\tshowProgressbar: false,\n\t\t\tplacement: {\n\t\t\t\tfrom: \"top\",\n\t\t\t\talign: \"right\"\n\t\t\t},\n\t\t\toffset: 20,\n\t\t\tspacing: 10,\n\t\t\tz_index: 1031,\n\t\t\tdelay: 5000,\n\t\t\ttimer: 1000,\n\t\t\turl_target: '_blank',\n\t\t\tmouse_over: null,\n\t\t\tanimate: {\n\t\t\t\tenter: 'animated fadeInDown',\n\t\t\t\texit: 'animated fadeOutUp'\n\t\t\t},\n\t\t\tonShow: null,\n\t\t\tonShown: null,\n\t\t\tonClose: null,\n\t\t\tonClosed: null,\n\t\t\ticon_type: 'class',\n\t\t\ttemplate: '
{1} {2}
'\n\t\t};\n\n\tString.format = function() {\n\t\tvar str = arguments[0];\n\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\tstr = str.replace(RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\"), arguments[i]);\n\t\t}\n\t\treturn str;\n\t};\n\n\tfunction Notify ( element, content, options ) {\n\t\t// Setup Content of Notify\n\t\tvar content = {\n\t\t\tcontent: {\n\t\t\t\tmessage: typeof content == 'object' ? content.message : content,\n\t\t\t\ttitle: content.title ? content.title : '',\n\t\t\t\ticon: content.icon ? content.icon : '',\n\t\t\t\turl: content.url ? content.url : '#',\n\t\t\t\ttarget: content.target ? content.target : '-'\n\t\t\t}\n\t\t};\n\n\t\toptions = $.extend(true, {}, content, options);\n\t\tthis.settings = $.extend(true, {}, defaults, options);\n\t\tthis._defaults = defaults;\n\t\tif (this.settings.content.target == \"-\") {\n\t\t\tthis.settings.content.target = this.settings.url_target;\n\t\t}\n\t\tthis.animations = {\n\t\t\tstart: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',\n\t\t\tend: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'\n\t\t}\n\n\t\tif (typeof this.settings.offset == 'number') {\n\t\t this.settings.offset = {\n\t\t \tx: this.settings.offset,\n\t\t \ty: this.settings.offset\n\t\t };\n\t\t}\n\n\t\tthis.init();\n\t};\n\n\t$.extend(Notify.prototype, {\n\t\tinit: function () {\n\t\t\tvar self = this;\n\n\t\t\tthis.buildNotify();\n\t\t\tif (this.settings.content.icon) {\n\t\t\t\tthis.setIcon();\n\t\t\t}\n\t\t\tif (this.settings.content.url != \"#\") {\n\t\t\t\tthis.styleURL();\n\t\t\t}\n\t\t\tthis.styleDismiss();\n\t\t\tthis.placement();\n\t\t\tthis.bind();\n\n\t\t\tthis.notify = {\n\t\t\t\t$ele: this.$ele,\n\t\t\t\tupdate: function(command, update) {\n\t\t\t\t\tvar commands = {};\n\t\t\t\t\tif (typeof command == \"string\") {\n\t\t\t\t\t\tcommands[command] = update;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcommands = command;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var command in commands) {\n\t\t\t\t\t\tswitch (command) {\n\t\t\t\t\t\t\tcase \"type\":\n\t\t\t\t\t\t\t\tthis.$ele.removeClass('alert-' + self.settings.type);\n\t\t\t\t\t\t\t\tthis.$ele.find('[data-notify=\"progressbar\"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);\n\t\t\t\t\t\t\t\tself.settings.type = commands[command];\n\t\t\t\t\t\t\t\tthis.$ele.addClass('alert-' + commands[command]).find('[data-notify=\"progressbar\"] > .progress-bar').addClass('progress-bar-' + commands[command]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"icon\":\n\t\t\t\t\t\t\t\tvar $icon = this.$ele.find('[data-notify=\"icon\"]');\n\t\t\t\t\t\t\t\tif (self.settings.icon_type.toLowerCase() == 'class') {\n\t\t\t\t\t\t\t\t\t$icon.removeClass(self.settings.content.icon).addClass(commands[command]);\n\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\tif (!$icon.is('img')) {\n\t\t\t\t\t\t\t\t\t\t$icon.find('img');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$icon.attr('src', commands[command]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"progress\":\n\t\t\t\t\t\t\t\tvar newDelay = self.settings.delay - (self.settings.delay * (commands[command] / 100));\n\t\t\t\t\t\t\t\tthis.$ele.data('notify-delay', newDelay);\n\t\t\t\t\t\t\t\tthis.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', commands[command]).css('width', commands[command] + '%');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\t\t\tthis.$ele.find('[data-notify=\"url\"]').attr('href', commands[command]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"target\":\n\t\t\t\t\t\t\t\tthis.$ele.find('[data-notify=\"url\"]').attr('target', commands[command]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthis.$ele.find('[data-notify=\"' + command +'\"]').html(commands[command]);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tvar posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);\n\t\t\t\t\tself.reposition(posX);\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tbuildNotify: function () {\n\t\t\tvar content = this.settings.content;\n\t\t\tthis.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));\n\t\t\tthis.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);\n\t\t\tif (!this.settings.allow_dismiss) {\n\t\t\t\tthis.$ele.find('[data-notify=\"dismiss\"]').css('display', 'none');\n\t\t\t}\n\t\t\tif ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {\n\t\t\t\tthis.$ele.find('[data-notify=\"progressbar\"]').remove();\n\t\t\t}\n\t\t},\n\t\tsetIcon: function() {\n\t\t\tif (this.settings.icon_type.toLowerCase() == 'class') {\n\t\t\t\tthis.$ele.find('[data-notify=\"icon\"]').addClass(this.settings.content.icon);\n\t\t\t}else{\n\t\t\t\tif (this.$ele.find('[data-notify=\"icon\"]').is('img')) {\n\t\t\t\t\tthis.$ele.find('[data-notify=\"icon\"]').attr('src', this.settings.content.icon);\n\t\t\t\t}else{\n\t\t\t\t\tthis.$ele.find('[data-notify=\"icon\"]').append('\"Notify');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstyleDismiss: function() {\n\t\t\tthis.$ele.find('[data-notify=\"dismiss\"]').css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\tright: '10px',\n\t\t\t\ttop: '5px',\n\t\t\t\tzIndex: this.settings.z_index + 2\n\t\t\t});\n\t\t},\n\t\tstyleURL: function() {\n\t\t\tthis.$ele.find('[data-notify=\"url\"]').css({\n\t\t\t\tbackgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',\n\t\t\t\theight: '100%',\n\t\t\t\tleft: '0px',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '0px',\n\t\t\t\twidth: '100%',\n\t\t\t\tzIndex: this.settings.z_index + 1\n\t\t\t});\n\t\t},\n\t\tplacement: function() {\n\t\t\tvar self = this,\n\t\t\t\toffsetAmt = this.settings.offset.y,\n\t\t\t\tcss = {\n\t\t\t\t\tdisplay: 'inline-block',\n\t\t\t\t\tmargin: '0px auto',\n\t\t\t\t\tposition: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),\n\t\t\t\t\ttransition: 'all .5s ease-in-out',\n\t\t\t\t\tzIndex: this.settings.z_index\n\t\t\t\t},\n\t\t\t\thasAnimation = false,\n\t\t\t\tsettings = this.settings;\n\n\t\t\t$('[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])').each(function() {\n\t\t\t\treturn offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));\n\t\t\t});\n\t\t\tif (this.settings.newest_on_top == true) {\n\t\t\t\toffsetAmt = this.settings.offset.y;\n\t\t\t}\n\t\t\tcss[this.settings.placement.from] = offsetAmt+'px';\n\n\t\t\tswitch (this.settings.placement.align) {\n\t\t\t\tcase \"left\":\n\t\t\t\tcase \"right\":\n\t\t\t\t\tcss[this.settings.placement.align] = this.settings.offset.x+'px';\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"center\":\n\t\t\t\t\tcss.left = 0;\n\t\t\t\t\tcss.right = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.$ele.css(css).addClass(this.settings.animate.enter);\n\t\t\t$.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function(index, prefix) {\n\t\t\t\tself.$ele[0].style[prefix+'AnimationIterationCount'] = 1;\n\t\t\t});\n\n\t\t\t$(this.settings.element).append(this.$ele);\n\n\t\t\tif (this.settings.newest_on_top == true) {\n\t\t\t\toffsetAmt = (parseInt(offsetAmt)+parseInt(this.settings.spacing)) + this.$ele.outerHeight();\n\t\t\t\tthis.reposition(offsetAmt);\n\t\t\t}\n\n\t\t\tif ($.isFunction(self.settings.onShow)) {\n\t\t\t\tself.settings.onShow.call(this.$ele);\n\t\t\t}\n\n\t\t\tthis.$ele.one(this.animations.start, function(event) {\n\t\t\t\thasAnimation = true;\n\t\t\t}).one(this.animations.end, function(event) {\n\t\t\t\tif ($.isFunction(self.settings.onShown)) {\n\t\t\t\t\tself.settings.onShown.call(this);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tif (!hasAnimation) {\n\t\t\t\t\tif ($.isFunction(self.settings.onShown)) {\n\t\t\t\t\t\tself.settings.onShown.call(this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 600);\n\t\t},\n\t\tbind: function() {\n\t\t\tvar self = this;\n\n\t\t\tthis.$ele.find('[data-notify=\"dismiss\"]').on('click', function() {\n\t\t\t\tself.close();\n\t\t\t})\n\n\t\t\tthis.$ele.mouseover(function(e) {\n\t\t\t\t$(this).data('data-hover', \"true\");\n\t\t\t}).mouseout(function(e) {\n\t\t\t\t$(this).data('data-hover', \"false\");\n\t\t\t});\n\t\t\tthis.$ele.data('data-hover', \"false\");\n\n\t\t\tif (this.settings.delay > 0) {\n\t\t\t\tself.$ele.data('notify-delay', self.settings.delay);\n\t\t\t\tvar timer = setInterval(function() {\n\t\t\t\t\tvar delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;\n\t\t\t\t\tif ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over == \"pause\") || self.settings.mouse_over != \"pause\") {\n\t\t\t\t\t\tvar percent = ((self.settings.delay - delay) / self.settings.delay) * 100;\n\t\t\t\t\t\tself.$ele.data('notify-delay', delay);\n\t\t\t\t\t\tself.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', percent).css('width', percent + '%');\n\t\t\t\t\t}\n\t\t\t\t\tif (delay <= -(self.settings.timer)) {\n\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t}, self.settings.timer);\n\t\t\t}\n\t\t},\n\t\tclose: function() {\n\t\t\tvar self = this,\n\t\t\t\t$successors = null,\n\t\t\t\tposX = parseInt(this.$ele.css(this.settings.placement.from)),\n\t\t\t\thasAnimation = false;\n\n\t\t\tthis.$ele.data('closing', 'true').addClass(this.settings.animate.exit);\n\t\t\tself.reposition(posX);\n\n\t\t\tif ($.isFunction(self.settings.onClose)) {\n\t\t\t\tself.settings.onClose.call(this.$ele);\n\t\t\t}\n\n\t\t\tthis.$ele.one(this.animations.start, function(event) {\n\t\t\t\thasAnimation = true;\n\t\t\t}).one(this.animations.end, function(event) {\n\t\t\t\t$(this).remove();\n\t\t\t\tif ($.isFunction(self.settings.onClosed)) {\n\t\t\t\t\tself.settings.onClosed.call(this);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tif (!hasAnimation) {\n\t\t\t\t\tself.$ele.remove();\n\t\t\t\t\tif (self.settings.onClosed) {\n\t\t\t\t\t\tself.settings.onClosed(self.$ele);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 600);\n\t\t},\n\t\treposition: function(posX) {\n\t\t\tvar self = this,\n\t\t\t\tnotifies = '[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])',\n\t\t\t\t$elements = this.$ele.nextAll(notifies);\n\t\t\tif (this.settings.newest_on_top == true) {\n\t\t\t\t$elements = this.$ele.prevAll(notifies);\n\t\t\t}\n\t\t\t$elements.each(function() {\n\t\t\t\t$(this).css(self.settings.placement.from, posX);\n\t\t\t\tposX = (parseInt(posX)+parseInt(self.settings.spacing)) + $(this).outerHeight();\n\t\t\t});\n\t\t}\n\t});\n\n\t$.notify = function ( content, options ) {\n\t\tvar plugin = new Notify( this, content, options );\n\t\treturn plugin.notify;\n\t};\n\t$.notifyDefaults = function( options ) {\n\t\tdefaults = $.extend(true, {}, defaults, options);\n\t\treturn defaults;\n\t};\n\t$.notifyClose = function( command ) {\n\t\tif (typeof command === \"undefined\" || command == \"all\") {\n\t\t\t$('[data-notify]').find('[data-notify=\"dismiss\"]').trigger('click');\n\t\t}else{\n\t\t\t$('[data-notify-position=\"'+command+'\"]').find('[data-notify=\"dismiss\"]').trigger('click');\n\t\t}\n\t};\n\n}));\n","/*\n * @name DoubleScroll\n * @desc displays scroll bar on top and on the bottom of the div\n * @requires jQuery\n *\n * @author Pawel Suwala - http://suwala.eu/\n * @author Antoine Vianey - http://www.astek.fr/\n * @version 0.5 (11-11-2015)\n *\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n * \n * Usage:\n * https://github.com/avianey/jqDoubleScroll\n */\n (function( $ ) {\n \t\n \tjQuery.fn.doubleScroll = function(userOptions) {\n\t\n\t\t// Default options\n\t\tvar options = {\n\t\t\tcontentElement: undefined, // Widest element, if not specified first child element will be used\n\t\t\tscrollCss: { \n\t\t\t\t'overflow-x': 'auto',\n\t\t\t\t'overflow-y': 'hidden',\n\t\t\t\t'height': '20px'\n\t\t\t},\n\t\t\tcontentCss: {\n\t\t\t\t'overflow-x': 'auto',\n\t\t\t\t'overflow-y': 'hidden'\n\t\t\t},\n\t\t\tonlyIfScroll: true, // top scrollbar is not shown if the bottom one is not present\n\t\t\tresetOnWindowResize: false, // recompute the top ScrollBar requirements when the window is resized\n\t\t\ttimeToWaitForResize: 30 // wait for the last update event (usefull when browser fire resize event constantly during ressing)\n\t\t};\n\t\n\t\t$.extend(true, options, userOptions);\n\t\n\t\t// do not modify\n\t\t// internal stuff\n\t\t$.extend(options, {\n\t\t\ttopScrollBarMarkup: '
',\n\t\t\ttopScrollBarWrapperSelector: '.doubleScroll-scroll-wrapper',\n\t\t\ttopScrollBarInnerSelector: '.doubleScroll-scroll'\n\t\t});\n\n\t\tvar _showScrollBar = function($self, options) {\n\n\t\t\tif (options.onlyIfScroll && $self.get(0).scrollWidth <= $self.width()) {\n\t\t\t\t// content doesn't scroll\n\t\t\t\t// remove any existing occurrence...\n\t\t\t\t$self.prev(options.topScrollBarWrapperSelector).remove();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\t// add div that will act as an upper scroll only if not already added to the DOM\n\t\t\tvar $topScrollBar = $self.prev(options.topScrollBarWrapperSelector);\n\t\t\t\n\t\t\tif ($topScrollBar.length == 0) {\n\t\t\t\t\n\t\t\t\t// creating the scrollbar\n\t\t\t\t// added before in the DOM\n\t\t\t\t$topScrollBar = $(options.topScrollBarMarkup);\n\t\t\t\t$self.before($topScrollBar);\n\n\t\t\t\t// apply the css\n\t\t\t\t$topScrollBar.css(options.scrollCss);\n\t\t\t\t$(options.topScrollBarInnerSelector).css(\"height\", \"20px\");\n\t\t\t\t$self.css(options.contentCss);\n\n\t\t\t\t// bind upper scroll to bottom scroll\n\t\t\t\t$topScrollBar.bind('scroll.doubleScroll', function() {\n\t\t\t\t\t$self.scrollLeft($topScrollBar.scrollLeft());\n\t\t\t\t});\n\n\t\t\t\t// bind bottom scroll to upper scroll\n\t\t\t\tvar selfScrollHandler = function() {\n\t\t\t\t\t$topScrollBar.scrollLeft($self.scrollLeft());\n\t\t\t\t};\n\t\t\t\t$self.bind('scroll.doubleScroll', selfScrollHandler);\n\t\t\t}\n\n\t\t\t// find the content element (should be the widest one)\t\n\t\t\tvar $contentElement;\t\t\n\t\t\t\n\t\t\tif (options.contentElement !== undefined && $self.find(options.contentElement).length !== 0) {\n\t\t\t\t$contentElement = $self.find(options.contentElement);\n\t\t\t} else {\n\t\t\t\t$contentElement = $self.find('>:first-child');\n\t\t\t}\n\t\t\t\n\t\t\t// set the width of the wrappers\n\t\t\t$(options.topScrollBarInnerSelector, $topScrollBar).width($contentElement.outerWidth());\n\t\t\t$topScrollBar.width($self.width());\n\t\t\t$topScrollBar.scrollLeft($self.scrollLeft());\n\t\t\t\n\t\t}\n\t\n\t\treturn this.each(function() {\n\t\t\t\n\t\t\tvar $self = $(this);\n\t\t\t\n\t\t\t_showScrollBar($self, options);\n\t\t\t\n\t\t\t// bind the resize handler \n\t\t\t// do it once\n\t\t\tif (options.resetOnWindowResize) {\n\t\t\t\n\t\t\t\tvar id;\n\t\t\t\tvar handler = function(e) {\n\t\t\t\t\t_showScrollBar($self, options);\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$(window).bind('resize.doubleScroll', function() {\n\t\t\t\t\t// adding/removing/replacing the scrollbar might resize the window\n\t\t\t\t\t// so the resizing flag will avoid the infinite loop here...\n\t\t\t\t\tclearTimeout(id);\n\t\t\t\t\tid = setTimeout(handler, options.timeToWaitForResize);\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\n\t}\n\n}( jQuery ));\n","/*\n * jQuery Highlight plugin\n *\n * Based on highlight v3 by Johann Burkard\n * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html\n *\n * Code a little bit refactored and cleaned (in my humble opinion).\n * Most important changes:\n * - has an option to highlight only entire words (wordsOnly - false by default),\n * - has an option to be case sensitive (caseSensitive - false by default)\n * - highlight element tag and class names can be specified in options\n *\n * Usage:\n * // wrap every occurrence of text 'lorem' in content\n * // with (default options)\n * $('#content').highlight('lorem');\n *\n * // search for and highlight more terms at once\n * // so you can save some time on traversing DOM\n * $('#content').highlight(['lorem', 'ipsum']);\n * $('#content').highlight('lorem ipsum');\n *\n * // search only for entire word 'lorem'\n * $('#content').highlight('lorem', { wordsOnly: true });\n *\n * // search only for the entire word 'C#'\n * // and make sure that the word boundary can also\n * // be a 'non-word' character, as well as a regex latin1 only boundary:\n * $('#content').highlight('C#', { wordsOnly: true , wordsBoundary: '[\\\\b\\\\W]' });\n *\n * // don't ignore case during search of term 'lorem'\n * $('#content').highlight('lorem', { caseSensitive: true });\n *\n * // wrap every occurrence of term 'ipsum' in content\n * // with \n * $('#content').highlight('ipsum', { element: 'em', className: 'important' });\n *\n * // remove default highlight\n * $('#content').unhighlight();\n *\n * // remove custom highlight\n * $('#content').unhighlight({ element: 'em', className: 'important' });\n *\n *\n * Copyright (c) 2009 Bartek Szopka\n *\n * Licensed under MIT license.\n *\n */\n\n(function(factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS\n factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function(jQuery) {\n jQuery.extend({\n highlight: function(\n node,\n re,\n nodeName,\n className,\n callback,\n ignoreDiacritics\n ) {\n if (node.nodeType === 3) {\n var subject = ignoreDiacritics\n ? jQuery.removeDiacritcs(node.data)\n : node.data;\n var match = subject.match(re);\n if (match) {\n // The new highlight Element Node\n var highlight = document.createElement(nodeName || 'span');\n highlight.className = className || 'highlight';\n // Note that we use the captured value to find the real index\n // of the match. This is because we do not want to include the matching word boundaries\n var capturePos = node.data.indexOf(match[1], match.index);\n\n // Split the node and replace the matching wordnode\n // with the highlighted node\n var wordNode = node.splitText(capturePos);\n wordNode.splitText(match[1].length);\n\n var wordClone = wordNode.cloneNode(true);\n highlight.appendChild(wordClone);\n wordNode.parentNode.replaceChild(highlight, wordNode);\n if (typeof callback == 'function') {\n callback(highlight);\n }\n return 1; //skip added node in parent\n }\n } else if (\n node.nodeType === 1 &&\n node.childNodes && // only element nodes that have children\n !/(script|style)/i.test(node.tagName) && // ignore script and style nodes\n !(\n node.tagName === nodeName.toUpperCase() &&\n node.className === className\n )\n ) {\n // skip if already highlighted\n for (var i = 0; i < node.childNodes.length; i++) {\n i += jQuery.highlight(\n node.childNodes[i],\n re,\n nodeName,\n className,\n callback,\n ignoreDiacritics\n );\n }\n }\n return 0;\n },\n\n removeDiacritcs: function(word) {\n return word\n .replace(/[\\u00c0-\\u00c6]/g, 'A')\n .replace(/[\\u00e0-\\u00e6]/g, 'a')\n .replace(/[\\u00c7]/g, 'C')\n .replace(/[\\u00e7]/g, 'c')\n .replace(/[\\u00c8-\\u00cb]/g, 'E')\n .replace(/[\\u00e8-\\u00eb]/g, 'e')\n .replace(/[\\u00cc-\\u00cf]/g, 'I')\n .replace(/[\\u00ec-\\u00ef]/g, 'i')\n .replace(/[\\u00d1|\\u0147]/g, 'N')\n .replace(/[\\u00f1|\\u0148]/g, 'n')\n .replace(/[\\u00d2-\\u00d8|\\u0150]/g, 'O')\n .replace(/[\\u00f2-\\u00f8|\\u0151]/g, 'o')\n .replace(/[\\u0160]/g, 'S')\n .replace(/[\\u0161]/g, 's')\n .replace(/[\\u00d9-\\u00dc]/g, 'U')\n .replace(/[\\u00f9-\\u00fc]/g, 'u')\n .replace(/[\\u00dd]/g, 'Y')\n .replace(/[\\u00fd]/g, 'y');\n }\n });\n\n jQuery.fn.unhighlight = function(options) {\n var settings = {\n className: 'highlight',\n element: 'span'\n };\n\n jQuery.extend(settings, options);\n\n return this.find(settings.element + '.' + settings.className)\n .each(function() {\n var parent = this.parentNode;\n parent.replaceChild(this.firstChild, this);\n parent.normalize();\n })\n .end();\n };\n\n jQuery.fn.highlight = function(words, options, callback) {\n var settings = {\n className: 'highlight',\n element: 'span',\n caseSensitive: false,\n wordsOnly: false,\n wordsBoundary: '\\\\b',\n ignoreDiacritics: false\n };\n\n jQuery.extend(settings, options);\n\n if (typeof words === 'string') {\n words = [words];\n }\n words = jQuery.grep(words, function(word) {\n return word != '';\n });\n words = jQuery.map(words, function(word) {\n if (settings.ignoreDiacritics) {\n word = jQuery.removeDiacritcs(word);\n }\n return word.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n });\n\n if (words.length === 0) {\n return this;\n }\n\n var flag = settings.caseSensitive ? '' : 'i';\n // The capture parenthesis will make sure we can match\n // only the matching word\n var pattern = '(' + words.join('|') + ')';\n if (settings.wordsOnly) {\n pattern =\n (settings.wordsBoundaryStart || settings.wordsBoundary) +\n pattern +\n (settings.wordsBoundaryEnd || settings.wordsBoundary);\n }\n var re = new RegExp(pattern, flag);\n\n return this.each(function() {\n jQuery.highlight(\n this,\n re,\n settings.element,\n settings.className,\n callback,\n settings.ignoreDiacritics\n );\n });\n };\n});\n","/*!\n * jQuery Validation Plugin v1.20.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2023 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass );\n\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\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 );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// $.ajaxAbort( port );\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.PerfectScrollbar = factory());\n}(this, (function () { 'use strict';\n\n function get(element) {\n return getComputedStyle(element);\n }\n\n function set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n }\n\n function div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n }\n\n var elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\n function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n }\n\n function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n }\n\n function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n }\n\n var cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n };\n\n /*\n * Helper methods\n */\n var scrollingClassTimeout = { x: null, y: null };\n\n function addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n }\n\n function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n }\n\n function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n }\n\n var EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n };\n\n var prototypeAccessors = { isEmpty: { configurable: true } };\n\n EventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n };\n\n EventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n };\n\n EventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n };\n\n prototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n };\n\n Object.defineProperties( EventElement.prototype, prototypeAccessors );\n\n var EventManager = function EventManager() {\n this.eventElements = [];\n };\n\n EventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n };\n\n EventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n };\n\n EventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n };\n\n EventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n };\n\n EventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n };\n\n function createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n }\n\n function processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n ) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n }\n\n function processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n ) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n }\n\n function toInt(x) {\n return parseInt(x, 10) || 0;\n }\n\n function isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n }\n\n function outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n }\n\n var env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n };\n\n function updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.round(rect.width);\n i.containerHeight = Math.round(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n }\n\n function getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n }\n\n function updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n }\n\n function clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n }\n\n function dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n }\n\n function bindMouseScrollHandler(\n i,\n ref\n ) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n e.preventDefault();\n }\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n }\n\n function keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n }\n\n function wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for