/*
Author: Robert Hashemian
http://www.hashemian.com/

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
********************************************************
Usage Sample:

<script language="JavaScript" src="http://www.hashemian.com/js/NumberFormat.js"></script>
<script language="JavaScript">
	document.write(FormatNumberBy3("1234512345.12345", ".", ","));
</script>
*/

/**
 * @desc   function to format a number with separators
 * @param  num - the number to be formatted
 * @param  decpoint - the decimal point character. if skipped, "." is used
 * @param  sep - the separator character. if skipped, "," is used
 * @return formatted number
 */
function FormatNumberBy3(num, decpoint, sep) {
	// check for missing parameters and use defaults if so
	if (arguments.length == 2) {
		sep = ",";
	}

	if (arguments.length == 1) {
		sep = ",";
		decpoint = ".";
	}

	// need a string for operations
	num = num.toString();

	// separate the whole number and the fraction if possible
	a = num.split(decpoint);
	x = a[0]; // decimal
	y = a[1]; // fraction
	z = "";

	if (typeof(x) != "undefined") {
		// reverse the digits. regexp works from left to right.
		for (i = x.length - 1; i >= 0; i--) {
			z += x.charAt(i);
		}

		// add seperators. but undo the trailing one, if there
		z = z.replace(/(\d{3})/g, "$1" + sep);

		if (z.slice(-sep.length) == sep) {
			z = z.slice(0, -sep.length);
		}

		x = "";

		// reverse again to get back the number
		for (i = z.length - 1; i >= 0; i--) {
			x += z.charAt(i);
		}

		// add the fraction back in, if it was there
		if (typeof(y) != "undefined" && y.length > 0) {
			x += decpoint + y;
		}
	}

	return x;
}
