
function FormatNum(value, digitsAfterDecimal, showDigitGrouping) {
  var str = "";

	value = parseFloat(value);
	digitsAfterDecimal = parseInt(digitsAfterDecimal, 0)

	if (isNaN(value)) {
		return FormatNum(0, digitsAfterDecimal, showDigitGrouping);
	}

  var Modifier = "";
  if (value < 0) {
    Modifier = "-";
    value = value * -1;
  }

	var number = Math.floor(value);
	var fraction = Math.round((value - number) * Math.pow(10, digitsAfterDecimal))/parseFloat(Math.pow(10, digitsAfterDecimal));
	number += Math.floor(fraction);
	fraction = (parseFloat(fraction) % 1.00);
	fraction = Math.round(fraction * Math.pow(10, digitsAfterDecimal)).toString(); //Have to round cause stupid Javascript cant multiply numbers
	var tmp = number.toString();

	if (showDigitGrouping) {
		while ((tmp.length / 3) > 1)
		{
			//iterate backwards from the end, 3 digits at a time
			str = "," + tmp.slice(-3) + str;

			//reduce tmp by 3
			tmp = tmp.slice(0, -3);
		}
	}
	str = tmp + str;

	if (digitsAfterDecimal > 0) {
		str += ".";

		for (i = fraction.length; i < digitsAfterDecimal; i++)
		{
			str += "0";
		}

		return Modifier + str + fraction;
	}

  var result = Modifier + str;

	return result.toString();
}

// FormatAmount(value [, decimals [, showDigitGrouping]])
function FormatAmount(value) {
	var decimals = (arguments.length > 1) ? arguments[1] : 2;
	var showDigitGrouping = (arguments.length > 2) ? arguments[2] : true;

	return FormatNum(value, decimals, showDigitGrouping);
}

// FormatPercent(value [, decimals [, showDigitGrouping]])
function FormatPercent(value) {
	var decimals = (arguments.length > 1) ? arguments[1] : 2;
	var showDigitGrouping = (arguments.length > 2) ? arguments[2] : true;

	return FormatNum(value, decimals, showDigitGrouping);
}

function ClearCtlFormat(ctl) {
  ctl.value = NormalizeNumber(ctl.value);
  ctl.select();
}

function FormatCtlAmount(ctl) {
  ctl.value = FormatAmount(NormalizeNumber(ctl.value));
}

function FormatCtlNumber(ctl) {
  ctl.value = FormatNum(NormalizeNumber(ctl.value), 0, true);
}

function FormatCtlPercent(ctl) {
  ctl.value = FormatPercent(NormalizeNumber(ctl.value));
}

function IsValidEmail(strValue) {
  var objRegExp = /^([\w\.-]+)@([\w\.-]+)\.([\w\.-]+)$/i;
  return objRegExp.test(strValue);
}

