text: (function($){var pasteEventName=($.browser.msie?"paste":"input")+".mask";var iPhone=(window.orientation!=undefined);$.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},dataName:"rawMaskFn"};$.fn.extend({caret:function(begin,end){if(this.length==0){return}if(typeof begin=="number"){end=(typeof end=="number")?end:begin;return this.each(function(){if(this.setSelectionRange){this.setSelectionRange(begin,end)}else{if(this.createTextRange){var range=this.createTextRange();range.collapse(true);range.moveEnd("character",end);range.moveStart("character",begin);range.select()}}})}else{if(this[0].setSelectionRange){begin=this[0].selectionStart;end=this[0].selectionEnd}else{if(document.selection&&document.selection.createRange){var range=document.selection.createRange();begin=0-range.duplicate().moveStart("character",-100000);end=begin+range.text.length}}return{begin:begin,end:end}}},unmask:function(){return this.trigger("unmask")},mask:function(mask,settings){if(!mask&&this.length>0){var input=$(this[0]);return input.data($.mask.dataName)()}settings=$.extend({placeholder:"_",completed:null},settings);var defs=$.mask.definitions;var tests=[];var partialPosition=mask.length;var firstNonMaskPos=null;var len=mask.length;$.each(mask.split(""),function(i,c){if(c=="?"){len--;partialPosition=i}else{if(defs[c]){tests.push(new RegExp(defs[c]));if(firstNonMaskPos==null){firstNonMaskPos=tests.length-1}}else{tests.push(null)}}});return this.trigger("unmask").each(function(){var input=$(this);var buffer=$.map(mask.split(""),function(c,i){if(c!="?"){return defs[c]?settings.placeholder:c}});var focusText=input.val();function seekNext(pos){while(++pos<=len&&!tests[pos]){}return pos}function seekPrev(pos){while(--pos>=0&&!tests[pos]){}return pos}function shiftL(begin,end){if(begin<0){return}for(var i=begin,j=seekNext(end);i<len;i++){if(tests[i]){if(j<len&&tests[i].test(buffer[j])){buffer[i]=buffer[j];buffer[j]=settings.placeholder}else{break}j=seekNext(j)}}writeBuffer();input.caret(Math.max(firstNonMaskPos,begin))}function shiftR(pos){for(var i=pos,c=settings.placeholder;i<len;i++){if(tests[i]){var j=seekNext(i);var t=buffer[i];buffer[i]=c;if(j<len&&tests[j].test(t)){c=t}else{break}}}}function keydownEvent(e){var k=e.which;if(k==8||k==46||(iPhone&&k==127)){var pos=input.caret(),begin=pos.begin,end=pos.end;if(end-begin==0){begin=k!=46?seekPrev(begin):(end=seekNext(begin-1));end=k==46?seekNext(end):end}clearBuffer(begin,end);shiftL(begin,end-1);return false}else{if(k==27){input.val(focusText);input.caret(0,checkVal());return false}}}function keypressEvent(e){var k=e.which,pos=input.caret();if(e.ctrlKey||e.altKey||e.metaKey||k<32){return true}else{if(k){if(pos.end-pos.begin!=0){clearBuffer(pos.begin,pos.end);shiftL(pos.begin,pos.end-1)}var p=seekNext(pos.begin-1);if(p<len){var c=String.fromCharCode(k);if(tests[p].test(c)){shiftR(p);buffer[p]=c;writeBuffer();var next=seekNext(p);input.caret(next);if(settings.completed&&next>=len){settings.completed.call(input)}}}return false}}}function clearBuffer(start,end){for(var i=start;i<end&&i<len;i++){if(tests[i]){buffer[i]=settings.placeholder}}}function writeBuffer(){return input.val(buffer.join("")).val()}function checkVal(allow){var test=input.val();var lastMatch=-1;for(var i=0,pos=0;i<len;i++){if(tests[i]){buffer[i]=settings.placeholder;while(pos++<test.length){var c=test.charAt(pos-1);if(tests[i].test(c)){buffer[i]=c;lastMatch=i;break}}if(pos>test.length){break}}else{if(buffer[i]==test.charAt(pos)&&i!=partialPosition){pos++;lastMatch=i}}}if(!allow&&lastMatch+1<partialPosition){input.val("");clearBuffer(0,len)}else{if(allow||lastMatch+1>=partialPosition){writeBuffer();if(!allow){input.val(input.val().substring(0,lastMatch+1))}}}return(partialPosition?i:firstNonMaskPos)}input.data($.mask.dataName,function(){return $.map(buffer,function(c,i){return tests[i]&&c!=settings.placeholder?c:null}).join("")});if(!input.attr("readonly")){input.one("unmask",function(){input.unbind(".mask").removeData($.mask.dataName)}).bind("focus.mask",function(){focusText=input.val();var pos=checkVal();writeBuffer();var moveCaret=function(){if(pos==mask.length){input.caret(0,pos)}else{input.caret(pos)}};($.browser.msie?moveCaret:function(){setTimeout(moveCaret,0)})()}).bind("blur.mask",function(){checkVal();if(input.val()!=focusText){input.change()}}).bind("keydown.mask",keydownEvent).bind("keypress.mask",keypressEvent).bind(pasteEventName,function(){setTimeout(function(){input.caret(checkVal(true))},0)})}checkVal()})}})})(jQuery);