(function(b){var a=(window.orientation!=undefined);b.extend({mask:{rules:{z:/[a-z]/,Z:/[A-Z]/,a:/[a-zA-Z]/,"*":/[0-9a-zA-Z]/,"@":/[0-9a-zA-ZÃ§Ã‡Ã¡Ã Ã£Ã©Ã¨ÃÃ¬Ã³Ã²ÃµÃºÃ¹Ã¼]/},fixedChars:"[(),.:/ -]",keyRepresentation:{8:"backspace",9:"tab",13:"enter",16:"shift",17:"control",18:"alt",27:"esc",33:"page up",34:"page down",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete",116:"f5",224:"command"},iphoneKeyRepresentation:{10:"go",127:"delete"},signals:{"+":"","-":"-"},options:{attr:"alt",mask:null,type:"fixed",defaultValue:"",signal:false,onInvalid:function(){},onValid:function(){},onOverflow:function(){}},masks:{phone:{mask:"(99) 9999-9999"},"phone-us":{mask:"(999) 9999-9999"},cpf:{mask:"999.999.999-99"},cnpj:{mask:"99.999.999/9999-99"},date:{mask:"39/19/9999"},"date-us":{mask:"19/39/9999"},cep:{mask:"99999-999"},time:{mask:"29:59"},cc:{mask:"9999 9999 9999 9999"},integer:{mask:"999.999.999.999",type:"reverse"},decimal:{mask:"99,999.999.999.999",type:"reverse",defaultValue:"000"},"decimal-us":{mask:"99.999,999,999,999",type:"reverse",defaultValue:"000"},"signed-decimal":{mask:"99,999.999.999.999",type:"reverse",defaultValue:"+000"},"signed-decimal-us":{mask:"99,999.999.999.999",type:"reverse",defaultValue:"+000"}},init:function(){if(!this.hasInit){var e=this,d,c=(a)?this.iphoneKeyRepresentation:this.keyRepresentation;this.ignore=false;this.fixedCharsReg=new RegExp(this.fixedChars);this.fixedCharsRegG=new RegExp(this.fixedChars,"g");for(d=0;d<=9;d++){this.rules[d]=new RegExp("[0-"+d+"]")}this.keyRep=c;this.ignoreKeys=[];b.each(c,function(f){e.ignoreKeys.push(parseInt(f))});this.hasInit=true}},set:function(c,f){var g=this,e=b(c),d="maxLength";this.init();return e.each(function(){var n=b(this),m=b.extend({},g.options),o=n.attr(m.attr),l="",j=g.__getPasteEvent();l=(typeof f=="string")?f:(o!="")?o:null;if(l){m.mask=l}if(g.masks[l]){m=b.extend(m,g.masks[l])}if(typeof f=="object"){m=b.extend(m,f)}if(b.metadata){m=b.extend(m,n.metadata())}if(m.mask!=null){if(n.data("mask")){g.unset(n)}var k=m.defaultValue,h=n.attr(d),i=(m.type=="reverse");m=b.extend({},m,{maxlength:h,maskArray:m.mask.split(""),maskNonFixedCharsArray:m.mask.replace(g.fixedCharsRegG,"").split("")});if(i){n.css("text-align","right")}if(n.val()!=""){n.val(g.string(n.val(),m))}else{if(k!=""){n.val(g.string(k,m))}}n.data("mask",m);n.removeAttr(d);n.bind("keydown",{func:g._keyDown,thisObj:g},g._onMask).bind("keyup",{func:g._keyUp,thisObj:g},g._onMask).bind("keypress",{func:g._keyPress,thisObj:g},g._onMask).bind(j,{func:g._paste,thisObj:g},g._delayedOnMask)}})},unset:function(d){var e=b(d),c=this;return e.each(function(){var f=b(this);if(f.data("mask")){var h=f.data("mask").maxlength,g=c.__getPasteEvent();if(h!=-1){f.attr("maxLength",h)}f.unbind("keydown",c._onMask).unbind("keypress",c._onMask).unbind("keyup",c._onMask).unbind(g,c._delayedOnMask).removeData("mask")}})},string:function(c,f){this.init();var d={};if(typeof c!="string"){c=String(c)}switch(typeof f){case"string":if(this.masks[f]){d=b.extend(d,this.masks[f])}else{d.mask=f}break;case"object":d=f}if((d.type=="reverse")&&d.defaultValue){if(typeof this.signals[d.defaultValue.charAt(0)]!="undefined"){var e=c.charAt(0);d.signal=(typeof this.signals[e]!="undefined")?this.signals[e]:this.signals[d.defaultValue.charAt(0)];d.defaultValue=d.defaultValue.substring(1)}}return this.__maskArray(c.split(""),d.mask.replace(this.fixedCharsRegG,"").split(""),d.mask.split(""),d.type,d.defaultValue,d.signal)},unmaskedVal:function(c){return b(c).val().replace(b.mask.fixedCharsRegG,"")},_onMask:function(e){var c=e.data.thisObj,d={};d._this=e.target;d.$this=b(d._this);if(d.$this.attr("readonly")){return true}d.value=d.$this.val();d.nKey=c.__getKeyNumber(e);d.range=c.__getRange(d._this);d.valueArray=d.value.split("");d.data=d.$this.data("mask");d[d.data.type]=true;return e.data.func.call(c,e,d)},_delayedOnMask:function(c){c.type="paste";setTimeout(function(){c.data.thisObj._onMask(c)},1)},_keyDown:function(d,c){this.ignore=(b.inArray(c.nKey,this.ignoreKeys)>-1);if(this.ignore){var e=this.keyRep[c.nKey];c.data.onValid.call(c._this,e?e:"",c.nKey)}return a?this._keyPress(d,c):true},_keyUp:function(d,c){if(c.nKey==9&&(b.browser.safari||b.browser.msie)){return true}return(!c.infinite)?this._paste(d,c):true},_paste:function(d,c){if(c.reverse){this.__changeSignal(d.type,c)}var e=this.__maskArray(c.valueArray,c.data.maskNonFixedCharsArray,c.data.maskArray,c.data.type,c.data.defaultValue,c.data.signal);c.$this.val(e);if(!c.reverse&&c.data.defaultValue.length&&(c.range.start==c.range.end)){this.__setRange(c._this,c.range.start,c.range.end)}if((b.browser.msie||b.browser.safari)&&!c.reverse){this.__setRange(c._this,c.range.start,c.range.end)}return true},_keyPress:function(h,d){if(this.ignore||h.ctrlKey||h.metaKey||h.altKey){return true}if(d.reverse){this.__changeSignal(h.type,d)}var g=String.fromCharCode(d.nKey),e=d.range.start,k=d.value,m=d.data.maskArray;if(d.reverse){var l=k.substr(0,e),i=k.substr(d.range.end,k.length);k=(l+g+i);if(d.data.signal&&(e-d.data.signal.length>0)){e-=d.data.signal.length}}var f=k.replace(this.fixedCharsRegG,"").split(""),c=this.__extraPositionsTill(e,m);d.rsEp=e+c;if(d.infinite){d.rsEp=0}if(!this.rules[m[d.rsEp]]){d.data.onOverflow.call(d._this,g,d.nKey);return false}else{if(!this.rules[m[d.rsEp]].test(g)){d.data.onInvalid.call(d._this,g,d.nKey);return false}else{d.data.onValid.call(d._this,g,d.nKey)}}var j=this.__maskArray(f,d.data.maskNonFixedCharsArray,m,d.data.type,d.data.defaultValue,d.data.signal,c);d.$this.val(j);return(d.reverse)?this._keyPressReverse(h,d):(d.fixed)?this._keyPressFixed(h,d):true},_keyPressFixed:function(d,c){if(c.range.start==c.range.end){if((c.rsEp==0&&c.value.length==0)||c.rsEp<c.value.length){this.__setRange(c._this,c.rsEp,c.rsEp+1)}}else{this.__setRange(c._this,c.range.start,c.range.end)}return true},_keyPressReverse:function(d,c){if(b.browser.msie&&((c.rangeStart==0&&c.range.end==0)||c.rangeStart!=c.range.end)){this.__setRange(c._this,c.value.length)}return false},__changeSignal:function(d,c){if(c.data.signal!==false){var e=(d=="paste")?c.value.charAt(0):String.fromCharCode(c.nKey);if(this.signals&&(typeof this.signals[e]!="undefined")){c.data.signal=this.signals[e]}}},__getPasteEvent:function(){return(b.browser.opera||(b.browser.mozilla&&parseFloat(b.browser.version.substr(0,3))<1.9))?"input":"paste"},__getKeyNumber:function(c){return(c.charCode||c.keyCode||c.which)},__maskArray:function(d,e,h,f,i,c,g){if(f=="reverse"){d.reverse()}d=this.__removeInvalidChars(d,e);if(i){d=this.__applyDefaultValue.call(d,i)}d=this.__applyMask(d,h,g);switch(f){case"reverse":d.reverse();return(c||"")+d.join("").substring(d.length-h.length);case"infinite":return d.join("");default:return d.join("").substring(0,h.length)}return""},__applyDefaultValue:function(d){var f=d.length,e=this.length,c;for(c=e-1;c>=0;c--){if(this[c]==d.charAt(0)){this.pop()}else{break}}for(c=0;c<f;c++){if(!this[c]){this[c]=d.charAt(c)}}return this},__removeInvalidChars:function(c,d){for(var e=0;e<c.length;e++){if(d[e]&&this.rules[d[e]]&&!this.rules[d[e]].test(c[e])){c.splice(e,1);e--}}return c},__applyMask:function(d,f,c){if(typeof c=="undefined"){c=0}for(var e=0;e<d.length+c;e++){if(f[e]&&this.fixedCharsReg.test(f[e])){d.splice(e,0,f[e])}}return d},__extraPositionsTill:function(c,e){var d=0;while(this.fixedCharsReg.test(e[c])){c++;d++}return d},__setRange:function(d,c,f){if(typeof f=="undefined"){f=c}if(d.setSelectionRange){d.setSelectionRange(c,f)}else{var e=d.createTextRange();e.collapse();e.moveStart("character",c);e.moveEnd("character",f-c);e.select()}},__getRange:function(d){if(!b.browser.msie){return{start:d.selectionStart,end:d.selectionEnd}}var c={start:0,end:0},e=document.selection.createRange();c.start=0-e.duplicate().moveStart("character",-100000);c.end=c.start+e.text.length;return c}}});b.fn.extend({setMask:function(c){return b.mask.set(this,c)},unsetMask:function(){return b.mask.unset(this)},unmaskedVal:function(){return b.mask.unmaskedVal(this[0])}})})(jQuery);