// [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 (key,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)
{
	
	
	//var num = textbox;
	
	
	
		dFilterNum = dFilterStrip(key,textbox.value, 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) )
		{
			
		if (key==96)
		{
		key=48;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
			if (key==97)
		{
		key=49;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==98)
		{
		key=50;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==99)
		{
		key=51;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==100)
		{
		key=52;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==101)
		{
		key=53;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==102)
		{
		key=54;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==103)
		{
		key=55;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==104)
		{
		key=56;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else
		if (key==105)
		{
		key=57;
       dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		
		else
		{
		dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		}



	if(dFilterNum.length==4){
		dFilterMask='#.###';
	}
	
	if(dFilterNum.length==5){
		dFilterMask='##.###';
	}
	
	if(dFilterNum.length==6){
		dFilterMask='###.###';
	}
	
	if(dFilterNum.length==7){
		dFilterMask='#.###.###';
	}
	
	if(dFilterNum.length==8){
		dFilterMask='##.###.###';
	}
	
	if(dFilterNum.length==9){
		dFilterMask='###.###.###';
	}

		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;
}

