#!/usr/bin/perl
# Zobrazí nebo zpracuje hlasovací formulář.
# Copyright © 2011-2016 Klára a Dan Zemanovi <zeman@ufal.mff.cuni.cz>
# Licence: GNU GPL

use utf8; # říct Perlu, že konstantní řetězce ve zdrojáku jsou v UTF
use Encode; # funkce pro překódování
use DBI; # spolupráce se serverem MySQL
# Říct Perlu, kde najde Danovy sdílené knihovny.
# CGI skripty běží pod uživatelem apache, který nemá tyto knihovny v cestě.
use lib '/s/w/lib/dan';
use lib '/s/w/lib/cgi/mso';
use dancgi; # čtení parametrů z webu nebo z ARGV
use cas; # práce s daty a časem
use jazyky; # jazykové verze textů
use csort; # jazykově závislé řazení podle abecedy
use mso; # funkce pro generování stránek o olympiádě
binmode(STDOUT, ':utf8'); # říct Perlu, že UTF chceme i na výstupu


# Připojit se k databázi.
$databaze = mso::pripojit_se_k_databazi();
# Každý rok je potřeba nejdříve v databázi na serveru vytvořit novou tabulku,
# ta stará tam zůstane jako archív. Dá se to udělat tak, že u loňské tabulky dám
# export do SQL, v tom, co dostanu, umažu dlouhý příkaz INSERT pro vložení dat,
# zbude nějaká inicializace a příkaz CREATE, v něm změním jméno tabulky na nový rok,
# pak to zase vložím do záložky SQL databáze mso na serveru.
# Potom musíme změnit název tabulky i tady:
$tabulka = 'hlasovani_2021';


# Načíst parametry z URL.
dancgi::cist_parametry(\%konfig);
# Umožnit volat skript z příkazového řádku a předat parametry tam (např. perl partie.pl zdroj=cas).
dancgi::rozebrat_parametry($ARGV[0], \%konfig);
# Načíst formulář.
if($konfig{co} eq 'zpracuj')
{
    dancgi::cist_formular_post(\%konfig);
}
if($konfig{jazyk} eq '')
{
    $konfig{jazyk} = 'cs';
}
$jazyky::jazyk = $konfig{jazyk};
# Vždy lze hlasovat pouze pro jeden ročník: ten nejbližší, který bude, případně
# ten, který právě probíhá. Zjistit, který ročník to je, a přepsat parametr rok,
# ať už tam měl uživatel cokoli.
$ted = cas::ted();
$roky = mso::dotazat_se_databaze($databaze, 'rok', 'konec', 'vcasne_prihlasky_do', 'rocniky ORDER BY rok');
for(my $i = 0; $i<=$#{$roky}; $i++)
{
    $konfig{rok} = $roky->[$i]{rok};
    $konfig{vcas} = $roky->[$i]{vcasne_prihlasky_do};
    if($ted->{eden} <= cas::datum2eden($roky->[$i]{konec}))
    {
        last;
    }
}



if($konfig{co} ne 'zpracuj')
{
    zobrazit_hlasovani($databaze, \%konfig);
}
else
{
    zpracovat_hlasovani($databaze, $tabulka, \%konfig);
}



###############################################################################
# PODPROGRAMY
###############################################################################



#------------------------------------------------------------------------------
# Zobrazí hlasovací formulář.
#------------------------------------------------------------------------------
sub zobrazit_hlasovani
{
    my $databaze = shift;
    my $konfig = shift;
    mso::vypsat_stranku(
    {
        'nazev'  => "MSO: $konfig->{rok}: ".jazyky::zjistit('Hlasovani'),
        'nadpis' => jazyky::zjistit('hlasovani_nadpis', $konfig->{rok}),
        'telo'   => hlasovani($databaze, $konfig),
        'rok'    => $konfig->{rok}
    });
}



#------------------------------------------------------------------------------
# Vypíše hlasovací formulář.
#------------------------------------------------------------------------------
sub hlasovani
{
    my $databaze = shift;
    my $konfig = shift;
    my $stranka;
    # Přečíst tabulku akcí.
    my $akce = mso::nacist_akce($databaze, $konfig->{rok});
    # Rozebrat hlasovací kód.
    # Kdyby byl z nějakého důvodu vadný, tak to oznámit hned a vůbec jim nenabídnout hlasovací formulář.
    $konfig->{hl_kod} =~ s/^\s/0/;
    if($konfig->{hl_kod} =~ m/^(\d\d)(\d\d\d\d\d\d)(\d\d)$/)
    {
        $konfig->{hlasu_celkem}= $1;
        $konfig->{hlasu_celkem} =~ s/^0*(\d+?)$/$1/;
        $konfig->{kod_osoby} = $2;
        if($konfig->{hlasu_celkem} > 10 || $konfig->{hl_kod} % 11 != 0)
        {
            return "<p style='color:red'>Chyba: neplatný hlasovací kód</p> \n";
        }
    }
    else
    {
        return "<p style='color:red'>Chyba: neplatný hlasovací kód '$konfig->{hl_kod}'</p><p>Zkontrolujte, zda vložený odkaz končí kod= a za ním deseticiferný hlasovací kod. Pokud tomu tak není, tak se podívejte znovu do e-mailu a pokud tam máte kod= mezera a devíticiferný kod, tak mezeru nahraďte 0 a takto vzniklý deseticiferný kod (včetně 0 na začátku a bez mezery) vložte nakonec odkazu do Vašeho prohlížeče a odentrujte. Pokud i tak nepůjde odhlasovat, tak nám napište na info\@deskohrani.cz Děkujeme za pochopení. </p>\n";
    }
    # Vypsat formulář hlasování.
    my $parametry = dancgi::sestavit_parametry_odkaz($konfig, 'telo=hlasovani.pl', 'co=zpracuj');
    $stranka .= "<form class=\"hlasovani\" method=\"post\" action=\"index.pl?$parametry\">\n";
    $stranka .= "<p align=right><b>".jazyky::zjistit("hlasovaci_kod")."$konfig->{hl_kod}<input type=\"hidden\" name=\"hl_kod\" value=\"$konfig->{hl_kod}\"/></b></p>\n";
    $stranka .= "<p>Vážený hráči, zde máte možnost hlasovat o turnajích podle Vaší preference.\n";
    $stranka .= " <br/>Každé hře můžete přidělit 0 - 3 body tak, aby součet bodů u všech byl nejvýše <b>$konfig->{hlasu_celkem} bodů </b> \n";
    $stranka .= " <br/>Hlasovací body jste dostali přidělené (3 - 10 bodů) podle množství a různorodosti turnajů, kterých jste se v předchozích 3 letech zúčastnili.\n";
    $stranka .= " Z tohoto důvodu máte přidělený svůj hlasovací kod. Z každého kodu lze hlasovat pouze jednou.\n";
    $stranka .= " <p><b>Hlasování bude ukončeno 20.7.2021. </b></p><p> Poté zařadíme do programu 3 - 6 turnajů, které získaly nejvíce hlasů.\n";
    $stranka .= "<p>Máte k dispozici: <br/>\n";
    $stranka .= "<b>$konfig->{hlasu_celkem} hlasovacích bodů</b> k rozdělení.<br/>\n";

	#
	# Staré hry
	# Od roku 2017 už jen jedno hlasování, tedy zrušeno rozdělení na novinky a steřinky.
    #
    $stranka .= "<p>Prosíme, přidělte hrám v součtu nejvýše <b>$konfig->{hlasu_celkem} hlasovacích bodů</b>.</p>\n";
    $stranka .= "<table>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/6nm/6nm.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"s6nm\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "  <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=6nm\" target=\"pokladnice\">6 bere</a> \n";
    $stranka .= "Karty s různou bodovou hodnotou se odkládají do řad podle velikosti. Maximální počet karet v řadě je pět. Pokud musíte doplnit šestou, řadu si vezmete a dostanete trestné body. Odhadněte soupeřovy záměry, aby šestá karta nevyšla na Vás! (40-60 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/7wo/7wo.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"s7wo\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=7wo\" target=\"pokladnice\">7 divů světa</a> \n";
    $stranka .= "Hra se odehrává postupně ve třech fázích a hráči se snaží budovat svoji civilizaci, k čemuž potřebují shromažďovat zdroje, stavět budovy, rozvíjet své technologie, i úspěšně bojovat.(30 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/7wd/7wd.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"s7wd\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.zatrolene-hry.cz/spolecenska-hra/7-wonders-duel-5005/\" target=\"pokladnice\">7 divů světa - Duel</a> \n";
    $stranka .= "<br>Hra 7 Wonders: Duel je určena pro dva hráče, čerpá ze známé hry 7 Divů světa a cílem hráčů bude předčit svého soupeře na poli vědeckém, vojenském a státnickém. <br>(30 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/agr/agr.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sagr\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=agr\" target=\"pokladnice\">Agricola</a> \n";
    $stranka .= "Hra vás zavede na zemědělskou usedlost 17. století. Budete pečovat o své hospodářství tak, aby nikdo z domácnosti nezemřel hlady a váš statek prosperoval a rozvíjel se. (30 - 120 min, 12+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/arb/arb.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sarb\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=arb\" target=\"pokladnice\">Arboretum</a> \n";
    $stranka .= "Zde se hráči pokouší vybudovat co nejlepší arboretum neboli botanickou zahradu zaměřenou na dřeviny. Nejlepší arboreta – alespoň v této hře – jsou ta, která nabízí návštěvníkům nejkrásnější a nejdelší procházku s výhledem na co nejzajímavější stromy. Ve hře se nachází 10 odrůd stromů, představovaných sadami karet od 1 do 8. Hráči se snaží vytvořit co nejdelší číselné řady ve svém arboretu, ale zároveň si ponechat určité stromy v zásobě na závěrečné bodování. (30 - 45 min, 10+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/azu/azu.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sazu\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=azu\" target=\"pokladnice\">Azul</a> \n";
    $stranka .= "Portugalský král Manuel I. byl při své návštěvě Alhambry natolik okouzlen jejími interiéry, zejména keramickými dlaždicemi, že okamžitě nařídil, aby jeho vlastní palác v Portugalsku byl vyzdoben podobnými obklady. AZUL je krásná, barevná, rychlá a svižná hra pro celou rodinu, ve které se vžijete do rolí mistrů obkladačů. Vytvořte tu nejkrásnější mozaiku pro královský palác!(40 - 50 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/ale/ale.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sale\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=ale\" target=\"pokladnice\">Azul: Letohrádek</a> \n";
    $stranka .= "Ve hře se vrátíte do Portugalska, abyste uskutečnili záměr velkého krále. V roli slavných stavitelů budete mít za úkol ze skvostných materiálů vystavět Letohrádek. Přitom však vzácnými zdroji nesmíte plýtvat! Jen ten nejlepší z vás bude shledán hodným pocty uctít Jeho Veličenstvo!(30 - 45 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/div/div.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdiv\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=div\" target=\"pokladnice\">Divukraj</a> \n";
    $stranka .= "Divukraj je překrásně zpracovaná desková hra, ve které stavíte městečko pro zvířátka v lese. Sbíráte suroviny, za které můžete stavět budovy a přivádět do města obyvatele. To vše v malebném světě, který z této hry dělá jednu z nejlépe vypadajících her na trhu. Hra ale vizuálně mate, nejde rozhodně o dětskou, spíše o středně náročnou strategii. (70-80 min, 13+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/dix/dix.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdix\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=dix\" target=\"pokladnice\">Dixit</a> \n";
    $stranka .= "(Hra Dixit (latinsky \"on řekl\") je hrou vyprávěcí. Hráči se snaží podle karet nastínit příběh - ale musí si počínat obezřetně, aby jejich příběh nebyl ani příliš komplikovaný, ani příliš jednoduchý. (30-40 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/dok/dok.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdok\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=dok\" target=\"pokladnice\">Doba Kamenná</a>\n";
    $stranka .= "Doba kamenná je doba kamenná. A rozhodně to není doba jednoduchá. Nejdůležitějším úkolem vašeho kmene je obstarat dostatek jídla pro všechny své členy. A proto je potřeba vyrazit na lov, a nebo alespoň vypěstovat obilí na prvních zoraných polích. K úspěchu vašeho kmene je třeba dobré plánování a také kousek štěstí. (50-80 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/rfg/rfg.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"srfg\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=rfg\" target=\"pokladnice\">Dobyvatelé vesmíru</a> \n";
    $stranka .= "Hráči závodí v průzkumu galaxie - objevují nové planety a vynalézají nové technologie. Vítězí hráč, který získá nejvíce bodů. (45-60 min, 12+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/iww/iww.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"siww\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=iww\" target=\"pokladnice\">It's a Wonderful World</a>  \n";
    $stranka .= "Stanete v čele rostoucího Impéria, které povedete k zářné budoucnosti. Musíte se ovšem rozrůstat rychleji a lépe než vaši soupeři, pečlivě naplánovat svůj rozvoj, vytvořit potřebnou výrobní sílu, a nakonec ovládnout tento nový svět. (30-60 min, 14+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/zug/zug.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"szug\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=zug\" target=\"pokladnice\">Jízdenky, prosím (Ticket to Ride)</a> \n";
    $stranka .= "Železniční hra podobná Trans Americe. Na mapě spojujete města železniční sítí, přičemž skryté karty určují, která připojená města vám přinesou body. (40-60 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/kid/kid.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"skid\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=kid\" target=\"pokladnice\">Kingdomino</a>  \n";
    $stranka .= "Hráči budují každý své království. Kdo bude úspěšnější? Díky proměnlivému hracímu plánu a jiným podmínkám pro zisk bodů v každé hře, nebudou nikdy dvě hry stejné. (40-60 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/mrs/mrs.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"smrs\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=mrs\" target=\"pokladnice\">Mars: Teraformace </a> \n";
    $stranka .= "Meziplanetární korporace soutěží v přetváření Marsu na obyvatelnou planetu. Ve hře bude každý hrát za jednu meziplanetární společnost s určitým profilem. Budete hrát karty projektů, řídit svou produkci zdrojů, umísťovat na mapu své destičky měst a zeleně a závodit o čestné tituly a vítězství ve vypsaných soutěžích. (90-120 min, 12+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/nkr/nkr.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"snkr\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=nkr\" target=\"pokladnice\">Na křídlech </a> \n";
    $stranka .= "Budete představovat nadšené ornitology, pozorovatele ptactva a sběratele, snažící se přilákat do své voliéry co nejúžasnější ptáky. Voliéra zahrnuje 3 různé biotopy a každý pták pomůže rozvinout vaši ptačí zoo v určité oblasti. Body lze získat za zajímavé ptáky ve sbírce, plněním různých úkolů vyhodnocovaných během hry i na jejím konci, za snůšku vajec, akumulovanou potravu a kořist. (50-70 min, 12+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/ioc/ioc.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sioc\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=ioc\" target=\"pokladnice\">Ostrov koček </a> \n";
    $stranka .= "Jste ušlechtilí zachránci prastaré populace divokých koček z jejich domovského ostrova, k němuž míří obávaný arcimág Vegh Černoruký. Každou kočku představuje unikátní dílek. Vy musíte vymyslet, jak jich na loď naložit co nejvíce a pokud možno přitom udržet kočičí rodiny pospolu.(60-90 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/paw/paw.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"spaw\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=paw\" target=\"pokladnice\">Patchwork </a> \n";
    $stranka .= "Se svou přikrývkou dosáhne zaslouženého vítězství ten, kdo chytře zvolí a nejlépe zkombinuje vybrané záplaty. (30-45 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/plk/plk.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"splk\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=plk\" target=\"pokladnice\">Pelíšek</a>\n";
    $stranka .= "Pelíšek je hra o vytváření skládaček z pestrobarevných dílků pro celou rodinu. Budete v ní představovat milovníky koček, kteří se snaží pro své mazlíčky utkat z barevných útržků ve tvaru šestiúhelníkových dílků tu nejkrásnější dečku. Komu se podaří na svou desku složit dílky nejšikovněji, aby získal nejvíce bodů za splněné úkoly, vytvořené pelíšky a přišité knoflíky? (30-45 min, 10+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/plt/plt.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"splt\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=plt\" target=\"pokladnice\">Planeta </a> \n";
    $stranka .= "Jaké by to bylo stvořit svůj vlastní svět? To si vyzkoušíte v deskové hře Planeta. Každý si v ní sestaví vlastní planetku s jedinečným ekosystémem. Jednotliví hráči vytváří podmínky pro život nejrůznějších zvířat, rozmisťuje lesy, pohoří, pouště, ledovce i oceány. Tato hra nejen že zabaví celou rodinu, ale u dětí podporuje také kreativitu a v neposlední řadě zájem o přírodu a ekologii. (30-45 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/por/por.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"spor\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=por\" target=\"pokladnice\">Port Royal </a>\n";
    $stranka .= "Kupci v Port Royal se snaží získat z Karibského moře co nejvíce, pokud se snaží vydělat příliš, riskují, že pro jeden den spláčou nad výsledkem a přijdou o možnost získat cokoli. Získejte přízeň admirálů a guvernérů, získávejte vliv a podporu pro Vaše expedice, které vám pomohou zvítězit. (30-60 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/pur/pur.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"spur\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=pur\" target=\"pokladnice\">Puerto Rico</a> \n";
    $stranka .= "Zlatokop nebo guvernér, osadník nebo stavitel? Ať už v Novém světě hrajete jakoukoliv roli, máte jen jeden cíl: dosáhnout co největšího blahobytu a věhlasu! Kdo bude vlastnit nejvýnosnější plantáže? Kdo postaví nejdůležitější budovy? Kdo dosáhne největšího počtu vítězných bodů…? (90-150 min, 12+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/qrt/qrt.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sqrt\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=qrt\" target=\"pokladnice\">Quartino</a> \n";
    $stranka .= "Logická desková hra pro zábavu i rozvoj mysli pro 1-5 hráčů. Má snadný návod, trvá asi 30 minut, k výhře však budete potřebovat hlavně kombinační schopnosti a představivost. (20-45 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/rar/rar.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"srar\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=rar\" target=\"pokladnice\">Res Arcana </a> \n";
    $stranka .= "Ve vysoké věži přebývá alchymista obklopený nesčetnými lahvičkami s bublajícími lektvary. V posvátném háji druid připravuje byliny na mystický rituál. V katakombách nekromant vyvolává kostěného draka… Ve hře spolu o nadvládu nad prastarými monumenty a místy moci soupeří mágové, kteří pomocí magických esencí a předmětů sestavují artefakty, používají své schopnosti a poroučejí drakům. (20-60 min, 12+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/sgr/sgr.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"ssgr\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=sgr\" target=\"pokladnice\">Sagrada</a>  \n";
    $stranka .= "Překrásná barevná hra s kostkami. Staňte se umělci soutěžícími o to, kdo vytvoří nejkrásnější barevnou vitráž kostela Sagrada Família. Okenní sklíčka jsou ve hře představována barevnými kostkami, jejichž hodnoty vyjadřují odstín. Každé kolo si budete vybírat kostky z nabídky a pokládat je do svého okenního rámu. Přitom bude nutné dodržovat podmínky karet vzorů. Zároveň nesmějí mít dvě sousedící kostky stejnou barvu ani hodnotu. (30-45 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/spl/spl.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"nspl\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=spl\" target=\"pokladnice\">Splendor</a> \n";
    $stranka .= "V roli bohatého obchodníka za časů renesance budete využívat své zdroje na získávání dolů, dopravních prostředků a řemeslníků, kteří přetvoří surové drahokamy v nádherné šperky. (30-45 min, 10+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/trn/trn.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"strn\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=trn\" target=\"pokladnice\">Trans America či Trans Evropa</a>\n";
    $stranka .= "Stavíte železnice a snažíte se propojit pět vašich měst kolejnicemi. Vaše neúspěchy ženou vaši lokomotivu blíže k závoře. Když do ní někdo narazí, hra končí. Vyhrává ten, kdo je od závory nejdále. (20-40 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/zbs/zbs.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"szbs\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=zbs\" target=\"pokladnice\">Zborni salát</a>\n";
    $stranka .= "Rychlá a zábavná hra pro celou rodinu. Je v ní přes 100 způsobů, jak získávat body! Každý může sledovat jinou strategií a každá partie je jedinečná! Dobírejte kombinace bodovacích karet a zeleniny z neustále se měnícího trhu. Smíchejte zeleninu a její bodování a zbodněte ten nejvýživnější salát! (20-30 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/zoa/zoa.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"szoa\">\n";
    $stranka .= "<option value=0 default>0</option>\n";
    $stranka .= "<option value=1>1</option>\n";
    $stranka .= "<option value=2>2</option>\n";
    $stranka .= "<option value=3>3</option>\n";
    $stranka .= "</select>\n";
    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=zoa\" target=\"pokladnice\">Ztracený ostrov Arnak</a>\n";
    $stranka .= "Na neobydleném ostrově v dosud neprobádaných vodách oceánu nalezli badatelé stopy pradávné civilizace. Nyní stojíš v čele jedné z expedic, které se vydávají ostrov důkladně prozkoumat. Podaří se vám porazit mocné strážce a nalézt dávno ztracené artefakty? Ztracený ostrov Arnak neotřelým způsobem kombinuje mechaniky deck buildingu, worker placementu a resource managementu. Bude to právě tvoje expedice, které se podaří odhalit tajemství ostrova? (30-120 min, 12+) </td></tr>\n";
	
    $stranka .= "</table>\n";

	#
	# Nové hry  zrušno od roku 2017
    #
    #	$stranka .= "<h3>Volba z her, které měly na Deskohraní do jednoho turnaje (\"nové\" hry)</h3>\n";
    #    $stranka .= "<p>Některé z nich jsou letošní či loňské novinky! Proto u těchto her naleznete vždy krátký popis, snažící se vám danou hru přiblížit. ";
    #	$stranka .= "Stejně jako u \"starých\" i <b>zde máte k dispozici $konfig->{hlasu_celkem} bodů k rozdělení </b> podle Vašeho uvážení.</p>\n";


    #    $stranka .= "<p><select type=\"text\" name=\"nalh\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=alh\" target=\"pokladnice\">Alhambra</a> \n";
    #    $stranka .= "Každý hráč staví \"svou\" Alhambru. Hráči se snaží mít většinu v určitém druhu budovy, které jsou k mání jen v určitou dobu, a také mít nejdelší městské hradby. (45-60 min, 8+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"namu\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=amu\" target=\"pokladnice\">Amun-Re</a> \n";
    #    $stranka .= "Hráči se snaží mít nejen co nejvíce pyramid, ale i provincii s nejvíce pyramidami. Potřebné zlato získají výnosem z úrody, a proto je třeba si oběťmi naklonit vládce bohů Amun-Re. (60-120 min, 12+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"ncnc\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
     #   $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=cnc\" target=\"pokladnice\">Concordia</a> \n";
    #    $stranka .= "Kolonizujete Římskou říši, budujete města a obchodujete se surovinami. (90-120 min, 12+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"nfar\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
     #   $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
     #   $stranka .= "<option value=3>3</option>\n";
     #   $stranka .= "</select>\n";
     #   $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=far\" target=\"pokladnice\">Farmáři</a> \n";
     #   $stranka .= "Farmáři jsou rodinná hra s jednoduchými pravidly, ve které budete potřebovat i trochu strategie. Obsahuje spoustu dřevěných hracích dílků ve tvaru různých typů ovoce. (40-60 min, 10+) </p>\n";

     #   $stranka .= "<p><select type=\"text\" name=\"nfrs\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=frs\" target=\"pokladnice\">Fresco</a> \n";
    #    $stranka .= "Staňte se na chvíli restaurátorem fresky starobylého kostela. Nominace Spiel des Jahres 2010. (60-80 min, 10+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"nglm\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
     #   $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=glm\" target=\"pokladnice\">Glen More</a> \n";
     #   $stranka .= "Jako vůdce skotských horalů rozšiřujete svoje území pokládáním destiček pastvin, vesnic, jezer a hradů. Jediná hra, kde můžete vypálit whisky! :) (60-90 min, 10+) </p>\n";

     #   $stranka .= "<p><select type=\"text\" name=\"nlac\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
     #   $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=lac\" target=\"pokladnice\">Lancaster</a> \n";
     #   $stranka .= "Boj o moc mezi šlechtickými rody ve středověké Anglii v období Stoleté války s Francií. (60-90 min, 10+) </p>\n";

     #   $stranka .= "<p><select type=\"text\" name=\"nlnd\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
     #   $stranka .= "<option value=3>3</option>\n";
     #   $stranka .= "</select>\n";
     #   $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=lnd\" target=\"pokladnice\">London</a> \n";
     #   $stranka .= "Vybudujte město od katedrály sv. Pavla až po první metro na světě. Hra je založená na mechanismu vykládání karet, z nichž ale polovinu vždy musíte nabídnout soupeřům! (90-120 min, 13+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"nlui\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
     #   $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=lui\" target=\"pokladnice\">Ludvík XIV</a> \n";
    #    $stranka .= "Hráči jsou dvořané a mají zhruba 100 minut na dosažení svých cílů u dvora. Pochopitelně, svou roli zde hraje i sám Král Slunce. (90-120 min, 12+) </p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"npra\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
     #   $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
     #   $stranka .= "<option value=3>3</option>\n";
     #   $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=pra\" target=\"pokladnice\">Pravěk </a> \n";
    #    $stranka .= "Hráči začínají jako prostí lovci a sběrači a snaží se osvojovat nové technologie jako zemědělství. Hra obsahuje podobné mechanismy jako Vysoké napětí. (60-90 min, 12+)</p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"ntkn\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
     #   $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
     #   $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=tkn\" target=\"pokladnice\">Takenoko</a> \n";
     #   $stranka .= "Budete obdělávat a zavlažovat pole a snažit se vypěstovat co nejvíce bambusů. Je to totiž jediná potrava, co jí panda, kterou máte na starosti přímo od císaře. (40-60 min, 8+)</p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"ntac\">\n";
     #   $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
     #   $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=tac\" target=\"pokladnice\">Tádž Mahal (Taj Mahal)</a> \n";
    #    $stranka .= "Hra o ovládnutí Indie. Hráči v roli maharádžů a princů ve dvanácti kolech procházejí postupně provincie a soupeří mezi sebou o moc a vliv. (75-120 min, 12+)</p>\n";

    #    $stranka .= "<p><select type=\"text\" name=\"ntro\">\n";
    #    $stranka .= "<option value=0 default>0</option>\n";
    #    $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "   <a href=\"http://www.hrejsi.cz/cgi/hry/hry.pl?hra=tro\" target=\"pokladnice\">Troyes</a> \n";
    #    $stranka .= "Hráči se ve hře Troyes ujímají rolí bohatých rodin z kraje Champagne ve Francii a používají svůj vliv na získání a vedení osob ze tří oblastí: armády, duchovních a lidu. Cílem hry je získat co nejvíce slávy, čehož lze dosáhnout vícero způsoby. (90-120 min, 12+)</p>\n";

    #   $stranka .= "<p><select type=\"text\" name=\"novinka1\">\n";
    #   $stranka .= "<option value=0 default>0</option>\n";
    #   $stranka .= "<option value=1>1</option>\n";
    #   $stranka .= "<option value=2>2</option>\n";
    #   $stranka .= "<option value=3>3</option>\n";
    #   $stranka .= "</select>\n";
    #   $stranka .= "Místo pro Váš návrh: <input type=\"text\" name=\"novinka1_nazev\" size=\"30\"/></p>\n";

    #       $stranka .= "<p><select type=\"text\" name=\"novinka2\">\n";
    #       $stranka .= "<option value=0 default>0</option>\n";
    #       $stranka .= "<option value=1>1</option>\n";
    #    $stranka .= "<option value=2>2</option>\n";
    #    $stranka .= "<option value=3>3</option>\n";
    #    $stranka .= "</select>\n";
    #    $stranka .= "Místo pro Váš 2. návrh: <input type=\"text\" name=\"novinka2_nazev\" size=\"30\"/></p>\n";

    my $parametry = dancgi::sestavit_parametry_odkaz($konfig, "telo=hlasovani.pl", "hra=pet", "turnaj=oly");

    $stranka .= "  <table border=\"0\">\n";
    $stranka .= "  </table>\n";

    # Přidat parametry, které uživatele nezajímají, ale my je potřebujeme.
    $stranka .= "  <input type=\"hidden\" name=\"jazyk\"  value=\"$jazyky::jazyk\"/>\n";
    $stranka .= "  <input type=\"hidden\" name=\"co\"     value=\"zpracuj\"/>\n";
    my $cas = cas::ted()->{rmdhms};
    $stranka .= "  <input type=\"hidden\" name=\"casgen\" value=\"$cas\"/>\n";
    # Přidat tlačítka pro odeslání nebo vymazání formuláře.
    $stranka .= "  <p>\n";
    $stranka .= "    <input type=\"submit\" value=\"".jazyky::zjistit("odeslat")."\"/>\n";
    $stranka .= "    <input type=\"reset\"  value=\"".jazyky::zjistit("vymazat")."\"/>\n";
    $stranka .= "  </p>\n";
    $stranka .= "</form>\n";

    return $stranka;
}



#==============================================================================
# Funkce pro zpracování vyplněného formuláře
#==============================================================================



#------------------------------------------------------------------------------
# Zkontroluje údaje z formuláře, uloží je do databáze, pošle je e-mailem
# organizátorům a uživateli vygeneruje odpověď.
#------------------------------------------------------------------------------
sub zpracovat_hlasovani
{
    my $databaze = shift;
    my $tabulka = shift;
    my $konfig = shift;
    # Údaje z formuláře jsou v hashi %{$konfig} pohromadě s případnými dalšími
    # parametry skriptu. Přidat mezi údaje datum a čas odeslání formuláře.
    $konfig->{casode} = cas::ted()->{rmdhms};
    # Zkontrolovat údaje.
    my $chyby = zkontrolovat_hlasovani($databaze, $tabulka, $konfig);
    # Pokud byla kontrola úspěšná, uložit údaje do databáze a odeslat je e-mailem organizátorům.
    unless(scalar(@{$chyby}))
    {
        ulozit_hlasovani_do_databaze($databaze, $tabulka, $konfig);
        odeslat_hlasovani_e_mailem($databaze, $konfig);
    }
    # Vygenerovat odpověď pro uživatele.
    zobrazit_potvrzovaci_stranku($databaze, $konfig, $chyby);
}



#------------------------------------------------------------------------------
# Zkontroluje údaje z formuláře a vrátí seznam chyb, které najde.
#------------------------------------------------------------------------------
sub zkontrolovat_hlasovani
{
    my $databaze = shift;
    my $tabulka = shift;
    my $konfig = shift;
    my @chyby;
    # Zkontrolovat platnost hlasovacího kódu.
    my $kod = $konfig->{kod_hlas} = $konfig->{hl_kod};
    # Kód se skládá z osmi číslic a je dělitelný jedenácti. První dvě číslice znamenají počet hlasů, který není vyšší než 10.
    my $kod_osoby;
    my $n_hlasu;
    my $kontrola;
    if($kod =~ m/^(\d\d)(\d\d\d\d\d\d)(\d\d)$/)
    {
        $konfig->{hlasu_celkem} = $n_hlasu = $1;
        $konfig->{kod_osoby} = $kod_osoby = $2;
        $kontrola = $3;
        if($n_hlasu > 10 || $kod % 11 != 0)
        {
            push(@chyby, 'chyba_neplatny_kod');
        }
        else
        {
            # Zjistit, zda už s tímto kódem někdo nehlasoval.
            my $drivejsi = mso::dotazat_se_databaze($databaze, 'kod_hlas', "$tabulka WHERE kod_osoby = '$kod_osoby'");
            if(scalar(@{$drivejsi}))
            {
                push(@chyby, 'chyba_pouzity_kod');
            }
        }
    }
    else
    {
        push(@chyby, 'chyba_neplatny_kod');
    }
    # Projít všechny parametry.
    # Jestliže jejich název jsou 4 písmena nebo číslice, první je 's' nebo 'n',
    # a jestliže hodnotou parametru je 0, 1, 2 nebo 3, považovat je za kód hry.
    my @stare_hry = grep {m/^s[a-z0-9]{3}$/ && $konfig->{$_} =~ m/^[0-3]$/} (keys(%{$konfig}));
    # Od roku 2017 zrušené novinky a stařinky.
	# my @nove_hry = grep {m/^(n[a-z0-9]{3}|novinka[12])$/ && $konfig->{$_} =~ m/^[0-3]$/} (keys(%{$konfig}));
    $konfig->{stare} = \@stare_hry;
    # $konfig->{nove} = \@nove_hry;
    # Zkontrolovat, že počet hlasů udělených starým hrám nepřekročil maximální počet hlasů, které má dotyčný uživatel k dispozici.
    my $soucet_stare = 0;
    foreach my $hra (@stare_hry)
    {
        $soucet_stare += $konfig->{$hra};
    }
    if($soucet_stare>$n_hlasu)
    {
        push(@chyby, sprintf("chyba_moc_starych_%d_%d", $soucet_stare, $n_hlasu));
    }
    # Zkontrolovat, že počet hlasů udělených novým hrám nepřekročil maximální počet hlasů, které má dotyčný uživatel k dispozici.
    # my $soucet_nove = 0;
    # foreach my $hra (@nove_hry)
    #  {
    #     $soucet_nove += $konfig->{$hra};
    # }
    # if($soucet_nove>$n_hlasu)
    # {
    #     push(@chyby, sprintf("chyba_moc_novych_%d_%d", $soucet_nove, $n_hlasu));
    # }
    # Jestliže novinka1 nebo novinka2 dostala hlas, nesmí zůstat prázdné pole s názvem hry.
    if($konfig->{novinka1}>0 && $konfig->{novinka1_nazev} =~ m/^\s*$/ ||
       $konfig->{novinka2}>0 && $konfig->{novinka2_nazev} =~ m/^\s*$/)
    {
        push(@chyby, 'chyba_prazdna_novinka');
    }
    # Zkontrolovat, že se dal hlas alespoň jedné hře.
    if($soucet_stare==0)  # && $soucet_nove==0)
    {
        push(@chyby, 'chyba_zadne_hlasy');
    }
    return \@chyby;
}



#------------------------------------------------------------------------------
# Uloží údaje z formuláře do databáze MySQL na serveru.
#------------------------------------------------------------------------------
sub ulozit_hlasovani_do_databaze
{
    my $databaze = shift;
    my $tabulka = shift;
    my $konfig = shift;
    my @nazvy = qw(kod_hlas kod_osoby hlasu_celkem kod_hry hlasu nazev_hry);
    my $seznam_poli = join(', ', @nazvy);
    foreach my $hra (@{$konfig->{stare}}) # , @{$konfig->{nove}}
    {
        next unless($konfig->{$hra}>0);
        my $kod_hry = $hra;
        $kod_hry =~ s/^[sn]// unless($kod_hry =~ m/^novinka/);
        # Řetězcové hodnoty musí být v apostrofech, číselné bez apostrofů.
        my @hodnoty =
        (
            "'$konfig->{kod_hlas}'",
            $konfig->{kod_osoby},
            $konfig->{hlasu_celkem},
            "'$kod_hry'",
            $konfig->{$hra}
        );
        if($hra =~ m/^novinka\d$/)
        {
            my $nazev = $konfig->{$hra.'_nazev'};
            push(@hodnoty, "'$nazev'");
        }
        else
        {
            push(@hodnoty, "''");
        }
        # The MySQL driver must get the data as a sequence of bytes, not of varying-width characters.
        my $seznam_hodnot = encode('utf8', join(', ', @hodnoty));
        my $dotaz = "INSERT INTO $tabulka ($seznam_poli) VALUES ($seznam_hodnot);";
        $databaze->do($dotaz);
    }
}



#------------------------------------------------------------------------------
# Odešle údaje z formuláře e-mailem organizátorům.
#------------------------------------------------------------------------------
sub odeslat_hlasovani_e_mailem
{
    my $databaze = shift;
    my $konfig = shift;
    my $sendmail;
    if(-e "/usr/lib/sendmail")
    {
        $sendmail = "|/usr/lib/sendmail -oi -t";
    }
    else
    {
        $sendmail = ">posledni-prihlaska.txt";
    }
    my $adresat = "klara\@hrejsi.cz, zeman\@ufal.mff.cuni.cz";
    my $mail;
    $mail .= "From: Robot Hrejsi <robot\@hrejsi.cz>\n";
    $mail .= "To: $adresat\n";
    $mail .= "Subject: MSO hlasovani\n";
    $mail .= "Content-Type: text/plain; charset=\"utf-8\"\n";
    $mail .= "Content-Transfer-Encoding: 8bit\n\n";
    # Sestavit tělo zprávy.
    $mail .= "kod = $konfig->{kod_hlas}\n";
    my @hry = grep {$konfig->{$_}>0} (@{$konfig->{stare}});  #  , @{$konfig->{nove}}
    $mail .= join(', ', map {"$_=$konfig->{$_}"} (sort(@hry)))."\n\n";
    $mail .= "novinka1_nazev=$konfig->{novinka1_nazev}\n";
    $mail .= "novinka2_nazev=$konfig->{novinka2_nazev}\n";
    # Odeslat zprávu organizátorům.
    open(SENDMAIL, $sendmail) or print "Nemůžu najít sendmail: $!\n";
    print SENDMAIL ($mail);
    close(SENDMAIL);
    open(KOPIE, ">posledni_hlasovani.txt");
    print KOPIE ($mail);
    close(KOPIE);
    open(KOPIE, ">>archiv_hlasovani.txt");
    print KOPIE ("----------------------------------------------------------------------\n");
    print KOPIE ($mail);
    close(KOPIE);
}



#------------------------------------------------------------------------------
# Vygeneruje pro uživatele stránku se zprávou o úspěchu či neúspěchu jím
# odeslaného formuláře.
#------------------------------------------------------------------------------
sub zobrazit_potvrzovaci_stranku
{
    my $databaze = shift;
    my $konfig = shift;
    my $chyby = shift;
    my $nadpis;
    my $stranka;
    # Pokud byly v hlasování nalezeny chyby, upozornit uživatele, že hlasování nebylo přijato.
    if(scalar(@{$chyby}))
    {
        $nadpis = jazyky::zjistit("hlasovani_nadpis_chyba");
        $stranka .= "<h3>".jazyky::zjistit("hlasovani_nadpis2_chyba")."</h3>\n";
        $stranka .= "<ul>\n";
        foreach my $chyba0 (@{$chyby})
        {
            my $chyba = $chyba0;
            my ($k, $n);
            if($chyba =~ m/^chyba_moc_(star|nov)ych_(\d+)_(\d+)$/)
            {
                $chyba = "chyba_moc_${1}ych";
                $k = $2;
                $n = $3;
            }
            # Ke všem chybám by nyní mělo existovat vysvětlení v jazyky.pm.
            # Pokud náhodou neexistuje (někdo přidal nový kód chyby a zapomněl na to), vypíšeme alespoň kód chyby.
            my $hlaseni = jazyky::zjistit("hlasovani_$chyba", $k, $n);
            $hlaseni = $chyba0 if(!defined($hlaseni));
            $stranka .= "  <li>$hlaseni</li>\n";
        }
        $stranka .= "</ul>\n";
    }
    # Pokud byla přihláška bez chyb, ukázat uživateli přehled údajů a oznámit mu, že přihláška byla přijata.
    else
    {
        $nadpis = jazyky::zjistit("hlasovani_potvrzeni");
        $stranka .= jazyky::zjistit("hlasovani_potvrzeni_nadpis");
    }
    # Obalit stránku jednotným záhlavím a zápatím a poslat ji na výstup.
    mso::vypsat_stranku(
    {
        'nazev'  => "MSO: $konfig->{rok}: ".jazyky::zjistit("Hlasovani"),
        'nadpis' => $nadpis,
        'telo'   => $stranka,
        'rok'    => $konfig->{rok}
    });
}
