public function getHtml()
    {
        $predmetyZapisnehoListu = $this->skusky->getPredmetyZapisnehoListu();
        $hodnoteniaData = array();
        foreach ($this->hodnotenia->getHodnotenia()->getData() as $row) {
            $hodnoteniaData[$row['nazov']] = $row;
        }
        $this->hodnoteniaData = $hodnoteniaData;
        if (Input::get('action') !== null) {
            assert(Input::get("action") == "prihlasNaSkusku");
            if ($this->prihlasNaSkusku(Input::get("prihlasPredmetIndex"), Input::get("prihlasTerminIndex"))) {
                FajrUtils::redirect(array('tab' => 'TerminyHodnotenia'));
            } else {
                throw new Exception('Na skúšku sa nepodarilo prihlásiť.');
            }
        }
        $baseUrlParams = array("studium" => Input::get("studium"), "list" => Input::get("list"), "tab" => Input::get("tab"));
        $terminyTable = new Table(TableDefinitions::vyberTerminuHodnoteniaJoined(), array('termin' => 'index', 'predmet' => 'predmetIndex'), $baseUrlParams);
        $terminyCollapsible = new Collapsible('Termíny, na ktoré sa môžem prihlásiť', $terminyTable);
        $actionUrl = FajrUtils::linkUrl($baseUrlParams);
        foreach ($predmetyZapisnehoListu->getData() as $predmetRow) {
            $terminy = $this->skusky->getZoznamTerminovDialog($predmetRow['index'])->getZoznamTerminov();
            foreach ($terminy->getData() as $row) {
                $row['predmet'] = $predmetRow['nazov'];
                $row['predmetIndex'] = $predmetRow['index'];
                $hash = $this->hashNaPrihlasenie($predmetRow['nazov'], $row);
                $mozeSaPrihlasit = $this->mozeSaPrihlasit($row);
                if ($mozeSaPrihlasit == self::PRIHLASIT_MOZE || $mozeSaPrihlasit == self::PRIHLASIT_MOZE_ZNAMKA) {
                    $row['prihlas'] = "<form method='post' action='{$actionUrl}'><div>\n\t\t\t\t\t\t\t<input type='hidden' name='action' value='prihlasNaSkusku'/>\n\t\t\t\t\t\t\t<input type='hidden' name='prihlasPredmetIndex'\n\t\t\t\t\t\t\tvalue='" . $row['predmetIndex'] . "'/>\n\t\t\t\t\t\t\t<input type='hidden' name='prihlasTerminIndex'\n\t\t\t\t\t\t\tvalue='" . $row['index'] . "'/>\n\t\t\t\t\t\t\t<input type='hidden' name='hash' value='{$hash}'/>\n\t\t\t\t\t\t\t<button name='submit' type='submit' class='tableButton positive'>\n\t\t\t\t\t\t\t\t<img src='images/add.png' alt=''>Prihlás ma!\n\t\t\t\t\t\t\t</button></div></form>";
                    if ($mozeSaPrihlasit == self::PRIHLASIT_MOZE_ZNAMKA) {
                        $row['prihlas'] = 'Už máš zápísané"' . $hodnoteniaData[$row['predmet']]['znamka'] . '"' . $row['prihlas'];
                    }
                } else {
                    if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_CAS) {
                        $row['prihlas'] = 'Nedá sa (neskoro)';
                    } else {
                        if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_POCET) {
                            $row['prihlas'] = 'Termín je plný!';
                        } else {
                            if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_ZNAMKA) {
                                $row['prihlas'] = 'Už máš zápísané"' . $hodnoteniaData[$row['predmet']]['znamka'] . '"';
                            } else {
                                if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_INE) {
                                    $row['prihlas'] = 'Nedá sa, dôvod neznámy';
                                }
                            }
                        }
                    }
                }
                $terminyTable->addRow($row, null);
            }
        }
        if (Input::get('termin') != null && Input::get('predmet') != null) {
            $terminyTable->setOption('selected_key', array('index' => Input::get('termin'), 'predmetIndex' => Input::get('predmet')));
        }
        $html = $terminyCollapsible->getHtml();
        if (Input::get('termin') != null && Input::get('predmet') != null) {
            $prihlaseni = $this->skusky->getZoznamTerminovDialog(Input::get('predmet'))->getZoznamPrihlasenychDialog(Input::get('termin'))->getZoznamPrihlasenych();
            $zoznamPrihlasenychTable = new Table(TableDefinitions::zoznamPrihlasenych(), null, array('studium', 'list'));
            $zoznamPrihlasenychCollapsible = new Collapsible('Zoznam prihlásených
					na vybratý termín', $zoznamPrihlasenychTable);
            $zoznamPrihlasenychTable->addRows($prihlaseni->getData());
            $html .= $zoznamPrihlasenychCollapsible->getHtml();
        }
        return $html;
    }