// Author: Vincent Detemmerman
// Date: 2001-02-15 17:32:00
// Content: JavaScript functions for localized number formatting and parsing

function locale (decimalPoint, thousandSep, fracDigits) {
  this.decimalPoint = new String(decimalPoint);
  this.thousandSep = new String(thousandSep);
  this.fracDigits = fracDigits;
  this.formatNum = formatNum;
  this.parseNum = parseNum;
  }
function roundFloat(num, fracDigits) {
  var factor = Math.pow(10, fracDigits);
  return(Math.round(num*factor)/factor);
  }     
function toLcString(num, lc) {
  var str = new String(num);
  var aParts = str.split(".");
  return(aParts.join(lc.decimalPoint));
  }

//--Ivan Rewritten, stupid thing didn't use ThousandsSep
function formatNum(num) {
	var isNegative=num<0;
	var sNum = new String(roundFloat(Math.abs(num), this.fracDigits));
	//Split into integral and decimal parts
	var decPart;
	var intPart;
	var decPos=sNum.indexOf(".");
	if (decPos!=-1) {
		intPart=sNum.substr(0,decPos);
		decPart=sNum.substr(decPos+1);
	} else {
		intPart=sNum;
		decPart='';
	}
	//Add trailing zeros to taste
	while(decPart.length < this.fracDigits)
		decPart = decPart +"0";

	//Create integral part with thousands separator
	var intWithSep='';
	while (intPart.length > 3) {
		intWithSep=this.thousandSep + intPart.substr(intPart.length-3, 3) + intWithSep;
		intPart=intPart.substr(0, intPart.length-3);
	}
	intWithSep=intPart + intWithSep;

	if (isNegative) intWithSep='-' + intWithSep;
	//Return the result (with our without decimal part)	
	if (this.fracDigits>0)
		return (intWithSep + this.decimalPoint + decPart)
	else
		return (intWithSep);
}

//Strips Thousand seps for parsing.
function parseNum(str) {
	var sNum = new String(str);
	var aParts = sNum.split(this.thousandSep);
	sNum = aParts.join("");
	aParts = sNum.split(this.decimalPoint);
	sNum=aParts.join(".");
	return(parseFloat(sNum));
}

//alert ('I see you have the line that goes... Bing!');
