if(!$defined(meio)){var meio={}}$extend(Element.NativeEvents,{paste:2,input:2});Element.Events.paste={base:(Browser.Engine.presto||(Browser.Engine.gecko&&Browser.Engine.version<19))?"input":"paste",condition:function(a){this.fireEvent("paste",a,1);return false}};meio.MaskGlobals=new Hash({init:function(){if(!this.inited){var a=this,b,c=(Browser.Platform.ipod)?this.iphoneKeyRepresentation:this.keyRepresentation;this.setFixedChars(this.fixedChars);for(b=0;b<=9;b++){this.rules[b]=new RegExp("[0-"+b+"]")}this.keyRep=c;this.ignoreKeys=[];Hash.each(c,function(e,d){a.ignoreKeys.push(d.toInt())});this.inited=true}return this},reInit:function(){this.inited=false;return this.init()},setFixedChars:function(a){this.fixedCharsReg=new RegExp(this.fixedChars);this.fixedCharsRegG=new RegExp(this.fixedChars,"g");return this},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:{"+":"","-":"-"},masks:{phone:{mask:"(99) 9999-9999"},"phone-us":{mask:"(999) 999-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"}}});meio.Mask=new Class({Implements:[Options,Events],options:{attr:"alt",mask:null,type:"fixed"},initialize:function(b,a){this.$el=$(b);if(this.$el.get("tag")!="input"||this.$el.get("type")!="text"){return}this.globals=meio.MaskGlobals.init();this.change(a)},change:function(b){b=$pick(b,{});if(b.attr){this.options.attr=b.attr}var e=this.$el.get(this.options.attr),a;a=($type(b)=="string")?b:(e)?e:null;if(a){this.options.mask=a}if(this.globals.masks[this.options.mask]){this.setOptions(this.globals.masks[this.options.mask])}if(JSON){this.setOptions(JSON.decode(a,true))}if($type(b)=="object"){this.setOptions(b)}if(this.options.mask){if(this.$el.retrieve("mask")){this.remove()}var c="maxLength",d=this.$el.get(c);this.setOptions({maxlength:d,maskArray:this.options.mask.split(""),maskNonFixedChars:this.options.mask.replace(this.globals.fixedCharsRegG,"")});if(this.$el.get("value")!=""){this.$el.set("value",this.$el.get("value").mask(this.options))}this.$el.store("mask",this).erase(c);this.maskType=new meio.MaskType[this.options.type](this)}return this},remove:function(){var b=this.$el.retrieve("mask");if(b){var a=b.options.maxlength;if(a!=-1){this.$el.set("maxLength",a)}b.maskType.eventsToBind.each(function(c){this.$el.removeEvent(c,this[c+"Event"])}.bind(b.maskType))}return this}});meio.MaskType=new Class({initialize:function(a){this.ignore=false;if(a){this.mask=a;this.globals=a.globals;this.$el=a.$el;this.eventsToBind=["keydown","keypress","keyup","paste"];this.eventsToBind.each(function(b){this[b+"Event"]=this._onMask.bindWithEvent(this,this["_"+b]);this.$el.addEvent(b,this[b+"Event"])}.bind(this))}},_onMask:function(b,a){var c={};b=new Event(b);if(this.$el.get("readonly")){return true}c.value=this.$el.get("value");c.range=this.$el.getRange();c.valueArray=c.value.split("");return a.call(this,b,c)},_keydown:function(b,c){this.ignore=this.globals.ignoreKeys.contains(b.code);if(this.ignore){var a=this.globals.keyRep[b.code];this.mask.fireEvent("valid",[this.$el,a?a:"",b.code])}return Browser.Platform.ipod?this._keypress(b,c):true},_keyup:function(a,b){if(a.code==9&&(Browser.Engine.webkit||Browser.Engine.trident)){return true}return this._paste(a,b)},testEvents:function(a,b,e,d){if(!this.globals.rules[a[b]]){this.mask.fireEvent("overflow",[this.$el,e,d]);return false}else{if(!this.globals.rules[a[b]].test(e)){this.mask.fireEvent("invalid",[this.$el,e,d]);return false}else{this.mask.fireEvent("valid",[this.$el,e,d])}}return true},__mask:function(a){return a.join("")}});meio.MaskType.fixed=new Class({Extends:meio.MaskType,options:{placeHolder:false},_paste:function(a,b){this.$el.set("value",this.__mask(b.valueArray,this.globals,this.mask.options));if(Browser.Engine.trident||Browser.Engine.webkit){this.$el.setRange(b.range.start,b.range.end)}return true},_keypress:function(g,h){if(this.ignore||g.control||g.meta||g.alt){return true}var i=String.fromCharCode(g.code),d=this.mask.options,a=d.maskArray,f=h.value.replace(this.globals.fixedCharsRegG,"").split(""),b=a.__extraPositionsTill(h.range.start,this.globals.fixedCharsReg);h.rsEp=h.range.start+b;if(!this.testEvents(a,h.rsEp,i,g.code)){return false}this.$el.set("value",this.__mask(f,this.globals,d,b));if(h.range.start==h.range.end){if((h.rsEp==0&&h.value.length==0)||h.rsEp<h.value.length){this.$el.setRange(h.rsEp,h.rsEp+1)}}else{this.$el.setRange(h.range.start,h.range.end)}return true},__mask:function(b,c,d,a){return b.__mask(c,d,a).join("").substring(0,d.maskArray.length)}});meio.MaskType.infinite=new Class({Extends:meio.MaskType,_keyup:function(a,b){return true},_paste:function(a,b){this.$el.set("value",this.__mask(b.valueArray,this.globals,this.mask.options));return true},_keypress:function(d,f){if(this.ignore||d.control||d.meta||d.alt){return true}var g=String.fromCharCode(d.code),a=this.mask.options.maskArray,b=f.value.replace(this.globals.fixedCharsRegG,"").split("");if(!this.testEvents(a,0,g,d.code)){return false}this.$el.set("value",b.join(""));return true}});meio.MaskType.reverse=new Class({Extends:meio.MaskType,options:{defaultValue:"",signal:false},initialize:function(b){this.parent(b);if(b){var a=this.mask.options.defaultValue;this.$el.setStyle("text-align","right");if(a!=""&&this.$el.get("value")==""){this.$el.set("value",a.mask(this.mask.options))}}},_paste:function(a,b){this.__changeSignal(a,b);this.$el.set("value",this.__mask(b.valueArray,this.globals,this.mask.options));return true},_keypress:function(j,b){if(this.ignore||j.control||j.meta||j.alt){return true}this.__changeSignal(j,b);var k=String.fromCharCode(j.code),m=b.range.start,h=b.value,a=this.mask.options,f=a.maskArray,g=h.substr(0,m),i=h.substr(b.range.end,h.length);h=(g+k+i);if(a.signal&&(m-a.signal.length>0)){m-=a.signal.length}var l=h.replace(this.globals.fixedCharsRegG,"").split(""),d=f.__extraPositionsTill(m,this.globals.fixedCharsReg);b.rsEp=m+d;if(!this.testEvents(f,b.rsEp,k,j.code)){return false}this.$el.set("value",this.__mask(l,this.globals,a));if(Browser.Engine.trident&&((m==0&&b.range.end==0)||m!=b.range.end)){this.$el.setRange(b.value.length)}return false},__mask:function(b,c,e,a){b.reverse();var d=b.__mask(c,e).reverse();return(e.signal||"")+d.join("").substring(d.length-e.maskArray.length)},__changeSignal:function(b,c){if(this.mask.options.signal!==false){var a=(c.paste)?c.value.charAt(0):b.key;if($defined(this.globals.signals[a])){this.mask.options.signal=this.globals.signals[a]}}}});meio.MaskType.regexp=new Class({Extends:meio.MaskType,initialize:function(a){this.parent(a);this.regExp=new RegExp(this.mask.options.mask)},_keyup:function(a,b){return true},_paste:function(a,b){this.$el.set("value",this.regExp.test(b.value)?b.value:"");return true},_keypress:function(f,g){if(this.ignore||f.control||f.meta||f.alt){return true}var h=String.fromCharCode(f.code),d=g.value,b=d.substr(0,g.range.start),a=d.substr(g.range.end,d.length);d=(b+h+a);if(this.regExp.test(d)){this.mask.fireEvent("valid",[this.$el,h,f.code]);return true}else{this.mask.fireEvent("invalid",[this.$el,h,f.code]);return false}}});Array.implement({__mask:function(b,c,a){this.__removeInvalidChars(c.maskNonFixedChars,b.rules);if(c.defaultValue){this.__applyDefaultValue(c.defaultValue)}this.__applyMask(c.maskArray,b.fixedCharsReg,a);return this},__applyDefaultValue:function(c){var a=c.length,b=this.length,d;for(d=b-1;d>=0;d--){if(this[d]==c.charAt(0)){this.pop()}else{break}}for(d=0;d<a;d++){if(!this[d]){this[d]=c.charAt(d)}}return this},__removeInvalidChars:function(b,c){for(var a=0;a<this.length;a++){if(b.charAt(a)&&c[b.charAt(a)]&&!c[b.charAt(a)].test(this[a])){this.splice(a,1);a--}}return this},__applyMask:function(b,a,d){d=d||0;for(var c=0;c<this.length+d;c++){if(b[c]&&a.test(b[c])){this.splice(c,0,b[c])}}return this},__extraPositionsTill:function(c,a){var b=0;while(a.test(this[c])){c++;b++}return b}});Element.implement({unmaskedVal:function(){return this.get("value").replace(meio.MaskGlobals.init().fixedCharsRegG,"")},mask:function(a){return this.set("mask",a)},setRange:function(c,a){a=$pick(a,c);if(this.setSelectionRange){this.setSelectionRange(c,a)}else{var b=this.createTextRange();b.collapse();b.moveStart("character",c);b.moveEnd("character",a-c);b.select()}},getRange:function(){if(!Browser.Engine.trident){return{start:this.selectionStart,end:this.selectionEnd}}var b={start:0,end:0},a=document.selection.createRange();b.start=0-a.duplicate().moveStart("character",-100000);b.end=b.start+a.text.length;return b}});Element.Properties.mask={set:function(b){b=$pick(b,{});var a=this.retrieve("mask");return this.store("mask",a?a.change(b):new meio.Mask(this,b))},get:function(a){this.set("mask",a);return this.retrieve("mask")},erase:function(){var a=this.retrieve("mask");if(a){a.remove()}return this}};String.implement({mask:function(b){var d=meio.MaskGlobals.init(),f={};switch($type(b)){case"string":if(d.masks[b]){$extend(f,d.masks[b])}else{f.mask=b}break;case"object":$extend(f,b)}if((f.type=="reverse")&&f.defaultValue){var a=d.signals;if(typeof a[f.defaultValue.charAt(0)]!="undefined"){var e=this.charAt(0);f.signal=b.signal=a[e]?a[e]:a[f.defaultValue.charAt(0)];f.defaultValue=b.defaultValue=f.defaultValue.substring(1)}}if(!f.type){f.type="fixed"}var c=new meio.MaskType[f.type];f.maskNonFixedChars=f.mask.replace(d.fixedCharsRegG,"");f.maskArray=f.mask.split("");return c.__mask(this.split(""),d,f)}});