function _MaskAPI(){this.version="0.4a";this.instances=0;this.objects={};}MaskAPI=new _MaskAPI();function Mask(m,t){this.mask=m;this.type=(typeof t=="string")?t:"string";this.error=[];this.errorCodes=[];this.value="";this.strippedValue="";this.allowPartial=false;this.id=MaskAPI.instances++;this.ref="MaskAPI.objects['"+this.id+"']";this.valores="";MaskAPI.objects[this.id]=this;}Mask.prototype.attach=function(o){if(this.type=="moeda"){$addEvent(o,"onkeydown","return "+this.ref+".isAllowKeyPress(event, this);",true);$addEvent(o,"onkeyup","return "+this.ref+".getKeyPress(event, this);",true);$addEvent(o,"onblur","this.value = number_format(this.value,2,',','.');",true);}else{$addEvent(o,"onkeydown","return "+this.ref+".isAllowKeyPress(event, this);",true);$addEvent(o,"onkeyup","return "+this.ref+".getKeyPress(event, this);",true);$addEvent(o,"onblur","this.value = "+this.ref+".format(this.value);",true);}};Mask.prototype.isAllowKeyPress=function(e,o){if(this.type!="string"){return true;}var xe=new qEvent(e);if(((xe.keyCode>47)&&(o.value.length>=this.mask.length))&&!xe.ctrlKey){return false;}return true;};Mask.prototype.getKeyPress=function(e,o,_u){this.allowPartial=true;var xe=new qEvent(e);if((xe.keyCode>47)||(_u==true)||(xe.keyCode==8||xe.keyCode==46)){var v=o.value;var d;if(xe.keyCode==8||xe.keyCode==46){d=true;}else{d=false;}if(this.type=="number"||this.type=="moeda"){this.value=this.setNumber(v,d);}else{if(this.type=="date"){this.value=this.setDateKeyPress(v,d);}else{this.value=this.setGeneric(v,d);}}o.value=this.value;}this.allowPartial=false;return true;};Mask.prototype.format=function(s){if(this.type=="number"||this.type=="moeda"||this.type==null){this.value=this.setNumber(s);}else{if(this.type=="date"){this.value=this.setDate(s);}else{this.value=this.setGeneric(s);}}return this.value;};Mask.prototype.formataValor=function(_e,_f,_10){_e=document.getElementById(_e);this.getKey=function(_11){return _11?(_11.keyCode?_11.keyCode:(_11.which?_11.which:_11.charCode)):null;};_e.value=number_format(_e.value,2,",",".");};Mask.prototype.throwError=function(c,e,v){this.error[this.error.length]=e;this.errorCodes[this.errorCodes.length]=c;if(typeof v=="string"){return v;}return true;};Mask.prototype.setGeneric=function(_v,_d){var v=_v;var m=this.mask;var r="x#*";var rt=[];var nv="";var t;var x;var a=[];var j=0;var rx={"x":"A-Za-z","#":"0-9","*":"A-Za-z0-9"};v=v.replace(new RegExp("[^"+rx["*"]+"]","gi"),"");if((_d==true)&&(v.length==this.strippedValue.length)){v=v.substring(0,v.length-1);}this.strippedValue=v;var b=[];for(var i=0;i<m.length;i++){x=m.charAt(i);t=(r.indexOf(x)>-1);if(x=="!"){x=m.charAt(i++);}if((t&&!this.allowPartial)||(t&&this.allowPartial&&(rt.length<v.length))){rt[rt.length]="["+rx[x]+"]";}a[a.length]={"chr":x,"mask":t};}var _23=false;if(!this.allowPartial&&!(new RegExp(rt.join(""))).test(v)){return this.throwError(1,"The value \""+_v+"\" must be in the format "+this.mask+".",_v);}else{if((this.allowPartial&&(v.length>0))||!this.allowPartial){for(i=0;i<a.length;i++){if(a[i].mask){while(v.length>0&&!(new RegExp(rt[j])).test(v.charAt(j))){v=(v.length==1)?"":v.substring(1);}if(v.length>0){nv+=v.charAt(j);_23=true;}j++;}else{nv+=a[i].chr;}if(this.allowPartial&&(j>v.length)){break;}}}}if(this.allowPartial&&!_23){nv="";}if(this.allowPartial){if(nv.length<a.length){this.nextValidChar=rx[a[nv.length].chr];}else{this.nextValidChar=null;}}return nv;};Mask.prototype.setNumber=function(_v,_d){var v=String(_v).replace(/[^\d.-]*/gi,"");var m=this.mask;v=v.replace(/\./,"d").replace(/\./g,"").replace(/d/,".");if(!/^[\$]?((\$?[\+-]?([0#]{1,3},)?[0#]*(\.[0#]*)?)|([\+-]?\([\+-]?([0#]{1,3},)?[0#]*(\.[0#]*)?\)))$/.test(m)){return this.throwError(1,"An invalid mask was specified for the \nMask constructor.",_v);}if((_d==true)&&(v.length==this.strippedValue.length)){v=v.substring(0,v.length-1);}if(this.allowPartial&&(v.replace(/[^0-9]/,"").length==0)){return v;}this.strippedValue=v;if(v.length==0){v=NaN;}var vn=Number(v);if(isNaN(vn)){return this.throwError(2,"The value entered was not a number.",_v);}if(m.length==0){return v;}var vi=String(Math.abs((v.indexOf(".")>-1)?v.split(".")[0]:v));var vd=(v.indexOf(".")>-1)?v.split(".")[1]:"";var _vd=vd;var _2c=(vn!=0&&Math.abs(vn)*-1==vn);var _2d={"$":/^[\$]/.test(m),"( ":(_2c&&(m.indexOf("( ")>-1)),"+":((m.indexOf("+")!=-1)&&!_2c)};_2d["-"]=(_2c&&(!_2d["( "]||(m.indexOf("-")!=-1)));m=m.replace(/[^#0.,]*/gi,"");var dm=(m.indexOf(".")>-1)?m.split(".")[1]:"";if(dm.length==0){vi=String(Math.round(Number(vi)));vd="";}else{var md=dm.lastIndexOf("0")+1;if(vd.length>dm.length){vd=String(Math.round(Number(vd.substring(0,dm.length+1))/10));}else{while(vd.length<md){vd+="0";}}}var im=(m.indexOf(".")>-1)?m.split(".")[0]:m;im=im.replace(/[^0#]+/gi,"");var mv=im.indexOf("0")+1;if(mv>0){mv=im.length-mv+1;while(vi.length<mv){vi="0"+vi;}}if(/[#0]+,[#0]{3}/.test(m)){var x=[];var i=0;var n=Number(vi);while(n>999){x[i]="00"+String(n%1000);x[i]=x[i].substring(x[i].length-3);n=Math.floor(n/1000);i++;}x[i]=String(n%1000);vi=x.reverse().join(",");}if((vd.length>0&&!this.allowPartial)||((dm.length>0)&&this.allowPartial&&(v.indexOf(".")>-1)&&(_vd.length>=vd.length))){v=vi+"."+vd;}else{if((dm.length>0)&&this.allowPartial&&(v.indexOf(".")>-1)&&(_vd.length<vd.length)){v=vi+"."+_vd;}else{v=vi;}}if(_2d["$"]){v=this.mask.replace(/( ^[\$] )( .+ )/gi,"$")+v;}if(_2d["+"]){v="+"+v;}if(_2d["-"]){v="-"+v;}if(_2d["( "]){v="( "+v+" )";}return v;};Mask.prototype.setDate=function(_v){var v=_v;var m=this.mask;var a;var e;var mm;var dd;var yy;var x;var s;a=m.split(/[^mdy]+/);s=m.split(/[mdy]+/);e=v.split(/[^0-9]/);if(s[0].length==0){s.splice(0,1);}for(var i=0;i<a.length;i++){x=a[i].charAt(0).toLowerCase();if(x=="m"){mm=parseInt(e[i],10)-1;}else{if(x=="d"){dd=parseInt(e[i],10);}else{if(x=="y"){yy=parseInt(e[i],10);}}}}if(String(yy).length<3){yy=2000+yy;if((new Date()).getFullYear()+20<yy){yy=yy-100;}}var d=new Date(yy,mm,dd);if(d.getDate()!=dd){return this.throwError(1,"An invalid day was entered.",_v);}else{if(d.getMonth()!=mm){return this.throwError(2,"An invalid month was entered.",_v);}}var nv="";for(i=0;i<a.length;i++){x=a[i].charAt(0).toLowerCase();if(x=="m"){mm++;if(a[i].length==2){mm="0"+mm;mm=mm.substring(mm.length-2);}nv+=mm;}else{if(x=="d"){if(a[i].length==2){dd="0"+dd;dd=dd.substring(dd.length-2);}nv+=dd;}else{if(x=="y"){if(a[i].length==2){nv+=d.getYear();}else{nv+=d.getFullYear();}}}}if(i<a.length-1){nv+=s[i];}}return nv;};Mask.prototype.setDateKeyPress=function(_v,_d){var v=_v;var m=this.mask;var k=v.charAt(v.length-1);var a;var e;var c;var ml;var vl;var mm="";var dd="";var yy="";var x;var p;var z;if(_d==true){while((/[^0-9]/gi).test(v.charAt(v.length-1))){v=v.substring(0,v.length-1);}if((/[^0-9]/gi).test(this.strippedValue.charAt(this.strippedValue.length-1))){v=v.substring(0,v.length-1);}if(v.length==0){return "";}}a=m.split(/[^mdy]/);s=m.split(/[mdy]+/);if(s[0].length==0){s.splice(0,1);}e=v.split(/[^0-9]/);p=(e.length>0)?e.length-1:0;c=a[p].charAt(0);ml=a[p].length;for(var i=0;i<e.length;i++){x=a[i].charAt(0).toLowerCase();if(x=="m"){mm=parseInt(e[i],10)-1;}else{if(x=="d"){dd=parseInt(e[i],10);}else{if(x=="y"){yy=parseInt(e[i],10);}}}}var nv="";var j=0;for(i=0;i<e.length;i++){x=a[i].charAt(0).toLowerCase();if(x=="m"){z=((/[^0-9]/).test(k)&&c=="m");mm++;if((e[i].length==2&&mm<10)||(a[i].length==2&&c!="m")||(mm>1&&c=="m")||(z&&a[i].length==2)){mm="0"+mm;mm=mm.substring(mm.length-2);}vl=String(mm).length;ml=2;nv+=mm;}else{if(x=="d"){z=((/[^0-9]/).test(k)&&c=="d");if((e[i].length==2&&dd<10)||(a[i].length==2&&c!="d")||(dd>3&&c=="d")||(z&&a[i].length==2)){dd="0"+dd;dd=dd.substring(dd.length-2);}vl=String(dd).length;ml=2;nv+=dd;}else{if(x=="y"){z=((/[^0-9]/).test(k)&&c=="y");if(c=="y"){yy=String(yy);}else{if(a[i].length==2){yy=d.getYear();}else{yy=d.getFullYear();}}if((e[i].length==2&&yy<10)||(a[i].length==2&&c!="y")||(z&&a[i].length==2)){yy="0"+yy;yy=yy.substring(yy.length-2);}ml=a[i].length;vl=String(yy).length;nv+=yy;}}}if(((ml==vl||z)&&(x==c)&&(i<s.length))||(i<s.length&&x!=c)){nv+=s[i];}}if(nv.length>m.length){nv=nv.substring(0,m.length);}this.strippedValue=(nv=="NaN")?"":nv;return this.strippedValue;};function qEvent(e){if(window.Event&&e){var _56=(e.type.substring(0,3)=="key");this.keyCode=(_56)?parseInt(e.which,10):0;this.button=(!_56)?parseInt(e.which,10):0;this.srcElement=e.target;this.type=e.type;this.x=e.pageX;this.y=e.pageY;this.screenX=e.screenX;this.screenY=e.screenY;if(document.layers){this.altKey=((e.modifiers&Event.ALT_MASK)>0);this.ctrlKey=((e.modifiers&Event.CONTROL_MASK)>0);this.shiftKey=((e.modifiers&Event.SHIFT_MASK)>0);this.keyCode=this.translateKeyCode(this.keyCode);}else{this.altKey=e.altKey;this.ctrlKey=e.ctrlKey;this.shiftKey=e.shiftKey;}}else{e=window.event;this.keyCode=parseInt(e.keyCode,10);this.button=e.button;this.srcElement=e.srcElement;this.type=e.type;if(document.all){this.x=e.clientX+document.body.scrollLeft;this.y=e.clientY+document.body.scrollTop;}else{this.x=e.clientX;this.y=e.clientY;}this.screenX=e.screenX;this.screenY=e.screenY;this.altKey=e.altKey;this.ctrlKey=e.ctrlKey;this.shiftKey=e.shiftKey;}if(this.button==0){this.setKeyPressed(this.keyCode);this.keyChar=String.fromCharCode(this.keyCode);}}qEvent.prototype.translateKeyCode=function(i){var l={};if(!!document.layers){if(this.keyCode>96&&this.keyCode<123){return this.keyCode-32;}l={96:192,126:192,33:49,64:50,35:51,36:52,37:53,94:54,38:55,42:56,40:57,41:48,92:220,124:220,125:221,93:221,91:219,123:219,39:222,34:222,47:191,63:191,46:190,62:190,44:188,60:188,45:189,95:189,43:187,61:187,59:186,58:186,"null":null};}return (!!l[i])?l[i]:i;};qEvent.prototype.setKP=function(i,s){this.keyPressedCode=i;this.keyNonChar=(typeof s=="string");this.keyPressed=(this.keyNonChar)?s:String.fromCharCode(i);this.isNumeric=(parseInt(this.keyPressed,10)==this.keyPressed);this.isAlpha=((this.keyCode>64&&this.keyCode<91)&&!this.altKey&&!this.ctrlKey);return true;};qEvent.prototype.setKeyPressed=function(i){var b=this.shiftKey;if(!b&&(i>64&&i<91)){return this.setKP(i+32);}if(i>95&&i<106){return this.setKP(i-48);}switch(i){case 49:case 51:case 52:case 53:if(b){i=i-16;}break;case 50:if(b){i=64;}break;case 54:if(b){i=94;}break;case 55:if(b){i=38;}break;case 56:if(b){i=42;}break;case 57:if(b){i=40;}break;case 48:if(b){i=41;}break;case 192:if(b){i=126;}else{i=96;}break;case 189:if(b){i=95;}else{i=45;}break;case 187:if(b){i=43;}else{i=61;}break;case 220:if(b){i=124;}else{i=92;}break;case 221:if(b){i=125;}else{i=93;}break;case 219:if(b){i=123;}else{i=91;}break;case 222:if(b){i=34;}else{i=39;}break;case 186:if(b){i=58;}else{i=59;}break;case 191:if(b){i=63;}else{i=47;}break;case 190:if(b){i=62;}else{i=46;}break;case 188:if(b){i=60;}else{i=44;}break;case 106:case 57379:i=42;break;case 107:case 57380:i=43;break;case 109:case 57381:i=45;break;case 110:i=46;break;case 111:case 57378:i=47;break;case 8:return this.setKP(i,"[backspace]");case 9:return this.setKP(i,"[tab]");case 13:return this.setKP(i,"[enter]");case 16:case 57389:return this.setKP(i,"[shift]");case 17:case 57390:return this.setKP(i,"[ctrl]");case 18:case 57388:return this.setKP(i,"[alt]");case 19:case 57402:return this.setKP(i,"[break]");case 20:return this.setKP(i,"[capslock]");case 32:return this.setKP(i,"[space]");case 91:return this.setKP(i,"[windows]");case 93:return this.setKP(i,"[properties]");case 33:case 57371:return this.setKP(i*-1,"[pgup]");case 34:case 57372:return this.setKP(i*-1,"[pgdown]");case 35:case 57370:return this.setKP(i*-1,"[end]");case 36:case 57369:return this.setKP(i*-1,"[home]");case 37:case 57375:return this.setKP(i*-1,"[left]");case 38:case 57373:return this.setKP(i*-1,"[up]");case 39:case 57376:return this.setKP(i*-1,"[right]");case 40:case 57374:return this.setKP(i*-1,"[down]");case 45:case 57382:return this.setKP(i*-1,"[insert]");case 46:case 57383:return this.setKP(i*-1,"[delete]");case 144:case 57400:return this.setKP(i*-1,"[numlock]");}if(i>111&&i<124){return this.setKP(i*-1,"[f"+(i-111)+"]");}return this.setKP(i);};function $addEvent(o,_e,c,_b){var e=_e.toLowerCase();var b=(typeof _b=="boolean")?_b:true;var x=(o[e])?o[e].toString():"";x=x.substring(x.indexOf("{")+1,x.lastIndexOf("}"));x=((b)?(x+c):(c+x))+"\n";return o[e]=(!!window.Event)?new Function("event",x):new Function(x);}
