Fixed XML compliance for $have_ent-detection
[www.energie.vellum.cz.git] / common.php
1 <?php // $Id$
2
3         error_reporting(E_ALL);
4         setlocale(LC_ALL,"cs_CZ.iso-8859-2");
5
6         include("config.php");
7
8         // $viewcvs prepared by "config.php"
9         if ($viewcvs==$HTTP_SERVER_VARS["SCRIPT_NAME"])
10                 unset($viewcvs);
11         $cvs_id_split=split(" ",$cvs_id);
12         if (count($cvs_id_split)==8) {
13                 $cvs_id_split[2]=""
14                                 ."<a href=\"".ereg_replace("/viewcvs/","\\0~checkout~/",$viewcvs)."?rev=".$cvs_id_split[2]."\">"
15                                 .$cvs_id_split[2]."</a>";
16                 $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
17                 $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@$cvs_mailhost\">".$cvs_id_split[5]."</a>";
18                 }
19         $cvs_id_html=join(" ",$cvs_id_split);
20
21         if (!isset($head))
22                 $head="";
23         if (!isset($energie_base))
24                 $energie_base="";
25
26         unset($have_ent);
27         if (isset($HTTP_GET_VARS[    "have_ent"]))
28                 $have_ent=true;
29         if (isset($HTTP_GET_VARS["amp;have_ent"]))
30                 $have_ent=false;
31         if ((!isset($detect_ent) || $detect_ent) && !isset($have_ent) && $HTTP_SERVER_VARS["REQUEST_METHOD"]=="GET")
32                 $head.='<meta http-equiv="Refresh" content="0; URL='
33                                 .htmlspecialchars("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["PHP_SELF"]
34                                                 ."?".(strlen($HTTP_SERVER_VARS["QUERY_STRING"]) ? $HTTP_SERVER_VARS["QUERY_STRING"] : "detect_ent_glue=1")
35                                                                 ."&have_ent=detect")
36                                 .'" />'."\n";
37         fixampvars();
38
39         $have_js=(isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"])
40                         ? "?have_js=1" : "");
41         if (isset($detect_js) && !$have_js)
42                 $head.='<script type="text/javascript" src="'.$energie_base.'have_js.js"></script>'."\n";
43
44         $user_agent=(!isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ? "" : $HTTP_SERVER_VARS["HTTP_USER_AGENT"]);
45         if (ereg("[[:<:]]MSIE ([0-9]+)\\.",$user_agent,$msie_major_a))
46                 $msie_major=$msie_major_a[1];
47         else if (ereg("[[:<:]]Mozilla/([0-9]+)\\.",$user_agent,$mozilla_major_a))
48                 $mozilla_major=$mozilla_major_a[1];
49
50         $have_style=!isset($mozilla_major) || $mozilla_major!=4;
51         $have_css=true; // doesn't hurt anybody AFAIK
52
53 function fixampvars()
54 {
55         $ars=array("HTTP_GET_VARS","HTTP_POST_VARS");
56         foreach ($ars as $ar) {
57                 foreach ($GLOBALS[$ar] as $key=>$val) {
58                         if (substr($key,0,4)!="amp;")
59                                 continue;
60                         unset($GLOBALS[$ar][$key]);
61                         $GLOBALS[$ar][substr($key,4)]=$val;
62                         }
63                 }
64 }
65
66 function fatal($msg="UNKNOWN")
67 {
68         global $admin_mail;
69
70         heading(false/*title*/); // it is always safe
71         print("\n<p>&nbsp;<br />&nbsp;</p><hr /><h1 class=\"error\">Nastala chyba pøi zpracování: $msg!</h1>\n"
72                         ."<p>Mù¾ete tento problém nahlásit <a href=\"mailto:$admin_mail\">správci tohoto webu</a>.</p>\n");
73         footer();
74 }
75
76 function prepvar($name,$regex=".*",$require=true)
77 {
78         global $HTTP_GET_VARS,$HTTP_POST_VARS;
79
80              if (isset($HTTP_GET_VARS[$name]))
81                 $v=$HTTP_GET_VARS[$name];
82         else if (isset($HTTP_POST_VARS[$name]))
83                 $v=$HTTP_POST_VARS[$name];
84         else
85                 unset($v);
86
87         $name_html="Parametr <span class=\"quote\">".htmlspecialchars($name)."</span>";
88
89         $regex="^$regex\$";
90         if (isset($v) && !ereg($regex,$v))
91                 fatal("$name_html nevyhovuje po¾adovanému regexu <span class=\"quote\">".htmlspecialchars($regex)."</span>");
92         if (!isset($v) && $require)
93                 fatal("$name_html je vy¾adován");
94
95         if (!isset($v))
96                 return(0);
97
98         $GLOBALS[$name]=$v;
99         return($v);
100 }
101
102 function db_connect()
103 {
104         global $db_host,$db_user,$db_pwd,$db_name;
105         global $db_link;
106
107         if (isset($db_link))
108                 return;
109         if (!($db_link=mysql_connect($db_host,$db_user,$db_pwd)))
110                 fatal("MySQL connect: ".mysql_error());
111         if (!mysql_select_db($db_name,$db_link))
112                 fatal("MySQL database select: ".mysql_error());
113 }
114
115 function db_query($query)
116 {
117         global $db_link;
118
119         db_connect();
120         if (!($r=mysql_query($query,$db_link)))
121                 fatal("MySQL query \"$query\": ".mysql_error());
122         return($r);
123 }
124
125 function db_row($query) // pure indexes
126 {
127         $q=db_query($query);
128         $r=mysql_fetch_row($q);
129         mysql_free_result($q);
130         return($r);
131 }
132
133 function db_array($query) // field-names associative
134 {
135         $q=db_query($query);
136         $r=mysql_fetch_array($q);
137         mysql_free_result($q);
138         return($r);
139 }
140
141 function db_item($query)
142 {
143         $row=db_row($query);
144         return($row[0]);
145 }
146
147 function num2greg($num)
148 {
149         $r="";
150         $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M");
151         krsort($vals,SORT_NUMERIC);
152         foreach($vals as $val=>$sym) {
153                 while ($num<0 && $num+$val<-$num) {
154                         $r=substr($r,0,-1).$sym.substr($r,-1,1);
155                         $num+=$val;
156                         }
157                 while (10*$num>=8*$val+(substr($val,0,1)=="1")) {
158                         $r=$r.$sym;
159                         $num-=$val;
160                         }
161                 }
162         return($r);
163 }
164
165 function month_a($year,$month,$month_last=0,$sequential=0)
166 {
167         global $tb_obsah,$obsah_year_base;
168
169         if (!$month_last || !$sequential)
170                 list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'");
171         $month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last);
172
173         $r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full,
174                         "name"=>"$month"    .($month==$month_last ? "" : "-$month_last")."/$year",
175                         "img" =>"img/eap-$year-${month_full}.jpeg",
176                         "icon"=>"img/eap-$year-${month_full}s.jpeg",
177                         );
178         $r["name_full"]=$r["name"]
179                         ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")"
180                         ." - ".num2greg($year-$obsah_year_base+1).". roèník";
181         return($r);
182 }
183
184 function img_size($width,$height)
185 {
186         global $have_style;
187
188         return(($have_style ? "style=\"border:0;width:${width}px;height:${height}px\"" : "border=\"0\"")
189                         ." width=\"$width\" height=\"$height\"");
190 }
191
192 function img($file,$alt,$attrs="")
193 {
194         list($width,$height)=getimagesize(ereg_replace("\\.mng\$",".gif",$file));
195         $alt=htmlspecialchars($alt);
196         return("<img src=\"$file\" alt=\"$alt\" title=\"$alt\" ".img_size($width,$height)
197                         .($attrs=="" ? "" : " ".$attrs)." />");
198 }
199
200 function gsm_banking()
201 {
202         global $energie_base;
203
204         return(img($energie_base."img/sluzby_bankovni_pggsm.".(image_supported("video/x-mng") ? "mng" : "gif"),
205                         "Paegas GSM banking","class=\"img-align\""));
206 }
207
208 function price_a()
209 {
210         if (!($f=fopen("objednavka.js","r")))
211                 fatal("Nepodaøilo se naèíst seznam dostupného zbo¾í");
212         $r=array();
213         while (($s=fgets($f,0x1000))) {
214                 if (!($s=trim($s)))
215                         break;
216                 if (!(ereg("^want_price\\[ *'([^']*)'\\]=([0-9]*);$",$s,$matched)))
217                         continue;
218                 $r[$matched[1]]=$matched[2];
219                 }
220         fclose($f);
221         return($r);
222 }
223
224 function title_name($year,$month)
225 {
226              if (isset($year) && isset($month)) {
227                 $month_a=month_a($year,$month);
228                 return("Èíslo ".$month_a["name_full"]);
229                 }
230         else if (isset($year))
231                 return("Roèník $year");
232         else
233                 return("V¹echny roèníky");
234 }
235
236 function title_month($year,$month)
237 {
238   $month_a=month_a($year,$month);
239         return(""
240                         ."<table border=\"0\" width=\"100%\">\n"
241                         ."<tr><td align=\"center\"><table border=\"1\" cellpadding=\"10\">\n"
242                         ."<tr><td align=\"center\">".img($month_a["img"],"titulní stránka ".$month_a["name"])."</td></tr>\n"
243                         ."</table></td></tr>\n"
244                         ."</table>\n"
245                         );
246 }
247
248 function title_icons_table_month($year,$month,$month_last,$sequential)
249 {
250         global $tb_clanek;
251
252         $month_a=month_a($year,$month,$month_last,$sequential);
253         print("<table border=\"0\">"
254                         ."<tr><th align=\"center\">".$month_a["name"]."</th></tr>\n"
255                         ."<tr><td align=\"center\" valign=\"top\">"
256                                 .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."</td></tr>\n"
257                         ."<tr><td align=\"left\" valign=\"top\" class=\"nowrap\">\n"
258                                 ."&bull;&nbsp;<a href=\"title.php?year=$year&amp;month=$month\">titulní strana</a><br />\n"
259                                 ."&bull;&nbsp;<a href=\"obsah.php?year=$year&amp;month=$month\">obsah</a><br />\n");
260         $result=db_query("select name,id from $tb_clanek where year=$year and month=$month order by id");
261         while ($row=mysql_fetch_array($result))
262                 print("&bull;&nbsp;<a href=\"clanek.php?year=$year&amp;month=$month&amp;id=".$row["id"]."\">"
263                                 .htmlspecialchars($row["name"])."</a><br />\n");
264         mysql_free_result($result);
265         print("</td></tr></table>");
266 }
267
268 function title_icons($year,$month)
269 {
270         global $tb_obsah;
271
272         print("<h2>"
273                 .(isset($year) ? "<a id=\"year_$year\">" : "")
274                 .title_name(&$year,&$month)
275                 .(isset($year) ? "</a>" : "")
276                 ."</h2>\n");
277
278         $result=db_query("select year,month,month_last,sequential from $tb_obsah"
279                         .(isset($year) || isset($month) ? " where" : "")
280                         .(isset($year ) ? " year=$year"   : "")
281                         .(isset($year) && isset($month) ? " and" : "")
282                         .(isset($month) ?   " month=$month" : "")
283                         ." order by year,month");
284         $split=4;
285
286         // $year variable changes its meaning here!!!
287         if (isset($year))
288                 $wanted_year=$year;
289         $year=0;
290
291         $fin_split="";
292         $fin_year="";
293         while ($row=mysql_fetch_array($result)) {
294                 $row["month"     ]--;
295                 $row["month_last"]--;
296
297                 if ($row["year"]!=$year) {
298                         print($fin_split.$fin_year);
299
300                         $year=$row["year"];
301                         print(""
302                                         .(!isset($wanted_year) ? "<p><a id=\"year_$year\">&nbsp;</a></p>" : "")
303                                         ."<table border=\"0\" width=\"100%\"><tr><td align=\"center\"><table border=\"1\" cellpadding=\"5\">\n"
304                                         ."<tr><th colspan=\"$split\">Roèník $year (<a href=\"obsah.php?year=$year\">obsahy èísel</a>)</th></tr>\n"
305                                         );
306                         $fin_year="</table></td></tr></table>\n";
307                         $fin_split="";
308                         $month=-1;
309                         $floor=-1;
310                         }
311                 while ($floor<floor($row["month"]/$split)) {
312                         print($fin_split."<tr>");
313                         $fin_split="</tr>\n";
314                         $floor++;
315                         $month=$floor*$split-1;
316                         }
317                 while ($month+1<$row["month"]) {
318                         print("<td></td>");
319                         $month++;
320                         }
321                 print("<td align=\"center\" valign=\"top\""
322                                 .($row["month_last"]!=$row["month"] ? " colspan=\"".($row["month_last"]+1-$row["month"])."\"" : "")
323                                 .">");
324                 title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]);
325                 print("</td>\n");
326                 $month=$row["month_last"];
327                 }
328         mysql_free_result($result);
329         print($fin_split.$fin_year);
330 }
331
332 function title($year,$month)
333 {
334         if (isset($year) && isset($month))
335                 return(title_month( $year, $month));
336         else
337                 return(title_icons(&$year,&$month));
338 }
339
340 function image_supported($mime)
341 {
342         global $HTTP_SERVER_VARS;
343
344         if (!isset($HTTP_SERVER_VARS["HTTP_ACCEPT"]))
345                 return(false);
346         $exp=explode(",",$HTTP_SERVER_VARS["HTTP_ACCEPT"]);
347         while (($s=array_shift($exp))) {
348                 $s=trim(ereg_replace(";.*","",$s));
349                 if ($s==$mime)
350                         return(true);
351                 }
352         return(false);
353 }
354
355 // PHP dirname() is broken: ("/1/2/3"=>"/1/2", "/1"->"/")
356 function dirnameslashed($filename)
357 {
358         $r=dirname($filename);
359         if (substr($r,-1)!="/")
360                 $r.="/";
361         return($r);
362 }
363
364 function usersize($size)
365 {
366         $suffix_a=array("","k","M","G","T");
367         while ($size>=1000 && sizeof($suffix_a)>=2) {
368                 $size/=1000;
369                 array_shift($suffix_a);
370                 }
371         return(round($size)." ".$suffix_a[0]."B");
372 }
373
374 function data_href($filename,$text,$details="")
375 {
376         return("<a href=\"$filename\">$text (".usersize(filesize($filename))."$details)</a>");
377 }
378
379 function img_href($filename,$text)
380 {
381         list($width,$height)=getimagesize($filename);
382         return(data_href($filename,$text,", ${width}x${height} bodù"));
383 }
384
385 function print_pdf_layout($name,$base)
386 {
387         global $energie_base;
388
389         $imgfmt=(image_supported("image/png") ? "png" : "gif");
390         ?>
391 <p>Shodný <?php print($name); ?> je dostupný ve dvou rùzných formátech souboru. V&nbsp;pøípadì,
392 ¾e nemáte/nechcete instalovat
393 <a href="http://www.adobe.com/products/acrobat/readstep.html">Adobe Acrobat Reader</a>,
394 zvolte prosím druhou mo¾nost:</p>
395
396 <table border="0">
397 <tr><td><table border="0" cellpadding="1" style="border: ridge;">
398 <tr><td align="center"><?php
399         print(img("${base}s.$imgfmt",ucfirst($name)));
400 ?></td></tr></table></td>
401 <td valign="top"><ul>
402
403 <li>
404 <table border="0">
405 <tr><td><?php print("<a href=\"$base.pdf\">".img($energie_base."img/adobe-pdficon-alpha.".(image_supported("image/png") ? "png" : "gif"),
406                         "Adobe PDF")."</a>"); ?></td>
407         <td><?php print(data_href("$base.pdf","Dokument PDF")); ?></td>
408         </tr>
409 </table>
410 <blockquote>
411 <table border="0">
412 <tr><td><a href="http://www.adobe.com/products/acrobat/readstep.html"><?php
413         print(img($energie_base."img/adobe-getacro.".(image_supported("image/png") ? "png" : "gif"),"Get Adobe Acrobat Reader"));
414         ?></a></td>
415         <td class="smaller">Soubor je ve formátu <span class="italic">Adobe Acrobat</span>,
416         pro jeho pøeètení si prosím nainstalujte
417         <a href="http://www.adobe.com/products/acrobat/readstep.html">Adobe Acrobat Reader</a>.</td>
418         </tr>
419 </table>
420 </blockquote>
421 </li>
422
423 <li>
424 <?php print(img_href("$base.$imgfmt","Obrázkový formát ".strtoupper($imgfmt))); ?>
425 </li>
426
427 </ul></td></tr></table>
428 <?php
429 }
430
431 function format_fields_to_text($title="",$pfx="")
432 {
433         global $HTTP_POST_VARS;
434         $fields=array(
435                         "Název"  ,"name",
436                         "Adresa" ,"adresa",
437                         "Ulice"  ,"ulice",
438                         "Mìsto"  ,"mesto",
439                         "PSÈ"    ,"psc",
440                         "IÈO"    ,"ico",
441                         "DIÈ"    ,"dic",
442                         "Kontakt","contact",
443                         "Tel"    ,"tel",
444                         "Fax"    ,"fax",
445                         "Poèet"  ,"pocet",
446                         "e-mail" ,"mail",
447                         );
448         $bools=array(
449                         "Doklad" ,"doklad",
450                         );
451         $texts=array(
452                         "Text inzerátu","text",
453                         "Jiné sdìlení" ,"comments",
454                         );
455
456         $r="";
457         $tab=($title=="" ? "" : "\t");
458         while ($fields) {
459                 $pretty=array_shift($fields);
460                 $var=$pfx.array_shift($fields);
461                 if (!isset($HTTP_POST_VARS[$var]))
462                         continue;
463                 if (""==($value=trim($HTTP_POST_VARS[$var])))
464                         continue;
465                 $r.="$tab$pretty:\t$value\n";
466                 }
467         while ($bools) {
468                 $pretty=array_shift($bools);
469                 $var=$pfx.array_shift($bools);
470                 if (!isset($HTTP_POST_VARS[$var]))
471                         continue;
472                 $r.="$tab$pretty:\t".($HTTP_POST_VARS[$var] ? "ANO" : "NE")."\n";
473                 }
474         while ($texts) {
475                 $pretty=array_shift($texts);
476                 $var=$pfx.array_shift($texts);
477                 if (!isset($HTTP_POST_VARS[$var]))
478                         continue;
479                 if (""==($value=trim(ereg_replace("[\r\n]+","\n",$HTTP_POST_VARS[$var]))))
480                         continue;
481                 $r.="$tab$pretty:".ereg_replace("\n","\\0\t","\n".$value)."\n";
482                 }
483         if ($r!="" && $title!="")
484                 $r="$title\n".$r;
485         return($r);
486 }
487
488 function stamp_line()
489 {
490         return("stamp:\t".date("r")."\n");
491 }
492
493 function return_back($what)
494 {
495         global $have_js;
496
497         return(""
498                         .(!$have_js ? "" : "<input type=\"button\" value=\"")
499                         .$what
500                         .(!$have_js ? " (tlaèítkem "
501                                                         ."&quot;<span class=\"quote\">Zpìt</span>&quot; èi "
502                                                         ."&quot;<span class=\"quote\">Back</span>&quot; prohlí¾eèe)"
503                                         : "\" onclick=\"history.back()\" />")
504                         );
505 }
506
507 // Data acquision error checking:
508 function datacheck_fail()
509 {
510         print("<p>Nyní se prosím ".return_back("vra»te zpìt")
511                         ." na pøedchozí stránku a chybu zadaných dat opravte.</p>\n");
512         footer();
513 }
514
515 function mail_data($title,$data)
516 {
517         global $admin_mail,$mail_to;
518
519         // 5th mail argument is supported from PHP-4.0.5
520         return (!mail($mail_to,"EnergieWeb: $title",$data,
521 "From: EnergieWeb <$admin_mail>
522 Mime-Version: 1.0
523 Content-Type: text/plain; charset=iso-8859-2
524 Content-Disposition: inline
525 Content-Transfer-Encoding: 8bit
526 "));
527 }
528
529 function gsm_row($name,$value)
530 {
531         return("<tr><td align=\"left\">$name</td>"
532                         ."<td align=\"right\">".($value=="" ? "neuvádìjte" : $value)."</td>"
533                         ."<td align=\"right\">".strtr($value,"/.","#*")."</td></tr>\n");
534 }
535
536 function gsm_table($total,$varsym)
537 {
538         global $firma_ucet,$firma_konstsym,$firma_specsym;
539
540         return("<blockquote><table border=\"1\" cellpadding=\"5\">\n"
541                         ."<tr><th>polo¾ka</th><th>bankovní pøíkaz</th><th>".gsm_banking()."</th></tr>\n"
542                         .gsm_row("Èíslo úètu",$firma_ucet)
543                         .gsm_row("Èástka",sprintf("%.2f",$total))
544                         .gsm_row("Konstantní symbol",$firma_konstsym)
545                         .gsm_row("Variabilní symbol",$varsym)
546                         .gsm_row("Specifický symbol",$firma_specsym)
547                         ."</table></blockquote>\n"
548                         );
549 }
550
551 function return_to_homepage()
552 {
553         global $HTTP_SERVER_VARS;
554
555         return("<p>Nyní se mù¾ete vrátit na <a href=\"".dirnameslashed($HTTP_SERVER_VARS["SCRIPT_NAME"])."\">úvodní stránku</a>.</p>\n");
556 }
557
558 function input_text($name,$size,$default_value="",$addons="")
559 {
560         $r="<input type=\"text\" name=\"$name\" size=\"$size\"";
561         $value=(isset($GLOBALS[$name]) ? $GLOBALS[$name] : $default_value);
562         if (""!=$value)
563                 $r.=" value=\"".htmlspecialchars($value)."\"";
564         $r.=$addons." />";
565         return($r);
566 }
567
568 function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
569 {
570         global $have_js,$text,$doklad;
571
572         $addons=(!$readonly ? "" : " readonly=\"readonly\"");
573         ?>
574 <blockquote>
575 <form action="inzerat-submit.php<?php print($have_js); ?>" method="post">
576 <table border="1" width="100%" cellpadding="5">
577 <tr><td align="center"><table border="0">
578         <tr><td align="left" class="tab-head">Text inzerátu</td></tr>
579         <tr><td align="center"><?php
580                         print("<textarea name=\"text\" rows=\"7\" cols=\"60\""
581                                         .($readonly ? "" : " onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")
582                                         .$addons.">"
583                                         .(!isset($text) ? "" : htmlspecialchars(trim($text)))
584                                         ."</textarea>");
585                         ?></td></tr>
586         <?php
587                 if ($have_js || $total!="") {
588                         ?>
589                 <tr><td colspan="3"><hr /></td></tr>
590                 <tr><td colspan="3" id="celkova_cena">Celková cena:
591                                 <input type="text" name="total" value="<?php
592                                                 print(htmlspecialchars($total));
593                                                 ?>" size="8" readonly="readonly" /></td></tr>
594                         <?php
595                         }
596         ?>
597         </table></td></tr>
598 <tr><td align="left"><table border ="0" width="100%">
599         <tr><td>Název firmy / Jméno:</td ><td colspan="3"><?php print(input_text("name"  ,60,"",$addons)); ?></td></tr>
600         <tr><td>Úplná adresa:</td        ><td colspan="3"><?php print(input_text("adresa",60,"",$addons)); ?></td></tr>
601         <tr><td>Telefon:</td             ><td colspan="3"><?php print(input_text("tel"   ,25,"",$addons)); ?></td></tr>
602         <tr><td>IÈO:</td                 ><td            ><?php print(input_text("ico"   ,20,"",$addons)); ?></td>
603                         <td>DIÈ</td                  ><td            ><?php print(input_text("dic"   ,20,"",$addons)); ?></td></tr>
604         <tr><td id="danovy_doklad"
605                >Zaslat daòový doklad?</td><td colspan="3"><input type="checkbox" name="doklad"<?php
606                         print(""
607                                         // some hacks as "readonly" not supported for "checkbox"es (->"disabled" for them)
608                                         .($readonly ? "" : " onclick=\"sum_total(this)\"")
609                                         .(!($have_js || $readonly) ? "" : " disabled=\"disabled\"")
610                                         .(!isset($doklad) ? "" : " checked=\"checked\"")
611                                         .ereg_replace(" readonly=\"readonly\"","",$addons)." />");
612                         ?></td></tr>
613         <tr><td id="pocet_zverejneni"
614                >Poèet zveøejnìní:</td    ><td            ><?php print(input_text("pocet",5,1,
615                                         $addons." onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")); ?></td>
616                         <td>e-mail:</td              ><td            ><?php print(input_text("mail",40,"",$addons)); ?></td></tr>
617         </table></td></tr>
618 <tr><td align="center" id="submit_button"><?php
619                 print("<input type=\"submit\" name=\"$submit_name\" value=\"".htmlspecialchars($submit_value)."\""
620                                 ." onclick=\"return(validate(this.form))\" />");
621                 ?></td></tr>
622 </table></form>
623 </blockquote>
624 <?php
625 }
626
627 function footer_img($url,$text,$size)
628 {
629         global $footer_LOCAL;
630         if (!isset($footer_LOCAL))
631                 return("<img src=\"$url\" $size alt=\"$text\" title=\"$text\" />");
632         else
633                 return($text);
634 }
635
636 function a_href($url,$contents)
637 {
638         global $have_ent,$energie_base;
639
640         $r="<a href=\"";
641         $urlent=htmlspecialchars($url);
642              if ($url==$urlent)
643                 $r.=$url;
644         else if (!ereg("^[a-z]+://",$url))      // $url is our resource
645                 $r.=$urlent;
646         else if (isset($have_ent) && !$have_ent)        // non-ent client
647                 $r.=$url;
648         else if ($have_ent) // ent client
649                 $r.=$urlent;
650         else // unknown client, htmlspecialchars() should not be needed here
651                 $r.=htmlspecialchars($energie_base."redirect.php?location=".urlencode($url));
652         $r.="\">$contents</a>";
653         return($r);
654 }
655
656 function footer($delimit=true)
657 {
658         // deadlock prevention:
659         global $footer_passed;
660         if (isset($footer_passed))
661                 exit();
662         $footer_passed=true;
663
664         global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS,$energie_base;
665         if ($delimit)
666                 print("<p>&nbsp;</p>\n");
667         $uri="uri=".urlencode("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
668         ?>
669 <hr />
670 <table border="0" width="100%">
671 <tr><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><?php
672                         print(""
673                                         .a_href("http://validator.w3.org/check?$uri",
674                                                         img($energie_base."img/valid-xhtml11.".(image_supported("image/png") ? "png" : "gif"),"Valid XHTML 1.1!"))
675                                         .a_href("http://jigsaw.w3.org/css-validator/validator?warning=2&profile=css2&$uri",
676                                                         img($energie_base."img/vcss."         .(image_supported("image/png") ? "png" : "gif"),"Valid CSS!"))
677                                         );
678                         ?></td></tr>
679 </table>
680 </body></html>
681 <?php
682         exit();
683 }
684
685 // Stolen from: php-manual.html#function.header
686 function no_cache()
687 {
688         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");          // Date in the past
689         header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
690         header("Cache-Control: no-cache, must-revalidate");        // HTTP/1.1
691         header("Pragma: no-cache");                                // HTTP/1.0
692 }
693
694 function heading($title=false)
695 {
696         global $HTTP_SERVER_VARS,$msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
697
698         if (isset($heading_done))
699                 return;
700         $heading_done=true;
701
702         if (isset($force_charset))
703                 $client_charset=$force_charset;
704         else
705                 $client_charset=(!isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "iso-8859-2" : $HTTP_SERVER_VARS["CLIENT_CHARSET"]);
706         // When "CLIENT_CHARSET" is set we MUST NOT explicitely specify our "charset"
707         header("Content-type: text/html".(isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "" : "; charset=$client_charset"));
708         header("Content-Style-Type: text/css");
709         if (!isset($msie_major) || $msie_major>=4) {
710                 print('<?xml version="1.0" encoding="'.$client_charset.'"?>'."\n");
711                 }
712 ?>
713 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
714 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
715 <head><?php
716         print("<title>$title_prefix");
717         if (isset($title_tail))
718                 print(": ".htmlspecialchars($title_tail));
719         print("</title>\n");
720         if ($have_css) {
721 ?><style type="text/css"><!--
722 .cvs-id   { font-family: monospace; }
723 .error    { color: red;   background-color: transparent; }
724 .quote    { font-family: monospace; }
725 .nowrap   { white-space: nowrap; }
726 .centered { text-align: center; }
727 .tab-bold { font-weight: bold; }
728 .tab-head { font-weight: bold; color: yellow; background-color: transparent; }
729 body {
730                 background-color: black;
731                 color: white;
732                 }
733 :link    { color: aqua;   background-color: transparent; }
734 :visited { color: teal;   background-color: transparent; }
735 h1,h2    { color: yellow; background-color: transparent; }
736 <?php
737                 if (isset($head_css))
738                         print(trim($head_css)."\n");
739                 print("--></style>\n");
740                 }
741         if (isset($head))
742                 print($head);
743         print("</head><body");
744         if (isset($mozilla_major) && $mozilla_major==4)
745                 print(" bgcolor=\"black\" text=\"white\" link=\"aqua\" vlink=\"teal\"");
746         print(">\n");
747         if ($title)
748                 print("<h1 class=\"centered\">"
749                                 .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze")
750                                 ."</h1>\n");
751 }
752 ?>