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