/*
	Repayment Calculator v1.1
	by Richard Lee
	Updated: 06/03/09
*/


// Requires includes/common.js

var minFinanceAmt = 300; // Min finance amt
var minPayAmt = 40; // Min Pay Amt
var ASF = 3.95; // Service Fee
var ESF = 25; // Establishment Fee

/* DO NOT EDIT BELOW HERE UNLESS YOU KNOW WHAT YOUR DOING */
var financeAmt = 0; // entered finance amt

function recalculate() {
	document.getElementById("calc").style.display='block';
	document.getElementById("results").style.display = 'none';
	document.getElementById("disclaimer").innerHTML = '*Not all payment plans offered by all practices<br />CareCredit is a credit facility provided by GE Finance Australasia Pty Ltd (ABN 88 000 015 485) trading as GE Money.';
}

function calculate() {
	var calc = document.getElementById("calc");
	calc.style.display='block';
	
	var resultsPage = document.getElementById("results");
	resultsPage.style.display = 'none';
	
	var financeAmt = filterNum(calc.financeAmt.value);
	var errorAmt = document.getElementById("errorAmt");
	errorAmt.style.display='none';
		
	var errorPlan = document.getElementById("errorPlan");
	errorPlan.style.display='none';
	
	var calcFinanceAmt = document.getElementById("calcFinanceAmt");
		
	var calcPatientName = document.getElementById("calcPatientName");
			
	var results = new Array();
	var resultsTable = document.getElementById("resultsTable");
			
	// show invalid message if no value entered
	if (financeAmt == "" || isNaN(financeAmt))
	{
		errorAmt.innerHTML = 'Please enter a valid treatment amount';
		errorAmt.style.display = 'inline';
		return false;
	}
	// Check we have min finance amt
	else if (financeAmt < minFinanceAmt) 
	{
		financeAmt.value = addComma(financeAmt);
		errorAmt.innerHTML = 'The minimum treatment amount that can be financed is ' + addComma(minFinanceAmt);
		errorAmt.style.display = 'inline';
		return false;
	}
	else
	{
		var minMonthlyPay = calcMinMonthlyPay(financeAmt);
		
		var interestFreeChoices = calc.interestFreeChoices;
		var selectedPlans = 0;
		if (isArray(interestFreeChoices)) {
			for(var c=0; c < interestFreeChoices.length; c++) {
				if (interestFreeChoices[c].checked) {
					var term = interestFreeChoices[c].value;
					var exASF = roundUp(financeAmt / term);
					var incASF = exASF + ASF;
					results.push(new Array((term+' months interest free'), addComma(incASF), addComma(minMonthlyPay)));
					selectedPlans++;
				}		
			}
		} else {
			if (interestFreeChoices.checked) {
				var term = interestFreeChoices.value;
				var exASF = roundUp(financeAmt / term);
				var incASF = exASF + ASF;
				results.push(new Array((term+' months interest free'), addComma(incASF), addComma(minMonthlyPay)));
				selectedPlans++;
			}
		}
		var extendedChoices = calc.extendedChoices;
		if (isArray(extendedChoices)) {
			for(var c=0; c < extendedChoices.length; c++) {
				if (extendedChoices[c].checked) {
					var term = extendedChoices[c].value;
					var exASF = roundUp(financeAmt / ((1-(Math.pow((1/(1+.129/12)),term)))/(.129/12)));
					var incASF = exASF+ASF;
					results.push(new Array((term+' months extended'),'N/A',addComma(incASF)));
					selectedPlans++;
				}		
			}
		} else {
			if (extendedChoices.checked) {
				var term = extendedChoices.value;
				var exASF = roundUp(financeAmt / ((1-(Math.pow((1/(1+.129/12)),term)))/(.129/12)));
				var incASF = exASF+ASF;
				results.push(new Array((term+' months extended'),'N/A',addComma(incASF)));
				selectedPlans++;
			}
		}
		if (selectedPlans == 0) {
			errorPlan.innerHTML = 'Please select at least one repayment plan';
			errorPlan.style.display = 'inline';
			return false;
		} 
		else
		{
		   calc.style.display = 'none';
		   calc.financeAmt.value = addComma(financeAmt);
		   calcFinanceAmt.innerHTML = calc.financeAmt.value;
		   
		   calcPatientName.innerHTML = calc.patientName.value!="" ? calc.patientName.value : 'Hi';
			
			var numcols = 3;
			var table = '<table class="contentTable" border="0" cellpaddin="0" cellspacing="0"><tr><th>Plan</th><th class="sep">Monthly Payment to avoid interest</th><th class="sep">Minimum Monthly Payment</th></tr>';
			for(var r=0; r < results.length; r++) {
				var row = (r % 2)  ? 'odd' : 'even';	
				table += '<tr class="'+row+'"><td  width="'+(100/numcols)+'%" NOWRAP>'+results[r][0]+'</td><td class="sep" width="'+(100/numcols)+'%" NOWRAP>'+results[r][1]+'</td><td class="sep" width="'+(100/numcols)+'%" NOWRAP>'+results[r][2]+'</td></tr>';
			}
			table += '<tr><td colspan="3" style="border-bottom: none; font-size: 9px ">All payments include a '+addComma(ASF)+' monthly account service fee. Please note, new applicants will be charged an establishment fee of '+addComma(ESF)+' on their first statement. For more information please refer to the disclaimer below.</td></tr></table>';
			resultsTable.innerHTML = table;
			resultsPage.style.display = 'block';
			// Append disclaimer
			document.getElementById("disclaimer").innerHTML = 'Quoted repayments are approximate only. *"Monthly payment to avoid interest" is the minimum amount that you must pay each month in order to avoid paying interest. If you pay less than this amount you will not pay off the balance in the interest free period. An interest rate of 19.9% pa will apply to any unpaid balance when the promotion period ends. **"Minimum Monthly Payment" is the minimum amount that you are required to make each month under the contract. For interest free plans, paying only the Minimum Monthly Payment will not pay out the balance before the end of the interest free period. For extended payment plans an interest rate of 12.9%pa applies during the promotional period. For both interest free plans and extended payment plans an interest rate of 19.9%pa will apply to any unpaid balance when the promotional period ends. Other fees and charges may become payable and are not included in the quoted repayments. Interest rates are current as at 30<sup>th</sup> June 2008 and are variable.<br />CareCredit is a credit facility provided by GE Finance Australasia Pty Ltd (ABN 88 000 015 485) trading as GE Money.';
						
			// stop form from submitting
			return false;
	 	}
	}	
}

function roundUp(number)
{
  return Math.ceil(number);
}

function filterNum(str)
{
	var re = /^\$|,/g;
	// remove "$" and ","
	return str.replace(re, "");
}

// Clear Finance Amount text box
function clearAmt(field)
{	
	field.value="";
	//setCursorToEnd(field);
}

//move cursor to end
/*
function setCursorToEnd( x ) {

    var txtRange = x.createTextRange();
    txtRange.moveStart( "character", x.value.length);
    txtRange.moveEnd( "character", 0 );
    txtRange.select();
}
*/
function calcMinMonthlyPay(value){
	var balanceValue = value;
	var minimumMonthlyPayment = roundUp(balanceValue * .03);
	if	(minimumMonthlyPayment < minPayAmt){
		minimumMonthlyPayment = minPayAmt;
	}
	return minimumMonthlyPayment;	
}
//Add dollar sign to Finance Amount textbox
function formatAmt(field) {	
	if (field.value != "" && !isNaN(field.value)) {
		field.value = addComma(field.value);
	}
}

function addComma(value) {
	// Add commas to FA
	var num = new String(value);
    var newNum = "";
    var newNum2 = "";
    var count = 0;
    
    var dec = "";
	if (num.indexOf('.') != -1){        
        var a = num.split("."); 
		if (a[0].indexOf('$') != -1) {
			var b = a[0].split("$");
			a[0] = b[1];
		}
		num = new String(a[0]);
		dec = new String("."+a[1]);
    } 
 
    // Add Commas   
    for (var k = num.length-1; k >= 0; k--){
      var oneChar = num.charAt(k);
      if (count == 3){
        newNum += ",";
        newNum += oneChar;
        count = 1;
        continue;
      }
      else {
        newNum += oneChar;
        count ++;
      }
   } 
   
  for (var k = newNum.length-1; k >= 0; k--){
      var oneChar = newNum.charAt(k);
      newNum2 += oneChar;
  }
   
   // Add dollar sign
   newNum2 = "$" + newNum2 + dec;
   return newNum2;
}

function isArray(ele) {
	if (typeof(ele) == "object" && ele.length != undefined) {
		return true;	
	}
	return false;
}

function init_practice_estimator(interestFreePlans,extendedPlans) {
	document.getElementById("errorAmt").style.display='none';
	document.getElementById("errorPlan").style.display='none';
	document.getElementById("calc").style.display='block';
	document.getElementById("results").style.display = 'none';
	document.getElementById("disclaimer").innerHTML = '*Not all payment plans offered by all practices<br>CareCredit is a credit facility provided by GE Finance Australasia Pty Ltd (ABN 88 000 015 485) trading as GE Money.';
	
	if (typeof(interestFreePlans)=="undefined" || interestFreePlans=="") {
		// default all plans
		interestFreePlans = new Array(3,6,12,18,20,24);
	} else {
		interestFreePlans = interestFreePlans.split(",");
	}
	
	if (typeof(extendedPlans)=="undefined" || extendedPlans=="") {
		// default all plans
		extendedPlans = new Array(12,24,36,48);
	} else {
		extendedPlans = extendedPlans.split(",");
	}
		
	var paymentPlans = document.getElementById("paymentPlans");
		
	var plans = '';
	if (interestFreePlans.length > 0) {
		plans += '<table><tr><th colspan="3" align="left">Interest Free Payment Plans*</th></tr>';
		// loop through interest free plans to create choices
		var numcols = 3; // no. columns in plans tables
		for(var x=0; x < interestFreePlans.length; x++) { 
			var term = interestFreePlans[x];
			if((x+1) % numcols == 0) { 
				plans += '<td width="'+(100/numcols)+'%" NOWRAP ><input type="checkbox" name="interestFreeChoices" value="'+term+'" style="margin-right:6px" CHECKED /> '+term+' months interest free</td></tr>'; 
				if (x!=(interestFreePlans.length-1))  document.write('\n<tr>'); 
			} else { 
				plans +='<td width="'+(100/numcols)+'%" NOWRAP ><input type="checkbox" name="interestFreeChoices" value="'+term+'" style="margin-right:6px" CHECKED />'+term+' months interest free</td>'; 
			} 
		}
		plans += '</table>';
	}
	
	if (extendedPlans.length > 0) {
		plans += '<table><tr><th colspan="3" align="left">Extended Payment Plans*</th></tr>';
		// loop through extended plans to create choices
		var numcols = 3; // no. columns in plans tables
		for(var x=0; x < extendedPlans.length; x++) { 
			var term = extendedPlans[x];
			if((x+1) % numcols == 0) { 
				plans +='<td width="'+(100/numcols)+'%" NOWRAP><input type="checkbox" name="extendedChoices" value="'+term+'" style="margin-right:6px" CHECKED /> '+term+' months extended</td></tr>'; 
				if (x!=(extendedPlans.length-1))  document.write('\n<tr>'); 
			} else { 
				plans +='<td width="'+(100/numcols)+'%" NOWRAP><input type="checkbox" name="extendedChoices" value="'+term+'" style="margin-right:6px" CHECKED />'+term+' months extended</td>'; 
			} 
		} 
		plans += '</table>';
	}
	paymentPlans.innerHTML += plans; 
}