// Created by: Michael Yun Zhou
// Created on: Jan 8, 2009

function loancalc_setcookie(name, val, expire)
{
    var exp_date = new Date();
    exp_date.setDate(exp_date.getDate()+expire);
    document.cookie = name+"="+escape(val)+((expire==null) ? "" : ";expires="+exp_date.toGMTString());
}

// Open the lightbox
function loancalc_openbox()
{
	var box = document.getElementById('loan_calculator');
	document.getElementById('loancalc_filter').style.display='block';

	loancalc_gradient('loan_calculator', 0);
	loancalc_fadein('loan_calculator');
    loancalc_submit();
}


// Close the lightbox
function loancalc_closebox()
{
   document.getElementById('loan_calculator').style.display='none';
   document.getElementById('loancalc_filter').style.display='none';
}

function loancalc_gradient(id, level)
{
	var box = document.getElementById(id);
	box.style.opacity = level;
	box.style.MozOpacity = level;
	box.style.KhtmlOpacity = level;
	box.style.filter = "alpha(opacity=" + level * 100 + ")";
	box.style.display="block";
	return;
}


function loancalc_fadein(id)
{
	var level = 0;
	while(level <= 1)
	{
		setTimeout( "loancalc_gradient('" + id + "'," + level + ")", (level* 1000) + 10);
		level += 0.01;
	}
}

function loancalc_submit()
{
    // first we need some verification on the fields
    var loan_amount = document.getElementById('loancalc_amount').value;
    loan_amount = loan_amount.replace(',', '');
    if (loan_amount.indexOf('.') == -1)
        loan_amount = loan_amount+'.00';

    var loan_down = document.getElementById('loancalc_down').value;
    loan_down = loan_down.replace(',', '');
    if (loan_down.indexOf('.') == -1)
        loan_down = loan_down+'.00';

    var loan_trade = document.getElementById('loancalc_trade').value;
    loan_trade = loan_trade.replace(',', '');
    if (loan_trade.indexOf('.') == -1)
        loan_trade = loan_trade+'.00';

    var loan_interest = document.getElementById('loancalc_interest').value;
    var loan_term = document.getElementById('loancalc_term').value;

    var errormsg = document.getElementById('loancalc_err');
    var money_regex = /[0-9]+\.[0-9]{2,}/;

    if (loan_amount == '')
        errormsg.innerHTML = 'Loan amount is missing!';
    else if (loan_amount.match(money_regex) != loan_amount)
        errormsg.innerHTML = 'Loan amount is improperly formatted! (use one of the following formats: 1000 1,000 1,000.00 1000.00)';
    else if (loan_down != '' && loan_down.match(money_regex) != loan_down)
        errormsg.innerHTML = 'Loan down payment is improperly formatted! (use one of the following formats: 1000 1,000 1,000.00 1000.00)';
    else if (loan_trade != '' && loan_trade.match(money_regex) != loan_trade)
        errormsg.innerHTML = 'Loan trade-in is improperly formatted! (use one of the following formats: 1000 1,000 1,000.00 1000.00)';
    else if (loan_interest == '')
        errormsg.innerHTML = 'Interest rate is missing!';
    else if (loan_term == '')
        errormsg.innerHTML = 'Loan term is missing!';
    else if (loan_term < 6 || loan_term > 96)
        errormsg.innerHTML = 'Term of loan must be between 6 and 96!';
    else
    {
        // we're good
        // set some of these values in a cookie, so users will have the same ones for other cars
        loancalc_setcookie("userpref[loancalc_down]", loan_down, 7);
        loancalc_setcookie("userpref[loancalc_trade]", loan_trade, 7);
        loancalc_setcookie("userpref[loancalc_rate]", loan_interest, 7);
        loancalc_setcookie("userpref[loancalc_term]", loan_term, 7);

        //do the calculation and show the result
        var monthly_interest = loan_interest/1200;
        var adjust_amount = loan_amount;
        if (loan_down != '')
            adjust_amount = adjust_amount - loan_down;
        if (loan_trade != '')
            adjust_amount = adjust_amount - loan_trade;
        var payments = adjust_amount*(monthly_interest/(1-Math.pow((1+monthly_interest), (0-loan_term))));
        payments = payments.toFixed(2);
        document.getElementById('loancalc_result').value = payments;
    }
}

