  function ESSOX_aktualizuj(typ) {
    return eval("ESSOX_splatkyJS_" + typ + "(ESSOX_get('ESSOX_" + typ + "_cena'),ESSOX_get('ESSOX_" + typ + "_akontace'),ESSOX_get('ESSOX_" + typ + "_pocetSplatek'))");
  }

  function ESSOX_get(el) {
  return (document.getElementById(el).type=="select") ? document.getElementById(el).options[document.getElementById(el).selectedIndex].value : document.getElementById(el).value;
  }
  
  function ESSOX_maxCastka(typZbozi,akontace) {
  akontace *= 1; typZbozi *= 1; 
  switch (typZbozi) {
    case 1: switch (akontace) {case 10: case 15: max = 100000; break; case 20: case 25: case 30: case 35: case 40: case 45: case 50: case 55: case 60: case 65: case 70: max = 500000; break; default: max = false;} break;

    default: max = false;
  }
  return max;
  }
  
function setContent(el,res) {
if (document.getElementById(el).textContent) document.getElementById(el).textContent = res;
else document.getElementById(el).innerText = res;
}

function rozdilDnu(pujcDen,pujcMes,pujcRok,splDen,splMes,splRok)
{
    pujcDen = parseInt(pujcDen);
	pujcMes = parseInt(pujcMes);
	pujcRok = parseInt(pujcRok);
    splDen = parseInt(splDen);
	splMes = parseInt(splMes);
	splRok = parseInt(splRok);
    if (pujcMes <= 2) { pujcRok -=1; pujcMes +=12; }
	a = Math.floor( pujcRok/100 );
	b = 2 - a + Math.floor( a/4 );
	JulianDayPujcka = Math.floor( 365.25 * ( pujcRok + 4716 )) + Math.floor( 30.6001 * ( pujcMes + 1 )) + pujcDen + b;
	if (splMes <= 2) { splRok -=1; splMes +=12; }
	a = Math.floor( splRok/100 );
	b = 2 - a + Math.floor( a/4 );
	JulianDaySplatka = Math.floor( 365.25 * ( splRok + 4716 )) + Math.floor( 30.6001 * ( splMes + 1 )) + splDen + b;  		 
    return ( JulianDaySplatka - JulianDayPujcka );  
} 

function fhodnota(pujcka,rok,tsplatka,tcas,sazba)
{
	soucet = 0;
    for (i=0; i<tsplatka.length; i++)
    {
       soucet += (tsplatka[i])/Math.pow((1+sazba),tcas[i]/rok);        
    }
    return(soucet - pujcka);
}

function ESSOXpocitejRPSN(pocetSplatek,pujcka,splatka) 
{  
	rok = 365;
  pujcDen = 1;
  pujcMes = new Date(); pujcMes = parseInt(pujcMes.getMonth()+1);
  pujcRok = new Date(); pujcRok = parseInt(pujcRok.getFullYear());
	
	aSplatka = new Array();
	cas = new Array();
	for (i=(pujcMes+1); i<pocetSplatek+(pujcMes+1); i++)
	{
	  aSplatka[(i-(pujcMes+1))] = splatka;
    splDen = 15;
    splMes = (i%12) ? i%12 : 12;
    splRok = pujcRok;
    splRok += (i>12) ? Math.floor((i-1)/12) : 0;
    cas[(i-(pujcMes+1))] = rozdilDnu(pujcDen,pujcMes,pujcRok,splDen,splMes,splRok); 
    } 
		
    rozdilstr = 0;
    odhad1 = 0; 
    odhad2 = 10.001;  // i.e. predpoklada se, ze koren lezi mezi 0% a 1000%
    fhodnota1 = fhodnota(pujcka,rok,aSplatka,cas,odhad1);
    fhodnota2 = fhodnota(pujcka,rok,aSplatka,cas,odhad2);
    if (fhodnota1*fhodnota2<0) 
    {
	        odhadstr = (odhad1 + odhad2)/2;
        	fhodnotastr = fhodnota(pujcka,rok,aSplatka,cas,odhadstr);
        
        	do {
			   if ((fhodnota1*fhodnotastr)>0) odhad1 = odhadstr;
   		       if ((fhodnota2*fhodnotastr)>0) odhad2 = odhadstr;
        	   fhodnota1 = fhodnota(pujcka,rok,aSplatka,cas,odhad1);
        	   fhodnota2 = fhodnota(pujcka,rok,aSplatka,cas,odhad2);
        	   rozdilstr = Math.abs(odhadstr - (odhad1 + odhad2)/2);
               odhadstr = (odhad1 + odhad2)/2;
               fhodnotastr = fhodnota(pujcka,rok,aSplatka,cas,odhadstr);
        	} 
        	while (rozdilstr>0.000001);    
            rpsn2 =Math.round(odhadstr*10000)/100; 
    }
    else if (fhodnota1 == 0) rpsn2 = "0";
		 else rpsn2 = "0"; 
		 
	return rpsn2;
	
}

  ESSOX_typZbozi = 1; // 1 - kola, VT, nábytek, bílá el., zahr.mechanizace; 3 - mobilní telefony; 2 - ostatní
  
  function ESSOX_splatky_moto1(castka,akontace,pocetSplatek) {
  castka = (parseInt(castka)) ? parseInt(castka) : 0; akontace = parseInt(akontace); pocetSplatek = parseInt(pocetSplatek); 
    switch (akontace) {

    case 10:
      switch (pocetSplatek) {
      case 10: koef =10.7301; break; case 15: koef = 7.4900; break; case 20: koef = 5.8600; break;
      case 25: koef = 4.8800; break; case 30: koef = 4.2500; break; case 35: koef = 3.7900; break; case 40: koef = 3.3900; break; 
      case 45: koef = 3.1500; break; case 50: koef = 2.9155; break; case 60: koef = 2.6734; break; case 65: koef = 2.5356; break;
      case 70: koef = 2.4502; break; default: koef = 0; 
      } break; 
    case 15:
      switch (pocetSplatek) {
      case 10: koef =10.1340; break; case 15: koef = 7.0739; break; case 20: koef = 5.5344; break;
      case 25: koef = 4.6089; break; case 30: koef = 4.0139; break; case 35: koef = 3.5794; break; case 40: koef = 3.2017; break; 
      case 45: koef = 2.9750; break; case 50: koef = 2.7535; break; case 60: koef = 2.5249; break; case 65: koef = 2.3947; break;
      case 70: koef = 2.3141; break; default: koef = 0; 
      } break; 
    case 20:
      switch (pocetSplatek) {
      case 10: koef = 9.5399; break; case 15: koef = 6.6200; break; case 20: koef = 5.1700; break;
      case 25: koef = 4.3000; break; case 30: koef = 3.7400; break; case 35: koef = 3.3300; break; case 40: koef = 2.9700; break; 
      case 45: koef = 2.7600; break; case 50: koef = 2.5508; break; case 60: koef = 2.3331; break; case 65: koef = 2.2096; break;
      case 70: koef = 2.1329; break; default: koef = 0; 
      } break; 
    case 25:
      switch (pocetSplatek) {
      case 10: koef = 8.9436; break; case 15: koef = 6.2062; break; case 20: koef = 4.8469; break;
      case 25: koef = 4.0312; break; case 30: koef = 3.5062; break; case 35: koef = 3.1219; break; case 40: koef = 2.7844; break; 
      case 45: koef = 2.5875; break; case 50: koef = 2.3913; break; case 60: koef = 2.1873; break; case 65: koef = 2.0715; break;
      case 70: koef = 1.9996; break; default: koef = 0; 
      } break;     
    case 30:
      switch (pocetSplatek) {
      case 10: koef = 8.3101; break; case 15: koef = 5.7599; break; case 20: koef = 4.4900; break;
      case 25: koef = 3.7300; break; case 30: koef = 3.2300; break; case 35: koef = 2.8700; break; case 40: koef = 2.5600; break; 
      case 45: koef = 2.3700; break; case 50: koef = 2.1856; break; case 60: koef = 1.9927; break; case 65: koef = 1.8840; break;
      case 70: koef = 1.8160; break; default: koef = 0; 
      } break; 
    case 35:
      switch (pocetSplatek) {
      case 10: koef = 7.7165; break; case 15: koef = 5.3485; break; case 20: koef = 4.1693; break;
      case 25: koef = 3.4636; break; case 30: koef = 2.9993; break; case 35: koef = 2.6650; break; case 40: koef = 2.3771; break; 
      case 45: koef = 2.2007; break; case 50: koef = 2.0303; break; case 60: koef = 1.8504; break; case 65: koef = 1.7495; break;
      case 70: koef = 1.6863; break; default: koef = 0;
      } break;        
    case 40:
      switch (pocetSplatek) {
      case 10: koef = 7.0299; break; case 15: koef = 4.9401; break; case 20: koef = 3.8500; break;
      case 25: koef = 3.1900; break; case 30: koef = 2.7700; break; case 35: koef = 2.4600; break; case 40: koef = 2.1900; break; 
      case 45: koef = 2.0300; break; case 50: koef = 1.8725; break; case 60: koef = 1.7063; break; case 65: koef = 1.6135; break;
      case 70: koef = 1.5552; break; default: koef = 0; 
      } break; 
    case 45:
      switch (pocetSplatek) {
      case 10: koef = 6.4441; break; case 15: koef = 4.5284; break; case 20: koef = 3.5292; break;
      case 25: koef = 2.9242; break; case 30: koef = 2.5392; break; case 35: koef = 2.2550; break; case 40: koef = 2.0075; break; 
      case 45: koef = 1.8608; break; case 50: koef = 1.7164; break; case 60: koef = 1.5641; break; case 65: koef = 1.4790; break;
      case 70: koef = 1.4256; break; default: koef = 0;
      } break;  
    case 50:
      switch (pocetSplatek) {
      case 10: koef = 5.8600; break; case 15: koef = 4.1100; break; case 20: koef = 3.2100; break;
      case 25: koef = 2.6600; break; case 30: koef = 2.3100; break; case 35: koef = 2.0500; break; case 40: koef = 1.8300; break; 
      case 45: koef = 1.7000; break; case 50: koef = 1.5689; break; case 60: koef = 1.4312; break; case 65: koef = 1.3536; break;
      case 70: koef = 1.3052; break; default: koef = 0; 
      } break; 
    case 55:
      switch (pocetSplatek) {
      case 10: koef = 5.2740; break; case 15: koef = 3.6990; break; case 20: koef = 2.8890; break;
      case 25: koef = 2.3940; break; case 30: koef = 2.0790; break; case 35: koef = 1.8450; break; case 40: koef = 1.6470; break; 
      case 45: koef = 1.5300; break; case 50: koef = 1.4120; break; case 60: koef = 1.2880; break; case 65: koef = 1.2183; break;
      case 70: koef = 1.1747; break; default: koef = 0;
      } break;  
    case 60:
      switch (pocetSplatek) {
      case 10: koef = 4.6900; break; case 15: koef = 3.2900; break; case 20: koef = 2.5700; break;
      case 25: koef = 2.1300; break; case 30: koef = 1.8500; break; case 35: koef = 1.6400; break; case 40: koef = 1.4600; break; 
      case 45: koef = 1.3600; break; case 50: koef = 1.2552; break; case 60: koef = 1.1447; break; case 65: koef = 1.0829; break;
      case 70: koef = 1.0442; break; default: koef = 0; 
      } break; 
    case 65:
      switch (pocetSplatek) {
      case 10: koef = 4.1038; break; case 15: koef = 2.8787; break; case 20: koef = 2.2487; break;
      case 25: koef = 1.8637; break; case 30: koef = 1.6187; break; case 35: koef = 1.4350; break; case 40: koef = 1.2775; break; 
      case 45: koef = 1.1900; break; case 50: koef = 1.0983; break; case 60: koef = 1.0016; break; case 65: koef = 0.9475; break;
      case 70: koef = 0.9136; break; default: koef = 0;
      } break;  
    case 70:
      switch (pocetSplatek) {
      case 10: koef = 3.5201; break; case 15: koef = 2.4700; break; case 20: koef = 1.9200; break;
      case 25: koef = 1.6000; break; case 30: koef = 1.3900; break; case 35: koef = 1.2300; break; case 40: koef = 1.1000; break; 
      case 45: koef = 1.0200; break; case 50: koef = 0.9414; break; case 60: koef = 0.8587; break; case 65: koef = 0.8122; break;
      case 70: koef = 0.7831; break; default: koef = 0; 
      } break; 
    default: koef = 0;
    }

    splatka = Math.ceil(castka*koef/100);
    navyseni = Math.round((((splatka - ((castka*((100-akontace)/100))/pocetSplatek))*pocetSplatek) / castka) * 10000)/100;
    rpsn = ESSOXpocitejRPSN(pocetSplatek,(castka - (castka*akontace*0.01)),(castka*koef/100));
    return new Array(splatka,rpsn,castka);
  }
  
  function ESSOX_splatkyJS_moto1(castka,akontace,pocetSplatek) {
    max = ESSOX_maxCastka(ESSOX_typZbozi,akontace);
    chyba = "";
    if (akontace < 30 && ESSOX_typZbozi == 3) chyba = "U mobilních telefonů je minimální záloha 30 %.";
    if (max < (castka-(castka*(akontace/100)))) chyba = "Maximální výše úvěru pro zadanou zálohu je " + max + " Kč.";
    if ((castka-(castka*(akontace/100)))<2000) chyba = "Minimální možná výše úvěru je 2000 Kč.";
    if (chyba!="") { retVal = new Array(0,0,0); window.alert(chyba); } 
    else 
      retVal = ESSOX_splatky_moto1(castka,akontace,pocetSplatek);
    setContent('ESSOX_kalkulacka_moto1',(retVal[0]) ? retVal[0] +  ",- Kč/měs." : "CHYBA !!!");
    setContent('ESSOX_moto1_RPSN',(retVal[0]) ? "od " + retVal[1] +  " %" : "-");
    document.getElementById('ESSOX_moto1_tRPSN').value = retVal[1];
    document.getElementById('ESSOX_moto1_cena').value = retVal[2];
    document.getElementById('ESSOX_moto1_splatka').value = retVal[0];
    document.getElementById('ESSOX_moto1_predem').value = Math.round(parseInt(akontace)*parseInt(castka)/100);
  }
