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

