<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(000$mesic1$rok));
  return (
$anglickeporadi==0) ? $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)*$radek $PrvniDen+1;
  if (
$chcivratit<|| $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<|| $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(000$mesic$PocetDnu-7$rok)) - date("W"mktime(000$mesic1+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);
?>