// [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);
	dFilterTemp = '';
	if (key==9 || key==37 || key==39) {
		return true;
	} else if (key==8 && dFilterNum.length!=0) {
		dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
	} else if (key==46) {
		dFilterNum = '';
		return true;
	} else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length < dFilterMax(dFilterMask) ) {
		if (key ==  96) key = 48;
		if (key ==  97) key = 49;
		if (key ==  98) key = 50;
		if (key ==  99) key = 51;
		if (key == 100) key = 52;
		if (key == 101) key = 53;
		if (key == 102) key = 54;
		if (key == 103) key = 55;
		if (key == 104) key = 56;
		if (key == 105) key = 57;
		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) {
    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;
}
