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 0: max = 40000; break; case 10: max = 60000; break; case 20: max = 80000; break; case 30: case 40: case 50: case 60: 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_standard2(castka,akontace,pocetSplatek) {
  castka = (parseInt(castka)) ? parseInt(castka) : 0; akontace = parseInt(akontace); pocetSplatek = parseInt(pocetSplatek);
  switch (akontace) {

    case 10:
      switch (pocetSplatek) {
        case  5: koef =19.33; break; case 10: koef =10.00; break; case 15: koef = 7.05; break; case 20: koef = 5.50; break;
        case 25: koef = 4.56; break; case 30: koef = 3.93; break; case 35: koef = 3.51; break; case 40: koef = 3.15; break;
        case 45: koef = 2.91; break; default: koef = 0;
      } break;
    case 20:
      switch (pocetSplatek) {
        case  5: koef =17.18; break; case 10: koef = 8.94; break; case 15: koef = 6.26; break; case 20: koef = 4.89; break;
        case 25: koef = 4.02; break; case 30: koef = 3.45; break; case 35: koef = 3.08; break; case 40: koef = 2.76; break;
        case 45: koef = 2.54; break; default: koef = 0;
      } break;
    case 30:
      switch (pocetSplatek) {
        case  5: koef =15.03; break; case 10: koef = 7.83; break; case 15: koef = 5.48; break; case 20: koef = 4.25; break;
        case 25: koef = 3.52; break; case 30: koef = 3.02; break; case 35: koef = 2.66; break; case 40: koef = 2.38; break;
        case 45: koef = 2.19; break; default: koef = 0;
      } break;
    case 40:
      switch (pocetSplatek) {
        case  5: koef =12.88; break; case 10: koef = 6.71; break; case 15: koef = 4.70; break; case 20: koef = 3.61; break;
        case 25: koef = 2.98; break; case 30: koef = 2.56; break; case 35: koef = 2.28; break; case 40: koef = 2.04; break;
        case 45: koef = 1.87; break; default: koef = 0;
      } break;
    case 50:
      switch (pocetSplatek) {
        case  5: koef =10.74; break; case 10: koef = 5.59; break; case 15: koef = 3.87; break; case 20: koef = 3.01; break;
        case 25: koef = 2.49; break; case 30: koef = 2.13; break; case 35: koef =  1.9; break; case 40: koef =  1.7; break;
        case 45: koef = 1.56; break; default: koef = 0;
      } break;
    case 60:
      switch (pocetSplatek) {
        case  5: koef = 8.59; break; case 10: koef = 4.44; break; case 15: koef = 3.09; break; case 20: koef = 2.41; break;
        case 25: koef = 1.99; break; case 30: koef = 1.71; break; case 35: koef = 1.52; break; case 40: koef = 1.36; break;
        case 45: koef = 1.25; break; default: koef = 0;
      } break;
    case 70:
      switch (pocetSplatek) {
        case  5: koef = 6.44; break; case 10: koef = 3.33; break; case 15: koef = 2.32; break; case 20: koef = 1.81; break;
        case 25: koef = 1.49; break; case 30: koef = 1.28; break; case 35: koef = 1.14; break; case 40: koef = 1.02; break;
        case 45: koef = 0.94; break; default: koef = 0;
      } break;
    default: koef = 0;
  }

  predem = Math.round(parseInt(akontace)*parseInt(castka)/100);
  pojisteni = 0;
  cena = document.getElementById("ESSOX_standard2_cena").value;
  if (document.getElementById("ESSOX_pojisteniA").checked) pojisteni = Math.round((cena-predem)*0.0016);
  if (document.getElementById("ESSOX_pojisteniB").checked) pojisteni = Math.round((cena-predem)*0.002);
  splatka = Math.ceil((castka*koef/100)+pojisteni);
  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,predem,pojisteni);
}

function ESSOX_splatkyJS_standard2(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í výše úvěru je 2000 Kč.  Pokud je to možné, zkuste zadat nižší zálohu.";
  if (chyba!="") {
    retVal = new Array(0,0,0,0); window.alert(chyba);
  }
  else
    retVal = ESSOX_splatky_standard2(castka,akontace,pocetSplatek);
  setContent('ESSOX_kalkulacka_standard2',(retVal[0]) ? retVal[0] +  ",- Kč/měs." : "CHYBA !!!");
  setContent('ESSOX_standard2_RPSN',(retVal[0]) ? "od " + retVal[1] +  " %" : "-");
  setContent('ESSOX_standard2_akontace_kc',(retVal[3]) ? retVal[3] + ",- Kč" : "-");
  setContent('ESSOX_standard2_pojisteni_kc',(retVal[4]) ? retVal[4] + ",- Kč/měs." : "-");
  document.getElementById('ESSOX_standard2_tRPSN').value = retVal[1];
  document.getElementById('ESSOX_standard2_cena').value = retVal[2];
  document.getElementById('ESSOX_standard2_splatka').value = retVal[0];
  document.getElementById('ESSOX_standard2_predem').value = retVal[3];
}

function ESSOX_poj(typ) {
  if (typ == "A") document.getElementById("ESSOX_pojisteniB").checked = false;
  else if (typ == "B") document.getElementById("ESSOX_pojisteniA").checked = false;
}