﻿// JScript File
function Pair( first, second) {
    this.First = first;
    this.Second = second;
}

function Calc() {
    var amount = parseFloat(document.getElementById("amount").value);
    var interest = parseFloat(document.getElementById("interest").value);
    var statusDiv = document.getElementById("calc_status");
    
    if (amount < 10000)
    {
        statusDiv.innerHTML= "You must enter a debt amount of over $10,000";
        statusDiv.style.display = "block";
        return;
    }
    else
    {
        statusDiv.style.display = "none";
    }
    if (interest < 1)
    {
        statusDiv.innerHTML= "Please enter the interest as a whole number (i.e. for 10% enter 10)";
        statusDiv.style.display = "block";
        return;
    }
    else
    {
        statusDiv.style.display = "none";
    }

    var total1 = CalculateLoan(1, amount, 0.11, 5);
    var total2 = CalculateLoan(2, amount, 0.24, 5);
    var total3 = CalculateCCLoan(3, amount, interest / 100, 60);
    var total4 = CalculateDS(4, amount);

    RenderChart("VisifireChart0", "MyChart0", "$0.00", "Monthly Payments", total1.Second, total2.Second, total3.Second, total4.Second);
    RenderChart("VisifireChart1", "MyChart1", "$0,000", "Total Cost", total1.First, total2.First, total3.First, total4.First);
}

function RenderChart(id, chart, format, title, value1, value2, value3, value4){
    var vChart = new Visifire2('_js/SL.Visifire.Charts.xap', chart, 300, 300);
    var chartXml = '<vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts" Width="300" Height="300" BorderThickness="0.5" Padding="3" View3D="True" Watermark="False"  >'
       + '     <vc:Chart.Titles>'
       + '         <vc:Title Text="' + title + '" FontSize="12"/>'
       + '     </vc:Chart.Titles>'
       + '<vc:Chart.AxesY>'
       + '  <vc:Axis ValueFormatString="' + format + '" />'
       + '</vc:Chart.AxesY>'
       + '     <vc:Chart.Series>'
       + '         <vc:DataSeries RenderAs="Column" LabelEnabled="True">'
       + '             <vc:DataSeries.DataPoints>'
       + '                 <vc:DataPoint AxisXLabel="Consolidation Loan" Color="Blue" YValue="' + value1 + '"/>'
       + '                 <vc:DataPoint AxisXLabel="Credit Counseling" Color="Blue" YValue="' + value2 + '"/>'
       + '                 <vc:DataPoint AxisXLabel="Do Nothing" Color="Blue" YValue="' + value3 + '"/>'
       + '                 <vc:DataPoint AxisXLabel="Debt Settlement" Color="Green" YValue="' + value4 + '"/>'
       + '             </vc:DataSeries.DataPoints>'
       + '         </vc:DataSeries>'
       + '     </vc:Chart.Series>'
       + ' </vc:Chart>';
    vChart.setDataXml(chartXml);
    vChart.render(id);

}
function CalculateDS(index, L) {
    var Total = L * 0.55;
    var t = Math.floor(L / 10000 + 0.9) + 1;
    var n = t * 2 + 24;
    if (L < 10999) n = 26;
    else if (L < 11999) n = 28;
    
    if (n > 36) n = 36;
    var P = Total / n;

    var row = document.getElementById("total_unsecured_debt");
    row.cells[index].innerHTML = formatCurrency(L);

    row = document.getElementById("number_of_payments");
    row.cells[index].innerHTML = n;

    row = document.getElementById("interest_rate");
    row.cells[index].innerHTML = 'None';

    row = document.getElementById("interest_paid");
    row.cells[index].innerHTML = "None";

    row = document.getElementById("monthly_payment");
    row.cells[index].innerHTML = formatCurrency(P);

    row = document.getElementById("total_cost");
    row.cells[index].innerHTML = formatCurrency(Total);

    return new Pair(Total, P);
}

function CalculateLoan(index, L, I, T) {
    var i = I / 12;
    var n = T * 12;
    var P = (L * i) / (1 - Math.exp(-n * Math.log(1 + i)));
    var Total = P * n;
    var TotalInterest = Total - L;

    var row = document.getElementById("total_unsecured_debt");
    row.cells[index].innerHTML = formatCurrency(L);

    row = document.getElementById("number_of_payments");
    row.cells[index].innerHTML = n;

    row = document.getElementById("interest_rate");
    if (index == 2) {
        row.cells[index].innerHTML = 'variable';
    }
    else {
        row.cells[index].innerHTML = (I * 100) + '%';
    }

    row = document.getElementById("interest_paid");
    row.cells[index].innerHTML = formatCurrency(TotalInterest);

    row = document.getElementById("monthly_payment");
    row.cells[index].innerHTML = formatCurrency(P);

    row = document.getElementById("total_cost");
    row.cells[index].innerHTML = formatCurrency(Total);

    return new Pair(Total, P);
}
function CalculateCCLoan(index, L, I, T) {
    var b = L;
    var i = (I + 0.015) / 12;
    var n = 0;
    var Total = 0;
    var TotalInterest = 0;
    
    while (b > 0) {
        var p = b * 0.03;
        var ip = i * b;
        
        if (p < 10) p = 10;
        if (p > b) p += ip;

        b -= p - ip;

        TotalInterest += ip;
        Total += p;
        n++;
    }
    var P = L * 0.03;

    var row = document.getElementById("total_unsecured_debt");
    row.cells[index].innerHTML = formatCurrency(L);

    row = document.getElementById("number_of_payments");
    row.cells[index].innerHTML = n;

    row = document.getElementById("interest_rate");
    row.cells[index].innerHTML = (I * 100) + '%';

    row = document.getElementById("interest_paid");
    row.cells[index].innerHTML = formatCurrency(TotalInterest);

    row = document.getElementById("monthly_payment");
    row.cells[index].innerHTML = "variable";

    row = document.getElementById("total_cost");
    row.cells[index].innerHTML = formatCurrency(Total);

    return new Pair(Total, P);
}

function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
    num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}