CALENDAR 2010 - 2011 -(no lessons on blocked days)
NOTE: All students receive 38 lessons over 10 months

create(); EXAMPLE #2: $myCal = new CALENDAR(2004, 12); echo $myCal->create(); EXAMPLE #3: $myCal = new CALENDAR(); $myCal->year = 2004; $myCal->month = 12; echo $myCal->create(); Returns HTML code ========================================================================================================== */ error_reporting(E_WARNING); $cal_ID = 0; class CALENDAR { //======================================================================================================== // Configuration //======================================================================================================== var $tFontFace = 'Arial, Helvetica'; // title: font family (CSS-spec, e.g. "Arial, Helvetica") var $tFontSize = 12; // title: font size (pixels) var $tFontColor = '#FFFFFF'; // title: font color var $tBGColor = '#304B90'; // title: background color var $hFontFace = 'Arial, Helvetica'; // heading: font family (CSS-spec, e.g. "Arial, Helvetica") var $hFontSize = 10; // heading: font size (pixels) var $hFontColor = '#FFFFFF'; // heading: font color var $hBGColor = '#304B90'; // heading: background color var $dFontFace = 'Arial, Helvetica'; // days: font family (CSS-spec, e.g. "Arial, Helvetica") var $dFontSize = 10; // days: font size (pixels) var $dFontColor = '#000000'; // days: font color var $dBGColor = '#FFFFFF'; // days: background color var $wFontFace = 'Arial, Helvetica'; // weeks: font family (CSS-spec, e.g. "Arial, Helvetica") var $wFontSize = 10; // weeks: font size (pixels) var $wFontColor = '#FFFFFF'; // weeks: font color var $wBGColor = '#304B90'; // weeks: background color var $saFontColor = '#0000D0'; // Saturdays: font color var $saBGColor = '#F6F6FF'; // Saturdays: background color var $suFontColor = '#D00000'; // Sundays: font color var $suBGColor = '#FFF0F0'; // Sundays: background color var $tdBorderColor = '#FF0000'; // today: border color var $borderColor = '#304B90'; // border color var $hilightColor = '#FFFF00'; // hilight color (works only in combination with link) var $link = ''; // page to link to when day is clicked var $offset = 1; // week start: 0 - 6 (0 = Saturday, 1 = Sunday, 2 = Monday ...) var $weekNumbers = true; // view week numbers: true = yes, false = no //-------------------------------------------------------------------------------------------------------- // You should change these variables only if you want to translate them into your language: //-------------------------------------------------------------------------------------------------------- // weekdays: must start with Saturday because January 1st of year 1 was a Saturday var $weekdays = array('Sa', 'Su', 'Mo', 'Tu', 'We', 'Th', 'Fr'); // months: must start with January var $months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); // error messages var $error = array('Year must be 1 - 3999!', 'Month must be 1 - 12!'); //-------------------------------------------------------------------------------------------------------- // Don't change from here: //-------------------------------------------------------------------------------------------------------- var $year, $month, $size; var $mDays = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var $specDays = array(); //======================================================================================================== // Functions //======================================================================================================== function CALENDAR($year = '', $month = '', $week = '') { if($year == '' && $month == '') { $year = date('Y'); $month = date('n'); } else if($year != '' && $month == '') $month = 1; $this->year = (int) $year; $this->month = (int) $month; $this->week = (int) $week; } function set_styles() { global $cal_ID; $cal_ID++; $html = ''; return $html; } function leap_year($year) { return (!($year % 4) && ($year < 1582 || $year % 100 || !($year % 400))) ? true : false; } function get_weekday($year, $days) { $a = $days; if($year) $a += ($year - 1) * 365; for($i = 1; $i < $year; $i++) if($this->leap_year($i)) $a++; if($year > 1582 || ($year == 1582 && $days >= 277)) $a -= 10; if($a) $a = ($a - $this->offset) % 7; else if($this->offset) $a += 7 - $this->offset; return $a; } function get_week($year, $days) { $firstWDay = $this->get_weekday($year, 0); return floor(($days + $firstWDay) / 7) + ($firstWDay <= 3); } function table_cell($content, $class, $date = '', $style = '') { global $cal_ID; $size = round($this->size * 1.5); $html = 'link; if($this->specDays[$content]) { if($this->specDays[$content][0]) { $style .= 'background-color:' . $this->specDays[$content][0] . ';'; } if($this->specDays[$content][1]) { $html .= ' title="' . $this->specDays[$content][1] . '"'; } if($this->specDays[$content][2]) $link = $this->specDays[$content][2]; } if($link) { $link .= strstr($link, '?') ? "&date=$date" : "?date=$date"; $html .= ' onMouseOver="this.className=\'cssHilight' . $cal_ID . '\'"'; $html .= ' onMouseOut="this.className=\'' . $class . '\'"'; $html .= ' onClick="document.location.href=\'' . $link . '\'"'; } } if($style) $html .= ' style="' . $style . '"'; $html .= '>' . $content . ''; return $html; } function table_head($content) { global $cal_ID; $cols = $this->weekNumbers ? 8 : 7; $html = '' . $content . ''; for($i = 0; $i < count($this->weekdays); $i++) { $ind = ($i + $this->offset) % 7; $wDay = $this->weekdays[$ind]; $html .= $this->table_cell($wDay, 'cssHeading' . $cal_ID); } if($this->weekNumbers) $html .= $this->table_cell(' ', 'cssHeading' . $cal_ID); $html .= ''; return $html; } function viewEvent($from, $to, $color, $title, $link = '') { if($from > $to) return; if($from < 1 || $from > 31) return; if($to < 1 || $to > 31) return; while($from <= $to) { $this->specDays[$from] = array($color, $title, $link); $from++; } } function create() { global $cal_ID; $this->size = ($this->hFontSize > $this->dFontSize) ? $this->hFontSize : $this->dFontSize; if($this->wFontSize > $this->size) $this->size = $this->wFontSize; list($curYear, $curMonth, $curDay) = explode('-', date('Y-m-d')); if($this->year < 1 || $this->year > 3999) $html = '' . $this->error[0] . ''; else if($this->month < 1 || $this->month > 12) $html = '' . $this->error[1] . ''; else { $this->mDays[1] = $this->leap_year($this->year) ? 29 : 28; for($i = $days = 0; $i < $this->month - 1; $i++) $days += $this->mDays[$i]; $start = $this->get_weekday($this->year, $days); $stop = $this->mDays[$this->month-1]; $html = $this->set_styles(); $html .= ''; $html .= 'borderColor ? ' bgcolor=' . $this->borderColor : '') . '>'; $html .= '
'; $title = htmlentities($this->months[$this->month-1]) . ' ' . $this->year; $html .= $this->table_head($title); $daycount = 1; if(($this->year == $curYear) && ($this->month == $curMonth)) $inThisMonth = true; else $inThisMonth = false; if($this->weekNumbers || $this->week) $weekNr = $this->get_week($this->year, $days); while($daycount <= $stop) { if($this->week && $this->week != $weekNr) { $daycount += 7; $weekNr++; continue; } $html .= ''; for($i = $wdays = 0; $i <= 6; $i++) { $ind = ($i + $this->offset) % 7; if($ind == 0) $class = 'cssSaturdays'; else if($ind == 1) $class = 'cssSundays'; else $class = 'cssDays'; $style = ''; $date = $this->year . '-' . $this->month . '-' . $daycount; if(($daycount == 1 && $i < $start) || $daycount > $stop) $content = ' '; else { $content = $daycount; if($inThisMonth && $daycount == $curDay) { $style = 'padding:0px;border:3px solid ' . $this->tdBorderColor . ';'; } else if($this->year == 1582 && $this->month == 10 && $daycount == 4) $daycount = 14; $daycount++; $wdays++; } $html .= $this->table_cell($content, $class . $cal_ID, $date, $style); } if($this->weekNumbers) { if(!$weekNr) { if($this->year == 1) $content = ' '; else if($this->year == 1583) $content = 52; else $content = $this->get_week($this->year - 1, 365); } else if($this->month == 12 && $weekNr >= 52 && $wdays < 4) $content = 1; else $content = $weekNr; $html .= $this->table_cell($content, 'cssWeeks' . $cal_ID); $weekNr++; } $html .= ''; } $html .= '
'; } return $html; } } ?>