

<!-- hide

    var resultatvindu;

    self.name="mainbrowser";

    //

    // Rentekalkulator

    function kalkuler(form) {

      if( true ) {

         //resultatvindu = window.open("", "Resultat", "width=640,height=440,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no");

         //resultatvindu.document.open();

         //resultatvindu.document.write("Resultat av l&aring;neberegning\n");

         var p_laan_belop  = new Number(comma2point(form.p_laan_belop.value));

         var p_rente = new Number(comma2point(form.p_rente.value));

         	p_varsel_omk  = new Number(40);

         	p_andre_omk   = new Number(950);

         var p_term_lengde = new Number(12);

         var p_lopetid_aar = new Number(form.p_lopetid_aar.value);

         var p_lopetid_mnd = 0;

         var p_avdragfri_mnd= 0;

         var p_laan_form;

	var laanekalk;

         if( ! p_lopetid_aar ) p_lopetid_aar = 0;

         if( ! p_lopetid_mnd ) p_lopetid_mnd = 0;

         var antmnd = p_lopetid_aar * 12 + p_lopetid_mnd;

         var nterm = new Number(p_term_lengde * antmnd / 12 );

         // Kalkuler renter fra utbetalingsdato til første avdrag

         if( p_avdragfri_mnd )

            var laan_belop = p_andre_omk + p_laan_belop*(1+p_rente/1200*p_avdragfri_mnd);

         else

            laan_belop = p_andre_omk + p_laan_belop;

	 // Lag et array som inneholder alle terminer

         var alleTerminer = new Array(nterm);

         var ntpaa = p_term_lengde;

         var rentefot = p_rente/(100*ntpaa);

         var at = annuitet(laan_belop, rentefot, nterm);

         var avdr1 = annuitetavdrag1(laan_belop, rentefot, nterm);

         var rente1 = at - avdr1;

         var terminbelop = at + p_varsel_omk;

            avdragsum = avdr1;

            rentesum  = rente1;

            terminsum = terminbelop*nterm;

            alleTerminer[0] = terminbelop + ":" + avdr1 + ":" + rente1 + ":" + p_varsel_omk;

            for(i=2; i<=nterm; i++) {

               avdrN = Math.round(annuitetavdrag(avdr1,rentefot,i)*100)/100;

               renteN = Math.round((at - avdrN)*100)/100;

               avdragsum += avdrN;

               rentesum  += renteN;

               alleTerminer[i-1] = terminbelop + ":" + avdrN + ":" + renteN + ":" + p_varsel_omk;

            }

        // Beregne effektiv rente

        var belop = laan_belop;

        var sum = 0;

        var v;

        var hoy = Math.floor(p_rente/ntpaa+2)/100;

        var lav = p_rente/ntpaa/100;

        var brukt = (hoy+lav)/2;

        var ferdig = false;

        var ovre = belop*(1+0.1/100);

        var nedre= belop*(1-0.1/100);

        var iter = 0;

        while( ! ferdig ) {

           iter += 1;

	   sum = 0;

           var faktor = 1/(1+brukt);

  	      v = alleTerminer[0].split(":");

              for(i=0; i<nterm; i++) {

                   sum += Math.pow(faktor,i+1);

              }

              sum *= Number(v[0]);

           if( sum > ovre ) {

              lav = brukt;

              if( hoy == brukt ) { hoy += 1; }

              brukt = (hoy+brukt)/2;

           } else if( sum < nedre ) {

              hoy = brukt;

              if( lav == brukt ) { lav -= 1; }

              brukt = (lav+brukt)/2;

           } else {

              ferdig = true;

           }

           if( iter > 500 ) {

              ferdig = true;

           }

        }

        eff_rente = (Math.pow(1+brukt,ntpaa)-1)*100;

         // Vis oversikt

         var tekst = "<table border=1>\n";

         tekst += " <tr><td>Rentesats:</td><td align=right>" + formatDecimal(p_rente,true,2) + "%</td></tr>\n";

         tekst += " <tr><td>Effektiv rente:</td><td align=right>" + formatDecimal(eff_rente,true,2) + "%</td></tr>\n";
         
          tekst += " <tr><td>Terminbeløp:</td><td align=right>"  + formatDecimal(terminbelop,true,2) + "</td></tr>\n";

         tekst += " <tr><td>Terminomkostninger:</td><td align=right>kr " + formatDecimal(p_varsel_omk,true,2) + "</td></tr>\n";

         tekst += " <tr><td>Etableringsomkostninger:</td><td align=right>kr " + formatDecimal(p_andre_omk,true,2) + "</td></tr>\n";
         
         tekst += " <tr><td>Antall terminer:</td><td align=right>" + nterm + "</td></tr>\n";

         tekst += " <tr><td>Totalt &aring; betale:</td><td align=right>kr " + formatDecimal(terminsum+p_andre_omk,true,2) + "</td></tr>\n";

         tekst += "</table>\n";



         tekst += "<table>\n";

         tekst += "<tr>\n";




         if( (ntpaa > 1) && (nterm > 1) && (Math.floor(nterm/ntpaa)>0) ) {

            laaneaar = Math.floor(nterm/ntpaa);

            preterm = nterm-laaneaar*ntpaa;

            if( preterm == 0 ) {

               laaneaar -= 1;

               preterm = ntpaa;

            }



            var q = new Array(0,0,0,0);

            for(j=1; j<=laaneaar; j++) {

               q[0] = 0; q[1] = 0; q[2] = 0; q[3] = 0;

               for(i=j*ntpaa; i<(j+1)*ntpaa; i++) {

                  if( i < nterm ) {

                     var v = alleTerminer[i].split(":");

                     q[0] += Number(v[0]);

                     q[1] += Number(v[1]);

                     q[2] += Number(v[2]);

                     q[3] += Number(v[3]);

                  }

               }

               
               //resultatvindu.document.write(tekst);

            }


         }

         tekst +="</table>\n";

         window.document.getElementById('resultat').innerHTML=tekst;

      }

    }

    // Vis en avdragslinje

    function vislinje(termin, terminbelop, avdrag, rente, omk) {

       var tekst = "<tr>\n";

       tekst += " <td align=center>" + termin + "</td>";

       tekst += "<td align=right>" + formatDecimal(terminbelop,true,2) + "</td>";

       tekst += "<td align=right>" + formatDecimal(avdrag,true,2) + "</td>";

       tekst += "<td align=right>" + formatDecimal(rente,true,2) + "</td>";

       tekst += "<td align=right>" + formatDecimal(omk,true,2) + "</td>\n";

       tekst += "</tr>\n";

       return tekst;

    }

    function annuitet(belop, rentefot, terminer) {

       var af = (Math.pow(1+rentefot, terminer)*rentefot)/(Math.pow(1+rentefot,terminer)-1);

       return belop*af;

    }

    function annuitetavdrag1(belop, rentefot, terminer) {

       var af = (Math.pow(1+rentefot, terminer)*rentefot)/(Math.pow(1+rentefot,terminer)-1);

       var at = belop * af;

       var rente1 = belop * rentefot;

       return at - rente1;

    }

    function annuitetavdrag(avdr1, rentefot, termin) {

       return avdr1 * Math.pow(1+rentefot, termin-1);

    }

    // Beregner total avdrag for en periode

    function annuitetsum(avdr1, rentefot, termina, terminb) {

       var sum=0;

       var i;

       for(i=termina; i<=terminb; i++) {

          sum += avdr1 * Math.pow(1+rentefot,i-1);

       }

       return sum;

    }

    // Beregner total rente for en periode

    function annuitetrentesum(at, avdr1, rentefot, termina, terminb) {

       var sum=0;

       var i;

       for(i=termina; i<=terminb; i++) {

          sum += at - (avdr1* Math.pow(1+rentefot,i-1));

       }

       return sum;

    }



    //

    // Format float to only contain <decimaln> decimals.

    //

    function formatDecimal(argvalue, addzero, decimaln) {

      var numOfDecimal = (decimaln == null) ? 2 : decimaln;

      var number = 1;

      number = Math.pow(10, numOfDecimal);

      argvalue = Math.round(parseFloat(argvalue) * number) / number;

      // If you're using IE3.x, you will get error with the following line.

      // argvalue = argvalue.toString();

      // It works fine in IE4.

      argvalue = "" + argvalue;

      if (argvalue.indexOf(".") == 0) argvalue = "0" + argvalue;

      if (addzero == true) {

        if (argvalue.indexOf(".") == -1) argvalue = argvalue + ".";

        while ((argvalue.indexOf(".") + 1) > (argvalue.length - numOfDecimal))

        argvalue = argvalue + "0";

      }

      return argvalue;

    }

    function comma2point(argvalue) {

       var re = new String("" + argvalue)

       re = re.replace(" ", "");

       return parseFloat(re.replace(",", "."));

    }

  // -->

   

