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) || (key==13))
   {
      return event.returnValue = true;
   }
   else if ((key==46 ||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>95&&key<106) ? key-48 : 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); 			
      }
   }

   textbox.value = dFilterFinal==replace(dFilterMask,'#','')? "" : dFilterFinal;
   return event.returnValue = 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;
}

