<!--
// mredkj.com
function NumberFormat(num)
{
//this.COMMA = ',';  - original
//this.PERIOD = '.';  - original
this.COMMA = '.';
this.PERIOD = ',';
this.DASH = '-'; 
this.LEFT_PAREN = '('; 
this.RIGHT_PAREN = ')'; 
this.LEFT_OUTSIDE = 0; 
this.LEFT_INSIDE = 1;  
this.RIGHT_INSIDE = 2;  
this.RIGHT_OUTSIDE = 3;  
this.LEFT_DASH = 0; 
this.RIGHT_DASH = 1; 
this.PARENTHESIS = 2; 
this.num;
this.numOriginal;
this.hasSeparators = false;  
this.separatorValue;  
this.inputDecimalValue; 
this.decimalValue;  
this.negativeFormat; 
this.negativeRed; 
this.hasCurrency;  
this.currencyPosition;  
this.currencyValue;  
this.places;
this.setNumber = setNumberNF;
this.toUnformatted = toUnformattedNF;
this.setInputDecimal = setInputDecimalNF; 
this.setSeparators = setSeparatorsNF; 
this.setCommas = setCommasNF;
this.setNegativeFormat = setNegativeFormatNF; 
this.setNegativeRed = setNegativeRedNF; 
this.setCurrency = setCurrencyNF;
this.setCurrencyPrefix = setCurrencyPrefixNF;
this.setCurrencyValue = setCurrencyValueNF; 
this.setCurrencyPosition = setCurrencyPositionNF; 
this.setPlaces = setPlacesNF;
this.toFormatted = toFormattedNF;
this.toPercentage = toPercentageNF;
this.getOriginal = getOriginalNF;
this.getRounded = getRoundedNF;
this.preserveZeros = preserveZerosNF;
this.justNumber = justNumberNF;
this.setInputDecimal(this.PERIOD); 
this.setNumber(num); 
this.setCommas(true);
this.setNegativeFormat(this.LEFT_DASH); 
this.setNegativeRed(false); 
this.setCurrency(true);
this.setCurrencyPrefix(''); //Setings of currency
this.setPlaces(2);
}

function setInputDecimalNF(val) {
	this.inputDecimalValue = val;
}

function setNumberNF(num) {
	this.numOriginal = num;
	this.num = this.justNumber(num);
}

function toUnformattedNF() {
	return (this.num);
}

function getOriginalNF() {
	return (this.numOriginal);
}

function setNegativeFormatNF(format) {
	this.negativeFormat = format;
}

function setNegativeRedNF(isRed) {
	this.negativeRed = isRed;
}

function setSeparatorsNF(isC, separator, decimal) {
	this.hasSeparators = isC;
	if (separator == null) separator = this.COMMA;
	if (decimal == null) decimal = this.PERIOD;
	if (separator == decimal) {
		this.decimalValue = (decimal == this.PERIOD) ? this.COMMA : this.PERIOD;
	}
	else {
		this.decimalValue = decimal;
	}
	this.separatorValue = separator;
}

function setCommasNF(isC) {
	this.setSeparators(isC, this.COMMA, this.PERIOD);
}

function setCurrencyNF(isC) {
	this.hasCurrency = isC;
}

function setCurrencyValueNF(val) {
	this.currencyValue = val;
}

function setCurrencyPrefixNF(cp) {
	this.setCurrencyValue(cp);
	this.setCurrencyPosition(this.LEFT_OUTSIDE);
}

function setCurrencyPositionNF(cp) {
	this.currencyPosition = cp
}

function setPlacesNF(p) {
	this.places = p;
}

function toFormattedNF() {
	var pos;
	var nNum = this.num; 
	var nStr;            
	var splitString = new Array(2);   
	nNum = this.getRounded(nNum);
	nStr = this.preserveZeros(Math.abs(nNum)); 
//	if (nStr.indexOf(this.PERIOND) == -1) { - original
	if (nStr.indexOf(this.COMMA) == -1) {
		splitString[0] = nStr;
		splitString[1] = '';
	}
	else {
//		splitString = nStr.split(this.PERIOND, 2); - original
		splitString = nStr.split(this.COMMA, 2);
	}
	if (this.hasSeparators) {
		pos = splitString[0].length;
		while (pos > 0)
	{
	pos -= 3;
	if (pos <= 0) break;
	splitString[0] = splitString[0].substring(0,pos)
	+ this.separatorValue
	+ splitString[0].substring(pos, splitString[0].length);
	}
	}
	if (splitString[1].length > 0) {
		nStr = splitString[0] + this.decimalValue + splitString[1];
	}
	else {
		nStr = splitString[0];
	}
	var c0 = '';
	var n0 = '';
	var c1 = '';
	var n1 = '';
	var n2 = '';
	var c2 = '';
	var n3 = '';
	var c3 = '';
	var negSignL = (this.negativeFormat == this.PARENTHESIS) ? this.LEFT_PAREN : this.DASH;
	var negSignR = (this.negativeFormat == this.PARENTHESIS) ? this.RIGHT_PAREN : this.DASH;
	if (this.currencyPosition == this.LEFT_OUTSIDE) {
		if (nNum < 0) {
			if (this.negativeFormat == this.LEFT_DASH || this.negativeFormat == this.PARENTHESIS) n1 = negSignL;
			if (this.negativeFormat == this.RIGHT_DASH || this.negativeFormat == this.PARENTHESIS) n2 = negSignR;
		}
		if (this.hasCurrency) c0 = this.currencyValue;
	}
	else if (this.currencyPosition == this.LEFT_INSIDE) {
		if (nNum < 0) {
			if (this.negativeFormat == this.LEFT_DASH || this.negativeFormat == this.PARENTHESIS) n0 = negSignL;
			if (this.negativeFormat == this.RIGHT_DASH || this.negativeFormat == this.PARENTHESIS) n3 = negSignR;
		}
		if (this.hasCurrency) c1 = this.currencyValue;
	}
	else if (this.currencyPosition == this.RIGHT_INSIDE) {
		if (nNum < 0) {
			if (this.negativeFormat == this.LEFT_DASH || this.negativeFormat == this.PARENTHESIS) n0 = negSignL;
			if (this.negativeFormat == this.RIGHT_DASH || this.negativeFormat == this.PARENTHESIS) n3 = negSignR;
		}
		if (this.hasCurrency) c2 = this.currencyValue;
	}
	else if (this.currencyPosition == this.RIGHT_OUTSIDE) {
		if (nNum < 0) {
			if (this.negativeFormat == this.LEFT_DASH || this.negativeFormat == this.PARENTHESIS) n1 = negSignL;
			if (this.negativeFormat == this.RIGHT_DASH || this.negativeFormat == this.PARENTHESIS) n2 = negSignR;
		}
		if (this.hasCurrency) c3 = this.currencyValue;
	}
	nStr = c0 + n0 + c1 + n1 + nStr + n2 + c2 + n3 + c3;
	if (this.negativeRed && nNum < 0) {
		nStr = '<font color="red">' + nStr + '</font>';
	}
	return (nStr);
}

function toPercentageNF() {
	nNum = this.num * 100;
	nNum = this.getRounded(nNum);
	return nNum + '%';
}

function getRoundedNF(val) {
	var factor;
	var i;
	factor = 1;
	for (i=0; i<this.places; i++)
	{	factor *= 10; }
	val *= factor;
	val = Math.round(val);
	val /= factor;
	return (val);
}

function preserveZerosNF(val) {
	var i;
	val = val + '';
	if (this.places <= 0) return val; 
	var decimalPos = val.indexOf('.');
	if (decimalPos == -1) {
		val += '.';
		for (i=0; i<this.places; i++) {
			val += '0';
		}
	}
	else {
		var actualDecimals = (val.length - 1) - decimalPos;
		var difference = this.places - actualDecimals;
		for (i=0; i<difference; i++) {
			val += '0';
		}
	}
	return val;
}

function justNumberNF(val) {
	val = (val==null) ? 0 : val;
	var newVal = val + ""; 
	var isPercentage = false;
	var isFormattedNeg = false;
	if (newVal.indexOf('%') != -1) {
		newVal = newVal.replace(/\%/g, '');
		isPercentage = true;
	}
	if (newVal.indexOf(this.DASH) != -1 || (newVal.indexOf(this.LEFT_PAREN) != -1 && newVal.indexOf(this.RIGHT_PAREN) != -1)) {
		newVal = newVal.replace(/[\-\(\)]/g, '');
		isFormattedNeg = true;
	}
	if (this.inputDecimalValue != this.PERIOD) {
		newVal = newVal.replace(/\./g, '');
	}
	var itrDecimal;
	var tempVal = '';
	var foundDecimal = false;
	for (itrDecimal=0; itrDecimal<newVal.length; itrDecimal++) {
		if (newVal.charAt(itrDecimal) == this.inputDecimalValue) {
			if (foundDecimal) {
			}
			else {
				tempVal = tempVal + this.PERIOD;
				foundDecimal = true;
			}
		}
		else {
			tempVal = tempVal + newVal.charAt(itrDecimal);
		}
	}
	newVal = tempVal;
	if (isFormattedNeg) newVal = '-' + newVal;
	if (isNaN(newVal)) {
		newVal = parseFloat(newVal.replace(/[^\d\.\-]/g, ''));
		newVal = (isNaN(newVal) ? 0 : newVal); 
	}
	else if (!isFinite(newVal)) {
		newVal = 0;
	}
	if (isPercentage) {
		newVal = newVal / 100;
	}
	return newVal;
}