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) {
  if (is_ie4up) {
    var nothing;
    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==8 && dFilterNum.length==0) {
      dFilterNum="";
      dFilterMask="";
    } else if ( (key>47&&key<58) && dFilterNum.length<dFilterMax(dFilterMask) ) {
      dFilterNum=dFilterNum+String.fromCharCode(key);
    } else if ( (key>95&&key<106) && dFilterNum.length<dFilterMax(dFilterMask) ) {
      dFilterNum=dFilterNum+String.fromCharCode(key-48);
    }
    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;
  } else {
    return false;
  }
}

// Replaces text with by in string
function replace(fullString,text,by) {
  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;
}
