//this came from http://developer.irt.org/script/6.htm
function cent(amount) {
// returns the amount in the .99 format 
    amount -= 0;
    amount = (Math.round(amount*100))/100;
    return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
}

//these are all mine...//
//we have the term
function buildTableTerm(P,I,L,LT)
{
    var J,N,m,H,C,Q,Tm,TH,TC,count;
    //cleanup inputs
    P = parseFloat(P);
    I = parseFloat(I);
    J = I / 1200;
    if (LT==1)
    {
        N = L * 12;
    }
    else
    {
        N = L;
    }
    m = P*(J/(1-(Math.pow((1+J),-N))));
    Tm = 0;
    TH = 0;
    TC = 0;
    count = 0;
    
    document.output.document.open();
    document.output.document.writeln("<input type=button name=printme value=Print onclick=\"window.print();\">");
    document.output.document.writeln("<table border=1 cellspacing=0 cellpadding=3 STYLE=\"border-collapse: collapse\" BORDERCOLOR=\"#111111\">");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <th>#</th>");
    document.output.document.writeln("    <th>Payment</th>");
    document.output.document.writeln("    <th>Interest</th>");
    document.output.document.writeln("    <th>Principal</th>");
    document.output.document.writeln("    <th>Balance</th>");
    document.output.document.writeln("  </tr>");
    while (P > 0.004)
    {
        count++;
        H = P * J;
        TH += H;
        C = m - H;
        TC += C;
        Q = P - C;
        //output here somehow
        if (H > m) break;
        Tm += m;
        document.output.document.writeln("  <tr>");
        document.output.document.writeln("    <td align=center>"+count+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(m)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(H)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(C)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(Q)+"</td>");
        document.output.document.writeln("  </tr>");
        P = Q;
    }
    document.amortize.M.value=cent(m);
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>$"+cent(Tm)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TH)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TC)+"</td>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("</table>");
    document.output.document.close();
}

//we have the payment
function buildTablePayment(P,I,M)
{
    var J,N,H,C,Q,Tm,TH,TC,count;
    //cleanup inputs
    P = parseFloat(P);
    I = parseFloat(I);
    M = parseFloat(cent(M));
    J = I / 1200;
    Tm = 0;
    TH = 0;
    TC = 0;
    count = 0;
    
    document.output.document.open();
    document.output.document.writeln("<input type=button name=printme value=Print onclick=\"window.print();\">");
    document.output.document.writeln("<table border=1 cellspacing=0 cellpadding=3 STYLE=\"border-collapse: collapse\" BORDERCOLOR=\"#111111\">");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <th>#</th>");
    document.output.document.writeln("    <th>Payment</th>");
    document.output.document.writeln("    <th>Interest</th>");
    document.output.document.writeln("    <th>Principal</th>");
    document.output.document.writeln("    <th>Balance</th>");
    document.output.document.writeln("  </tr>");
    while (P > 0.004)
    {
        count++;
        H = P * J;
        //if ((2 * M) > (P + H)) M = P + H;
        if ((P - M - H) <= 0) M = P + H;
        TH += H;
        C = M - H;
        TC += C;
        Q = P - C;
        //output here somehow
        if (H > M) break;
        Tm += M;
        document.output.document.writeln("  <tr>");
        document.output.document.writeln("    <td align=center>"+count+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(M)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(H)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(C)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(Q)+"</td>");
        document.output.document.writeln("  </tr>");
        P = Q;
    }
    document.amortize.L.value=count;
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>$"+cent(Tm)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TH)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TC)+"</td>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("</table>");
    document.output.document.close();
}

//we have term and so on, but need principal
function buildTableMonthly(M,I,L,LT)
{
    var J,N,P,H,C,Q,Tm,TH,TC,count;
    //cleanup inputs
    M = parseFloat(M);
    I = parseFloat(I);
    J = I / 1200;
    if (LT==1)
    {
        N = L * 12;
    }
    else
    {
        N = L;
    }
    P = (M*(1-(Math.pow((1 + J),-N))))/J;
    document.amortize.P.value=cent(P);
    Tm = 0;
    TH = 0;
    TC = 0;
    count = 0;
    
    document.output.document.open();
    document.output.document.writeln("<input type=button name=printme value=Print onclick=\"window.print();\">");
    document.output.document.writeln("<table border=1 cellspacing=0 cellpadding=3 STYLE=\"border-collapse: collapse\" BORDERCOLOR=\"#111111\">");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <th>#</th>");
    document.output.document.writeln("    <th>Payment</th>");
    document.output.document.writeln("    <th>Interest</th>");
    document.output.document.writeln("    <th>Principal</th>");
    document.output.document.writeln("    <th>Balance</th>");
    document.output.document.writeln("  </tr>");
    while (P > 0.004)
    {
        count++;
        H = P * J;
        TH += H;
        C = M - H;
        TC += C;
        Q = P - C;
        //output here somehow
        if (H > M) break;
        Tm += M;
        document.output.document.writeln("  <tr>");
        document.output.document.writeln("    <td align=center>"+count+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(M)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(H)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(C)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(Q)+"</td>");
        document.output.document.writeln("  </tr>");
        P = Q;
    }
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>$"+cent(Tm)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TH)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TC)+"</td>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("</table>");
    document.output.document.close();
}

//we need to figure out interest
function buildTableInterest(P,M,L,LT)
{
    var J,N,m,H,C,Q,Tm,TH,TC,count;
    //cleanup inputs
    P = parseFloat(P);
    M = parseFloat(cent(M));
    J = 0.0;
    if (LT==1)
    {
        N = L * 12;
    }
    else
    {
        N = L;
    }
    while (!(M<=(P*(J/(1-(Math.pow((1 + J),-N)))))))
    {
        J += 0.000001;
    }
    Tm = 0;
    TH = 0;
    TC = 0;
    count = 0;
    
    document.output.document.open();
    document.output.document.writeln("<input type=button name=printme value=Print onclick=\"window.print();\">");
    document.output.document.writeln("<table border=1 cellspacing=0 cellpadding=3 STYLE=\"border-collapse: collapse\" BORDERCOLOR=\"#111111\">");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <th>#</th>");
    document.output.document.writeln("    <th>Payment</th>");
    document.output.document.writeln("    <th>Interest</th>");
    document.output.document.writeln("    <th>Principal</th>");
    document.output.document.writeln("    <th>Balance</th>");
    document.output.document.writeln("  </tr>");
    while (P > 0.004)
    {
        count++;
        H = P * J;
        TH += H;
        C = M - H;
        TC += C;
        Q = P - C;
        //output here somehow
        if (H > M) break;
        Tm += M;
        document.output.document.writeln("  <tr>");
        document.output.document.writeln("    <td align=center>"+count+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(M)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(H)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(C)+"</td>");
        document.output.document.writeln("    <td align=center>$"+cent(Q)+"</td>");
        document.output.document.writeln("  </tr>");
        P = Q;
    }
    document.amortize.I.value=cent(J*1200);
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("    <td align=center>-----</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("  <tr>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("    <td align=center>$"+cent(Tm)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TH)+"</td>");
    document.output.document.writeln("    <td align=center>$"+cent(TC)+"</td>");
    document.output.document.writeln("    <td align=center>&nbsp;</td>");
    document.output.document.writeln("  </tr>");
    document.output.document.writeln("</table>");
    document.output.document.close();
}

function doAmortization()
{
    if (document.amortize.P.value==""&&document.amortize.I.value==""&&document.amortize.M.value==""&&document.amortize.L.value=="")
        alert("I'm sorry -- not all possible values have been inputted.  Please try again.");
    if (document.amortize.P.value=="")
    {
        buildTableMonthly(document.amortize.M.value,document.amortize.I.value,document.amortize.L.value,document.amortize.LT.value);
    }
    else if (document.amortize.I.value=="")
    {
        buildTableInterest(document.amortize.P.value,document.amortize.M.value,document.amortize.L.value,document.amortize.LT.value);
    }
    else if (document.amortize.M.value=="")
    {
        buildTableTerm(document.amortize.P.value,document.amortize.I.value,document.amortize.L.value,document.amortize.LT.value);
    }
    else if (document.amortize.L.value=="")
    {
        buildTablePayment(document.amortize.P.value,document.amortize.I.value,document.amortize.M.value);
    }
    else
        alert("Please leave a value blank and try again.");
}