// 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()) {
		if (interestRateLoan >= 1) {
			interestRateLoan = interestRateLoan / 100;
		}

		interestRateLoan = interestRateLoan / 12;

		if (salesTaxLoan >= 1) {
			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();
});