Codice PHP:
class calendario{
function init(){
$data=date("j", time())."-".date("n", time())."-".date("Y", time());
$this->disegna($data,'oggi');
}
function disegna($data,$come){
if($come=="oggi"){$t=strtotime($data);}
if($come=="p1"){$t=strtotime($data." -1 month");}
if($come=="s1"){$t=strtotime($data." +1 month");}
$this->disegnaCalendario(date("n", $t),date("F", $t),date("j", $t),date("w", $t),date("Y", $t));
}
function disegnaCalendario($mmN,$mmT,$ggN,$ggS,$aa){
$dati = array();
$dati['giorni_mesi'] = array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // Array con i giorni dei mesi
$dati['mese_num'] = $mmN; // Mese corrente ( numerico )
$dati['mese_text'] = $mmT; // Mese Corrente ( testuale )
$dati['oggi'] = $ggN; // Oggi ( numerico senza eventuali zeri )
$dati['anno'] = $aa; // Anno
$dati['giorni_mesi'][1] = ( checkdate(2,29,$dati['anno']) ) ? 29 : 28; // Calcolo dei giorni di febbraio
$dati['giorni_mese'] = $dati['giorni_mesi'][$dati['mese_num']-1]; // Giorni del mese corrente
$str1=$dati['oggi']."-".$dati['mese_num']."-".$dati['anno']." -1month";
$newMonth=date("n",strtotime($str1));
$newYear=date("Y",strtotime($str1));
$dati['giorni_mesi'] = array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$dati['giorni_mesi'][1] = ( checkdate(2,29,$newYear) ) ? 29 : 28;
$dati['giorni_meseP'] = $dati['giorni_mesi'][$newMonth-1];
$str1=$dati['oggi']."-".$dati['mese_num']."-".$dati['anno']." +1month";
$newMonth=date("n",strtotime($str1));
$newYear=date("Y",strtotime($str1));
$dati['giorni_mesi'] = array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$dati['giorni_mesi'][1] = ( checkdate(2,29,$newYear) ) ? 29 : 28;
$dati['giorni_meseS'] = $dati['giorni_mesi'][$newMonth-1];
$str3="1-".$dati['mese_num']."-".$dati['anno'];
$dati['giorno1Settimana'] = date("w",strtotime($str3));
$c=1;
for($a=1;$a<=6;$a++){
echo "<tr>";
for($b=1;$b<=7;$b++){
$cellID="cell".($a*$b);
$diff=$dati['giorno1Settimana']-$c;
$classe="";
($b==7) ? $classe="bordoR" : $classe="";
$e=($c-$dati['giorno1Settimana']+1);
if($diff>0){
$classe.=" out";
echo "<td id='".$cellID."' class='".$classe."' giorno='".$b."'>".($dati['giorni_meseP']-$diff+1)."</td>";
}
else if($e>$dati['giorni_mese']){
$classe.=" out";
echo "<td id='".$cellID."' class='".$classe."' giorno='".$b."'>".($e-$dati['giorni_mese'])."</td>";
}
else{
if( $e==$dati['oggi'] ){$classe.=" today cellaConFocus";}
echo "<td id='".$cellID."' class='".$classe."' giorno='".$b."'>".$e."</td>";
}
$c++;
}
echo "</tr>";
}
}
}