// 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(id) {
	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' + id);
	var loanAmount = document.getElementById('loanAmount' + id);
	var loanAmountWarning = document.getElementById('loanAmountWarning' + id);

	loanAmountWarning.style.display = 'none';

	if (doLoanValidation(id)) {
		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(id) {
	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' + id);
	var leaseAmount = document.getElementById('leaseAmount' + id);
	var leaseAmountWarning = document.getElementById('leaseAmountWarning' + id);

	leaseAmountWarning.style.display = 'none';

	if (doLeaseValidation(id)) {
		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(id) {
	if (document.getElementById('loan' + id))
		CalculateLoan(id);
	if (document.getElementById('lease' + id))
		CalculateLease(id);
}

// Lease code
function doLeaseValidation(id) {
	if (doFieldValidation(document.getElementById('_txtSalesPriceLease' + id), false))
		salesPriceLease = parseFloat(document.getElementById('_txtSalesPriceLease' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtSalesTaxLease' + id), true))
		salesTaxLease = parseFloat(document.getElementById('_txtSalesTaxLease' + id).value);
	else if (isEmpty(document.getElementById('_txtSalesTaxLease' + id).value))
		salesTaxLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTermLease' + id), false))
		loanTermLease = parseFloat(document.getElementById('_txtTermLease' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtInterestRateLease' + id), false))
		interestRateLease = parseFloat(document.getElementById('_txtInterestRateLease' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtResidualValueLease' + id), false))
		residualValueLease = parseFloat(document.getElementById('_txtResidualValueLease' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtDownPaymentLease' + id), true))
		downPaymentLease = parseFloat(document.getElementById('_txtDownPaymentLease' + id).value);
	else if (isEmpty(document.getElementById('_txtDownPaymentLease' + id).value))
		downPaymentLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTradeInValueLease' + id), true))
		tradeInValueLease = parseFloat(document.getElementById('_txtTradeInValueLease' + id).value);
	else if (isEmpty(document.getElementById('_txtTradeInValueLease' + id).value))
		tradeInValueLease = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtRebatesLease' + id), true))
		rebatesLease = parseFloat(document.getElementById('_txtRebatesLease' + id).value);
	else if (isEmpty(document.getElementById('_txtRebatesLease' + id).value))
		rebatesLease = 0;
	else
		return false;

	return true;
}

// Loan code
function doLoanValidation(id) {
	if (doFieldValidation(document.getElementById('_txtSalesPriceLoan' + id), false))
		salesPriceLoan = parseFloat(document.getElementById('_txtSalesPriceLoan' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtSalesTaxLoan' + id), true))
		salesTaxLoan = parseFloat(document.getElementById('_txtSalesTaxLoan' + id).value);
	else if (isEmpty(document.getElementById('_txtSalesTaxLoan' + id).value))
		salesTaxLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTermLoan' + id), false))
		loanTermLoan = parseFloat(document.getElementById('_txtTermLoan' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtInterestRateLoan' + id), false))
		interestRateLoan = parseFloat(document.getElementById('_txtInterestRateLoan' + id).value);
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtDownPaymentLoan' + id), true))
		downPaymentLoan = parseFloat(document.getElementById('_txtDownPaymentLoan' + id).value);
	else if (isEmpty(document.getElementById('_txtDownPaymentLoan' + id).value))
		downPaymentLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtTradeInValueLoan' + id), true))
		tradeInValueLoan = parseFloat(document.getElementById('_txtTradeInValueLoan' + id).value);
	else if (isEmpty(document.getElementById('_txtTradeInValueLoan' + id).value))
		tradeInValueLoan = 0;
	else
		return false;

	if (doFieldValidation(document.getElementById('_txtRebatesLoan' + id), true))
		rebatesLoan = parseFloat(document.getElementById('_txtRebatesLoan' + id).value);
	else if (isEmpty(document.getElementById('_txtRebatesLoan' + id).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(id) {
	var div = document.getElementById('_loanCalculator' + id);
	div.style.display = 'none';
	div = document.getElementById('_leaseCalculator' + id);
	div.style.display = 'block';
}

function SwitchToLoan(id) {
	var div = document.getElementById('_loanCalculator' + id);
	div.style.display = 'block';
	div = document.getElementById('_leaseCalculator' + id);
	div.style.display = 'none';
}
