<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?
function JePrechodnyRok ($rok)
{
  return (boolean)
date("L", mktime(0,0,0,1,1,$rok));
}

function
PocetDnu ($mesic, $rok)
{
  return
cal_days_in_month(CAL_GREGORIAN, $mesic, $rok);
}

function
PrvniDen ($mesic, $rok)
{
  
$anglickeporadi = date("w", mktime(0, 0, 0, $mesic, 1, $rok));
  return (
$anglickeporadi==0) ? 7 : $anglickeporadi;
}

function
Bunka ($radek, $sloupec, $PrvniDen, $PocetDnu)
{
  
$dny=Array(1=>"Po", "Út", "St", "Čt", "Pá", "So", "Ne");
  if (
$sloupec==1) return $dny[$radek];
  
$chcivratit = ($sloupec-2)*7 + $radek - $PrvniDen+1;
  if (
$chcivratit<1 || $chcivratit>$PocetDnu) return "&nbsp;"; else return $chcivratit;
}

function
Kalendar ($mesic, $rok)
{
  
$mesice=Array(1=>"leden", "únor", "březen", "duben", "květen", "červen", "červenec", "srpen", "září", "říjen", "listopad", "prosinec");
  
//kontroly
  
if (!is_numeric($mesic)) return "Měsíc musí být číslo!";
  if (!
is_numeric($rok)) return "Rok musí být číslo!";
  if (
$mesic<1 || $mesic>12) return "Měsíc musí být číslo od 1 do 12";
  if (
$rok<1980 || $rok>2050) return "Rok musí být číslo od 1980 do 2050";
  
// zjištění počtu sloupců
  
$PocetDnu = PocetDnu ($mesic, $rok); $PrvniDen = PrvniDen($mesic,$rok);
  
$sloupcu = date("W", mktime(0, 0, 0, $mesic, $PocetDnu-7, $rok)) - date("W", mktime(0, 0, 0, $mesic, 1+7, $rok))+4;
  
// a tabulka
  
echo "<TABLE border=\"1\" style=\"border-collapse: collapse\" width=\"",$sloupcu*30,"\">";
  echo
"<TR><TD colspan=$sloupcu width=\"",$sloupcu*30,"\" align=\"center\">".$mesice[$mesic]."&nbsp;".$rok."</TD></TR>\n";
  for (
$radek=1;$radek<=7;$radek++)
  {
    echo
"<TR align=\"center\">";
    for (
$sloupec=1; $sloupec<=$sloupcu; $sloupec++) echo "<TD width=\"30\">".Bunka($radek, $sloupec, $PrvniDen, $PocetDnu)."</TD>";
    echo
"</TR>\n";
  }
  echo
"</TABLE>";
}
Kalendar (5,2005);
?>