+EaP 4/2010 (164)
[www.energie.vellum.cz.git] / common.php
index edeedfe..2a3db70 100644 (file)
-<?php
+<?php // $Id$
+
        error_reporting(E_ALL);
+       setlocale(LC_ALL,"cs_CZ.iso-8859-2");
+
+       include("config.php");
 
-       $viewcvs=ereg_replace("^/~short/","\\0cgi-bin/viewcvs/",$HTTP_SERVER_VARS["SCRIPT_NAME"]);
+       // $viewcvs prepared by "config.php"
        if ($viewcvs==$HTTP_SERVER_VARS["SCRIPT_NAME"])
                unset($viewcvs);
        $cvs_id_split=split(" ",$cvs_id);
-       $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
-       $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@".$HTTP_SERVER_VARS["HTTP_HOST"]."\">".$cvs_id_split[5]."</a>";
+       if (count($cvs_id_split)==8) {
+               $cvs_id_split[2]=""
+                               ."<a href=\"".ereg_replace("/viewcvs/","\\0~checkout~/",$viewcvs)."?rev=".$cvs_id_split[2]."\">"
+                               .$cvs_id_split[2]."</a>";
+               $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
+               $cvs_id_split[5]="<a href=\"mailto:$admin_mail\">".$cvs_id_split[5]."</a>";
+               }
        $cvs_id_html=join(" ",$cvs_id_split);
 
-function addpercents($url)
+       if (!isset($head))
+               $head="";
+       if (!isset($energie_base))
+               $energie_base="";
+
+       unset($have_ent);
+       if (isset($HTTP_GET_VARS[    "have_ent"]))
+               $have_ent=true;
+       if (isset($HTTP_GET_VARS["amp;have_ent"]))
+               $have_ent=false;
+       if ((!isset($detect_ent) || $detect_ent) && !isset($have_ent) && $HTTP_SERVER_VARS["REQUEST_METHOD"]=="GET")
+               $head.='<meta http-equiv="Refresh" content="0; URL='
+                               .htmlspecialchars("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["PHP_SELF"]
+                                               ."?".(strlen($HTTP_SERVER_VARS["QUERY_STRING"]) ? $HTTP_SERVER_VARS["QUERY_STRING"] : "detect_ent_glue=1")
+                                                               ."&have_ent=detect")
+                               .'" />'."\n";
+       fixampvars();
+
+       $have_js=(isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"])
+                       ? "?have_js=1" : "");
+       if (isset($detect_js) && !$have_js)
+               $head.='<script type="text/javascript" src="'.$energie_base.'have_js.js"></script>'."\n";
+
+       $user_agent=(!isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ? "" : $HTTP_SERVER_VARS["HTTP_USER_AGENT"]);
+       if (ereg("[[:<:]]MSIE ([0-9]+)\\.",$user_agent,$msie_major_a))
+               $msie_major=$msie_major_a[1];
+       else if (ereg("[[:<:]]Mozilla/([0-9]+)\\.",$user_agent,$mozilla_major_a))
+               $mozilla_major=$mozilla_major_a[1];
+
+       $have_style=!isset($mozilla_major) || $mozilla_major!=4;
+       $have_css=true; // doesn't hurt anybody AFAIK
+
+function fixampvars()
+{
+       $ars=array("HTTP_GET_VARS","HTTP_POST_VARS");
+       foreach ($ars as $ar) {
+               foreach ($GLOBALS[$ar] as $key=>$val) {
+                       if (substr($key,0,4)!="amp;")
+                               continue;
+                       unset($GLOBALS[$ar][$key]);
+                       $GLOBALS[$ar][substr($key,4)]=$val;
+                       }
+               }
+}
+
+function fatal($msg="UNKNOWN")
+{
+       global $admin_mail;
+
+       heading(false/*title*/,false/*indexme*/); // notitle is always safe, don't index the error message
+       print("\n<p>&nbsp;<br />&nbsp;</p><hr /><h1 class=\"error\">Nastala chyba pøi zpracování: $msg!</h1>\n"
+                       ."<p>Mù¾ete tento problém nahlásit <a href=\"mailto:$admin_mail\">správci tohoto webu</a>.</p>\n");
+       footer();
+}
+
+function prepvar($name,$regex=".*",$require=true)
+{
+       global $HTTP_GET_VARS,$HTTP_POST_VARS;
+
+            if (isset($HTTP_GET_VARS[$name]))
+               $v=$HTTP_GET_VARS[$name];
+       else if (isset($HTTP_POST_VARS[$name]))
+               $v=$HTTP_POST_VARS[$name];
+       else
+               unset($v);
+
+       $name_html="Parametr <span class=\"quote\">".htmlspecialchars($name)."</span>";
+
+       $regex="^$regex\$";
+       if (isset($v) && !ereg($regex,$v))
+               fatal("$name_html nevyhovuje po¾adovanému regexu <span class=\"quote\">".htmlspecialchars($regex)."</span>");
+       if (!isset($v) && $require)
+               fatal("$name_html je vy¾adován");
+
+       if (!isset($v))
+               return(0);
+
+       $GLOBALS[$name]=$v;
+       return($v);
+}
+
+function db_connect()
+{
+       global $db_host,$db_user,$db_pwd,$db_name;
+       global $db_link;
+
+       if (isset($db_link))
+               return;
+       if (!($db_link=mysql_connect($db_host,$db_user,$db_pwd)))
+               fatal("MySQL connect: ".mysql_error());
+       if (!mysql_select_db($db_name,$db_link))
+               fatal("MySQL database select: ".mysql_error());
+}
+
+function db_query($query)
+{
+       global $db_link;
+
+       db_connect();
+       if (!($r=mysql_query($query,$db_link)))
+               fatal("MySQL query \"$query\": ".mysql_error());
+       return($r);
+}
+
+function db_row($query) // pure indexes
+{
+       $q=db_query($query);
+       $r=mysql_fetch_row($q);
+       mysql_free_result($q);
+       return($r);
+}
+
+function db_array($query) // field-names associative
+{
+       $q=db_query($query);
+       $r=mysql_fetch_array($q);
+       mysql_free_result($q);
+       return($r);
+}
+
+function db_item($query)
+{
+       $row=db_row($query);
+       return($row[0]);
+}
+
+function num2greg($num)
+{
+       $r="";
+       $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M");
+       krsort($vals,SORT_NUMERIC);
+       foreach($vals as $val=>$sym) {
+               while ($num<0 && $num+$val<-$num) {
+                       $r=substr($r,0,-1).$sym.substr($r,-1,1);
+                       $num+=$val;
+                       }
+               while (10*$num>=8*$val+(substr($val,0,1)=="1")) {
+                       $r=$r.$sym;
+                       $num-=$val;
+                       }
+               }
+       return($r);
+}
+
+function month_a($year,$month,$month_last=0,$sequential=0)
+{
+       global $tb_obsah,$obsah_year_base;
+
+       if (!$month_last || !$sequential)
+               list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'");
+       $month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last);
+
+       $r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full,
+                       "name"=>"$month"    .($month==$month_last ? "" : "-$month_last")."/$year",
+                       "img" =>"img/eap-$year-${month_full}.jpeg",
+                       "icon"=>"img/eap-$year-${month_full}s.jpeg",
+                       );
+       $r["name_full"]=$r["name"]
+                       ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")"
+                       ." - ".num2greg($year-$obsah_year_base+1).". roèník";
+       return($r);
+}
+
+function img_size($width,$height)
+{
+       global $have_style;
+
+       return(($have_style ? "style=\"border:0;width:${width}px;height:${height}px\"" : "border=\"0\"")
+                       ." width=\"$width\" height=\"$height\"");
+}
+
+function img($file,$alt,$attrs="")
+{
+       list($width,$height)=getimagesize(ereg_replace("\\.mng\$",".gif",$file));
+       $alt=htmlspecialchars($alt);
+       return("<img src=\"$file\" alt=\"$alt\" title=\"$alt\" ".img_size($width,$height)
+                       .($attrs=="" ? "" : " ".$attrs)." />");
+}
+
+function price_a()
+{
+       if (!($f=fopen("objednavka.js","r")))
+               fatal("Nepodaøilo se naèíst seznam dostupného zbo¾í");
+       $r=array();
+       while (($s=fgets($f,0x1000))) {
+               if (!($s=trim($s)))
+                       break;
+               if (!(ereg("^want_price\\[ *'([^']*)'\\]=([0-9]*);$",$s,$matched)))
+                       continue;
+               $r[$matched[1]]=$matched[2];
+               }
+       fclose($f);
+       return($r);
+}
+
+function title_name($year,$month)
+{
+            if (isset($year) && isset($month)) {
+               $month_a=month_a($year,$month);
+               return("Èíslo ".$month_a["name_full"]);
+               }
+       else if (isset($year))
+               return("Roèník $year");
+       else
+               return("V¹echny roèníky");
+}
+
+function title_month($year,$month)
+{
+  $month_a=month_a($year,$month);
+       return(""
+                       ."<table border=\"0\" width=\"100%\">\n"
+                       ."<tr><td align=\"center\"><table border=\"1\" cellpadding=\"10\">\n"
+                       ."<tr><td align=\"center\">".img($month_a["img"],"titulní stránka ".$month_a["name"])."</td></tr>\n"
+                       ."</table></td></tr>\n"
+                       ."</table>\n"
+                       );
+}
+
+function title_icons_table_month($year,$month,$month_last,$sequential,$has_contents)
+{
+       global $tb_clanek;
+
+       $month_a=month_a($year,$month,$month_last,$sequential);
+       print("<table border=\"0\">"
+                       ."<tr><th align=\"center\">".$month_a["name"]."</th></tr>\n"
+                       ."<tr><td align=\"center\" valign=\"top\">"
+                               .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."</td></tr>\n"
+                       ."<tr><td align=\"left\" valign=\"top\" class=\"nowrap\">\n"
+                               ."&bull;&nbsp;<a href=\"title.php?year=$year&amp;month=$month\">titulní strana</a><br />\n"
+                       );
+       if ($has_contents)
+               print("&bull;&nbsp;<a href=\"obsah.php?year=$year&amp;month=$month\">obsah</a><br />\n");
+       $result=db_query("select name,id from $tb_clanek where year=$year and month=$month order by id");
+       while ($row=mysql_fetch_array($result))
+               print("&bull;&nbsp;<a href=\"clanek.php?year=$year&amp;month=$month&amp;id=".$row["id"]."\">"
+                               .htmlspecialchars(ereg_replace("^.*\\|","",$row["name"]))."</a><br />\n");
+       mysql_free_result($result);
+       print("</td></tr></table>");
+}
+
+function title_icons($year,$month)
+{
+       global $tb_obsah;
+
+       print("<h2>"
+               .(isset($year) ? "<a id=\"year_$year\">" : "")
+               .title_name(&$year,&$month)
+               .(isset($year) ? "</a>" : "")
+               ."</h2>\n");
+
+       $result=db_query("select year,month,month_last,sequential,contents is not null as has_contents from $tb_obsah"
+                       .(isset($year) || isset($month) ? " where" : "")
+                       .(isset($year ) ? " year=$year"   : "")
+                       .(isset($year) && isset($month) ? " and" : "")
+                       .(isset($month) ?   " month=$month" : "")
+                       ." order by year,month");
+       $split=4;
+
+       // $year variable changes its meaning here!!!
+       if (isset($year))
+               $wanted_year=$year;
+       $year=0;
+
+       $fin_split="";
+       $fin_year="";
+       while ($row=mysql_fetch_array($result)) {
+               $row["month"     ]--;
+               $row["month_last"]--;
+
+               if ($row["year"]!=$year) {
+                       print($fin_split.$fin_year);
+
+                       $year=$row["year"];
+                       print(""
+                                       .(!isset($wanted_year) ? "<p><a id=\"year_$year\">&nbsp;</a></p>" : "")
+                                       ."<table border=\"0\" width=\"100%\"><tr><td align=\"center\"><table border=\"1\" cellpadding=\"5\">\n"
+                                       ."<tr><th colspan=\"$split\">Roèník $year (<a href=\"obsah.php?year=$year\">obsahy èísel</a>)</th></tr>\n"
+                                       );
+                       $fin_year="</table></td></tr></table>\n";
+                       $fin_split="";
+                       $month=-1;
+                       $floor=-1;
+                       }
+               while ($floor<floor($row["month"]/$split)) {
+                       print($fin_split."<tr>");
+                       $fin_split="</tr>\n";
+                       $floor++;
+                       $month=$floor*$split-1;
+                       }
+               while ($month+1<$row["month"]) {
+                       print("<td></td>");
+                       $month++;
+                       }
+               print("<td align=\"center\" valign=\"top\""
+                               .($row["month_last"]!=$row["month"] ? " colspan=\"".($row["month_last"]+1-$row["month"])."\"" : "")
+                               .">");
+               title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"],$row["has_contents"]);
+               print("</td>\n");
+               $month=$row["month_last"];
+               }
+       mysql_free_result($result);
+       print($fin_split.$fin_year);
+}
+
+function title($year,$month)
+{
+       if (isset($year) && isset($month))
+               return(title_month( $year, $month));
+       else
+               return(title_icons(&$year,&$month));
+}
+
+function image_supported($mime)
+{
+       global $HTTP_SERVER_VARS;
+
+       if (!isset($HTTP_SERVER_VARS["HTTP_ACCEPT"]))
+               return(false);
+       $exp=explode(",",$HTTP_SERVER_VARS["HTTP_ACCEPT"]);
+       while (($s=array_shift($exp))) {
+               $s=trim(ereg_replace(";.*","",$s));
+               if ($s==$mime)
+                       return(true);
+               }
+       return(false);
+}
+
+// PHP dirname() is broken: ("/1/2/3"=>"/1/2", "/1"->"/")
+function dirnameslashed($filename)
+{
+       $r=dirname($filename);
+       if (substr($r,-1)!="/")
+               $r.="/";
+       return($r);
+}
+
+function usersize($size)
+{
+       $suffix_a=array("","k","M","G","T");
+       while ($size>=1000 && sizeof($suffix_a)>=2) {
+               $size/=1000;
+               array_shift($suffix_a);
+               }
+       return(round($size)." ".$suffix_a[0]."B");
+}
+
+function data_href($filename,$text,$details="")
+{
+       return("<a href=\"$filename\">$text (".usersize(filesize($filename))."$details)</a>");
+}
+
+function img_href($filename,$text)
+{
+       list($width,$height)=getimagesize($filename);
+       return(data_href($filename,$text,", ${width}x${height} bodù"));
+}
+
+function print_pdf_layout($name,$base)
+{
+       global $energie_base;
+
+       $imgfmt=(image_supported("image/png") ? "png" : "gif");
+       ?>
+<p>Shodný <?php print($name); ?> je dostupný ve dvou rùzných formátech souboru. V&nbsp;pøípadì,
+¾e nemáte/nechcete instalovat
+<a href="http://www.adobe.com/products/acrobat/readstep.html">Adobe Acrobat Reader</a>,
+zvolte prosím druhou mo¾nost:</p>
+
+<table border="0">
+<tr><td><table border="0" cellpadding="1" style="border: ridge;">
+<tr><td align="center"><?php
+       print(img("${base}s.$imgfmt",ucfirst($name)));
+?></td></tr></table></td>
+<td valign="top"><ul>
+
+<li>
+<table border="0">
+<tr><td><?php print("<a href=\"$base.pdf\">".img($energie_base."img/adobe-pdficon-alpha.".(image_supported("image/png") ? "png" : "gif"),
+                       "Adobe PDF")."</a>"); ?></td>
+       <td><?php print(data_href("$base.pdf","Dokument PDF")); ?></td>
+       </tr>
+</table>
+<blockquote>
+<table border="0">
+<tr><td><a href="http://www.adobe.com/products/acrobat/readstep.html"><?php
+       print(img($energie_base."img/adobe-getacro.".(image_supported("image/png") ? "png" : "gif"),"Get Adobe Acrobat Reader"));
+       ?></a></td>
+       <td class="smaller">Soubor je ve formátu <span class="italic">Adobe Acrobat</span>,
+       pro jeho pøeètení si prosím nainstalujte
+       <a href="http://www.adobe.com/products/acrobat/readstep.html">Adobe Acrobat Reader</a>.</td>
+       </tr>
+</table>
+</blockquote>
+</li>
+
+<li>
+<?php print(img_href("$base.$imgfmt","Obrázkový formát ".strtoupper($imgfmt))); ?>
+</li>
+
+</ul></td></tr></table>
+<?php
+}
+
+function format_fields_to_text($title="",$pfx="")
+{
+       global $HTTP_POST_VARS;
+       $fields=array(
+                       "Název"  ,"name",
+                       "Adresa" ,"adresa",
+                       "Ulice"  ,"ulice",
+                       "Mìsto"  ,"mesto",
+                       "PSÈ"    ,"psc",
+                       "IÈO"    ,"ico",
+                       "DIÈ"    ,"dic",
+                       "Kontakt","contact",
+                       "Tel"    ,"tel",
+                       "Fax"    ,"fax",
+                       "Poèet"  ,"pocet",
+                       "e-mail" ,"mail",
+                       );
+       $bools=array(
+                       "Doklad" ,"doklad",
+                       );
+       $texts=array(
+                       "Text inzerátu","text",
+                       "Jiné sdìlení" ,"comments",
+                       );
+
+       $r="";
+       $tab=($title=="" ? "" : "\t");
+       while ($fields) {
+               $pretty=array_shift($fields);
+               $var=$pfx.array_shift($fields);
+               if (!isset($HTTP_POST_VARS[$var]))
+                       continue;
+               if (""==($value=trim($HTTP_POST_VARS[$var])))
+                       continue;
+               $r.="$tab$pretty:\t$value\n";
+               }
+       while ($bools) {
+               $pretty=array_shift($bools);
+               $var=$pfx.array_shift($bools);
+               if (!isset($HTTP_POST_VARS[$var]))
+                       continue;
+               $r.="$tab$pretty:\t".($HTTP_POST_VARS[$var] ? "ANO" : "NE")."\n";
+               }
+       while ($texts) {
+               $pretty=array_shift($texts);
+               $var=$pfx.array_shift($texts);
+               if (!isset($HTTP_POST_VARS[$var]))
+                       continue;
+               if (""==($value=trim(ereg_replace("[\r\n]+","\n",$HTTP_POST_VARS[$var]))))
+                       continue;
+               $r.="$tab$pretty:".ereg_replace("\n","\\0\t","\n".$value)."\n";
+               }
+       if ($r!="" && $title!="")
+               $r="$title\n".$r;
+       return($r);
+}
+
+function stamp_line()
+{
+       return("stamp:\t".date("r")."\n");
+}
+
+function return_back($what)
+{
+       global $have_js;
+
+       return(""
+                       .(!$have_js ? "" : "<input type=\"button\" value=\"")
+                       .$what
+                       .(!$have_js ? " (tlaèítkem "
+                                                       ."&quot;<span class=\"quote\">Zpìt</span>&quot; èi "
+                                                       ."&quot;<span class=\"quote\">Back</span>&quot; prohlí¾eèe)"
+                                       : "\" onclick=\"history.back()\" />")
+                       );
+}
+
+// Data acquision error checking:
+function datacheck_fail()
+{
+       print("<p>Nyní se prosím ".return_back("vra»te zpìt")
+                       ." na pøedchozí stránku a chybu zadaných dat opravte.</p>\n");
+       footer();
+}
+
+function mail_data($title,$data)
+{
+       global $admin_mail,$mail_to;
+
+       // 5th mail argument is supported from PHP-4.0.5
+       return (!mail($mail_to,"EnergieWeb: $title",$data,
+"From: EnergieWeb <$admin_mail>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=iso-8859-2
+Content-Disposition: inline
+Content-Transfer-Encoding: 8bit
+"));
+}
+
+function gsm_row($name,$value)
+{
+       return("<tr><td align=\"left\">$name</td>"
+                       ."<td align=\"right\">".($value=="" ? "neuvádìjte" : $value)."</td>"
+                       ."</tr>\n");
+}
+
+function gsm_table($total,$varsym)
+{
+       global $firma_ucet,$firma_konstsym,$firma_specsym;
+
+       return("<blockquote><table border=\"1\" cellpadding=\"5\">\n"
+                       ."<tr><th>polo¾ka</th><th>bankovní pøíkaz</th></tr>\n"
+                       .gsm_row("Èíslo úètu",$firma_ucet)
+                       .gsm_row("Èástka",sprintf("%.2f",$total))
+                       .gsm_row("Konstantní symbol",$firma_konstsym)
+                       .gsm_row("Variabilní symbol",$varsym)
+                       .gsm_row("Specifický symbol",$firma_specsym)
+                       ."</table></blockquote>\n"
+                       );
+}
+
+function return_to_homepage()
+{
+       global $HTTP_SERVER_VARS;
+
+       return("<p>Nyní se mù¾ete vrátit na <a href=\"".dirnameslashed($HTTP_SERVER_VARS["SCRIPT_NAME"])."\">úvodní stránku</a>.</p>\n");
+}
+
+function input_text($name,$size,$default_value="",$addons="")
+{
+       $r="<input type=\"text\" name=\"$name\" size=\"$size\"";
+       $value=(isset($GLOBALS[$name]) ? $GLOBALS[$name] : $default_value);
+       if (""!=$value)
+               $r.=" value=\"".htmlspecialchars($value)."\"";
+       $r.=$addons." />";
+       return($r);
+}
+
+function form_charset()
+{
+       // CSacek-2.1.9+ required (mod_czech support dropped!)
+       // We MUST have input coded in "iso-8859-2" as we use
+       // "csacekRecodeInput Off", CSacek otherwise tries to recode input but CSacek
+       // _cannot_ know the encoding used by the client (moreover it IGNORES POST
+       // data MIME type, even if provided by Lynx 2.8.4dev.11, Mozilla 1.0.0
+       // doesn't provide anything).
+       // "iso-8859-2" should be replaced by $HTTP_SERVER_VARS["HTTP_X_CLIENT_CHARSET"]
+       // and "csacekRecodeInput On"(default) when CSacek fixes support of "utf-8"
+       // input-decoding, details in my mail <20020620134930.GA18761@short.ucw.cz>.
+
+       return('enctype="application/x-www-form-urlencoded" accept-charset="iso-8859-2"');
+}
+
+function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
+{
+       global $have_js,$text,$doklad;
+
+       $addons=(!$readonly ? "" : " readonly=\"readonly\"");
+       ?>
+<blockquote>
+<form action="inzerat-submit.php<?php print($have_js); ?>" method="post" <?php print(form_charset()); ?>>
+<table border="1" width="100%" cellpadding="5">
+<tr><td align="center"><table border="0">
+       <tr><td align="left" class="tab-head">Text inzerátu</td></tr>
+       <tr><td align="center"><?php
+                       print("<textarea name=\"text\" rows=\"7\" cols=\"60\""
+                                       .($readonly ? "" : " onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")
+                                       .$addons.">"
+                                       .(!isset($text) ? "" : htmlspecialchars(trim($text)))
+                                       ."</textarea>");
+                       ?></td></tr>
+       <?php
+               if ($have_js || $total!="") {
+                       ?>
+               <tr><td colspan="3"><hr /></td></tr>
+               <tr><td colspan="3" id="celkova_cena">Celková cena:
+                               <input type="text" name="total" value="<?php
+                                               print(htmlspecialchars($total));
+                                               ?>" size="8" readonly="readonly" /></td></tr>
+                       <?php
+                       }
+       ?>
+       </table></td></tr>
+<tr><td align="left"><table border ="0" width="100%">
+       <tr><td>Název firmy / Jméno:</td ><td colspan="3"><?php print(input_text("name"  ,60,"",$addons)); ?></td></tr>
+       <tr><td>Úplná adresa:</td        ><td colspan="3"><?php print(input_text("adresa",60,"",$addons)); ?></td></tr>
+       <tr><td>Telefon:</td             ><td colspan="3"><?php print(input_text("tel"   ,25,"",$addons)); ?></td></tr>
+       <tr><td>IÈO:</td                 ><td            ><?php print(input_text("ico"   ,20,"",$addons)); ?></td>
+                       <td>DIÈ</td                  ><td            ><?php print(input_text("dic"   ,20,"",$addons)); ?></td></tr>
+       <tr><td id="danovy_doklad"
+              >Zaslat daòový doklad?</td><td colspan="3"><input type="checkbox" name="doklad"<?php
+                       print(""
+                                       // some hacks as "readonly" not supported for "checkbox"es (->"disabled" for them)
+                                       .(!($have_js || $readonly) ? "" : " onclick=\"sum_total(this)\"")
+                                       .(!($have_js || $readonly) ? "" : " disabled=\"disabled\"")
+                                       .(!isset($doklad) ? "" : " checked=\"checked\"")
+                                       .ereg_replace(" readonly=\"readonly\"","",$addons)." />");
+                       ?></td></tr>
+       <tr><td id="pocet_zverejneni"
+              >Poèet zveøejnìní:</td    ><td            ><?php print(input_text("pocet",5,1,
+                                       $addons." onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")); ?></td>
+                       <td>e-mail:</td              ><td            ><?php print(input_text("mail",40,"",$addons)); ?></td></tr>
+       </table></td></tr>
+<tr><td align="center" id="submit_button"><?php
+               print("<input type=\"submit\" name=\"$submit_name\" value=\"".htmlspecialchars($submit_value)."\""
+                               .(!($have_js || $readonly) ? "" : " onclick=\"return(validate(this.form))\"")
+                               ." />");
+               ?></td></tr>
+</table></form>
+</blockquote>
+<?php
+}
+
+function footer_img($url,$text,$size)
 {
-       $r=$c="";
-       foreach(preg_split('//', $url, -1, PREG_SPLIT_NO_EMPTY) as $c)
-               if (ereg("[a-zA-Z0-9]",$c))
-                       $r.=$c;
-               else
-                       $r.=sprintf("%%%02X",ord($c));
+       global $footer_LOCAL;
+       if (!isset($footer_LOCAL))
+               return("<img src=\"$url\" $size alt=\"$text\" title=\"$text\" />");
+       else
+               return($text);
+}
+
+function a_href($url,$contents)
+{
+       global $have_ent,$energie_base;
+
+       $r="<a href=\"";
+       $urlent=htmlspecialchars($url);
+            if ($url==$urlent)
+               $r.=$url;
+       else if (!ereg("^[a-z]+://",$url))      // $url is our resource
+               $r.=$urlent;
+       else if (isset($have_ent) && !$have_ent)        // non-ent client
+               $r.=$url;
+       else if ($have_ent) // ent client
+               $r.=$urlent;
+       else // unknown client, htmlspecialchars() should not be needed here
+               $r.=htmlspecialchars($energie_base."redirect.php?location=".urlencode($url));
+       $r.="\">$contents</a>";
        return($r);
 }
 
-function footer()
+function footer($delimit=true)
 {
-       global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS;
+       // deadlock prevention:
+       global $footer_passed;
+       if (isset($footer_passed))
+               exit();
+       $footer_passed=true;
+
+       global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS,$energie_base;
+       if ($delimit)
+               print("<p>&nbsp;</p>\n");
+       $uri="uri=".urlencode("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
        ?>
 <hr />
 <table border="0" width="100%">
-<tr><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><a
-       href="http://validator.w3.org/check/referer"><img src="http://www.w3.org/Icons/valid-xhtml10"
-               style="border:0;width:88px;height:31px" width="88" height="31" alt="Valid XHTML 1.0!" /></a><a
-       href="http://jigsaw.w3.org/css-validator/validator?warning=2&amp;profile=css2&amp;uri=<?php
-               print(addpercents("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]));
-               ?>"><img src="http://jigsaw.w3.org/css-validator/images/vcss"
-               style="border:0;width:88px;height:31px" width="88" height="31" alt="Valid CSS!" /></a></td></tr>
+<tr class="footer"><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><?php
+                       print(""
+                                       .a_href("http://validator.w3.org/check?$uri",
+                                                       img($energie_base."img/valid-xhtml11.".(image_supported("image/png") ? "png" : "gif"),"Valid XHTML 1.1!"))
+                                       .a_href("http://jigsaw.w3.org/css-validator/validator?warning=2&profile=css2&$uri",
+                                                       img($energie_base."img/vcss."         .(image_supported("image/png") ? "png" : "gif"),"Valid CSS!"))
+                                       // missing trailing '/' is required by http://www.w3.org/Style/CSS/Buttons/Menu #<li> 4
+                                       .a_href("http://www.w3.org/Style/CSS/Buttons",'<span style="background-color: #ffcc66;">'
+                                                       .img($energie_base."img/mwcts."        .(image_supported("image/png") ? "png" : "gif"),"Made with CSS").'</span>')
+                                       );
+                       ?></td></tr>
 </table>
 </body></html>
-       <?php
+<?php
+       exit();
+}
+
+// Stolen from: php-manual.html#function.header
+function no_cache()
+{
+       header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");          // Date in the past
+       header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
+       header("Cache-Control: no-cache, must-revalidate");        // HTTP/1.1
+       header("Pragma: no-cache");                                // HTTP/1.0
 }
 
-       header("Content-type: text/html; charset=iso-8859-2");
+function heading($title=true,$indexme=true)
+{
+       global $msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
+
+       if (isset($heading_done))
+               return;
+       $heading_done=true;
+
+       // $HTTP_SERVER_VARS["CLIENT_CHARSET"] ignored (mod_czech support dropped!)
+       $client_charset=(isset($force_charset) ? $force_charset : "iso-8859-2");
+       header("Content-type: text/html; charset=$client_charset");
+       header("Content-Style-Type: text/css");
+       if (!isset($msie_major) || $msie_major>=4) {
+               print('<?xml version="1.0" encoding="'.$client_charset.'"?>'."\n");
+               }
 ?>
-<?xml version="1.0" encoding="iso-8859-2"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
-<head><title>Energie &amp; peníze<?php
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
+<head><?php
+       print("<title>$title_prefix");
        if (isset($title_tail))
-               print(": $title_tail");
-?></title>
-<style type="text/css"><!--
-.cvs-id { font-family: monospace; }<?php
-       if (isset($head_css))
-               print($head_css);
-       print("--></style>\n");
+               print(": ".htmlspecialchars($title_tail));
+       print("</title>\n");
+       if ($have_css) {
+?><style type="text/css"><!--
+.cvs-id   { font-family: monospace; }
+.error    { color: red;   background-color: transparent; }
+.quote    { font-family: monospace; }
+.nowrap   { white-space: nowrap; }
+.centered { text-align: center; }
+.tab-bold { font-weight: bold; }
+.tab-head { font-weight: bold; color: yellow; background-color: transparent; }
+body {
+               background-color: black;
+               color: white;
+               }
+:link    { color: aqua;   background-color: transparent; }
+:visited { color: teal;   background-color: transparent; }
+h1,h2    { color: yellow; background-color: transparent; }
+.footer img { vertical-align: middle; }
+<?php
+               if (isset($head_css))
+                       print(trim($head_css)."\n");
+               print("--></style>\n");
+               }
+       print('<meta name="robots" content="'.($indexme ? "" : "no" ).'index,follow" />'."\n");
        if (isset($head))
                print($head);
+       print("</head><body");
+       if (isset($mozilla_major) && $mozilla_major==4)
+               print(" bgcolor=\"black\" text=\"white\" link=\"aqua\" vlink=\"teal\"");
+       print(">\n");
+       if ($title)
+               print("<h1 class=\"centered\"><a href=\"/\">"
+                               .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze")
+                               ."</a></h1>\n");
+}
 ?>
-</head><body>