function Mask(e, m,event){
//DoFocus(e);
var charCode = (event.which) ? event.which : event.keyCode;
var rng
var strSelection="";
charCode=FormatCharCode(charCode);
 e.focus();
if(charCode>16)
{
    if (document.selection)
    {
         var sel = document.selection;
         rng= sel.createRange();
        rng.colapse;
        if((sel.type == "Text" || sel.type == "None") && rng != null)
        {
          rng.text =String.fromCharCode(charCode);
        }
    }
    else if (e.selectionStart || e.selectionStart == '0')
    {
   
    var startPos = e.selectionStart;
    var endPos = e.selectionEnd;
    strSelection = e.value.substring(startPos, endPos)
    e.value = e.value.substring(0, startPos) + strSelection + e.value.substring(endPos, e.value.length);
    }
}

var ev = e.value;
if (charCode>0){
e.value = '';
e.select();
}
var cIndx = -1;
var Out = '';
var cChar = '';
var mChar = ''
var nChar = '';
var Hold = '';
var rx;

for(var i=0; i<m.length; i++){
mChar = m.substr(i, 1)
if(mChar=='#' || mChar=='@'){
if(mChar=='#'){rx = /\d/;} else if(mChar=='@'){rx = /[a-zA-Z]/;}
if(mChar=='#'){rx = /\d/;} else if(mChar=='@'){rx = /[0-9]/;}

cChar = ev.substr(++cIndx, 1);
if(m.substr(i+1,1)!='*')
cChar.toString();
while(cIndx < ev.length && !rx.test(cChar))
cChar = ev.substr(++cIndx, 1);
if (cIndx < ev.length && rx.test(cChar)){
Out += Hold + ev.substr(cIndx,1);
Hold = '';
if(m.substr(i+1,1)=='*' || m.substr(i+1,1)=='+'){
nChar = ev.substr(cIndx+1, 1);
while(cIndx < ev.length && rx.test(nChar)){
Out += nChar;
nChar = ev.substr(++cIndx+1, 1);
}
}
} else if (cIndx < ev.length && m.substr(i+1,1)=='*'){
--cIndx;
}
} else if(mChar!='*' && mChar!='+') {
if(ev.substr(cIndx+1, 1).toLowerCase()==mChar.toLowerCase()){
Out+=mChar;
cIndx++;
} else {
Hold += mChar;
}
}
if(cIndx >= ev.length){
e.value = Out;
return false;
}
}
e.value = Out;
return false;
}    


 //formatting the char code
 function FormatCharCode(num)
 {
    if (num > 47 && num <58)
      num=num+48;
    return num;
 }
