﻿function stripNonDecimal(value) {
  var result = "";
  var c;              // The current character.

  value += ""; // Force conversion to string

  for (var i=0; i<value.length; i++) {
    c = value.charAt(i);
    if (((c >= "0") && (c <= "9")) || (c == ".")) {
      result += c;
    }
  }
  return result;
}

function parseDecimal(value) {
  return parseFloat(stripNonDecimal(value));
}

function formatCurrency(value) {
  value = "" + value; // Force conversion to string
  if (value == "") return "";
  value = parseDecimal(value);

  if (isNaN(value)) {
    return "ERROR";
  } else {
    // Add scaling value for rounding:
    value += 0.005;
  }

  value += ""; // Force conversion to string
  // In Netscape, decimals under 1.0 have no leading zero:
  if (value.charAt(0) == ".") {
    value += "0";
  }

  var decimalPlace = value.indexOf(".");
  var decimalPart = "";
  if (decimalPlace < 0) {
    decimalPart = ".";
  } else {
    var decimalEnd = decimalPlace + 3;
    decimalPart = value.substring(decimalPlace, decimalEnd);
    value = value.substring(0, decimalPlace);
  }
  while (decimalPart.length < 3) {
    decimalPart += "0";
  }

  var newValue = "";
  for (var i=value.length; i>3; i-=3) {
    newValue = "," + value.substring(i-3, i) + newValue;
  }
  newValue = "$" + value.substring(0,i) + newValue + decimalPart;

  return newValue;
}

function formatCurrencyNoCents(value) {
  value = "" + value; // Force conversion to string
  if (value == "") return "";
  value = parseDecimal(value);

  if (isNaN(value)) {
    return "ERROR";
  } else {
    // Add scaling value for rounding:
    value += 0.005;
  }

  value += ""; // Force conversion to string
  // In Netscape, decimals under 1.0 have no leading zero:
  if (value.charAt(0) == ".") {
    value += "0";
  }

  var decimalPlace = value.indexOf(".");
  var decimalPart = "";
  if (decimalPlace < 0) {
    decimalPart = ".";
  } else {
    var decimalEnd = decimalPlace + 3;
    decimalPart = value.substring(decimalPlace, decimalEnd);
    value = value.substring(0, decimalPlace);
  }
  while (decimalPart.length < 3) {
    decimalPart += "0";
  }

  var newValue = "";
  for (var i=value.length; i>3; i-=3) {
    newValue = "," + value.substring(i-3, i) + newValue;
  }
  newValue = "$" + value.substring(0,i) + newValue;// + decimalPart;

  return newValue;
}
