/* Round Decimal Places */
function roundDeci(num, dec) {
	var res = Math.round(num * Math.pow(10,dec)) / Math.pow(10,dec);
	return res;
}




/* loan interest calc */
function rrspTRCalc() {
	var calc = document.getElementById('trCalc');
	
	var f1 = parseFloat(calc.contributions.value);

	var f2 = (parseFloat(calc.marginTaxRate.value)) / 100;
          
        var f3 = calc.rrspRetire.value; 
	
	var refund = f1 * f2;

        if (f1 ==0) {
             
            document.getElementById('alert1');   
$('#alert1').html("<p class='error'>Please fill in 'RRSP Contributions Year to Date!</p>");
             setTimeout ( "resetAlert()", 3000 );
             return;
        }

        
 
         if (f3 ==0) {

        document.getElementById('alert4');
       $('#alert4').html("<p class='error'>Please fill in 'Number of Years Before Retirement!</p>");
               
               setTimeout ( "resetAlert()", 3000 );
               return;
        }

              

         $('#para1').html("<div class='blockquote3'></div><center><hr style='width:60%;color:#fefefe'></center><div class='blockquote3'</div><p style='font-size:12px'>Based on the information entered above you should receive an income tax refund of approximately</p> ");

        $('#para2').html('<p>The anticipated refund can be leveraged into a short term RRSP loan which will further reduce your taxes and increase the value of your RRSP. The loan can easily be repaid using your tax refund. </p>');

        $('#para3').html("<div class='align_l'style='margin-top:2px'>Would you like to make your RRSP loan equal to your tax refund?</div><div class='yesmark'>YES</div><input class='yes'type='radio' value='1' name='cont'onclick='rrspToLoan();javascript:toggle();'><div class='nomark'>NO</div><input class='no' type='radio' value='2' name='cont' onClick='javascript:toggle();'>" );

        

         
        $('#para4').html("<span class='dollar'>$ " + refund + " </span> ");

         	
	calc.trRefund.value = refund;
	
}

        

function rrspToLoan() {
	var obj1 = document.getElementById('trCalc');
	var obj2 = document.getElementById('lCalc');
	
	obj2.contLoan.value = obj1.trRefund.value;

}









function rrspLCalc() {
	var calc = document.getElementById('lCalc');
	var form1 = document.getElementById('trCalc');
	
	var f1 = parseFloat(calc.contLoan.value);
        
        if (f1 ==0) {
         
        document.getElementById('alert2');
        $('#alert2').html("<p class='error'>Please fill in 'RRSP Loan Amount!</p>");
               setTimeout ( "resetAlert()", 3000 );
               return;
        }

	// OMIT: var f2 = parseFloat(calc.rrspRetire.value);
	var f3 = (parseFloat(calc.annInt.value)) / 100;
	var f4 = parseFloat(calc.term.value);
	var f5 = parseFloat(calc.deferral.value);
	var f6 = parseFloat(form1.trRefund.value);
	
	var f1f = f1;
	var term = f4;
	
	var intPerMonth = f3 / 12;
	
	if (f5 > 0) {
		term = f4 - f5;
		var accInt = f1 * f3 * ((f5 * 30)/365);
		f1f = f1 + accInt;
	}

	var monlp = rrspLoanRateCalc(f1f, f3, term);
	var cob = (rrspLoanRateCalc(f1f, f3, term) * term) - f1;
	var numPayments = term;


        /* Retirement Calc */



	
	var preCalc = document.getElementById('trCalc');

	
	var r1 = parseFloat(preCalc.rrspRR.value);
	var r2 = 0;
                       
	if(preCalc.rrspRetire.value) {
		r2 = parseFloat(preCalc.rrspRetire.value);

	}
	var r3 = 0;
	if(preCalc.contributions.value) {
		r3 = parseFloat(preCalc.contributions.value);
	}

        if (r2 ==0) {

               document.getElementById('alert3');
       $('#alert3').html("<p class='error'>Please fill in 'Number of Years Before Retirement!</p>");
               
               setTimeout ( "resetAlert()", 3000 );
               return;
        }
	
	calc.monlp.value = roundDeci(monlp,2);
	calc.cob.value = roundDeci(cob,2);
	calc.numPayments.value = numPayments;
	
	/* Amortization Table */
	
	// If Lump Sum to be Paid	
	var lumpSum = 0;
	var lumpDis = 0;
	if (calc.lumpPay[0].checked == true) {
		lumpSum = f1 * (parseFloat(form1.marginTaxRate.value)) / 100;
		if (f6) {
			lumpSum += f6; 


		}
	}

        
 
	
	var monPayment = monlp;
	var intr = 0;
        var defintr = 0;
	var cp = 0;
	var newBal = f1f;
        var newBalDisplay = 0;
	if(f5 > 0) {
		newBal = f1;
	}
	var oldBal = 0;
	var monthsSaved = 0;

         $('#para5').html("<div class='blockquote3'></div><center><hr style='width:60%;color:#fefefe'></center><div class='blockquote3'></div><p style='font-size:12px'>According to the data you entered into this calculator, the value of your RRSP at retirement age would be:</p> ");
         
         
         $('#para6').html("<span class='dollar'>$ " + roundDeci(compoundAnnual(r3, r1, r2, f1),2) + "</span>");

        
        $('#para7').html("<div class='amortable'>RRSP Loan Amortization Table</div>");
        
        var tab = document.getElementById('amort');

	$('#amort').html("<tr><th class='tabhead' width='10%'>#</th><th class='tabhead'width='18%'>Payment</th><th class='tabhead'width='18%'>Principal</th><th class='tabhead'width='18%'>Interest</th><th class='tabhead'width='18%'>Tax Return</th><th class='tabhead'width='18%'>Balance</th></tr>");

        $('#amort').append("<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>" + roundDeci(newBal,2) + "</td></tr>");

       
       
	
	var totInt = intr;
	
	for(var q = 0; q < f4; q++) {
		oldBal = newBal;
		
		/* Consider Deferral */
		if (q < f5) {
			
			monPayment = 0;
			cp = 0;
			intr = newBal * intPerMonth;
			newBal = newBal + intr;
                        defintr += intr;
			intr = 0;
			newBalDisplay = f1;
			
		} else {
		
			intr = newBal * intPerMonth;
			if(lumpSum > 0 && q == 3) {
				monPayment = monlp + lumpSum;
				lumpDis = lumpSum;
			} else {
				monPayment = monlp;
				lumpDis = 0;
			}
			if (oldBal < monPayment) {
				monPayment = oldBal + intr;
			}
			
			cp = monPayment - intr;
			newBal = newBal - cp;
			newBalDisplay = newBal;
			
			if (q == f5) {
				defintr += intr;
				intr = defintr;
                        }

		}
	
		if (roundDeci(cp,2) > 0 || q < f5) {
                        
			$('#amort').append("<tr><td class='data'>" + (q + 1) + "</td><td>" + roundDeci(monPayment,2) + "</td><td>" + roundDeci(cp,2) + "</td><td>" + roundDeci(intr,2) + "</td><td>" + roundDeci(lumpDis,2) + "</td><td>" + roundDeci(newBalDisplay,2) + "</td></tr>");
		} else {
			if(monthsSaved == 0) {
				monthsSaved = q;
			}
		}
		
		totInt += intr;
	}


        $(document).ready(function(){
	$(".stripe tr:even").addClass("alt");
  });

       

	
	/* Lump Sum Deduction */
	if (lumpSum > 0) {
		calc.numPayments.value = monthsSaved - f5;
		calc.intSaved.value = roundDeci(cob - totInt,2);
	} else {
		calc.numPaymentsBulk.value = "Not Applicable";
		calc.intSaved.value = "Not Applicable";
	}

        /* Tax Refund Amount */


	var tR = f1 * (parseFloat(form1.marginTaxRate.value)) / 100;
    if(f6) {
        tR += f6;
    }



         calc.taxRefundOut.value = tR;


	
	/* Display Deferral Days */
	calc.defDays.value = (f5 + 1) * 30;
	
	

	 
	

         calc.retireRes.value = roundDeci(compoundAnnual(r3, r1, r2, f1),2);
	
}



/* Monthly Loan Payments Rate Calculator */
function rrspLoanRateCalc(loanCont, loanInterest, term) {
	var rate = loanInterest / 12;
	var pmt = (rate + (rate / (Math.pow(1 + rate, term) - 1))) * loanCont;
	return pmt;
}

function compoundAnnual(cont, interest, years, loan) {
	var curTotal = cont + loan;
	var intPerc = interest / 100;
	var i = 0;
	
	for (i = 0; i < years; i++) {
		curTotal += curTotal * intPerc;
	}
	
	return curTotal;
}

function out(str) {
	var out = document.getElementById('lCalc');
	out.intSaved.value = str;
}

function clearAmort() {
                 
                 $('#para5').html = '';
	         $('#para6').html = '';
	         $('#para7').html = '';
	         $('#amort').html = '';

                 var div = document.getElementById('para5');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para6');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para7');
                 div.innerHTML = "" ;
                 var div = document.getElementById('amort');
                 div.innerHTML = "" ;
                                                                   
}

function resetAlert() {
                 var div = document.getElementById('alert1');
                 div.innerHTML = "" ;
                 var div = document.getElementById('alert2');
                 div.innerHTML = "" ;
                 var div = document.getElementById('alert3');
                 div.innerHTML = "" ;
                 var div = document.getElementById('alert4');
                 div.innerHTML = "" ;

}

function clearTax() {
                 var div = document.getElementById('para1');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para2');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para3');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para4');
                 div.innerHTML = "" ;
                 
                 
                 

}

function resetTax() {
                 var div = document.getElementById('para1');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para2');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para3');
                 div.innerHTML = "" ;
                 var div = document.getElementById('para4');
                 div.innerHTML = "" ;
                 
                 
                 
}




/* Toggle Calculator */
function toggle() {
	var ele = document.getElementById("taxRef");
	
	if(ele.style.display == "block") {
    		ele.style.display = "none";
		
  	}
	else {
		ele.style.display = "block";
		
	}
}




