// [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);

	//alert(key);
	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))
	{
		//correção de problema com as teclas de numeros laterais
		//estavam escrevendo letras
		if(key==96)  key = 48; //0
		if(key==97)  key = 49; //1
		if(key==98)  key = 50; //2
		if(key==99)  key = 51; //3
		if(key==100) key = 52; //4
		if(key==101) key = 53; //5
		if(key==102) key = 54; //6
		if(key==103) key = 55; //7
		if(key==104) key = 56; //8
		if(key==105) key = 57; //9
				
		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;
}
