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


# 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 25.8.2019. </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/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/avs/avs.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"savs\">\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=avs\" target=\"pokladnice\">Azul: Vitráže Sintary</a> \n";
    $stranka .= "Azul: Vitráže Sintry je krásná barevná hra, která navazuje na celosvětově proslavenou hru Azul. Během šesti kol hry hráči získávají barevné dílky skla a vytvářejí z nich co nejlépe hodnocené vitráže.(30 - 45 min, 8+)</td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/brk/brk.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sbrk\">\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=brk\" target=\"pokladnice\">Břink!</a> \n";
    $stranka .= "Břink: Velká podzemní loupež je deckbuildingová hra, která kombinuje zahrávání karet s pohybem po mapě. Mapa představuje podzemí obývané drakem a úkolem hráčů v roli zlodějů je do podzemí naběhnout, sebrat drakovi poklady a opět vyběhnout ven. (60 - 90 min, 12+)</td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/buh/buh.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sbuh\">\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=buh\" target=\"pokladnice\">Burgundské hrady</a> \n";
    $stranka .= "Hra se odehrává ve středověké Francii. Hráči na sebe berou role aristokratů. Postupně budují svoje malé království. Staví budovy, hrady, provozují obchod podél řeky, využívají stříbrné doly a přebírají znalosti cestovatelů. (60 - 120 min, 12+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/car/car.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"scar\">\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=car\" target=\"pokladnice\">Carcassonne</a> \n";
    $stranka .= "Postupným přikládáním kartiček tvoříte krajinu s hrady, kláštery, loukami a cestami. Svými figurkami se snažíte obsadit co největší část krajiny a získat tak co nejvíce bodů. (30 - 45 min, 8+) </td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/cad/cad.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"scad\">\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=cad\" target=\"pokladnice\">Carpe Diem</a> \n";
    $stranka .= "Hráči přecházejí do role bohatých patriců ve starém Římě. Každý se snaží vybudovat lukrativní městskou čtvrť, aby získal co nejvíce prestižních bodů. Nový způsob, jak se dostat k jednotlivým budovám okresu v kombinaci s velkou škálou karet, umožňuje neobvyklou hru s velkým počtem strategií.(45-75 min, 10+) </td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/cez/cez.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"scez\">\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=cez\" target=\"pokladnice\">Century: Zázraky východu</a> \n";
    $stranka .= "Druhá hra ze série Century! Vydejte se v roli obchodníka na dobrodružnou cestu za slávou a bohatstvím na exotické ostrovy koření. Hru je možné hrát jak samostatně, tak v kombinaci s hrou Century: Cesta koření, takže můžete putovat z pouště na moře.  (30-45 min, 8+) </td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/dif/dif.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sdif\">\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=dif\" target=\"pokladnice\">Dice forge</a> \n";
    $stranka .= "V neustálé honbě za zábavou uspořádali bohové velkolepý turnaj, ve kterém hrdinové soutěží o to stát se polobohy! K tomu musí ovládnout kouzelné kostky, zatímco čelí božským zkouškám na nebeských ostrovech a obětují v božím chrámu. Originální hra s novou mechanikou dicecrafting. Každý hrdina obdrží dvě kostky s vyměnitelnými stěnami, které mohou v průběhu hry upravit a vylepšit. Díky tomu mohou hrdinové měnit sílu náhody svých kostek a převzít kontrolu nad svým osudem! (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/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/geb/geb.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sgeb\">\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=geb\" target=\"pokladnice\">Duch</a>  \n";
    $stranka .= "Domácí duch Balduin našel v hradním sklepě starý fotoaparát. Okamžitě začal fotografovat všechno, co s oblibou nechává při svých strašidelných výpravách zmizet, … samozřejmě včetně sebe sama. Zakletý fotoaparát však bohužel zobrazuje řadu předmětů ve špatných barvách. Můžete mu pomoci s jeho prokletím a rychle pojmenovat správný předmět  nebo ho sami nechat zmizet?  Vaše šance na vítězství se zvýší pokud včas najdete správný předmět … (20-30 min, 8+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/eth/eth.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"seth\">\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=eth\" target=\"pokladnice\">Ethnos</a>  \n";
    $stranka .= "Ethnos je fantasy strategická hra, ve které se hráči snaží využít kmeny půlčíků, elfů, kostlivců minotaurů a dalších fantastických národů k obsazení bájné říše. Hraje se na tři věky a hráči se obsazováním území snaží nasbírat co nejvíce bodů. Hra je řízená kartami a ve svém tahu může hráč buď dobrat kartu z nabídky nebo zahrát karty stejné barvy či stejného národa z ruky, vyberete vůdce, zaberete příslušné regiony a uplatníte zvláštní schopnosti karet. (60-90 min, 14+) </td></tr>\n";

    $stranka .= "<tr><td> <img src=\"/obr/fotky/eli/eli.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"seli\">\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=eli\" target=\"pokladnice\">Ex Libris</a>  \n";
    $stranka .= "Budete sběrateli vzácných tisků a knih. Ve vesnici se právě uvolnilo místo na  Velkého knihovníka, prestižní (a dobře placenou) profesi. A všichni knihomilové o ni mají zájem. Abyste starostu zaujali, musíte rozšířit svou knižní sbírku. Budete posílat na nákupy své pracovníky, aby pro vás získali ty nejzajímavější knihy. A nejde jen o to knihy získat, knižní inspektor bude posuzovat abecední pořádek, pestrost titulů, stabilitu polic a jestli náhodou nevlastníte nějaké zakázané knihy. (45-60 min, 10+) </td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/gms/gms.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"sgms\">\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=gms\" target=\"pokladnice\">Gizmos</a>  \n";
    $stranka .= "Hráči mají za úkol pomocí kuliček, které odebírají ze zásobníku, vylepšovat svoje stroje. Díky vylepšením se spustí nové mechanismy, které sebou přinášejí spoustu výhod. Hra, ve které se spojují herní prvky z populárních deskových her Splendor a Výbušné lektvary. (40-60 min, 14+) </td></tr>\n";


    $stranka .= "<tr><td> <img src=\"/obr/fotky/had/had.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"shad\">\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=had\" target=\"pokladnice\">Hadara</a>  \n";
    $stranka .= "Zavede vás do světa různých kultur a zemí. Ve třech epochách zažijete vzestup nového světa z malé osady až k výšinám civilizace. Své území zabydlíte rozličnými osobnostmi z různých kulturních oblastí, kontinentů i časových období. Abyste své říši zajistili co největší čest a slávu, musíte si osobnosti vybírat pečlivě. Nesmíte zanedbat ani oblast zemědělství či vojenské síly, jinak vás předstihnou říše konkurenční. (45-60 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/kbc/kbc.jpg\" width=\"200\" class=\"left\">\n";
    $stranka .= "<select type=\"text\" name=\"skbc\">\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=kbc\" target=\"pokladnice\">Krabčáci (CuBirds)</a>  \n";
    $stranka .= "V krajině spatříte hejna ptáků, kteří jen tak lelkují na drátech elektrického vedení. Pak se zničehonic zvednou, zavládne chaos a ptáčci se promíchají. Pomozte jim najít cestu do toho správného hejna! (20-30 min, 8+) </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/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/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/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/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\">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/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 .= "</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}
    });
}
