<?
        /*
                pcCalendar - display calendar for a given month & year
                Copyright (c) 2000, Polaris Computing
                http://www.polaris.ca/
        */
        class pcCalendar
        {
                var $gaWeekTitles;
                function pcCalendar()
                {
                        /* initialise the global variables */
                        $this->gaWeekTitles[] = "Sunday";
                        $this->gaWeekTitles[] = "Monday";
                        $this->gaWeekTitles[] = "Tuesday";
                        $this->gaWeekTitles[] = "Wednesday";
                        $this->gaWeekTitles[] = "Thursday";
                        $this->gaWeekTitles[] = "Friday";
                        $this->gaWeekTitles[] = "Saturday";
                }
                function intShowCalendar( $intYear = 0, $intMonth = 0 )
                {
                        /* if month and/or year not set, change to current month and year */
                        $intMonth = ( $intMonth == 0 ) ? strftime( "%m" ) : $intMonth;
                        $intYear = ( $intYear == 0 ) ? strftime( "%Y" ) : $intYear;
                        /* determine total days in month */
                        $lintTotalDays = 0;
                        while ( checkdate( $intMonth, $lintTotalDays + 1, $intYear ) )
                                $lintTotalDays++;
                        /* build table */
                        $this->intStartTable();
                        $this->intStartRow();
                        for ( $i = 0; $i < 7; $i++ )
                                $this->intDisplayWeekTitle( $i );
                        $this->intFinishRow();
                        $this->intStartRow();
                        /* ensure that enough blanks are put in so that the first day of the month
                           lines up with the proper day of the week */
                        $lintOffset = date( "w", mktime( 0, 0, 0, $intMonth, 1, $intYear ) );
                        for ( $i = 0; $i < $lintOffset; $i++ )
                                $this->intDisplayDay( 0, 0, " " );
                        /* start filling in the days of the month */
                        for ( $lintDay = 1; $lintDay <= $lintTotalDays; $lintDay++ )
                        {
                                $this->intDisplayDay( $intYear, $intMonth, $lintDay );
                                /* terminate row if we're at on the last day of the week */
                                $lintOffset++;
                                if ( $lintOffset > 6 )
                                {
                                        $lintOffset = 0;
                                        $this->intFinishRow;
                                        if ( $lintDay < $lintTotalDays )
                                                $this->intStartRow();
                                }
                        }
                        /* fill in the remainder of the row with spaces */
                        if ( $lintOffset > 0 )
                                $lintOffset = 7 - $lintOffset;
                        for ( $i = 0; $i < $lintOffset; $i++ )
                                $this->intDisplayDay( 0, 0, " " );
                        $this->intFinishRow();
                        $this->intFinishTable();
                }
                function intStartTable()
                {
                        /* this function should be overridden with your own routines */
                        echo '<table border="1" cellpadding="5" cellspacing="5" width="100%">';
                }
                function intFinishTable()
                {
                        /* this function should be overridden with your own routines */
                        echo '</table>';
                } 
                function intStartRow()
                {
                        /* this function should be overridden with your own routines */
                        echo '<tr>';
                }
                function intFinishRow()
                {
                        /* this function should be overridden with your own routines */
                        echo '</tr>';
                }
                function intDisplayWeekTitle( $intWeekDay )
                {
                        /* this function should be overridden with your own routines */
                        echo '<th><b><font face="Arial">', $this->gaWeekTitles[ $intWeekDay ], '</font></b></th>';
                }
                function intDisplayDay( $intYear, $intMonth, $intDay )
                {
                        /* this function should be overridden with your own routines */
                        echo '<td>', $intDay, '</td>';
                }
        }
?> 
  |