
// round parameter can be negative for decimal, precision has to be postive
function formatNumber(n, sep, dec, precision)
{
	var majorDigits;
	var minorDigits;
	var formattedMajor = '';
	var formattedMinor = '';
	
	var nArray = n.toString().split('.');
	majorDigits = nArray[0];
	if(nArray.length < 2) {
		minorDigits = 0;
	} else {
		minorDigits = nArray[1];
	}
	
	// handle grouping
	if(sep.length > 0) {
		var strlength = majorDigits.length;
		
		if(strlength > 3) {
			var offset = strlength % 3; // find how many to lead off by
			
			for(j=0; j<offset; j++) {
				formattedMajor += majorDigits[j];
			}
			
			tic=0;
			for(i=offset; i<strlength; i++) {
				if(tic % 3 == 0 && i != 0)
					formattedMajor += sep;

				formattedMajor += majorDigits.substr(i,1);
				tic++;
			}
		}
		else {
			formattedMajor = majorDigits; // no grouping marker
		}
	}
	else {
		formattedMajor = majorDigits; // no grouping marker
	}

	// handle decimal precision
	if(precision > 0 && nArray.length > 1) {
		for(i=0; i<precision; i++) {
			if(minorDigits[i] != undefined)
				formattedMinor += minorDigits[i];
			else
				formattedMinor += '0';
		}
	} else {
		// we're just returning the major digits, no decimal marker
		dec = ''; // just in case
	}
	
	return formattedMajor + dec + formattedMinor;
}

function unFormatNumber(n, sep, dec)
{
	var s = (sep.length > 0)? new RegExp("\\"+sep, "g") : '';
	var d = (dec.length > 0)? new RegExp("\\"+dec, "g") : '';
	
	var un = n.toString();
	un = un.replace( s, '' );
	un = un.replace( d, '.' );
	
	return parseFloat(un);
}

function setSigDigits()
{
	var sym = getObjectById('lbl_currency').value;
	if( typeof(currencies[sym]) == 'undefined' )	sym = '0';
	
	for( i in format_fields )	sigDigits(format_fields[i], sym, symbol_current);
	// set current symbol
	symbol_current = sym;
}

function sigDigits(el, sym, curr)
{
	var n = getObjectById(el).value;
	if( n=trim(n) ) {
		n = unFormatNumber(n, currencies[curr][0], currencies[curr][1]);
		getObjectById(el).value = formatNumber(n, currencies[sym][0], currencies[sym][1], 2);
	}
}

