= 13) { $month = 1; $year += 1; } elseif ($month <= 0) { $month = 12; $year -= 1; } } // Return vars in an array return array("today" => $today, "month" => $month, "year" => $year, "cmd" => $cmd); } // End setvars() // Do the document header function docheader($month,$year) { // Set script to return to (form action) $this_script = $_SERVER['PHP_SELF']; $month_text = date("F",strtotime($month."/1/".$year)); // If content header has not been sent, // send it if (!headers_sent()) { header('Content-type: text/html'); } // Print the document header (up to first date row) print << Calendar - $Month $Year
HTML; } // End docheader() // Do the document footer (close tags, end doc) function docfooter() { print <<
$month_text $year
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
HTML; } // End docfooter() // Print an empty day (cell) function emptyday() { print <<  HTML; } // End emptyday() // Print a day cell function day($today,$month,$day,$year) { $curday = $month."/".$day."/".$year; if ($curday == $today) { $font = " style=\"color: red;\""; } else { $font = ""; } print <<< HTML $day HTML; } // End day() // Open or close a row function weekrow($cmd) { switch ($cmd) { case "open": print "\n"; break; case "close": print "\n"; break; } } // End weekrow() // Main program body function main() { // Set the date vars by default, POST, or GET $vars = setvars(); $today = $vars['today']; $month = $vars['month']; $year = $vars['year']; $cmd = $vars['cmd']; // Do the header and open first row docheader($month,$year); weekrow("open"); // Set up first weekday and 1st day (m/1/y) $first_weekday = date("w",strtotime($month."/1/".$year)) + 1; $day = 1; // Print empty days up to the first weekday of month for ($weekday = 1; $weekday < $first_weekday; $weekday++) { emptyday(); } // Do rest of month while we have a valid date while (checkdate($month,$day,$year)) { // If SUN, open the row if ($weekday == 1) { weekrow("open"); } // Print day and increment day($today,$month,$day,$year); $weekday++; $day++; // If SAT, close row reset weekday if ($weekday > 7) { weekrow("close"); $weekday = 1; } } // Close current week while ($weekday != 1 && $weekday <= 7) { emptyday(); $weekday++; } // Close document docfooter(); } // End main(); // Kick it all off main(); ?>