#!/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_2023';


# 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 10.8.2023. </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/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/akp/akp.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sakp\">\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=akp\" target=\"pokladnice\">Akropolis</a> \n";
    $stranka .= "V srdci Středozemního moře spolu akropole zápolí o bohatství a slávu. Na pomoc si pozvaly nejnadanější architekty z celého Řecka. Budujte rezidence, chrámy, tržnice, zahrady i vojenské posádky a pomozte svému městu překonat ty ostatní. Dodržováním pravidel urbanistického plánování při výstavbě města budete zvyšovat jeho prestiž, kterou pak můžete ještě znásobit stavbou náměstí. (20 - 30 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/akv/akv.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sakv\">\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=akv\" target=\"pokladnice\">Akvárko</a> \n";
    $stranka .= "Původní česká hra od autora Michala Peichla, ve které tvoříte akvárium plné zajímavých rybek. Některé rybky spolu dokáží koexistovat lépe a jiné zase méně. Podle toho, jak si je poskládáte do svého akvárka, tolik dostanete bodů na konci hry. (15 - 20 min, 7+)</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/azp/azp.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sazp\">\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=azp\" target=\"pokladnice\">Azul: Zahrady pro královnu</a> \n";
    $stranka .= "Král Manuel I. povolal nejvěhlasnější zahradní architekty Portugalska, aby vytvořili pro jeho choť, královnu Marii Aragonskou, ty nejkrásnější zahrady. V této hře se chopíte náročného úkolu vytvořit pro okouzlující královnu co nejhezčí zahradu, ve které se budou snoubit pestré květiny, cizokrajná zvířata i ornamentální prvky v co nejharmoničtější kombinaci. (40 - 60 min, 10+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/cxn/cxn.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"scxn\">\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=cxn\" target=\"pokladnice\">Codex Naturalis</a> \n";
    $stranka .= "Sestavte vlastní slovutný Codex Naturalis. Obsáhlý tajný spis pak umožní zasvěcenému čtenáři nahlédnout do všech dosud známých poznatků o čtyřech přírodních říších, které jste objevili v nedotčeném pralese. Vykládejte a překrýve jte své karty, plňte tajné i společné úkoly a zajistěte si čestné místo mezi přírodozpytci. (20 - 30 min, 7+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/dic/dic.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdic\">\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=dic\" target=\"pokladnice\">Divočina Severní Ameriky</a> \n";
    $stranka .= "Objevte krásu divoké přírody Severní Ameriky! V této hře se chopíte rolí biologů snažících se vytvořit co nejvyváženější ekosystémy vykládáním karet na svou desku a využíváním zvláštních akcí. Hra nabízí několik různých herních režimů. Můžete se spoluhráči soutěžit, komu se podaří získat více bodů. Nebo se můžete vydat na sólovou vzrušující vědeckou expedici o 20 kapitolách, jejiž průběh zachycuje bohatě ilustrovaný Expediční deník. (45 - 60 min, 10+)</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/dmn/dmn.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdmn\">\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=dmn\" target=\"pokladnice\">Dominion</a> \n";
    $stranka .= "Jednoduchý a netradiční herní princip, rychlá herní doba a spousta strategických možností dělá z Dominion jednu z nejlépe hodnocených her světa. Vybudujte si své dominium a získejte rozsáhlé majetky dříve než soupeři. Stojíte na počátku budování své vlastní říše a nemáte nic než trochu peněz a malé pozemky. Avšak brány světa jsou otevřeny dokořán, říše vzkvétá zakládáním nových vesnic, založením tržiště či vztyčením trůnního sálu. Jenže jsou tu také zdatní soupeři, a tak je třeba rozšířit svoji říši co nejrychleji. Jen tak se stanete pánem nejmocnějšího dominia. (20-40 min, 8+) </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/hea/hea.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"shea\">\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=hea\" target=\"pokladnice\">Heat</a> \n";
    $stranka .= "(Hráči si vyzkouší roli závodníků v historických formulích a jejich cíl je zvítězit v závodech, které se jedou na určitý počet kol. Dle pokročilých pravidel se pak hráči snaží zvítězit v celém šampionátu, který se skládá z více samostatných závodů. 45 - 60 min, 8+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/kaa/kaa.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"skaa\">\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=kaa\" target=\"pokladnice\">Karak</a>  \n";
    $stranka .= "Společenská hra Karak je původní česká rodinná hra. Hra má velmi jednoduchá pravidla. Každý hráč se ve hře Karak zhostí role jednoho hrdiny, který vyráží do labyrintu pod hradem Karak. Budete bojovat s nestvůrami a získávat zbraně a poklady. (45-60 min, 7+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/kas/kas.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"skas\">\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=kas\" target=\"pokladnice\">Kaskádie</a>  \n";
    $stranka .= "Vydejte se na cestu do líbezného regionu Kaskádie a pokuste se vytvořit co nejharmoničtější ekosystém. Vaše tahy budou velmi prosté – vezmete si dvojici destičky prostředí a žetonu zvířete a přiložíte je ke své mapě. (30-45 min, 10+) </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/mta/mta.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"smta\">\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=mta\" target=\"pokladnice\">Mars Teraformace: Expedice Ares</a> \n";
    $stranka .= "Hra navazuje na principy známe z  hry Mars: Teraformace, ale jde o novou, samostatnou hru. Předchozí zkušenosti přijdou vhod, ale nejsou ani v nejmenším podmínkou! (45-60 min, 12+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/mss/mss.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"smss\">\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=mss\" target=\"pokladnice\">Moře a souš</a> \n";
    $stranka .= "Sestavte mapu pevninských a mořských oblastí plnou nádherných malých detailů z historické kartografie. Střídejte se v rozšiřování mapy umisťováním destiček a společně uzavírejte a bodujte pevninské a mořské oblasti a jejich bonusy. Každá umístěná destička může potenciálně přinést body jakémukoliv hráči. Vyhrává hráč nebo tým, který má na konci hry nejvíce bodů.</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/nlo/nlo.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"snlo\">\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=nlo\" target=\"pokladnice\">Na louce</a> \n";
    $stranka .= "Stanete se pozorovateli. Nejzkušenějším pozorovatelem se stane hráč, který získá nejvíc bodů za pozorování různých druhů zvířat, rostlin a krajiny a také za suvenýry, jež si z výletu přinese. (60 - 90 min, 10+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/npl/npl.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"snpl\">\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=npl\" target=\"pokladnice\">Neznámá planeta</a> \n";
    $stranka .= "Buďte pozdraveni, kolonisté! Jak jistě víte, matička Země již nedokáže poskytovat dost obživy pro nás všechny a je zapotřebí, abyste se chopili výzvy zajistit budoucnost lidské rasy. 1–6 kolonistů se nyní může pustit do soutěže o vybudování nejlepší planety za 70 minut. Otočná vesmírná stanice S.U.S.A.N. dodává terraformační dílky na všechny kolonizované planety současně. Tato revoluční herní komponenta umožňuje rychlou přípravu, současné tahy hráčů a je i úložným prostorem na dílky v krabici! (60 - 80 min, 10+)</td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/nov/nov.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"snov\">\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=nov\" target=\"pokladnice\">Nova Luna</a> \n";
    $stranka .= "Chytrá abstraktní hra od světoznámého autora Uwe Rosenberga (Patchwork, Agricola, Caverna). Hra vznikla podle námětu Corného van Moorsela a byla nominována do užšího výběru 3 lfinalistů prestižní ceny Spiel des Jahres. Nov – nejtemnější fáze měsíce – je už od pradávna symbolem nového začátku… 
V každém kole musíte znovu naplánovat své příští kroky a vytvořit si novou strategii, díky které se vypořádáte s proměnlivou nabídkou měsíčního kruhu.</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 .= "Nejen šikovné švadlenky mají nyní jedinečnou možnost vytvořit během chvilky ze zbytků látek a záplat tu nejkrásnější a nejhodnotnější přikrývku. Taková práce však vyžaduje kromě spousty píle a času především úsporné nakládání se zásobou knoflíků. 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/pkj/pkj.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"spkj\">\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=pkj\" target=\"pokladnice\">Pokojovky</a> \n";
    $stranka .= "Staňte se nadšeným pěstitelem pokojových rostlin z celého světa a pokuste se jim vytvořit u sebe doma to nejpříznivější prostředí. Vaše tahy budou velmi jednoduché: vyberte si dvojici karta – žeton a co nejvýhodněji je přiložte do své sady. Body získáte za své rostliny, soulad místností s žetony nábytku a mazlíčků a předstižení soupeřů v zisku těch nejhodnotnějších květináčů. Díky variabilním úkolům bude každá partie jiná! (30 - 45 min, 10+)</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/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\">Svět divů (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/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/ear/ear.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sear\">\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=ear\" target=\"pokladnice\">Zelená planeta</a> \n";
    $stranka .= "Vaším úkolem bude také vytvořit harmonický ekosystém svého vlastního ostrova – mřížku 4 × 4 provázaných karet rostlin a krajiny. Dokonce i nepotřebné karty budete moci proměnit v kompost využitelný v budoucnu. Zelená planeta je hra s kombinováním karet pro 1–5 hráčů – má přístupná pravidla, ale velkou hloubkou strategických možností. (45 - 90 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}
    });
}
