// function for the loan/lease calculator

// residual percent
var rp = new Object();
rp['24'] = new Object();
rp['24']['high'] = 63;
rp['24']['average'] = 56;
rp['24']['below'] = 44;
rp['24']['poor'] = 38;
rp['36'] = new Object();
rp['36']['high'] = 55;
rp['36']['average'] = 48;
rp['36']['below'] = 37;
rp['36']['poor'] = 31;
rp['48'] = new Object();
rp['48']['high'] = 49;
rp['48']['average'] = 41;
rp['48']['below'] = 31;
rp['48']['poor'] = 25;
rp['60'] = new Object();
rp['60']['high'] = 42;
rp['60']['average'] = 36;
rp['60']['below'] = 26;
rp['60']['poor'] = 20;
rp['72'] = new Object();
rp['72']['high'] = 36;
rp['72']['average'] = 30;
rp['72']['below'] = 20;
rp['72']['poor'] = 15;

function recalculate() {
	var price = parseFloat(document.lease_loan_calc.price.value);
	var tax = parseFloat(document.lease_loan_calc.tax.value)/100;
	var dmv_fee = 0;
	var loan_downpayment = parseFloat(document.lease_loan_calc.downpayment.value.replace(/,/g, ''));
	var n = document.lease_loan_calc.term.selectedIndex;
	var loan_term = parseFloat(document.lease_loan_calc.term[n].value);
	var loan_apr = parseFloat(document.lease_loan_calc.apr.value)/100;

	var tax_payment = price*tax;
	var total_due = loan_downpayment + dmv_fee;
	var total_cost = price - loan_downpayment + dmv_fee + tax_payment;
	var i = loan_apr/12;
	var y = Math.pow(1+i,loan_term);
	var monthly_payment = (total_cost*y*i)/(y-1);
	var total_interest = monthly_payment*loan_term - total_cost;
	if (y==1) {
		monthly_payment = total_cost/loan_term;
		total_interest=0;
	}

	if (check(price) && check(tax) && check(dmv_fee) && check(loan_downpayment) && check(loan_term) && check(loan_apr)) {
//		document.lease_loan_calc.loan_amnt_due.value = round(total_due);
//		document.lease_loan_calc.loan_total_interest.value = round(total_interest);
//		document.lease_loan_calc.loan_payment.value = round(monthly_payment);
		document.getElementById('loan_amnt_due').innerHTML="$"+round(total_due);
		document.getElementById('loan_total_interest').innerHTML="$"+round(total_interest);
		document.getElementById('loan_payment').innerHTML="$"+round(monthly_payment);
		var deposit=round(monthly_payment);
		var deposit_chunk=deposit % 50;
		if (deposit_chunk > 0) {
			deposit_chunk=50-deposit_chunk;
			deposit=deposit+deposit_chunk;
			document.lease_loan_calc.lease_deposit.value=deposit;
		}
	} else {
//		document.lease_loan_calc.loan_amnt_due.value = '';
//		document.lease_loan_calc.loan_total_interest.value = '';
//		document.lease_loan_calc.loan_payment.value = '';
		document.getElementById('loan_amnt_due').innerHTML="$0";
		document.getElementById('loan_total_interest').innerHTML="$0";
		document.getElementById('loan_payment').innerHTML="$0";
	}

	var lease_reduction = parseFloat(document.lease_loan_calc.downpayment.value.replace(/,/g, ''));
	var lease_deposit = parseFloat(document.lease_loan_calc.lease_deposit.value);
	n = document.lease_loan_calc.term.selectedIndex;
	var lease_term = parseFloat(document.lease_loan_calc.term[n].value);
	var lease_apr = parseFloat(document.lease_loan_calc.apr.value)/100;
	n = document.lease_loan_calc.residual_rating.selectedIndex;
	var residual_rating = document.lease_loan_calc.residual_rating[n].value;
	var lease_residual = price * rp[lease_term][residual_rating]/100;
	//n = document.lease_loan_calc.lease_mileage.selectedIndex;
	//var lease_mileage = parseFloat(document.lease_loan_calc.lease_mileage[n].value);

	var monthly_finance = lease_apr/24*(price + lease_residual);
	var monthly_depreciation = (price - lease_residual)/lease_term;
	total_due = lease_reduction + lease_deposit + dmv_fee;
	monthly_payment = monthly_finance + monthly_depreciation + tax*(monthly_finance + monthly_depreciation) - (lease_reduction/lease_term);

	if (check(price) && check(lease_deposit) && check(dmv_fee) && check(lease_reduction) && check(lease_residual) && check(lease_term) && check(lease_apr)) {
		document.lease_loan_calc.lease_amnt_due.value = round(total_due);
//		document.lease_loan_calc.lease_payment.value = round(monthly_payment);
		document.getElementById('lease_amnt_due').innerHTML="$"+round(total_due);
		document.getElementById('lease_payment').innerHTML="$"+round(monthly_payment);
		if (lease_deposit == 0) {
			calc_lease_deposit(monthly_payment);
		}
	} else {
		document.lease_loan_calc.lease_amnt_due.value = '';
//		document.lease_loan_calc.lease_payment.value = '';
		document.getElementById('lease_amnt_due').innerHTML="$0";
        document.getElementById('lease_payment').innerHTML="$0";
	}
}

function check(x) {
	return (!isNaN(x) && (x != Number.POSITIVE_INFINITY) && (x != Number.NEGATIVE_INFINITY));
}

function round(x) {
	return Math.round(x*100)/100;
}

function calc_lease_deposit(monthly) {
	var deposit = round(monthly);
	var mod = deposit % 50;
	if (mod > 0) {
		deposit += 50 - mod;
	}
	document.lease_loan_calc.lease_deposit.value = deposit;
	document.lease_loan_calc.lease_amt_due.value = parseFloat(document.lease_loan_calc.lease_amt_due.value) + deposit;
	document.getElementById('lease_deposit').innerHTML="$"+deposit;
	document.getElementById('lease_amnt_due').innerHTML="$"+parseFloat(document.lease_loan_calc.lease_amnt_due.value) + deposit;
}

