{"version":3,"sources":["jquery.mousewheel.js","autoNumeric.js","jquery.inputmask-2.5.9.js"],"names":["factory","define","amd","exports","module","jQuery","$","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","document","documentMode","slice","Array","prototype","event","fixHooks","i","length","mouseHooks","special","mousewheel","version","setup","this","addEventListener","handler","onmousewheel","data","getLineHeight","getPageHeight","teardown","removeEventListener","elem","parseInt","fn","css","height","settings","adjustOldDeltas","absDelta","pageHeight","orgEvent","window","args","call","arguments","delta","deltaX","deltaY","fix","type","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","lineHeight","Math","max","abs","shouldAdjustOldDeltas","deltaFactor","unshift","clearTimeout","setTimeout","nullLowestDelta","dispatch","handle","apply","extend","bind","trigger","unmousewheel","unbind","require","setElementSelection","that","start","end","r","undefined","selectionStart","focus","createTextRange","collapse","moveEnd","moveStart","select","selectionEnd","convertKeyToNumber","key","autoCode","$this","each","k","val","autoNumeric","tagList","vmax","vMax","toString","split","vmin","vMin","mDec","mRound","allowLeading","aNeg","replace","mInt","vminLength","vmaxLength","altDec","aDec","aSep","aNegReg","aNegRegAutoStrip","skipFirstAutoStrip","RegExp","skipLastAutoStrip","allowed","aNum","allowedAutoStrip","numRegAutoStrip","autoStrip","s","strip_zero","aSign","indexOf","parts","m","match","join","lZero","nSign","charAt","strip_reg","negativeBracket","brackets","pSign","nBracket","hasFocus","removeBrackets","checkValue","value","checkSmall","substring","fixNumber","presentNumber","checkEmpty","iv","signOnEmpty","wEmpty","autoGroup","testNeg","empty","digitalGroup","dGroup","ivSplit","test","has_aNeg","autoRound","round","truncateZeros","ivRounded","regex","rDec","aPad","dPos","lastIndexOf","vdPos","cDec","zeros","rLength","tRound","ivArray","odd","onePass","truncateDecimal","paste","autoCheck","AutoNumericHolder","$that","formatted","settingsClone","autoGet","obj","getHolder","update","holder","get","init","e","position","ctrlKey","cmdKey","metaKey","shiftKey","selection","createRange","text","kdCode","keyCode","which","processed","setSelection","setReal","min","setPosition","pos","getBeforeAfter","getBeforeAfterStriped","normalizeParts","left","right","new_value","setValueParts","signPosition","aSignLen","valueLen","expandSelectionOnSign","sign_position","checkPaste","oldParts","valuePartsBeforePaste","substr","skipAllways","processAllways","processKeypress","cCode","String","fromCharCode","formatQuick","leftLength","subParts","left_ar","leftReg","newLeft","methods","options","tagData","$input","is","defaults","runOnce","error","prop","toLowerCase","inArray","aForm","setValue","anDefault","on","readOnly","preventDefault","skip","checkVal","$settings","inVal","onEmpty","origValue","groupedValue","change","destroy","off","removeData","strip","set","valueIn","testValue","attr","isNumeric","setEvent","getValue","eq","getString","isAutoNumeric","formParts","serialize","formIndex","index","allFormElements","aiIndex","scIndex","rsubmitterTypes","rsubmittable","rcheckableType","rnonAutoNumericTypes","count","field","name","localName","disabled","checked","push","miniParts","scElement","getArray","formFields","serializeArray","getSettings","method","sNumber","isInputEventSupported","eventName","el","createElement","isSupported","setAttribute","resolveAlias","aliasStr","opts","aliasDefinition","aliases","alias","generateMaskSets","ms","genmasks","getMaskTemplate","mask","numericInput","reverse","escaped","outCount","greedy","repeat","placeholder","singleMask","map","element","outElem","escapeChar","optionalmarker","maskdef","definitions","cardinality","repeatedMask","concat","getTestingChain","isOptional","newBlockMarker","prevalidators","prevalidatorsL","prevalidator","validator","optionality","offset","casing","def","markOptional","maskPart","splitFirstOptionalStartPart","mpl","maskParts","generateMask","maskPrefix","metadata","newMask","maskTemplate","optionalStartMarkers","optionalEndMarkers","splitFirstOptionalEndPart","masks","_buffer","buffer","tests","lastValidPosition","isFunction","isArray","ndx","msk","sort","a","b","maskScope","masksets","activeMasksetIndex","actionObj","$el","skipDatepickerCheck","isRTL","valueOnFocus","getActiveBuffer","skipKeyPressEvent","skipInputEvent","ignorable","getActiveMaskSet","getActiveTests","getActiveBufferTemplate","isValid","c","strict","_isValid","activeMaskset","testPos","determineTestPosition","loopend","chrs","getBufferElement","skipOptionalPartCharacter","refresh","result","maskForwards","results","lowestPos","lowestIndex","hasValidActual","currentActiveMasksetIndex","actualBuffer","actualLVP","seekPrevious","rsltValid","maskPos","lvp","setBufferElement","newValidPosition","isMask","maxForward","seekNext","fw","getMaskLength","rslt","determineActiveMasksetIndex","currentMasksetIndex","highestValid","next","clearBuffer","currentBuffer","calculatedLength","maskL","autoPrepare","prepareBuffer","toUpperCase","j","writeBuffer","input","caretPos","_valueSet","caret","stripNomasks","setReTargetPlaceHolder","getPlaceHolder","writeOut","nptvl","intelliCheck","inputValue","truncateInput","_valueGet","charCode","p","keypressEvent","charCodeAt","escapeRegex","str","inputmask","clearOptionalTail","tmpBuffer","pop","TranslatePosition","begin","range","npt","jquery","setSelectionRange","duplicate","scrollLeft","scrollWidth","insertMode","isComplete","complete","highestValidPosition","aml","msComplete","patchValueProperty","valueProperty","valueGet","valueSet","Object","getOwnPropertyDescriptor","defineProperty","$self","inputData","autoUnmask","triggerHandler","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__","valHooks","inputmaskpatch","$elem","shiftL","maskJumps","trbuffer","bl","shiftR","t","lengthBefore","HandleRemove","BACKSPACE","DELETE","pend","isSelection","posBegin","radixPoint","ml","isNaN","newpos","firstMaskPos","keydownEvent","iphone","showTooltip","END","PAGE_DOWN","HOME","PAGE_UP","ESCAPE","click","INSERT","RIGHT","LEFT","currentCaretPos","onKeyDown","ignorables","checkval","initialIndex","minimalForwardPosition","self","altKey","pcaret","isSlctn","lmnt","radixPosition","np","lastUnmaskedPosition","bfrClone","nlvp","nextPos","onKeyValidation","newCaretPosition","returnValue","keyupEvent","onKeyUp","TAB","showMaskOnFocus","hasClass","pasteEvent","pasteValue","onBeforePaste","mobileInputEvent","currentValue","maxLength","dir","rightAlignNumerics","removeAttr","removeClass","closest","showMaskOnHover","nptValue","clearMaskOnLostFocus","clearIncomplete","addClass","clickPosition","selectedCaret","lastPosition","skipRadixDance","PasteEventType","oncomplete","onincomplete","oncleared","android","androidfirefox","androidchrome","kindle","msie1x","initialValue","onBeforeMask","activeElement","events","_data","eventType","eventHandlers","eventHandler","namespace","umValue","unmaskedValue","onUnMask","valueBuffer","ua","ScriptEngineMajorVersion","Function","navigator","userAgent","quantifiermarker","groupmarker","noop","9","definitionSymbol","*","ALT","CAPS_LOCK","COMMA","COMMAND","COMMAND_LEFT","COMMAND_RIGHT","CONTROL","DOWN","ENTER","MENU","NUMPAD_ADD","NUMPAD_DECIMAL","NUMPAD_DIVIDE","NUMPAD_ENTER","NUMPAD_MULTIPLY","NUMPAD_SUBTRACT","PERIOD","SHIFT","SPACE","UP","WINDOWS","format","action","attrOptions","dataoptions","parseJSON","ex"],"mappings":"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","file":"../client-angular-strap.min.js","sourcesContent":["/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.9\n *\n * Requires: jQuery 1.2.2+\n */\n\n(function (factory) {\n if ( typeof define === 'function' && define.amd ) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.9',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n },\n\n getLineHeight: function(elem) {\n return parseInt($(elem)['offsetParent' in $.fn ? 'offsetParent' : 'parent']().css('fontSize'), 10);\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));\n","/**\n * autoNumeric.js\n * @author: Bob Knothe\n * @author: Sokolov Yura\n * @version: 1.9.43 - 2015-12-19 GMT 4:00 PM / 16:00\n *\n * Created by Robert J. Knothe on 2010-10-25. Please report any bugs to https://github.com/BobKnothe/autoNumeric\n * Contributor by Sokolov Yura on 2010-11-07\n *\n * Copyright (c) 2011 Robert J. Knothe http://www.decorplanit.com/plugin/\n *\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n(function (factory) {\n if (typeof define === \"function\" && define.amd) {\n /** AMD. Register as an anonymous module. */\n define([\"jquery\"], factory);\n } else if (typeof module === \"object\" && module.exports) {\n /** Node/CommonJS */\n module.exports = factory(require(\"jquery\"));\n } else {\n /** Browser globals */\n factory(window.jQuery);\n }\n}(function ($) {\n \"use strict\";\n /*jslint browser: true*/\n /*global jQuery: false*/\n /*Cross browser routine for getting selected range/cursor position\n */\n\n /**\n * Cross browser routine for getting selected range/cursor position\n */\n\n function getElementSelection(that) {\n var position = {};\n if (that.selectionStart === undefined) {\n that.focus();\n var select = document.selection.createRange();\n position.length = select.text.length;\n select.moveStart('character', -that.value.length);\n position.end = select.text.length;\n position.start = position.end - position.length;\n } else {\n position.start = that.selectionStart;\n position.end = that.selectionEnd;\n position.length = position.end - position.start;\n }\n return position;\n }\n\n /**\n * Cross browser routine for setting selected range/cursor position\n */\n\n function setElementSelection(that, start, end) {\n if (that.selectionStart === undefined) {\n that.focus();\n var r = that.createTextRange();\n r.collapse(true);\n r.moveEnd('character', end);\n r.moveStart('character', start);\n r.select();\n } else {\n that.selectionStart = start;\n that.selectionEnd = end;\n }\n }\n\n /**\n * run callbacks in parameters if any\n * any parameter could be a callback:\n * - a function, which invoked with jQuery element, parameters and this parameter name and returns parameter value\n * - a name of function, attached to $(selector).autoNumeric.functionName(){} - which was called previously\n */\n\n function runCallbacks($this, settings) {\n /**\n * loops through the settings object (option array) to find the following\n * k = option name example k=aNum\n * val = option value example val=0123456789\n */\n $.each(settings, function (k, val) {\n if (typeof val === 'function') {\n settings[k] = val($this, settings, k);\n } else if (typeof $this.autoNumeric[val] === 'function') {\n /**\n * calls the attached function from the html5 data example: data-a-sign=\"functionName\"\n */\n settings[k] = $this.autoNumeric[val]($this, settings, k);\n }\n });\n }\n\n /**\n * Converts the vMin, vMax & mDec string to numeric value\n */\n\n function convertKeyToNumber(settings, key) {\n if (typeof(settings[key]) === 'string') {\n settings[key] *= 1;\n }\n }\n\n /**\n * Preparing user defined options for further usage\n * merge them with defaults appropriately\n */\n\n function autoCode($this, settings) {\n runCallbacks($this, settings);\n settings.tagList = ['b', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ins', 'kdb', 'label', 'li', 'output', 'p', 'q', 's', 'sample', 'span', 'strong', 'td', 'th', 'u', 'var'];\n var vmax = settings.vMax.toString().split('.'),\n vmin = (!settings.vMin && settings.vMin !== 0) ? [] : settings.vMin.toString().split('.');\n convertKeyToNumber(settings, 'vMax');\n convertKeyToNumber(settings, 'vMin');\n convertKeyToNumber(settings, 'mDec'); /** set mDec if not defined by user */\n settings.mDec = (settings.mRound === 'CHF') ? '2' : settings.mDec;\n settings.allowLeading = true;\n settings.aNeg = settings.vMin < 0 ? '-' : '';\n vmax[0] = vmax[0].replace('-', '');\n vmin[0] = vmin[0].replace('-', '');\n settings.mInt = Math.max(vmax[0].length, vmin[0].length, 1);\n if (settings.mDec === null) {\n var vmaxLength = 0,\n vminLength = 0;\n if (vmax[1]) {\n vmaxLength = vmax[1].length;\n }\n if (vmin[1]) {\n vminLength = vmin[1].length;\n }\n settings.mDec = Math.max(vmaxLength, vminLength);\n } /** set alternative decimal separator key */\n if (settings.altDec === null && settings.mDec > 0) {\n if (settings.aDec === '.' && settings.aSep !== ',') {\n settings.altDec = ',';\n } else if (settings.aDec === ',' && settings.aSep !== '.') {\n settings.altDec = '.';\n }\n }\n /** cache regexps for autoStrip */\n var aNegReg = settings.aNeg ? '([-\\\\' + settings.aNeg + ']?)' : '(-?)';\n settings.aNegRegAutoStrip = aNegReg;\n settings.skipFirstAutoStrip = new RegExp(aNegReg + '[^-' + (settings.aNeg ? '\\\\' + settings.aNeg : '') + '\\\\' + settings.aDec + '\\\\d]' + '.*?(\\\\d|\\\\' + settings.aDec + '\\\\d)');\n settings.skipLastAutoStrip = new RegExp('(\\\\d\\\\' + settings.aDec + '?)[^\\\\' + settings.aDec + '\\\\d]\\\\D*$');\n var allowed = '-' + settings.aNum + '\\\\' + settings.aDec;\n settings.allowedAutoStrip = new RegExp('[^' + allowed + ']', 'gi');\n settings.numRegAutoStrip = new RegExp(aNegReg + '(?:\\\\' + settings.aDec + '?(\\\\d+\\\\' + settings.aDec + '\\\\d+)|(\\\\d*(?:\\\\' + settings.aDec + '\\\\d*)?))');\n return settings;\n }\n\n /**\n * strips all unwanted characters and leave only a number alert\n */\n\n function autoStrip(s, settings, strip_zero) {\n if (settings.aSign) { /** remove currency sign */\n while (s.indexOf(settings.aSign) > -1) {\n s = s.replace(settings.aSign, '');\n }\n }\n s = s.replace(settings.skipFirstAutoStrip, '$1$2'); /** first replace anything before digits */\n s = s.replace(settings.skipLastAutoStrip, '$1'); /** then replace anything after digits */\n s = s.replace(settings.allowedAutoStrip, ''); /** then remove any uninterested characters */\n if (settings.altDec) {\n s = s.replace(settings.altDec, settings.aDec);\n } /** get only number string */\n var m = s.match(settings.numRegAutoStrip);\n s = m ? [m[1], m[2], m[3]].join('') : '';\n if ((settings.lZero === 'allow' || settings.lZero === 'keep') && strip_zero !== 'strip') {\n var parts = [],\n nSign = '';\n parts = s.split(settings.aDec);\n if (parts[0].indexOf('-') !== -1) {\n nSign = '-';\n parts[0] = parts[0].replace('-', '');\n }\n if (parts[0].length > settings.mInt && parts[0].charAt(0) === '0') { /** strip leading zero if need */\n parts[0] = parts[0].slice(1);\n }\n s = nSign + parts.join(settings.aDec);\n }\n if ((strip_zero && settings.lZero === 'deny') || (strip_zero && settings.lZero === 'allow' && settings.allowLeading === false)) {\n var strip_reg = '^' + settings.aNegRegAutoStrip + '0*(\\\\d' + (strip_zero === 'leading' ? ')' : '|$)');\n strip_reg = new RegExp(strip_reg);\n s = s.replace(strip_reg, '$1$2');\n }\n return s;\n }\n\n /**\n * places or removes brackets on negative values\n * works only when with pSign: 'p'\n */\n\n function negativeBracket(s, settings) {\n if (settings.pSign === 'p') {\n var brackets = settings.nBracket.split(',');\n if (!settings.hasFocus && !settings.removeBrackets) {\n s = s.replace(settings.aNeg, '');\n s = brackets[0] + s + brackets[1];\n } else if ((settings.hasFocus && s.charAt(0) === brackets[0]) || (settings.removeBrackets && s.charAt(0) === brackets[0])) {\n s = s.replace(brackets[0], settings.aNeg);\n s = s.replace(brackets[1], '');\n }\n }\n return s;\n }\n\n /**\n * function to handle numbers less than 0 that are stored in Exponential notation ex: .0000001 stored as 1e-7\n */\n\n function checkValue(value, settings) {\n if (value) {\n var checkSmall = +value;\n if (checkSmall < 0.000001 && checkSmall > -1) {\n value = +value;\n if (value < 0.000001 && value > 0) {\n value = (value + 10).toString();\n value = value.substring(1);\n }\n if (value < 0 && value > -1) {\n value = (value - 10).toString();\n value = '-' + value.substring(2);\n }\n value = value.toString();\n } else {\n var parts = value.split('.');\n if (parts[1] !== undefined) {\n if (+parts[1] === 0) {\n value = parts[0];\n } else {\n parts[1] = parts[1].replace(/0*$/, '');\n value = parts.join('.');\n }\n }\n }\n }\n return (settings.lZero === 'keep') ? value : value.replace(/^0*(\\d)/, '$1');\n }\n\n /**\n * prepare number string to be converted to real number\n */\n\n function fixNumber(s, aDec, aNeg) {\n if (aDec && aDec !== '.') {\n s = s.replace(aDec, '.');\n }\n if (aNeg && aNeg !== '-') {\n s = s.replace(aNeg, '-');\n }\n if (!s.match(/\\d/)) {\n s += '0';\n }\n return s;\n }\n\n /**\n * prepare real number to be converted to our format\n */\n\n function presentNumber(s, aDec, aNeg) {\n if (aNeg && aNeg !== '-') {\n s = s.replace('-', aNeg);\n }\n if (aDec && aDec !== '.') {\n s = s.replace('.', aDec);\n }\n return s;\n }\n\n /**\n * private function to check for empty value\n */\n\n function checkEmpty(iv, settings, signOnEmpty) {\n if (iv === '' || iv === settings.aNeg) {\n if (settings.wEmpty === 'zero') {\n return iv + '0';\n }\n if (settings.wEmpty === 'sign' || signOnEmpty) {\n return iv + settings.aSign;\n }\n return iv;\n }\n return null;\n }\n\n /**\n * private function that formats our number\n */\n\n function autoGroup(iv, settings) {\n iv = autoStrip(iv, settings);\n var testNeg = iv.replace(',', '.'),\n empty = checkEmpty(iv, settings, true);\n if (empty !== null) {\n return empty;\n }\n var digitalGroup = '';\n if (settings.dGroup === 2) {\n digitalGroup = /(\\d)((\\d)(\\d{2}?)+)$/;\n } else if (settings.dGroup === 4) {\n digitalGroup = /(\\d)((\\d{4}?)+)$/;\n } else {\n digitalGroup = /(\\d)((\\d{3}?)+)$/;\n } /** splits the string at the decimal string */\n var ivSplit = iv.split(settings.aDec);\n if (settings.altDec && ivSplit.length === 1) {\n ivSplit = iv.split(settings.altDec);\n } /** assigns the whole number to the a variable (s) */\n var s = ivSplit[0];\n if (settings.aSep) {\n while (digitalGroup.test(s)) { /** re-inserts the thousand separator via a regular expression */\n s = s.replace(digitalGroup, '$1' + settings.aSep + '$2');\n }\n }\n if (settings.mDec !== 0 && ivSplit.length > 1) {\n if (ivSplit[1].length > settings.mDec) {\n ivSplit[1] = ivSplit[1].substring(0, settings.mDec);\n } /** joins the whole number with the decimal value */\n iv = s + settings.aDec + ivSplit[1];\n } else { /** if whole numbers only */\n iv = s;\n }\n if (settings.aSign) {\n var has_aNeg = iv.indexOf(settings.aNeg) !== -1;\n iv = iv.replace(settings.aNeg, '');\n iv = settings.pSign === 'p' ? settings.aSign + iv : iv + settings.aSign;\n if (has_aNeg) {\n iv = settings.aNeg + iv;\n }\n }\n if (testNeg < 0 && settings.nBracket !== null) { /** removes the negative sign and places brackets */\n iv = negativeBracket(iv, settings);\n }\n return iv;\n }\n\n /**\n * round number after setting by pasting or $().autoNumericSet()\n * private function for round the number\n * please note this handled as text - JavaScript math function can return inaccurate values\n * also this offers multiple rounding methods that are not easily accomplished in JavaScript\n */\n\n function autoRound(iv, settings) { /** value to string */\n iv = (iv === '') ? '0' : iv.toString();\n convertKeyToNumber(settings, 'mDec'); /** set mDec to number needed when mDec set by 'update method */\n if (settings.mRound === 'CHF') {\n iv = (Math.round(iv * 20) / 20).toString();\n }\n var ivRounded = '',\n i = 0,\n nSign = '',\n rDec = (typeof(settings.aPad) === 'boolean' || settings.aPad === null) ? (settings.aPad ? settings.mDec : 0) : +settings.aPad;\n var truncateZeros = function (ivRounded) { /** truncate not needed zeros */\n var regex = (rDec === 0) ? (/(\\.(?:\\d*[1-9])?)0*$/) : rDec === 1 ? (/(\\.\\d(?:\\d*[1-9])?)0*$/) : new RegExp('(\\\\.\\\\d{' + rDec + '}(?:\\\\d*[1-9])?)0*$');\n ivRounded = ivRounded.replace(regex, '$1'); /** If there are no decimal places, we don't need a decimal point at the end */\n if (rDec === 0) {\n ivRounded = ivRounded.replace(/\\.$/, '');\n }\n return ivRounded;\n };\n if (iv.charAt(0) === '-') { /** Checks if the iv (input Value)is a negative value */\n nSign = '-';\n iv = iv.replace('-', ''); /** removes the negative sign will be added back later if required */\n }\n if (!iv.match(/^\\d/)) { /** append a zero if first character is not a digit (then it is likely to be a dot)*/\n iv = '0' + iv;\n }\n if (nSign === '-' && +iv === 0) { /** determines if the value is zero - if zero no negative sign */\n nSign = '';\n }\n if ((+iv > 0 && settings.lZero !== 'keep') || (iv.length > 0 && settings.lZero === 'allow')) { /** trims leading zero's if needed */\n iv = iv.replace(/^0*(\\d)/, '$1');\n }\n var dPos = iv.lastIndexOf('.'),\n /** virtual decimal position */\n vdPos = (dPos === -1) ? iv.length - 1 : dPos,\n /** checks decimal places to determine if rounding is required */\n cDec = (iv.length - 1) - vdPos; /** check if no rounding is required */\n if (cDec <= settings.mDec) {\n ivRounded = iv; /** check if we need to pad with zeros */\n if (cDec < rDec) {\n if (dPos === -1) {\n ivRounded += settings.aDec;\n }\n var zeros = '000000';\n while (cDec < rDec) {\n zeros = zeros.substring(0, rDec - cDec);\n ivRounded += zeros;\n cDec += zeros.length;\n }\n } else if (cDec > rDec) {\n ivRounded = truncateZeros(ivRounded);\n } else if (cDec === 0 && rDec === 0) {\n ivRounded = ivRounded.replace(/\\.$/, '');\n }\n if (settings.mRound !== 'CHF') {\n return (+ivRounded === 0) ? ivRounded : nSign + ivRounded;\n }\n if (settings.mRound === 'CHF') {\n dPos = ivRounded.lastIndexOf('.');\n iv = ivRounded;\n }\n\n } /** rounded length of the string after rounding */\n var rLength = dPos + settings.mDec,\n tRound = +iv.charAt(rLength + 1),\n ivArray = iv.substring(0, rLength + 1).split(''),\n odd = (iv.charAt(rLength) === '.') ? (iv.charAt(rLength - 1) % 2) : (iv.charAt(rLength) % 2),\n onePass = true;\n if (odd !== 1) {\n odd = (odd === 0 && (iv.substring(rLength + 2, iv.length) > 0)) ? 1 : 0;\n }\n /*jslint white: true*/\n if ((tRound > 4 && settings.mRound === 'S') || /** Round half up symmetric */\n (tRound > 4 && settings.mRound === 'A' && nSign === '') || /** Round half up asymmetric positive values */\n (tRound > 5 && settings.mRound === 'A' && nSign === '-') || /** Round half up asymmetric negative values */\n (tRound > 5 && settings.mRound === 's') || /** Round half down symmetric */\n (tRound > 5 && settings.mRound === 'a' && nSign === '') || /** Round half down asymmetric positive values */\n (tRound > 4 && settings.mRound === 'a' && nSign === '-') || /** Round half down asymmetric negative values */\n (tRound > 5 && settings.mRound === 'B') || /** Round half even \"Banker's Rounding\" */\n (tRound === 5 && settings.mRound === 'B' && odd === 1) || /** Round half even \"Banker's Rounding\" */\n (tRound > 0 && settings.mRound === 'C' && nSign === '') || /** Round to ceiling toward positive infinite */\n (tRound > 0 && settings.mRound === 'F' && nSign === '-') || /** Round to floor toward negative infinite */\n (tRound > 0 && settings.mRound === 'U') || /** round up away from zero */\n (settings.mRound === 'CHF')) { /** Round Swiss FRanc */\n /*jslint white: false*/\n for (i = (ivArray.length - 1); i >= 0; i -= 1) { /** Round up the last digit if required, and continue until no more 9's are found */\n if (ivArray[i] !== '.') {\n if (settings.mRound === 'CHF' && ivArray[i] <= 2 && onePass) {\n ivArray[i] = 0;\n onePass = false;\n break;\n }\n if (settings.mRound === 'CHF' && ivArray[i] <= 7 && onePass) {\n ivArray[i] = 5;\n onePass = false;\n break;\n }\n if (settings.mRound === 'CHF' && onePass) {\n ivArray[i] = 10;\n onePass = false;\n } else {\n ivArray[i] = +ivArray[i] + 1;\n }\n if (ivArray[i] < 10) {\n break;\n }\n if (i > 0) {\n ivArray[i] = '0';\n }\n }\n }\n }\n ivArray = ivArray.slice(0, rLength + 1); /** Reconstruct the string, converting any 10's to 0's */\n ivRounded = truncateZeros(ivArray.join('')); /** return rounded value */\n return (+ivRounded === 0) ? ivRounded : nSign + ivRounded;\n }\n\n /**\n * truncate decimal part of a number\n */\n\n function truncateDecimal(s, settings, paste) {\n var aDec = settings.aDec,\n mDec = settings.mDec;\n s = (paste === 'paste') ? autoRound(s, settings) : s;\n if (aDec && mDec) {\n var parts = s.split(aDec);\n /** truncate decimal part to satisfying length\n * cause we would round it anyway */\n if (parts[1] && parts[1].length > mDec) {\n if (mDec > 0) {\n parts[1] = parts[1].substring(0, mDec);\n s = parts.join(aDec);\n } else {\n s = parts[0];\n }\n }\n }\n return s;\n }\n\n /**\n * checking that number satisfy format conditions\n * and lays between settings.vMin and settings.vMax\n * and the string length does not exceed the digits in settings.vMin and settings.vMax\n */\n\n function autoCheck(s, settings) {\n s = autoStrip(s, settings);\n s = truncateDecimal(s, settings);\n s = fixNumber(s, settings.aDec, settings.aNeg);\n var value = +s;\n return value >= settings.vMin && value <= settings.vMax;\n }\n\n /**\n * Holder object for field properties\n */\n\n function AutoNumericHolder(that, settings) {\n this.settings = settings;\n this.that = that;\n this.$that = $(that);\n this.formatted = false;\n this.settingsClone = autoCode(this.$that, this.settings);\n this.value = that.value;\n }\n AutoNumericHolder.prototype = {\n init: function (e) {\n this.value = this.that.value;\n this.settingsClone = autoCode(this.$that, this.settings);\n this.ctrlKey = e.ctrlKey;\n this.cmdKey = e.metaKey;\n this.shiftKey = e.shiftKey;\n this.selection = getElementSelection(this.that); /** keypress event overwrites meaningful value of e.keyCode */\n if (e.type === 'keydown' || e.type === 'keyup') {\n this.kdCode = e.keyCode;\n }\n this.which = e.which;\n this.processed = false;\n this.formatted = false;\n },\n setSelection: function (start, end, setReal) {\n start = Math.max(start, 0);\n end = Math.min(end, this.that.value.length);\n this.selection = {\n start: start,\n end: end,\n length: end - start\n };\n if (setReal === undefined || setReal) {\n setElementSelection(this.that, start, end);\n }\n },\n setPosition: function (pos, setReal) {\n this.setSelection(pos, pos, setReal);\n },\n getBeforeAfter: function () {\n var value = this.value,\n left = value.substring(0, this.selection.start),\n right = value.substring(this.selection.end, value.length);\n return [left, right];\n },\n getBeforeAfterStriped: function () {\n var parts = this.getBeforeAfter();\n parts[0] = autoStrip(parts[0], this.settingsClone);\n parts[1] = autoStrip(parts[1], this.settingsClone);\n return parts;\n },\n\n /**\n * strip parts from excess characters and leading zeroes\n */\n normalizeParts: function (left, right) {\n var settingsClone = this.settingsClone;\n right = autoStrip(right, settingsClone); /** if right is not empty and first character is not aDec, */\n /** we could strip all zeros, otherwise only leading */\n var strip = right.match(/^\\d/) ? true : 'leading';\n left = autoStrip(left, settingsClone, strip); /** prevents multiple leading zeros from being entered */\n if ((left === '' || left === settingsClone.aNeg) && settingsClone.lZero === 'deny') {\n if (right > '') {\n right = right.replace(/^0*(\\d)/, '$1');\n }\n }\n var new_value = left + right; /** insert zero if has leading dot */\n if (settingsClone.aDec) {\n var m = new_value.match(new RegExp('^' + settingsClone.aNegRegAutoStrip + '\\\\' + settingsClone.aDec));\n if (m) {\n left = left.replace(m[1], m[1] + '0');\n new_value = left + right;\n }\n } /** insert zero if number is empty and io.wEmpty == 'zero' */\n if (settingsClone.wEmpty === 'zero' && (new_value === settingsClone.aNeg || new_value === '')) {\n left += '0';\n }\n return [left, right];\n },\n\n /**\n * set part of number to value keeping position of cursor\n */\n setValueParts: function (left, right, paste) {\n var settingsClone = this.settingsClone,\n parts = this.normalizeParts(left, right),\n new_value = parts.join(''),\n position = parts[0].length;\n if (autoCheck(new_value, settingsClone)) {\n new_value = truncateDecimal(new_value, settingsClone, paste);\n if (position > new_value.length) {\n position = new_value.length;\n }\n this.value = new_value;\n this.setPosition(position, false);\n return true;\n }\n return false;\n },\n\n /**\n * helper function for expandSelectionOnSign\n * returns sign position of a formatted value\n */\n signPosition: function () {\n var settingsClone = this.settingsClone,\n aSign = settingsClone.aSign,\n that = this.that;\n if (aSign) {\n var aSignLen = aSign.length;\n if (settingsClone.pSign === 'p') {\n var hasNeg = settingsClone.aNeg && that.value && that.value.charAt(0) === settingsClone.aNeg;\n return hasNeg ? [1, aSignLen + 1] : [0, aSignLen];\n }\n var valueLen = that.value.length;\n return [valueLen - aSignLen, valueLen];\n }\n return [1000, -1];\n },\n\n /**\n * expands selection to cover whole sign\n * prevents partial deletion/copying/overwriting of a sign\n */\n expandSelectionOnSign: function (setReal) {\n var sign_position = this.signPosition(),\n selection = this.selection;\n if (selection.start < sign_position[1] && selection.end > sign_position[0]) { /** if selection catches something except sign and catches only space from sign */\n if ((selection.start < sign_position[0] || selection.end > sign_position[1]) && this.value.substring(Math.max(selection.start, sign_position[0]), Math.min(selection.end, sign_position[1])).match(/^\\s*$/)) { /** then select without empty space */\n if (selection.start < sign_position[0]) {\n this.setSelection(selection.start, sign_position[0], setReal);\n } else {\n this.setSelection(sign_position[1], selection.end, setReal);\n }\n } else { /** else select with whole sign */\n this.setSelection(Math.min(selection.start, sign_position[0]), Math.max(selection.end, sign_position[1]), setReal);\n }\n }\n },\n\n /**\n * try to strip pasted value to digits\n */\n checkPaste: function () {\n if (this.valuePartsBeforePaste !== undefined) {\n var parts = this.getBeforeAfter(),\n\n oldParts = this.valuePartsBeforePaste;\n delete this.valuePartsBeforePaste; /** try to strip pasted value first */\n parts[0] = parts[0].substr(0, oldParts[0].length) + autoStrip(parts[0].substr(oldParts[0].length), this.settingsClone);\n if (!this.setValueParts(parts[0], parts[1], 'paste')) {\n this.value = oldParts.join('');\n this.setPosition(oldParts[0].length, false);\n }\n }\n },\n\n /**\n * process pasting, cursor moving and skipping of not interesting keys\n * if returns true, further processing is not performed\n */\n skipAllways: function (e) {\n var kdCode = this.kdCode,\n which = this.which,\n ctrlKey = this.ctrlKey,\n cmdKey = this.cmdKey,\n shiftKey = this.shiftKey; /** catch the ctrl up on ctrl-v */\n if (((ctrlKey || cmdKey) && e.type === 'keyup' && this.valuePartsBeforePaste !== undefined) || (shiftKey && kdCode === 45)) {\n this.checkPaste();\n return false;\n }\n /** codes are taken from http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx\n * skip Fx keys, windows keys, other special keys\n * Thanks Ney Estrabelli for the FF for Mac meta key support \"keycode 224\"\n */\n if ((kdCode >= 112 && kdCode <= 123) || (kdCode >= 91 && kdCode <= 93) || (kdCode >= 9 && kdCode <= 31) || (kdCode < 8 && (which === 0 || which === kdCode)) || kdCode === 144 || kdCode === 145 || kdCode === 45 || kdCode === 224) {\n return true;\n }\n if ((ctrlKey || cmdKey) && kdCode === 65) { /** if select all (a=65)*/\n return true;\n }\n if ((ctrlKey || cmdKey) && (kdCode === 67 || kdCode === 86 || kdCode === 88)) { /** if copy (c=67) paste (v=86) or cut (x=88) */\n if (e.type === 'keydown') {\n this.expandSelectionOnSign();\n }\n if (kdCode === 86 || kdCode === 45) { /** try to prevent wrong paste */\n if (e.type === 'keydown' || e.type === 'keypress') {\n if (this.valuePartsBeforePaste === undefined) {\n this.valuePartsBeforePaste = this.getBeforeAfter();\n }\n } else {\n this.checkPaste();\n }\n }\n return e.type === 'keydown' || e.type === 'keypress' || kdCode === 67;\n }\n if (ctrlKey || cmdKey) {\n return true;\n }\n if (kdCode === 37 || kdCode === 39) { /** jump over thousand separator */\n var aSep = this.settingsClone.aSep,\n start = this.selection.start,\n value = this.that.value;\n if (e.type === 'keydown' && aSep && !this.shiftKey) {\n if (kdCode === 37 && value.charAt(start - 2) === aSep) {\n this.setPosition(start - 1);\n } else if (kdCode === 39 && value.charAt(start + 1) === aSep) {\n this.setPosition(start + 1);\n }\n }\n return true;\n }\n if (kdCode >= 34 && kdCode <= 40) {\n return true;\n }\n return false;\n },\n\n /**\n * process deletion of characters\n * returns true if processing performed\n */\n processAllways: function () {\n var parts; /** process backspace or delete */\n if (this.kdCode === 8 || this.kdCode === 46) {\n if (!this.selection.length) {\n parts = this.getBeforeAfterStriped();\n if (this.kdCode === 8) {\n parts[0] = parts[0].substring(0, parts[0].length - 1);\n } else {\n parts[1] = parts[1].substring(1, parts[1].length);\n }\n this.setValueParts(parts[0], parts[1]);\n } else {\n this.expandSelectionOnSign(false);\n parts = this.getBeforeAfterStriped();\n this.setValueParts(parts[0], parts[1]);\n }\n return true;\n }\n return false;\n },\n\n /**\n * process insertion of characters\n * returns true if processing performed\n */\n processKeypress: function () {\n var settingsClone = this.settingsClone,\n cCode = String.fromCharCode(this.which),\n parts = this.getBeforeAfterStriped(),\n left = parts[0],\n right = parts[1]; /** start rules when the decimal character key is pressed */\n /** always use numeric pad dot to insert decimal separator */\n if (cCode === settingsClone.aDec || (settingsClone.altDec && cCode === settingsClone.altDec) || ((cCode === '.' || cCode === ',') && this.kdCode === 110)) { /** do not allow decimal character if no decimal part allowed */\n if (!settingsClone.mDec || !settingsClone.aDec) {\n return true;\n } /** do not allow decimal character before aNeg character */\n if (settingsClone.aNeg && right.indexOf(settingsClone.aNeg) > -1) {\n return true;\n } /** do not allow decimal character if other decimal character present */\n if (left.indexOf(settingsClone.aDec) > -1) {\n return true;\n }\n if (right.indexOf(settingsClone.aDec) > 0) {\n return true;\n }\n if (right.indexOf(settingsClone.aDec) === 0) {\n right = right.substr(1);\n }\n this.setValueParts(left + settingsClone.aDec, right);\n return true;\n }\n /**\n * start rule on negative sign & prevent minus if not allowed\n */\n if (cCode === '-' || cCode === '+') {\n if (!settingsClone.aNeg) {\n return true;\n } /** caret is always after minus */\n if (left === '' && right.indexOf(settingsClone.aNeg) > -1) {\n left = settingsClone.aNeg;\n right = right.substring(1, right.length);\n } /** change sign of number, remove part if should */\n if (left.charAt(0) === settingsClone.aNeg) {\n left = left.substring(1, left.length);\n } else {\n left = (cCode === '-') ? settingsClone.aNeg + left : left;\n }\n this.setValueParts(left, right);\n return true;\n } /** digits */\n if (cCode >= '0' && cCode <= '9') { /** if try to insert digit before minus */\n if (settingsClone.aNeg && left === '' && right.indexOf(settingsClone.aNeg) > -1) {\n left = settingsClone.aNeg;\n right = right.substring(1, right.length);\n }\n if (settingsClone.vMax <= 0 && settingsClone.vMin < settingsClone.vMax && this.value.indexOf(settingsClone.aNeg) === -1 && cCode !== '0') {\n left = settingsClone.aNeg + left;\n }\n this.setValueParts(left + cCode, right);\n return true;\n } /** prevent any other character */\n return true;\n },\n\n /**\n * formatting of just processed value with keeping of cursor position\n */\n formatQuick: function () {\n var settingsClone = this.settingsClone,\n parts = this.getBeforeAfterStriped(),\n leftLength = this.value;\n if ((settingsClone.aSep === '' || (settingsClone.aSep !== '' && leftLength.indexOf(settingsClone.aSep) === -1)) && (settingsClone.aSign === '' || (settingsClone.aSign !== '' && leftLength.indexOf(settingsClone.aSign) === -1))) {\n var subParts = [],\n nSign = '';\n subParts = leftLength.split(settingsClone.aDec);\n if (subParts[0].indexOf('-') > -1) {\n nSign = '-';\n subParts[0] = subParts[0].replace('-', '');\n parts[0] = parts[0].replace('-', '');\n }\n if (subParts[0].length > settingsClone.mInt && parts[0].charAt(0) === '0') { /** strip leading zero if need */\n parts[0] = parts[0].slice(1);\n }\n parts[0] = nSign + parts[0];\n }\n var value = autoGroup(this.value, this.settingsClone),\n position = value.length;\n if (value) {\n /** prepare regexp which searches for cursor position from unformatted left part */\n var left_ar = parts[0].split(''),\n i = 0;\n for (i; i < left_ar.length; i += 1) { /** thanks Peter Kovari */\n if (!left_ar[i].match('\\\\d')) {\n left_ar[i] = '\\\\' + left_ar[i];\n }\n }\n var leftReg = new RegExp('^.*?' + left_ar.join('.*?'));\n /** search cursor position in formatted value */\n var newLeft = value.match(leftReg);\n if (newLeft) {\n position = newLeft[0].length;\n /** if we are just before sign which is in prefix position */\n if (((position === 0 && value.charAt(0) !== settingsClone.aNeg) || (position === 1 && value.charAt(0) === settingsClone.aNeg)) && settingsClone.aSign && settingsClone.pSign === 'p') {\n /** place caret after prefix sign */\n position = this.settingsClone.aSign.length + (value.charAt(0) === '-' ? 1 : 0);\n }\n } else if (settingsClone.aSign && settingsClone.pSign === 's') {\n /** if we could not find a place for cursor and have a sign as a suffix */\n /** place carret before suffix currency sign */\n position -= settingsClone.aSign.length;\n }\n }\n this.that.value = value;\n this.setPosition(position);\n this.formatted = true;\n }\n };\n\n /**\n * thanks to Anthony & Evan C\n */\n\n function autoGet(obj) {\n if (typeof obj === 'string') {\n obj = obj.replace(/\\[/g, \"\\\\[\").replace(/\\]/g, \"\\\\]\");\n obj = '#' + obj.replace(/(:|\\.)/g, '\\\\$1');\n /** obj = '#' + obj.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1'); */\n /** possible modification to replace the above 2 lines */\n }\n return $(obj);\n }\n\n /**\n * function to attach data to the element\n * and imitate the holder\n */\n\n function getHolder($that, settings, update) {\n var data = $that.data('autoNumeric');\n if (!data) {\n data = {};\n $that.data('autoNumeric', data);\n }\n var holder = data.holder;\n if ((holder === undefined && settings) || update) {\n holder = new AutoNumericHolder($that.get(0), settings);\n data.holder = holder;\n }\n return holder;\n }\n\n var methods = {\n\n /**\n * Method to initiate autoNumeric and attached the settings (default and options passed as a parameter\n * $(someSelector).autoNumeric('init'); // initiate autoNumeric with defaults\n * $(someSelector).autoNumeric('init', {option}); // initiate autoNumeric with options\n * $(someSelector).autoNumeric(); // initiate autoNumeric with defaults\n * $(someSelector).autoNumeric({option}); // initiate autoNumeric with options\n * options passes as a parameter example '{aSep: '.', aDec: ',', aSign: '€ '}\n */\n init: function (options) {\n return this.each(function () {\n var $this = $(this),\n settings = $this.data('autoNumeric'),\n /** attempt to grab 'autoNumeric' settings, if they don't exist returns \"undefined\". */\n tagData = $this.data(),\n /** attempt to grab HTML5 data, if they don't exist we'll get \"undefined\".*/\n $input = $this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])');\n if (typeof settings !== 'object') { /** If we couldn't grab settings, create them from defaults and passed options. */\n settings = $.extend({}, $.fn.autoNumeric.defaults, tagData, options, {\n aNum: '0123456789',\n hasFocus: false,\n removeBrackets: false,\n runOnce: false,\n tagList: ['b', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ins', 'kdb', 'label', 'li', 'output', 'p', 'q', 's', 'sample', 'span', 'strong', 'td', 'th', 'u', 'var']\n }); /** Merge defaults, tagData and options */\n if (settings.aDec === settings.aSep) {\n $.error(\"autoNumeric will not function properly when the decimal character aDec: '\" + settings.aDec + \"' and thousand separator aSep: '\" + settings.aSep + \"' are the same character\");\n }\n $this.data('autoNumeric', settings); /** Save our new settings */\n } else {\n return this;\n }\n var holder = getHolder($this, settings);\n if (!$input && $this.prop('tagName').toLowerCase() === 'input') { /** checks for non-supported input types */\n $.error('The input type \"' + $this.prop('type') + '\" is not supported by autoNumeric()');\n\n }\n if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) === -1 && $this.prop('tagName').toLowerCase() !== 'input') {\n $.error(\"The <\" + $this.prop('tagName').toLowerCase() + \"> is not supported by autoNumeric()\");\n\n }\n if (settings.runOnce === false && settings.aForm) { /** routine to format default value on page load */\n if ($input) {\n var setValue = true;\n if ($this[0].value === '' && settings.wEmpty === 'empty') {\n $this[0].value = '';\n setValue = false;\n }\n if ($this[0].value === '' && settings.wEmpty === 'sign') {\n $this[0].value = settings.aSign;\n setValue = false;\n }\n /** checks for page reload from back button\n * also checks for ASP.net form post back\n * the following HTML data attribute is REQUIRED (data-an-default=\"same value as the value attribute\")\n * example: \n */\n if (setValue && $this.val() !== '' && ((settings.anDefault === null && $this[0].value === $this.prop('defaultValue')) || (settings.anDefault !== null && settings.anDefault.toString() === $this.val()))) {\n $this.autoNumeric('set', $this.val());\n }\n }\n if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1 && $this.text() !== '') {\n $this.autoNumeric('set', $this.text());\n }\n }\n settings.runOnce = true;\n if ($this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])')) { /**added hidden type */\n $this.on('keydown.autoNumeric', function (e) {\n holder = getHolder($this);\n if (holder.settings.aDec === holder.settings.aSep) {\n $.error(\"autoNumeric will not function properly when the decimal character aDec: '\" + holder.settings.aDec + \"' and thousand separator aSep: '\" + holder.settings.aSep + \"' are the same character\");\n }\n if (holder.that.readOnly) {\n holder.processed = true;\n return true;\n }\n /** The below streamed code / comment allows the \"enter\" keydown to throw a change() event */\n /** if (e.keyCode === 13 && holder.inVal !== $this.val()){\n $this.change();\n holder.inVal = $this.val();\n }*/\n holder.init(e);\n if (holder.skipAllways(e)) {\n holder.processed = true;\n return true;\n }\n if (holder.processAllways()) {\n holder.processed = true;\n holder.formatQuick();\n e.preventDefault();\n return false;\n }\n holder.formatted = false;\n return true;\n });\n $this.on('keypress.autoNumeric', function (e) {\n holder = getHolder($this);\n var processed = holder.processed;\n holder.init(e);\n if (holder.skipAllways(e)) {\n return true;\n }\n if (processed) {\n e.preventDefault();\n return false;\n }\n if (holder.processAllways() || holder.processKeypress()) {\n holder.formatQuick();\n e.preventDefault();\n return false;\n }\n holder.formatted = false;\n });\n $this.on('keyup.autoNumeric', function (e) {\n holder = getHolder($this);\n holder.init(e);\n var skip = holder.skipAllways(e);\n holder.kdCode = 0;\n delete holder.valuePartsBeforePaste;\n if ($this[0].value === holder.settings.aSign) { /** added to properly place the caret when only the currency is present */\n if (holder.settings.pSign === 's') {\n setElementSelection(this, 0, 0);\n } else {\n setElementSelection(this, holder.settings.aSign.length, holder.settings.aSign.length);\n }\n }\n if (skip) {\n return true;\n }\n if (this.value === '') {\n return true;\n }\n if (!holder.formatted) {\n holder.formatQuick();\n }\n });\n $this.on('focusin.autoNumeric', function () {\n holder = getHolder($this);\n var $settings = holder.settingsClone;\n $settings.hasFocus = true;\n if ($settings.nBracket !== null) {\n var checkVal = $this.val();\n $this.val(negativeBracket(checkVal, $settings));\n }\n holder.inVal = $this.val();\n var onEmpty = checkEmpty(holder.inVal, $settings, true);\n if (onEmpty !== null && onEmpty !== '') {\n $this.val(onEmpty);\n }\n });\n $this.on('focusout.autoNumeric', function () {\n holder = getHolder($this);\n var $settings = holder.settingsClone,\n value = $this.val(),\n origValue = value;\n $settings.hasFocus = false;\n var strip_zero = ''; /** added to control leading zero */\n if ($settings.lZero === 'allow') { /** added to control leading zero */\n $settings.allowLeading = false;\n strip_zero = 'leading';\n }\n if (value !== '') {\n value = autoStrip(value, $settings, strip_zero);\n if (checkEmpty(value, $settings) === null && autoCheck(value, $settings, $this[0])) {\n value = fixNumber(value, $settings.aDec, $settings.aNeg);\n value = autoRound(value, $settings);\n value = presentNumber(value, $settings.aDec, $settings.aNeg);\n } else {\n value = '';\n }\n }\n var groupedValue = checkEmpty(value, $settings, false);\n if (groupedValue === null) {\n groupedValue = autoGroup(value, $settings);\n }\n if (groupedValue !== holder.inVal || groupedValue !== origValue) {\n $this.val(groupedValue);\n $this.change();\n delete holder.inVal;\n }\n });\n }\n });\n },\n\n /**\n * method to remove settings and stop autoNumeric() - does not remove the formatting\n * $(someSelector).autoNumeric('destroy'); // destroy autoNumeric\n * no parameters accepted\n */\n destroy: function () {\n return $(this).each(function () {\n var $this = $(this);\n $this.off('.autoNumeric');\n $this.removeData('autoNumeric');\n });\n },\n\n /**\n * method to update settings - can be call as many times\n * $(someSelector).autoNumeric('update', {options}); // updates the settings\n * options passes as a parameter example '{aSep: '.', aDec: ',', aSign: '€ '}\n */\n update: function (options) {\n return $(this).each(function () {\n var $this = autoGet($(this)),\n settings = $this.data('autoNumeric');\n if (typeof settings !== 'object') {\n $.error(\"You must initialize autoNumeric('init', {options}) prior to calling the 'update' method\");\n }\n var strip = $this.autoNumeric('get');\n settings = $.extend(settings, options);\n getHolder($this, settings, true);\n if (settings.aDec === settings.aSep) {\n $.error(\"autoNumeric will not function properly when the decimal character aDec: '\" + settings.aDec + \"' and thousand separator aSep: '\" + settings.aSep + \"' are the same character\");\n }\n $this.data('autoNumeric', settings);\n if ($this.val() !== '' || $this.text() !== '') {\n return $this.autoNumeric('set', strip);\n }\n return;\n });\n },\n\n /**\n * method to format value sent as a parameter \"\"\n * $(someSelector).autoNumeric('set', 'value'}); // formats the value being passed\n * value passed as a string - can be a integer '1234' or double '1234.56789'\n * must contain only numbers and one decimal (period) character\n */\n set: function (valueIn) {\n if (valueIn === null) {\n return;\n }\n return $(this).each(function () {\n var $this = autoGet($(this)),\n settings = $this.data('autoNumeric'),\n value = valueIn.toString(),\n testValue = valueIn.toString(),\n $input = $this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])');\n if (typeof settings !== 'object') {\n $.error(\"You must initialize autoNumeric('init', {options}) prior to calling the 'set' method\");\n }\n /** allows locale decimal separator to be a comma */\n if ((testValue === $this.attr('value') || testValue === $this.text()) && settings.runOnce === false) {\n value = value.replace(',', '.');\n }\n if (!$.isNumeric(+value)) {\n $.error(\"The value (\" + value + \") being 'set' is not numeric and has caused a error to be thrown\");\n }\n value = checkValue(value, settings);\n settings.setEvent = true;\n value.toString();\n if (value !== '') {\n value = autoRound(value, settings);\n }\n value = presentNumber(value, settings.aDec, settings.aNeg);\n if (!autoCheck(value, settings)) {\n value = autoRound('', settings);\n }\n value = autoGroup(value, settings);\n if ($input) {\n return $this.val(value);\n }\n if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1) {\n return $this.text(value);\n }\n return false;\n });\n },\n\n /**\n * method to get the unformatted that accepts up to one parameter\n * $(someSelector).autoNumeric('get'); no parameters accepted\n * values returned as ISO numeric string \"1234.56\" where the decimal character is a period\n * only the first element in the selector is returned\n */\n get: function () {\n var $this = autoGet($(this)),\n settings = $this.data('autoNumeric');\n if (typeof settings !== 'object') {\n $.error(\"You must initialize autoNumeric('init', {options}) prior to calling the 'get' method\");\n }\n var getValue = '';\n /** determine the element type then use .eq(0) selector to grab the value of the first element in selector */\n if ($this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])')) { /**added hidden type */\n getValue = $this.eq(0).val();\n } else if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1) {\n getValue = $this.eq(0).text();\n } else {\n $.error(\"The <\" + $this.prop('tagName').toLowerCase() + \"> is not supported by autoNumeric()\");\n }\n if ((getValue === '' && settings.wEmpty === 'empty') || (getValue === settings.aSign && (settings.wEmpty === 'sign' || settings.wEmpty === 'empty'))) {\n return '';\n }\n if (getValue !== '' && settings.nBracket !== null) {\n settings.removeBrackets = true;\n getValue = negativeBracket(getValue, settings);\n settings.removeBrackets = false;\n }\n if (settings.runOnce || settings.aForm === false) {\n getValue = autoStrip(getValue, settings);\n }\n getValue = fixNumber(getValue, settings.aDec, settings.aNeg);\n if (+getValue === 0 && settings.lZero !== 'keep') {\n getValue = '0';\n }\n if (settings.lZero === 'keep') {\n return getValue;\n }\n getValue = checkValue(getValue, settings);\n return getValue; /** returned Numeric String */\n },\n\n /**\n * The 'getString' method used jQuerys .serialize() method that creates a text string in standard URL-encoded notation\n * it then loops through the string and un-formats the inputs with autoNumeric\n * $(someSelector).autoNumeric('getString'); no parameter accepted\n * values returned as ISO numeric string \"1234.56\" where the decimal character is a period\n */\n getString: function () {\n var isAutoNumeric = false,\n $this = autoGet($(this)),\n formFields = $this.serialize(),\n formParts = formFields.split('&'),\n formIndex = $('form').index($this),\n allFormElements = $('form:eq(' + formIndex + ')'),\n aiIndex = [],\n /* all input index */\n scIndex = [],\n /* successful control index */\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n /* from jQuery serialize method */\n rsubmittable = /^(?:input|select|textarea|keygen)/i,\n /* from jQuery serialize method */\n rcheckableType = /^(?:checkbox|radio)$/i,\n rnonAutoNumericTypes = /^(?:button|checkbox|color|date|datetime|datetime-local|email|file|image|month|number|password|radio|range|reset|search|submit|time|url|week)/i,\n count = 0;\n /*jslint unparam: true*/\n /* index of successful elements */\n $.each(allFormElements[0], function (i, field) {\n if (field.name !== '' && rsubmittable.test(field.localName) && !rsubmitterTypes.test(field.type) && !field.disabled && (field.checked || !rcheckableType.test(field.type))) {\n scIndex.push(count);\n count = count + 1;\n } else {\n scIndex.push(-1);\n }\n });\n /* index of all inputs tags except checkbox */\n count = 0;\n $.each(allFormElements[0], function (i, field) {\n if (field.localName === 'input' && (field.type === '' || field.type === 'text' || field.type === 'hidden' || field.type === 'tel')) {\n aiIndex.push(count);\n count = count + 1;\n } else {\n aiIndex.push(-1);\n if (field.localName === 'input' && rnonAutoNumericTypes.test(field.type)) {\n count = count + 1;\n }\n }\n });\n $.each(formParts, function (i, miniParts) {\n miniParts = formParts[i].split('=');\n var scElement = $.inArray(i, scIndex);\n if (scElement > -1 && aiIndex[scElement] > -1) {\n var testInput = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')'),\n settings = testInput.data('autoNumeric');\n if (typeof settings === 'object') {\n if (miniParts[1] !== null) {\n miniParts[1] = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')').autoNumeric('get').toString();\n formParts[i] = miniParts.join('=');\n isAutoNumeric = true;\n }\n }\n }\n });\n /*jslint unparam: false*/\n if (!isAutoNumeric) {\n $.error(\"You must initialize autoNumeric('init', {options}) prior to calling the 'getString' method\");\n }\n return formParts.join('&');\n },\n\n /**\n * The 'getString' method used jQuerys .serializeArray() method that creates array or objects that can be encoded as a JSON string\n * it then loops through the string and un-formats the inputs with autoNumeric\n * $(someSelector).autoNumeric('getArray'); no parameter accepted\n * values returned as ISO numeric string \"1234.56\" where the decimal character is a period\n */\n getArray: function () {\n var isAutoNumeric = false,\n $this = autoGet($(this)),\n formFields = $this.serializeArray(),\n formIndex = $('form').index($this),\n allFormElements = $('form:eq(' + formIndex + ')'),\n aiIndex = [],\n /* all input index */\n scIndex = [],\n /* successful control index */\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n /* from jQuery serialize method */\n rsubmittable = /^(?:input|select|textarea|keygen)/i,\n /* from jQuery serialize method */\n rcheckableType = /^(?:checkbox|radio)$/i,\n rnonAutoNumericTypes = /^(?:button|checkbox|color|date|datetime|datetime-local|email|file|image|month|number|password|radio|range|reset|search|submit|time|url|week)/i,\n count = 0;\n /*jslint unparam: true*/\n /* index of successful elements */\n $.each(allFormElements[0], function (i, field) {\n if (field.name !== '' && rsubmittable.test(field.localName) && !rsubmitterTypes.test(field.type) && !field.disabled && (field.checked || !rcheckableType.test(field.type))) {\n scIndex.push(count);\n count = count + 1;\n } else {\n scIndex.push(-1);\n }\n });\n /* index of all inputs tags */\n count = 0;\n $.each(allFormElements[0], function (i, field) {\n if (field.localName === 'input' && (field.type === '' || field.type === 'text' || field.type === 'hidden' || field.type === 'tel')) {\n aiIndex.push(count);\n count = count + 1;\n } else {\n aiIndex.push(-1);\n if (field.localName === 'input' && rnonAutoNumericTypes.test(field.type)) {\n count = count + 1;\n }\n }\n });\n $.each(formFields, function (i, field) {\n var scElement = $.inArray(i, scIndex);\n if (scElement > -1 && aiIndex[scElement] > -1) {\n var testInput = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')'),\n settings = testInput.data('autoNumeric');\n if (typeof settings === 'object') {\n field.value = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')').autoNumeric('get').toString();\n isAutoNumeric = true;\n }\n }\n });\n /*jslint unparam: false*/\n if (!isAutoNumeric) {\n $.error(\"None of the successful form inputs are initialized by autoNumeric.\");\n }\n return formFields;\n },\n\n /**\n * The 'getSteetings returns the object with autoNumeric settings for those who need to look under the hood\n * $(someSelector).autoNumeric('getSettings'); // no parameters accepted\n * $(someSelector).autoNumeric('getSettings').aDec; // return the aDec setting as a string - ant valid setting can be used\n */\n getSettings: function () {\n var $this = autoGet($(this));\n return $this.eq(0).data('autoNumeric');\n }\n };\n\n /**\n * autoNumeric function\n */\n $.fn.autoNumeric = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n if (typeof method === 'object' || !method) {\n return methods.init.apply(this, arguments);\n }\n $.error('Method \"' + method + '\" is not supported by autoNumeric()');\n };\n\n /**\n * Defaults are public - these can be overridden by the following:\n * HTML5 data attributes\n * Options passed by the 'init' or 'update' methods\n * Use jQuery's $.extend method - great way to pass ASP.NET current culture settings\n */\n $.fn.autoNumeric.defaults = {\n /** allowed thousand separator characters\n * comma = ','\n * period \"full stop\" = '.'\n * apostrophe is escaped = '\\''\n * space = ' '\n * none = ''\n * NOTE: do not use numeric characters\n */\n aSep: ',',\n /** digital grouping for the thousand separator used in Format\n * dGroup: '2', results in 99,99,99,999 common in India for values less than 1 billion and greater than -1 billion\n * dGroup: '3', results in 999,999,999 default\n * dGroup: '4', results in 9999,9999,9999 used in some Asian countries\n */\n dGroup: '3',\n /** allowed decimal separator characters\n * period \"full stop\" = '.'\n * comma = ','\n */\n aDec: '.',\n /** allow to declare alternative decimal separator which is automatically replaced by aDec\n * developed for countries the use a comma ',' as the decimal character\n * and have keyboards\\numeric pads that have a period 'full stop' as the decimal characters (Spain is an example)\n */\n altDec: null,\n /** allowed currency symbol\n * Must be in quotes aSign: '$', a space is allowed aSign: '$ '\n */\n aSign: '',\n /** placement of currency sign\n * for prefix pSign: 'p',\n * for suffix pSign: 's',\n */\n pSign: 'p',\n /** maximum possible value\n * value must be enclosed in quotes and use the period for the decimal point\n * value must be larger than vMin\n */\n vMax: '9999999999999.99',\n /** minimum possible value\n * value must be enclosed in quotes and use the period for the decimal point\n * value must be smaller than vMax\n */\n vMin: '-9999999999999.99',\n /** max number of decimal places = used to override decimal places set by the vMin & vMax values\n * value must be enclosed in quotes example mDec: '3',\n * This can also set the value via a call back function mDec: 'css:#\n */\n mDec: null,\n /** method used for rounding\n * mRound: 'S', Round-Half-Up Symmetric (default)\n * mRound: 'A', Round-Half-Up Asymmetric\n * mRound: 's', Round-Half-Down Symmetric (lower case s)\n * mRound: 'a', Round-Half-Down Asymmetric (lower case a)\n * mRound: 'B', Round-Half-Even \"Bankers Rounding\"\n * mRound: 'U', Round Up \"Round-Away-From-Zero\"\n * mRound: 'D', Round Down \"Round-Toward-Zero\" - same as truncate\n * mRound: 'C', Round to Ceiling \"Toward Positive Infinity\"\n * mRound: 'F', Round to Floor \"Toward Negative Infinity\"\n */\n mRound: 'S',\n /** controls decimal padding\n * aPad: true - always Pad decimals with zeros\n * aPad: false - does not pad with zeros.\n * aPad: `some number` - pad decimals with zero to number different from mDec\n * thanks to Jonas Johansson for the suggestion\n */\n aPad: true,\n /** places brackets on negative value -$ 999.99 to (999.99)\n * visible only when the field does NOT have focus the left and right symbols should be enclosed in quotes and seperated by a comma\n * nBracket: null, nBracket: '(,)', nBracket: '[,]', nBracket: '<,>' or nBracket: '{,}'\n */\n nBracket: null,\n /** Displayed on empty string\n * wEmpty: 'empty', - input can be blank\n * wEmpty: 'zero', - displays zero\n * wEmpty: 'sign', - displays the currency sign\n */\n wEmpty: 'empty',\n /** controls leading zero behavior\n * lZero: 'allow', - allows leading zeros to be entered. Zeros will be truncated when entering additional digits. On focusout zeros will be deleted.\n * lZero: 'deny', - allows only one leading zero on values less than one\n * lZero: 'keep', - allows leading zeros to be entered. on fousout zeros will be retained.\n */\n lZero: 'allow',\n /** determine if the select all keyboard command will select\n * the complete input text or only the input numeric value\n * if the currency symbol is between the numeric value and the negative sign only the numeric value will sellected\n */\n sNumber: true,\n /** determine if the default value will be formatted on page ready.\n * true = automatically formats the default value on page ready\n * false = will not format the default value\n */\n aForm: true,\n /** helper option for ASP.NET postback\n * should be the value of the unformatted default value\n * examples:\n * no default value='' {anDefault: ''}\n * value=1234.56 {anDefault: '1234.56'}\n */\n anDefault: null\n };\n}));","/**\n* @license Input Mask plugin for jquery\n* http://github.com/RobinHerbots/jquery.inputmask\n* Copyright (c) 2010 - 2014 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 2.5.9\n*/\n\n(function ($) {\n if ($.fn.inputmask === undefined) {\n //helper functions \n function isInputEventSupported(eventName) {\n var el = document.createElement('input'),\n eventName = 'on' + eventName,\n isSupported = (eventName in el);\n if (!isSupported) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] == 'function';\n }\n el = null;\n return isSupported;\n }\n function resolveAlias(aliasStr, options, opts) {\n var aliasDefinition = opts.aliases[aliasStr];\n if (aliasDefinition) {\n if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); //alias is another alias\n $.extend(true, opts, aliasDefinition); //merge alias definition in the options\n $.extend(true, opts, options); //reapply extra given options\n return true;\n }\n return false;\n }\n function generateMaskSets(opts) {\n var ms = [];\n var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates\n function getMaskTemplate(mask) {\n if (opts.numericInput) {\n mask = mask.split('').reverse().join('');\n }\n var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;\n if (repeat == \"*\") greedy = false;\n //if (greedy == true && opts.placeholder == \"\") opts.placeholder = \" \";\n if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = \"\"; } //hide placeholder with single non-greedy mask\n var singleMask = $.map(mask.split(\"\"), function (element, index) {\n var outElem = [];\n if (element == opts.escapeChar) {\n escaped = true;\n }\n else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) {\n var maskdef = opts.definitions[element];\n if (maskdef && !escaped) {\n for (var i = 0; i < maskdef.cardinality; i++) {\n outElem.push(opts.placeholder.charAt((outCount + i) % opts.placeholder.length));\n }\n } else {\n outElem.push(element);\n escaped = false;\n }\n outCount += outElem.length;\n return outElem;\n }\n });\n\n //allocate repetitions\n var repeatedMask = singleMask.slice();\n for (var i = 1; i < repeat && greedy; i++) {\n repeatedMask = repeatedMask.concat(singleMask.slice());\n }\n\n return { \"mask\": repeatedMask, \"repeat\": repeat, \"greedy\": greedy };\n }\n //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}\n function getTestingChain(mask) {\n if (opts.numericInput) {\n mask = mask.split('').reverse().join('');\n }\n var isOptional = false, escaped = false;\n var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated\n\n return $.map(mask.split(\"\"), function (element, index) {\n var outElem = [];\n\n if (element == opts.escapeChar) {\n escaped = true;\n } else if (element == opts.optionalmarker.start && !escaped) {\n isOptional = true;\n newBlockMarker = true;\n }\n else if (element == opts.optionalmarker.end && !escaped) {\n isOptional = false;\n newBlockMarker = true;\n }\n else {\n var maskdef = opts.definitions[element];\n if (maskdef && !escaped) {\n var prevalidators = maskdef[\"prevalidator\"], prevalidatorsL = prevalidators ? prevalidators.length : 0;\n for (var i = 1; i < maskdef.cardinality; i++) {\n var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator[\"validator\"], cardinality = prevalidator[\"cardinality\"];\n outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp(\".\"), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] || element });\n if (isOptional == true) //reset newBlockMarker\n newBlockMarker = false;\n }\n outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp(\".\"), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] || element });\n } else {\n outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element });\n escaped = false;\n }\n //reset newBlockMarker\n newBlockMarker = false;\n return outElem;\n }\n });\n }\n function markOptional(maskPart) { //needed for the clearOptionalTail functionality\n return opts.optionalmarker.start + maskPart + opts.optionalmarker.end;\n }\n function splitFirstOptionalEndPart(maskPart) {\n var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length;\n for (var i = 0; i < mpl; i++) {\n if (maskPart.charAt(i) == opts.optionalmarker.start) {\n optionalStartMarkers++;\n }\n if (maskPart.charAt(i) == opts.optionalmarker.end) {\n optionalEndMarkers++;\n }\n if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers)\n break;\n }\n var maskParts = [maskPart.substring(0, i)];\n if (i < mpl) {\n maskParts.push(maskPart.substring(i + 1, mpl));\n }\n return maskParts;\n }\n function splitFirstOptionalStartPart(maskPart) {\n var mpl = maskPart.length;\n for (var i = 0; i < mpl; i++) {\n if (maskPart.charAt(i) == opts.optionalmarker.start) {\n break;\n }\n }\n var maskParts = [maskPart.substring(0, i)];\n if (i < mpl) {\n maskParts.push(maskPart.substring(i + 1, mpl));\n }\n return maskParts;\n }\n function generateMask(maskPrefix, maskPart, metadata) {\n var maskParts = splitFirstOptionalEndPart(maskPart);\n var newMask, maskTemplate;\n\n var masks = splitFirstOptionalStartPart(maskParts[0]);\n if (masks.length > 1) {\n newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : \"\");\n if ($.inArray(newMask, genmasks) == -1 && newMask != \"\") {\n genmasks.push(newMask);\n maskTemplate = getMaskTemplate(newMask);\n ms.push({\n \"mask\": newMask,\n \"_buffer\": maskTemplate[\"mask\"],\n \"buffer\": maskTemplate[\"mask\"].slice(),\n \"tests\": getTestingChain(newMask),\n \"lastValidPosition\": -1,\n \"greedy\": maskTemplate[\"greedy\"],\n \"repeat\": maskTemplate[\"repeat\"],\n \"metadata\": metadata\n });\n }\n newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : \"\");\n if ($.inArray(newMask, genmasks) == -1 && newMask != \"\") {\n genmasks.push(newMask);\n maskTemplate = getMaskTemplate(newMask);\n ms.push({\n \"mask\": newMask,\n \"_buffer\": maskTemplate[\"mask\"],\n \"buffer\": maskTemplate[\"mask\"].slice(),\n \"tests\": getTestingChain(newMask),\n \"lastValidPosition\": -1,\n \"greedy\": maskTemplate[\"greedy\"],\n \"repeat\": maskTemplate[\"repeat\"],\n \"metadata\": metadata\n });\n }\n if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional\n generateMask(maskPrefix + masks[0], masks[1] + maskParts[1], metadata);\n }\n if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) {\n generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1], metadata);\n generateMask(maskPrefix + masks[0], maskParts[1], metadata);\n }\n }\n else {\n newMask = maskPrefix + maskParts;\n if ($.inArray(newMask, genmasks) == -1 && newMask != \"\") {\n genmasks.push(newMask);\n maskTemplate = getMaskTemplate(newMask);\n ms.push({\n \"mask\": newMask,\n \"_buffer\": maskTemplate[\"mask\"],\n \"buffer\": maskTemplate[\"mask\"].slice(),\n \"tests\": getTestingChain(newMask),\n \"lastValidPosition\": -1,\n \"greedy\": maskTemplate[\"greedy\"],\n \"repeat\": maskTemplate[\"repeat\"],\n \"metadata\": metadata\n });\n }\n }\n\n }\n\n if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask\n opts.mask = opts.mask.call(this, opts);\n }\n if ($.isArray(opts.mask)) {\n $.each(opts.mask, function (ndx, msk) {\n if (msk[\"mask\"] != undefined) {\n generateMask(\"\", msk[\"mask\"].toString(), msk);\n } else\n generateMask(\"\", msk.toString());\n });\n } else generateMask(\"\", opts.mask.toString());\n\n return opts.greedy ? ms : ms.sort(function (a, b) { return a[\"mask\"].length - b[\"mask\"].length; });\n }\n\n var msie1x = typeof ScriptEngineMajorVersion === \"function\"\n ? ScriptEngineMajorVersion() //IE11 detection\n : new Function(\"/*@cc_on return @_jscript_version; @*/\")() >= 10, //conditional compilation from mickeysoft trick\n ua = navigator.userAgent,\n iphone = ua.match(new RegExp(\"iphone\", \"i\")) !== null,\n android = ua.match(new RegExp(\"android.*safari.*\", \"i\")) !== null,\n androidchrome = ua.match(new RegExp(\"android.*chrome.*\", \"i\")) !== null,\n androidfirefox = ua.match(new RegExp(\"android.*firefox.*\", \"i\")) !== null,\n kindle = /Kindle/i.test(ua) || /Silk/i.test(ua) || /KFTT/i.test(ua) || /KFOT/i.test(ua) || /KFJWA/i.test(ua) || /KFJWI/i.test(ua) || /KFSOWI/i.test(ua) || /KFTHWA/i.test(ua) || /KFTHWI/i.test(ua) || /KFAPWA/i.test(ua) || /KFAPWI/i.test(ua),\n PasteEventType = isInputEventSupported('paste') ? 'paste' : isInputEventSupported('input') ? 'input' : \"propertychange\";\n\n //if (androidchrome) {\n // var browser = navigator.userAgent.match(new RegExp(\"chrome.*\", \"i\")),\n // version = parseInt(new RegExp(/[0-9]+/).exec(browser));\n // androidchrome32 = (version == 32);\n //}\n\n //masking scope\n //actionObj definition see below\n function maskScope(masksets, activeMasksetIndex, opts, actionObj) {\n var isRTL = false,\n valueOnFocus = getActiveBuffer().join(''),\n $el,\n skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround\n skipInputEvent = false, //skip when triggered from within inputmask\n ignorable = false;\n\n\n //maskset helperfunctions\n\n function getActiveMaskSet() {\n return masksets[activeMasksetIndex];\n }\n\n function getActiveTests() {\n return getActiveMaskSet()['tests'];\n }\n\n function getActiveBufferTemplate() {\n return getActiveMaskSet()['_buffer'];\n }\n\n function getActiveBuffer() {\n return getActiveMaskSet()['buffer'];\n }\n\n function isValid(pos, c, strict) { //strict true ~ no correction or autofill\n strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions \n\n function _isValid(position, activeMaskset, c, strict) {\n var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset[\"buffer\"];\n for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) {\n chrs += getBufferElement(buffer, testPos - (i - 1));\n }\n\n if (c) {\n chrs += c;\n }\n\n //return is false or a json object => { pos: ??, c: ??} or true\n return activeMaskset['tests'][testPos].fn != null ?\n activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts)\n : (c == getBufferElement(activeMaskset['_buffer'].slice(), position, true) || c == opts.skipOptionalPartCharacter) ?\n { \"refresh\": true, c: getBufferElement(activeMaskset['_buffer'].slice(), position, true), pos: position }\n : false;\n }\n\n function PostProcessResults(maskForwards, results) {\n var hasValidActual = false;\n $.each(results, function (ndx, rslt) {\n hasValidActual = $.inArray(rslt[\"activeMasksetIndex\"], maskForwards) == -1 && rslt[\"result\"] !== false;\n if (hasValidActual) return false;\n });\n if (hasValidActual) { //strip maskforwards\n results = $.map(results, function (rslt, ndx) {\n if ($.inArray(rslt[\"activeMasksetIndex\"], maskForwards) == -1) {\n return rslt;\n } else {\n masksets[rslt[\"activeMasksetIndex\"]][\"lastValidPosition\"] = actualLVP;\n }\n });\n } else { //keep maskforwards with the least forward\n var lowestPos = -1, lowestIndex = -1, rsltValid;\n $.each(results, function (ndx, rslt) {\n if ($.inArray(rslt[\"activeMasksetIndex\"], maskForwards) != -1 && rslt[\"result\"] !== false & (lowestPos == -1 || lowestPos > rslt[\"result\"][\"pos\"])) {\n lowestPos = rslt[\"result\"][\"pos\"];\n lowestIndex = rslt[\"activeMasksetIndex\"];\n }\n });\n results = $.map(results, function (rslt, ndx) {\n if ($.inArray(rslt[\"activeMasksetIndex\"], maskForwards) != -1) {\n if (rslt[\"result\"][\"pos\"] == lowestPos) {\n return rslt;\n } else if (rslt[\"result\"] !== false) {\n for (var i = pos; i < lowestPos; i++) {\n rsltValid = _isValid(i, masksets[rslt[\"activeMasksetIndex\"]], masksets[lowestIndex][\"buffer\"][i], true);\n if (rsltValid === false) {\n masksets[rslt[\"activeMasksetIndex\"]][\"lastValidPosition\"] = lowestPos - 1;\n break;\n } else {\n setBufferElement(masksets[rslt[\"activeMasksetIndex\"]][\"buffer\"], i, masksets[lowestIndex][\"buffer\"][i], true);\n masksets[rslt[\"activeMasksetIndex\"]][\"lastValidPosition\"] = i;\n }\n }\n //also check check for the lowestpos with the new input\n rsltValid = _isValid(lowestPos, masksets[rslt[\"activeMasksetIndex\"]], c, true);\n if (rsltValid !== false) {\n setBufferElement(masksets[rslt[\"activeMasksetIndex\"]][\"buffer\"], lowestPos, c, true);\n masksets[rslt[\"activeMasksetIndex\"]][\"lastValidPosition\"] = lowestPos;\n }\n //console.log(\"ndx \" + rslt[\"activeMasksetIndex\"] + \" validate \" + masksets[rslt[\"activeMasksetIndex\"]][\"buffer\"].join('') + \" lv \" + masksets[rslt[\"activeMasksetIndex\"]]['lastValidPosition']);\n return rslt;\n }\n }\n });\n }\n return results;\n }\n\n if (strict) {\n var result = _isValid(pos, getActiveMaskSet(), c, strict); //only check validity in current mask when validating strict\n if (result === true) {\n result = { \"pos\": pos }; //always take a possible corrected maskposition into account\n }\n return result;\n }\n\n var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex,\n actualBuffer = getActiveBuffer().slice(), actualLVP = getActiveMaskSet()[\"lastValidPosition\"],\n actualPrevious = seekPrevious(pos),\n maskForwards = [];\n $.each(masksets, function (index, value) {\n if (typeof (value) == \"object\") {\n activeMasksetIndex = index;\n\n var maskPos = pos;\n var lvp = getActiveMaskSet()['lastValidPosition'],\n rsltValid;\n if (lvp == actualLVP) {\n if ((maskPos - actualLVP) > 1) {\n for (var i = lvp == -1 ? 0 : lvp; i < maskPos; i++) {\n rsltValid = _isValid(i, getActiveMaskSet(), actualBuffer[i], true);\n if (rsltValid === false) {\n break;\n } else {\n setBufferElement(getActiveBuffer(), i, actualBuffer[i], true);\n if (rsltValid === true) {\n rsltValid = { \"pos\": i }; //always take a possible corrected maskposition into account\n }\n var newValidPosition = rsltValid.pos || i;\n if (getActiveMaskSet()['lastValidPosition'] < newValidPosition)\n getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid\n }\n }\n }\n //does the input match on a further position?\n if (!isMask(maskPos) && !_isValid(maskPos, getActiveMaskSet(), c, strict)) {\n var maxForward = seekNext(maskPos) - maskPos;\n for (var fw = 0; fw < maxForward; fw++) {\n if (_isValid(++maskPos, getActiveMaskSet(), c, strict) !== false)\n break;\n }\n maskForwards.push(activeMasksetIndex);\n //console.log('maskforward ' + activeMasksetIndex + \" pos \" + pos + \" maskPos \" + maskPos);\n }\n }\n\n if (getActiveMaskSet()['lastValidPosition'] >= actualLVP || activeMasksetIndex == currentActiveMasksetIndex) {\n if (maskPos >= 0 && maskPos < getMaskLength()) {\n result = _isValid(maskPos, getActiveMaskSet(), c, strict);\n if (result !== false) {\n if (result === true) {\n result = { \"pos\": maskPos }; //always take a possible corrected maskposition into account\n }\n var newValidPosition = result.pos || maskPos;\n if (getActiveMaskSet()['lastValidPosition'] < newValidPosition)\n getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid\n }\n //console.log(\"pos \" + pos + \" ndx \" + activeMasksetIndex + \" validate \" + getActiveBuffer().join('') + \" lv \" + getActiveMaskSet()['lastValidPosition']);\n results.push({ \"activeMasksetIndex\": index, \"result\": result });\n }\n }\n }\n });\n activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex\n\n return PostProcessResults(maskForwards, results); //return results of the multiple mask validations\n }\n\n function determineActiveMasksetIndex() {\n var currentMasksetIndex = activeMasksetIndex,\n highestValid = { \"activeMasksetIndex\": 0, \"lastValidPosition\": -1, \"next\": -1 };\n $.each(masksets, function (index, value) {\n if (typeof (value) == \"object\") {\n activeMasksetIndex = index;\n if (getActiveMaskSet()['lastValidPosition'] > highestValid['lastValidPosition']) {\n highestValid[\"activeMasksetIndex\"] = index;\n highestValid[\"lastValidPosition\"] = getActiveMaskSet()['lastValidPosition'];\n highestValid[\"next\"] = seekNext(getActiveMaskSet()['lastValidPosition']);\n } else if (getActiveMaskSet()['lastValidPosition'] == highestValid['lastValidPosition'] &&\n (highestValid['next'] == -1 || highestValid['next'] > seekNext(getActiveMaskSet()['lastValidPosition']))) {\n highestValid[\"activeMasksetIndex\"] = index;\n highestValid[\"lastValidPosition\"] = getActiveMaskSet()['lastValidPosition'];\n highestValid[\"next\"] = seekNext(getActiveMaskSet()['lastValidPosition']);\n }\n }\n });\n\n activeMasksetIndex = highestValid[\"lastValidPosition\"] != -1 && masksets[currentMasksetIndex][\"lastValidPosition\"] == highestValid[\"lastValidPosition\"] ? currentMasksetIndex : highestValid[\"activeMasksetIndex\"];\n if (currentMasksetIndex != activeMasksetIndex) {\n clearBuffer(getActiveBuffer(), seekNext(highestValid[\"lastValidPosition\"]), getMaskLength());\n getActiveMaskSet()[\"writeOutBuffer\"] = true;\n }\n $el.data('_inputmask')['activeMasksetIndex'] = activeMasksetIndex; //store the activeMasksetIndex\n }\n\n function isMask(pos) {\n var testPos = determineTestPosition(pos);\n var test = getActiveTests()[testPos];\n\n return test != undefined ? test.fn : false;\n }\n\n function determineTestPosition(pos) {\n return pos % getActiveTests().length;\n }\n\n function getMaskLength() {\n\t\t\t\tvar buffer=getActiveBufferTemplate(), greedy=getActiveMaskSet()['greedy'], repeat=getActiveMaskSet()['repeat'], currentBuffer=getActiveBuffer();\n\n\t\tif($.isFunction(opts.getMaskLength)) return opts.getMaskLength(buffer, greedy, repeat, currentBuffer, opts);\n\n\t\t var calculatedLength = buffer.length;\n if (!greedy) {\n if (repeat == \"*\") {\n calculatedLength = currentBuffer.length + 1;\n } else if (repeat > 1) {\n calculatedLength += (buffer.length * (repeat - 1));\n }\n }\n return calculatedLength;\n }\n\n //pos: from position\n\n function seekNext(pos) {\n var maskL = getMaskLength();\n if (pos >= maskL) return maskL;\n var position = pos;\n while (++position < maskL && !isMask(position)) {\n }\n return position;\n }\n\n //pos: from position\n\n function seekPrevious(pos) {\n var position = pos;\n if (position <= 0) return 0;\n\n while (--position > 0 && !isMask(position)) {\n }\n ;\n return position;\n }\n\n function setBufferElement(buffer, position, element, autoPrepare) {\n if (autoPrepare) position = prepareBuffer(buffer, position);\n\n var test = getActiveTests()[determineTestPosition(position)];\n var elem = element;\n if (elem != undefined && test != undefined) {\n switch (test.casing) {\n case \"upper\":\n elem = element.toUpperCase();\n break;\n case \"lower\":\n elem = element.toLowerCase();\n break;\n }\n }\n\n buffer[position] = elem;\n }\n\n function getBufferElement(buffer, position, autoPrepare) {\n if (autoPrepare) position = prepareBuffer(buffer, position);\n return buffer[position];\n }\n\n //needed to handle the non-greedy mask repetitions\n\n function prepareBuffer(buffer, position) {\n var j;\n while (buffer[position] == undefined && buffer.length < getMaskLength()) {\n j = 0;\n while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer\n buffer.push(getActiveBufferTemplate()[j++]);\n }\n }\n\n return position;\n }\n\n function writeBuffer(input, buffer, caretPos) {\n input._valueSet(buffer.join(''));\n if (caretPos != undefined) {\n caret(input, caretPos);\n }\n }\n\n function clearBuffer(buffer, start, end, stripNomasks) {\n for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {\n if (stripNomasks === true) {\n if (!isMask(i))\n setBufferElement(buffer, i, \"\");\n } else\n setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));\n }\n }\n\n function setReTargetPlaceHolder(buffer, pos) {\n var testPos = determineTestPosition(pos);\n setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos));\n }\n\n function getPlaceHolder(pos) {\n return opts.placeholder.charAt(pos % opts.placeholder.length);\n }\n\n function checkVal(input, writeOut, strict, nptvl, intelliCheck) {\n var inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet()).split('');\n\n $.each(masksets, function (ndx, ms) {\n if (typeof (ms) == \"object\") {\n ms[\"buffer\"] = ms[\"_buffer\"].slice();\n ms[\"lastValidPosition\"] = -1;\n ms[\"p\"] = -1;\n }\n });\n if (strict !== true) activeMasksetIndex = 0;\n if (writeOut) input._valueSet(\"\"); //initial clear\n var ml = getMaskLength();\n $.each(inputValue, function (ndx, charCode) {\n if (intelliCheck === true) {\n var p = getActiveMaskSet()[\"p\"], lvp = p == -1 ? p : seekPrevious(p),\n pos = lvp == -1 ? ndx : seekNext(lvp);\n if ($.inArray(charCode, getActiveBufferTemplate().slice(lvp + 1, pos)) == -1) {\n keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx);\n }\n } else {\n keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx);\n strict = strict || (ndx > 0 && ndx > getActiveMaskSet()[\"p\"]);\n }\n });\n\n if (strict === true && getActiveMaskSet()[\"p\"] != -1) {\n getActiveMaskSet()[\"lastValidPosition\"] = seekPrevious(getActiveMaskSet()[\"p\"]);\n }\n }\n\n function escapeRegex(str) {\n return $.inputmask.escapeRegex.call(this, str);\n }\n\n function truncateInput(inputValue) {\n return inputValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*$\"), \"\");\n }\n\n function clearOptionalTail(input) {\n var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos;\n for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) {\n var testPos = determineTestPosition(pos);\n if (getActiveTests()[testPos].optionality) {\n if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n tmpBuffer.pop();\n else break;\n } else break;\n }\n writeBuffer(input, tmpBuffer);\n }\n\n function unmaskedvalue($input, skipDatepickerCheck) {\n if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {\n var umValue = $.map(getActiveBuffer(), function (element, index) {\n return isMask(index) && isValid(index, element, true) ? element : null;\n });\n var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join('');\n return $.isFunction(opts.onUnMask) ? opts.onUnMask.call($input, getActiveBuffer().join(''), unmaskedValue, opts) : unmaskedValue;\n } else {\n return $input[0]._valueGet();\n }\n }\n\n function TranslatePosition(pos) {\n if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != \"\")) {\n var bffrLght = getActiveBuffer().length;\n pos = bffrLght - pos;\n }\n return pos;\n }\n\n function caret(input, begin, end) {\n var npt = input.jquery && input.length > 0 ? input[0] : input, range;\n if (typeof begin == 'number') {\n begin = TranslatePosition(begin);\n end = TranslatePosition(end);\n if (!$(npt).is(':visible')) {\n return;\n }\n end = (typeof end == 'number') ? end : begin;\n npt.scrollLeft = npt.scrollWidth;\n if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode\n if (npt.setSelectionRange) {\n npt.selectionStart = begin;\n npt.selectionEnd = end;\n\n } else if (npt.createTextRange) {\n range = npt.createTextRange();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n } else {\n if (!$(input).is(':visible')) {\n return { \"begin\": 0, \"end\": 0 };\n }\n if (npt.setSelectionRange) {\n begin = npt.selectionStart;\n end = npt.selectionEnd;\n } else if (document.selection && document.selection.createRange) {\n range = document.selection.createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n begin = TranslatePosition(begin);\n end = TranslatePosition(end);\n return { \"begin\": begin, \"end\": end };\n }\n }\n\n function isComplete(buffer) { //return true / false / undefined (repeat *)\n\t\tif($.isFunction(opts.isComplete)) return opts.isComplete.call($el, buffer, opts);\n if (opts.repeat == \"*\") return undefined;\n var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;\n $.each(masksets, function (ndx, ms) {\n if (typeof (ms) == \"object\") {\n activeMasksetIndex = ndx;\n var aml = seekPrevious(getMaskLength());\n if (ms[\"lastValidPosition\"] >= highestValidPosition && ms[\"lastValidPosition\"] == aml) {\n var msComplete = true;\n for (var i = 0; i <= aml; i++) {\n var mask = isMask(i), testPos = determineTestPosition(i);\n if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) {\n msComplete = false;\n break;\n }\n }\n complete = complete || msComplete;\n if (complete) //break loop\n return false;\n }\n highestValidPosition = ms[\"lastValidPosition\"];\n }\n });\n activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset\n return complete;\n }\n\n function isSelection(begin, end) {\n return isRTL ? (begin - end) > 1 || ((begin - end) == 1 && opts.insertMode) :\n (end - begin) > 1 || ((end - begin) == 1 && opts.insertMode);\n }\n\n\n //private functions\n function installEventRuler(npt) {\n var events = $._data(npt).events;\n\n $.each(events, function (eventType, eventHandlers) {\n $.each(eventHandlers, function (ndx, eventHandler) {\n if (eventHandler.namespace == \"inputmask\") {\n if (eventHandler.type != \"setvalue\") {\n var handler = eventHandler.handler;\n eventHandler.handler = function (e) {\n if (this.readOnly || this.disabled)\n e.preventDefault;\n else\n return handler.apply(this, arguments);\n };\n }\n }\n });\n });\n }\n\n function patchValueProperty(npt) {\n function PatchValhook(type) {\n if ($.valHooks[type] == undefined || $.valHooks[type].inputmaskpatch != true) {\n var valueGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function (elem) { return elem.value; };\n var valueSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function (elem, value) {\n elem.value = value;\n return elem;\n };\n\n $.valHooks[type] = {\n get: function (elem) {\n var $elem = $(elem);\n if ($elem.data('_inputmask')) {\n if ($elem.data('_inputmask')['opts'].autoUnmask)\n return $elem.inputmask('unmaskedvalue');\n else {\n var result = valueGet(elem),\n inputData = $elem.data('_inputmask'), masksets = inputData['masksets'],\n activeMasksetIndex = inputData['activeMasksetIndex'];\n return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';\n }\n } else return valueGet(elem);\n },\n set: function (elem, value) {\n var $elem = $(elem);\n var result = valueSet(elem, value);\n if ($elem.data('_inputmask')) $elem.triggerHandler('setvalue.inputmask');\n return result;\n },\n inputmaskpatch: true\n };\n }\n }\n var valueProperty;\n if (Object.getOwnPropertyDescriptor)\n valueProperty = Object.getOwnPropertyDescriptor(npt, \"value\");\n if (valueProperty && valueProperty.get) {\n if (!npt._valueGet) {\n var valueGet = valueProperty.get;\n var valueSet = valueProperty.set;\n npt._valueGet = function () {\n return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this);\n };\n npt._valueSet = function (value) {\n valueSet.call(this, isRTL ? value.split('').reverse().join('') : value);\n };\n\n Object.defineProperty(npt, \"value\", {\n get: function () {\n var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'],\n activeMasksetIndex = inputData['activeMasksetIndex'];\n return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : '';\n },\n set: function (value) {\n valueSet.call(this, value);\n $(this).triggerHandler('setvalue.inputmask');\n }\n });\n }\n } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n if (!npt._valueGet) {\n var valueGet = npt.__lookupGetter__(\"value\");\n var valueSet = npt.__lookupSetter__(\"value\");\n npt._valueGet = function () {\n return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this);\n };\n npt._valueSet = function (value) {\n valueSet.call(this, isRTL ? value.split('').reverse().join('') : value);\n };\n\n npt.__defineGetter__(\"value\", function () {\n var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'],\n activeMasksetIndex = inputData['activeMasksetIndex'];\n return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : '';\n });\n npt.__defineSetter__(\"value\", function (value) {\n valueSet.call(this, value);\n $(this).triggerHandler('setvalue.inputmask');\n });\n }\n } else {\n if (!npt._valueGet) {\n npt._valueGet = function () { return isRTL ? this.value.split('').reverse().join('') : this.value; };\n npt._valueSet = function (value) { this.value = isRTL ? value.split('').reverse().join('') : value; };\n }\n PatchValhook(npt.type);\n }\n }\n\n //shift chars to left from start to end and put c at end position if defined\n function shiftL(start, end, c, maskJumps) {\n var buffer = getActiveBuffer();\n if (maskJumps !== false) //jumping over nonmask position\n while (!isMask(start) && start - 1 >= 0) start--;\n for (var i = start; i < end && i < getMaskLength() ; i++) {\n if (isMask(i)) {\n setReTargetPlaceHolder(buffer, i);\n var j = seekNext(i);\n var p = getBufferElement(buffer, j);\n if (p != getPlaceHolder(j)) {\n if (j < getMaskLength() && isValid(i, p, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n setBufferElement(buffer, i, p, true);\n } else {\n if (isMask(i))\n break;\n }\n }\n } else {\n setReTargetPlaceHolder(buffer, i);\n }\n }\n if (c != undefined)\n setBufferElement(buffer, seekPrevious(end), c);\n\n if (getActiveMaskSet()[\"greedy\"] == false) {\n var trbuffer = truncateInput(buffer.join('')).split('');\n buffer.length = trbuffer.length;\n for (var i = 0, bl = buffer.length; i < bl; i++) {\n buffer[i] = trbuffer[i];\n }\n if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n }\n return start; //return the used start position\n }\n\n function shiftR(start, end, c) {\n var buffer = getActiveBuffer();\n if (getBufferElement(buffer, start, true) != getPlaceHolder(start)) {\n for (var i = seekPrevious(end) ; i > start && i >= 0; i--) {\n if (isMask(i)) {\n var j = seekPrevious(i);\n var t = getBufferElement(buffer, j);\n if (t != getPlaceHolder(j)) {\n if (isValid(i, t, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n setBufferElement(buffer, i, t, true);\n setReTargetPlaceHolder(buffer, j);\n } //else break;\n }\n } else\n setReTargetPlaceHolder(buffer, i);\n }\n }\n if (c != undefined && getBufferElement(buffer, start) == getPlaceHolder(start))\n setBufferElement(buffer, start, c);\n var lengthBefore = buffer.length;\n if (getActiveMaskSet()[\"greedy\"] == false) {\n var trbuffer = truncateInput(buffer.join('')).split('');\n buffer.length = trbuffer.length;\n for (var i = 0, bl = buffer.length; i < bl; i++) {\n buffer[i] = trbuffer[i];\n }\n if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n }\n return end - (lengthBefore - buffer.length); //return new start position\n }\n\n ;\n\n\n function HandleRemove(input, k, pos) {\n if (opts.numericInput || isRTL) {\n switch (k) {\n case opts.keyCode.BACKSPACE:\n k = opts.keyCode.DELETE;\n break;\n case opts.keyCode.DELETE:\n k = opts.keyCode.BACKSPACE;\n break;\n }\n if (isRTL) {\n var pend = pos.end;\n pos.end = pos.begin;\n pos.begin = pend;\n }\n }\n\n var isSelection = true;\n if (pos.begin == pos.end) {\n var posBegin = k == opts.keyCode.BACKSPACE ? pos.begin - 1 : pos.begin;\n if (opts.isNumeric && opts.radixPoint != \"\" && getActiveBuffer()[posBegin] == opts.radixPoint) {\n pos.begin = (getActiveBuffer().length - 1 == posBegin) /* radixPoint is latest? delete it */ ? pos.begin : k == opts.keyCode.BACKSPACE ? posBegin : seekNext(posBegin);\n pos.end = pos.begin;\n }\n isSelection = false;\n if (k == opts.keyCode.BACKSPACE)\n pos.begin--;\n else if (k == opts.keyCode.DELETE)\n pos.end++;\n } else if (pos.end - pos.begin == 1 && !opts.insertMode) {\n isSelection = false;\n if (k == opts.keyCode.BACKSPACE)\n pos.begin--;\n }\n\n clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n\n var ml = getMaskLength();\n if (opts.greedy == false && (isNaN(opts.repeat) || opts.repeat > 0)) {\n shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection));\n } else {\n var newpos = pos.begin;\n for (var i = pos.begin; i < pos.end; i++) { //seeknext to skip placeholders at start in selection\n if (isMask(i) || !isSelection)\n newpos = shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection));\n }\n if (!isSelection) pos.begin = newpos;\n }\n var firstMaskPos = seekNext(-1);\n clearBuffer(getActiveBuffer(), pos.begin, pos.end, true);\n checkVal(input, false, false, getActiveBuffer());\n if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n getActiveMaskSet()[\"lastValidPosition\"] = -1;\n getActiveMaskSet()[\"p\"] = firstMaskPos;\n } else {\n getActiveMaskSet()[\"p\"] = pos.begin;\n }\n }\n\n function keydownEvent(e) {\n //Safari 5.1.x - modal dialog fires keypress twice workaround\n skipKeyPressEvent = false;\n var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n\n //backspace, delete, and escape get special treatment\n if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete\n e.preventDefault(); //stop default action but allow propagation\n if (k == 88) valueOnFocus = getActiveBuffer().join('');\n HandleRemove(input, k, pos);\n determineActiveMasksetIndex();\n writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n if (input._valueGet() == getActiveBufferTemplate().join(''))\n $input.trigger('cleared');\n\n if (opts.showTooltip) { //update tooltip\n $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n }\n } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch\n setTimeout(function () {\n var caretPos = seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;\n caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);\n }, 0);\n } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up\n caret(input, 0, e.shiftKey ? pos.begin : 0);\n } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo\n checkVal(input, true, false, valueOnFocus.split(''));\n $input.click();\n } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert\n opts.insertMode = !opts.insertMode;\n caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);\n } else if (opts.insertMode == false && !e.shiftKey) {\n if (k == opts.keyCode.RIGHT) {\n setTimeout(function () {\n var caretPos = caret(input);\n caret(input, caretPos.begin);\n }, 0);\n } else if (k == opts.keyCode.LEFT) {\n setTimeout(function () {\n var caretPos = caret(input);\n caret(input, caretPos.begin - 1);\n }, 0);\n }\n }\n\n var currentCaretPos = caret(input);\n if (opts.onKeyDown.call(this, e, getActiveBuffer(), opts) === true) //extra stuff to execute on keydown\n caret(input, currentCaretPos.begin, currentCaretPos.end);\n ignorable = $.inArray(k, opts.ignorables) != -1;\n }\n\n\n function keypressEvent(e, checkval, k, writeOut, strict, ndx) {\n //Safari 5.1.x - modal dialog fires keypress twice workaround\n if (k == undefined && skipKeyPressEvent) return false;\n skipKeyPressEvent = true;\n\n var input = this, $input = $(input);\n\n e = e || window.event;\n var k = checkval ? k : (e.which || e.charCode || e.keyCode);\n\n if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) {\n return true;\n } else {\n if (k) {\n //special treat the decimal separator\n if (checkval !== true && k == 46 && e.shiftKey == false && opts.radixPoint == \",\") k = 44;\n\n var pos, results, result, c = String.fromCharCode(k);\n if (checkval) {\n var pcaret = strict ? ndx : getActiveMaskSet()[\"lastValidPosition\"] + 1;\n pos = { begin: pcaret, end: pcaret };\n } else {\n pos = caret(input);\n }\n\n //should we clear a possible selection??\n var isSlctn = isSelection(pos.begin, pos.end),\n initialIndex = activeMasksetIndex;\n if (isSlctn) {\n $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid\n if (typeof (lmnt) == \"object\") {\n activeMasksetIndex = ndx;\n getActiveMaskSet()[\"undoBuffer\"] = getActiveBuffer().join('');\n }\n });\n activeMasksetIndex = initialIndex; //restore index\n HandleRemove(input, opts.keyCode.DELETE, pos);\n if (!opts.insertMode) { //preserve some space\n $.each(masksets, function (ndx, lmnt) {\n if (typeof (lmnt) == \"object\") {\n activeMasksetIndex = ndx;\n shiftR(pos.begin, getMaskLength());\n getActiveMaskSet()[\"lastValidPosition\"] = seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n }\n });\n }\n activeMasksetIndex = initialIndex; //restore index\n }\n\n var radixPosition = getActiveBuffer().join('').indexOf(opts.radixPoint);\n if (opts.isNumeric && checkval !== true && radixPosition != -1) {\n if (opts.greedy && pos.begin <= radixPosition) {\n pos.begin = seekPrevious(pos.begin);\n pos.end = pos.begin;\n } else if (c == opts.radixPoint) {\n pos.begin = radixPosition;\n pos.end = pos.begin;\n }\n }\n\n\n var p = pos.begin;\n results = isValid(p, c, strict);\n if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n var minimalForwardPosition = -1;\n $.each(results, function (index, result) {\n activeMasksetIndex = result[\"activeMasksetIndex\"];\n getActiveMaskSet()[\"writeOutBuffer\"] = true;\n var np = result[\"result\"];\n if (np !== false) {\n var refresh = false, buffer = getActiveBuffer();\n if (np !== true) {\n refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n p = np.pos != undefined ? np.pos : p; //set new position from isValid\n c = np.c != undefined ? np.c : c; //set new char from isValid\n }\n if (refresh !== true) {\n if (opts.insertMode == true) {\n var lastUnmaskedPosition = getMaskLength();\n var bfrClone = buffer.slice();\n while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) {\n lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition);\n }\n if (lastUnmaskedPosition >= p) {\n shiftR(p, getMaskLength(), c);\n //shift the lvp if needed\n var lvp = getActiveMaskSet()[\"lastValidPosition\"], nlvp = seekNext(lvp);\n if (nlvp != getMaskLength() && lvp >= p && (getBufferElement(getActiveBuffer().slice(), nlvp, true) != getPlaceHolder(nlvp))) {\n getActiveMaskSet()[\"lastValidPosition\"] = nlvp;\n }\n } else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n } else setBufferElement(buffer, p, c, true);\n if (minimalForwardPosition == -1 || minimalForwardPosition > seekNext(p)) {\n minimalForwardPosition = seekNext(p);\n }\n } else if (!strict) {\n var nextPos = p < getMaskLength() ? p + 1 : p;\n if (minimalForwardPosition == -1 || minimalForwardPosition > nextPos) {\n minimalForwardPosition = nextPos;\n }\n }\n if (minimalForwardPosition > getActiveMaskSet()[\"p\"])\n getActiveMaskSet()[\"p\"] = minimalForwardPosition; //needed for checkval strict \n }\n });\n\n if (strict !== true) {\n activeMasksetIndex = initialIndex;\n determineActiveMasksetIndex();\n }\n if (writeOut !== false) {\n $.each(results, function (ndx, rslt) {\n if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n result = rslt;\n return false;\n }\n });\n if (result != undefined) {\n var self = this;\n setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n var buffer = getActiveBuffer();\n\n var newCaretPosition;\n if (checkval) {\n newCaretPosition = undefined;\n } else if (opts.numericInput) {\n if (p > radixPosition) {\n newCaretPosition = seekPrevious(minimalForwardPosition);\n } else if (c == opts.radixPoint) {\n newCaretPosition = minimalForwardPosition - 1;\n } else newCaretPosition = seekPrevious(minimalForwardPosition - 1);\n } else {\n newCaretPosition = minimalForwardPosition;\n }\n\n writeBuffer(input, buffer, newCaretPosition);\n if (checkval !== true) {\n setTimeout(function () { //timeout needed for IE\n if (isComplete(buffer) === true)\n $input.trigger(\"complete\");\n skipInputEvent = true;\n $input.trigger(\"input\");\n }, 0);\n }\n } else if (isSlctn) {\n getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n }\n } else if (isSlctn) {\n getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n }\n }\n\n if (opts.showTooltip) { //update tooltip\n $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n }\n\n //needed for IE8 and below\n if (e) e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n }\n }\n\n function keyupEvent(e) {\n var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();\n\n opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup\n if (k == opts.keyCode.TAB && opts.showMaskOnFocus) {\n if ($input.hasClass('focus.inputmask') && input._valueGet().length == 0) {\n buffer = getActiveBufferTemplate().slice();\n writeBuffer(input, buffer);\n caret(input, 0);\n valueOnFocus = getActiveBuffer().join('');\n } else {\n writeBuffer(input, buffer);\n if (buffer.join('') == getActiveBufferTemplate().join('') && $.inArray(opts.radixPoint, buffer) != -1) {\n caret(input, TranslatePosition(0));\n $input.click();\n } else\n caret(input, TranslatePosition(0), TranslatePosition(getMaskLength()));\n }\n }\n }\n\n function pasteEvent(e) {\n if (skipInputEvent === true && e.type == \"input\") {\n skipInputEvent = false;\n return true;\n }\n\n var input = this, $input = $(input);\n //paste event for IE8 and lower I guess ;-)\n if (e.type == \"propertychange\" && input._valueGet().length <= getMaskLength()) {\n return true;\n }\n setTimeout(function () {\n var pasteValue = $.isFunction(opts.onBeforePaste) ? opts.onBeforePaste.call(input, input._valueGet(), opts) : input._valueGet();\n checkVal(input, false, false, pasteValue.split(''), true);\n writeBuffer(input, getActiveBuffer());\n if (isComplete(getActiveBuffer()) === true)\n $input.trigger(\"complete\");\n $input.click();\n }, 0);\n }\n\n //not used - attempt to support android \n function mobileInputEvent(e) {\n var input = this, $input = $(input);\n\n //backspace in chrome32 only fires input event - detect & treat\n var caretPos = caret(input),\n currentValue = input._valueGet();\n\n currentValue = currentValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*\"), \"\");\n //correct caretposition for chrome\n if (caretPos.begin > currentValue.length) {\n caret(input, currentValue.length);\n caretPos = caret(input);\n }\n if ((getActiveBuffer().length - currentValue.length) == 1 && currentValue.charAt(caretPos.begin) != getActiveBuffer()[caretPos.begin]\n && currentValue.charAt(caretPos.begin + 1) != getActiveBuffer()[caretPos.begin]\n && !isMask(caretPos.begin)) {\n e.keyCode = opts.keyCode.BACKSPACE;\n keydownEvent.call(input, e);\n } else { //nonnumerics don't fire keypress \n checkVal(input, false, false, currentValue.split(''));\n writeBuffer(input, getActiveBuffer());\n if (isComplete(getActiveBuffer()) === true)\n $input.trigger(\"complete\");\n $input.click();\n }\n e.preventDefault();\n }\n\n function mask(el) {\n $el = $(el);\n if ($el.is(\":input\")) {\n //store tests & original buffer in the input element - used to get the unmasked value\n $el.data('_inputmask', {\n 'masksets': masksets,\n 'activeMasksetIndex': activeMasksetIndex,\n 'opts': opts,\n 'isRTL': false\n });\n\n //show tooltip\n if (opts.showTooltip) {\n $el.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n }\n\n //correct greedy setting if needed\n getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0;\n\n //handle maxlength attribute\n if ($el.attr(\"maxLength\") != null) //only when the attribute is set\n {\n var maxLength = $el.prop('maxLength');\n if (maxLength > -1) { //handle *-repeat\n $.each(masksets, function (ndx, ms) {\n if (typeof (ms) == \"object\") {\n if (ms[\"repeat\"] == \"*\") {\n ms[\"repeat\"] = maxLength;\n }\n }\n });\n }\n if (getMaskLength() >= maxLength && maxLength > -1) { //FF sets no defined max length to -1 \n if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength;\n if (getActiveMaskSet()['greedy'] == false) {\n getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length);\n }\n $el.prop('maxLength', getMaskLength() * 2);\n }\n }\n\n patchValueProperty(el);\n\n if (opts.numericInput) opts.isNumeric = opts.numericInput;\n if (el.dir == \"rtl\" || (opts.numericInput && opts.rightAlignNumerics) || (opts.isNumeric && opts.rightAlignNumerics))\n $el.css(\"text-align\", \"right\");\n\n if (el.dir == \"rtl\" || opts.numericInput) {\n el.dir = \"ltr\";\n $el.removeAttr(\"dir\");\n var inputData = $el.data('_inputmask');\n inputData['isRTL'] = true;\n $el.data('_inputmask', inputData);\n isRTL = true;\n }\n\n //unbind all events - to make sure that no other mask will interfere when re-masking\n $el.unbind(\".inputmask\");\n $el.removeClass('focus.inputmask');\n //bind events\n $el.closest('form').bind(\"submit\", function () { //trigger change on submit if any\n if (valueOnFocus != getActiveBuffer().join('')) {\n $el.change();\n }\n }).bind('reset', function () {\n setTimeout(function () {\n $el.trigger(\"setvalue\");\n }, 0);\n });\n $el.bind(\"mouseenter.inputmask\", function () {\n var $input = $(this), input = this;\n if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) {\n if (input._valueGet() != getActiveBuffer().join('')) {\n writeBuffer(input, getActiveBuffer());\n }\n }\n }).bind(\"blur.inputmask\", function () {\n var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer();\n $input.removeClass('focus.inputmask');\n if (valueOnFocus != getActiveBuffer().join('')) {\n $input.change();\n }\n if (opts.clearMaskOnLostFocus && nptValue != '') {\n if (nptValue == getActiveBufferTemplate().join(''))\n input._valueSet('');\n else { //clearout optional tail of the mask\n clearOptionalTail(input);\n }\n }\n if (isComplete(buffer) === false) {\n $input.trigger(\"incomplete\");\n if (opts.clearIncomplete) {\n $.each(masksets, function (ndx, ms) {\n if (typeof (ms) == \"object\") {\n ms[\"buffer\"] = ms[\"_buffer\"].slice();\n ms[\"lastValidPosition\"] = -1;\n }\n });\n activeMasksetIndex = 0;\n if (opts.clearMaskOnLostFocus)\n input._valueSet('');\n else {\n buffer = getActiveBufferTemplate().slice();\n writeBuffer(input, buffer);\n }\n }\n }\n }).bind(\"focus.inputmask\", function () {\n var $input = $(this), input = this, nptValue = input._valueGet();\n if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {\n if (input._valueGet() != getActiveBuffer().join('')) {\n writeBuffer(input, getActiveBuffer(), seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n }\n }\n $input.addClass('focus.inputmask');\n valueOnFocus = getActiveBuffer().join('');\n }).bind(\"mouseleave.inputmask\", function () {\n var $input = $(this), input = this;\n if (opts.clearMaskOnLostFocus) {\n if (!$input.hasClass('focus.inputmask') && input._valueGet() != $input.attr(\"placeholder\")) {\n if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '')\n input._valueSet('');\n else { //clearout optional tail of the mask\n clearOptionalTail(input);\n }\n }\n }\n }).bind(\"click.inputmask\", function () {\n var input = this;\n setTimeout(function () {\n var selectedCaret = caret(input), buffer = getActiveBuffer();\n if (selectedCaret.begin == selectedCaret.end) {\n var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin,\n lvp = getActiveMaskSet()[\"lastValidPosition\"],\n lastPosition;\n if (opts.isNumeric) {\n lastPosition = opts.skipRadixDance === false && opts.radixPoint != \"\" && $.inArray(opts.radixPoint, buffer) != -1 ?\n (opts.numericInput ? seekNext($.inArray(opts.radixPoint, buffer)) : $.inArray(opts.radixPoint, buffer)) :\n seekNext(lvp);\n } else {\n lastPosition = seekNext(lvp);\n }\n if (clickPosition < lastPosition) {\n if (isMask(clickPosition))\n caret(input, clickPosition);\n else caret(input, seekNext(clickPosition));\n } else\n caret(input, lastPosition);\n }\n }, 0);\n }).bind('dblclick.inputmask', function () {\n var input = this;\n setTimeout(function () {\n caret(input, 0, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n }, 0);\n }).bind(PasteEventType + \".inputmask dragdrop.inputmask drop.inputmask\", pasteEvent\n ).bind('setvalue.inputmask', function () {\n var input = this;\n checkVal(input, true);\n valueOnFocus = getActiveBuffer().join('');\n if (input._valueGet() == getActiveBufferTemplate().join(''))\n input._valueSet('');\n }).bind('complete.inputmask', opts.oncomplete\n ).bind('incomplete.inputmask', opts.onincomplete\n ).bind('cleared.inputmask', opts.oncleared);\n\n $el.bind(\"keydown.inputmask\", keydownEvent\n ).bind(\"keypress.inputmask\", keypressEvent\n ).bind(\"keyup.inputmask\", keyupEvent);\n\n // as the other inputevents aren't reliable for the moment we only base on the input event\n // needs follow-up\n if (android || androidfirefox || androidchrome || kindle) {\n $el.attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", false);\n\n if (androidfirefox || kindle) {\n $el.unbind(\"keydown.inputmask\", keydownEvent\n ).unbind(\"keypress.inputmask\", keypressEvent\n ).unbind(\"keyup.inputmask\", keyupEvent);\n if (PasteEventType == \"input\") {\n $el.unbind(PasteEventType + \".inputmask\");\n }\n $el.bind(\"input.inputmask\", mobileInputEvent);\n }\n }\n\n if (msie1x)\n $el.bind(\"input.inputmask\", pasteEvent);\n\n //apply mask\n var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, el._valueGet(), opts) : el._valueGet();\n checkVal(el, true, false, initialValue.split(''));\n valueOnFocus = getActiveBuffer().join('');\n // Wrap document.activeElement in a try/catch block since IE9 throw \"Unspecified error\" if document.activeElement is undefined when we are in an IFrame.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch (e) {\n }\n if (activeElement === el) { //position the caret when in focus\n $el.addClass('focus.inputmask');\n caret(el, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n } else if (opts.clearMaskOnLostFocus) {\n if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) {\n el._valueSet('');\n } else {\n clearOptionalTail(el);\n }\n } else {\n writeBuffer(el, getActiveBuffer());\n }\n\n installEventRuler(el);\n }\n }\n\n //action object\n if (actionObj != undefined) {\n switch (actionObj[\"action\"]) {\n case \"isComplete\":\n return isComplete(actionObj[\"buffer\"]);\n case \"unmaskedvalue\":\n isRTL = actionObj[\"$input\"].data('_inputmask')['isRTL'];\n return unmaskedvalue(actionObj[\"$input\"], actionObj[\"skipDatepickerCheck\"]);\n case \"mask\":\n mask(actionObj[\"el\"]);\n break;\n case \"format\":\n $el = $({});\n $el.data('_inputmask', {\n 'masksets': masksets,\n 'activeMasksetIndex': activeMasksetIndex,\n 'opts': opts,\n 'isRTL': opts.numericInput\n });\n if (opts.numericInput) {\n opts.isNumeric = opts.numericInput;\n isRTL = true;\n }\n\n \tvar valueBuffer = actionObj[\"value\"].split('');\n checkVal($el, false, false, isRTL ? valueBuffer.reverse() : valueBuffer, true);\n return isRTL ? getActiveBuffer().reverse().join('') : getActiveBuffer().join('');\n case \"isValid\":\n $el = $({});\n $el.data('_inputmask', {\n 'masksets': masksets,\n 'activeMasksetIndex': activeMasksetIndex,\n 'opts': opts,\n 'isRTL': opts.numericInput\n });\n if (opts.numericInput) {\n opts.isNumeric = opts.numericInput;\n isRTL = true;\n }\n\n\t\t\t\t\t\tvar valueBuffer = actionObj[\"value\"].split('');\n checkVal($el, false, true, isRTL ? valueBuffer.reverse() : valueBuffer);\n return isComplete(getActiveBuffer());\n }\n }\n };\n\n $.inputmask = {\n //options default\n defaults: {\n placeholder: \"_\",\n optionalmarker: { start: \"[\", end: \"]\" },\n quantifiermarker: { start: \"{\", end: \"}\" },\n groupmarker: { start: \"(\", end: \")\" },\n escapeChar: \"\\\\\",\n mask: null,\n oncomplete: $.noop, //executes when the mask is complete\n onincomplete: $.noop, //executes when the mask is incomplete and focus is lost\n oncleared: $.noop, //executes when the mask is cleared\n repeat: 0, //repetitions of the mask: * ~ forever, otherwise specify an integer\n greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed\n autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\n clearMaskOnLostFocus: true,\n insertMode: true, //insert the input or overwrite the input\n clearIncomplete: false, //clear the incomplete input on blur\n aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js\n onKeyUp: $.noop, //override to implement autocomplete on certain keys for example\n onKeyDown: $.noop, //override to implement autocomplete on certain keys for example\n onBeforeMask: undefined, //executes before masking the initial value to allow preprocessing of the initial value. args => initialValue, opts => return processedValue\n onBeforePaste: undefined, //executes before masking the pasted value to allow preprocessing of the pasted value. args => pastedValue, opts => return processedValue\n onUnMask: undefined, //executes after unmasking to allow postprocessing of the unmaskedvalue. args => maskedValue, unmaskedValue, opts\n showMaskOnFocus: true, //show the mask-placeholder when the input has focus\n showMaskOnHover: true, //show the mask-placeholder when hovering the empty input\n onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts\n skipOptionalPartCharacter: \" \", //a character which can be used to skip an optional part of a mask\n showTooltip: false, //show the activemask as tooltip\n numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)\n //numeric basic properties\n isNumeric: false, //enable numeric features\n radixPoint: \"\", //\".\", // | \",\"\n skipRadixDance: false, //disable radixpoint caret positioning\n rightAlignNumerics: true, //align numerics to the right\n //numeric basic properties\n definitions: {\n '9': {\n validator: \"[0-9]\",\n cardinality: 1,\n definitionSymbol: \"*\"\n },\n 'a': {\n validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451]\",\n cardinality: 1,\n definitionSymbol: \"*\"\n },\n '*': {\n validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n cardinality: 1\n }\n },\n keyCode: {\n ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,\n NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91\n },\n //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF\n 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],\n getMaskLength: undefined, //override for getMaskLength - args => buffer, greedy, repeat, currentBuffer, opts - return length\n\t\tisComplete: undefined //override for isComplete - args => buffer, opts - return true || false\n },\n escapeRegex: function (str) {\n var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n return str.replace(new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim'), '\\\\$1');\n },\n format: function (value, options) {\n var opts = $.extend(true, {}, $.inputmask.defaults, options);\n resolveAlias(opts.alias, options, opts);\n return maskScope(generateMaskSets(opts), 0, opts, { \"action\": \"format\", \"value\": value });\n },\n isValid: function (value, options) {\n var opts = $.extend(true, {}, $.inputmask.defaults, options);\n resolveAlias(opts.alias, options, opts);\n return maskScope(generateMaskSets(opts), 0, opts, { \"action\": \"isValid\", \"value\": value });\n }\n };\n\n $.fn.inputmask = function (fn, options) {\n var opts = $.extend(true, {}, $.inputmask.defaults, options),\n masksets,\n activeMasksetIndex = 0;\n\n if (typeof fn === \"string\") {\n switch (fn) {\n case \"mask\":\n //resolve possible aliases given by options\n resolveAlias(opts.alias, options, opts);\n masksets = generateMaskSets(opts);\n if (masksets.length == 0) { return this; }\n\n return this.each(function () {\n maskScope($.extend(true, {}, masksets), 0, opts, { \"action\": \"mask\", \"el\": this });\n });\n case \"unmaskedvalue\":\n var $input = $(this), input = this;\n if ($input.data('_inputmask')) {\n masksets = $input.data('_inputmask')['masksets'];\n activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex'];\n opts = $input.data('_inputmask')['opts'];\n return maskScope(masksets, activeMasksetIndex, opts, { \"action\": \"unmaskedvalue\", \"$input\": $input });\n } else return $input.val();\n case \"remove\":\n return this.each(function () {\n var $input = $(this), input = this;\n if ($input.data('_inputmask')) {\n masksets = $input.data('_inputmask')['masksets'];\n activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex'];\n opts = $input.data('_inputmask')['opts'];\n //writeout the unmaskedvalue\n input._valueSet(maskScope(masksets, activeMasksetIndex, opts, { \"action\": \"unmaskedvalue\", \"$input\": $input, \"skipDatepickerCheck\": true }));\n //clear data\n $input.removeData('_inputmask');\n //unbind all events\n $input.unbind(\".inputmask\");\n $input.removeClass('focus.inputmask');\n //restore the value property\n var valueProperty;\n if (Object.getOwnPropertyDescriptor)\n valueProperty = Object.getOwnPropertyDescriptor(input, \"value\");\n if (valueProperty && valueProperty.get) {\n if (input._valueGet) {\n Object.defineProperty(input, \"value\", {\n get: input._valueGet,\n set: input._valueSet\n });\n }\n } else if (document.__lookupGetter__ && input.__lookupGetter__(\"value\")) {\n if (input._valueGet) {\n input.__defineGetter__(\"value\", input._valueGet);\n input.__defineSetter__(\"value\", input._valueSet);\n }\n }\n try { //try catch needed for IE7 as it does not supports deleting fns\n delete input._valueGet;\n delete input._valueSet;\n } catch (e) {\n input._valueGet = undefined;\n input._valueSet = undefined;\n\n }\n }\n });\n break;\n case \"getemptymask\": //return the default (empty) mask value, usefull for setting the default value in validation\n if (this.data('_inputmask')) {\n masksets = this.data('_inputmask')['masksets'];\n activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex'];\n return masksets[activeMasksetIndex]['_buffer'].join('');\n }\n else return \"\";\n case \"hasMaskedValue\": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n return this.data('_inputmask') ? !this.data('_inputmask')['opts'].autoUnmask : false;\n case \"isComplete\":\n\t\t\t\t\t\tif (this.data('_inputmask')) {\n\t\t\t\t\t\t\tmasksets = this.data('_inputmask')['masksets'];\n\t\t\t\t\t\t\tactiveMasksetIndex = this.data('_inputmask')['activeMasksetIndex'];\n\t\t\t\t\t\t\topts = this.data('_inputmask')['opts'];\n\t\t\t\t\t\t\treturn maskScope(masksets, activeMasksetIndex, opts, { \"action\": \"isComplete\", \"buffer\": this[0]._valueGet().split('') });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse return true;\n case \"getmetadata\": //return mask metadata if exists\n if (this.data('_inputmask')) {\n masksets = this.data('_inputmask')['masksets'];\n activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex'];\n return masksets[activeMasksetIndex]['metadata'];\n }\n else return undefined;\n default:\n //check if the fn is an alias\n if (!resolveAlias(fn, options, opts)) {\n //maybe fn is a mask so we try\n //set mask\n opts.mask = fn;\n }\n masksets = generateMaskSets(opts);\n if (masksets.length == 0) { return this; }\n return this.each(function () {\n maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { \"action\": \"mask\", \"el\": this });\n });\n\n break;\n }\n } else if (typeof fn == \"object\") {\n opts = $.extend(true, {}, $.inputmask.defaults, fn);\n\n resolveAlias(opts.alias, fn, opts); //resolve aliases\n masksets = generateMaskSets(opts);\n if (masksets.length == 0) { return this; }\n return this.each(function () {\n maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { \"action\": \"mask\", \"el\": this });\n });\n } else if (fn == undefined) {\n //look for data-inputmask atribute - the attribute should only contain optipns\n return this.each(function () {\n var attrOptions = $(this).attr(\"data-inputmask\");\n if (attrOptions && attrOptions != \"\") {\n try {\n attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"');\n var dataoptions = $.parseJSON(\"{\" + attrOptions + \"}\");\n $.extend(true, dataoptions, options);\n opts = $.extend(true, {}, $.inputmask.defaults, dataoptions);\n resolveAlias(opts.alias, dataoptions, opts);\n opts.alias = undefined;\n $(this).inputmask(opts);\n } catch (ex) { } //need a more relax parseJSON\n }\n });\n }\n };\n }\n})(jQuery);\n"]}