function FormatNumber(num,decimalNum)
{
	if (isNaN(String2Float("0"+num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number

	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign

	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// Add trailing zeros
	var iTmp = tmpNumStr.indexOf(".");
	if (iTmp < 0) {
		tmpNumStr = tmpNumStr + "."
		for (var i = 1; i <= decimalNum; i++) {
			tmpNumStr = tmpNumStr + "0"
		}
	}
	else {
		for (var i = 1; i <= decimalNum - tmpNumStr.length + iTmp + 1; i++) {
			tmpNumStr = tmpNumStr + "0"
		}
	}

	// put in the commas
	if ((num > 999 || num < -999)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0) { iStart = tmpNumStr.length }
		iStart -= 3;
		while (iStart >= 1) {
			if (tmpNumStr.substring(0,iStart)=="-") {
				tmpNumStr = tmpNumStr.substring(0,iStart) + tmpNumStr.substring(iStart,tmpNumStr.length)
			}
			else {
				tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			}
			iStart -= 3;
		}
	}
	if (decimalNum==0&&tmpNumStr.indexOf(".")>0) {
		tmpNumStr = tmpNumStr.substring(0,tmpNumStr.indexOf("."))
	}

	return tmpNumStr;		// Return our formatted string!
}

function FormatCurrency(num,decimalNum)
{
	var strTemp = FormatNumber(String2Float(num.toString()),decimalNum)
	if (strTemp.indexOf("-") > -1) {
		return "($" + stripCharsInBag(strTemp, "-") + ")"
	}
	else {
		return "$" + strTemp
	}
}

function FormatPercent(num,decimalNum)
{
	return FormatNumber(String2Float(num.toString())*100,decimalNum)+"%";
}

function String2Float(strString) {
	var blnNeg = false
	if (strString.indexOf("-") > -1 || strString.indexOf("(") > -1) {
		blnNeg = true
	}
	var strTemp = stripCharsInBag(strString, "()-,%$")
	var dblTemp = parseFloat(strTemp)
	if (blnNeg) {
		dblTemp = -1 * dblTemp
	}
	return dblTemp
}

function textLimit(txtField, intMaxLimit) {
	if (txtField.value.length > intMaxLimit) {
		txtField.value = txtField.value.substring(0, intMaxLimit)
	}
}

function reformat (s) {
	var arg
	var sPos = 0
	var resultString = ""

	for (var i = 1; i < reformat.arguments.length; i++) {
		arg = reformat.arguments[i]
		if (sPos < s.length) {
			if (i % 2 == 1) { resultString += arg }
			else {
				resultString += s.substring(sPos, sPos + arg)
				sPos += arg
			}
		}
	}
	return resultString
}

function stripCharsInRE (s, bag)
{ return s.replace(bag, "") }

function stripCharsInBag (s, bag)
{   var i
    var returnString = ""

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i)
        if (bag.indexOf(c) == -1)	{ returnString += c }
    }

    return returnString
}

function stripCharsNotInBag (s, bag)
{   var i
    var returnString = ""

    for (i = 0; i < s.length; i++)
	{
	    var c = s.charAt(i)
		if (c.match(bag) != null)
		{returnString += c }
        }

    return returnString
}

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue;
}

function stripWhitespace (s)
{ return stripCharsInBag (s, whitespace) }

function stripInitialWhitespace (s)
{   var i = 0

    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       { i++ }

    return s.substring (i, s.length)
}

function reformatUSPhone (USPhone)
{   return reformat (stripCharsInBag(USPhone, "()- "), "(", 3, ")", 3, "-", 4)
}

function formatUSPhoneParens(strPhoneIn)
{   return reformat (stripCharsInBag(strPhoneIn, "()- "), "(", 3, ")", 3, "-", 4)
}


function formatPhoneDashed(strPhoneIn)
{   return reformat (stripCharsInBag(strPhoneIn, "- "), "", 3, "-", 3, "-", 4)
}

function leadingZeros(s, intLength) {
	if (isNaN(parseInt(s))) return "NaN";
	var strTemp = new String(parseInt(s,10))
	while (strTemp.length < intLength) {
		strTemp = "0" + strTemp
	}
	return strTemp
}

function ForceNumbersOnly(myfield, e, dec)
{
    var key;
    var keychar;

    if (window.event)
    {
        key = window.event.keyCode;
    }
    else if (e)
    {
        key = e.which;
    }
    else
    {
        return true;
    }
    if(key != 46 && key != 45 && key > 31 && (key < 48 || key > 57))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function RemoveNonNumeric(myfield)
{
    var re = /[^0-9\.\-]/g;
    if(re.test(myfield.value))
    {
        myfield.value = myfield.value.replace(re, '');
        myfield.value = myfield.value.replace(/\./, '');
    }
}
