
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 (iDec = fraction.length; iDec < digitsAfterDecimal; iDec++)
      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;
  var emailOK = objRegExp.test(strValue);
  return emailOK;
}


