function domReady( f ) {
  // Pokud je DOM načten, zavoláme hned danou funkci f().
  if ( domReady.done ) return f();

  // Jestliže jsme už přidali funkci
  if ( domReady.timer ) {
    // přidáme ji do seznamu funkcí k zavolání.
    domReady.ready.push( f );
  } else {
    // Přidáme událost pro dokončení načítání stránky,
    // jen pro případ, že by skončilo dříve.
    addEvent( window, "load", isDOMReady );

    // Vytvoříme pole funkcí k zavolání.
    domReady.ready = [ f ];

    // Ověříme, jestli je DOM připraven, jak to bude nejrychleji možné.
    domReady.timer = setInterval( isDOMReady, 13 );
  }
}

// Ověří, zda je DOM připraven pro navigaci.
function isDOMReady() {
  // Pokud jsme již zjistili, že stránka byla načtena, ukončíme funkci.
  if ( domReady.done ) return false;
 
  // Zkontrolujeme, zda jsou dostupné některé elementy a funkce.
  if ( document && document.getElementsByTagName &&
       document.getElementById && document.body ) {
 
    // Pokud jsou dostupné, ukončíme kontrolu.
    clearInterval( domReady.timer );
    domReady.timer = null;
 
   // Zavoláme všechny čekající funkce.
    for ( var i = 0; i < domReady.ready.length; i++ )
      domReady.ready[i]();

    // Nyní jsme hotovi.
    domReady.ready = null;
    domReady.done = true;
  }
}

