   

 function testResults (form) {

	validated=false;

	validate();

	//alert(validated);

	if (validated==true){hideresults();return;};

    var a = form.loan.value;

    var b = form.interest.value;

    var c = form.period.value;

    var d = form.num.value;

    var e = b/100;

    var f = c*d;

    var i = 1;

    var pmt = a*(e/d)*Math.pow((1+(e/d)),f)/(Math.pow((1+(e/d)),f)-1);

	document.getElementById("msgbox").value=(Math.round(pmt*100)/100);

	document.getElementById("dtbl").style.display='';

	document.getElementById("div_graph").style.display='';

	deleteall('mor');

	makeRows();

}



function makeRows() {

	

var myform=document.getElementById("myform");

var loan_amount = myform.loan.value;

var annual_interest = myform.interest.value;

var loan_period = myform.period.value;

var payment_per_year = myform.num.value;

var annual_interest_pc = annual_interest/100;

var total_payment_number = loan_period*payment_per_year;

var start_month = myform.startmonth.value;

var start_year = myform.startyear.value;

var initial_amount = loan_amount;

var plot=new Array();



opmonth(start_month);



for (i=1, j=0 ;i<=total_payment_number;i++,j++) {



var tbl=document.getElementById('mor');

var r=tbl.insertRow(-1);

var number=r.insertCell(0);

var payment_month=r.insertCell(1);

var payment_year=r.insertCell(2);

var beginning_balance=r.insertCell(3);

var total_payment=r.insertCell(4);

var interest_amt=r.insertCell(5);

var principal=r.insertCell(6);

var ending_balance=r.insertCell(7);



number.id='numb';

number_text=document.createTextNode(i);

number.appendChild(number_text);

payment_month.id='smonth';

payment_month_text=document.createTextNode(start_month1);

payment_month.appendChild(payment_month_text);

	switch(payment_per_year){

		case '1':

		start_month=+start_month+12;

		break;

		case '2':

		start_month=+start_month+6;

		break;

		case '3':

		start_month=+start_month+4;

		break;

		case '4':

		start_month=+start_month+3;

		break;

		case '6':

		start_month=+start_month+2;

		break;

		case '12':

		start_month=+start_month+1;

		break;

		default:

		break;

	}

payment_year.id='syear';

payment_year_text=document.createTextNode(start_year);

payment_year.appendChild(payment_year_text);

if (start_month>=13){start_year=+start_year+1};

switch(start_month){

		case 13:

		start_month=1;

		break;

		case 14:

		start_month=2;

		break;

		case 15:

		start_month=3;

		break;

		case 16:

		start_month=4;

		break;

		case 17:

		start_month=5;

		break;

		case 18:

		start_month=6;

		break;

		case 19:

		start_month=7;

		break;

		case 20:

		start_month=8;

		break;

		case 21:

		start_month=9;

		break;

		case 22:

		start_month=10;

		break;

		case 23:

		start_month=11;

		break;

		case 24:

		start_month=12;

		break;

		default:

		break;

	}

opmonth(start_month.toString());

beginning_balance.id='bbal';

beginning_balance_text=document.createTextNode(loan_amount);

beginning_balance.appendChild(beginning_balance_text);

total_payment.id='tpay';

total_payment_text=document.createTextNode(document.getElementById("msgbox").value);

total_payment.appendChild(total_payment_text);

interest_amt.id='intamt';

interest_amt_text=document.createTextNode(Math.round((beginning_balance.innerHTML*annual_interest_pc/payment_per_year)*100)/100);

interest_amt.appendChild(interest_amt_text);



if(i==total_payment_number){
	
	principal.id='prin';
	
	principal_text=document.createTextNode(loan_amount);

	principal.appendChild(principal_text);

}

else{

	principal.id='prin';
	
	principal_text=document.createTextNode(Math.round((total_payment.innerHTML-interest_amt.innerHTML)*100)/100);

	principal.appendChild(principal_text);

	}

ending_balance.id='ebal';

ending_balance_text=document.createTextNode(Math.round((beginning_balance.innerHTML-principal.innerHTML)*100)/100);

ending_balance.appendChild(ending_balance_text);

loan_amount = Math.round(ending_balance.innerHTML*100)/100;



plot[j]=[i,parseFloat(ending_balance.innerHTML.toString())];



 }

    plot.unshift([0, initial_amount]);

    var layout = new PlotKit.Layout("line",{"xNumberOfTicks": 20,"yNumberOfTicks": 5,"yTickPrecision": 0}, {});

    layout.addDataset("pmt_sch", plot);

    document.getElementById("div_graph").innerHTML = "<canvas name=\"graph\" id=\"graph\" width=\"450\" height=\"200\"></canvas>";

    //var canvas = MochiKit.DOM.getElement("graph");
	

    var canvas = document.getElementById("graph"); 

    var plotter = new PlotKit.SweetCanvasRenderer(canvas, layout, {});

    layout.evaluate();
    plotter.render();

}



function deleteall(mytable) {



  tble=document.getElementById(mytable);

  for(i=tble.rows.length-1; i > -1; i--)

  tble.deleteRow(i);

}



function opmonth(mymonth) {

	

	start_month1=" ";

	switch (mymonth){

	case '1':	

	start_month1='Jan';

	break;

	case '2':

	start_month1='Feb';

	break;

	case '3':

	start_month1='Mar';

	break;

	case '4':

	start_month1='Apr';

	break;

	case '5':

	start_month1='May';

	break;

	case '6':

	start_month1='Jun';

	break;

	case '7':

	start_month1='Jul';

	break;

	case '8':

	start_month1='Aug';

	break;

	case '9':

	start_month1='Sep';

	break;

	case '10':

	start_month1='Oct';

	break;

	case '11':

	start_month1='Nov';

	break;

	case '12':

	start_month1='Dec';

	break;

	default: 

	start_month1='Invalid';

	break;

	}

}



function clearall(){

	

	var cform=document.getElementById("myform");

	cform.loan.value='';

	cform.interest.value='';

	cform.period.value='';

	cform.num.value=12;

	cform.startmonth.value=1;

	cform.startyear.value='';

	hideresults();

}



function hideresults(){

	document.getElementById("msgbox").value=' ';

	document.getElementById("dtbl").style.display='none';

	document.getElementById("div_graph").style.display='none';

}



function defaults(){

	

	var dform=document.getElementById("myform");

	dform.loan.value=10000;

	dform.interest.value=10;

	dform.period.value=1;

	dform.num.value=12;

	dform.startmonth.value=1;

	dyear=new Date();

	dform.startyear.value=dyear.getFullYear();



}



function validate(){

vloan=document.getElementById("loan").value;

vinterest=document.getElementById("interest").value;

vperiod=document.getElementById("period").value;

vyear=document.getElementById("startyear").value;

vcount=0;

vtext1='';

vtext2='';

vtext3='';

vtext4='';



if(isNaN(vloan)==true||vloan<=0 ){vcount=vcount+1;vtext1='\nloan amount'; validated=true;};

if(isNaN(vinterest)==true||vinterest<=0){vcount=vcount+1;vtext2='\ninterest rate';validated=true;};

if(isNaN(vperiod)==true||vperiod<=0){vcount=vcount+1;vtext3='\nloan period';validated=true;};

if(isNaN(vyear)==true||vyear<=1000){vcount=vcount+1;vtext4='\nstart year';validated=true;};



switch (vcount){

	case 1:	

	alert('1 invalid entry, please enter a valid'+vtext1+vtext2+vtext3+vtext4);

	break;

	case 2:

	alert('2 invalid entries, please enter valid entries for'+vtext1+vtext2+vtext3+vtext4);

	break;

	case 3:

	alert('3 invalid entries, please enter valid entries for'+vtext1+vtext2+vtext3+vtext4);

	break;

	case 4:

	alert('4 invalid entries, please enter valid entries for'+vtext1+vtext2+vtext3+vtext4);

	break;

	default:

	break;

	

	}

}
