// JavaScript Document
<!-- hide this script tag's contents from old browsers

function update_number(input)
{
	//remove % if inputted by user..
  if (input.value.search("%") != -1)
  {
  	input.value = input.value.substring(0, input.value.length - 1);
  }
  
	  var temp;
	
	  if ((input.value != null) && (input.value.length != 0))
	  {
	    temp = "" + eval(input.value);
	  }
	  else
	  {
	    input.value = "0.00";
	  }  
  
}

function binomial(a, n)
{
  var i;
  var sum, pow, term, cof;

  if(n < 0)
    return 1.0 / binomial(a, -n);

  sum = 1.0;
  pow = n;
  term = 1;
  cof = 1.0
  for(i = 1; i < 10; i++) {
    cof = cof * pow / i;
    pow = pow - 1.0;
    term = term * a;
    sum = sum + cof * term;
  }

  return sum;
}

function error(P, I, N, Y, M)
{
  var value;

  value = P - M * (1.0 - binomial(I / Y, -N)) / (I / Y);
  return value;
}

function compute_loan(form)
{
  var P, I, N, Y, M;

  if((form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.loan.value = "0.00";
  else {
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value);
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0.0)
      P = 0.0;
    else
      P = M * (1.0 - binomial(I / Y, -N)) / (I / Y);
    form.loan.value = "" + P;
  }
}

function compute_rate(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.rate.value = "0.00";
  else {
    P = eval(form.loan.value);
    N = eval(form.num.value);
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0) 
      I = 0.0;
    else {
      var low, high, mid, err_mid;
      var count;

      low  = 0.001;
      high = 10.0;

      count = 0;
      while(count < 30) {
        count = count + 1;
        mid = (high + low) / 2.0;
        err_mid = error(P, mid, N, Y, M);
        if(err_mid == 0.0)
          break;
        if(err_mid < 0.0) {
          low = mid;
          continue;
        }
        if(0.0 < err_mid) {
          high = mid;
          continue;
        }
      }
      I = mid * 100.0;
    }

    form.rate.value = "" + I;
  }
}

function compute_num(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num_annum.value.length == 0) ||
     (form.amount.value.length == 0))
    form.num.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    Y = eval(form.num_annum.value);
    M = eval(form.amount.value);

    if(Y == 0) 
      I = 0.0;
    else {
      var low, high, mid, err_mid;
      var count;

      low  = 0;
      high = 1024;

      count = 0;
      while(count < 10) {
        count = count + 1;
        mid = (high + low) / 2.0;
        err_mid = error(P, I, mid, Y, M);
        if(err_mid == 0.0)
          break;
        if(0.0 < err_mid) {
          low = mid;
          continue;
        }
        if(err_mid < 0.0) {
          high = mid;
          continue;
        }
      }
      N = mid;
    }

    form.num.value = "" + N;
  }
}

function compute_numann(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.amount.value.length == 0))
    form.num_annum.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value);
    M = eval(form.amount.value);

    var low, high, mid, err_mid;
    var count;

    low  = 0;
    high = 1024;

    count = 0;
    while(count < 10) {
      count = count + 1;
      mid = (high + low) / 2.0;
      err_mid = error(P, I, N, mid, M);
      if(err_mid == 0.0)
        break;
      if(0.0 < err_mid) {
        low = mid;
        continue;
      }
      if(err_mid < 0.0) {
        high = mid;
        continue;
      }
    }
    Y = mid;

    form.num_annum.value = "" + Y;
  }
}

function compute_amount(form)
{
  var P, I, N, Y, M;

  if((form.loan.value.length == 0) ||
     (form.rate.value.length == 0) ||
     (form.num.value.length == 0) ||
     (form.num_annum.value.length == 0))
    form.amount.value = "0.00";
  else {
    P = eval(form.loan.value);
    I = eval(form.rate.value) / 100.0;
    N = eval(form.num.value);
    Y = eval(form.num_annum.value);

    if(Y == 0.0)
      M = 0.0;
    else
      M = P * I / Y / (1.0 - binomial(I / Y, -N));
    form.amount.value = "" + M;
  }
}

 <!--done hiding from old browsers -->
