// [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);

	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) || (key >= 65 && key <= 70)) && 
			dFilterNum.length < dFilterMax(dFilterMask)) {
		dFilterNum = dFilterNum + String.fromCharCode(key);
	} else {
		alert("Próbujesz wpisać zbyt dużo znaków!");
	}

	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;
}
