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