#!/usr/bin/perl
# CGI přístup k databázi her. Generuje jak seznamy, tak stránky o konkrétních hrách.
# (c) 2002 - 2006 Daniel Zeman
# Licence: GNU GPL
# prosinec 2002: vytvořeno
# 30.12.2003: přechod na UTF-8
# 11.12.2005: data už se neberou z textových souborů, ale z MySQL serveru

use utf8;
use Encode;
use DBI;
# Přinutit Perl, aby UTF8 vypisoval jako UTF8 a nevymýšlel pro mě "vhodné" osmibitové kódování.
binmode(STDOUT, ":utf8");
# Kvůli sestavení parametrů; čtení parametrů zatím probíhá nějak pravěce.
require("./dancgi.pm");



# Zapamatovat si, kdy jsme s generováním stránky začali, abychom na konci mohli
# zjistit, jak dlouho nám to trvalo.
$starttime = time();



# Přečíst parametry.
dancgi::cist_parametry(\%pole);
dancgi::cist_formular_post(\%pole) if($pole{formular});
# Robotům odmítnout přístup, jestliže si chtějí něco strčit do košíku.
use norobot;
if(exists($pole{kosik}) && !norobot::proverit())
{
    norobot::ohlasit_chybu();
    exit(0);
}



# Zjistit cestu pro odkazování na statické stránky hrejsi.
open(KONFIG, "../cgi.cfg");
while(<KONFIG>)
{
    if(m/(\S+)\s*=\s*([^\r\n]*)/)
    {
        $konfig{$1} = $2;
    }
}
close(KONFIG);
$koren_hrejsi = $konfig{ccesta_html_www};
$koren_system = $konfig{scesta_html_www};
# Pro ladící účely si nachystat výpis parametrů na výstup.
$ladeni = 0;
if($ladeni)
{
    foreach($key, sort(keys(%pole)))
    {
        $dbg_parametry .= "$key = $pole{$key}\n";
    }
    $dbg_parametry = "<pre>$dbg_parametry</pre>\n";
}
# V režimu "objednavka" se o obsahu košíku smí dozvědět jen zasvěcení.
# Ale např. ti, co konstruují odkazy na stránky s hrami, si musí myslet,
# že košík je momentálně prázdný!
if($pole{hra} eq "objednavka")
{
    $objednany_kosik = $pole{kosik}; # globální proměnná
    delete($pole{kosik});
}
# Připojit se k databázi her.
# Pokud je skript spuštěn webovým serverem (uživatel www-data), měl by mít dostatečná práva pro přístup k databázi.
# Pokud je ale spuštěn uživatelem dan@kub.cz, práva nemá a musí se databázi hlásit jako root. V tom případě je potřeba,
# aby příslušné heslo bylo v proměnné prostředí DBI_ROOT_PASS.
if($ENV{USER} eq "dan")
{
    if(!exists($ENV{DBI_ROOT_PASS}))
    {
        die("Pri spusteni jinym uzivatelem nez www-data musi byt v promenne prostredi DBI_ROOT_PASS heslo roota do databaze.\n");
    }
    $dbi_uzivatel = "root";
    $dbi_heslo = $ENV{DBI_ROOT_PASS};
}
$databaze = DBI->connect("DBI:mysql:hry", $dbi_uzivatel, $dbi_heslo)
  or print STDERR ("Nelze se pripojit k databazi: $DBI::errstr\n");
# Nastavit kódování klienta, spojení a výsledků.
$databaze->prepare("SET NAMES 'utf8'")->execute();
vypsat_stranku();



###############################################################################
# Podprogramy
###############################################################################



#------------------------------------------------------------------------------
# Vypíše kostru stránky. Volá podřízené funkce pro jednotlivé části stránky.
#------------------------------------------------------------------------------
sub vypsat_stranku
{
    vypsat_zahlavi();
    print("  <table border=\"0\" width=\"100%\">\n");
    print("    <tr>\n");
    print("      <td align=\"left\" valign=\"top\" width=\"15%\">\n");
    vypsat_seznam_her_na_prodej();
    print("      </td>\n");
    print("      <td align=\"center\" valign=\"top\">\n");
    # Vnořit tabulku do pravé buňky.
    print("        <table border=\"0\" width=\"100%\">\n");
    print("          <tr>\n");
    print("            <td align=\"center\" valign=\"top\">\n");
    vypsat_uvod_obchodu();
    print("            </td>\n");
    print("            <td align=\"center\" valign=\"top\">\n");
    vypsat_odkazy_na_palubu();
    print("            </td>\n");
    print("          </tr>\n");
    print("          <tr valign=\"top\">\n");
    vypsat_prostredek_stranky();
    vypsat_pravy_okraj();
    print("          </tr>\n");
    print("        </table>\n");
    print("      </td>\n");
    print("    </tr>\n");
    print("  </table>\n");
    # Zjistit, jak dlouho nám to trvalo, a vypsat to na konec stránky.
    my $hlaseni = sestavit_hlaseni_o_trvani_programu($starttime);
    print("  <div align=right><address>$hlaseni</address></div>\n");
    # Vypsat závěr stránky.
    vypsat_zapati();
}



#------------------------------------------------------------------------------
# Provede počáteční úkony, nezávislé na tom, jaký pohled uživatel zvolil.
# Načte parametry a vypíše začátek HTML stránky.
#------------------------------------------------------------------------------
sub vypsat_zahlavi
{
    # Poslat MIME záhlaví dokumentu.
    print("Content-Type: text/html; charset=utf-8\n\n");
    # Nachystat si proměnné části začátku stránky.
    # Poslat začátek stránky.
    print <<EOF
<html>
  <head>
    <meta http-equiv="Content-Language" content="cs">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Deskové hry</title>
    <meta name="description" content="Obchod s hrami, Portál o deskových hrách. Pravidla, recenze, akce, e-obchod, pozvánky, turnaje, informace o deskových hrách.">
    <meta name="keywords" content="prodej, nákup, obchod, e-obchod, on-line obchod, obchod s hrami, objednávky, košík, košíček, objednat, hračky, deskove hry, hry, deskové hry, stolní hry, společenské hry, Klub deskových her Paluba, Klub Paluba, pravidla, turnaje, games, board games, akce, pozvánky, recenze, Othello, Abalone, Carcassonne, Osadníci, Bang, Vrhcáby, Scrabble, Zatre.">
  </head>
  <body>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše závěr stránky HTML.
#------------------------------------------------------------------------------
sub vypsat_zapati
{
    # Poslat konec stránky.
    print <<EOF
  </body>
</html>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vyrobí odkaz, který vede zpět na tento skript, ale s jinými parametry.
#------------------------------------------------------------------------------
sub odkazpar
{
    my $text = shift;
    my $konfig = shift; # odkaz na hash s dosavadními parametry skriptu
    # Ostatní parametry funkce popisují nové parametry, se kterými se má zavolat tento skript, ve tvaru atr=hodnota
    my $parametry = dancgi::sestavit_parametry_odkaz($konfig, @_);
    return "<a href=\"prodej.pl?$parametry\">$text</a>";
}



#------------------------------------------------------------------------------
# Vypíše seznam her na prodej.
#------------------------------------------------------------------------------
sub vypsat_seznam_her_na_prodej
{
    print("        <h3 align=\"center\">Seznam her na prodej:</h3>\n");
    print("        <p>\n");
    # Získat z databáze seznam názvů her a jejich kódů.
    # Propojit s tabulkou "prodej", aby se seznam her omezil na hry, které se dají koupit.
    my $dotaz = "SELECT kod, hry.nazev FROM hry INNER JOIN prodej ON hry.kod = prodej.kod_hry GROUP BY kod, hry.nazev";
    my $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    while(my ($kod, $nazev) = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        print(odkazpar($nazev, \%pole, "hra=$kod"), "<br>\n");
    }
    print("        </p>\n");
}



#------------------------------------------------------------------------------
# Vypíše úvodní text obchodu s hrami.
#------------------------------------------------------------------------------
sub vypsat_uvod_obchodu
{
    print("<h1>Obchod s&nbsp;hrami</h1>\n");
#     print("<h3><font color=red><h3>Ve dnech 30.9. - 8.10.2006 se v Praze uskuteční 6. ročník mezinárodního festivalu her <a href=http://www.deskohrani.cz/>Deskohraní</a>.</font></p>\n");

#    print("<h3><font color=red>Objednávky přijaté v době 5. - 20.8.2006 budou vyřízeny až po 21.8., </br> tudíž je obdržíte až koncem srpna či začátkem září. O přesném termínu dodání budete vyrozuměni po 21.8.2006. Děkujeme za pochopení. Osobní nákup na Palubě je možný v době otvíracích hodin. Více na <a href=http://www.paluba.cz/>www.paluba.cz</a>.</font></h3>\n");
    print("<p>Všechny hry si můžete koupit jak v&nbsp;<a href=\"$koren_hrejsi/paluba/index.htm\">Klubu deskových her Paluba</a>, tak také přímo ");
    print(odkazpar("zde na dobírku.", \%pole, "hra=obecne"));
    print(" Pak připočítáváme poštovné 89&nbsp;Kč.</p>\n");
    print("<h3>\n<p>\n");
    print(odkazpar("<font color=red>NOVINKY</font>", \%pole, "hra=novinky"), " | \n");
    print(odkazpar("Dodací podmínky", \%pole, "hra=obecne"), " | \n");
    print(odkazpar("SLEVY", \%pole, "hra=slevy"), " | \n");
    print(odkazpar("Ceník (řazený podle cen)", \%pole, "hra=cenik"), "</p>\n<p>");
    print(odkazpar("<font color=green>PORADNA:</font>", \%pole, "hra=poradna"), " hry pro \n");
    print(odkazpar("celou rodinu", \%pole, "hra=rodina"), " | \n");
    print(odkazpar("děti", \%pole, "hra=deti"), " | \n");
    print(odkazpar("fajnšmekry", \%pole, "hra=experti"), " | \n");
    print(odkazpar("dva", \%pole, "hra=pro2"), " | \n");
    print(odkazpar("party a mejdany", \%pole, "hra=mejdan"), "\n");
    print("</p>\n</h3>\n");
}



#------------------------------------------------------------------------------
# Vypíše odkazy na Palubu.
#------------------------------------------------------------------------------
sub vypsat_odkazy_na_palubu
{
    print <<EOF
          <h3>Klub deskových her Paluba</h3>
          <img src="$koren_hrejsi/obr/logo.gif" height=50 align="center">
          <p><a href="program.pl">Program Paluby</a>, <a href="$koren_hrejsi/paluba/index.htm">Stránka Paluby</a>
          <br>(klepnutím na tyto odkazy ztratíte obsah košíku)</p>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek stránky
#------------------------------------------------------------------------------
sub vypsat_prostredek_stranky
{
    if($pole{hra} eq "")
    {
        prostredek_novinky();
    }
    elsif($pole{hra} eq "obecne")
    {
        prostredek_obecny();
    }
    elsif($pole{hra} eq "novinky")
    {
        prostredek_novinky();
    }
    elsif($pole{hra} eq "poradna")
    {
        prostredek_poradna();
    }
    elsif($pole{hra} eq "deti")
    {
        prostredek_poradna_deti();
    }
    elsif($pole{hra} eq "rodina")
    {
        prostredek_poradna_rodina();
    }
    elsif($pole{hra} eq "pro2")
    {
        prostredek_poradna_pro2();
    }
    elsif($pole{hra} eq "experti")
    {
        prostredek_poradna_experti();
    }
    elsif($pole{hra} eq "mejdan")
    {
        prostredek_poradna_mejdan();
    }
    elsif($pole{hra} eq "slevy")
    {
        prostredek_slevy();
    }
    elsif($pole{hra} eq "cenik")
    {
        prostredek_cenik();
    }
    elsif($pole{hra} eq "cenikk")
    {
        prostredek_cenik_klubovy();
    }
    elsif($pole{hra} eq "objednavka")
    {
        prostredek_objednavka();
    }
    else
    {
        prostredek_hra($pole{hra});
    }
}



#------------------------------------------------------------------------------
# Vypíše obecný prostředek, když není vybrána konkrétní hra (dodací podmínky).
#------------------------------------------------------------------------------
sub prostredek_obecny
{
    print <<EOF
        <td align="center" valign="top" WIDTH="70%">
          
          <p>Všechny vlevo uvedené hry i mnohé dalších si můžete zakoupit
             v&nbsp;<a HREF="$koren_hrejsi/paluba/index.htm">Klubu deskových her Paluba</a>
             (Praha, Lidická&nbsp;40 u&nbsp;Anděla, po,&nbsp;st 16 - 22 hod., út,&nbsp;čt 17 - 21 hod.).
             Všechny hry, které jsou na prodej, si v&nbsp;klubu můžete vyzkoušet, takže nebudete
             kupovat zajíce v&nbsp;pytli. Odborná rada také nebude chybět!</p>
          <p>Také můžeme tyto hry  <b>zaslat na dobírku.</b> <br>Pak k&nbsp;ceně připočteme <b>poštovné 89&nbsp;Kč.</b>
          <ul><p>Při objednávce: 
              <li>nad 2&nbsp;000&nbsp;Kč je <b>poštovné ZDARMA.</b></li>
              <li>nad 5&nbsp;000 Kč <b>sleva 3%</b></li>
          </ul>
          </p>
          <p><b>Při předplatbě na účet platíte poštovné jen 66&nbsp;Kč.</b>
          <p><b>Organizace pracující s dětmi a mládeží obdrží slevu. </b>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=cenikk");
          print("<a HREF=\"prodej.pl?$parametry\">(Klubový ceník)</a>\n");
print <<EOF

          
            <br>Pokud jste taková organizace, <b>nezapomeňte to uvést při objednávce!</b></p>
          <p>Dobírku lze zaslat i na Slovensko, ale pouze do 2&nbsp;kg a poštovné je
             bohužel mnohem dražší (kolem 250&nbsp;Kč, dle sazebníku české pošty).</p>
          <p>Objednávky vyřizujeme zhruba <b>do 14&nbsp;dnů,</b> je-li hra skladem.
             <br>Je-li u hry uvedeno, že jde o hru <b>na objdnávku,</b> mohou být <b>dodací lhůty delší.</b></p>
          <p>U některých her je také možné 
          <br><font color=red><b>EXPRESNÍ DODÁNÍ</b>, které obdržíte do 48 hodin.</font> 
          <br>Je třeba si nejlépe telefonicky či mailem ověřit, zda je to u dané hry zrovna možné.
          <br>U expresnich dodávek připočítáváme <b>expresní příplatek 50&nbsp;Kč,</b> 
             tedy celé poštovné a balné vyjde na 139&nbsp;Kč</p>
          <p>Máte-li zájem o hru, která momentálně není, můžete si jí i tak dát do košíčku a do poznámky uvést, že máte zájem být informován(a) až hra opět bude.
          <p>Máte-li zájem o hru, která v nabídce vůbec není, napište nám e-mail:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>. Čas od času přivezeme nějaké hry z Německa, takže Vám třeba budeme moct vyhovět!
          </p>
          <p>Hry jsou prodávány jménem Kláry Zemanové, IČO 68873841, sídlo Vybíralova 15, Praha.</p>
          
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>

          
        </td>
EOF
    ;
}


#------------------------------------------------------------------------------
# Vypíše prostředek novinky, když není vybrána konkrétní hra.
#------------------------------------------------------------------------------
sub prostredek_novinky
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=red>Novinky</font></h1>
          <ul>

EOF
;

          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=ces");
          print("<li><a HREF=\"prodej.pl?$parametry\">Česko, otázky a odpovědi</a> Zcela nová česká vědomostní hra! Ideální pro všechny zvídavé Čechy!\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=car");
          print("<li><a HREF=\"prodej.pl?$parametry\">Carcassonne rozšíření IV - Věž</a> Nové rozšíření k oblíbené hře! Samozřejmě, že starší rozšíření i různé varianty zde najdete taky. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=osa");
          print("<li><a HREF=\"prodej.pl?$parametry\">Osadníci rozšíření - Atlantis</a> Nové rozšíření jistě potěší všechny milovníky Osadníků.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=blo");
          print("<li><a HREF=\"prodej.pl?$parametry\">Blokus</a> Strategická hra pro celou rodinu postavená na velmi jednoduchých pravidlech.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=kdj");
          print("<li><a HREF=\"prodej.pl?$parametry\">Kdopak jsem?</a> Světový bestseller - zábavná a svižná rodinná hra, podporuje logické myšlení a rozvíjí slovní zásobu.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=sud");
          print("<li><a HREF=\"prodej.pl?$parametry\">Sudoku</a> Několik variant Sudoku jako deskové hry pro 1 - 4 hráče.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=kak");
          print("<li><a HREF=\"prodej.pl?$parametry\">Kakuro</a> Další varianta trénování logického myšlení v podobě deskové hry.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=vao");
          print("<li><a HREF=\"prodej.pl?$parametry\">Vlci a ovce</a> Zábavná hra ve stylu současných strategických her. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=amo");
          print("<li><a HREF=\"prodej.pl?$parametry\">Amos</a> Přibylo několik verzí této hry: čeština MAXI, němčina, angličtina a metematika.\n");
#          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=blo");
#          print("<li><a HREF=\"prodej.pl?$parametry\">Blokus</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=bus");
          print("<li><a HREF=\"prodej.pl?$parametry\">Bussines</a> Nová česká hra! Zaujme jistě všechny milovníky Monopolů! Hra prodávaná netradičně na CD-romu, takže si komponenty a hrací plán vytisknete sami, takže získáte zajímavou hru za celkem přijatelnou cenu!\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=leg");
          print("<li><a HREF=\"prodej.pl?$parametry\">Legie</a> Nová česká hra! Strategická hra pro dva hráče. Jednoduchá pravidla. Každá hra je unikátní, má jiný průběh a jiné zakončení.  \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=cay");
          print("<li><a HREF=\"prodej.pl?$parametry\">Caylus</a> Píše se rok 1289. Král Filip Spravedlivý chce posílit francouzské hranice a postavit nový hrad. Caylus je zatím chudá vesnice... \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=fun");
          print("<li><a HREF=\"prodej.pl?$parametry\">Funkenschlag</a> Další dobrá hra z dílny 2F Spiele přichází na náš trh. Pomalu, ale jistě se stává hitem sezóny! \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro");
          print("<li><a HREF=\"prodej.pl?$parametry\">Proroctví - rozšíření: Vodní říše</a> Další rozšíření k této oblíbené hře je na světě! \n");
           $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=vir");
          print("<li><a HREF=\"prodej.pl?$parametry\">Viva il Re! (Ať žije král!)</a> Svižná blafovací hra z prostředí intrik v královském paláci. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=zah");
          print("<li><a HREF=\"prodej.pl?$parametry\">Žahour</a> Nová česká hra! Doporučujeme všem milovníkům slovních a kvizových her. \n");

          print("</ul><h3>Podívejte se také na naše tipy pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu, která s&nbsp;hraním začíná</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li><a HREF=\"prodej.pl?$parametry\">malé děti (2 - 7 let)</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li><a HREF=\"prodej.pl?$parametry\">dva</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li><a HREF=\"prodej.pl?$parametry\">kamaráda - hry, které se hodí na párty a mejdany</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}

#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když není vybrána konkrétní hra.
#------------------------------------------------------------------------------
sub prostredek_poradna
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <p>Chcete koupit nějakou hru a vůbec nevíte jakou? V&nbsp;obchodech jsou jen zabalené krabice, tak jak zjistit, která stojí za to?</p>
          <p>Nejlepší je zajít do nějakého herního klubu a hru si zahrát. V&nbsp;<a HREF="http://www.paluba.cz/">Klubu deskových her Paluba</a>
          si hry zahrajete a můžete si je rovnou i koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud nemáte tuto možnost, pokusíme se Vám zde dát pár užitečných tipů. Jsou členěny podle toho, pro koho jsou hry určeny.
          Někdy také chcete koupit hru jen do určitého cenového limitu. Pak Vám určitě ve výběru pomůže  
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=cenik");
          print("<a HREF=\"prodej.pl?$parametry\">ceník (řazený dle cen).</a></p>\n");
          print("<p>Vyberte si z&nbsp;následujících odkazů podle toho, komu chcete hru koupit:</p>\n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li>Chci koupit <a HREF=\"prodej.pl?$parametry\">hru pro celou rodinu, která s&nbsp;hraním začíná.</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li>Chci koupit <a HREF=\"prodej.pl?$parametry\">hru pro malé dítě (2 - 7 let).</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li>Chci koupit <a HREF=\"prodej.pl?$parametry\">hru pro dva.</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li>Chci koupit <a HREF=\"prodej.pl?$parametry\">hru pro celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek.</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li>Chci koupit <a HREF=\"prodej.pl?$parametry\">pro kamaráda hru, která se hodí na párty a mejdany.</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když jsou vybrány rodinné hry.
#------------------------------------------------------------------------------
sub prostredek_poradna_rodina
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <h1 align=center>Hry pro celou rodinu</h1>
          <p>Chcete koupit nějakou hru a vůbec nevíte jakou? V&nbsp;obchodech jsou jen zabalené krabice, tak jak zjistit, která stojí za to?</p>
          <p>Nejlepší je zajít do nějakého herního klubu a hru si zahrát. V&nbsp;<a HREF="http://www.paluba.cz/">Klubu deskových her Paluba</a>
             si hry zahrajete a můžete si je rovnou i koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud si nemůžete hry vyzkoušet, nabízíme zde pár konkrétních tipů.</p>
          <p>Jsou zde hry, které nemají složitá pravidla, dají se hrát i bez "zkušeností s&nbsp;hraním" a kromě toho jsou "osvědčené". 
             Tedy většině lidí (od dětí přes teenagery a dospěláky až po babičky) se líbí.</p>
          <ul>
EOF
;
 
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=car");
          print("<li><a HREF=\"prodej.pl?$parametry\">Carcassonne</a> Ideální rodinná hra (pro 2 - 5 hráčů od 6 let). Jednoduchá, zábavná, oceněná mnoha cenami, oblíbená po celém světě. Má řadu rozšíření a variant, takže pokud vás chytne, můžete rozšiřovat a zesložiťovat.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=car");
          print("<li><a HREF=\"prodej.pl?$parametry\">Carcassonne Město</a> NOVINKA! Samostatná hra pro 2 - 4 hráče. Je nejen herně zajímavá, ale také luxusně provedená: v&nbsp;dřevěné krabičce, dřevěné hradby a věže.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=osa");
          print("<li><a HREF=\"prodej.pl?$parametry\">Osadníci z Katanu</a> O malinko složitější rodinná hra (pro 3 - 4 hráče od 8 let), která vás chytne a nepustí. Oceněná mnoha cenami (<a href=\"http://hraroku.cz/\">Hra roku 2004</a>), oblíbená po celém světě. Má řadu rozšíření a variant, takže pokud vás chytne, můžete rozšiřovat a zesložiťovat.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=trn");
          print("<li><a HREF=\"prodej.pl?$parametry\">Trans America</a> Ideální rodinná hra (pro 2 - 6 hráčů od 7 let). Jednoduchá, rychlá a zábavná, nominovaná na cenu německé kritiky <a href=\"http://www.spiel-des-jahres.de/front_content.php?idcatart=124&amp;lang=1&amp;client=1\">Spiel des Jahres 2002</a>, oblíbená po celém světě.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=eme");
          print("<li><a HREF=\"prodej.pl?$parametry\">Emerald</a> Ideální rodinná hra (pro 2 - 5 hráčů). Určitě svým námětem zaujme i mladší hráče. Kradete totiž drakovi zlato a drahokamy.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=crt");
          print("<li><a HREF=\"prodej.pl?$parametry\">Cartagena</a> Dobrodružná rodinná hra (pro 2 - 5 hráčů od 8 let). Hra s&nbsp;netradičním vtipně řešeným herním systémem na motivy útěku z&nbsp;vězení.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=act");
          print("<li><a HREF=\"prodej.pl?$parametry\">Activity</a> Zábavná hra pro vetší skupinu lidí (pro 3 - 16 hráčů). Hra prohlubující komunikační schopnosti. Vylosujete si pojem, který musíte namalovat, popsat či předvést. Má několik variant pro různé věkové skupiny.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=spe");
          print("<li><a HREF=\"prodej.pl?$parametry\">Sankt Petersburg</a> Novinka. Trochu složitější, ale velice zajímavá hra pro 2 - 4 hráče od 10 let. Byla nominována na cenu německé kritiky <a href=\"http://www.spiel-des-jahres.de/front_content.php?idcatart=148&amp;lang=1&amp;client=1\">Spiel des Jahres 2004</a>.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=psi");
          print("<li><a HREF=\"prodej.pl?$parametry\">Psí život</a> Zábavná a vtipná hra hra pro 2 - 6 hráčů od 10 let.\n");

          print("</ul><h3>Kromě rodinných her se můžete podívat na zajímavé hry pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li><a HREF=\"prodej.pl?$parametry\">malé děti (2 - 7 let)</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li><a HREF=\"prodej.pl?$parametry\">dva</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li><a HREF=\"prodej.pl?$parametry\">kamaráda - hry, které se hodí na párty a mejdany</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když jsou vybrány hry pro malé děti.
#------------------------------------------------------------------------------
sub prostredek_poradna_deti
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <h1 align=center>Hry pro děti ve věku 2 - 7 let</h1>
          <p>Deskové hry jsou nejen zábava, ale také rozvíjejí mnohé schopnosti (paměť, logické myšlení, koncentraci, pozorovací schopnosti, komunikační dovednosti, 
            jemnou motoriku, postřeh...). Kromě toho je pro vývoj dítěte velmi důležité, když se sejde celá rodina a něco aktivního dělá pohromadě. 
            Žádný sebedražší dárek nenahradí příjemnou a láskyplnou rodinnou atmosféru! Půl hodinky denně "celorodinného hraní" je pro dítě mnohem cennější, 
            než jakýkoliv dárek.</p>
          <p>Hrajeme s&nbsp;dětmi Pexeso či Člověče, nezlob se! A ani nevíme, že her pro tuto věkovou skupinu jsou desítky a velké množství z&nbsp;nich stojí za to. 
            Her je mnoho a v&nbsp;obchodě podle krabice poznáte máloâ€¦ 
          <p>Nejlepší je si hry vyzkoušet. Můžete tak učinit například v&nbsp;<a HREF="http://www.paluba.cz">Klubu deskových her Paluba</a>,
             kde si hry zahrajete i si je můžete rovnou koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud si nemůžete hry vyzkoušet, nabízíme zde pár konkrétních tipů:
          <ul>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mme");
          print("<li><a HREF=\"prodej.pl?$parametry\">Medoví Medvídci</a> Baví všechny děti od 3 let. Moc dobře udělaný strom (55 cm vysoký), skrz který propadávají medové kuličky i sami medvídci.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mte");
          print("<li><a HREF=\"prodej.pl?$parametry\">Mám tě!</a> Zábavná hra na postřeh pro děti od 4 let. Kdo pochytá plácačkou víc much?\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=kuo");
          print("<li><a HREF=\"prodej.pl?$parametry\">Kuřecí olympiáda</a> Kvalitní hra na paměť pro děti od 4 let, určitě bude bavit i 8 leté a rodičům taky protáhne mozkové závity. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mdn");
          print("<li><a HREF=\"prodej.pl?$parametry\">Měsíčkova hra na dobrou noc</a> Rychlá hra (na cca 10 min.) s&nbsp;fosforeskujícími hvězdičkami, vhodná na večerní zklidnění. V&nbsp;první půlce hry hvězdičky věšíte na oblohu a v druhé půlce je zhasínáte. Pro děti od 3 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=vst");
          print("<li><a HREF=\"prodej.pl?$parametry\">Veselý statek</a> Velice hezky vyrobená hra s dřevěnými zvířátky a papírovým domečkem. Trochu složitější hra na paměť i trochu taktiky. Vhodná od 4 či 5 let, dle vyspělosti dítěte. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=act");
          print("<li><a HREF=\"prodej.pl?$parametry\">Activity děti</a> Zdařilá modifikace hry pro děti od 4 let. Předvádíte, malujete či popisujete, co je na obrázku, aby to ostatní uhodli. Má kromě verze Activity Original i verzi Junior, která je ideální pro  hráče od 8 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=duh");
          print("<li><a HREF=\"prodej.pl?$parametry\">Duha</a> Hra na paměť. Pamatované předměty se neustále mění, což dělá problém skoro víc dospělým než dětem. Hra má i jednoduchou variantu na poznávání barev, která je vhodná už od 2 let. Varianta na paměť od cca 3 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pan");
          print("<li><a HREF=\"prodej.pl?$parametry\">Panáčci</a> Zaujme každou holčičku. Jde o oblékání panáčků. Hra s&nbsp;velkým prvkem náhody, která procvičuje jemnou motoriku. Pro děti od 2,5 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=kvi");
          print("<li><a HREF=\"prodej.pl?$parametry\">Hádanky dráčka Fráčka</a> Pěkně udělané hádanky v&nbsp;básničkách vhodné od 4 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=haf");
          print("<li><a HREF=\"prodej.pl?$parametry\">Haf haf!</a> Novinka, která se dětem velice líbí. Je částečně na paměť a částečně na náhodě. Psí máma uprostřed opravdu štěká, kolikrát štěkne, o tolik políček popojdou štěňátka, která hledají kostičku své barvy. Kosti se pejskům přichytávají k&nbsp;čumáčkům magnetem.\n");

          print("</ul><h3>Kromě dětských her se můžete podívat na zajímavé hry pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu, která s&nbsp;hraním začíná</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li><a HREF=\"prodej.pl?$parametry\">dva</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li><a HREF=\"prodej.pl?$parametry\">kamaráda - hry, které se hodí na párty a mejdany</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když jsou vybrány hry pro dva hráče.
#------------------------------------------------------------------------------
sub prostredek_poradna_pro2
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <h1 align=center>Hry pro dva</h1>
          <p>Chcete koupit nějakou hru a vůbec nevíte jakou? V&nbsp;obchodech jsou jen zabalené krabice, tak jak zjistit, která stojí za to?</p>
          <p>Nejlepší je zajít do nějakého herního klubu a hru si zahrát. V&nbsp;<a HREF="http://www.paluba.cz/">Klubu deskových her Paluba</a>
             si hry zahrajete a můžete si je rovnou i koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud si nemůžete hry vyzkoušet, nabízíme zde pár konkrétních tipů.</p>
          <ul>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=hll");
          print("<li><a HREF=\"prodej.pl?$parametry\">Halali</a> Novinka. Velice zajímavá hra pro 2 hráče. Hra je neobvyklá tím, že hráči mají odlišné možnosti tahů.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=qor");
          print("<li><a HREF=\"prodej.pl?$parametry\">Quoridor</a> Velice zajímavá a svižná hra pro 2 nebo 4 hráče. Snažíte se dostat na druhou stranu hracího plánu a místo tahu můžete také postavit překážku. Jestli to bude překážka pro protivníka nebo nakonec vaše, záleží na vašich schopnostech.\n");
          # $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=kup");
          # print("<li><a HREF=\"prodej.pl?$parametry\">Kupferkessel Co. (Čarodějnický kotlík)</a> Hra, kde si procvičíte paměť. Při vaření kouzelných lektvarů si musíte pamatovat, co jste do kotlíku dali.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=aba");
          print("<li><a HREF=\"prodej.pl?$parametry\">Abalone</a> Jednoduchá svižná hra.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=oth");
          print("<li><a HREF=\"prodej.pl?$parametry\">Othello</a> Hra s&nbsp;velice jednoduchými pravidly, ale velkou hloubkou. Její kvality jsou prověřeny časem (pochází z&nbsp;viktoriánské Anglie).\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=qar");
          print("<li><a HREF=\"prodej.pl?$parametry\">Quarto!</a> Rychlá, zajímavě řešená logická hra.\n");

          print("</ul><h3>Kromě her pro 2 se můžete podívat na zajímavé hry pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu, která s&nbsp;hraním začíná</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li><a HREF=\"prodej.pl?$parametry\">malé děti (2 - 7 let)</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li><a HREF=\"prodej.pl?$parametry\">kamaráda - hry, které se hodí na párty a mejdany</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když jsou vybrány hry pro fajnšmekry.
#------------------------------------------------------------------------------
sub prostredek_poradna_experti
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <h1 align=center>Hry pro fajnšmekry</h1>
          <p>Chcete koupit nějakou hru a vůbec nevíte jakou? V&nbsp;obchodech jsou jen zabalené krabice, tak jak zjistit, která stojí za to?</p>
          <p>Nejlepší je zajít do nějakého herního klubu a hru si zahrát. V&nbsp;<a HREF="http://www.paluba.cz/">Klubu deskových her Paluba</a>
             si hry zahrajete a můžete si je rovnou i koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud si nemůžete hry vyzkoušet, nabízíme zde pár konkrétních tipů.</p>
          <ul>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pur");
          print("<li><a HREF=\"prodej.pl?$parametry\">Puerto Rico</a> Velice kvalitní hra, která právem vyhrála <a href=\"http://hraroku.cz/\">Hru roku 2005</a>. Jde o velice propracovanou hru, která potěší i náročné hráče.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=eti");
          print("<li><a HREF=\"prodej.pl?$parametry\">Eufrat a Tigris</a> Velmi pěkná hra, která je na českém trhu teprvo krátkou dobu, ale i tak už je oblíbená!\n");
          # $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=tik");
          # print("<li><a HREF=\"prodej.pl?$parametry\">Tikal</a> Pěkná hra střední obtížnosti pro 2 - 4 hráče od 12 let. Získala cenu německé kritiky <a href=\"http://www.spiel-des-jahres.de/front_content.php?idcatart=127&amp;lang=1&amp;client=1\">Spiel des Jahres 1999</a>.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=spe");
          print("<li><a HREF=\"prodej.pl?$parametry\">Sankt Petersburg</a> Velice zajímavá hra pro 2 - 4 hráče od 10 let. Byla nominována na cenu německé kritiky <a href=\"http://www.spiel-des-jahres.de/front_content.php?idcatart=148&amp;lang=1&amp;client=1\">Spiel des Jahres 2004</a>.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=lui");
          print("<li><a HREF=\"prodej.pl?$parametry\">Ludvík XIV.</a> Novinka. Velice zajímavá hra pro 2 - 4 hráče od 12 let.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=amu");
          print("<li><a HREF=\"prodej.pl?$parametry\">Amun-Re</a> Zajímavá hra známého autora kvalitních her Reinera Knizii. Získala několik ocenění.\n");


          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=lcr");
          print("<li><a HREF=\"prodej.pl?$parametry\">Lara Croft Tomb Raider The Angel of Darkness</a> Máme omezený počet kusů této deskové hry na motivy oblíbené počítačové hry The Angel of Darkness. \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=bud");
          print("<li><a HREF=\"prodej.pl?$parametry\">Blitz und Donner</a> Dovezli jsme pouze omezený počet kusů této kvalitní hry! \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=oma");
          print("<li><a HREF=\"prodej.pl?$parametry\">Oltre Mare</a> Dovezli jsme pouze omezený počet kusů této kvalitní hry! \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=raz");
          print("<li><a HREF=\"prodej.pl?$parametry\">Razzia</a> Dovezli jsme pouze omezený počet kusů této zábavné karetní hry! \n");
          
          print("</ul><h3>Můžete se také podívat na zajímavé hry pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu, která s&nbsp;hraním začíná</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li><a HREF=\"prodej.pl?$parametry\">malé děti (2 - 7 let)</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li><a HREF=\"prodej.pl?$parametry\">dva</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=mejdan");
          print("<li><a HREF=\"prodej.pl?$parametry\">kamaráda - hry, které se hodí na párty a mejdany</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek Herní poradna, když jsou vybrány hry na mejdan.
#------------------------------------------------------------------------------
sub prostredek_poradna_mejdan
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=green>Herní poradna</font></h1>
          <h1 align=center>Hry na párty a mejdany</h1>
          <p>Chcete koupit nějakou hru a vůbec nevíte jakou? V&nbsp;obchodech jsou jen zabalené krabice, tak jak zjistit, která stojí za to?</p>
          <p>Nejlepší je zajít do nějakého herního klubu a hru si zahrát. V&nbsp;<a HREF="http://www.paluba.cz/">Klubu deskových her Paluba</a>
             si hry zahrajete a můžete si je rovnou i koupit. Odborná rada zde nikdy nechybí!</p>
          <p>Pokud si nemůžete hry vyzkoušet, nabízíme zde pár konkrétních tipů.</p>
          <ul>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=ban");
          print("<li><a HREF=\"prodej.pl?$parametry\">Bang!</a> Královna mejdanů. Hra, ktará nezkazí žádnou legraci. Vhodná pro větší skupinku hráčů (4 - 7, ideální 6 či 7). Má i rozšíření.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rpo");
          print("<li><a HREF=\"prodej.pl?$parametry\">Rodinný podnik</a> Bezvadná hra na večírky, mejdany, Silvestra... zkrátka do společnosti pro pobavení.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=fif");
          print("<li><a HREF=\"prodej.pl?$parametry\">Finstere Flure (Dvorana děsu)</a> Hráči se snaží přeběhnout Dvoranu děsu, aby je nechytla zlá obluda zvaná Furunkulus. Ale pozor, ať neuklouznete po krvi. Zábavná poziční hra pro 2 - 7 hráčů.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=jun");
          print("<li><a HREF=\"prodej.pl?$parametry\">Jungle Speed</a> Zábavná hra na postřeh, která rozehřeje každou společnost.\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=sbt");
          print("<li><a HREF=\"prodej.pl?$parametry\">Saboteur</a> Nebudete se nudit a lze hrát i s mladšími hráči zhruba od 6 let! trochu blafování, trochu náhody, trochu škodolibosti, ... \n");

          print("</ul><h3>Kromě mejdanových her se můžete podívat na zajímavé hry pro:</h3> \n");
          print("<ul>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=rodina");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu, která s&nbsp;hraním začíná</a> \n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=deti");
          print("<li><a HREF=\"prodej.pl?$parametry\">malé děti (2 - 7 let)</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=pro2");
          print("<li><a HREF=\"prodej.pl?$parametry\">dva</a>\n");
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=experti");
          print("<li><a HREF=\"prodej.pl?$parametry\">celou rodinu či skupinu přátel, kteří už hrají nějaký ten pátek</a>\n");
          print("</ul>\n");
print <<EOF
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek slevy, když není vybrána konkrétní hra.
#------------------------------------------------------------------------------
sub prostredek_slevy
{
    print <<EOF
      <tr valign="top">
        <td valign="top" WIDTH="70%">
          <h1 align=center><font color=red>Slevy</font></h1>
          <h3>Při objednávce 
          <ul><li>nad 2&nbsp;000&nbsp;Kč je <b>poštovné zdarma.</b></li>
              <li>nad 5&nbsp;000 Kč <b>sleva 3%.</b></li>
          </ul>
          </h3>
          <p><b>Při předplatbě na účet platíte poštovné jen 66&nbsp;Kč. </b>
          <p><b>Organizace pracující s dětmi a mládeží také obdrží slevu </b>
EOF
;
          $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=cenikk");
          print("<a HREF=\"prodej.pl?$parametry\">(Klubový ceník)</a>\n");
print <<EOF
          Pokud jste taková organizace, <b>nezapomeňte to uvést při objednávce!</b></p>
          <p>U některých her je také možné <font color=red><b>EXPRESNÍ DODÁNÍ</b>, které obdržíte do 48 hodin.</font> 
             Je třeba si nejlépe telefonicky či mailem ověřit, zda je to u dané hry zrovna možné. U expresnich dodávek připočítáváme <b>expresní příplatek 50 Kč,</b> 
             tedy celé poštovné a balné vyjde na 129 Kč</p>
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
        </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Zjistí z databáze ceník.
#------------------------------------------------------------------------------
sub zjistit_cenik
{
    # Získat z databáze přehled zboží.
    my @nazvy = qw(kod_hry kod nazev prodejni_cena clenska_cena bezna_cena nelze_koupit);
    my $nazvy = join(", ", @nazvy);
    my $dotaz = "SELECT $nazvy FROM zbozi ORDER BY prodejni_cena, nazev";
    my $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my @zbozi;
    while(my @zaznam = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        my %zaznam; for(my $i = 0; $i<=$#nazvy; $i++) {$zaznam{$nazvy[$i]} = $zaznam[$i];}
        push(@zbozi, \%zaznam);
    }
    return \@zbozi;
}



#------------------------------------------------------------------------------
# Vypíše prostředek, když je vybrán ceník.
#------------------------------------------------------------------------------
sub prostredek_cenik
{
    my $zbozi = zjistit_cenik();
    # Seřadit zboží vzestupně podle cen.
    # (Sice jsme o totéž už požádali SQL server, jenže on to seřadí řetězcově, takže cena 1128 bude před 128.)
    my @cenik = sort{$a->{prodejni_cena} <=> $b->{prodejni_cena}}(@{$zbozi});
    # Vypsat ceník.
    print <<EOF
          <td align="center" valign="top" WIDTH="70%">
            <h1>Ceník her</h1>
            <p>Hry jsou řazeny dle cen od nejlevnějších po nejdražší.
               Všechny hry jsou zároveň odkazy na informace o dané hře se všemi variantami na prodej.
            </p>
            <table align="center" border="1">
              <tr>
                <td align="center"><b>Název zboží</b></td>
                <td align="center"><b>Naše cena</b></td>
                <td align="center"><b>Běžná cena</b></td>
              </tr>
EOF
    ;
    foreach my $radek (@cenik)
    {
        unless($radek->{nelze_koupit})
        {
            print("              <tr>\n");
            print("                <td align=left>", odkazpar($radek->{nazev}, \%pole, "hra=$radek->{kod_hry}"), "</td>\n");
            print("                <td align=right>$radek->{prodejni_cena}&nbsp;Kč</td>\n");
            print("                <td align=right>$radek->{bezna_cena}&nbsp;Kč</td>\n");
            print("              </tr>\n");
        }
    }
    print <<EOF
            </table>
          </td>
EOF
    ;
}



#------------------------------------------------------------------------------
# Vypíše prostředek, když je vybrán ceník pro kluby.
#------------------------------------------------------------------------------
sub prostredek_cenik_klubovy
{
    my $zbozi = zjistit_cenik();
    # Seřadit zboží vzestupně podle cen.
    # (Sice jsme o totéž už požádali SQL server, jenže on to seřadí řetězcově, takže cena 1128 bude před 128.)
    my @cenik = sort{$a->{clenska_cena} <=> $b->{clenska_cena}}(@{$zbozi});
    # Vypsat ceník.
    print <<EOF
          <td align="center" valign="top" WIDTH="70%">
            <h1>Klubový ceník her</h1>
             <p>Tento ceník platí pro organizace pracující s dětmi a mládeží a také pro členy Klubu deskových her Paluba.
            </p>
            <p>Hry jsou řazeny dle cen od nejlevnějších po nejdražší.
               Všechny hry jsou zároveň odkazy na informace o dané hře se všemi variantami na prodej.
            </p>
            <table align="center" border="1">
              <tr>
                <td align="center"><b>Název zboží</b></td>
                <td align="center"><b>"Klubová" cena</b></td>
                <td align="center">Běžná cena</td>
              </tr>
EOF
    ;
    foreach my $radek (@cenik)
    {
        unless($radek->{nelze_koupit})
        {
            print("              <tr>\n");
            print("                <td align=left>", odkazpar($radek->{nazev}, \%pole, "hra=$radek->{kod_hry}"), "</td>\n");
            print("                <td align=right>$radek->{clenska_cena}&nbsp;Kč</td>\n");
            print("                <td align=right>$radek->{bezna_cena}&nbsp;Kč</td>\n");
            print("              </tr>\n");
        }
    }
    print <<EOF
            </table>
          </td>
EOF
    ;
}


#------------------------------------------------------------------------------
# Vypíše prostředek, když je vybrána konkrétní hra.
#------------------------------------------------------------------------------
sub prostredek_hra
{
    my $hra = shift;
    generovat_stranku_hry($hra);
}



#------------------------------------------------------------------------------
# Vypíše prostředek, když došlo k objednávce.
#------------------------------------------------------------------------------
sub prostredek_objednavka
{
    print("<td align=center valign=top width=\"70%\">\n");
    my $objednavka = zjistit_objednavku($objednany_kosik);
    my $uspech = zkontrolovat_objednavku($objednavka);
    if(!$uspech)
    {
        print("<h1><font color=red>Vaše objednávka NEBYLA ODESLÁNA!!!</font></h1>\n");
        print("<p>V&nbsp;objednávce byly zjištěny následující nedostatky:</p>\n");
        print("<ul>\n");
        foreach my $chyba (@{$objednavka->{chyby}})
        {
            print("<li>$chyba</li>\n");
        }
        print("</ul>\n");
        # Vypsat případná varování (např. o zboží, které jsme z košíku odstranili, protože ho neprodáváme).
        if(@{$objednavka->{varovani}})
        {
            print("<h2>Varování</h2>\n");
            print("<ul>\n");
            foreach my $varovani (@{$objednavka->{varovani}})
            {
                print("<li>$varovani</li>\n");
            }
            print("</ul>\n");
        }
        vypsat_obsah_kosiku($objednany_kosik, 0);
        my $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=objednat");
        print("<form method=get action=\"prodej.pl?$parametry\">\n");
        print("<h2>Objednat výše uvedené zboží:</h2>\n");
        print("Jméno: <input name=jmeno type=text value=\"$objednavka->{jmeno}\" size=\"20\"><br>\n");
        print("Příjmení: <input name=prijmeni type=text value=\"$objednavka->{prijmeni}\" size=\"20\"><br>\n");
        print("E-mail: <input name=email type=text value=\"$objednavka->{email}\" size=\"20\"><br>\n");
        print("(E-mailem vám zašleme jak potvrzení objednávky, tak upřesnění dodání dobírky.)<br>\n");
        print("Tel: <input name=tel type=text value=\"$objednavka->{telefon}\" size=\"20\"><br>\n");
        print("Poznámka: <input name=poznamka type=text value=\"$objednavka->{poznamka}\" size=\"50\"><br>\n");
        print("Poznámka 2: <input name=poznamka2 type=text value=\"$objednavka->{poznamka2}\" size=\"50\"><br>\n");
        my %checked;
        $objednavka->{odber} = "dobirka" if(!exists($objednavka->{odber}));
        $checked{$objednavka->{odber}} = "checked";
        print("<input type=radio name=prevzeti value=\"dobirka\" $checked{dobirka}> chci zaslat na dobírku <br>\n");
        print("<input type=radio name=prevzeti value=\"paluba\" $checked{paluba}> si vyzvednu osobně na Palubě u Anděla<br>\n");
        print("<p align=left> <b>Zaplatím:</b><br>\n");
        $objednavka->{platba} = "hotove" if(!exists($objednavka->{platba}));
        $checked{$objednavka->{platba}} = "checked";
        print("<input type=radio name=platba value=\"hotove\"  $checked{hotove}> hotově (dobírkou či osobně při převzetí) <br>\n");
        print("<input type=radio name=platba value=\"prevodem\" $checked{prevodem}> předplatbou (bezhotovostním převodem)</p>\n");
        if($objednavka->{odber} eq "dobirka")
        {
            print("<p>Zboží chci zaslat dobírkou na adresu:<br>\n");
            print("Ulice a dům: <input name=ulice type=text value=\"$objednavka->{ulice_a_dum}\" size=\"20\"><br>\n");
            print("Obec: <input name=obec type=text value=\"$objednavka->{obec}\" size=\"20\"><br>\n");
            print("PSČ: <input name=psc type=text value=\"$objednavka->{psc}\" size=\"20\"><br>\n");
        }
        else
        {
            if($objednavka->{odber} eq "paluba")
            {
                print("<p>Zboží si vyzvednu osobně na Palubě.<br>\n");
            }
        }
        if($objednavka->{platba} eq "prevodem")
        {
            print("<p>Zaplatím předem převodem na účet.<br>\n");
        }
        else
        {
            if($objednavka->{odber} eq "dobirka")
            {
                print("<p>Zaplatím dobírkou.<br>\n");
            }
            else
            {
                print("<p>Zaplatím hotově při převzetí.<br>\n");
            }
        }
        if($objednavka->{sleva_org_deti} eq "ano")
        {   
            print("<p>Organizace pracující s mládeží. IČO: <input name=ico type=text value=\"$objednavka->{ico}\" size=\"20\"><br>\n");
            print("Dáme Vám klubové ceny. Jsou o cca 5% nižší než internetové.</p>\n");
        }
        print("<p>Tímto způsobem lze objednat zboží k&nbsp;dodání na území Česka. Máte-li zájem o dodání do jiných zemí, kontaktujte nás na e-mailu <a href=\"mailto:obchod\@hrejsi.cz\">obchod\@hrejsi.cz</a>.<br>\n");
        print("<input type=hidden name=hra value=objednavka>\n");
        print("<input type=hidden name=kosik value=\"$objednany_kosik\">\n");
        print("<p><input type=submit value=\"Odeslat objednávku\"><br>\n");
        print("</form>\n");
    }
    # Kontrola objednávky skončila úspěchem.
    else
    {
        print("<h1>Závazná objednávka</h1>\n");
        # Vypsat případná varování (např. o zboží, které jsme z košíku odstranili, protože ho neprodáváme).
        if(@{$objednavka->{varovani}})
        {
            print("<h2>Varování</h2>\n");
            print("<ul>\n");
            foreach my $varovani (@{$objednavka->{varovani}})
            {
                print("<li>$varovani</li>\n");
            }
            print("</ul>\n");
            print("<p>Zbytek vaší objednávky byl v&nbsp;pořádku odeslán.</p>\n");
        }
        print("<p>Děkujeme, že jste si objednali níže uvedené zboží. Objednávku vám do dvou pracovních dnů potvrdíme e-mailem. Současně vám sdělíme, kdy můžete zásilku očekávat.</p>\n");
        my $mail = vypsat_obsah_kosiku($objednany_kosik, 0);
        # Vypsat dodací adresu.
        if($objednavka->{odber} eq "dobirka")
        {
            print("<p>Zboží bude zasláno dobírkou České pošty na následující adresu:</p>\n");
            $mail .= "Zaslání na dobírku na adresu:\n";
            print("Jméno: <b>$objednavka->{jmeno}</b><br>\n");
            $mail .= "Jméno: $objednavka->{jmeno} $objednavka->{prijmeni}\n";
            print("Příjmení: <b> $objednavka->{prijmeni}</b><br>\n");
            print("Ulice a dům: <b> $objednavka->{ulice_a_dum}</b><br>\n");
            $mail .= "Ulice a dům: $objednavka->{ulice_a_dum}\n";
            print("Obec: <b>$objednavka->{psc} $objednavka->{obec}</b><br>\n");
            $mail .= "Obec: $objednavka->{psc} $objednavka->{obec}\n";
        }
        else
        {
            if($objednavka->{odber} eq "cm")
            {
                print("<p>Až bude zboží pro Vás připravené na Černém Mostě, dáme Vám vědět, včetně podrobností kdy (otvírací hodiny) a kde (přesná adresa).<br>\n");
                $mail .= "Osobní odběr: Černý Most ($objednavka->{odber}) \n";
            }
            else
            {
                print("<p>Až bude zboží pro Vás připravené na Palubě (www.paluba.cz), dáme Vám vědět, včetně podrobností kdy (otvírací hodiny) a kde (přesná adresa).<br>\n");
                $mail .= "Osobní odběr: Paluba ($objednavka->{odber}) \n";
            }
            print("Jméno: <b>$objednavka->{jmeno}</b><br>\n");
            $mail .= "Jméno: $objednavka->{jmeno} $objednavka->{prijmeni}\n";
            print("Příjmení: <b> $objednavka->{prijmeni}</b><br>\n");
            $mail .= "Ulice a dům: $objednavka->{ulice_a_dum}\n";
            $mail .= "Obec: $objednavka->{psc} $objednavka->{obec}\n";
        }
        print("<p>Objednávka bude potvrzena e-mailem na následující adresu:<br>\n");
        print("E-mail: <b>$objednavka->{email}</b><br>\n");
        $mail .= "E-mail: $objednavka->{email}\n";
        print("<p>Telefon: <b>$objednavka->{telefon}</b><br>\n");
        $mail .= "Telefon: $objednavka->{telefon}\n";
        print("<p>Poznámka: <b>$objednavka->{poznamka} </b><br>\n");
        $mail .= "Poznámka: $objednavka->{poznamka} \n";
        print("Poznámka 2: <b>$objednavka->{poznamka2} </b><br>\n");
        $mail .= "Poznámka 2: $objednavka->{poznamka2} \n";
        my $platba = $objednavka->{platba};
        $platba =~ s/prevodem/převodem/;
        $platba =~ s/hotove/hotově/;
        print("<p>Platba: $platba<br>\n");
        $mail .= "Platba: $platba\n";
        if($objednavka->{sleva_org_deti} eq "ano")
        {
            print("Uvedené ceny zahrnují slevu pro organizace pracující s&nbsp;mládeží. Vaše IČO: $objednavka->{ico}<br>\n");
            $mail .= "Organizace pracující s mládeží: $objednavka->{ico}\n";
        }
        if($objednavka->{jmeno} eq "test")
        {
            $adresat = "klara\@hrejsi.cz";
            $kopie = "zeman\@ufal.mff.cuni.cz";
            $skopie = "dkz\@centrum.cz";
        }
        else
        {
            $adresat = "obchod\@hrejsi.cz";
            $kopie = $objednavka->{email};
            $skopie = "dkz\@centrum.cz";
        }
        if(-e "/usr/lib/sendmail")
        {
            $sendmail = "|/usr/lib/sendmail -oi -t";
        }
        else
        {
            $sendmail = ">>posledni-objednavka.txt";
        }
        open(SENDMAIL, $sendmail) or print "Nemůžu najít sendmail: $!\n";
        print SENDMAIL ("From: Robot Hrejsi <robot\@hrejsi.cz>\n");
        my $jmeno_subject = "$objednavka->{jmeno} $objednavka->{prijmeni}";
        $jmeno_subject =~ tr/ÁÄĂÂĄČĆÇĎĐÉĚËĘÍÎĽĹŁŇŃÓÖŐÔŘŔŠŚŞŤŢÚŮÜŰÝŽŹŻáäăâąčćçďđéěëęíîľĺłňńóöőôřŕšśşťţúůüűýžźż/AAAAACCCDDEEEEIILLLNNOOOORRSSSTTUUUUYZZZaaaaacccddeeeeiilllnnoooorrsssttuuuuyzzz/;
        print SENDMAIL ("Reply-to: \"$jmeno_subject\" <$objednavka->{email}>\n");
        print SENDMAIL ("To: $adresat\n");
        print SENDMAIL ("Cc: $kopie\n") if($kopie);
        print SENDMAIL ("Bcc: $skopie\n") if($skopie);
        print SENDMAIL ("Subject: Objednavka her: $jmeno_subject\n");
        print SENDMAIL ("Content-Type: text/plain; charset=\"utf-8\"\n");
        print SENDMAIL ("Content-Transfer-Encoding: 8bit\n");
        print SENDMAIL ("\n");
        print SENDMAIL ($mail);
        # Úspěšně zadanou a odeslanou objednávku uložit do databáze.
        ulozit_objednavku($objednavka);
    }
    # Ukončit prostřední buňku.
    print("</td>\n");
}



#------------------------------------------------------------------------------
# Vypíše pravý okraj stránky s výjimkou odkazů na Palubu vpravo nahoře.
#------------------------------------------------------------------------------
sub vypsat_pravy_okraj
{
    if($pole{kosik} eq "")
    {
        kraj_obecny();
    }
    else
    {
        kraj_kosik();
    }
}



#------------------------------------------------------------------------------
# Vypíše obecný kraj, když není vybrána konkrétní hra.
#------------------------------------------------------------------------------
sub kraj_obecny
{
    print("            <td align=center valign=top>\n");
    my $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=obecne");
    print <<EOF
          <h1 align=center>Hry na prodej</h1>
          <p>Všechny vlevo uvedené hry i mnohé dalších si můžete zakoupit
             v&nbsp;<a HREF="$koren_hrejsi/paluba/index.htm">Klubu deskových her Paluba</a>
             (Praha, Lidická&nbsp;40 u&nbsp;Anděla, po,&nbsp;st 16 - 22 hod., út,&nbsp;čt 17 - 21 hod.).
             Všechny hry, které jsou na prodej, si v&nbsp;klubu můžete vyzkoušet, takže nebudete
             kupovat zajíce v&nbsp;pytli. Odborná rada také nebude chybět!</p>
          <p>Také můžeme tyto hry  <b>zaslat na dobírku.</b> Pak k&nbsp;ceně připočteme poštovné 89&nbsp;Kč.
             Od 2000&nbsp;Kč můžete využít naše 
             
EOF
;
    $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=slevy");
    print("<a HREF=\"prodej.pl?$parametry\">SLEVY</a>\n");
    print("</p>\n");
print <<EOF
          <p><b>Organizace pracující s dětmi a mládeží obdrží slevu nezávisle na výši odběru! </b>
          Pokud jste taková organizace, <b>nezapomeňte to uvést při objednávce!</b></p>
          <p>Při předplatbě na účet platíte <b>poštovné jen 66&nbsp;Kč. </b>
          <p>Dobírku lze zaslat i na Slovensko, ale pouze do 2&nbsp;kg a poštovné je
             bohužel mnohem dražší (kolem 250&nbsp;Kč, dle sazebníku české pošty).</p>
          <p>U některých her je také možné 
          <br><font color=red><b>EXPRESNÍ DODÁNÍ</b>, které obdržíte do 48 hodin.</font> 
          <br>Je třeba si nejlépe telefonicky či mailem ověřit, zda je to u dané hry zrovna možné. U expresních dodávek připočítáváme <b>expresní příplatek 50 Kč,</b> 
             tedy celé poštovné a balné vyjde na 139 Kč</p>
          <p>Objednávky vyřizujeme zhruba <b>do 14&nbsp;dnů,</b> je-li hra skladem.
          <br>Je-li u hry uvedeno, že jde o hru <b>na objdnávku,</b> mohou být <b>dodací lhůty delší.</b></p>
          <p>Máte-li jakékoliv dotazy, obraťte se na nás:
             <a HREF="mailto:obchod\@hrejsi.cz">obchod\@hrejsi.cz</a>,
             +420&nbsp;777&nbsp;692&nbsp;337.
          </p>
EOF
    ;
    print("            </td>\n");
}



#------------------------------------------------------------------------------
# Vypíše kraj, když je něco v košíku.
#------------------------------------------------------------------------------
sub kraj_kosik
{
    print("            <td valign=top>\n");
    print("<h2>Obsah vašeho košíku</h2>\n");
#     print("<p><font color=red>Objednávky přijaté v době 5. - 20.8.2006 budou vyřízeny až po 21.8., tudíž je obdržíte až koncem srpna či začátkem září. O přesném termínu dodání budete vyrozuměni po 21.8.2006. Děkujeme za pochopení. Osobní nákup na Palubě je možný v době otvíracích hodin. Více na <a href=http://www.paluba.cz/>www.paluba.cz</a>.</font></p>\n");
    vypsat_obsah_kosiku($pole{kosik}, 1);
    print("<h3>Chcete-li do košíku něco přidat, zvolte si hru v&nbsp;levém sloupci. Pokud jste již s&nbsp;obsahem košíku spokojeni, vyplňte prosím následující údaje:</h3>\n");
    # Vytisknout objednávkový formulář.
    my $parametry = dancgi::sestavit_parametry_odkaz(\%pole, "hra=objednat");
    print("<form method=get action=\"prodej.pl?$parametry\">\n");
    print("<p align=left><b>Zboží:</b><br>\n");
    my %checked;
    $pole{prevzeti} = "dobirka" if(!exists($pole{prevzeti}));
    $checked{$pole{prevzeti}} = "checked";
    print("<input type=radio name=prevzeti value=\"dobirka\" $checked{dobirka}> chci zaslat na dobírku <br>\n");
    print("<input type=radio name=prevzeti value=\"paluba\" $checked{paluba}> si vyzvednu osobně na Palubě u Anděla<br>\n");
    print("<p align=left> <b>Zaplatím:</b><br>\n");
    $pole{platba} = "hotove" if(!exists($pole{platba}));
    $checked{$pole{platba}} = "checked";
    print("<input type=radio name=platba value=\"hotove\"  $checked{hotove}> hotově (dobírkou či osobně při převzetí) <br>\n");
    print("<input type=radio name=platba value=\"prevodem\" $checked{prevodem}> předplatbou (bezhotovostním převodem)</p>\n");
    # Vypsat kolonky pro kontaktní údaje.
    print("<h3 align=left>Vyplňte kontaktní údaje:</h3>\n");
#    print("<p><font color=red>Upozornění: Z&nbsp;důvodu dovolených bude objednávka, kterou teď odešlete, zpracována až v&nbsp;týdnu od 21.8.2006.</font></p>\n");
    print("<table border=\"0\">\n");
    print("  <tr><td><p>Jméno: </p></td><td><p><input name=jmeno type=text value=\"$pole{jmeno}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td><p>Příjmení: </p></td><td><p><input name=prijmeni type=text value=\"$pole{prijmeni}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td><p>E-mail: </p></td><td><p><input name=email type=text value=\"$pole{email}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td colspan=\"2\">(E-mailem vám zašleme jak potvrzení objednávky, tak upřesnění dodání.)</td></tr>\n");
    print("  <tr><td><p>Tel.: </p></td><td><p><input name=tel type=text value=\"$pole{tel}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td><p>Poznámka: </p></td><td><p><input name=poznamka type=text value=\"$pole{poznamka}\" size=\"20\"></p></td></tr>\n");
    print("</table>\n");
    # Vypsat kolonky pro zasílací adresu.
    print("<h3 align=left>Vyplňte adresu při zaslání na dobírku:</h3>\n");
    print("<table border=\"0\">\n");
    print("  <tr><td><p>Ulice a dům: </p></td><td><p><input name=ulice type=text value=\"$pole{ulice}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td><p>Obec: </p></td><td><p><input name=obec type=text value=\"$pole{obec}\" size=\"20\"></p></td></tr>\n");
    print("  <tr><td><p>PSČ: </p></td><td><p><input name=psc type=text value=\"$pole{psc}\" size=\"20\"></p></td></tr>\n");
    print("</table>\n");
    # Vypsat závěrečné kolonky.
    print("<h3 align=left>Chcete-li jiné fakturační údaje než zasílací, použijte poznámku:</h3>\n");
    print("<p align=left>Poznámka 2: <input name=poznamka2 type=text value=\"$pole{poznamka2}\" size=\"50\">\n");
    print("<p align=left><input type=radio name=organizace value=\"ano\">jsme organizace pracující s&nbsp;mládeží a žádáme o slevu. Naše IČO je: <input name=ico type=text value=\"$pole{ico}\" size=\"10\">\n");
    print("<p>Tímto způsobem lze objednat zboží k&nbsp;dodání na území Česka. Máte-li zájem o dodání do jiných zemí, kontaktujte nás na e-mailu <a href=\"mailto:obchod\@hrejsi.cz\">obchod\@hrejsi.cz</a>.<br>\n");
    print("<input type=hidden name=hra value=objednavka>\n");
    print("<input type=hidden name=kosik value=\"$pole{kosik}\">\n");
#     print("<p><font color=red>Objednávky přijaté v době 5. - 20.8.2006 budou vyřízeny až po 21.8., tudíž je obdržíte až koncem srpna či začátkem září. O přesném termínu dodání budete vyrozuměni po 21.8.2006. Děkujeme za pochopení. Osobní nákup na Palubě je možný v době otvíracích hodin. Více na <a href=http://www.paluba.cz/>www.paluba.cz</a>.</font></p>\n");
    print("<input type=submit value=\"Odeslat objednávku\"><br>\n");
    print("</form>\n");
    print("            </td>\n");
}



#------------------------------------------------------------------------------
# Z parametrů skriptu posbírá informace o objednávce a sestaví z nich hash.
#------------------------------------------------------------------------------
sub zjistit_objednavku
{
    my $kosik = shift; # řetězec ve formátu, v jakém je košík uložen v URL
    my %objednavka;
    $objednavka{kosik_text} = $kosik;
    # Dekódovat košík.
    my @zakodovany_kosik = split(/a/, $kosik);
    my %kosik;
    foreach my $radek (@zakodovany_kosik)
    {
        my ($pocet, $vec) = split(/x/, $radek);
        $kosik{$vec} += $pocet;
    }
    # Získat z databáze přehled zboží.
    my @nazvy = qw(kod nazev prodejni_cena clenska_cena nelze_koupit);
    my $nazvy = join(", ", @nazvy);
    my $filtr = join(" OR ", map{"(kod = '$_')"}(sort(keys(%kosik))));
    my $dotaz = "SELECT $nazvy FROM zbozi WHERE $filtr";
    my $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my %zbozi;
    while(my @zaznam = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        my %zaznam; for(my $i = 0; $i<=$#nazvy; $i++) {$zaznam{$nazvy[$i]} = $zaznam[$i];}
        $zaznam{_cena} = exists($pole{organizace}) && $pole{organizace} eq "ano" ? $zaznam{clenska_cena} : $zaznam{prodejni_cena};
        $zbozi{$zaznam{kod}} = \%zaznam;
    }
    # Uložit do objednávky obsah košíku s cenami.
    $objednavka{celkem} = 0;
    foreach my $vec (sort(keys(%kosik)))
    {
        # Ignorovat pokusy objednat zboží, které nelze koupit.
        # (Nikde by neměl být odkaz na přidání takového zboží do košíku, ale někdo může mít v cachi starou verzi stránky.)
        if($zbozi{$vec}{nelze_koupit})
        {
            my $varovani =
                "Ve vašem košíku byla hra <em>\"$zbozi{$vec}{nazev}\"</em>, kterou ale momentálně nevedeme. ".
                "Tuto hru jsme vám z&nbsp;košíku zase vyndali. ".
                "Vlastně je záhada, jak se vám ji tam vůbec podařilo vložit. ".
                "Protože jde nejspíš o chybu na našem serveru, budeme rádi, ".
                "pokud ze svého prohlížeče vydolujete přesnou adresu stránky, ".
                "na které jste našli příslušný odkaz <em>\"přidat do košíku\"</em>, ".
                "a <a href=\"mailto:obchod\@hrejsi.cz\">pošlete nám ji</a>. ";
            push(@{$objednavka{varovani}}, $varovani);
            next;
        }
        my $pocet = $kosik{$vec};
        my $cena = $zbozi{$vec}{_cena};
        my $rcelkem = $pocet*$cena;
        $objednavka{celkem} += $rcelkem;
        push(@{$objednavka{kosik}}, {"kod_zbozi"=>$vec, "nazev_zbozi"=>$zbozi{$vec}{nazev}, "jednotkova_cena"=>$cena, "pocet"=>$pocet, "cena_celkem"=>$rcelkem});
    }
    $objednavka{mezisoucet} = $objednavka{celkem};
    # Přičíst poštovné.
    # Informaci o poštovném zdarma zobrazovat pouze, pokud je zvolen způsob dodání dobírkou
    # nebo pokud způsob dodání ještě není znám.
    if($objednavka{celkem}>=2000 && (!exists($pole{prevzeti}) || $pole{prevzeti} eq "dobirka"))
    {
        $objednavka{postovne} = 0;
    }
    else
    {
        # Pokud ještě není zvolen způsob dodání a placení, v kalkulaci zatím předpokládat, že půjde o běžnou dobírku.
        if(!exists($pole{prevzeti}))
        {
            $objednavka{postovne} = 89;
            $objednavka{celkem} += 89;
        }
        # Pokud už je zvolen způsob dodání a placení, vypočítat cenu přesně.
        # Pokud si zákazník převezme zboží osobně, poštovné je 0.
        elsif($pole{prevzeti} eq "dobirka")
        {
            $objednavka{postovne} = $pole{platba} eq "prevodem" ? 66 : 89;
            $objednavka{celkem} += $objednavka{postovne};
        }
        else
        {
            $objednavka{postovne} = 0;
        }
    }
    # Započítat množstevní slevu.
    $objednavka{mnozstevni_sleva} = $objednavka{celkem}>=5000 ? int($objednavka{celkem}*0.03) : 0;
    $objednavka{celkem} -= $objednavka{mnozstevni_sleva};
    # Z hashe s parametry skriptu zkopírovat informace o způsobu fakturace, platby a dodání.
    $objednavka{jmeno} = $pole{jmeno};
    $objednavka{jmeno} =~ s/^\s+//;
    $objednavka{jmeno} =~ s/\s+$//;
    $objednavka{jmeno} =~ s/\s+/ /g;
    $objednavka{prijmeni} = $pole{prijmeni};
    $objednavka{prijmeni} =~ s/^\s+//;
    $objednavka{prijmeni} =~ s/\s+$//;
    $objednavka{prijmeni} =~ s/\s+/ /g;
    $objednavka{ulice_a_dum} = $pole{ulice};
    $objednavka{ulice_a_dum} =~ s/^\s+//;
    $objednavka{ulice_a_dum} =~ s/\s+$//;
    $objednavka{ulice_a_dum} =~ s/\s+/ /g;
    $objednavka{obec} = $pole{obec};
    $objednavka{obec} =~ s/^\s+//;
    $objednavka{obec} =~ s/\s+$//;
    $objednavka{obec} =~ s/\s+/ /g;
    $objednavka{psc} = $pole{psc};
    $objednavka{psc} =~ s/^\s+//;
    $objednavka{psc} =~ s/\s+$//;
    $objednavka{psc} =~ s/\s+//g;
    $objednavka{email} = $pole{email};
    $objednavka{email} =~ s/^\s+//;
    $objednavka{email} =~ s/\s+$//;
    $objednavka{telefon} = $pole{tel};
    $objednavka{poznamka} = $pole{poznamka};
    $objednavka{poznamka2} = $pole{poznamka2};
    $objednavka{odber} = $pole{prevzeti};
    $objednavka{platba} = $pole{platba};
    $objednavka{platba} =~ s/prevodem/převodem/;
    $objednavka{platba} =~ s/hotove/hotově/;
    $objednavka{sleva_org_deti} = $pole{organizace} eq "ano" ? 1 : 0;
    $objednavka{ico} = $pole{ico};
    $objednavka{ico} =~ s/^\s+//;
    $objednavka{ico} =~ s/\s+$//;
    # Přidat informaci o aktuálním čase jako identifikátor objednávky.
    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
    $objednavka{cas} = sprintf("%04d%02d%02d%02d%02d%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
    # Vrátit záznam o objednávce.
    return \%objednavka;
}



#------------------------------------------------------------------------------
# Zkontroluje úplnost a správnost údajů v objednávce. Případné nedostatky
# popíše do objednávky do položky "chyby". Musí zkontrolovat i obsah košíku,
# protože se stává, že uživatelé mají v cachi starší verzi stránky, která jim
# poskytne odkazy na zboží, jež ve skutečnosti nemáme na skladě. Díky tomu jako
# vedlejší produkt uloží do objednávky výpis obsahu košíku do e-mailu.
#------------------------------------------------------------------------------
sub zkontrolovat_objednavku
{
    my $objednavka = shift;
    my $chyba = 0;
    # Košík nesmí být prázdný.
    if(!@{$objednavka->{kosik}})
    {
        push(@{$objednavka->{chyby}}, "Váš košík je prázdný, neobjednali jste si žádné zboží.");
        $chyba = 1;
    }
    # Jméno i příjmení musí být neprázdné.
    $objednavka->{jmeno} =~ s/^\s+//;
    $objednavka->{jmeno} =~ s/\s+$//;
    $objednavka->{prijmeni} =~ s/^\s+//;
    $objednavka->{prijmeni} =~ s/\s+$//;
    if($objednavka->{jmeno} eq "" || $objednavka->{prijmeni} eq "")
    {
        push(@{$objednavka->{chyby}}, "Neuvedli jste jméno nebo příjmení.");
        $chyba = 1;
    }
    else
    {
        # Jestliže jméno nebo příjmení neobsahuje ani jedno velké písmeno, převést první znak na velké písmeno.
        # Test na velké písmeno uvnitř řetězce má pomoci rozlišit, kdy jde o ignoranci objednatele a kdy
        # o příjmení typu "van de Graaf".
        if(lc($objednavka->{jmeno}) eq $objednavka->{jmeno})
        {
            $objednavka->{jmeno} =~ s/^(.)/\u$1/;
        }
        if(lc($objednavka->{prijmeni}) eq $objednavka->{prijmeni})
        {
            $objednavka->{prijmeni} =~ s/^(.)/\u$1/;
        }
    }
    # E-mail musí vypadat jako běžný e-mail, tj. např. musí obsahovat zavináč a na konci musí být dva znaky nebo vyjmenované domény.
    $objednavka->{email} =~ s/^\s+//;
    $objednavka->{email} =~ s/\s+$//;
    if($objednavka->{email} !~ m/(\w|[-\._])+\@(\w|[-\._])+\.(\w\w|net|com|org|edu|mil|gov|biz|info)$/i)
    {
        push(@{$objednavka->{chyby}}, "E-mailová adresa je asi chybná.");
        $chyba = 1;
    }
    # Má-li se zboží zasílat na dobírku, musí být vyplněna adresa.
    if($objednavka->{odber} eq "dobirka")
    {
        $objednavka->{ulice_a_dum} =~ s/^\s+//;
        $objednavka->{ulice_a_dum} =~ s/\s+$//;
        $objednavka->{obec} =~ s/^\s+//;
        $objednavka->{obec} =~ s/\s+$//;
        $objednavka->{psc} =~ s/^\s+//;
        $objednavka->{psc} =~ s/\s+$//;
        my @chybadr = grep{$objednavka->{$_} =~ m/^\s*$/}("ulice_a_dum", "obec", "psc");
        if(@chybadr)
        {
            my $chybadr = join(", ", @chybadr);
            # Nahradit poslední čárku spojkou "a".
            $chybadr =~ s/, ([^,]*)$/ a $1/;
            # Doplnit diakritiku a velká písmena do názvů polí, než budou prezentována uživateli.
            $chybadr =~ s/ulice_a_dum/ulice/;
            $chybadr =~ s/psc/PSČ/;
            push(@{$objednavka->{chyby}}, "U dodávek na dobírku musí být správně uvedena dodací adresa. Ve vaší adrese však chybí $chybadr.");
            $chyba = 1;
        }
        if($objednavka->{psc} !~ m/^[1234567]\d\d\d\d$/)
        {
            push(@{$objednavka->{chyby}}, "To, co jste vyplnili do kolonky PSČ, není platné české poštovní směrovací číslo. Pokud chcete zaslat zboží do zahraničí, je to možné, ale musíte nás <a href=\"mailto:obchod\@hrejsi.cz\">kontaktovat e-mailem</a> a počítat s&nbsp;podstatně vyššími náklady.");
            $chyba = 1;
        }
    }
    return !$chyba;
}



#------------------------------------------------------------------------------
# Uloží objednávku do databáze.
#------------------------------------------------------------------------------
sub ulozit_objednavku
{
    my $objednavka = shift; # odkaz na hash
    # Přidat základní informace o objednávce do tabulky objednavky.
    my @nazvy = qw(cas jmeno prijmeni ulice_a_dum obec psc email telefon poznamka poznamka2 odber platba mezisoucet mnozstevni_sleva postovne celkem sleva_org_deti ico);
    my $seznam_poli = join(", ", @nazvy);
    my @hodnoty = map{m/(mezisoucet|mnozstevni_sleva|postovne|celkem|sleva_org_deti)/ ? $objednavka->{$_} : "'$objednavka->{$_}'"}(@nazvy);
    my $seznam_hodnot = join(", ", @hodnoty);
    my $dotaz = "INSERT INTO objednavky ($seznam_poli) VALUES ($seznam_hodnot);";
    $databaze->do($dotaz)
        or print("<p><font color=magenta>Chyba: Nepodařilo se přidat záznam do tabulky objednavky:", $DBI::errstr, "</font></p>\n");
    # Přidat informace o jednotlivých objednaných hrách do tabulky objzbozi.
    @nazvy = qw(kod_zbozi jednotkova_cena pocet cena_celkem);
    $seznam_poli = join(", ", ("cas", @nazvy));
    foreach my $radek (@{$objednavka->{kosik}})
    {
        @hodnoty = map{$_ ne "kod_zbozi" ? $radek->{$_} : "'$radek->{$_}'"}(@nazvy);
        $seznam_hodnot = join(", ", ("'$objednavka->{cas}'", @hodnoty));
        $dotaz = "INSERT INTO objzbozi ($seznam_poli) VALUES ($seznam_hodnot);"
            or print("<p><font color=magenta>Chyba: Nepodařilo se přidat záznam do tabulky objzbozi:", $DBI::errstr, "</font></p>\n");
        $databaze->do($dotaz);
    }
}



#------------------------------------------------------------------------------
# Zobrazí obsah košíku v HTML. Současně vrátí textovou verzi téhož, kdybychom
# ji už chtěli posílat e-mailem.
#------------------------------------------------------------------------------
sub vypsat_obsah_kosiku
{
    my $kosik = shift; # řetězec ve formátu, v jakém je košík uložen v URL
    my $povolit_zmeny = shift; # mají se vygenerovat odkazy na přidávání/ubírání z košíku?
    my $mail;
    # Dekódovat košík. Pokud je prázdný, vypsat o tom zprávu a skončit.
    my @zakodovany_kosik = split(/a/, $kosik);
    unless(scalar(@zakodovany_kosik))
    {
        print("              <p>Váš nákupní košík je zatím prázdný.</p>\n");
        return;
    }
    my %kosik;
    foreach my $radek (@zakodovany_kosik)
    {
        my ($pocet, $vec) = split(/x/, $radek);
        $kosik{$vec} += $pocet;
    }
    # Získat z databáze přehled zboží.
    my @nazvy = qw(kod nazev prodejni_cena clenska_cena nelze_koupit);
    my $nazvy = join(", ", @nazvy);
    my $filtr = join(" OR ", map{"(kod = '$_')"}(sort(keys(%kosik))));
    my $dotaz = "SELECT $nazvy FROM zbozi WHERE $filtr";
    my $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my %zbozi;
    while(my @zaznam = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        my %zaznam; for(my $i = 0; $i<=$#nazvy; $i++) {$zaznam{$nazvy[$i]} = $zaznam[$i];}
        $zaznam{_cena} = exists($pole{organizace}) && $pole{organizace} eq "ano" ? $zaznam{clenska_cena} : $zaznam{prodejni_cena};
        $zbozi{$zaznam{kod}} = \%zaznam;
    }
    # Vypsat obsah košíku.
    my $celkem = 0;
    foreach my $vec (sort(keys(%kosik)))
    {
        # Ignorovat pokusy objednat zboží, které nelze koupit.
        # (Nikde by neměl být odkaz na přidání takového zboží do košíku, ale někdo může mít v cachi starou verzi stránky.)
        ###!!! Pozor, pak se může stát, že košík bude prázdný. To zatím není nikde ošetřeno.
        ###!!! Uživatel také momentálně není nijak varován, že měl v košíku něco, co jsme mu z něj vyhodili.
        next if($zbozi{$vec}{nelze_koupit});
        my $pocet = $kosik{$vec};
        my $cena = $zbozi{$vec}{_cena};
        my $rcelkem = $pocet*$cena;
        $celkem += $rcelkem;
        print("<p><b>$pocet × $zbozi{$vec}{nazev}</b> (po $cena&nbsp;Kč) = <b>$rcelkem&nbsp;Kč</b>\n");
        $mail .= sprintf("%2d × %4d Kč = %4d Kč: %s\n", $pocet, $cena, $rcelkem, $zbozi{$vec}{nazev});
        # Umožnit uživateli změnit v objednávce počet kusů každého zboží.
        if($povolit_zmeny)
        {
            my %novy_kosik = %kosik;
            $novy_kosik{$vec} = $pocet+1;
            my $novy_kosik = join("a", map{$novy_kosik{$_}."x".$_}(sort(keys(%novy_kosik))));
            print("<br>", odkazpar("[o 1 víc]", \%pole, "kosik=$novy_kosik"), "\n");
            $novy_kosik{$vec} = $pocet-1;
            delete($novy_kosik{$vec}) unless($novy_kosik{$vec}>0);
            my $novy_kosik = join("a", map{$novy_kosik{$_}."x".$_}(sort(keys(%novy_kosik))));
            print(odkazpar("[o 1 míň]", \%pole, "kosik=$novy_kosik"), "<br>\n");
        }
    }
    print("<p><b>Celkem $celkem&nbsp;Kč</b>.<br>\n");
    $mail .= sprintf("MEZISOUČET   = %4d Kč\n", $celkem);
    # Přičíst poštovné.
    # Informaci o poštovném zdarma zobrazovat pouze, pokud je zvolen způsob dodání dobírkou
    # nebo pokud způsob dodání ještě není znám.
    if($celkem>=2000 && (!exists($pole{prevzeti}) || $pole{prevzeti} eq "dobirka"))
    {
        print("<p><font color=red>Poštovné a balné ZDARMA.</font><br>\n");
        $mail .= sprintf("Poštovné     = %4d Kč\n", 0);
    }
    else
    {
        # Pokud ještě není zvolen způsob dodání a placení, zobrazit alternativy.
        # A v kalkulaci zatím předpokládat, že půjde o běžnou dobírku.
        if(!exists($pole{prevzeti}))
        {
            print("<p>Poštovné a balné <b>89&nbsp;Kč.<b></p>\n");
            print("<p>Poštovné a balné při předplatbě <b>66&nbsp;Kč.<b><br>\n");
            print("Při nákupu nad 2000&nbsp;Kč poštovné a balné ZDARMA.</p>\n");
            $mail .= sprintf("Poštovné     = %4d Kč\n", 89);
            $celkem += 89;
        }
        # Pokud už je zvolen způsob dodání a placení, vypočítat cenu přesně.
        # Opět se zobrazení poštovného úplně vyhnout, jestliže si zákazník převezme zboží osobně.
        elsif($pole{prevzeti} eq "dobirka")
        {
            my $postovne = $pole{platba} eq "prevodem" ? 66 : 89;
            print("<p>Poštovné a balné <b>$postovne&nbsp;Kč.<b></p>\n");
            $mail .= sprintf("Poštovné     = %4d Kč\n", $postovne);
            $celkem += $postovne;
        }
    }
    # Započítat množstevní slevu.
    if($celkem>=5000)
    {
        my $sleva = int($celkem * 0.03);
        print("<p><font color=red>Množstevní sleva 3&nbsp;%<br>\n");
        print("= $sleva&nbsp;Kč</font></p>\n");
        $mail .= sprintf("Sleva 3 %%    = %4d Kč\n", $sleva);
        $celkem -= $sleva
    }
    # Závěr obsahu košíku.
    print("<p><font color=red><b>Dobírka celkem $celkem&nbsp;Kč</b>.</font></b></p>\n");
    $mail .= sprintf("CELKEM       = %4d Kč\n\n", $celkem);
    return $mail;
}



#------------------------------------------------------------------------------
# Zobrazí kořenovou stránku hry.
#------------------------------------------------------------------------------
sub generovat_stranku_hry
{
    my $hra = shift; # kód hry, jejíž stránka se má generovat
    # Získat z databáze údaje o hře.
    my @nazvy = qw(nazev upoutavka pocet_hracu min_vek min_delka max_delka slozka_hrejsi htmltext htmllink htmlvlink htmlalink);
    my $nazvy = join(", ", @nazvy);
    my $dotaz = "SELECT $nazvy FROM hry WHERE kod = '$hra'";
    my $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my @zaznam = map{decode("utf8", $_)}($dtzobj->fetchrow_array());
    my %zaznam; for(my $i = 0; $i<=$#nazvy; $i++) {$zaznam{$nazvy[$i]} = $zaznam[$i];}
    my $nazev = $zaznam{nazev};
    my $upoutavka = $zaznam{upoutavka};
    my $pocet_hracu = $zaznam{pocet_hracu};
    my $min_vek = $zaznam{min_vek};
    my $min_delka = $zaznam{min_delka};
    my $max_delka = $zaznam{max_delka};
    my $slozka = $zaznam{slozka_hrejsi};
    my $text = $zaznam{htmltext};
    my $link = $zaznam{htmllink};
    my $vlink = $zaznam{htmlvlink};
    my $alink = $zaznam{htmlalink};
    # Druhým dotazem získat alternativní názvy hry.
    $dotaz = "SELECT kod_hry, nazev FROM nazvy WHERE (kod_hry = '$hra') AND (nazev <> '$nazev')";
    $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my @dalsi_nazvy;
    while(my ($kod_hry, $nazev) = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        push(@dalsi_nazvy, $nazev);
    }
    my $dalsi_nazvy = join(", ", @dalsi_nazvy);
    # Třetím dotazem získat odkazy na stránky o této hře.
    $dotaz = "SELECT hra, text, adresa FROM odkazy WHERE (hra = '$hra')";
    $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my @odkazy;
    while(my ($hra, $text, $adresa) = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        push(@odkazy, {"text" => $text, "adresa" => $adresa});
    }
    # Čtvrtým dotazem získat přehled zboží souvisejícího s touto hrou.
    @nazvy = qw(kod kod_hry nelze_koupit nazev prodejni_cena bezna_cena poznamka popis_zbozi);
    $nazvy = join(", ", @nazvy);
    $dotaz = "SELECT $nazvy FROM zbozi WHERE (kod_hry = '$hra')";
    $dtzobj = $databaze->prepare($dotaz);
    $dtzobj->execute();
    my @zbozi;
    while(my @zaznam = map{decode("utf8", $_)}($dtzobj->fetchrow_array()))
    {
        my %zaznam; for(my $i = 0; $i<=$#nazvy; $i++) {$zaznam{$nazvy[$i]} = $zaznam[$i];}
        push(@zbozi, \%zaznam);
    }
    # Vypsat informace o hře.
    print("<td align=\"center\" valign=\"top\" WIDTH=\"70%\">\n");
    print("  <table border=0 bgcolor=white>\n");
    print("    <tr>\n");
    print("      <td width=\"30%\" valign=\"bottom\">\n");
    # Zkontrolovat, že máme fotku hry, a pokud ano, vložit ji.
    if($slozka ne "" && -f "$koren_system/$slozka/obr/fotka.jpg")
    {
        print("        <img src=\"$koren_hrejsi/$slozka/obr/fotka.jpg\" width=150 alt=\"fotografie\">\n");
    }
    print("      </td>\n");
    print("      <td width=\"40%\">\n");
    print("        <h1 align=center>$nazev</h1>\n");
    # Pokud známe alternativní názvy, vypsat je.
    my $neboli;
    if($dalsi_nazvy)
    {
        $neboli = $dalsi_nazvy;
        $neboli = "        <center>neboli $neboli</center>";
    }
    print("$neboli\n");
    # Vypsat upoutávku na hru a charakteristiku hry.
    print("        <p>$upoutavka</p>\n");
    print("      </td>\n");
    print("      <td valign=\"bottom\">\n");
    print("        <p><b>Počet hráčů:</b> $pocet_hracu.\n");
    print("        <br><b>Minimální věk:</b> $min_vek let.\n");
    if($min_delka!=0)
    {
        if($min_delka>=60*24)
        {
             $dnymin = sprintf("%d", ($min_delka/60/24)+0.5);
             $dnymax = sprintf("%d", ($max_delka/60/24)+0.5);
             printf("<br><b>Délka hry:</b> %s %s.\n", $dnymax==$dnymin ? $dnymax : "$dnymin až $dnymax", $dnymax==1 ? "den" : $dnymax>=2 && $dnymax<=4 ? "dny" : "dnů");
        }
        elsif($min_delka>=100)
        {
             $hodmin = sprintf("%.1f", ($min_delka/60)+0.05);
             $hodmax = sprintf("%.1f", ($max_delka/60)+0.05);
             print("<br><b>Délka hry:</b> $hodmin až $hodmax hod.\n");
        }
        else
        {
            print("<br><b>Délka hry:</b> $min_delka - $max_delka min.\n");
        }
    }
    # Vypsat odkazy na stránky o této hře.
    print("        <p><a href=\"hry.pl?hra=$hra\">Základní informace o hře</a><br>\n");
    foreach my $odkaz (@odkazy)
    {
        my $adresa = $odkaz->{adresa};
        unless($adresa =~ m/^(\/|http:)/)
        {
            $adresa = "$koren_hrejsi/$slozka/$adresa";
        }
        print("        <a href=\"$adresa\">$odkaz->{text}</a><br>\n");
    }
    print("      </td>\n");
    print("    </tr>\n");
    # Vypsat informace o jednotlivých druzích zboží souvisejících s touto hrou.
    foreach my $zbozi (@zbozi)
    {
        unless($zbozi->{nelze_koupit})
        {
            print("    <tr>\n");
            print("      <td valign=\"top\">\n");
            print("        <hr><h3 align=left><b>$zbozi->{nazev}</b></h3>\n");
            print("        <p>Naše cena:<b> $zbozi->{prodejni_cena}&nbsp;Kč</b><br>\n");
            if($zbozi->{bezna_cena}>0)
            {
                print("        Běžná cena: $zbozi->{bezna_cena}&nbsp;Kč\n");
                if($zbozi->{bezna_cena}>$zbozi->{prodejni_cena})
                {
                    my $uspora_kc = $zbozi->{bezna_cena}-$zbozi->{prodejni_cena};
                    my $uspora_prc = $uspora_kc/$zbozi->{bezna_cena}*100;
                    if($uspora_prc>=4)
                    {
                        printf("        <br><font color=red>(Tedy ušetříte %d&nbsp;Kč, resp. %d&nbsp;%%.)</font>\n", $uspora_kc, $uspora_prc);
                    }
                }
            }
            else
            {
                print("        Běžně se v&nbsp;Česku neprodává.\n");
            }
            print("      </td>\n");
            print("      <td valign=\"top\">\n");
            print("        <hr><p><b>$zbozi->{poznamka}</b><br>\n");
            print("        $zbozi->{popis_zbozi}<br>\n");
            print("        $zbozi->{lokalizace}<br>\n");
            # Vytvořit odkaz na košík, v němž je o 1 ks tohoto zboží víc.
            my @kosik = split(/a/, $pole{kosik});
            my $nalezeno = 0;
            foreach my $polozka (@kosik)
            {
                my ($pocet, $vec) = split(/x/, $polozka);
                if($vec==$zbozi->{kod})
                {
                    $nalezeno = 1;
                    $polozka = ($pocet+1)."x$vec";
                    last;
                }
            }
            unless($nalezeno)
            {
                push(@kosik, "1x$zbozi->{kod}");
            }
            my $novy_kosik = join("a", @kosik);
#            print("<a href=\"mailto:klara.zemanova\@atlas.cz\">Objednat e-mailem.</a></p></td>\n");
            print("        ", odkazpar("Přidat do košíku.", \%pole, "kosik=$novy_kosik"), "</p>\n");
            print("      </td>\n");
            # Vložit fotku zboží, pokud je k dispozici.
            my $cesta_disk = "$koren_system/$slozka/obr/zbo$zbozi->{kod_hry}$zbozi->{kod}.jpg";
            my $cesta_url = "$koren_hrejsi/$slozka/obr/zbo$zbozi->{kod_hry}$zbozi->{kod}.jpg";
            if($slozka ne "" && -f $cesta_disk)
            {
                print("      <td valign=\"top\">\n");
                print("        <hr><img src=\"$cesta_url\" width=150 alt=\"fotografie\">\n");
                print("      </td>\n");
            }
            $cesta_disk = "$koren_system/$slozka/obr/zbo$zbozi->{kod_hry}$zbozi->{kod}.gif";
            $cesta_url = "$koren_hrejsi/$slozka/obr/zbo$zbozi->{kod_hry}$zbozi->{kod}.gif";
            if($slozka ne "" && -f $cesta_disk)
            {
                print("      <td valign=\"top\">\n");
                print("        <hr><img src=\"$cesta_url\" width=150 alt=\"fotografie\">\n");
                print("      </td>\n");
            }
            print("    </tr>\n");
        }
    }
    print("  </table>\n");
    print("</td>\n");
}



#------------------------------------------------------------------------------
# Vypíše dobu, po kterou program běžel. K tomu potřebuje dostat časové otisky
# začátku a konce.
#------------------------------------------------------------------------------
sub sestavit_hlaseni_o_trvani_programu
{
    my $starttime = shift;
    my $stoptime = time();
    my $cas = $stoptime-$starttime;
    my $hod = int($cas/3600);
    my $min = int(($cas%3600)/60);
    my $sek = $cas%60;
    my $hlaseni;
    if($hod==0)
    {
        if($min==0)
        {
            $hlaseni = sprintf("Program běžel $sek vteřin%s.\n", $sek==1 ? "u" : $sek>=2 && $sek<=4 ? "y" : "");
        }
        else
        {
            $hlaseni = sprintf("Program běžel %d:%02d minut.\n", $min, $sek);
        }
    }
    else
    {
        $hlaseni = sprintf("Program běžel %2d:%02d:%02d hodin.\n", $hod, $min, $sek);
    }
    return $hlaseni;
}
