// Loan section
var salesPriceLoan = 0.00;
var salesTaxLoan = 0.00;
var loanTermLoan = 0.00;
var interestRateLoan = 0.00;
var downPaymentLoan = 0.00;
var tradeInValueLoan = 0.00;
var rebatesLoan = 0.00;

// Lease section
var salesPriceLease = 0.00;
var salesTaxLease = 0.00;
var loanTermLease = 0.00;
var interestRateLease = 0.00;
var residualValueLease = 0.00;
var downPaymentLease = 0.00;
var tradeInValueLease = 0.00;
var rebatesLease = 0.00;

function CalculateLoan() {
	salesPriceLoan = 0.00;
	salesTaxLoan = 0.00;
	loanTermLoan = 0.00;
	interestRateLoan = 0.00;
	downPaymentLoan = 0.00;
	tradeInValueLoan = 0.00;
	rebatesLoan = 0.00;

	var loan = document.getElementById('loan');
	var loanAmount = document.getElementById('loanAmount');
	var loanAmountWarning = document.getElementById('loanAmountWarning');

	loanAmountWarning.style.display = 'none';

	if (doLoanValidation()) {
		interestRateLoan = interestRateLoan / 100;
		interestRateLoan = interestRateLoan / 12;
		salesTaxLoan = salesTaxLoan / 100;

		var loanAmt = (salesPriceLoan * (1 + salesTaxLoan)) - downPaymentLoan - tradeInValueLoan - rebatesLoan;
		var loanPayment = loanAmt * (interestRateLoan * Math.pow(1 + interestRateLoan, loanTermLoan)) / (Math.pow(1 + interestRateLoan, loanTermLoan) - 1);

		if (loanPayment < 0.00 || isNaN(loanPayment) )
			loanPayment = 0.00;

		loan.innerHTML = loanPayment.toFixed(2);
		loanAmount.style.display = '';
		loanAmountWarning.style.display = 'none';
	} else {
		loanAmount.style.display = 'none';
		loanAmountWarning.style.display = '';
	}
}

function CalculateLease() {
	salesPriceLease = 0.00;
	salesTaxLease = 0.00;
	loanTermLease = 0.00;
	interestRateLease = 0.00;
	residualValueLease = 0.00;
	downPaymentLease = 0.00;
	tradeInValueLease = 0.00;
	rebatesLease = 0.00;

	var lease = document.getElementById('lease');
	var leaseAmount = document.getElementById('leaseAmount');
	var leaseAmountWarning = document.getElementById('leaseAmountWarning');

	leaseAmountWarning.style.display = 'none';

	if (doLeaseValidation()) {
		if (salesTaxLease >= 1)
			salesTaxLease = salesTaxLease / 100;

		var clearPrice = salesPriceLease - downPaymentLease - tradeInValueLease - rebatesLease;
		var loanAmount = clearPrice - residualValueLease; 
		var basePayment = 0.00;

		if(loanTermLease >= 1)
			basePayment = loanAmount / loanTermLease;

		basePayment = Math.round(basePayment * 100) / 100;
		var moneyFactor = interestRateLease / 2400;

		moneyFactor = Math.round(moneyFactor * 100000) / 100000;

		var leasePayment = (clearPrice + residualValueLease) * moneyFactor + basePayment;
		leasePayment = Math.round(leasePayment * 100) / 100;
		leasePayment = leasePayment + leasePayment * salesTaxLease;

		if (leasePayment < 0.00 || isNaN(leasePayment) )
			leasePayment = 0.00;

		lease.innerHTML = leasePayment.toFixed(2);
		leaseAmount.style.display = '';
		leaseAmountWarning.style.display = 'none';
	} else {
		leaseAmount.style.display = 'none';
		leaseAmountWarning.style.display = '';
	}
}

function doCalculation() {
	if (document.getElementById('loan'))
		CalculateLoan();
	if (document.getElementById('lease'))
		CalculateLease();
}

// Lease code
function doLeaseValidation() {
	if (doFieldValidation(document.getElementById('_txtSalesPriceLease'), false))
		salesPriceLease = parseFloat(document.getElementById('_txtSalesPriceLease').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtSalesTaxLease'), true))
		salesTaxLease = parseFloat(document.getElementById('_txtSalesTaxLease').value);
	else if (isEmpty(document.getElementById('_txtSalesTaxLease').value))
		salesTaxLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTermLease'), false))
		loanTermLease = parseFloat(document.getElementById('_txtTermLease').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtInterestRateLease'), false))
		interestRateLease = parseFloat(document.getElementById('_txtInterestRateLease').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtResidualValueLease'), false))
		residualValueLease = parseFloat(document.getElementById('_txtResidualValueLease').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtDownPaymentLease'), true))
		downPaymentLease = parseFloat(document.getElementById('_txtDownPaymentLease').value);
	else if (isEmpty(document.getElementById('_txtDownPaymentLease').value))
		downPaymentLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTradeInValueLease'), true))
		tradeInValueLease = parseFloat(document.getElementById('_txtTradeInValueLease').value);
	else if (isEmpty(document.getElementById('_txtTradeInValueLease').value))
		tradeInValueLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtRebatesLease'), true))
		rebatesLease = parseFloat(document.getElementById('_txtRebatesLease').value);
	else if (isEmpty(document.getElementById('_txtRebatesLease').value))
		rebatesLease = 0;
	else
		return false;

	return true;
}

// Loan code
function doLoanValidation() {
	if (doFieldValidation(document.getElementById('_txtSalesPriceLoan'), false))
		salesPriceLoan = parseFloat(document.getElementById('_txtSalesPriceLoan').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtSalesTaxLoan'), true))
		salesTaxLoan = parseFloat(document.getElementById('_txtSalesTaxLoan').value);
	else if (isEmpty(document.getElementById('_txtSalesTaxLoan').value))
		salesTaxLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTermLoan'), false))
		loanTermLoan = parseFloat(document.getElementById('_txtTermLoan').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtInterestRateLoan'), false))
		interestRateLoan = parseFloat(document.getElementById('_txtInterestRateLoan').value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtDownPaymentLoan'), true))
		downPaymentLoan = parseFloat(document.getElementById('_txtDownPaymentLoan').value);
	else if (isEmpty(document.getElementById('_txtDownPaymentLoan').value))
		downPaymentLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTradeInValueLoan'), true))
		tradeInValueLoan = parseFloat(document.getElementById('_txtTradeInValueLoan').value);
	else if (isEmpty(document.getElementById('_txtTradeInValueLoan').value))
		tradeInValueLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtRebatesLoan'), true))
		rebatesLoan = parseFloat(document.getElementById('_txtRebatesLoan').value);
	else if (isEmpty(document.getElementById('_txtRebatesLoan').value))
		rebatesLoan = 0;
	else
		return false;

	return true;
}

function doFieldValidation(field, isEmptyAllowed) {
		var input = field.value;
		
		if (!isEmptyAllowed && isEmpty(input)) {
			select(field);
			return false;
		} else if (isEmptyAllowed && isEmpty(input))
			return false;

		input = parseFloat(field.value, 10);

		if (isNaN(input) || (input != field.value)) {
			alert(field.name + " must be a number.");
			select(field);
			return false;
		}

		return true;
}

function isEmpty(inputStr) {
	if (inputStr == "" || inputStr == null)
		return true;

	return false;
}

function select(field) {
	field.focus();
	field.select();
}

function SwitchToLease() {
	var div = document.getElementById('_loanCalculator');
	div.style.display = 'none';
	div = document.getElementById('_leaseCalculator');
	div.style.display = 'block';
}

function SwitchToLoan() {
	var div = document.getElementById('_loanCalculator');
	div.style.display = 'block';
	div = document.getElementById('_leaseCalculator');
	div.style.display = 'none';
}


$(document).ready(function () {
	doCalculation();
});