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