// requires jQuery.js, commonCalculator.js

var autoLoanPayment = null;

jQuery(function() {
	jQuery("#calculatorForm").bind('submit', calculate);	
	jQuery("input.variableSelector").bind('change', selectType);
	jQuery("#viewReport").bind('click', openReportWindow);
	selectType();
	calculate();
});

function calculate() {

	var payment = getInputMoney("#payment");
	var totalPrice = getInputMoney("#totalPrice");
	var loanMonths = getInputNumber("#loanTerm");
	var annualRate = getInputRate("#annualRate");
	var downPayment = getInputMoney("#downPayment");
	var tradeInAmount = getInputMoney("#tradeInAmount");
	var amountOwedOnTradeIn = getInputMoney("#amountOwed");

	var selectedType = jQuery("input.variableSelector:checked").val();
	if(selectedType == "payment") {
		payment = 0;
	} else {
		totalPrice = 0;
	}
	
	autoLoanPayment = new Calculators.loan.AutoLoanPayment(payment, totalPrice, loanMonths, annualRate, downPayment, tradeInAmount, amountOwedOnTradeIn);
	
	jQuery("#payment").val(autoLoanPayment.getPayment().formatted());
	jQuery("#totalPrice").val(autoLoanPayment.getTotalPrice().formatted());	
	jQuery("#reportPrice").text(autoLoanPayment.getTotalPrice().formatted());
	jQuery("#reportPayments").text(autoLoanPayment.getPayment().formatted());
	jQuery("#reportAmount").text(autoLoanPayment.getLoanAmount().formatted());
	jQuery("#reportInterest").text(autoLoanPayment.getTotalInterest().formatted());	
	plotValues(autoLoanPayment);
	return false;
	
}

function plotValues(autoLoanPayment) {
	var chart = new FusionCharts("FusionCharts/FCF_Line.swf", "graphId", "250", "240");
	var dataXml = generateDataXml(autoLoanPayment);
	chart.setDataXML(dataXml);
	chart.render("graph");
}

function generateDataXml(autoLoanPayment) {
	var returnXml = new Array();
	returnXml.push("<?xml version='1.0'?>\n");
	returnXml.push("<graph caption='Payment Balance' xAxisName='Years of payments' yAxisName='' showNames='1' showValues='0' showAnchors='0' decimalPrecision='2' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0' baseFontColor='999999' >");
	for(var i = 0; i < autoLoanPayment.getStatements().length; i++) {
		var statement = autoLoanPayment.getStatements()[i];
		var value = statement.getBalance();
		var showName = '0';
		if((i % 12 == 0))
			showName = '1';		
  	returnXml.push("<set name='"+i/12+"' value='"+value.getAmount()+"' showname='"+showName+"'/>");		
	}
	returnXml.push("</graph>");
	return returnXml.join("");	
}

function selectType() {
	var selectedType = jQuery("input.variableSelector:checked").val();
	if(selectedType == "payment") {
		// payment code
		jQuery("#payment").addClass("readonly").attr("readonly", "true").val("");
		jQuery("#totalPrice").removeClass("readonly").removeAttr("readonly");
	} else {
		// amount code
		jQuery("#totalPrice").addClass("readonly").attr("readonly", "true").val("");
		jQuery("#payment").removeClass("readonly").removeAttr("readonly");
	}
}

function openReportWindow() {
	var report = new Calculators.report.AutoLoanReport(autoLoanPayment);
	var WINDOW_OPTIONS = "toolbar=no, menubar=no, resizable=yes, scrollbars=yes";
	var reportWindow = window.open("", "_new", WINDOW_OPTIONS);
	reportWindow.document.write(report.getHtmlReport());
	reportWindow.document.close();
}	
