!function(factory,jQuery,Zepto){"function"==typeof define&&define.amd?define(["jquery"],factory):"object"==typeof exports?module.exports=factory(require("jquery")):factory(jQuery||Zepto)}(function($){"use strict";var Mask=function(el,mask,options){var p={invalid:[],getCaret:function(){try{var sel,pos=0,ctrl=el.get(0),dSel=document.selection,cSelStart=ctrl.selectionStart;return dSel&&-1===navigator.appVersion.indexOf("MSIE 10")?((sel=dSel.createRange()).moveStart("character",-p.val().length),pos=sel.text.length):(cSelStart||"0"===cSelStart)&&(pos=cSelStart),pos}catch(e){}},setCaret:function(pos){try{if(el.is(":focus")){var range,ctrl=el.get(0);ctrl.setSelectionRange?ctrl.setSelectionRange(pos,pos):((range=ctrl.createTextRange()).collapse(!0),range.moveEnd("character",pos),range.moveStart("character",pos),range.select())}}catch(e){}},events:function(){el.on("keydown.mask",function(e){el.data("mask-keycode",e.keyCode||e.which),el.data("mask-previus-value",el.val()),el.data("mask-previus-caret-pos",p.getCaret()),p.maskDigitPosMapOld=p.maskDigitPosMap}).on($.jMaskGlobals.useInput?"input.mask":"keyup.mask",p.behaviour).on("paste.mask drop.mask",function(){setTimeout(function(){el.keydown().keyup()},100)}).on("change.mask",function(){el.data("changed",!0)}).on("blur.mask",function(){oldValue===p.val()||el.data("changed")||el.trigger("change"),el.data("changed",!1)}).on("blur.mask",function(){oldValue=p.val()}).on("focus.mask",function(e){!0===options.selectOnFocus&&$(e.target).select()}).on("focusout.mask",function(){options.clearIfNotMatch&&!regexMask.test(p.val())&&p.val("")})},getRegexMask:function(){for(var maskChunks=[],translation,pattern,optional,recursive,oRecursive,r,i=0;i0?(el[method]()!==v&&el[method](v),r=el):r=el[method](),r},calculateCaretPosition:function(){var oldVal=el.data("mask-previus-value")||"",newVal=p.getMasked(),caretPosNew=p.getCaret();if(oldVal!==newVal){var caretPosOld=el.data("mask-previus-caret-pos")||0,newValL=newVal.length,oldValL=oldVal.length,maskDigitsBeforeCaret=0,maskDigitsAfterCaret=0,maskDigitsBeforeCaretAll=0,maskDigitsBeforeCaretAllOld=0,i=0;for(i=caretPosNew;i=0&&p.maskDigitPosMap[i];i--)maskDigitsBeforeCaret++;for(i=caretPosNew-1;i>=0;i--)p.maskDigitPosMap[i]&&maskDigitsBeforeCaretAll++;for(i=caretPosOld-1;i>=0;i--)p.maskDigitPosMapOld[i]&&maskDigitsBeforeCaretAllOld++;if(caretPosNew>oldValL)caretPosNew=10*newValL;else if(caretPosOld>=caretPosNew&&caretPosOld!==oldValL){if(!p.maskDigitPosMapOld[caretPosNew]){var caretPos=caretPosNew;caretPosNew-=maskDigitsBeforeCaretAllOld-maskDigitsBeforeCaretAll,caretPosNew-=maskDigitsBeforeCaret,p.maskDigitPosMap[caretPosNew]&&(caretPosNew=caretPos)}}else caretPosNew>caretPosOld&&(caretPosNew+=maskDigitsBeforeCaretAll-maskDigitsBeforeCaretAllOld,caretPosNew+=maskDigitsAfterCaret)}return caretPosNew},behaviour:function(e){e=e||window.event,p.invalid=[];var keyCode=el.data("mask-keycode");if(-1===$.inArray(keyCode,jMask.byPassKeys)){var newVal=p.getMasked(),caretPos=p.getCaret();return setTimeout(function(){p.setCaret(p.calculateCaretPosition())},$.jMaskGlobals.keyStrokeCompensation),p.val(newVal),p.setCaret(caretPos),p.callbacks(e)}},getMasked:function(skipMaskChars,val){var buf=[],value=void 0===val?p.val():val+"",m=0,maskLen=mask.length,v=0,valLen=value.length,offset=1,addMethod="push",resetPos=-1,maskDigitCount=0,maskDigitPosArr=[],lastMaskChar,check,lastUntranslatedMaskChar;for(options.reverse?(addMethod="unshift",offset=-1,lastMaskChar=0,m=maskLen-1,v=valLen-1,check=function(){return m>-1&&v>-1}):(lastMaskChar=maskLen-1,check=function(){return m0,[val,e,el,p.invalid,options])}};el=$(el);var jMask=this,oldValue=p.val(),regexMask;mask="function"==typeof mask?mask(p.val(),void 0,el,options):mask,jMask.mask=mask,jMask.options=options,jMask.remove=function(){var caret=p.getCaret();return jMask.options.placeholder&&el.removeAttr("placeholder"),el.data("mask-maxlength")&&el.removeAttr("maxlength"),p.destroyEvents(),p.val(jMask.getCleanVal()),p.setCaret(caret),el},jMask.getCleanVal=function(){return p.getMasked(!0)},jMask.getMaskedVal=function(val){return p.getMasked(!1,val)},jMask.init=function(onlyMask){if(onlyMask=onlyMask||!1,options=options||{},jMask.clearIfNotMatch=$.jMaskGlobals.clearIfNotMatch,jMask.byPassKeys=$.jMaskGlobals.byPassKeys,jMask.translation=$.extend({},$.jMaskGlobals.translation,options.translation),jMask=$.extend(!0,{},jMask,options),regexMask=p.getRegexMask(),onlyMask)p.events(),p.val(p.getMasked());else{options.placeholder&&el.attr("placeholder",options.placeholder),el.data("mask")&&el.attr("autocomplete","off");for(var i=0,maxlength=!0;i