function set_text(id, value)
{
    var control = document.getElementById(id);
    control.innerHTML = value;
}

function calculate()
{
    try
    {
        var system_size = parseFloat(document.getElementById("SystemSizeControl").value);
        var price_per_watt = parseFloat(document.getElementById("PricePerWattControl").value);
        var rebate_per_watt = parseFloat(document.getElementById("RebatePerWattControl").value);
        var orientation_rating = parseFloat(document.getElementById("OrientationControl").value);
        var organization = document.getElementById("OrganizationControl").value;
        var RE_ITC = document.getElementById("RE_ITC_control").value;

        var installed_cost = system_size * price_per_watt;
        var rebate = rebate_per_watt * system_size;

        set_text("display_cost_before_rebate", "+$" + installed_cost.toFixed(0) );

              // Assume residential
        var NY_tax_credit_cap = 5000;
        var Fed_tax_credit_cap = 2000;

        if (organization == "Business")
        {
            if ( RE_ITC == "expire")
            {
                Fed_tax_credit_cap = 0;
            }
            else
            {
                Fed_tax_credit_cap = 1000000;
            }
            NY_tax_credit_cap = 0;
        }
        else if (organization == "Non-profit")
        {
                 // Non-profits don't pay tax
            Fed_tax_credit_cap = 0;
            NY_tax_credit_cap = 0;
            rebate = rebate + system_size;
        }
        else // Residential
        {
            if ( RE_ITC == "expire")
            {
                Fed_tax_credit_cap = 0;
            }
            else if ( RE_ITC == "renew" )
            {
                Fed_tax_credit_cap = 2000;
            }
            else if ( RE_ITC == "remove_cap" )
            {
                Fed_tax_credit_cap = 1000000;
            }
        }

        set_text("display_rebate", "-$" + rebate.toFixed(0));

        var cost_after_rebate = installed_cost - rebate;
        set_text("display_cost_after_rebate", "$" + cost_after_rebate.toFixed(0));

        var NY_tax_credit = cost_after_rebate * 0.25;

        if ( NY_tax_credit > NY_tax_credit_cap ) NY_tax_credit = NY_tax_credit_cap;
        if ( Fed_tax_credit > Fed_tax_credit_cap ) Fed_tax_credit = Fed_tax_credit_cap;

        var Fed_tax_credit = cost_after_rebate * 0.30;
        if ( Fed_tax_credit > Fed_tax_credit_cap) Fed_tax_credit = Fed_tax_credit_cap;

        var income_tax = NY_tax_credit * 0.28;

        var out_of_pocket_cost = cost_after_rebate - NY_tax_credit - Fed_tax_credit + income_tax;
        out_of_pocket_cost.toFixed(0);


        set_text("NY_credit", "-$" + NY_tax_credit);
        set_text("Fed_credit", "-$" + Fed_tax_credit);
        set_text("Income_tax", "+$" + income_tax.toFixed(0));
        set_text("cost", "$" + out_of_pocket_cost);

        var simple_payback = out_of_pocket_cost / ( system_size * orientation_rating * 0.20 );
        set_text("display_simple_payback", simple_payback.toFixed(1) + " years");
    }
    catch (e)
    {
        alert(e.name);
    }
}
