//rounds the input number to the desired precision
//and returns the rounded number
function roundToPrecision(inputNum, desiredPrecision){
  var precisionGuide = Math.pow(10, desiredPrecision);
  return( Math.round(inputNum * precisionGuide) / precisionGuide );
}

//converts the input number into a string and adds zeroes
//until the desired precision is reached and then
//returns the new string
function addZeroesToPrecision(inputNum, desiredPrecision){
  var numString = inputNum + "";
  if (numString.search(/\./)<0){ // no decimal found - integer
    numString += ".";
  }

  var afterDecimalString = numString.substring(numString.search(/\./) + 1);
  while (afterDecimalString.length < desiredPrecision) {
    afterDecimalString += "0";
    numString += "0";
  }
  return(numString);
}
//truncates/pads to proper precision
function toPrecision(inputNum, precision){
	var numString = roundToPrecision(inputNum, precision);
	numString = addZeroesToPrecision(numString, precision);
	return(numString); 
}
//truncates/pads to proper precision
function toPrecisionWithCommas(inputNum, precision){
	var numString = roundToPrecision(inputNum, precision);
	numString = addZeroesToPrecision(numString, precision);

	// calculate decimal point position
    var decpoint = numString.length - precision;
    // assemble final result from: (a) the string up to the position of
    // the decimal point; (b) the decimal point; and (c) the balance
    // of the string. Return finished product.

	str = formatCommas(numString.substring(0,decpoint)) + numString.substring(decpoint,numString.length);
	return str;
}
// Add comma seperators to the number
function formatCommas(numString) {
    var re = /(-?\d+)(\d{3})/;
    while (re.test(numString)) {
        numString = numString.replace(re, "$1,$2");
    }
    return numString;
}

// Strip commas from input numbers
function stripCommas(numString) {
    var re = /,/g;
    return numString.replace(re,"");
}
//Checks for numeric values only
function isNumeric(elem){
  var compareString="1234567890.";
  return checkNumeric(elem, compareString);
}
//Checks for numeric integer values only
function isInteger(elem){
  var compareString="1234567890";
  return checkNumeric(elem, compareString);
}
//Checks for numeric values only
function checkNumeric(elem, compareString){
  //var compareString="1234567890.";
  var numeric = true;
  
  stringValue = stripCommas(elem.value);
  if (stringValue.length != 0){
    for (var Count=0; Count < stringValue.length; Count++){
      if (compareString.indexOf(stringValue.substring (Count, Count+1)) == -1){
        numeric = false;
      }
    }
  }
  else numeric = false; // null string 
  if (!numeric){
    alert("Invalid character entered. " + elem.name + " must be numeric.");
    elem.focus();
  }
  return numeric;
}
