<?php

//This gets today’s date
$date =time () ;

//This puts the day, month, and year in seperate variables
$day = date(‘d’, $date) ;
$month = date(‘m’, $date) ;
$year = date(‘Y’, $date) ;

//Here we generate the first day of the month
$first_day = mktime(0,0,0,$month, 1, $year) ;

//This gets us the month name
$title = date(‘F’, $first_day) ;

//Here we find out what day of the week the first day of the month falls on
$day_of_week = date(‘D’, $first_day) ;

//Once we know what day of the week it falls on, we know how many blank days occure before it. If the first day of the week is a Sunday then it would be zero
switch($day_of_week){
case "Sun": $blank = 0; break;
case "Mon": $blank = 1; break;
case "Tue": $blank = 2; break;
case "Wed": $blank = 3; break;
case "Thu": $blank = 4; break;
case "Fri": $blank = 5; break;
case "Sat": $blank = 6; break;
}

//We then determine how many days are in the current month
$days_in_month = cal_days_in_month(0, $month, $year) ;

//Here we start building the table heads
echo "<table id=wp-calendar summary=Calendar>";
echo "<CAPTION>$title $year </CAPTION>";
echo "<tr>
<TH title=Monday scope=col abbr=Monday>M</TH>
<TH title=Tuesday scope=col abbr=Tuesday>T</TH>
<TH title=Wednesday scope=col abbr=Wednesday>W</TH>
<TH title=Thursday scope=col abbr=Thursday>T</TH>
<TH title=Friday scope=col abbr=Friday>F</TH>
<TH title=Saturday scope=col abbr=Saturday>S</TH>
<TH title=Sunday scope=col abbr=Sunday>S</TH>";

//This counts the days in the week, up to 7
$day_count = 1;

echo "<tr>";
//first we take care of those blank days
while ( $blank > 0 )
{
echo "<td></td>";
$blank = $blank-1;
$day_count++;
}

//sets the first day of the month to 1
$day_num = 1;

//count up the days, untill we’ve done all of them in the month
while ( $day_num <= $days_in_month )
{
if($day_num == $day) {
echo "<td id=today> $day_num </td>";
} else {
echo "<td > $day_num </td>";
}
$day_num++;
$day_count++;

//Make sure we start a new row every week
if ($day_count > 7)
{
echo "</tr><tr>";
$day_count = 1;
}
}

//Finaly we finish out the table with some blank details if needed
while ( $day_count >1 && $day_count <=7 )
{
echo "<td> </td>";
$day_count++;
}

echo "</tr></table>";

?>