// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
   dFilterMask = replace(dFilterMask,'#','');
   for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
         {
             dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
         }
         return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
          dFilterTemp = dFilterMask;
   for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
         {
                    if (dFilterMask.charAt(dFilterStep)!='#')
                   {
                 dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
                   }
         }
         return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{
         dFilterNum = dFilterStrip(textbox.value, dFilterMask);
         
         if (key==9)
         {
             return true;
         }
         else if (key==8&&dFilterNum.length!=0)
         {
                     dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
         }
       else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
         {
       dFilterNum=dFilterNum+String.fromCharCode(key);
         }

         var dFilterFinal='';
   for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
         {
       if (dFilterMask.charAt(dFilterStep)=='#')
                   {
                          if (dFilterNum.length!=0)
                          {
                           dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
                              dFilterNum = dFilterNum.substring(1,dFilterNum.length);
                          }
                       else
                       {
                           dFilterFinal = dFilterFinal + "";
                       }
                   }
                    else if (dFilterMask.charAt(dFilterStep)!='#')
                   {
                       dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);                
                   }
//              dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
         }


         textbox.value = dFilterFinal;
   return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
   var strLength = fullString.length, txtLength = text.length;
   if ((strLength == 0) || (txtLength == 0)) return fullString;

   var i = fullString.indexOf(text);
   if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
   if (i == -1) return fullString;

   var newstr = fullString.substring(0,i) + by;

   if (i+txtLength < strLength)
       newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

   return newstr;
}

