//calcoli finanziari
  rapporto = 0;
  nk = 0;

  function calcoloRata(m,n,i,k)
    {
      m = parseInt(m);
      n = parseInt(n);
      i = parseFloat(i)/100;
      k = parseInt(k);
      ikpiu1 = Math.pow(1+i,1/k) 
      ik = ikpiu1-1;
      rata = m*ik/(1-Math.pow(ikpiu1,-k*n));
      return Math.round(rata*100)/100;
    }

function f(x)
  {
    return (1-rapporto*x)*Math.pow(1+x,nk)-1;
  }

function calcoloTasso(mutuo,rata,anni,periodo)
  {
    m = parseFloat(mutuo);
    r = parseFloat(rata);
    n = parseInt(anni)
    k = parseInt(periodo);
    rapporto = m/r;
    nk = n*k;
    if (rapporto>=nk)
      {
        alert("dati inconguenti");
        return undefined;
      }
    ik = bisezione(0.00001,1);
    ia = Math.pow(1+ik,k)-1;
    ia *=100;
    return Math.round(ia*10000)/10000;
  }

function bisezione(a,b)
  {
    fa = f(a);
    if (fa==0) return a;
    fb = f(b);
    if (fb==0) return b;
    m = (a+b)/2;
    fm = f(m);
    if (fm==0) return m;
    if (b-a<1e-8) return m;
    if (fa*fm<0) 
      return bisezione(a,m)
    else
      return bisezione(m,b);
  }
  tabella = "";

  function calcoloPiano(m,n,i,k)
    {
      m = parseInt(m);
      n = parseInt(n);
      i = parseFloat(i)/100;
      k = parseInt(k);
      kn = k*n;
      ikpiu1 = Math.pow(1+i,1/k) 
      ik = ikpiu1-1;
      rata = m*ik/(1-Math.pow(ikpiu1,-kn));
      i=0;
      Ii=0;
      Ci=0;
      Di=m, Ei=0; 
      tabella = "  k           rata         q.cap.         q.int.         d.res.         d.est.\n" 
      riga = format(0,3,false)+format(0,15,true)+format(Ci,15,true)+format(Ii,15,true)+format(Di,15,true)+format(Ei,15,true)+"\n";
      tabella += riga;
      var riga;
      for (i=1; i<=kn; i++)
        {
          Ii = ik*Di;
          Ci = rata-Ii;
          Di -= Ci;
          Ei += Ci;
          riga = format(i,3,false)+format(rata,15,true)+format(Ci,15,true)+format(Ii,15,true)+format(Di,15,true)+format(Ei,15,true)+"\n";    
          tabella += riga;
        } 
    }

  function format(n,campo,decimale)
    {
      l = 0;
      var s; 
      if (decimale)
        {
          n = Math.round(n*10000)/10000;
          s = String(n);
          l = s.length;
          punto = s.indexOf('.');
          if (punto<0) s +='.00';
          if (punto==l-1) s +='00';
          if (punto==l-2) s +='0';
          punto = s.indexOf('.');
          s = s.substr(0,punto+3);
        }
      else
        s = String(n);
      l = s.length;
      while (l<campo)
        {
          s = " "+s;
          l++;
        }
      return s;
    }
