var KT_focusedEl=null;function KT_validateSingle(ascchar,maskchar){var cchar=ascchar.charCodeAt(0);switch(maskchar){case"9":if(cchar<58&&cchar>47){return true;}
break;case"A":if((cchar<91&&cchar>64)||(cchar<123&&cchar>96)){return true;}
break;case"X":if((cchar<91&&cchar>64)||(cchar<123&&cchar>96)||(cchar<58&&cchar>47)){return true;}
break;case"?":return true;break;default:return true;break;}}
function KT_maskDefaultValue(maskchar){switch(maskchar){case"9":return'0';break;case"A":return'a';break;case"X":return'0';break;case"?":return'0';break;default:return'0';break;}}
function KT_isSpecialChar(ascchar){if(ascchar=='9'||ascchar=='A'||ascchar=='X'||ascchar=='?'){return true;}else{return false;}}
function mask_onValueChanged(){if((typeof window.getSelection=='undefined'&&typeof document.selection=='undefined')){return;}
if(KT_focusedEl==null||KT_focusedEl.mask==null||KT_focusedEl.mask==''){return;}
var mask=KT_focusedEl.mask;var val=KT_focusedEl.value;var i=0;var moveCursor=false;if(val==KT_focusedEl.oldText){return;}
if(val.length>mask.length){val=val.substr(0,mask.length);moveCursor=true;}
for(;i<mask.length;i++){if(val.charCodeAt(i).toString()!='NaN'){if(KT_isSpecialChar(mask.charAt(i))){if(KT_validateSingle(val.charAt(i),mask.charAt(i))){continue;}else{val=KT_focusedEl.oldText;i=mask.length;break;}}else{if(val.charAt(i)!=mask.charAt(i)){if(i==val.length- 1){var lastChar=val.substr(val.length-1,val.length);val=val.substr(0,val.length-1)+ mask.charAt(i)+ lastChar;moveCursor=true;continue;}else{val=KT_focusedEl.oldText;i=mask.length;}
break;}}}else{if(val.length<KT_focusedEl.oldText.length){break;}
for(;i<mask.length;i++){if(!KT_isSpecialChar(mask.charAt(i))){val+=mask.charAt(i);moveCursor=true;}else{break;}}
break;}}
if(val.length>mask.length){val=val.substr(0,mask.length);moveCursor=true;}
if(KT_focusedEl.value!=val){KT_focusedEl.value=val;}
KT_focusedEl.oldText=val;if(moveCursor){}}
function mask_parseFirstTime(value,mask){var strippedmask='';var strippedvalue='';cond=1;imask=0;ival=0;cnt=0;while(cond==1){cond=1;if(!KT_isSpecialChar(mask.charAt(imask))){if(value.charCodeAt(ival).toString()!='NaN'){if(mask.charAt(imask)==value.charAt(ival)){imask++;ival++;}else{value=value.substr(0,ival)+ mask.charAt(imask)+ value.substr(ival,value.length);imask=0;ival=0;cond=1;}}else{value+=KT_maskDefaultValue(mask.charAt(imask));}}else{imask++;ival++;}
if(imask>=mask.length||ival>=value.length){cond=0;}}
for(i=0;i<mask.length;i++){if(KT_isSpecialChar(mask.charAt(i))){strippedmask+=mask.charAt(i);if(value.charCodeAt(i).toString()!='NaN'){strippedvalue+=value.charAt(i);}else{strippedvalue+=KT_maskDefaultValue(mask.charAt(i));}}}
oldvalue=value;value=strippedvalue;var newvalue='';for(i=0;i<strippedmask.length;i++){if(!KT_validateSingle(value.charAt(i),strippedmask.charAt(i))){newvalue+=KT_maskDefaultValue(strippedmask.charAt(i));}else{newvalue+=value.charAt(i);}}
var toret='';var j=0;for(i=0;i<mask.length;i++){if(KT_isSpecialChar(mask.charAt(i))){toret+=newvalue.charAt(j++);}else{toret+=mask.charAt(i);}}
return toret;}
function mask_onSetFocus(obj,mask){if((typeof window.getSelection=='undefined'&&typeof document.selection=='undefined')){return;}
if(typeof obj.mask=='undefined'){ret='';if(obj.value!=''){ret=mask_parseFirstTime(obj.value,mask);}
obj.value=ret;obj.mask=mask;}
KT_focusedEl=obj;if(typeof KT_focusedEl.oldText=='undefined'){KT_focusedEl.oldText=obj.value;mask_onValueChanged();}}
function mask_onKillFocus(){if((typeof window.getSelection=='undefined'&&typeof document.selection=='undefined')){return;}
mask_onValueChanged();KT_focusedEl=null;}
