1/*! 2* jquery.inputmask.bundle.js 3* https://github.com/RobinHerbots/jquery.inputmask 4* Copyright (c) 2010 - 2016 Robin Herbots 5* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) 6* Version: 3.3.2-43 7*/ 8!function($) { 9 function Inputmask(alias, options) { 10 return this instanceof Inputmask ? ($.isPlainObject(alias) ? options = alias : (options = options || {}, 11 options.alias = alias), this.el = void 0, this.opts = $.extend(!0, {}, this.defaults, options), 12 this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, 13 this.events = {}, void resolveAlias(this.opts.alias, options, this.opts)) : new Inputmask(alias, options); 14 } 15 function isInputEventSupported(eventName) { 16 var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el; 17 return isSupported || (el.setAttribute(evName, "return;"), isSupported = "function" == typeof el[evName]), 18 el = null, isSupported; 19 } 20 function isElementTypeSupported(input, opts) { 21 var elementType = input.getAttribute("type"), isSupported = "INPUT" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || "TEXTAREA" === input.tagName; 22 if (!isSupported && "INPUT" === input.tagName) { 23 var el = document.createElement("input"); 24 el.setAttribute("type", elementType), isSupported = "text" === el.type, el = null; 25 } 26 return isSupported; 27 } 28 function resolveAlias(aliasStr, options, opts) { 29 var aliasDefinition = opts.aliases[aliasStr]; 30 return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 31 $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), 32 !1); 33 } 34 function importAttributeOptions(npt, opts, userOptions) { 35 function importOption(option, optionData) { 36 optionData = void 0 !== optionData ? optionData : npt.getAttribute("data-inputmask-" + option), 37 null !== optionData && ("string" == typeof optionData && (0 === option.indexOf("on") ? optionData = window[optionData] : "false" === optionData ? optionData = !1 : "true" === optionData && (optionData = !0)), 38 userOptions[option] = optionData); 39 } 40 var option, dataoptions, optionData, p, attrOptions = npt.getAttribute("data-inputmask"); 41 if (attrOptions && "" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'), 42 dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) { 43 optionData = void 0; 44 for (p in dataoptions) if ("alias" === p.toLowerCase()) { 45 optionData = dataoptions[p]; 46 break; 47 } 48 } 49 importOption("alias", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts); 50 for (option in opts) { 51 if (dataoptions) { 52 optionData = void 0; 53 for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) { 54 optionData = dataoptions[p]; 55 break; 56 } 57 } 58 importOption(option, optionData); 59 } 60 return $.extend(!0, opts, userOptions), opts; 61 } 62 function generateMaskSet(opts, nocache) { 63 function analyseMask(mask) { 64 function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) { 65 this.matches = [], this.isGroup = isGroup || !1, this.isOptional = isOptional || !1, 66 this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, 67 this.quantifier = { 68 min: 1, 69 max: 1 70 }; 71 } 72 function insertTestDefinition(mtoken, element, position) { 73 var maskdef = opts.definitions[element]; 74 position = void 0 !== position ? position : mtoken.matches.length; 75 var prevMatch = mtoken.matches[position - 1]; 76 if (maskdef && !escaped) { 77 maskdef.placeholder = $.isFunction(maskdef.placeholder) ? maskdef.placeholder(opts) : maskdef.placeholder; 78 for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) { 79 var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality; 80 mtoken.matches.splice(position++, 0, { 81 fn: validator ? "string" == typeof validator ? new RegExp(validator) : new function() { 82 this.test = validator; 83 }() : new RegExp("."), 84 cardinality: cardinality ? cardinality : 1, 85 optionality: mtoken.isOptional, 86 newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element), 87 casing: maskdef.casing, 88 def: maskdef.definitionSymbol || element, 89 placeholder: maskdef.placeholder, 90 mask: element 91 }), prevMatch = mtoken.matches[position - 1]; 92 } 93 mtoken.matches.splice(position++, 0, { 94 fn: maskdef.validator ? "string" == typeof maskdef.validator ? new RegExp(maskdef.validator) : new function() { 95 this.test = maskdef.validator; 96 }() : new RegExp("."), 97 cardinality: maskdef.cardinality, 98 optionality: mtoken.isOptional, 99 newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element), 100 casing: maskdef.casing, 101 def: maskdef.definitionSymbol || element, 102 placeholder: maskdef.placeholder, 103 mask: element 104 }); 105 } else mtoken.matches.splice(position++, 0, { 106 fn: null, 107 cardinality: 0, 108 optionality: mtoken.isOptional, 109 newBlockMarker: void 0 === prevMatch || prevMatch.def !== element, 110 casing: null, 111 def: opts.staticDefinitionSymbol || element, 112 placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0, 113 mask: element 114 }), escaped = !1; 115 } 116 function verifyGroupMarker(lastMatch, isOpenGroup) { 117 lastMatch.isGroup && (lastMatch.isGroup = !1, insertTestDefinition(lastMatch, opts.groupmarker.start, 0), 118 isOpenGroup !== !0 && insertTestDefinition(lastMatch, opts.groupmarker.end)); 119 } 120 function maskCurrentToken(m, currentToken, lastMatch, extraCondition) { 121 currentToken.matches.length > 0 && (void 0 === extraCondition || extraCondition) && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 122 verifyGroupMarker(lastMatch)), insertTestDefinition(currentToken, m); 123 } 124 function defaultCase() { 125 if (openenings.length > 0) { 126 if (currentOpeningToken = openenings[openenings.length - 1], maskCurrentToken(m, currentOpeningToken, lastMatch, !currentOpeningToken.isAlternator), 127 currentOpeningToken.isAlternator) { 128 alternator = openenings.pop(); 129 for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1; 130 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 131 currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator); 132 } 133 } else maskCurrentToken(m, currentToken, lastMatch); 134 } 135 function reverseTokens(maskToken) { 136 function reverseStatic(st) { 137 return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), 138 st; 139 } 140 maskToken.matches = maskToken.matches.reverse(); 141 for (var match in maskToken.matches) { 142 var intMatch = parseInt(match); 143 if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) { 144 var qt = maskToken.matches[match]; 145 maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt); 146 } 147 void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]); 148 } 149 return maskToken; 150 } 151 for (var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = []; match = tokenizer.exec(mask); ) if (m = match[0], 152 escaped) defaultCase(); else switch (m.charAt(0)) { 153 case opts.escapeChar: 154 escaped = !0; 155 break; 156 157 case opts.optionalmarker.end: 158 case opts.groupmarker.end: 159 if (openingToken = openenings.pop(), void 0 !== openingToken) if (openenings.length > 0) { 160 if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), 161 currentOpeningToken.isAlternator) { 162 alternator = openenings.pop(); 163 for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1; 164 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 165 currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator); 166 } 167 } else currentToken.matches.push(openingToken); else defaultCase(); 168 break; 169 170 case opts.optionalmarker.start: 171 openenings.push(new MaskToken(!1, !0)); 172 break; 173 174 case opts.groupmarker.start: 175 openenings.push(new MaskToken(!0)); 176 break; 177 178 case opts.quantifiermarker.start: 179 var quantifier = new MaskToken(!1, !1, !0); 180 m = m.replace(/[{}]/g, ""); 181 var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); 182 if (("*" === mq1 || "+" === mq1) && (mq0 = "*" === mq1 ? 0 : 1), quantifier.quantifier = { 183 min: mq0, 184 max: mq1 185 }, openenings.length > 0) { 186 var matches = openenings[openenings.length - 1].matches; 187 match = matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), groupToken.matches.push(match), 188 match = groupToken), matches.push(match), matches.push(quantifier); 189 } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), 190 groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 191 currentToken.matches.push(quantifier); 192 break; 193 194 case opts.alternatormarker: 195 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 196 lastMatch = currentOpeningToken.matches.pop()) : lastMatch = currentToken.matches.pop(), 197 lastMatch.isAlternator ? openenings.push(lastMatch) : (alternator = new MaskToken(!1, !1, !1, !0), 198 alternator.matches.push(lastMatch), openenings.push(alternator)); 199 break; 200 201 default: 202 defaultCase(); 203 } 204 for (;openenings.length > 0; ) openingToken = openenings.pop(), verifyGroupMarker(openingToken, !0), 205 currentToken.matches.push(openingToken); 206 return currentToken.matches.length > 0 && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 207 verifyGroupMarker(lastMatch), maskTokens.push(currentToken)), opts.numericInput && reverseTokens(maskTokens[0]), 208 maskTokens; 209 } 210 function generateMask(mask, metadata) { 211 if (null === mask || "" === mask) return void 0; 212 if (1 === mask.length && opts.greedy === !1 && 0 !== opts.repeat && (opts.placeholder = ""), 213 opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat) { 214 var repeatStart = "*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat; 215 mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end; 216 } 217 var masksetDefinition; 218 return void 0 === Inputmask.prototype.masksCache[mask] || nocache === !0 ? (masksetDefinition = { 219 mask: mask, 220 maskToken: analyseMask(mask), 221 validPositions: {}, 222 _buffer: void 0, 223 buffer: void 0, 224 tests: {}, 225 metadata: metadata 226 }, nocache !== !0 && (Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask] = masksetDefinition, 227 masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]), 228 masksetDefinition; 229 } 230 function preProcessMask(mask) { 231 return mask = mask.toString(); 232 } 233 var ms; 234 if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) { 235 if (opts.mask.length > 1) { 236 opts.keepStatic = null === opts.keepStatic ? !0 : opts.keepStatic; 237 var altMask = "("; 238 return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) { 239 altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 === msk.mask || $.isFunction(msk.mask) ? msk : msk.mask); 240 }), altMask += ")", generateMask(altMask, opts.mask); 241 } 242 opts.mask = opts.mask.pop(); 243 } 244 return opts.mask && (ms = void 0 === opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask)), 245 ms; 246 } 247 function maskScope(actionObj, maskset, opts) { 248 function getMaskTemplate(baseOnInput, minimalPos, includeInput) { 249 minimalPos = minimalPos || 0; 250 var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition(); 251 maxLength = void 0 !== el ? el.maxLength : void 0, -1 === maxLength && (maxLength = void 0); 252 do { 253 if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
254 var validPos = getMaskSet().validPositions[pos]; 255 test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test)); 256 } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 257 ndxIntlzr = testPos.locator.slice(), (opts.jitMasking === !1 || lvp > pos || isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(getPlaceholder(pos, test)); 258 pos++; 259 } while ((void 0 === maxLength || maxLength > pos) && (null !== test.fn || "" !== test.def) || minimalPos > pos); 260 return "" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), getMaskSet().maskLength = pos + 1, 261 maskTemplate; 262 } 263 function getMaskSet() { 264 return maskset; 265 } 266 function resetMaskSet(soft) { 267 var maskset = getMaskSet(); 268 maskset.buffer = void 0, soft !== !0 && (maskset._buffer = void 0, maskset.validPositions = {}, 269 maskset.p = 0); 270 } 271 function getLastValidPosition(closestTo, strict, validPositions) { 272 var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions; 273 void 0 === closestTo && (closestTo = -1); 274 for (var posNdx in valids) { 275 var psNdx = parseInt(posNdx); 276 valids[psNdx] && (strict || null !== valids[psNdx].match.fn) && (closestTo >= psNdx && (before = psNdx), 277 psNdx >= closestTo && (after = psNdx)); 278 } 279 return -1 !== before && closestTo - before > 1 || closestTo > after ? before : after; 280 } 281 function setValidPosition(pos, validTest, fromSetValid, isSelection) { 282 if (isSelection || opts.insertMode && void 0 !== getMaskSet().validPositions[pos] && void 0 === fromSetValid) { 283 var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition(); 284 for (i = pos; lvp >= i; i++) delete getMaskSet().validPositions[i]; 285 getMaskSet().validPositions[pos] = validTest; 286 var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1; 287 for (i = j = pos; lvp >= i; i++) { 288 var t = positionsClone[i]; 289 if (void 0 !== t) for (var posMatch = j, prevPosMatch = -1; posMatch < getMaskSet().maskLength && (null == t.match.fn && vps[i] && (vps[i].match.optionalQuantifier === !0 || vps[i].match.optionality === !0) || null != t.match.fn); ) { 290 if (null === t.match.fn || !opts.keepStatic && vps[i] && (void 0 !== vps[i + 1] && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || void 0 !== vps[i].alternation) ? posMatch++ : posMatch = seekNext(j), 291 needsValidation === !1 && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) { 292 getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), 293 getMaskSet().validPositions[posMatch].input = t.input, j = posMatch, valid = !0; 294 break; 295 } 296 if (positionCanMatchDefinition(posMatch, t.match.def)) { 297 var result = isValid(posMatch, t.input, !0, !0); 298 if (valid = result !== !1, j = result.caret || result.insert ? getLastValidPosition() : posMatch, 299 needsValidation = !0, valid) break; 300 } else { 301 if (valid = null == t.match.fn, prevPosMatch === posMatch) break; 302 prevPosMatch = posMatch; 303 } 304 } 305 if (!valid) break; 306 } 307 if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 308 resetMaskSet(!0), !1; 309 } else getMaskSet().validPositions[pos] = validTest; 310 return resetMaskSet(!0), !0; 311 } 312 function stripValidPositions(start, end, nocheck, strict) { 313 function IsEnclosedStatic(pos) { 314 var posMatch = getMaskSet().validPositions[pos]; 315 if (void 0 !== posMatch && null === posMatch.match.fn) { 316 var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1]; 317 return void 0 !== prevMatch && void 0 !== nextMatch; 318 } 319 return !1; 320 } 321 var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1; 322 for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) void 0 !== getMaskSet().validPositions[i] && (nocheck === !0 || !IsEnclosedStatic(i) && opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), str
322ict, opts) !== !1) && delete getMaskSet().validPositions[i]; 323 for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) { 324 for (;void 0 !== getMaskSet().validPositions[startPos]; ) startPos++; 325 var s = getMaskSet().validPositions[startPos]; 326 if (startPos > i && (i = startPos + 1), void 0 === getMaskSet().validPositions[i] && isMask(i) || void 0 !== s) i++; else { 327 var t = getTestTemplate(i); 328 needsValidation === !1 && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), 329 getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], 330 i++) : positionCanMatchDefinition(startPos, t.match.def) ? isValid(startPos, t.input || getPlaceholder(i), !0) !== !1 && (delete getMaskSet().validPositions[i], 331 i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++; 332 } 333 } 334 resetMaskSet(!0); 335 } 336 function determineTestTemplate(tests, ignoreGreedy) { 337 for (var testPos, testPositions = tests, lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation].toString().split(",") : [], ndx = 0; ndx < testPositions.length && (testPos = testPositions[ndx], 338 !testPos.match || (!opts.greedy && !ignoreGreedy || testPos.match.optionalQuantifier === !0) && (testPos.match.optionality !== !1 && testPos.match.newBlockMarker !== !1 || testPos.match.optionalQuantifier === !0) || !(void 0 === lvTest.alternation || lvTest.alternation !== testPos.alternation || void 0 !== testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr))); ndx++) ; 339 return testPos; 340 } 341 function getTestTemplate(pos, ndxIntlzr, tstPs) { 342 return getMaskSet().validPositions[pos] || determineTestTemplate(getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs)); 343 } 344 function getTest(pos) { 345 return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos] : getTests(pos)[0]; 346 } 347 function positionCanMatchDefinition(pos, def) { 348 for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) { 349 valid = !0; 350 break; 351 } 352 return valid; 353 } 354 function selectBestMatch(pos, alternateNdx) { 355 var bestMatch, indexPos; 356 return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) { 357 var ndxPos = lmnt.alternation ? lmnt.locator[lmnt.alternation].toString().indexOf(alternateNdx) : -1; 358 (void 0 === indexPos || indexPos > ndxPos) && -1 !== ndxPos && (bestMatch = lmnt, 359 indexPos = ndxPos); 360 }), bestMatch; 361 } 362 function getTests(pos, ndxIntlzr, tstPs) { 363 function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) { 364 function handleMatch(match, loopNdx, quantifierRecurse) { 365 function isFirstMatch(latestMatch, tokenGroup) { 366 var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches); 367 return firstMatch || $.each(tokenGroup.matches, function(ndx, match) { 368 return match.isQuantifier === !0 && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1])) ? !1 : void 0; 369 }), firstMatch; 370 } 371 function resolveNdxInitializer(pos, alternateNdx) { 372 var bestMatch = selectBestMatch(pos, alternateNdx); 373 return bestMatch ? bestMatch.locator.slice(bestMatch.alternation + 1) : void 0; 374 } 375 function staticCanMatchDefinition(source, target) { 376 return null === source.match.fn && null !== target.match.fn ? target.match.fn.test(source.match.def, getMaskSet(), pos, !1, opts, !1) : !1; 377 } 378 if (testPos > 1e4) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask; 379 if (testPos === pos && void 0 === match.matches) return matches.push({ 380 match: match, 381 locator: loopNdx.reverse(), 382 cd: cacheDependency 383 }), !0; 384 if (void 0 !== match.matches) { 385 if (match.isGroup && quantifierRecurse !== match) { 386 if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0; 387 } else if (match.isOptional) { 388 var optionalToken = match; 389 if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) { 390 if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0; 391 insertStop = !0, testPos = pos; 392 } 393 } else if (match.isAlternator) { 394 var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1; 395 if (-1 === altIndex || "string" == typeof altIndex) { 396 var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = []; 397 if ("string" == typeof altIndex) altIndexArr = altIndex.split(","); else for (amndx = 0;
397 amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx); 398 for (var ndx = 0; ndx < altIndexArr.length; ndx++) { 399 if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx) || ndxInitializerClone.slice(), 400 match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match, 401 match !== !0 && void 0 !== match && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) { 402 var ntndx = $.inArray(match, maskToken.matches) + 1; 403 maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse), 404 match && (altIndexArr.push(ntndx.toString()), $.each(matches, function(ndx, lmnt) { 405 lmnt.alternation = loopNdx.length - 1; 406 }))); 407 } 408 maltMatches = matches.slice(), testPos = currentPos, matches = []; 409 for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) { 410 var altMatch = maltMatches[ndx1], hasMatch = !1; 411 altMatch.alternation = altMatch.alternation || loopNdxCnt; 412 for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) { 413 var altMatch2 = malternateMatches[ndx2]; 414 if (("string" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) && (altMatch.match.def === altMatch2.match.def || staticCanMatchDefinition(altMatch, altMatch2))) { 415 hasMatch = altMatch.match.mask === altMatch2.match.mask, -1 === altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 416 altMatch2.alternation = altMatch.alternation); 417 break; 418 } 419 } 420 hasMatch || malternateMatches.push(altMatch); 421 } 422 } 423 "string" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) { 424 if (isFinite(ndx)) { 425 var mamatch, alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(","); 426 lmnt.locator[alternation] = void 0, lmnt.alternation = void 0; 427 for (var alndx = 0; alndx < altLocArr.length; alndx++) mamatch = -1 !== $.inArray(altLocArr[alndx], altIndexArr), 428 mamatch && (void 0 !== lmnt.locator[alternation] ? (lmnt.locator[alternation] += ",", 429 lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), 430 lmnt.alternation = alternation); 431 if (void 0 !== lmnt.locator[alternation]) return lmnt; 432 } 433 })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0, 434 ndxInitializer = ndxInitializerClone.slice(); 435 } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse); 436 if (match) return !0; 437 } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && pos >= testPos; qndx++) { 438 var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1]; 439 if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) { 440 if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, 441 isFirstMatch(latestMatch, tokenGroup)) { 442 if (qndx > qt.quantifier.min - 1) { 443 insertStop = !0, testPos = pos; 444 break; 445 } 446 return !0; 447 } 448 return !0; 449 } 450 } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0; 451 } else testPos++; 452 } 453 for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (maskToken.matches[tndx].isQuantifier !== !0) { 454 var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse); 455 if (match && testPos === pos) return match; 456 if (testPos > pos) break; 457 } 458 } 459 function mergeLocators(tests) { 460 var locator = []; 461 return $.isArray(tests) || (tests = [ tests ]), tests.length > 0 && (void 0 === tests[0].alternation ? (locator = determineTestTemplate(tests.slice()).locator.slice(), 462 0 === locator.length && (locator = tests[0].locator.slice())) : $.each(tests, function(ndx, tst) { 463 if ("" !== tst.def) if (0 === locator.length) locator = t
463st.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += "," + tst.locator[i]); 464 })), locator; 465 } 466 function filterTests(tests) { 467 return tests; 468 } 469 var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : ""; 470 if (pos > -1) { 471 if (void 0 === ndxIntlzr) { 472 for (var test, previousPos = pos - 1; void 0 === (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) && previousPos > -1; ) previousPos--; 473 void 0 !== test && previousPos > -1 && (ndxInitializer = mergeLocators(test), cacheDependency = ndxInitializer.join(""), 474 testPos = previousPos); 475 } 476 if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return filterTests(getMaskSet().tests[pos]); 477 for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) { 478 var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]); 479 if (match && testPos === pos || testPos > pos) break; 480 } 481 } 482 return (0 === matches.length || insertStop) && matches.push({ 483 match: { 484 fn: null, 485 cardinality: 0, 486 optionality: !0, 487 casing: null, 488 def: "", 489 placeholder: "" 490 }, 491 locator: [], 492 cd: cacheDependency 493 }), void 0 !== ndxIntlzr && getMaskSet().tests[pos] ? $.extend(!0, [], matches) : (getMaskSet().tests[pos] = $.extend(!0, [], matches), 494 getMaskSet().tests[pos]); 495 } 496 function getBufferTemplate() { 497 return void 0 === getMaskSet()._buffer && (getMaskSet()._buffer = getMaskTemplate(!1, 1), 498 void 0 === getMaskSet().buffer && getMaskSet()._buffer.slice()), getMaskSet()._buffer; 499 } 500 function getBuffer(noCache) { 501 return (void 0 === getMaskSet().buffer || noCache === !0) && (getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0)), 502 getMaskSet().buffer; 503 } 504 function refreshFromBuffer(start, end, buffer) { 505 var i; 506 if (start === !0) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; end > i; i++) delete getMaskSet().validPositions[i]; 507 for (i = start; end > i; i++) resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter && isValid(i, buffer[i], !0, !0); 508 } 509 function casing(elem, test, pos) { 510 switch (test.casing) { 511 case "upper": 512 elem = elem.toUpperCase(); 513 break; 514 515 case "lower": 516 elem = elem.toLowerCase(); 517 break; 518 519 case "title": 520 var posBefore = getMaskSet().validPositions[pos - 1]; 521 elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase(); 522 } 523 return elem; 524 } 525 function checkAlternationMatch(altArr1, altArr2) { 526 for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) { 527 isMatch = !0; 528 break; 529 } 530 return isMatch; 531 } 532 function isValid(pos, c, strict, fromSetValid) { 533 function isSelection(posObj) { 534 return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 && opts.insertMode : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1 && opts.insertMode; 535 } 536 function _isValid(position, c, strict, fromSetValid) { 537 var rslt = !1; 538 return $.each(getTests(position), function(ndx, tst) { 539 for (var test = tst.match, loopend = c ? 1 : 0, chrs = "", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1)); 540 if (c && (chrs += c), getBuffer(!0), rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : c !== test.def && c !== opts.skipOptionalPartCharacter || "" === test.def ? !1 : { 541 c: test.placeholder || test.def, 542 pos: position 543 }, rslt !== !1) { 544 var elem = void 0 !== rslt.c ? rslt.c : c; 545 elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? test.placeholder || test.def : elem;
546 var validatedPos = position, possibleModifiedBuffer = getBuffer(); 547 if (void 0 !== rslt.remove && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), 548 $.each(rslt.remove.sort(function(a, b) { 549 return b - a; 550 }), function(ndx, lmnt) { 551 stripValidPositions(lmnt, lmnt + 1, !0); 552 })), void 0 !== rslt.insert && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), 553 $.each(rslt.insert.sort(function(a, b) { 554 return a - b; 555 }), function(ndx, lmnt) { 556 isValid(lmnt.pos, lmnt.c, !1, fromSetValid); 557 })), rslt.refreshFromBuffer) { 558 var refresh = rslt.refreshFromBuffer; 559 if (strict = !0, refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), 560 void 0 === rslt.pos && void 0 === rslt.c) return rslt.pos = getLastValidPosition(), 561 !1; 562 if (validatedPos = void 0 !== rslt.pos ? rslt.pos : position, validatedPos !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), 563 !1; 564 } else if (rslt !== !0 && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos, 565 refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), 566 !1; 567 return rslt !== !0 && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (ndx > 0 && resetMaskSet(!0), 568 setValidPosition(validatedPos, $.extend({}, tst, { 569 input: casing(elem, test, validatedPos) 570 }), fromSetValid, isSelection(pos)) || (rslt = !1), !1); 571 } 572 }), rslt; 573 } 574 function alternate(pos, c, strict, fromSetValid) { 575 for (var lastAlt, alternation, isValidRslt, altPos, i, validPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), lAlt = getLastValidPosition(); lAlt >= 0 && (altPos = getMaskSet().validPositions[lAlt], 576 !altPos || void 0 === altPos.alternation || (lastAlt = lAlt, alternation = getMaskSet().validPositions[lastAlt].alternation, 577 getTestTemplate(lastAlt).locator[altPos.alternation] === altPos.locator[altPos.alternation])); lAlt--) ; 578 if (void 0 !== alternation) { 579 lastAlt = parseInt(lastAlt); 580 for (var decisionPos in getMaskSet().validPositions) if (decisionPos = parseInt(decisionPos), 581 altPos = getMaskSet().validPositions[decisionPos], decisionPos >= lastAlt && void 0 !== altPos.alternation) { 582 var altNdxs; 583 0 === lastAlt ? (altNdxs = [], $.each(getMaskSet().tests[lastAlt], function(ndx, test) { 584 void 0 !== test.locator[alternation] && (altNdxs = altNdxs.concat(test.locator[alternation].toString().split(","))); 585 })) : altNdxs = getMaskSet().validPositions[lastAlt].locator[alternation].toString().split(","); 586 var decisionTaker = void 0 !== altPos.locator[alternation] ? altPos.locator[alternation] : altNdxs[0]; 587 decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(",")[0]); 588 for (var mndx = 0; mndx < altNdxs.length; mndx++) { 589 var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0; 590 if (decisionTaker < altNdxs[mndx]) { 591 for (var possibilityPos, possibilities, dp = decisionPos; dp >= 0; dp--) if (possibilityPos = getMaskSet().validPositions[dp], 592 void 0 !== possibilityPos) { 593 var bestMatch = selectBestMatch(dp, altNdxs[mndx]); 594 getMaskSet().validPositions[dp].match.def !== bestMatch.match.def && (getMaskSet().validPositions[dp].generatedInput !== !0 && validInputs.push(getMaskSet().validPositions[dp].input), 595 getMaskSet().validPositions[dp] = bestMatch, getMaskSet().validPositions[dp].input = getPlaceholder(dp), 596 null === getMaskSet().validPositions[dp].match.fn && staticInputsBeforePosAlternate++, 597 possibilityPos = bestMatch), possibilities = possibilityPos.locator[alternation], 598 possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]); 599 break; 600 } 601 if (decisionTaker !== possibilityPos.locator[alternation]) { 602 for (i = decisionPos + 1; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = getMaskSet().validPositions[i], 603 validPos && null != validPos.match.fn ? val
603idInputs.push(validPos.input) : pos > i && staticInputsBeforePos++, 604 delete getMaskSet().validPositions[i]; 605 for (resetMaskSet(!0), opts.keepStatic = !opts.keepStatic, isValidRslt = !0; validInputs.length > 0; ) { 606 var input = validInputs.shift(); 607 if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(void 0, !0) + 1, input, !1, fromSetValid))) break; 608 } 609 if (possibilityPos.alternation = alternation, possibilityPos.locator[alternation] = possibilities, 610 isValidRslt) { 611 var targetLvp = getLastValidPosition(pos) + 1; 612 for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) validPos = getMaskSet().validPositions[i], 613 (void 0 === validPos || null == validPos.match.fn) && pos > i && staticInputsBeforePosAlternate++; 614 pos += staticInputsBeforePosAlternate - staticInputsBeforePos, isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid); 615 } 616 if (opts.keepStatic = !opts.keepStatic, isValidRslt) return isValidRslt; 617 resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone); 618 } 619 } 620 } 621 break; 622 } 623 } 624 return !1; 625 } 626 function trackbackAlternations(originalPos, newPos) { 627 for (var vp = getMaskSet().validPositions[newPos], targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; newPos > ps; ps++) if (void 0 === getMaskSet().validPositions[ps] && !isMask(ps, !0)) { 628 var tests = getTests(ps), bestMatch = tests[0], equality = -1; 629 $.each(tests, function(ndx, tst) { 630 for (var i = 0; tll > i && (void 0 !== tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(","), targetLocator[i].toString().split(","))); i++) i > equality && (equality = i, 631 bestMatch = tst); 632 }), setValidPosition(ps, $.extend({}, bestMatch, { 633 input: bestMatch.match.placeholder || bestMatch.match.def 634 }), !0); 635 } 636 } 637 strict = strict === !0; 638 var maskPos = pos; 639 void 0 !== pos.begin && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin); 640 for (var result = !1, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ; 641 var testTemplate; 642 for (pndx++; maskPos > pndx; pndx++) void 0 === getMaskSet().validPositions[pndx] && (opts.jitMasking === !1 || opts.jitMasking > pndx) && ((testTemplate = getTestTemplate(pndx, getTestTemplate(pndx - 1).locator, pndx - 1)).match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && (result = _isValid(pndx, testTemplate.match.placeholder || (null == testTemplate.match.fn ? testTemplate.match.def : "" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0, fromSetValid), 643 result !== !1 && (getMaskSet().validPositions[result.pos || pndx].generatedInput = !0)); 644 if (isSelection(pos) && (handleRemove(void 0, Inputmask.keyCode.DELETE, pos), maskPos = getMaskSet().p), 645 maskPos < getMaskSet().maskLength && (result = _isValid(maskPos, c, strict, fromSetValid), 646 (!strict || fromSetValid === !0) && result === !1)) { 647 var currentPosValid = getMaskSet().validPositions[maskPos]; 648 if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) { 649 if ((opts.insertMode || void 0 === getMaskSet().validPositions[seekNext(maskPos)]) && !isMask(maskPos, !0)) { 650 var testsFromPos = getTests(maskPos).slice(); 651 "" === testsFromPos[testsFromPos.length - 1].match.def && testsFromPos.pop(); 652 var staticChar = determineTestTemplate(testsFromPos, !0); 653 staticChar && (staticChar = staticChar.match.placeholder || staticChar.match.def, 654 _isValid(maskPos, staticChar, strict, fromSetValid)); 655 for (var nPos = maskPos + 1, snPos = seekNext(maskPos); snPos >= nPos; nPos++) if (result = _isValid(nPos, c, strict, fromSetValid), 656 result !== !1) { 657 trackbackAlternations(maskPos, nPos), maskPos = nPos; 658 break; 659 } 660 } 661 } else result = { 662 caret: seekNext(maskPos) 663 }; 664 } 665 return result === !1 && opts.keepStatic && (result = alternate(maskPos, c, strict, fromSetValid)), 666 result === !0 && (result = { 667 pos: maskPos 668 }), $.isFunction(opts.postValidation) && result !== !1 && !strict && fromSetValid !== !0 && (result = opts.postValidation(getBuffer(!0), result, opts) ? result : !1), 669 void 0 === result.pos && (result.pos = maskPos), result === !1 && (resetMaskSet(!0), 670 getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result; 671 } 672 function isMask(pos, strict) { 673 var test; 674 if (strict ? (test = getTestTemplate(pos).match, "" === test.def && (test = getTest(pos).match)) : test = getTest(pos).match, 675 null != test.fn) return test.fn; 676 if (strict !== !0 && pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) { 677 var tests = getTests(pos); 678 return tests.length > 2; 679 } 680 return !1; 681 } 682 function seekNext(pos, newBlock) { 683 var maskL = getMaskSet().maskLength; 684 if (pos >= maskL) return maskL; 685 for (var position = pos; ++position < maskL && (newBlock === !0 && (getTest(position).match.newBlockMarker !== !0 || !isMask(position)) || newBlock !== !0 && !isMask(position)); ) ; 686 return position; 687 } 688 function seekPrevious(pos, newBlock) { 689 var tests, position = pos; 690 if (0 >= position) return 0; 691 for (;
691--position > 0 && (newBlock === !0 && getTest(position).match.newBlockMarker !== !0 || newBlock !== !0 && !isMask(position) && (tests = getTests(position), 692 tests.length < 2 || 2 === tests.length && "" === tests[1].match.def)); ) ; 693 return position; 694 } 695 function getBufferElement(position) { 696 return void 0 === getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input; 697 } 698 function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) { 699 if (event && $.isFunction(opts.onBeforeWrite)) { 700 var result = opts.onBeforeWrite(event, buffer, caretPos, opts); 701 if (result) { 702 if (result.refreshFromBuffer) { 703 var refresh = result.refreshFromBuffer; 704 refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 705 buffer = getBuffer(!0); 706 } 707 void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos); 708 } 709 } 710 input.inputmask._valueSet(buffer.join("")), void 0 === caretPos || void 0 !== event && "blur" === event.type || caret(input, caretPos), 711 triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input")); 712 } 713 function getPlaceholder(pos, test) { 714 if (test = test || getTest(pos).match, void 0 !== test.placeholder) return test.placeholder; 715 if (null === test.fn) { 716 if (pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) { 717 var prevTest, tests = getTests(pos), staticAlternations = []; 718 if (tests.length > 2) for (var i = 0; i < tests.length; i++) if (tests[i].match.optionality !== !0 && tests[i].match.optionalQuantifier !== !0 && (null === tests[i].match.fn || void 0 === prevTest || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts) !== !1) && (staticAlternations.push(tests[i]), 719 null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1 && new RegExp("[0-9a-bA-Z]").test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length); 720 } 721 return test.def; 722 } 723 return opts.placeholder.charAt(pos % opts.placeholder.length); 724 } 725 function checkVal(input, writeOut, strict, nptvl) { 726 function isTemplateMatch() { 727 var isMatch = !1, charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join("").indexOf(charCodes); 728 if (-1 !== charCodeNdx && !isMask(initialNdx)) { 729 isMatch = !0; 730 for (var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx), i = 0; i < bufferTemplateArr.length; i++) if (" " !== bufferTemplateArr[i]) { 731 isMatch = !1; 732 break; 733 } 734 } 735 return isMatch; 736 } 737 var result, inputValue = nptvl.slice(), charCodes = "", initialNdx = 0; 738 if (resetMaskSet(), getMaskSet().p = seekNext(-1), !strict) if (opts.autoUnmask !== !0) { 739 var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g")); 740 matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), 741 initialNdx = seekNext(initialNdx)); 742 } else initialNdx = seekNext(initialNdx); 743 $.each(inputValue, function(ndx, charCode) { 744 if (void 0 !== charCode) { 745 var keypress = new $.Event("keypress"); 746 keypress.which = charCode.charCodeAt(0), charCodes += charCode; 747 var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp); 748 if (!isTemplateMatch() || strict || opts.autoUnmask) { 749 var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p; 750 result = keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1,
751 charCodes = ""; 752 } else result = keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1); 753 if (!strict && $.isFunction(opts.onBeforeWrite) && (result = opts.onBeforeWrite(keypress, getBuffer(), result.forwardPosition, opts), 754 result && result.refreshFromBuffer)) { 755 var refresh = result.refreshFromBuffer; 756 refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 757 resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret); 758 } 759 } 760 }), writeOut && writeBuffer(input, getBuffer(), document.activeElement === input ? seekNext(getLastValidPosition(0)) : void 0, new $.Event("checkval")); 761 } 762 function unmaskedvalue(input) { 763 if (input && void 0 === input.inputmask) return input.value; 764 var umValue = [], vps = getMaskSet().validPositions; 765 for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input); 766 var unmaskedValue = 0 === umValue.length ? "" : (isRTL ? umValue.reverse() : umValue).join(""); 767 if ($.isFunction(opts.onUnMask)) { 768 var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(""); 769 unmaskedValue = opts.onUnMask(bufferValue, unmaskedValue, opts) || unmaskedValue; 770 } 771 return unmaskedValue; 772 } 773 function caret(input, begin, end, notranslate) { 774 function translatePosition(pos) { 775 if (notranslate !== !0 && isRTL && "number" == typeof pos && (!opts.greedy || "" !== opts.placeholder)) { 776 var bffrLght = getBuffer().join("").length; 777 pos = bffrLght - pos; 778 } 779 return pos; 780 } 781 var range; 782 if ("number" != typeof begin) return input.setSelectionRange ? (begin = input.selectionStart, 783 end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), 784 (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) && (begin = range.startOffset, 785 end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), 786 begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length), 787 end = begin + range.text.length), { 788 begin: translatePosition(begin), 789 end: translatePosition(end) 790 }; 791 begin = translatePosition(begin), end = translatePosition(end), end = "number" == typeof end ? end : begin; 792 var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; 793 if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || opts.insertMode !== !1 || begin !== end || end++, 794 input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) { 795 if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) { 796 var textNode = document.createTextNode(""); 797 input.appendChild(textNode); 798 } 799 range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), 800 range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), 801 range.collapse(!0); 802 var sel = window.getSelection(); 803 sel.removeAllRanges(), sel.addRange(range); 804 } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), 805 range.moveEnd("character", end), range.moveStart("character", begin), range.select()); 806 } 807 function determineLastRequiredPosition(returnDefinition) { 808 var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0; 809 for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 810 ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos); 811 var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0; 812 for (pos = bl - 1; pos > lvp && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && "" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--; 813 return returnDefinition ? { 814 l: bl, 815 def: positions[bl] ? positions[bl].match : void 0 816 } : bl; 817 } 818 function clearOptionalTail(buffer) { 819 for (var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ; 820 return buffer.splice(rl, lmib + 1 - rl), buffer; 821 } 822 function isComplete(buffer) { 823 if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts); 824 if ("*" === opts.repeat) return void 0; 825 var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l); 826 if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) { 827 complete = !0; 828 for (var i = 0; aml >= i; i++) { 829 var test = getTestTemplate(i).match; 830 if (null !== test.fn && void 0 === getMaskSet().validPositions[i] && test.optionality !== !0 && test.optionalQuantifier !== !0 || null === test.fn && buffer[i] !== getPlaceholder(i, test)) { 831 complete = !1; 832 break; 833 } 834 } 835 } 836 return complete; 837 } 838 function patchValueProperty(npt) { 839 function patchValhook(type) { 840 if ($.valHooks && (void 0 === $.valHooks[type] || $.valHooks[type].inputmaskpatch !== !0)) { 841 var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) { 842 return elem.value; 843 }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) { 844 return elem.value = value, elem; 845 }; 846 $.valHooks[type] = { 847 get: function(elem) { 848 if (elem.inputmask) { 849 if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue(); 850 var result = valhookGet(elem); 851 return -1 !== getLastValidPosition(void 0, void 0, elem.inputmask.maskset.validPositions) || opts.nullable !== !0 ? result : ""; 852 } 853 return valhookGet(elem); 854 }, 855 set: function(elem, value) { 856 var result, $elem = $(elem); 857 return result = valhookSet(elem, value), elem.inputmask && $elem.trigger("setvalue"), 858 result; 859 }, 860 inputmaskpatch: !0 861 }; 862 } 863 } 864 function getter() { 865 return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || opts.nullable !== !0 ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : "" : valueGet.call(this); 866 } 867 function setter(value) { 868 valueSet.call(this, value), this.inputmask && $(this).trigger("setvalue"); 869 } 870 function installNativeValueSetFallback(npt) { 871 EventRuler.on(npt, "mouseenter", function(event) { 872 var $input = $(this), input = this, value = input.inputmask._valueGet(); 873 value !== getBuffer().join("") && $input.trigger("setvalue"); 874 }); 875 } 876 var valueGet, valueSet; 877 if (!npt.inputmask.__valueGet) { 878 if (Object.getOwnPropertyDescriptor) { 879 "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) { 880 return object.__proto__; 881 } : function(object) { 882 return object.constructor.prototype; 883 }); 884 var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0; 885 valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 886 valueSet = valueProperty.set, Object.defineProperty(npt, "value", { 887 get: getter, 888 set: setter, 889 configurable: !0 890 })) : "INPUT" !== npt.tagName && (valueGet = function() { 891 return this.textContent; 892 }, valueSet = function(value) { 893 this.textContent = value; 894 }, Object.defineProperty(npt, "value", { 895 get: getter, 896 set: setter, 897 configurable: !0 898 })); 899 } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 900 valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 901 npt.__defineSetter__("value", setter)); 902 npt.inputmask.__valueGet = valueGet, npt.inputmask._valueGet = function(overruleRTL) { 903 return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el); 904 }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) { 905 valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value); 906 }, void 0 === valueGet && (valueGet = function() { 907 return this.value; 908 }, valueSet = function(value) { 909 this.value = value; 910 }, patchValhook(npt.type), installNativeValueSetFallback(npt)); 911 } 912 } 913 function handleRemove(input, k, pos, strict) { 914 function generalize() { 915 if (opts.keepStatic) { 916 resetMaskSet(!0); 917 var lastAlt, validInputs = [], positionsClone = $.extend(!0, {}, getMaskSet().validPositions); 918 for (lastAlt = getLastValidPosition(); lastAlt >= 0; lastAlt--) {
919 var validPos = getMaskSet().validPositions[lastAlt]; 920 if (validPos && (null != validPos.match.fn && validInputs.push(validPos.input), 921 delete getMaskSet().validPositions[lastAlt], void 0 !== validPos.alternation && validPos.locator[validPos.alternation] === getTestTemplate(lastAlt).locator[validPos.alternation])) break; 922 } 923 if (lastAlt > -1) for (;validInputs.length > 0; ) { 924 getMaskSet().p = seekNext(getLastValidPosition()); 925 var keypress = new $.Event("keypress"); 926 keypress.which = validInputs.pop().charCodeAt(0), keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p); 927 } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone); 928 } 929 } 930 if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), 931 isRTL)) { 932 var pend = pos.end; 933 pos.end = pos.begin, pos.begin = pend; 934 } 935 k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode === !1) ? (pos.begin = seekPrevious(pos.begin), 936 void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1, 937 void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.end++), 938 stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0 && generalize(); 939 var lvp = getLastValidPosition(pos.begin); 940 lvp < pos.begin ? getMaskSet().p = seekNext(lvp) : strict !== !0 && (getMaskSet().p = pos.begin); 941 } 942 function keydownEvent(e) { 943 var input = this, $input = $(input), k = e.keyCode, pos = caret(input); 944 if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) e.preventDefault(), 945 handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 946 input.inputmask._valueGet() === getBufferTemplate().join("") ? $input.trigger("cleared") : isComplete(getBuffer()) === !0 && $input.trigger("complete"), 947 opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) { 948 e.preventDefault(); 949 var caretPos = seekNext(getLastValidPosition()); 950 opts.insertMode || caretPos !== getMaskSet().maskLength || e.shiftKey || caretPos--, 951 caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0); 952 } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 953 caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && e.altKey !== !0 ? (checkVal(input, !0, !1, undoValue.split("")), 954 $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? opts.tabThrough === !0 && k === Inputmask.keyCode.TAB ? (e.shiftKey === !0 ? (null === getTest(pos.begin).match.fn && (pos.begin = seekNext(pos.begin)), 955 pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 956 pos.end = seekNext(pos.begin, !0), pos.end < getMaskSet().maskLength && pos.end--), 957 pos.begin < getMaskSet().maskLength && (e.preventDefault(), caret(input, pos.begin, pos.end))) : opts.insertMode !== !1 || e.shiftKey || (k === Inputmask.keyCode.RIGHT ? setTimeout(function() { 958 var caretPos = caret(input); 959 caret(input, caretPos.begin); 960 }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() { 961 var caretPos = caret(input); 962 caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1); 963 }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskSet().maskLength ? pos.begin : pos.begin - 1)); 964 opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables); 965 } 966 function keypressEvent(e, checkval, writeOut, strict, ndx) { 967 var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode; 968 if (!(checkval === !0 || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("") && (undoValue = getBuffer().join(""), 969 setTimeout(function() { 970 $input.trigger("change"); 971 }, 0)), !0; 972 if (k) { 973 46 === k && e.shiftKey === !1 && "," === opts.radixPoint && (k = 44); 974 var forwardPosition, pos = checkval ? { 975 begin: ndx, 976 end: ndx 977 } : caret(input), c = String.fromCharCode(k); 978 getMaskSet().writeOutBuffer = !0; 979 var valResult = isValid(pos, c, strict); 980 if (valResult !== !1) { 981 var p = valResult.pos; 982 if (resetMaskSet(!0), void 0 !== valResult.caret) forwardPosition = valResult.caret; else { 983 var vps = getMaskSet().validPositions; 984 forwardPosition = !opts.keepStatic && (void 0 !== vps[p + 1] && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || void 0 !== vps[p].alternation) ? p + 1 : seekNext(p); 985 } 986 getMaskSet().p = forwardPosition; 987 } 988 if (writeOut !== !1) { 989 var self = this; 990 if (setTimeout(function() { 991 opts.onKeyValidation.call(self, k, valResult, opts); 992 }, 0), getMaskSet().writeOutBuffer && valResult !== !1) { 993 var buffer = getBuffer(); 994 writeBuffer(input, buffer, opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0), 995 checkval !== !0 && setTimeout(function() { 996 isComplete(buffer) === !0 && $input.trigger("complete"); 997 }, 0); 998 } 999 } 1000 if (opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask), e.preventDefault(), 1001 checkval) return valResult.forwardPosition = forwardPosition, valResult; 1002 } 1003 } 1004 function pasteEvent(e) { 1005 var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input); 1006 isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue); 1007 var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length); 1008 valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("") && (valueBeforeCaret = ""), 1009 valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("") && (valueAfterCaret = ""), 1010 isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), 1011 window.clipboardData && window.clipboardData.getData ? inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret : ev.clipboardData && ev.clipboardData.getData && (inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret); 1012 var pasteValue = inputValue; 1013 if ($.isFunction(opts.onBeforePaste)) { 1014 if (pasteValue = opts.onBeforePaste(inputValue, opts), pasteValue === !1) return e.preventDefault(); 1015 pasteValue || (pasteValue = inputValue); 1016 } 1017 return checkVal(input, !1, !1, isRTL ? pasteValue.split("").reverse() : pasteValue.toString().split("")), 1018 writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, !0), isComplete(getBuffer()) === !0 && $input.trigger("complete"), 1019 e.preventDefault(); 1020 } 1021 function inputFallBackEvent(e) { 1022 var input = this, inputValue = input.inputmask._valueGet(); 1023 if (getBuffer().join("") !== inputValue) { 1024 var caretPos = caret(input); 1025 if (inputValue = inputValue.replace(new RegExp("(" + Inputmask.escapeRegex(getBufferTemplate().join("")) + ")*"), ""), 1026 iemobile) { 1027 var inputChar = inputValue.replace(getBuffer().join(""), ""); 1028 if (1 === inputChar.length) { 1029 var keypress = new $.Event("keypress"); 1030 return keypress.which = inputChar.charCodeAt(0), keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), 1031 !1; 1032 } 1033 } 1034 if (caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input)), 1035 getBuffer().length - inputValue.length !== 1 || inputValue.charAt(caretPos.begin) === getBuffer()[caretPos.begin] || inputValue.charAt(caretPos.begin + 1) === getBuffer()[caretPos.begin] || isMask(caretPos.begin)) { 1036 for (var lvp = getLastValidPosition() + 1, bufferTemplate = getBuffer().slice(lvp).join(""); null === inputValue.match(Inputmask.escapeRegex(bufferTemplate) + "$"); ) bufferTemplate = bufferTemplate.slice(1); 1037 inputValue = inputValue.replace(bufferTemplate, ""), inputValue = inputValue.split(""), 1038 checkVal(input, !0, !1, inputValue), isComplete(getBuffer()) === !0 && $(input).trigger("complete"); 1039 } else e.keyCode = Inputmask.keyCode.BACKSPACE, keydownEvent.call(input, e); 1040 e.preventDefault(); 1041 } 1042 } 1043 function setValueEvent(e) { 1044 var input = this, value = input.inputmask._valueGet(); 1045 checkVal(input, !0, !1, ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(value, opts) || value : value).split("")), 1046 undoValue = getBuffer().join(""), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("") && input.inputmask._valueSet(""); 1047 } 1048 function focusEvent(e) { 1049 var input = this, nptValue = input.inputmask._valueGet(); 1050 opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && "" === nptValue) ? input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : mouseEnter === !1 && caret(input, seekNext(getLastValidPosition())), 1051 opts.positionCaretOnTab === !0 && setTimeout(function() { 1052 caret(input, seekNext(getLastValidPosition())); 1053 }, 0), undoValue = getBuffer().join(""); 1054 } 1055 function mouseleaveEvent(e) { 1056 var input = this; 1057 if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) { 1058 var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet(); 1059 nptValue !== input.getAttribute("placeholder") && "" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer), 1060 writeBuffer(input, buffer)); 1061 } 1062 } 1063 function clickEvent(e) { 1064 function doRadixFocus(clickPos) { 1065 if ("" !== opts.radixPoint) { 1066 var vps = getMaskSet().validPositions; 1067 if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) { 1068 if (clickPos < seekNext(-1)) return !0; 1069 var radixPos = $.inArray(opts.radixPoint, getBuffer()); 1070 if (-1 !== radixPos) { 1071 for (var vp in vps) if (vp > radixPos && vps[vp].input !== getPlaceholder(vp)) return !1; 1072 return !0; 1073 } 1074 } 1075 } 1076 return !1; 1077 } 1078 var input = this; 1079 setTimeout(function() { 1080 if (document.activeElement === input) { 1081 var selectedCaret = caret(input); 1082 if (selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) { 1083 case "none": 1084 break; 1085 1086 case "radixFocus": 1087 if (doRadixFocus(selectedCaret.begin)) { 1088 caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); 1089 break; 1090 } 1091 1092 default: 1093 var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition); 1094 if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else { 1095 var placeholder = getPlaceholder(lastPosition); 1096 ("" !== placeholder && getBuffer()[lastPosition] !== placeholder || !isMask(lastPosition, !0) && getTest(lastPosition).match.def === placeholder) && (lastPosition = seekNext(lastPosition)), 1097 caret(input, lastPosition); 1098 } 1099 } 1100 } 1101 }, 0); 1102 } 1103 function dblclickEvent(e) { 1104 var input = this; 1105 setTimeout(function() { 1106 caret(input, 0, seekNext(getLastValidPosition())); 1107 }, 0); 1108 } 1109 function cutEvent(e) { 1110 var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end); 1111 clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clip
1111Data.join("")), 1112 document.execCommand && document.execCommand("copy"), handleRemove(input, Inputmask.keyCode.DELETE, pos), 1113 writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 1114 input.inputmask._valueGet() === getBufferTemplate().join("") && $input.trigger("cleared"), 1115 opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); 1116 } 1117 function blurEvent(e) { 1118 var $input = $(this), input = this; 1119 if (input.inputmask) { 1120 var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice(); 1121 undoValue !== buffer.join("") && setTimeout(function() { 1122 $input.trigger("change"), undoValue = buffer.join(""); 1123 }, 0), "" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 1124 isComplete(buffer) === !1 && (setTimeout(function() { 1125 $input.trigger("incomplete"); 1126 }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), 1127 writeBuffer(input, buffer, void 0, e)); 1128 } 1129 } 1130 function mouseenterEvent(e) { 1131 var input = this; 1132 mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer()); 1133 } 1134 function submitEvent(e) { 1135 undoValue !== getBuffer().join("") && $el.trigger("change"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("") && el.inputmask._valueSet(""), 1136 opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), 1137 setTimeout(function() { 1138 writeBuffer(el, getBuffer()); 1139 }, 0)); 1140 } 1141 function resetEvent(e) { 1142 setTimeout(function() { 1143 $el.trigger("setvalue"); 1144 }, 0); 1145 } 1146 function mask(elem) { 1147 if (el = elem, $el = $(el), opts.showTooltip && (el.title = opts.tooltip || getMaskSet().mask), 1148 ("rtl" === el.dir || opts.rightAlign) && (el.style.textAlign = "right"), ("rtl" === el.dir || opts.numericInput) && (el.dir = "ltr", 1149 el.removeAttribute("dir"), el.inputmask.isRTL = !0, isRTL = !0), EventRuler.off(el), 1150 patchValueProperty(el), isElementTypeSupported(el, opts) && (EventRuler.on(el, "submit", submitEvent), 1151 EventRuler.on(el, "reset", resetEvent), EventRuler.on(el, "mouseenter", mouseenterEvent), 1152 EventRuler.on(el, "blur", blurEvent), EventRuler.on(el, "focus", focusEvent), EventRuler.on(el, "mouseleave", mouseleaveEvent), 1153 EventRuler.on(el, "click", clickEvent), EventRuler.on(el, "dblclick", dblclickEvent), 1154 EventRuler.on(el, "paste", pasteEvent), EventRuler.on(el, "dragdrop", pasteEvent), 1155 EventRuler.on(el, "drop", pasteEvent), EventRuler.on(el, "cut", cutEvent), EventRuler.on(el, "complete", opts.oncomplete), 1156 EventRuler.on(el, "incomplete", opts.onincomplete), EventRuler.on(el, "cleared", opts.oncleared), 1157 opts.inputEventOnly !== !0 && (EventRuler.on(el, "keydown", keydownEvent), EventRuler.on(el, "keypress", keypressEvent)), 1158 EventRuler.on(el, "input", inputFallBackEvent)), EventRuler.on(el, "setvalue", setValueEvent), 1159 "" !== el.inputmask._valueGet() || opts.clearMaskOnLostFocus === !1 || document.activeElement === el) { 1160 var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(el.inputmask._valueGet(), opts) || el.inputmask._valueGet() : el.inputmask._valueGet(); 1161 checkVal(el, !0, !1, initialValue.split("")); 1162 var buffer = getBuffer().slice(); 1163 undoValue = buffer.join(""), isComplete(buffer) === !1 && opts.clearIncomplete && resetMaskSet(), 1164 opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), 1165 writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition())); 1166 } 1167 }
1168 var undoValue, el, $el, maxLength, valueBuffer, isRTL = !1, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !0, EventRuler = { 1169 on: function(input, eventName, eventHandler) { 1170 var ev = function(e) { 1171 if (void 0 === this.inputmask && "FORM" !== this.nodeName) { 1172 var imOpts = $.data(this, "_inputmask_opts"); 1173 imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this); 1174 } else { 1175 if ("setvalue" === e.type || !(this.disabled || this.readOnly && !("keydown" === e.type && e.ctrlKey && 67 === e.keyCode || opts.tabThrough === !1 && e.keyCode === Inputmask.keyCode.TAB))) { 1176 switch (e.type) { 1177 case "input": 1178 if (skipInputEvent === !0) return skipInputEvent = !1, e.preventDefault(); 1179 break; 1180 1181 case "keydown": 1182 skipKeyPressEvent = !1, skipInputEvent = !1; 1183 break; 1184 1185 case "keypress": 1186 if (skipKeyPressEvent === !0) return e.preventDefault(); 1187 skipKeyPressEvent = !0; 1188 break; 1189 1190 case "click": 1191 if (iemobile) { 1192 var that = this; 1193 return setTimeout(function() { 1194 eventHandler.apply(that, arguments); 1195 }, 0), !1; 1196 } 1197 } 1198 var returnVal = eventHandler.apply(this, arguments); 1199 return returnVal === !1 && (e.preventDefault(), e.stopPropagation()), returnVal; 1200 } 1201 e.preventDefault(); 1202 } 1203 }; 1204 input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), 1205 -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev); 1206 }, 1207 off: function(input, event) { 1208 if (input.inputmask && input.inputmask.events) { 1209 var events; 1210 event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, 1211 $.each(events, function(eventName, evArr) { 1212 for (;evArr.length > 0; ) { 1213 var ev = evArr.pop(); 1214 -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev); 1215 } 1216 delete input.inputmask.events[eventName]; 1217 }); 1218 } 1219 } 1220 }; 1221 if (void 0 !== actionObj) switch (actionObj.action) { 1222 case "isComplete": 1223 return el = actionObj.el, isComplete(getBuffer()); 1224 1225 case "unmaskedvalue": 1226 return el = actionObj.el, void 0 !== el && void 0 !== el.inputmask ? (maskset = el.inputmask.maskset, 1227 opts = el.inputmask.opts, isRTL = el.inputmask.isRTL) : (valueBuffer = actionObj.value, 1228 opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(valueBuffer, opts) || valueBuffer : valueBuffer).split(""), 1229 checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts)), 1230 unmaskedvalue(el); 1231 1232 case "mask": 1233 el = actionObj.el, maskset = el.inputmask.maskset, opts = el.inputmask.opts, isRTL = el.inputmask.isRTL, 1234 undoValue = getBuffer().join(""), mask(el); 1235 break; 1236 1237 case "format": 1238 return opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(actionObj.value, opts) || actionObj.value : actionObj.value).split(""), 1239 checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts), 1240 actionObj.metadata ? { 1241 value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""), 1242 metadata: maskScope({ 1243 action: "getmetadata" 1244 }, maskset, opts) 1245 } : isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""); 1246 1247 case "isValid": 1248 opts.numericInput && (isRTL = !0), actionObj.value ? (valueBuffer = actionObj.value.split(""), 1249 checkVal(void 0, !1, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join(""); 1250 for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ; 1251 return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join(""); 1252 1253 case "getemptymask": 1254 return getBufferTemplate().join(""); 1255 1256 case "remove": 1257 el = actionObj.el, $el = $(el), maskset = el.inputmask.maskset, opts = el.inputmask.opts, 1258 el.inputmask._valueSet(unmaskedvalue(el)), EventRuler.off(el); 1259 var valueProperty;
1260 Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"), 1261 valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, "value", { 1262 get: el.inputmask.__valueGet, 1263 set: el.inputmask.__valueSet, 1264 configurable: !0 1265 })) : document.__lookupGetter__ && el.__lookupGetter__("value") && el.inputmask.__valueGet && (el.__defineGetter__("value", el.inputmask.__valueGet), 1266 el.__defineSetter__("value", el.inputmask.__valueSet)), el.inputmask = void 0; 1267 break; 1268 1269 case "getmetadata": 1270 if ($.isArray(maskset.metadata)) { 1271 for (var alternation, lvp = getLastValidPosition(void 0, !0), firstAlt = lvp; firstAlt >= 0; firstAlt--) if (getMaskSet().validPositions[firstAlt] && void 0 !== getMaskSet().validPositions[firstAlt].alternation) { 1272 alternation = getMaskSet().validPositions[firstAlt].alternation; 1273 break; 1274 } 1275 return void 0 !== alternation ? maskset.metadata[getMaskSet().validPositions[firstAlt].locator[alternation]] : []; 1276 } 1277 return maskset.metadata; 1278 } 1279 } 1280 Inputmask.prototype = { 1281 defaults: { 1282 placeholder: "_", 1283 optionalmarker: { 1284 start: "[", 1285 end: "]" 1286 }, 1287 quantifiermarker: { 1288 start: "{", 1289 end: "}" 1290 }, 1291 groupmarker: { 1292 start: "(", 1293 end: ")" 1294 }, 1295 alternatormarker: "|", 1296 escapeChar: "\\", 1297 mask: null, 1298 oncomplete: $.noop, 1299 onincomplete: $.noop, 1300 oncleared: $.noop, 1301 repeat: 0, 1302 greedy: !0, 1303 autoUnmask: !1, 1304 removeMaskOnSubmit: !1, 1305 clearMaskOnLostFocus: !0, 1306 insertMode: !0, 1307 clearIncomplete: !1, 1308 aliases: {}, 1309 alias: null, 1310 onKeyDown: $.noop, 1311 onBeforeMask: null, 1312 onBeforePaste: function(pastedValue, opts) { 1313 return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(pastedValue, opts) : pastedValue; 1314 }, 1315 onBeforeWrite: null, 1316 onUnMask: null, 1317 showMaskOnFocus: !0, 1318 showMaskOnHover: !0, 1319 onKeyValidation: $.noop, 1320 skipOptionalPartCharacter: " ", 1321 showTooltip: !1, 1322 tooltip: void 0, 1323 numericInput: !1, 1324 rightAlign: !1, 1325 undoOnEscape: !0, 1326 radixPoint: "", 1327 radixPointDefinitionSymbol: void 0, 1328 groupSeparator: "", 1329 keepStatic: null, 1330 positionCaretOnTab: !1, 1331 tabThrough: !1, 1332 supportsInputType: [ "text", "tel", "password" ], 1333 definitions: { 1334 "9": { 1335 validator: "[0-9]", 1336 cardinality: 1, 1337 definitionSymbol: "*" 1338 }, 1339 a: { 1340 validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 1341 cardinality: 1, 1342 definitionSymbol: "*" 1343 }, 1344 "*": { 1345 validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 1346 cardinality: 1 1347 } 1348 }, 1349 ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 ], 1350 isComplete: null, 1351 canClearPosition: $.noop, 1352 postValidation: null, 1353 staticDefinitionSymbol: void 0, 1354 jitMasking: !1, 1355 nullable: !0, 1356 inputEventOnly: !1, 1357 positionCaretOnClick: "lvp" 1358 }, 1359 masksCache: {}, 1360 mask: function(elems) { 1361 var that = this; 1362 return "string" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), 1363 elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) { 1364 var scopedOpts = $.extend(!0, {}, that.opts); 1365 importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions)); 1366 var maskset = generateMaskSet(scopedOpts, that.noMasksCache); 1367 void 0 !== maskset && (void 0 !== el.inputmask && el.inputmask.remove(), el.inputmask = new Inputmask(), 1368 el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.
1368inputmask.userOptions = $.extend(!0, {}, that.userOptions), 1369 el.inputmask.el = el, el.inputmask.maskset = maskset, el.inputmask.isRTL = !1, $.data(el, "_inputmask_opts", scopedOpts), 1370 maskScope({ 1371 action: "mask", 1372 el: el 1373 })); 1374 }), elems && elems[0] ? elems[0].inputmask || this : this; 1375 }, 1376 option: function(options, noremask) { 1377 return "string" == typeof options ? this.opts[options] : "object" == typeof options ? ($.extend(this.userOptions, options), 1378 this.el && noremask !== !0 && this.mask(this.el), this) : void 0; 1379 }, 1380 unmaskedvalue: function(value) { 1381 return maskScope({ 1382 action: "unmaskedvalue", 1383 el: this.el, 1384 value: value 1385 }, this.el && this.el.inputmask ? this.el.inputmask.maskset : generateMaskSet(this.opts, this.noMasksCache), this.opts); 1386 }, 1387 remove: function() { 1388 return this.el ? (maskScope({ 1389 action: "remove", 1390 el: this.el 1391 }), this.el.inputmask = void 0, this.el) : void 0; 1392 }, 1393 getemptymask: function() { 1394 return maskScope({ 1395 action: "getemptymask" 1396 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1397 }, 1398 hasMaskedValue: function() { 1399 return !this.opts.autoUnmask; 1400 }, 1401 isComplete: function() { 1402 return maskScope({ 1403 action: "isComplete",
1404 el: this.el 1405 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1406 }, 1407 getmetadata: function() { 1408 return maskScope({ 1409 action: "getmetadata" 1410 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1411 }, 1412 isValid: function(value) { 1413 return maskScope({ 1414 action: "isValid", 1415 value: value 1416 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1417 }, 1418 format: function(value, metadata) { 1419 return maskScope({ 1420 action: "format", 1421 value: value, 1422 metadata: metadata 1423 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1424 } 1425 }, Inputmask.extendDefaults = function(options) { 1426 $.extend(!0, Inputmask.prototype.defaults, options); 1427 }, Inputmask.extendDefinitions = function(definition) { 1428 $.extend(!0, Inputmask.prototype.defaults.definitions, definition); 1429 }, Inputmask.extendAliases = function(alias) { 1430 $.extend(!0, Inputmask.prototype.defaults.aliases, alias); 1431 }, Inputmask.format = function(value, options, metadata) { 1432 return Inputmask(options).format(value, metadata); 1433 }, Inputmask.unmask = function(value, options) { 1434 return Inputmask(options).unmaskedvalue(value); 1435 }, Inputmask.isValid = function(value, options) { 1436 return Inputmask(options).isValid(value); 1437 }, Inputmask.remove = function(elems) { 1438 $.each(elems, function(ndx, el) { 1439 el.inputmask && el.inputmask.remove(); 1440 }); 1441 }, Inputmask.escapeRegex = function(str) { 1442 var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ]; 1443 return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1"); 1444 }, Inputmask.keyCode = { 1445 ALT: 18, 1446 BACKSPACE: 8, 1447 BACKSPACE_SAFARI: 127, 1448 CAPS_LOCK: 20, 1449 COMMA: 188, 1450 COMMAND: 91, 1451 COMMAND_LEFT: 91, 1452 COMMAND_RIGHT: 93, 1453 CONTROL: 17, 1454 DELETE: 46, 1455 DOWN: 40, 1456 END: 35, 1457 ENTER: 13, 1458 ESCAPE: 27, 1459 HOME: 36, 1460 INSERT: 45, 1461 LEFT: 37, 1462 MENU: 93, 1463 NUMPAD_ADD: 107, 1464 NUMPAD_DECIMAL: 110, 1465 NUMPAD_DIVIDE: 111, 1466 NUMPAD_ENTER: 108, 1467 NUMPAD_MULTIPLY: 106, 1468 NUMPAD_SUBTRACT: 109, 1469 PAGE_DOWN: 34, 1470 PAGE_UP: 33, 1471 PERIOD: 190, 1472 RIGHT: 39, 1473 SHIFT: 16, 1474 SPACE: 32, 1475 TAB: 9, 1476 UP: 38, 1477 WINDOWS: 91, 1478 X: 88 1479 }; 1480 var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile; 1481 return window.Inputmask = Inputmask, Inputmask; 1482}(jQuery), function($, Inputmask) { 1483 return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) { 1484 var nptmask, input = this[0]; 1485 if (void 0 === options && (options = {}), "string" == typeof fn) switch (fn) { 1486 case "unmaskedvalue": 1487 return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val(); 1488 1489 case "remove": 1490 return this.each(function() { 1491 this.inputmask && this.inputmask.remove(); 1492 }); 1493 1494 case "getemptymask": 1495 return input && input.inputmask ? input.inputmask.getemptymask() : ""; 1496 1497 case "hasMaskedValue": 1498 return input && input.inputmask ? input.inputmask.hasMaskedValue() : !1; 1499 1500 case "isComplete": 1501 return input && input.inputmask ? input.inputmask.isComplete() : !0; 1502 1503 case "getmetadata": 1504 return input && input.inputmask ? input.inputmask.getmetadata() : void 0; 1505 1506 case "setvalue": 1507 $(input).val(options), input && void 0 === input.inputmask && $(input).triggerHandler("setvalue"); 1508 break; 1509 1510 case "option": 1511 if ("string" != typeof options) return this.each(function() { 1512 return void 0 !== this.inputmask ? this.inputmask.option(options) : void 0; 1513 }); 1514 if (input && void 0 !== input.inputmask) return input.inputmask.option(options); 1515 break; 1516 1517 default: 1518 return options.alias = fn, nptmask = new Inputmask(options), this.each(function() { 1519 nptmask.mask(this); 1520 }); 1521 } else { 1522 if ("object" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() { 1523 return void 0 !== this.inputmask ? this.inputmask.option(fn) : void nptmask.mask(this); 1524 }) : this.each(function() { 1525 nptmask.mask(this); 1526 }); 1527 if (void 0 === fn) return this.each(function() { 1528 nptmask = new Inputmask(options), nptmask.mask(this); 1529 }); 1530 } 1531 }), $.fn.inputmask; 1532}(jQuery, Inputmask), function($, Inputmask) { 1533 return Inputmask.extendDefinitions({ 1534 h: { 1535 validator: "[01][0-9]|2[0-3]", 1536 cardinality: 2, 1537 prevalidator: [ { 1538 validator: "[0-2]", 1539 cardinality: 1 1540 } ] 1541 }, 1542 s: { 1543 validator: "[0-5][0-9]", 1544 cardinality: 2, 1545 prevalidator: [ { 1546 validator: "[0-5]", 1547 cardinality: 1 1548 } ] 1549 }, 1550 d: { 1551 validator: "0[1-9]|[12][0-9]|3[01]", 1552 cardinality: 2, 1553 prevalidator: [ { 1554 validator: "[0-3]", 1555 cardinality: 1 1556 } ] 1557 }, 1558 m: { 1559 validator: "0[1-9]|1[012]", 1560 cardinality: 2, 1561 prevalidator: [ { 1562 validator: "[01]", 1563 cardinality: 1 1564 } ] 1565 }, 1566 y: { 1567 validator: "(19|20)\\d{2}", 1568 cardinality: 4, 1569 prevalidator: [ { 1570 validator: "[12]", 1571 cardinality: 1 1572 }, { 1573 validator: "(19|20)", 1574 cardinality: 2 1575 }, { 1576 validator: "(19|20)\\d", 1577 cardinality: 3 1578 } ] 1579 } 1580 }), Inputmask.extendAliases({ 1581 "dd/mm/yyyy": { 1582 mask: "1/2/y", 1583 placeholder: "dd/mm/yyyy", 1584 regex: { 1585 val1pre: new RegExp("[0-3]"),
1586 val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), 1587 val2pre: function(separator) { 1588 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1589 return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])"); 1590 }, 1591 val2: function(separator) { 1592 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1593 return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))"); 1594 } 1595 }, 1596 leapday: "29/02/", 1597 separator: "/", 1598 yearrange: { 1599 minyear: 1900, 1600 maxyear: 2099 1601 }, 1602 isInYearRange: function(chrs, minyear, maxyear) { 1603 if (isNaN(chrs)) return !1; 1604 var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length))); 1605 return (isNaN(enteredyear) ? !1 : enteredyear >= minyear && maxyear >= enteredyear) || (isNaN(enteredyear2) ? !1 : enteredyear2 >= minyear && maxyear >= enteredyear2); 1606 }, 1607 determinebaseyear: function(minyear, maxyear, hint) { 1608 var currentyear = new Date().getFullYear(); 1609 if (minyear > currentyear) return minyear; 1610 if (currentyear > maxyear) { 1611 for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxYearPrefix + hint > maxyear; ) maxYearPrefix--; 1612 var maxxYear = maxYearPrefix + maxYearPostfix; 1613 return minyear > maxxYear ? minyear : maxxYear; 1614 } 1615 if (currentyear >= minyear && maxyear >= currentyear) { 1616 for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--; 1617 var currentYearAndHint = currentYearPrefix + hint; 1618 return minyear > currentYearAndHint ? minyear : currentYearAndHint; 1619 } 1620 return currentyear; 1621 }, 1622 onKeyDown: function(e, buffer, caretPos, opts) { 1623 var $input = $(this); 1624 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1625 var today = new Date(); 1626 $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), 1627 $input.trigger("setvalue"); 1628 } 1629 }, 1630 getFrontValue: function(mask, buffer, opts) { 1631 for (var start = 0, length = 0, i = 0; i < mask.length && "2" !== mask.charAt(i); i++) { 1632 var definition = opts.definitions[mask.charAt(i)];
1633 definition ? (start += length, length = definition.cardinality) : length++; 1634 } 1635 return buffer.join("").substr(start, length); 1636 }, 1637 definitions: { 1638 "1": { 1639 validator: function(chrs, maskset, pos, strict, opts) { 1640 var isValid = opts.regex.val1.test(chrs); 1641 return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === "-./".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test("0" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = "0", 1642 { 1643 refreshFromBuffer: { 1644 start: pos - 1, 1645 end: pos 1646 }, 1647 pos: pos, 1648 c: chrs.charAt(0) 1649 }); 1650 }, 1651 cardinality: 2, 1652 prevalidator: [ { 1653 validator: function(chrs, maskset, pos, strict, opts) { 1654 var pchrs = chrs; 1655 isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]); 1656 var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs); 1657 if (!strict && !isValid) { 1658 if (isValid = opts.regex.val1.test(chrs + "0")) return maskset.buffer[pos] = chrs, 1659 maskset.buffer[++pos] = "0", { 1660 pos: pos, 1661 c: "0" 1662 }; 1663 if (isValid = opts.regex.val1.test("0" + chrs)) return maskset.buffer[pos] = "0", 1664 pos++, { 1665 pos: pos 1666 }; 1667 } 1668 return isValid; 1669 }, 1670 cardinality: 1 1671 } ] 1672 }, 1673 "2": { 1674 validator: function(chrs, maskset, pos, strict, opts) { 1675 var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts); 1676 -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator); 1677 var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); 1678 if (!strict && !isValid && (chrs.charAt(1) === opts.separator || -1 !== "-./".indexOf(chrs.charAt(1))) && (isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 1679 { 1680 refreshFromBuffer: { 1681 start: pos - 1, 1682 end: pos 1683 }, 1684 pos: pos, 1685 c: chrs.charAt(0) 1686 }; 1687 if (opts.mask.indexOf("2") === opts.mask.length - 1 && isValid) { 1688 var dayMonthValue = maskset.buffer.join("").substr(4, 4) + chrs; 1689 if (dayMonthValue !== opts.leapday) return !0; 1690 var year = parseInt(maskset.buffer.join("").substr(0, 4), 10); 1691 return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1692 } 1693 return isValid; 1694 }, 1695 cardinality: 2, 1696 prevalidator: [ { 1697 validator: function(chrs, maskset, pos, strict, opts) { 1698 isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]); 1699 var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts); 1700 -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator); 1701 var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs); 1702 return strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1703 pos++, { 1704 pos: pos 1705 }); 1706 }, 1707 cardinality: 1 1708 } ] 1709 }, 1710 y: { 1711 validator: function(chrs, maskset, pos, strict, opts) { 1712 if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { 1713 var dayMonthValue = maskset.buffer.join("").substr(0, 6); 1714 if (dayMonthValue !== opts.leapday) return !0; 1715 var year = parseInt(chrs, 10); 1716 return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1717 } 1718 return !1; 1719 }, 1720 cardinality: 4, 1721 prevalidator: [ { 1722 validator: function(chrs, maskset, pos, strict, opts) { 1723 var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1724 if (!strict && !isValid) { 1725 var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1); 1726 if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 1727 { 1728 pos: pos 1729 }; 1730 if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2), 1731 isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 1732 maskset.buffer[pos++] = yearPrefix.charAt(1), { 1733 pos: pos 1734 }; 1735 } 1736 return isValid; 1737 }, 1738 cardinality: 1 1739 }, { 1740 validator: function(chrs, maskset, pos, strict, opts) { 1741 var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1742 if (!strict && !isValid) { 1743 var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); 1744 if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), 1745 { 1746 pos: pos 1747 }; 1748 if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), 1749 opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { 1750 var dayMonthValue = maskset.buffer.join("").substr(0, 6); 1751 if (dayMonthValue !== opts.leapday) isValid = !0; else { 1752 var year = parseInt(chrs, 10); 1753 isValid = year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1754 } 1755 } else isValid = !1; 1756 if (isValid) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), maskset.buffer[pos++] = yearPrefix.charAt(1), 1757 maskset.buffer[pos++] = chrs.charAt(0), { 1758 refreshFromBuffer: { 1759 start: pos - 3, 1760 end: pos 1761 }, 1762 pos: pos 1763 }; 1764 } 1765 return isValid; 1766 }, 1767 cardinality: 2 1768 }, { 1769 validator: function(chrs, maskset, pos, strict, opts) { 1770 return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1771 }, 1772 cardinality: 3 1773 } ] 1774 } 1775 }, 1776 insertMode: !1, 1777 autoUnmask: !1 1778 }, 1779 "mm/dd/yyyy": { 1780 placeholder: "mm/dd/yyyy", 1781 alias: "dd/mm/yyyy", 1782 regex: { 1783 val2pre: function(separator) { 1784 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1785 return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); 1786 }, 1787 val2: function(separator) { 1788 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1789 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); 1790 }, 1791 val1pre: new RegExp("[01]"),
1792 val1: new RegExp("0[1-9]|1[012]") 1793 }, 1794 leapday: "02/29/", 1795 onKeyDown: function(e, buffer, caretPos, opts) { 1796 var $input = $(this); 1797 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1798 var today = new Date(); 1799 $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 1800 $input.trigger("setvalue"); 1801 } 1802 } 1803 }, 1804 "yyyy/mm/dd": { 1805 mask: "y/1/2", 1806 placeholder: "yyyy/mm/dd", 1807 alias: "mm/dd/yyyy", 1808 leapday: "/02/29", 1809 onKeyDown: function(e, buffer, caretPos, opts) { 1810 var $input = $(this); 1811 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1812 var today = new Date(); 1813 $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), 1814 $input.trigger("setvalue"); 1815 } 1816 } 1817 }, 1818 "dd.mm.yyyy": { 1819 mask: "1.2.y", 1820 placeholder: "dd.mm.yyyy", 1821 leapday: "29.02.", 1822 separator: ".", 1823 alias: "dd/mm/yyyy" 1824 }, 1825 "dd-mm-yyyy": { 1826 mask: "1-2-y", 1827 placeholder: "dd-mm-yyyy", 1828 leapday: "29-02-", 1829 separator: "-", 1830 alias: "dd/mm/yyyy" 1831 }, 1832 "mm.dd.yyyy": { 1833 mask: "1.2.y", 1834 placeholder: "mm.dd.yyyy", 1835 leapday: "02.29.", 1836 separator: ".", 1837 alias: "mm/dd/yyyy" 1838 }, 1839 "mm-dd-yyyy": { 1840 mask: "1-2-y", 1841 placeholder: "mm-dd-yyyy", 1842 leapday: "02-29-", 1843 separator: "-", 1844 alias: "mm/dd/yyyy" 1845 }, 1846 "yyyy.mm.dd": { 1847 mask: "y.1.2", 1848 placeholder: "yyyy.mm.dd", 1849 leapday: ".02.29", 1850 separator: ".", 1851 alias: "yyyy/mm/dd" 1852 }, 1853 "yyyy-mm-dd": { 1854 mask: "y-1-2", 1855 placeholder: "yyyy-mm-dd", 1856 leapday: "-02-29", 1857 separator: "-", 1858 alias: "yyyy/mm/dd" 1859 }, 1860 datetime: { 1861 mask: "1/2/y h:s", 1862 placeholder: "dd/mm/yyyy hh:mm", 1863 alias: "dd/mm/yyyy", 1864 regex: { 1865 hrspre: new RegExp("[012]"), 1866 hrs24: new RegExp("2[0-4]|1[3-9]"), 1867 hrs: new RegExp("[01][0-9]|2[0-4]"), 1868 ampm: new RegExp("^[a|p|A|P][m|M]"), 1869 mspre: new RegExp("[0-5]"), 1870 ms: new RegExp("[0-5][0-9]") 1871 }, 1872 timeseparator: ":", 1873 hourFormat: "24", 1874 definitions: { 1875 h: { 1876 validator: function(chrs, maskset, pos, strict, opts) { 1877 if ("24" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = "0", 1878 maskset.buffer[pos] = "0", { 1879 refreshFromBuffer: { 1880 start: pos - 1, 1881 end: pos 1882 }, 1883 c: "0" 1884 }; 1885 var isValid = opts.regex.hrs.test(chrs); 1886 if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== "-.:".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test("0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 1887 maskset.buffer[pos] = chrs.charAt(0), pos++, { 1888 refreshFromBuffer: { 1889 start: pos - 2, 1890 end: pos 1891 }, 1892 pos: pos, 1893 c: opts.timeseparator 1894 }; 1895 if (isValid && "24" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) { 1896 var tmp = parseInt(chrs, 10); 1897 return 24 === tmp ? (maskset.buffer[pos + 5] = "a", maskset.buffer[pos + 6] = "m") : (maskset.buffer[pos + 5] = "p", 1898 maskset.buffer[pos + 6] = "m"), tmp -= 12, 10 > tmp ? (maskset.buffer[pos] = tmp.toString(), 1899 maskset.buffer[pos - 1] = "0") : (maskset.buffer[pos] = tmp.toString().charAt(1), 1900 maskset.buffer[pos - 1] = tmp.toString().charAt(0)), { 1901 refreshFromBuffer: { 1902 start: pos - 1, 1903 end: pos + 6 1904 }, 1905 c: maskset.buffer[pos] 1906 }; 1907 } 1908 return isValid; 1909 }, 1910 cardinality: 2, 1911 prevalidator: [ { 1912 validator: function(chrs, maskset, pos, strict, opts) { 1913 var isValid = opts.regex.hrspre.test(chrs); 1914 return strict || isValid || !(isValid = opts.regex.hrs.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1915 pos++, { 1916 pos: pos 1917 }); 1918 }, 1919 cardinality: 1 1920 } ] 1921 }, 1922 s: { 1923 validator: "[0-5][0-9]", 1924 cardinality: 2, 1925 prevalidator: [ { 1926 validator: function(chrs, maskset, pos, strict, opts) { 1927 var isValid = opts.regex.mspre.test(chrs); 1928 return strict || isValid || !(isValid = opts.regex.ms.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1929 pos++, { 1930 pos: pos 1931 }); 1932 }, 1933 cardinality: 1 1934 } ] 1935 }, 1936 t: { 1937 validator: function(chrs, maskset, pos, strict, opts) { 1938 return opts.regex.ampm.test(chrs + "m"); 1939 }, 1940 casing: "lower", 1941 cardinality: 1 1942 } 1943 }, 1944 insertMode: !1, 1945 autoUnmask: !1 1946 }, 1947 datetime12: { 1948 mask: "1/2/y h:s t\\m", 1949 placeholder: "dd/mm/yyyy hh:mm xm", 1950 alias: "datetime",
1951 hourFormat: "12" 1952 }, 1953 "mm/dd/yyyy hh:mm xm": { 1954 mask: "1/2/y h:s t\\m", 1955 placeholder: "mm/dd/yyyy hh:mm xm", 1956 alias: "datetime12", 1957 regex: { 1958 val2pre: function(separator) { 1959 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1960 return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); 1961 }, 1962 val2: function(separator) { 1963 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1964 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); 1965 }, 1966 val1pre: new RegExp("[01]"), 1967 val1: new RegExp("0[1-9]|1[012]") 1968 }, 1969 leapday: "02/29/", 1970 onKeyDown: function(e, buffer, caretPos, opts) { 1971 var $input = $(this); 1972 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1973 var today = new Date(); 1974 $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 1975 $input.trigger("setvalue"); 1976 } 1977 } 1978 }, 1979 "hh:mm t": { 1980 mask: "h:s t\\m", 1981 placeholder: "hh:mm xm", 1982 alias: "datetime", 1983 hourFormat: "12" 1984 }, 1985 "h:s t": { 1986 mask: "h:s t\\m", 1987 placeholder: "hh:mm xm", 1988 alias: "datetime", 1989 hourFormat: "12" 1990 }, 1991 "hh:mm:ss": { 1992 mask: "h:s:s", 1993 placeholder: "hh:mm:ss", 1994 alias: "datetime", 1995 autoUnmask: !1 1996 }, 1997 "hh:mm": { 1998 mask: "h:s", 1999 placeholder: "hh:mm", 2000 alias: "datetime", 2001 autoUnmask: !1 2002 }, 2003 date: { 2004 alias: "dd/mm/yyyy" 2005 }, 2006 "mm/yyyy": { 2007 mask: "1/y", 2008 placeholder: "mm/yyyy", 2009 leapday: "donotuse", 2010 separator: "/", 2011 alias: "mm/dd/yyyy" 2012 }, 2013 shamsi: { 2014 regex: { 2015 val2pre: function(separator) { 2016 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 2017 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])"); 2018 }, 2019 val2: function(separator) { 2020 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 2021 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)"); 2022 }, 2023 val1pre: new RegExp("[01]"), 2024 val1: new RegExp("0[1-9]|1[012]") 2025 }, 2026 yearrange: { 2027 minyear: 1300, 2028 maxyear: 1499 2029 }, 2030 mask: "y/1/2", 2031 leapday: "/12/30", 2032 placeholder: "yyyy/mm/dd", 2033 alias: "mm/dd/yyyy", 2034 clearIncomplete: !0 2035 } 2036 }), Inputmask; 2037}(jQuery, Inputmask), function($, Inputmask) { 2038 return Inputmask.extendDefinitions({ 2039 A: { 2040 validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 2041 cardinality: 1, 2042 casing: "upper" 2043 }, 2044 "&": { 2045 validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 2046 cardinality: 1, 2047 casing: "upper" 2048 }, 2049 "#": { 2050 validator: "[0-9A-Fa-f]", 2051 cardinality: 1, 2052 casing: "upper" 2053 } 2054 }), Inputmask.extendAliases({ 2055 url: { 2056 definitions: { 2057 i: { 2058 validator: ".", 2059 cardinality: 1 2060 } 2061 }, 2062 mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}", 2063 insertMode: !1, 2064 autoUnmask: !1 2065 }, 2066 ip: { 2067 mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", 2068 definitions: { 2069 i: { 2070 validator: function(chrs, maskset, pos, strict, opts) { 2071 return pos - 1 > -1 && "." !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, 2072 chrs = pos - 2 > -1 && "." !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : "0" + chrs) : chrs = "00" + chrs, 2073 new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); 2074 }, 2075 cardinality: 1 2076 } 2077 }, 2078 onUnMask: function(maskedValue, unmaskedValue, opts) { 2079 return maskedValue; 2080 } 2081 }, 2082 email: { 2083 mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]", 2084 greedy: !1, 2085 onBeforePaste: function(pastedValue, opts) { 2086 return pastedValue = pastedValue.toLowerCase(), pastedValue.replace("mailto:", ""); 2087 }, 2088 definitions: { 2089 "*": { 2090 validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]", 2091 cardinality: 1, 2092 casing: "lower" 2093 }, 2094 "-": { 2095 validator: "[0-9A-Za-z-]", 2096 cardinality: 1, 2097 casing: "lower" 2098 } 2099 }, 2100 onUnMask: function(maskedValue, unmaskedValue, opts) { 2101 return maskedValue; 2102 } 2103 }, 2104 mac: {
2105 mask: "##:##:##:##:##:##" 2106 }, 2107 vin: { 2108 mask: "V{13}9{4}", 2109 definitions: { 2110 V: { 2111 validator: "[A-HJ-NPR-Za-hj-npr-z\\d]", 2112 cardinality: 1, 2113 casing: "upper" 2114 } 2115 }, 2116 clearIncomplete: !0, 2117 autoUnmask: !0 2118 } 2119 }), Inputmask; 2120}(jQuery, Inputmask), function($, Inputmask) { 2121 return Inputmask.extendAliases({ 2122 numeric: { 2123 mask: function(opts) { 2124 function autoEscape(txt) { 2125 for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? "\\" + txt.charAt(i) : txt.charAt(i); 2126 return escapedTxt; 2127 } 2128 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 2129 opts.repeat = 0, opts.groupSeparator === opts.radixPoint && ("." === opts.radixPoint ? opts.groupSeparator = "," : "," === opts.radixPoint ? opts.groupSeparator = "." : opts.groupSeparator = ""), 2130 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" !== opts.groupSeparator, 2131 opts.autoGroup && ("string" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), 2132 isFinite(opts.integerDigits))) { 2133 var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize; 2134 opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), 2135 opts.integerDigits < 1 && (opts.integerDigits = "*"); 2136 } 2137 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 2138 "radixFocus" === opts.positionCaretOnClick && "" === opts.placeholder && opts.integerOptional === !1 && (opts.positionCaretOnClick = "lvp"), 2139 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 2140 opts.numericInput === !0 && (opts.positionCaretOnClick = "radixFocus" === opts.positionCaretOnClick ? "lvp" : opts.positionCaretOnClick, 2141 opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1); 2142 var mask = autoEscape(opts.prefix); 2143 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 2144 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 2145 mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{1," + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 2146 mask += "[-]", mask += autoEscape(opts.suffix), opts.greedy = !1, null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2147 "," === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, "."))), 2148 null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2149 "," === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, "."))), 2150 mask; 2151 }, 2152 placeholder: "", 2153 greedy: !1, 2154 digits: "*", 2155 digitsOptional: !0, 2156 radixPoint: ".", 2157 positionCaretOnClick: "radixFocus", 2158 groupSize: 3, 2159 groupSeparator: "", 2160 autoGroup: !1, 2161 allowPlus: !0, 2162 allowMinus: !0, 2163 negationSymbol: { 2164 front: "-", 2165 back: "" 2166 }, 2167 integerDigits: "+", 2168 integerOptional: !0, 2169 prefix: "", 2170 suffix: "", 2171 rightAlign: !0, 2172 decimalProtect: !0, 2173 min: null, 2174 max: null, 2175 step: 1, 2176 insertMode: !0, 2177 autoUnmask: !1, 2178 unmaskAsNumber: !1, 2179 postFormat: function(buffer, pos, opts) { 2180 opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1)); 2181 var i, l; 2182 pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos; 2183 var charAtPos = buffer[pos], cbuf = buffer.slice(); 2184 charAtPos === opts.groupSeparator && (cbuf.splice(pos--, 1), charAtPos = cbuf[pos]
2184), 2185 cbuf[pos] = "!"; 2186 var bufVal = cbuf.join(""), bufValOrigin = bufVal; 2187 if (bufVal = bufVal.replace(new RegExp(Inputmask.escapeRegex(opts.suffix) + "$"), ""), 2188 bufVal = bufVal.replace(new RegExp("^" + Inputmask.escapeRegex(opts.prefix)), ""), 2189 bufVal.length > 0 && opts.autoGroup || -1 !== bufVal.indexOf(opts.groupSeparator)) { 2190 var escapedGroupSeparator = Inputmask.escapeRegex(opts.groupSeparator); 2191 bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), ""); 2192 var radixSplit = bufVal.split(charAtPos === opts.radixPoint ? "!" : opts.radixPoint); 2193 if (bufVal = "" === opts.radixPoint ? bufVal : radixSplit[0], charAtPos !== opts.negationSymbol.front && (bufVal = bufVal.replace("!", "?")), 2194 bufVal.length > opts.groupSize) for (var reg = new RegExp("([-+]?[\\d?]+)([\\d?]{" + opts.groupSize + "})"); reg.test(bufVal) && "" !== opts.groupSeparator; ) bufVal = bufVal.replace(reg, "$1" + opts.groupSeparator + "$2"), 2195 bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator); 2196 bufVal = bufVal.replace("?", "!"), "" !== opts.radixPoint && radixSplit.length > 1 && (bufVal += (charAtPos === opts.radixPoint ? "!" : opts.radixPoint) + radixSplit[1]); 2197 } 2198 bufVal = opts.prefix + bufVal + opts.suffix; 2199 var needsRefresh = bufValOrigin !== bufVal; 2200 if (needsRefresh) for (buffer.length = bufVal.length, i = 0, l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i); 2201 var newPos = $.inArray("!", bufVal); 2202 return buffer[newPos] = charAtPos, newPos = opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos, 2203 opts.numericInput && (buffer = buffer.reverse(), $.inArray(opts.radixPoint, buffer) < newPos && buffer.join("").length - opts.suffix.length !== newPos && (newPos -= 1)), 2204 { 2205 pos: newPos, 2206 refreshFromBuffer: needsRefresh, 2207 buffer: buffer 2208 }; 2209 }, 2210 onBeforeWrite: function(e, buffer, caretPos, opts) { 2211 var rslt; 2212 if (e && ("blur" === e.type || "checkval" === e.type || "keydown" === e.type)) { 2213 var maskedValue = opts.numericInput ? buffer.slice().reverse().join("") : buffer.join(""), processValue = maskedValue.replace(opts.prefix, ""); 2214 processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2215 "," === opts.radixPoint && (processValue = processValue.replace(opts.radixPoint, ".")); 2216 var isNegative = processValue.match(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g")); 2217 if (isNegative = null !== isNegative && 1 === isNegative.length, processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""), 2218 processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 2219 isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), "g"), "")), 2220 processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue, 2221 "" !== processValue && isFinite(processValue)) { 2222 var floatValue = parseFloat(processValue), signedFloatValue = isNegative ? -1 * floatValue : floatValue; 2223 if (null !== opts.min && isFinite(opts.min) && signedFloatValue < parseFloat(opts.min) ? (floatValue = Math.abs(opts.min), 2224 isNegative = opts.min < 0, maskedValue = void 0) : null !== opts.max && isFinite(opts.max) && signedFloatValue > parseFloat(opts.max) && (floatValue = Math.abs(opts.max), 2225 isNegative = opts.max < 0, maskedValue = void 0), processValue = floatValue.toString().replace(".", opts.radixPoint).split(""), 2226 isFinite(opts.digits)) { 2227 var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue); 2228 -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1); 2229 for (var i = 1; i <= opts.digits; i++) opts.digitsOptional || void 0 !== processValue[radixPosition + i] && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && void 0 !== maskedValue[rpb + i] && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = "0"; 2230 processValue[processValue.length - 1] === opts.radixPoint && delete processValue[processValue.length - 1]; 2231 } 2232 if (floatValue.toString() !== processValue && floatValue.toString() + "." !== processValue || isNegative) return !isNegative || 0 === floatValue && "blur" === e.type || (processValue.unshift(opts.negationSymbol.front), 2233 processValue.push(opts.negationSymbol.back)), processValue = (opts.prefix + processValue.join("")).split(""), 2234 opts.numericInput && (processValue = processValue.reverse()), rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts), 2235 rslt.buffer && (rslt.refreshFromBuffer = rslt.buffer.join("") !== buffer.join("")), 2236 rslt; 2237 } 2238 } 2239 return opts.autoGroup ? (rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts), 2240 rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1, rslt)
2240: void 0; 2241 }, 2242 regex: { 2243 integerPart: function(opts) { 2244 return new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+"); 2245 }, 2246 integerNPart: function(opts) { 2247 return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+"); 2248 } 2249 }, 2250 signHandler: function(chrs, maskset, pos, strict, opts) { 2251 if (!strict && opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) { 2252 var matchRslt = maskset.buffer.join("").match(opts.regex.integerPart(opts)); 2253 if (matchRslt && matchRslt[0].length > 0) return maskset.buffer[matchRslt.index] === ("-" === chrs ? "+" : opts.negationSymbol.front) ? "-" === chrs ? "" !== opts.negationSymbol.back ? { 2254 pos: matchRslt.index, 2255 c: opts.negationSymbol.front, 2256 remove: matchRslt.index, 2257 caret: pos, 2258 insert: { 2259 pos: maskset.buffer.length - opts.suffix.length - 1, 2260 c: opts.negationSymbol.back 2261 } 2262 } : { 2263 pos: matchRslt.index, 2264 c: opts.negationSymbol.front, 2265 remove: matchRslt.index, 2266 caret: pos 2267 } : "" !== opts.negationSymbol.back ? { 2268 pos: matchRslt.index, 2269 c: "+", 2270 remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ], 2271 caret: pos 2272 } : { 2273 pos: matchRslt.index, 2274 c: "+", 2275 remove: matchRslt.index, 2276 caret: pos 2277 } : maskset.buffer[matchRslt.index] === ("-" === chrs ? opts.negationSymbol.front : "+") ? "-" === chrs && "" !== opts.negationSymbol.back ? { 2278 remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ], 2279 caret: pos - 1 2280 } : { 2281 remove: matchRslt.index, 2282 caret: pos - 1 2283 } : "-" === chrs ? "" !== opts.negationSymbol.back ? { 2284 pos: matchRslt.index, 2285 c: opts.negationSymbol.front, 2286 caret: pos + 1, 2287 insert: { 2288 pos: maskset.buffer.length - opts.suffix.length, 2289 c: opts.negationSymbol.back 2290 } 2291 } : { 2292 pos: matchRslt.index, 2293 c: opts.negationSymbol.front, 2294 caret: pos + 1 2295 } : { 2296 pos: matchRslt.index, 2297 c: chrs, 2298 caret: pos + 1 2299 }; 2300 } 2301 return !1; 2302 }, 2303 radixHandler: function(chrs, maskset, pos, strict, opts) { 2304 if (!strict && opts.numericInput !== !0 && chrs === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) { 2305 var radixPos = $.inArray(opts.radixPoint, maskset.buffer), integerValue = maskset.buffer.join("").match(opts.regex.integerPart(opts)); 2306 if (-1 !== radixPos && maskset.validPositions[radixPos]) return maskset.validPositions[radixPos - 1] ? { 2307 caret: radixPos + 1 2308 } : { 2309 pos: integerValue.index, 2310 c: integerValue[0], 2311 caret: radixPos + 1 2312 }; 2313 if (!integerValue || "0" === integerValue[0] && integerValue.index + 1 !== pos) return maskset.buffer[integerValue ? integerValue.index : pos] = "0", 2314 { 2315 pos: (integerValue ? integerValue.index : pos) + 1, 2316 c: opts.radixPoint 2317 }; 2318 } 2319 return !1; 2320 }, 2321 leadingZeroHandler: function(chrs, maskset, pos, strict, opts, isSelection) { 2322 if (!strict) { 2323 var buffer = maskset.buffer.slice(""); 2324 if (buffer.splice(0, opts.prefix.length), buffer.splice(buffer.length - opts.suffix.length, opts.suffix.length), 2325 opts.numericInput === !0) { 2326 var buffer = buffer.reverse(), bufferChar = buffer[0]; 2327 if ("0" === bufferChar && void 0 === maskset.validPositions[pos - 1]) return { 2328 pos: pos, 2329 remove: buffer.length - 1 2330 }; 2331 } else { 2332 pos -= opts.prefix.length; 2333 var radixPosition = $.inArray(opts.radixPoint, buffer), matchRslt = buffer.slice(0, -1 !== radixPosition ? radixPosition : void 0).join("").match(opts.regex.integerNPart(opts)); 2334 if (matchRslt && (-1 === radixPosition || radixPosition >= pos)) { 2335 var decimalPart = -1 === radixPosition ? 0 : parseInt(buffer.slice(radixPosition + 1).join("")); 2336 if (0 === matchRslt[0].indexOf("" !== opts.placeholder ? opts.placeholder.charAt(0) : "0") && (matchRslt.index + 1 === pos || isSelection !== !0 && 0 === decimalPart)) return maskset.buffer.splice(matchRslt.index + opts.prefix.length, 1), 2337 { 2338 pos: matchRslt.index + opts.prefix.length, 2339 remove: matchRslt.index + opts.prefix.length 2340 }; 2341 if ("0" === chrs && pos <= matchRslt.index && matchRslt[0] !== opts.groupSeparator) return !1; 2342 } 2343 } 2344 } 2345 return !0; 2346 }, 2347 definitions: { 2348 "~": { 2349 validator: function(chrs, maskset, pos, strict, opts, isSelection) { 2350 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2351 if (!isValid && (isValid = opts.radixHandler(chrs, maskset, pos, strict, opts), 2352 !isValid && (isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs), 2353 isValid === !0 && (isValid = opts.leadingZeroHandler(chrs, maskset, pos, strict, opts, isSelection), 2354 isValid === !0)))) { 2355 var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
2356 isValid = -1 !== radixPosition && (opts.digitsOptional === !1 || maskset.validPositions[pos]) && opts.numericInput !== !0 && pos > radixPosition && !strict ? { 2357 pos: pos, 2358 remove: pos 2359 } : { 2360 pos: pos 2361 }; 2362 } 2363 return isValid; 2364 }, 2365 cardinality: 1 2366 }, 2367 "+": { 2368 validator: function(chrs, maskset, pos, strict, opts) { 2369 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2370 return !isValid && (strict && opts.allowMinus && chrs === opts.negationSymbol.front || opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) && (isValid = strict || "-" !== chrs ? !0 : "" !== opts.negationSymbol.back ? { 2371 pos: pos, 2372 c: "-" === chrs ? opts.negationSymbol.front : "+", 2373 caret: pos + 1, 2374 insert: { 2375 pos: maskset.buffer.length, 2376 c: opts.negationSymbol.back 2377 } 2378 } : { 2379 pos: pos, 2380 c: "-" === chrs ? opts.negationSymbol.front : "+", 2381 caret: pos + 1 2382 }), isValid; 2383 }, 2384 cardinality: 1, 2385 placeholder: "" 2386 }, 2387 "-": { 2388 validator: function(chrs, maskset, pos, strict, opts) { 2389 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2390 return !isValid && strict && opts.allowMinus && chrs === opts.negationSymbol.back && (isValid = !0), 2391 isValid; 2392 }, 2393 cardinality: 1, 2394 placeholder: "" 2395 }, 2396 ":": { 2397 validator: function(chrs, maskset, pos, strict, opts) { 2398 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2399 if (!isValid) { 2400 var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]"; 2401 isValid = new RegExp(radix).test(chrs), isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = { 2402 caret: pos + 1 2403 }); 2404 } 2405 return isValid ? { 2406 c: opts.radixPoint 2407 } : isValid; 2408 }, 2409 cardinality: 1, 2410 placeholder: function(opts) { 2411 return opts.radixPoint; 2412 } 2413 } 2414 }, 2415 onUnMask: function(maskedValue, unmaskedValue, opts) { 2416 if ("" === unmaskedValue && opts.nullable === !0) return unmaskedValue; 2417 var processValue = maskedValue.replace(opts.prefix, ""); 2418 return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2419 opts.unmaskAsNumber ? ("" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), ".")), 2420 Number(processValue)) : processValue; 2421 }, 2422 isComplete: function(buffer, opts) { 2423 var maskedValue = buffer.join(""), bufClone = buffer.slice(); 2424 if (opts.postFormat(bufClone, 0, opts), bufClone.join("") !== maskedValue) return !1; 2425 var processValue = maskedValue.replace(opts.prefix, ""); 2426 return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2427 "," === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".")), 2428 isFinite(processValue); 2429 }, 2430 onBeforeMask: function(initialValue, opts) { 2431 if ("" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else { 2432 var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g); 2433 dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 2434 initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 2435 initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); 2436 } 2437 if (0 === opts.digits && (-1 !== initialValue.indexOf(".") ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : -1 !== initialValue.indexOf(",") && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 2438 "" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) { 2439 var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0]; 2440 if (parseInt(opts.digits) < decPart.toString().length) { 2441 var digitsFactor = Math.pow(10, parseInt(opts.digits)); 2442 initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."), 2443 initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor, 2444 initialValue = initialValue.toString().replace(".", opts.radixPoint); 2445 } 2446 } 2447 return initialValue.toString(); 2448 }, 2449 canClearPosition: function(maskset, position, lvp, strict, opts) { 2450 var positionInput = maskset.validPositions[position].input, canClear = positionInput !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && opts.decimalProtect === !1 || isFinite(positionInput) || position === lvp || positionInput === opts.groupSeparator || positionInput === opts.negationSymbol.front || positionInput === opts.negationSymbol.back; 2451 return canClear; 2452 }, 2453 onKeyDown: function(e, buffer, caretPos, opts) { 2454 var $input = $(this); 2455 if (e.ctrlKey) switch (e.keyCode) { 2456 case Inputmask.keyCode.UP: 2457 $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger("setvalue"); 2458 break; 2459 2460 case Inputmask.keyCode.DOWN: 2461 $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger("setvalue"); 2462 } 2463 } 2464 }, 2465 currency: { 2466 prefix: "$ ", 2467 groupSeparator: ",", 2468 alias: "numeric", 2469 placeholder: "0", 2470 autoGroup: !0, 2471 digits: 2, 2472 digitsOptional: !1, 2473 clearMaskOnLostFocus: !1 2474 },
2475 decimal: { 2476 alias: "numeric" 2477 }, 2478 integer: { 2479 alias: "numeric", 2480 digits: 0, 2481 radixPoint: "" 2482 }, 2483 percentage: { 2484 alias: "numeric", 2485 digits: 2, 2486 radixPoint: ".", 2487 placeholder: "0", 2488 autoGroup: !1, 2489 min: 0, 2490 max: 100, 2491 suffix: " %", 2492 allowPlus: !1, 2493 allowMinus: !1 2494 } 2495 }), Inputmask; 2496}(jQuery, Inputmask), function($, Inputmask) { 2497 return Inputmask.extendAliases({ 2498 abstractphone: { 2499 countrycode: "", 2500 phoneCodes: [], 2501 mask: function(opts) { 2502 return opts.definitions = { 2503 "#": opts.definitions[9] 2504 }, opts.phoneCodes.sort(function(a, b) { 2505 return (a.mask || a) < (b.mask || b) ? -1 : 1; 2506 }); 2507 }, 2508 keepStatic: !1, 2509 onBeforeMask: function(value, opts) { 2510 var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, ""); 2511 return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = "+" + opts.countrycode + processedValue), 2512 processedValue; 2513 } 2514 } 2515 }), Inputmask; 2516}(jQuery, Inputmask), function($, Inputmask) { 2517 return Inputmask.extendAliases({ 2518 Regex: { 2519 mask: "r", 2520 greedy: !1, 2521 repeat: "*", 2522 regex: null, 2523 regexTokens: null, 2524 tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, 2525 quantifierFilter: /[0-9]+[^,]/, 2526 isComplete: function(buffer, opts) { 2527 return new RegExp(opts.regex).test(buffer.join("")); 2528 }, 2529 definitions: { 2530 r: { 2531 validator: function(chrs, maskset, pos, strict, opts) { 2532 function RegexToken(isGroup, isQuantifier) { 2533 this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, 2534 this.quantifier = { 2535 min: 1, 2536 max: 1 2537 }, this.repeaterPart = void 0; 2538 } 2539 function analyseRegex() { 2540 var match, m, currentToken = new RegexToken(), opengroups = []; 2541 for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch (m = match[0], 2542 m.charAt(0)) { 2543 case "(": 2544 opengroups.push(new RegexToken(!0)); 2545 break; 2546 2547 case ")": 2548 groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken); 2549 break; 2550 2551 case "{": 2552 case "+": 2553 case "*": 2554 var quantifierToken = new RegexToken(!1, !0); 2555 m = m.replace(/[{}]/g, ""); 2556 var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); 2557 if (quantifierToken.quantifier = { 2558 min: mq0, 2559 max: mq1 2560 }, opengroups.length > 0) { 2561 var matches = opengroups[opengroups.length - 1].matches; 2562 match = matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), groupToken.matches.push(match), 2563 match = groupToken), matches.push(match), matches.push(quantifierToken); 2564 } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), 2565 groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 2566 currentToken.matches.push(quantifierToken); 2567 break; 2568 2569 default: 2570 opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m); 2571 } 2572 currentToken.matches.length > 0 && opts.regexTokens.push(currentToken); 2573 } 2574 function validateRegexToken(token, fromGroup) { 2575 var isvalid = !1; 2576 fromGroup && (regexPart += "(", openGroupCount++); 2577 for (var mndx = 0; mndx < token.matches.length; mndx++) { 2578 var matchToken = token.matches[mndx]; 2579 if (matchToken.isGroup === !0) isvalid = validateRegexToken(matchToken, !0); else if (matchToken.isQuantifier === !0) { 2580 var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart; 2581 if (isNaN(matchToken.quantifier.max)) { 2582 for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ; 2583 isvalid = isvalid || validateRegexToken(matchGroup, !0), isvalid && (matchToken.repeaterPart = regexPart), 2584 regexPart = regexPartBak + matchToken.quantifier.max; 2585 } else { 2586 for (var i = 0, qm = matchToken.quantifier.max - 1; qm > i && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ; 2587 regexPart = regexPartBak + "{" + matchToken.quantifier.min + "," + matchToken.quantifier.max + "}"; 2588 } 2589 } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else { 2590 var testExp; 2591 if ("[" == matchToken.charAt(0)) { 2592 testExp = regexPart, testExp += matchToken; 2593 for (var j = 0; openGroupCount > j; j++) testExp += ")"; 2594 var exp = new RegExp("^(" + testExp + ")$"); 2595 isvalid = exp.test(bufferStr); 2596 } else for (var l = 0, tl = matchToken.length; tl > l; l++) if ("\\" !== matchToken.charAt(l)) { 2597 testExp = regexPart, testExp += matchToken.substr(0, l + 1), testExp = testExp.replace(/\|$/, ""); 2598 for (var j = 0; openGroupCount > j; j++) testExp += ")"; 2599 var exp = new RegExp("^(" + testExp + ")$"); 2600 if (isvalid = exp.test(bufferStr)) break; 2601 } 2602 regexPart += matchToken; 2603 } 2604 if (isvalid) break; 2605 } 2606 return fromGroup && (regexPart += ")", openGroupCount--), isvalid; 2607 } 2608 var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = "", isValid = !1, openGroupCount = 0; 2609 null === opts.regexTokens && analyseRegex(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join(""); 2610 for (var i = 0; i < opts.regexTokens.length; i++) { 2611 var regexToken = opts.regexTokens[i]; 2612 if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break; 2613 } 2614 return isValid; 2615 }, 2616 cardinality: 1 2617 } 2618 } 2619 } 2620 }), Inputmask; 2621}(jQuery, Inputmask);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.