function disc_factor(frm_numb){
var a;
a=eval(document.forms[frm_numb].l_amount.value);
b=eval(document.forms[frm_numb].term_years.value)*12;
c=eval(document.forms[frm_numb].an_int_rate.value)/(12*100);
coef=((Math.pow(1+c,b)-1)/(Math.pow(1+c,b)*c));
return coef;
}

function over_calc(){//overpayment calculator
//////////
resul_win=window.open("","");
resul_win.document.write("<html><body><center><b> YOUR RESULTS</b> <hr>Loan Amount: "+document.f3.l_amount.value+"<br>Term:"+document.f3.term_years.value+" years <br> at Annual Interest Rate: "+document.f3.an_int_rate.value+"%<br> Overpayment &pound;"+document.f3.over_pay.value+" /mo. <hr>");
factor=disc_factor(0);// "0" data from form #1
corr_f=0;//correction  factor
outstand=document.f3.l_amount.value;
m_princ_paid=0;
tot_inter_paid=0;
m_inter_rate=eval(document.f3.an_int_rate.value)/(12*100);
over_pmnt=eval(document.f3.over_pay.value);
m_paiment=outstand/factor+over_pmnt;
term_mon=eval(document.f3.term_years.value)*12;
m_paiment=Math.floor(m_paiment*100)/100;

resul_win.document.write("<b> You will pay monthly : &pound;"+m_paiment+" <br> &pound;"+eval(m_paiment-over_pmnt)+" req. payment + &pound;"+over_pmnt+" overpayment</b> <br><br>");
//
resul_win.document.write("<table frame=box><tbody><tr><td colspan=5 align=center> Amortisation Schedule </td></tr><tr bgcolor=silver><td>Year</td><td>Month</td><td>Principal Paid</td><td>Interest Paid</td><td>Outstanding Balance</td></tr>");
rez=0;
for(i=1;i<=term_mon;i++){

m_inter_paid=outstand*m_inter_rate;
tot_inter_paid+=m_inter_paid;
m_princ_paid=m_paiment-m_inter_paid;
outstand-=m_princ_paid;
if(outstand<0 || term_mon==i){//last period check
m_princ_paid=m_princ_paid+outstand;
corr_f=outstand;
outstand=0;
}

k=Math.floor(i/12);
if(i/12==k){
year_pr="<b>"+Math.floor(k)+"</b>";
}
else
year_pr="<br>";
//
resul_win.document.write("<tr><td>"+year_pr+"</td><td>"+i+"</td><td>"+Math.round(m_princ_paid*100)/100+"</td><td>"+Math.round(m_inter_paid*100)/100+"</td><td>"+Math.round(outstand*100)/100+"</td></tr>");

if(outstand<=0||term_mon==i) {rez=i;i=term_mon+1;}

}
xx=(m_paiment-over_pmnt)*term_mon-document.f3.l_amount.value-tot_inter_paid+corr_f;

xx=Math.round(xx*100)/100;


rez=term_mon-rez;
last_p=Math.round(m_princ_paid*100)/100+Math.round(m_inter_paid*100)/100;
resul_win.document.write("<br>You will pay the mortgage <b>"+rez+"</b> months earlier<br>and will pay <b>&pound;"+xx+" </b>less for interest ");
resul_win.document.write("<br><br><font size=-1>*"+eval(term_mon-rez-1)+" payments of &pound;"+m_paiment+" and 1 last payment of &pound;"+Math.round(last_p*100)/100+"</tbody></table>");
resul_win.document.write("</center></body></html>");
/////////

return true;
}