/*
 * Script na vypocet rocni procentni sazby
 * (c) 2001-2002 Vit Planocka <planocka @ chello . cz>
 *
 * uživatelské úpravy Jiří Hajšl 14.12.2008
 */


// připočítání jiných nákladů
function jineNaklady(castka,splatka,pocet,pocetzarok,sazba,jineNakladyCastka,jineNakladyDny)
{
    soucet = 0;
    for (i=0; i < jineNakladyCastka.length; i++)
	  {
	 	   soucet = soucet + jineNakladyCastka[i] / Math.pow(1 + sazba , jineNakladyDny[i] / 365.25);
	  }	
	  if (sazba==0) return(splatka*pocet-castka+soucet);
        else  return((splatka/Math.pow(1+sazba,1/pocetzarok))*(1/Math.pow(1+sazba,pocet/pocetzarok)-1)
                /(1/Math.pow(1+sazba,1/pocetzarok)-1)-castka+soucet);
}

// výpočet samotného RPSN
function RPSN(castka,splatka,pocetPlateb,platebZaRok,jineNakladyCastka,jineNakladyDny) 
{
    castka = parseFloat(castka);
    splatka = parseFloat(splatka);
    plateb = parseFloat(pocetPlateb);
    platebzarok = parseFloat(platebZaRok);

    rozdilstr = 0;
    odhad1 = 0; 
    odhad2 = 10.001;  // i.e. predpoklada se, ze koren lezi mezi 0% a 1000%
    fhodnota1 = jineNaklady(castka,splatka,plateb,platebzarok,odhad1,jineNakladyCastka,jineNakladyDny);
    fhodnota2 = jineNaklady(castka,splatka,plateb,platebzarok,odhad2,jineNakladyCastka,jineNakladyDny);

    if (fhodnota1*fhodnota2<0) 
    {
            odhadstr = (odhad1 + odhad2)/2;
            fhodnotastr = jineNaklady(castka,splatka,plateb,platebzarok,odhadstr,jineNakladyCastka,jineNakladyDny);
        
            do {
               if ((fhodnota1*fhodnotastr)>0) odhad1 = odhadstr;
               if ((fhodnota2*fhodnotastr)>0) odhad2 = odhadstr;
               fhodnota1 = jineNaklady(castka,splatka,plateb,platebzarok,odhad1,jineNakladyCastka,jineNakladyDny);
               fhodnota2 = jineNaklady(castka,splatka,plateb,platebzarok,odhad2,jineNakladyCastka,jineNakladyDny);
               rozdilstr = Math.abs(odhadstr - (odhad1 + odhad2)/2);
               odhadstr = (odhad1 + odhad2) / 2;
               fhodnotastr = jineNaklady(castka,splatka,plateb,platebzarok,odhadstr,jineNakladyCastka,jineNakladyDny);
            } 
            while (rozdilstr>0.000001);    
            return Math.round(odhadstr*10000)/100+"%"; 
    }
    else 
        if (fhodnota1 == 0) return "0%"
		    else return "---"; 
}


