var PROCEDURES = new Array( "Select a procedure", "ASA LASEK - One Eye", "ASA LASEK - Two Eyes", "femtoLASIK Flex, Smile - One Eye", "femtoLASIK Flex, Smile - Two Eyes" );
var PRICES = new Array( 0, 2600, 5200, 3000, 6000 );
var TERMS = new Array( "Select a Term", 6, 12, 24, 36, 48 );
var INTEREST = 0.1475;
var ADMIN_FEE = 250;

function CalcInit()
{
	var procedure_select = document.getElementById( "calc_select_procedure" );
	var procedure_display = document.getElementById( "calc_procedure" );
	var price_display = document.getElementById( "calc_price" );
	var term_select = document.getElementById( "calc_select_term" );
	var term_display = document.getElementById( "calc_term" );
	
	// Set up the procedure types and event handlers
	for ( var i = 0; i < PROCEDURES.length; i++ )
	{
		procedure_select.options[i] = new Option( PROCEDURES[i], i );		
	}
	procedure_select.onchange = CalcOnProcedureChange;
	procedure_display.innerHTML = "No procedure selected";
	
	// Clear the price
	price_display.innerHTML = "0.00";	
		
	// Set up the term length and event handlers
	for ( var i = 0; i < TERMS.length; i++ )
	{
		term_select.options[i] = new Option( TERMS[i], i );
		if ( i > 0 )
			term_select.options[i].text += " Months";
	}
	term_select.onchange = CalcOnTermChange;
	term_display.innerHTML = "0 months";
	
	CalcNewMonthly();
}

function CalcOnProcedureChange()
{
	var procedure_select = document.getElementById( "calc_select_procedure" );
	var procedure_display = document.getElementById( "calc_procedure" );
	var price_display = document.getElementById( "calc_price" );
	
	if ( procedure_select.selectedIndex > 0 )
	{	
		// Make the total price visible
		price_display.innerHTML = PRICES[procedure_select.options[procedure_select.selectedIndex].value] + ".00";
		procedure_display.innerHTML = PROCEDURES[procedure_select.selectedIndex];
	}
	else
	{
		price_display.innerHTML = "0.00";
		procedure_display.innerHTML = "None";
	}
	
	// Calculate the new monthly
	CalcNewMonthly()
}

function CalcOnTermChange()
{	
	var term_select = document.getElementById( "calc_select_term" );
	var term_display = document.getElementById( "calc_term" );
	
	// Check a selection has been made
	if ( term_select.selectedIndex == 0 )
	{
		term_display.innerHTML = "0 months"
		return;		
	}
	// Update the div
	term_display.innerHTML = TERMS[term_select.selectedIndex]+" months";
	
	// Calculate the new monthly
	CalcNewMonthly();
}

function CalcNewMonthly()
{	
	var procedure_select = document.getElementById( "calc_select_procedure" );
	var term_select = document.getElementById( "calc_select_term" );
	
	var repayment_display = document.getElementById( "calc_repayment" );
	
	if ( procedure_select.selectedIndex == 0 || term_select.selectedIndex == 0 )
	{
		repayment_display.innerHTML = "0.00";
		return;
	}
	
	// http://plus.maths.org/issue11/features/compound/index.html
	// Repayments are:
	// Total sum = T
	// Interest rate = I
	// Months = M
	// = (T * (I / 12) * (1 + I / 12)^M) / ((1 + I / 12)^M - 1)
	
	var T = PRICES[procedure_select.options[procedure_select.selectedIndex].value] + ADMIN_FEE;
	var I = INTEREST;
	var M = TERMS[term_select.selectedIndex];
	var repayments = "" + (T * (I / 12) * Math.pow(1 + I / 12, M) ) / ( Math.pow(1 + I / 12, M) - 1);	
	
	
	repayment_display.innerHTML = repayments.substring( 0, repayments.indexOf( "." ) + 3 );
}
