function replaceAll(str, from, to) {
	var idx = str.indexOf(from);
	while (idx > -1) {
		str = str.replace(from, to);
		idx = str.indexOf(from);
	}
	return str;
}
function formatInteger(val) {
	val.value = integer(val.value);
}
function integer(val) {
	val = replaceAll(val, " ", "");
	return isNaN(parseInt(val, 10)) ? "" : parseInt(val, 10);	
}
function formatDecimal(val, precision) {
	val.value = decimal(val.value, precision);
}
function decimal(val, precision) {
	val = replaceAll(val, " ", "");
	var pos = val.indexOf(".");
	if (pos == -1) {
		val = val + ".00";
		pos = val.indexOf(".");
	}
	var lhs = val.substring(0, pos);
	var rhs = val.substring(pos + 1);
	var ilhs = parseInt(lhs, 10);
	var irhs = parseInt(rhs, 10);
	if (isNaN(ilhs) || isNaN(irhs)) return "";
	if (rhs.length > precision) {
		var temp = parseInt(rhs.substring(0, precision));
		var next = parseInt(rhs.substring(precision, precision + 1));
		if (next >= 5) {
			temp++;
			temp = "" + temp;
			if (temp.length > precision) {
				rhs = "00";
				lhs = parseInt(lhs) + 1;
				lhs = "" + lhs;
			} else if (temp.length < precision) {
				temp = "" + temp;
				var i = 0;
				for (i = temp.length; i < precision; i++) temp = "0" + temp;
			}
		}
		rhs = temp;
	} else if (rhs.length < precision) {
		var i = 0; 
		for (i = rhs.length; i < precision; i++) {
			rhs += "0";
		}
	}
	return lhs + "." + rhs;
}
