
function formatRound(number,precision) {
		if (precision==null) precision = 2;
		if (precision==0)return Math.round(number);
		lnFactor = Math.floor(Math.pow(10,precision));
		if (precision<0)return Math.round(number/lnFactor)*lnFactor;
		if (precision>0)return Math.round(number*lnFactor)/lnFactor;
	}

function calcPayment (amount,rate,time,balloon) {
		if (rate<=0) 
    if (time<=0) return 0;
		else return amount/time;
    if (balloon==null) balloon = 0;
		var ln = rate;
		return ((amount/ln)+ rate);
	}

function formatNumber(number,precision,commas) 
	{
		if (precision==null) precision = 2;
		number = formatRound(number,precision);
		var llSign = number<0;
		number = Math.abs(number);
		var ln = precision+1;
		var lc = "";
		number = Math.floor(number*Math.pow(10,precision));
		while (((ln--)>0) || (number>0)) 
		{
			lc = (number%10)+lc;
			number = Math.floor(number/10);
			if (ln==1) lc = "."+lc;
		}
		if (llSign) lc = "-"+lc;var lc2 = "";
		if (commas) {var lc3 = lc;ln = lc.length;
		if (lc.indexOf(".")!=-1) 
		{
			lc2 = lc.substring(lc.indexOf("."),ln);
			lc3 = lc.substring(0,lc.indexOf("."));
		}	

		ln = lc3.length;
		var lnCount = 0;	
		while (ln>0) 
		{
			lnCount++;
			if (lnCount==4) 
			{
				lc2 = ","+lc2;
				lnCount = 1;
			}
			lc2 = lc3.substring(ln-1,ln)+lc2;
			ln--;
		}
	}
	else lc2 = lc;
	return lc2;
	}

function checkNumber(number, msg, min, max) 
	{
		msg = msg+" field has invalid numeric data: "+number.value;
		var str = number.value;

		if (str==null || str=="" || !str) return true;
		if (str.substring(1,1)=="$") str = str.substring(2);
		if (!validNumber(str)) {alert(msg);
		return false;
	}	

	var num = parseFloat(str);
		if (min!=null && max!=null) {if (num<min || num>max) {alert(msg+" not in range ["+min+".."+max+"]");
		return false;}
	}
	number.value = str;
	return true;
	}

function validNumber(number) {
	var checknum = parseFloat(number);
	if (isNaN(checknum)) return false;
	return true;
	}

function calcFV(startamt, addamt, rate, periodsadded, periodsheld) {
	var lnResult = startamt;
	for (var ln=1; ln<periodsadded; ln++) {
		lnResult = lnResult+(lnResult*rate)+addamt;
	}
	if (periodsheld>0) {for (var ln=1; ln<periodsheld; ln++) {
		lnResult = lnResult+(lnResult*rate);
	}
}
return lnResult;

}

function padLeft(tcString,tnLength,tcChar) {
	if (tcChar==null) tcChar = " ";
	if (tcString.length>tnLength) {
		return "~"+tcString.substring(tcString.length-(tnLength-1),tcString.length)} 
	else {
	if (tcString.length==tnLength) {return tcString} 
	else {var lnx = tnLength-tcString.length;

	for (var ln=0; ln<lnx; ln++) {tcString = tcChar+tcString} return tcString} } } 

function padRight(tcString,tnLength,tcChar)
 {
  if (tcChar==null) tcChar = " ";
  if (tcString.length>tnLength) {
     return tcString.substring(0,tnLength-1)+"~"} 
  else {
     if (tcString.length==tnLength) {
     return tcString 
     } 
  else {
     var lnx = tnLength-tcString.length;
     for (var ln=0; ln<lnx; ln++) {
        tcString = tcString+tcChar 
     } 
     return tcString
  } 
  } 
 } 

function mathRemainder(tnValue,tnDivisor) {
  if (tnValue==null) return 0;
  if (tnDivisor==null) return 0;

  var lnTimes = Math.floor(tnValue/tnDivisor);
  return tnValue-(lnTimes*tnDivisor)
} 

function replaceSubstring(input, from, to) {
  var output='';
  var count=0;
  while(input.length >= from.length && input.length > 0 && from.length > 0) 
  {
    if(input.substring(0,from.length) == from)
    {
      output += to;input = input.substring(from.length);
    }
    else
    {
      output += input.substring(0,1);
      input = input.substring(1);
    }
  }
  output += input;
  if(count == 0)return output;
  return replaceSubstring(output, from, to);
} 

function IsEmpty(aTextField) 
  {
    if ((aTextField.value.length==0) ||(aTextField.value==null))
    {
      return true;
    }
    else
    {
      return false;
    }
 }

function IsNumeric(sText)
{  
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
  for (i = 0; i < sText.length && IsNumber == true; i++)
  {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
      { 
        IsNumber = false;
      }
   }
   return IsNumber;
}
