<form>s: +accept-charset="iso-8859-2"
[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 form_charset()
569 {
570         // CSacek-2.1.9+ required (mod_czech support dropped!)
571         // We MUST have input coded in "iso-8859-2" as we use
572         // "csacekRecodeInput Off", CSacek otherwise tries to recode input but CSacek
573         // _cannot_ know the encoding used by the client (moreover it IGNORES POST
574         // data MIME type, even if provided by Lynx 2.8.4dev.11, Mozilla 1.0.0
575         // doesn't provide anything).
576         // "iso-8859-2" should be replaced by $HTTP_SERVER_VARS["HTTP_X_CLIENT_CHARSET"]
577         // and "csacekRecodeInput On"(default) when CSacek fixes support of "utf-8"
578         // input-decoding, details in my mail <20020620134930.GA18761@short.ucw.cz>.
579
580         return('enctype="application/x-www-form-urlencoded" accept-charset="iso-8859-2"');
581 }
582
583 function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
584 {
585         global $have_js,$text,$doklad;
586
587         $addons=(!$readonly ? "" : " readonly=\"readonly\"");
588         ?>
589 <blockquote>
590 <form action="inzerat-submit.php<?php print($have_js); ?>" method="post" <?php print(form_charset()); ?>>
591 <table border="1" width="100%" cellpadding="5">
592 <tr><td align="center"><table border="0">
593         <tr><td align="left" class="tab-head">Text inzerátu</td></tr>
594         <tr><td align="center"><?php
595                         print("<textarea name=\"text\" rows=\"7\" cols=\"60\""
596                                         .($readonly ? "" : " onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")
597                                         .$addons.">"
598                                         .(!isset($text) ? "" : htmlspecialchars(trim($text)))
599                                         ."</textarea>");
600                         ?></td></tr>
601         <?php
602                 if ($have_js || $total!="") {
603                         ?>
604                 <tr><td colspan="3"><hr /></td></tr>
605                 <tr><td colspan="3" id="celkova_cena">Celková cena:
606                                 <input type="text" name="total" value="<?php
607                                                 print(htmlspecialchars($total));
608                                                 ?>" size="8" readonly="readonly" /></td></tr>
609                         <?php
610                         }
611         ?>
612         </table></td></tr>
613 <tr><td align="left"><table border ="0" width="100%">
614         <tr><td>Název firmy / Jméno:</td ><td colspan="3"><?php print(input_text("name"  ,60,"",$addons)); ?></td></tr>
615         <tr><td>Úplná adresa:</td        ><td colspan="3"><?php print(input_text("adresa",60,"",$addons)); ?></td></tr>
616         <tr><td>Telefon:</td             ><td colspan="3"><?php print(input_text("tel"   ,25,"",$addons)); ?></td></tr>
617         <tr><td>IÈO:</td                 ><td            ><?php print(input_text("ico"   ,20,"",$addons)); ?></td>
618                         <td>DIÈ</td                  ><td            ><?php print(input_text("dic"   ,20,"",$addons)); ?></td></tr>
619         <tr><td id="danovy_doklad"
620                >Zaslat daòový doklad?</td><td colspan="3"><input type="checkbox" name="doklad"<?php
621                         print(""
622                                         // some hacks as "readonly" not supported for "checkbox"es (->"disabled" for them)
623                                         .($readonly ? "" : " onclick=\"sum_total(this)\"")
624                                         .(!($have_js || $readonly) ? "" : " disabled=\"disabled\"")
625                                         .(!isset($doklad) ? "" : " checked=\"checked\"")
626                                         .ereg_replace(" readonly=\"readonly\"","",$addons)." />");
627                         ?></td></tr>
628         <tr><td id="pocet_zverejneni"
629                >Poèet zveøejnìní:</td    ><td            ><?php print(input_text("pocet",5,1,
630                                         $addons." onkeyup=\"sum_total(this)\" onchange=\"sum_total(this)\"")); ?></td>
631                         <td>e-mail:</td              ><td            ><?php print(input_text("mail",40,"",$addons)); ?></td></tr>
632         </table></td></tr>
633 <tr><td align="center" id="submit_button"><?php
634                 print("<input type=\"submit\" name=\"$submit_name\" value=\"".htmlspecialchars($submit_value)."\""
635                                 ." onclick=\"return(validate(this.form))\" />");
636                 ?></td></tr>
637 </table></form>
638 </blockquote>
639 <?php
640 }
641
642 function footer_img($url,$text,$size)
643 {
644         global $footer_LOCAL;
645         if (!isset($footer_LOCAL))
646                 return("<img src=\"$url\" $size alt=\"$text\" title=\"$text\" />");
647         else
648                 return($text);
649 }
650
651 function a_href($url,$contents)
652 {
653         global $have_ent,$energie_base;
654
655         $r="<a href=\"";
656         $urlent=htmlspecialchars($url);
657              if ($url==$urlent)
658                 $r.=$url;
659         else if (!ereg("^[a-z]+://",$url))      // $url is our resource
660                 $r.=$urlent;
661         else if (isset($have_ent) && !$have_ent)        // non-ent client
662                 $r.=$url;
663         else if ($have_ent) // ent client
664                 $r.=$urlent;
665         else // unknown client, htmlspecialchars() should not be needed here
666                 $r.=htmlspecialchars($energie_base."redirect.php?location=".urlencode($url));
667         $r.="\">$contents</a>";
668         return($r);
669 }
670
671 function footer($delimit=true)
672 {
673         // deadlock prevention:
674         global $footer_passed;
675         if (isset($footer_passed))
676                 exit();
677         $footer_passed=true;
678
679         global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS,$energie_base;
680         if ($delimit)
681                 print("<p>&nbsp;</p>\n");
682         $uri="uri=".urlencode("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
683         ?>
684 <hr />
685 <table border="0" width="100%">
686 <tr class="footer"><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><?php
687                         print(""
688                                         .a_href("http://validator.w3.org/check?$uri",
689                                                         img($energie_base."img/valid-xhtml11.".(image_supported("image/png") ? "png" : "gif"),"Valid XHTML 1.1!"))
690                                         .a_href("http://jigsaw.w3.org/css-validator/validator?warning=2&profile=css2&$uri",
691                                                         img($energie_base."img/vcss."         .(image_supported("image/png") ? "png" : "gif"),"Valid CSS!"))
692                                         // missing trailing '/' is required by http://www.w3.org/Style/CSS/Buttons/Menu #<li> 4
693                                         .a_href("http://www.w3.org/Style/CSS/Buttons",'<span style="background-color: #ffcc66;">'
694                                                         .img($energie_base."img/mwcts."        .(image_supported("image/png") ? "png" : "gif"),"Made with CSS").'</span>')
695                                         );
696                         ?></td></tr>
697 </table>
698 </body></html>
699 <?php
700         exit();
701 }
702
703 // Stolen from: php-manual.html#function.header
704 function no_cache()
705 {
706         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");          // Date in the past
707         header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
708         header("Cache-Control: no-cache, must-revalidate");        // HTTP/1.1
709         header("Pragma: no-cache");                                // HTTP/1.0
710 }
711
712 function heading($title=false)
713 {
714         global $msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
715
716         if (isset($heading_done))
717                 return;
718         $heading_done=true;
719
720         // $HTTP_SERVER_VARS["CLIENT_CHARSET"] ignored (mod_czech support dropped!)
721         $client_charset=(isset($force_charset) ? $force_charset : "iso-8859-2");
722         header("Content-type: text/html; charset=$client_charset");
723         header("Content-Style-Type: text/css");
724         if (!isset($msie_major) || $msie_major>=4) {
725                 print('<?xml version="1.0" encoding="'.$client_charset.'"?>'."\n");
726                 }
727 ?>
728 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
729 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
730 <head><?php
731         print("<title>$title_prefix");
732         if (isset($title_tail))
733                 print(": ".htmlspecialchars($title_tail));
734         print("</title>\n");
735         if ($have_css) {
736 ?><style type="text/css"><!--
737 .cvs-id   { font-family: monospace; }
738 .error    { color: red;   background-color: transparent; }
739 .quote    { font-family: monospace; }
740 .nowrap   { white-space: nowrap; }
741 .centered { text-align: center; }
742 .tab-bold { font-weight: bold; }
743 .tab-head { font-weight: bold; color: yellow; background-color: transparent; }
744 body {
745                 background-color: black;
746                 color: white;
747                 }
748 :link    { color: aqua;   background-color: transparent; }
749 :visited { color: teal;   background-color: transparent; }
750 h1,h2    { color: yellow; background-color: transparent; }
751 .footer img { vertical-align: middle; }
752 <?php
753                 if (isset($head_css))
754                         print(trim($head_css)."\n");
755                 print("--></style>\n");
756                 }
757         if (isset($head))
758                 print($head);
759         print("</head><body");
760         if (isset($mozilla_major) && $mozilla_major==4)
761                 print(" bgcolor=\"black\" text=\"white\" link=\"aqua\" vlink=\"teal\"");
762         print(">\n");
763         if ($title)
764                 print("<h1 class=\"centered\">"
765                                 .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze")
766                                 ."</h1>\n");
767 }
768 ?>