// mredkj.com
// v1.5.3
function NumberFormat(num, inputDecimal){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.NO_ROUNDING = -1; 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.roundToPlaces; 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.moveDecimalRight = moveDecimalRightNF;this.moveDecimalLeft = moveDecimalLeftNF;this.getRounded = getRoundedNF;this.preserveZeros = preserveZerosNF;this.justNumber = justNumberNF;this.expandExponential = expandExponentialNF;this.getZeros = getZerosNF;this.moveDecimalAsString = moveDecimalAsStringNF;this.moveDecimal = moveDecimalNF;this.addSeparators = addSeparatorsNF;if (inputDecimal == null) {this.setNumber(num, this.PERIOD);} else {this.setNumber(num, inputDecimal); }this.setCommas(true);this.setNegativeFormat(this.LEFT_DASH); this.setNegativeRed(false); this.setCurrency(false); this.setCurrencyPrefix('$');this.setPlaces(2);}function setInputDecimalNF(val){this.inputDecimalValue = val;}function setNumberNF(num, inputDecimal){if (inputDecimal != null) {this.setInputDecimal(inputDecimal); }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.roundToPlaces = !(p == this.NO_ROUNDING); this.places = (p < 0) ? 0 : p; }function addSeparatorsNF(nStr, inD, outD, sep){nStr += '';var dpos = nStr.indexOf(inD);var nStrEnd = '';if (dpos != -1) {nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);nStr = nStr.substring(0, dpos);}var rgx = /(\d+)(\d{3})/;while (rgx.test(nStr)) {nStr = nStr.replace(rgx, '$1' + sep + '$2');}return nStr + nStrEnd;}function toFormattedNF(){	var pos;var nNum = this.num; var nStr;            var splitString = new Array(2);   if (this.roundToPlaces) {nNum = this.getRounded(nNum);nStr = this.preserveZeros(Math.abs(nNum)); } else {nStr = this.expandExponential(Math.abs(nNum)); }if (this.hasSeparators) {nStr = this.addSeparators(nStr, this.PERIOD, this.decimalValue, this.separatorValue);}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 getZerosNF(places){var extraZ = '';var i;for (i=0; i<places; i++) {extraZ += '0';}return extraZ;}function expandExponentialNF(origVal){if (isNaN(origVal)) return origVal;var newVal = parseFloat(origVal) + ''; var eLoc = newVal.toLowerCase().indexOf('e');if (eLoc != -1) {var plusLoc = newVal.toLowerCase().indexOf('+');var negLoc = newVal.toLowerCase().indexOf('-', eLoc); var justNumber = newVal.substring(0, eLoc);if (negLoc != -1) {var places = newVal.substring(negLoc + 1, newVal.length);justNumber = this.moveDecimalAsString(justNumber, true, parseInt(places));} else {if (plusLoc == -1) plusLoc = eLoc;var places = newVal.substring(plusLoc + 1, newVal.length);justNumber = this.moveDecimalAsString(justNumber, false, parseInt(places));}newVal = justNumber;}return newVal;} function moveDecimalRightNF(val, places){var newVal = '';if (places == null) {newVal = this.moveDecimal(val, false);} else {newVal = this.moveDecimal(val, false, places);}return newVal;}function moveDecimalLeftNF(val, places){var newVal = '';if (places == null) {newVal = this.moveDecimal(val, true);} else {newVal = this.moveDecimal(val, true, places);}return newVal;}function moveDecimalAsStringNF(val, left, places){var spaces = (arguments.length < 3) ? this.places : places;if (spaces <= 0) return val; var newVal = val + '';var extraZ = this.getZeros(spaces);var re1 = new RegExp('([0-9.]+)');if (left) {newVal = newVal.replace(re1, extraZ + '$1');var re2 = new RegExp('(-?)([0-9]*)([0-9]{' + spaces + '})(\\.?)');		newVal = newVal.replace(re2, '$1$2.$3');} else {var reArray = re1.exec(newVal); if (reArray != null) {newVal = newVal.substring(0,reArray.index) + reArray[1] + extraZ + newVal.substring(reArray.index + reArray[0].length); }var re2 = new RegExp('(-?)([0-9]*)(\\.?)([0-9]{' + spaces + '})');newVal = newVal.replace(re2, '$1$2$4.');}newVal = newVal.replace(/\.$/, ''); return newVal;}function moveDecimalNF(val, left, places){var newVal = '';if (places == null) {newVal = this.moveDecimalAsString(val, left);} else {newVal = this.moveDecimalAsString(val, left, places);}return parseFloat(newVal);}function getRoundedNF(val){val = this.moveDecimalRight(val);val = Math.round(val);val = this.moveDecimalLeft(val);return val;}function preserveZerosNF(val){var i;val = this.expandExponential(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){newVal = val + '';var isPercentage = false;if (newVal.indexOf('%') != -1) {newVal = newVal.replace(/\%/g, '');isPercentage = true; }var re = new RegExp('[^\\' + this.inputDecimalValue + '\\d\\-\\+\\(\\)eE]', 'g');	newVal = newVal.replace(re, '');var tempRe = new RegExp('[' + this.inputDecimalValue + ']', 'g');var treArray = tempRe.exec(newVal); if (treArray != null) {var tempRight = newVal.substring(treArray.index + treArray[0].length); newVal = newVal.substring(0,treArray.index) + this.PERIOD + tempRight.replace(tempRe, ''); }if (newVal.charAt(newVal.length - 1) == this.DASH ) {newVal = newVal.substring(0, newVal.length - 1);newVal = '-' + newVal;}else if (newVal.charAt(0) == this.LEFT_PAREN&& newVal.charAt(newVal.length - 1) == this.RIGHT_PAREN) {newVal = newVal.substring(1, newVal.length - 1);newVal = '-' + newVal;}newVal = parseFloat(newVal);if (!isFinite(newVal)) {newVal = 0;}if (isPercentage) {newVal = this.moveDecimalLeft(newVal, 2);}return newVal;}