function getPasteEvent(){var e=document.createElement("input");return e.setAttribute("onpaste",""),"function"==typeof e.onpaste?"paste":"input"}var pasteEventName=getPasteEvent()+".mask",ua=navigator.userAgent,iPhone=/iphone/i.test(ua),android=/android/i.test(ua),caretTimeoutId;$.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},dataName:"rawMaskFn",placeholder:"_"},$.fn.extend({caret:function(e,t){var n;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof e?(t="number"==typeof t?t:e,this.each(function(){this.setSelectionRange?this.setSelectionRange(e,t):this.createTextRange&&((n=this.createTextRange()).collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select())})):(this[0].setSelectionRange?(e=this[0].selectionStart,t=this[0].selectionEnd):document.selection&&document.selection.createRange&&(n=document.selection.createRange(),e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length),{begin:e,end:t})},unmask:function(){return this.trigger("unmask")},mask:function(e,t){var n,a,r,i,o;return!e&&this.length>0?$(this[0]).data($.mask.dataName)():(t=$.extend({placeholder:$.mask.placeholder,completed:null},t),n=$.mask.definitions,a=[],r=o=e.length,i=null,$.each(e.split(""),function(e,t){"?"==t?(o--,r=e):n[t]?(a.push(new RegExp(n[t])),null===i&&(i=a.length-1)):a.push(null)}),this.trigger("unmask").each(function(){function c(e){for(;++e<o&&!a[e];);return e}function l(e){for(;--e>=0&&!a[e];);return e}function s(e,n){var r,l;if(!(e<0)){for(r=e,l=c(n);r<o;r++)if(a[r]){if(!(l<o&&a[r].test(p[l])))break;p[r]=p[l],p[l]=t.placeholder,l=c(l)}f(),m.caret(Math.max(i,e))}}function u(e){var n,r,i,l;for(n=e,r=t.placeholder;n<o;n++)if(a[n]){if(i=c(n),l=p[n],p[n]=r,!(i<o&&a[i].test(l)))break;r=l}}function d(e,n){var r;for(r=e;r<n&&r<o;r++)a[r]&&(p[r]=t.placeholder)}function f(){m.val(p.join(""))}function h(e){var n,c,l=m.val(),s=-1;for(n=0,pos=0;n<o;n++)if(a[n]){for(p[n]=t.placeholder;pos++<l.length;)if(c=l.charAt(pos-1),a[n].test(c)){p[n]=c,s=n;break}if(pos>l.length)break}else p[n]===l.charAt(pos)&&n!==r&&(pos++,s=n);return e?f():s+1<r?(m.val(""),d(0,o)):(f(),m.val(m.val().substring(0,s+1))),r?n:i}var m=$(this),p=$.map(e.split(""),function(e,a){if("?"!=e)return n[e]?t.placeholder:e}),v=m.val();m.data($.mask.dataName,function(){return $.map(p,function(e,n){return a[n]&&e!=t.placeholder?e:null}).join("")}),m.attr("readonly")||m.one("unmask",function(){m.unbind(".mask").removeData($.mask.dataName)}).bind("focus.mask",function(){clearTimeout(caretTimeoutId);var t;v=m.val(),t=h(),caretTimeoutId=setTimeout(function(){f(),t==e.length?m.caret(0,t):m.caret(t)},10)}).bind("blur.mask",function(){h(),m.val()!=v&&m.change()}).bind("keydown.mask",function(e){var t,n,a,r=e.which;8===r||46===r||iPhone&&127===r?(n=(t=m.caret()).begin,(a=t.end)-n==0&&(n=46!==r?l(n):a=c(n-1),a=46===r?c(a):a),d(n,a),s(n,a-1),e.preventDefault()):27==r&&(m.val(v),m.caret(0,h()),e.preventDefault())}).bind("keypress.mask",function(e){var n,r,i,l=e.which,h=m.caret();e.ctrlKey||e.altKey||e.metaKey||l<32||l&&(h.end-h.begin!=0&&(d(h.begin,h.end),s(h.begin,h.end-1)),(n=c(h.begin-1))<o&&(r=String.fromCharCode(l),a[n].test(r)&&(u(n),p[n]=r,f(),i=c(n),android?setTimeout($.proxy($.fn.caret,m,i),0):m.caret(i),t.completed&&i>=o&&t.completed.call(m))),e.preventDefault())}).bind(pasteEventName,function(){setTimeout(function(){var e=h(!0);m.caret(e),t.completed&&e==m.val().length&&t.completed.call(m)},0)}),h()}))}});