(function(f){var y=(f.browser.msie?"paste":"input")+".mask",z=window.orientation!=undefined;f.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};f.fn.extend({caret:function(g,d){if(this.length!=0)if(typeof g=="number"){d=typeof d=="number"?d:g;return this.each(function(){if(this.setSelectionRange){this.focus();this.setSelectionRange(g,d)}else if(this.createTextRange){var c=this.createTextRange();c.collapse(true);c.moveEnd("character",d);c.moveStart("character",g);c.select()}})}else{if(this[0].setSelectionRange){g=
this[0].selectionStart;d=this[0].selectionEnd}else if(document.selection&&document.selection.createRange){var n=document.selection.createRange();g=0-n.duplicate().moveStart("character",-100000);d=g+n.text.length}return{begin:g,end:d}}},unmask:function(){return this.trigger("unmask")},mask:function(g,d){if(!g&&this.length>0){var n=f(this[0]),c=n.data("tests");return f.map(n.data("buffer"),function(l,m){return c[m]?l:null}).join("")}d=f.extend({placeholder:"_",completed:null},d);var s=f.mask.definitions;
c=[];var q=g.length,o=null,h=g.length;f.each(g.split(""),function(l,m){if(m=="?"){h--;q=l}else{c.push(s[m]?new RegExp(s[m]):null);if(c[c.length-1]&&o==null)o=c.length-1}});return this.each(function(){function l(a){for(;++a<h;)if(c[a])return a;return h}function m(a){for(;!c[a]&&a>=0;)a--;for(var b=a;b<h;b++)if(c[b]){j[b]=d.placeholder;var i=l(b);if(i<h&&c[b].test(j[i]))j[b]=j[i];else break}p();e.caret(Math.max(o,a))}function A(a){a=a;for(var b=d.placeholder;a<h;a++)if(c[a]){var i=l(a),k=j[a];j[a]=
b;if(i<h&&c[i].test(k))b=k;else break}}function B(a){var b=f(this).caret();a=a.keyCode;r=a<16||a>16&&a<32||a>32&&a<41;if(b.begin-b.end!=0&&(!r||a==8||a==46))t(b.begin,b.end);if(a==8||a==46||z&&a==127){m(b.begin+(a==46?0:-1));return false}else if(a==27){t(0,h);p();f(this).caret(o);return false}}function C(a){if(r){r=false;return a.keyCode==8?false:null}a=a||window.event;var b=a.charCode||a.keyCode||a.which,i=f(this).caret();if(a.ctrlKey||a.altKey)return true;else if(b>=41&&b<=122||b==32||b>186){a=
l(i.begin-1);if(a<h){b=String.fromCharCode(b);if(c[a].test(b)){A(a);j[a]=b;p();b=l(a);f(this).caret(b);d.completed&&b==h&&d.completed.call(e)}}}return false}function t(a,b){for(a=a;a<b&&a<h;a++)if(c[a])j[a]=d.placeholder}function p(){return e.val(j.join("")).val()}function u(a){for(var b=e.val(),i=-1,k=0,v=0;k<h;k++)if(c[k]){for(j[k]=d.placeholder;v++<b.length;){var w=b.charAt(v-1);if(c[k].test(w)){j[k]=w;i=k;break}}if(v>b.length)break}if(!a&&i+1<q){e.val("");t(0,h)}else if(a||i+1>=q){p();a||e.val(e.val().substring(0,
i+1))}return q?k:o}var e=f(this),j=f.map(g.split(""),function(a){if(a!="?")return s[a]?d.placeholder:a}),r=false,x=e.val();e.data("buffer",j).data("tests",c);e.one("unmask",function(){e.unbind(".mask").removeData("buffer").removeData("tests")}).bind("focus.mask",function(){x=e.val();var a=u();p();setTimeout(function(){e.caret(a)},0)}).bind("blur.mask",function(){u();e.val()!=x&&e.change()}).bind("keydown.mask",B).bind("keypress.mask",C).bind(y,function(){});u()})}})})(jQuery);

