<!--


// Balance(n) = P(1 + r)^n + c[((1 + r)^(n + 1) - (1 + r))/r]
// P = principal
// r = interest rate
// n = number of years
// c = contribution amount

function GrowthWithContribution(P, r, n, c)
{

var prin = parseFloat(P);
var rate = parseFloat(r/100);
var years = parseFloat(n);
var contrib = parseFloat(c);
var term = parseFloat(1 + rate);
var termN = Math.pow(term, years);
var termC = 1;

    termC = parseFloat((Math.pow(term, (years + 1)) - term) / rate);

    return ((prin * termN) + (contrib * termC));
}



// Amount(monthly) = (P * r) / (1 - (1 + r)^(-n))
// P = principal
// r = interest rate (per month, not year)
// n = number of payments
// A = payment amount

function FindNumPayments(P, r, A)
{

var prin = parseFloat(P);
var rate = parseFloat(r/1200);
var amount = parseFloat(A);
var months = parseFloat(50);

var term = parseFloat(1 + rate);
var termD = 1;
var termDiff = 1;

    term = parseFloat(1 + rate);

    for (var i = 0; i < 31; i++)
    {
        termD = parseFloat((prin * rate) / (1 - (Math.pow(term, (0 - months)))));
        termDiff = parseFloat(amount - termD);

        months = months - (termDiff / 20);
    }

    return (months);
}


// Monthly rate = (1 + annual rate)^(1/12) - 1

function ConvertAnnualRateToMonthly(r)
{

var rate = parseFloat(r/100);
var term = parseFloat(1 + rate);
var termRate;

    termRate = parseFloat((Math.pow(term, (1/12))) - 1);

    return (termRate * 100);
}

// Annual rate = (1 + monthly rate)^(12) - 1

function ConvertMonthlyRateToAnnual(r)
{

var rate = parseFloat(r/1200);
var term = parseFloat(1 + rate);
var termRate;

    termRate = parseFloat((Math.pow(term, 12)) - 1);

    return (termRate * 100);
}


// Amount(monthly) = (P * r) / (1 - (1 + r)^(-n))
// P = principal
// r = interest rate (per month, not year)
// n = number of payments
// A = payment amount

function FindInterestRate(P, n, A)
{

var prin = parseFloat(P);
var rate = parseFloat(8/1200);  // 12 for months and 100 for percent
var months = parseFloat(n);
var amount = parseFloat(A);
var term = parseFloat(1 + rate);
var termD = 1;
var termGoal = parseFloat(amount / prin);
var termDiff = 1;

    for (var i = 0; i < 31; i++)
    {
        term = parseFloat(1 + rate);
        termD = parseFloat(rate / (1 - (Math.pow(term, (0 - months)))));
        termDiff = parseFloat(termGoal - termD);

        rate = rate + (termDiff / 2);
    }

    return (rate * 1200);
}


// Balance(n) = P(1 + r)^n + c[((1 + r)^(n + 1) - (1 + r))/r]
// P = principal
// r = interest rate
// n = number of payments

function FindMonthlyInterest(P, r, n, A)
{

var prin = parseFloat(P);
var rate = parseFloat(r/1200);
var months = parseFloat(n);
var amount = parseFloat(A);
var term = parseFloat(1 + rate);
var termN = Math.pow(term, months);
var interestAmount = 1;

    var interestAmount = parseFloat(prin * rate);
    var prinMonthlyAmount = parseFloat(amount - interestAmount);
    var prinAmount = parseFloat(prin - prinMonthlyAmount);

    return (interestAmount);
}


// Principal remaining P(t) = P * (r ^ t) - A(((r ^ t) - 1) / (t - 1))

function FindPrincipalRemaining(P, r, n, A)
{
    var termRT = parseFloat(Math.pow(r, n));
    var term1 = parseFloat(P * termRT);
    var term2 = parseFloat((termRT - 1) / (n - 1));
    return(term1 - (A * term2));
}

// borrowed from http://www.sonofsofaman.com/hobbies/code/js/formatcurrency.asp
function formatCurrency(strValue)
{
  strValue = strValue.toString().replace(/\$|\,/g,'');
  dblValue = parseFloat(strValue);

  blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
  dblValue = Math.floor(dblValue*100+0.50000000001);
  intCents = dblValue%100;
  strCents = intCents.toString();
  dblValue = Math.floor(dblValue/100).toString();
  if(intCents<10)
    strCents = "0" + strCents;
  for (var i = 0; i < Math.floor((dblValue.length-(1+i))/3); i++)
    dblValue = dblValue.substring(0,dblValue.length-(4*i+3))+','+
    dblValue.substring(dblValue.length-(4*i+3));
  return (((blnSign)?'':'-') + dblValue + '.' + strCents);
}


//-->


