// requires jQuery.js, commonCalculator.js
var monthlyToBiWeekly = null;

jQuery(function() {
	jQuery("#calculatorForm").bind('submit', calculate);		
	jQuery("#viewPaymentScheduleMonthly").bind('click', openMonthlyReportWindow);
	jQuery("#viewPaymentScheduleBiweekly").bind('click', openBiWeeklyReportWindow);

	calculate();
});

function calculate() {
	var loanAmount = getInputMoney("#loanAmount");
	var annualRate = getInputRate("#annualRate");
	var monthlyPayment = getInputMoney("#monthlyPayment");
	var compounded = getInputNumber("#under_columns input:radio:checked");
	var maxMonths = 600; // have to set a limit for loan term, or memory problems ensue.
	var tooLowMessage = "Monthly payment entered is too low.  Please enter a higher amount in order to pay off the loan.";
	monthlyToBiWeekly = new Calculators.loan.MonthlyToBiWeekly(loanAmount, annualRate, monthlyPayment, compounded);

	if(!monthlyToBiWeekly.isValidMonthlyPayment()) {
		alert(tooLowMessage);
		jQuery("#monthlyPayment").val("").focus();
		monthlyToBiWeekly = null;
		return false;
	}

	jQuery("#calculatedEffectiveRate").text(monthlyToBiWeekly.getEffectiveRate().formatted());
	jQuery("#reportMonthlyEachPayment").text(monthlyToBiWeekly.getMonthlyPayment().formatted());
	jQuery("#reportBiWeeklyEachPayment").text(monthlyToBiWeekly.getBiWeeklyPayment().formatted());
	jQuery("#reportMonthlyRemaining").text(monthlyToBiWeekly.getMonthlyRemainingTermFormatted());
	jQuery("#reportBiWeeklyRemaining").text(monthlyToBiWeekly.getBiWeeklyRemainingTermFormatted());	
	jQuery("#reportMonthlyTotalInterest").text(monthlyToBiWeekly.getMonthlyTotalExpense().formatted());	
	jQuery("#reportBiWeeklyTotalInterest").text(monthlyToBiWeekly.getBiweeklyTotalExpense().formatted());		
	jQuery("#reportDifferencePayments").text(monthlyToBiWeekly.getDifferenceOfPayments());	
	jQuery("#reportDifferenceInterest").text(monthlyToBiWeekly.getDifferenceInInterest().formatted());	
	plotValues();	
	return false;	
}

function plotValues(){
	var chart = new FusionCharts("FusionCharts/FCF_Column3D.swf", "graphId", "355", "240");
	var dataXml = generateDataXml();
	chart.setDataXML(dataXml);
	chart.render("graph");
};

function generateDataXml(){
	var returnXml = new Array();
	returnXml.push("<?xml version='1.0'?>\n");
	returnXml.push("<graph caption='Monthly to Bi-Weekly Loan Conversion' xAxisName='' yAxisName='' showNames='1' showValues='0' decimalPrecision='2' formatNumberScale='0' numberPrefix='$' formatNumber='1' animation='0' baseFontColor='999999' hoverCapSepChar=': '>");
	returnXml.push("  <set name='Monthly' value='");
	returnXml.push(monthlyToBiWeekly.getMonthlyTotalExpense().getAmount());
	returnXml.push("' hoverText='Total interest'");
	returnXml.push(" color='afd8f8' />");	
	returnXml.push("  <set name='Bi-Weekly' value='");
	returnXml.push(monthlyToBiWeekly.getBiweeklyTotalExpense().getAmount());
	returnXml.push("' hoverText='Total interest'");
	returnXml.push(" color='f6bd0f' />");	
	returnXml.push("</graph>");

	return returnXml.join("");	
}

function openReportWindow(reportType) {
	var report = new Calculators.report.MonthlyToBiWeeklyReport(monthlyToBiWeekly, reportType);
	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();	
}


function openMonthlyReportWindow() {
	openReportWindow("Monthly");
	return false;
}

function openBiWeeklyReportWindow() {
	openReportWindow("Bi-Weekly");
	return false;
}


