<?php
class calendar{
    private $year;
    private $month;
    private $day_week;

    function __construct(){
        $this->year=isset($_GET['year']) ? $_GET['year'] : date("Y");
        $this->month=isset($_GET['month']) ? $_GET['month'] : date("m");
        $this->day_week=date("w", mktime(0, 0, 0, $this->month, 1, $this->year));
    }

    private function xianDate(){
        echo "<tr>";
        echo "<td><a href='".$this->nextyear($this->year, $this->month)."'>"."<<<"."</a></td>";
        echo "<td><a href='".$this->nextmonth($this->month, $this->year)."'>"."<<"."</td>";
        echo "<td colspan='3'>".$this->year."年".$this->month."月</td>";
        echo "<td><a href='".$this->aftermonth($this->month, $this->year)."'>".">>"."</td>";
        echo "<td><a href='".$this->afteryear($this->year, $this->month)."'>".">>>"."</a></td>";
        echo "</tr>";
    }

    private function weeks(){
        $weeks=array("日", "一", "二", "三", "四", "五", "六");
        echo "<tr>";
        foreach($weeks as $value){
            echo "<th>".$value."</th>";
        }
        echo "</tr>";
    }

    private function days(){
        echo "<tr>";
        for($i=0; $i<$this->day_week; $i++){
            echo "<td> </td>";
        }
        for($j=1; $j <= date("t", mktime(0, 0, 0, $this->month, 1, $this->year)); $j++){
            $i++;
            if($j == date("d")){
                echo "<td class='fontb'>".$j."</td>";
            }else{
                echo "<td>".$j."</td>";
            }
            if($i%7 == 0){
                echo "</tr>";
            }
        }
        while($i%7 != 0){
            echo "<td> </td>";
            $i++;
        }
    }

    private function nextyear($year, $month){
        if($year == 1970){
            $year=1970;
        }else{
            $year--;
        }
        return "?year=".$year."&month=".$month;
    }

    private function afteryear($year, $month){
        if($year == 2038){
            $year=2038;
        }else{
            $year++;
        }
        return "?year=".$year."&month=".$month;
    }

    private function nextmonth($month, $year){
        if($month == 1){
            $year--;
            $month=12;
        }else{
            $month--;
        }
        return "?year=".$year."&month=".$month;
    }

    private function aftermonth($month, $year){
        if($month == 12){
            $year++;
            $month=1;
        }else{
            $month++;
        }
        return "?year=".$year."&month=".$month;
    }

    public function out(){
        echo "<table align='center'>";
        $this->xianDate();
        $this->weeks();
        $this->days();
        echo "</table>";
    }
}