<style>
td	{vertical-align:top; <?php echo ($_SERVER["QUERY_STRING"] == "color_only" ? "text-align:center;" : ""); ?>	}
th	{font-size:<?php echo ($_SERVER["QUERY_STRING"] == "color_only" ? "100%" : "300%"); ?>	}
table,.border	{border:2px solid black;}
table	{border-collapse: collapse;	}
</style>
<?php
require_once("common.php");

header("Content-Type: text/html; charset=utf-8");

$activities = array($linux = "lime" => array(), $python = "orange" => array(), $udstilling = "cyan" => array(), "violet" => array(), );
$day_color = array(6 => "#eeeeee", 7 => $sunday = "#ffcccc",);

function add($type,$date,$event) {
	if (isset($event["activity"])) {
		$event["activity"] = htmlentities($event["activity"],ENT_SUBSTITUTE,"ISO-8859-15");
	}
	global $data;
	$event["date"] = date("Y-m-d",$date);
	if (date("Y-m-d",$date) >= date("Y-m-d"))
		$data	[date("Y-m",	$date)]
			[date("W",	$date)]
			[date("N",	$date)]
			[$type] = $event;
}

foreach(range(time(),strtotime((date("Y")+4)."-12-31"),86400) AS $date) add("ugedag",$date,array());

$ferie_html = file_get_contents("https://sonderborgkommune.dk/ferieplan-skolerne");
function d($date,$offset = 0) {
	global $ferie_html;
	if (!strpos($ferie_html,$date))
		echo "<div>XXXXXXXXXXXXXXX $date XXXXXXXXXXXXXXX</div>";
	global $last_year;
	$date = explode(" ",$date);
	unset($date[0]);
	unset($date[1]);
	$date[2] = str_replace(".","",$date[2]);
	switch (substr($date[3],0,3)) {
		case "jan" : $date[3] = 1;	break;
		case "feb" : $date[3] = 2;	break;
		case "mar" : $date[3] = 3;	break;
		case "apr" : $date[3] = 4;	break;
		case "maj" : $date[3] = 5;	break;
		case "jun" : $date[3] = 6;	break;
		case "jul" : $date[3] = 7;	break;
		case "aug" : $date[3] = 8;	break;
		case "sep" : $date[3] = 9;	break;
		case "okt" : $date[3] = 10;	break;
		case "nov" : $date[3] = 11;	break;
		case "dec" : $date[3] = 12;	break;
		default : $date[3] = substr($date[3],0,3);
	}
	if (isset($date[4])) {
		$last_year = $date[4];
	} else {
		$date[4] = $last_year;
	}
	return strtotime(join("-",array_reverse($date)))+$offset*86400;
}

$last_year = 2020;
foreach(array(
		"2020-2021" => array(
			"Efterårsferie"		=> array( "fra" => d("Lørdag den 10. oktober"),		"til" => d("søndag den 18. oktober 2020"),	),
			"Juleferie"		=> array( "fra" => d("Lørdag den 19. december 2020"),	"til" => d("søndag den 3. januar 2021"),	),
			"Vinterferie"		=> array( "fra" => d("Lørdag den 13. februar"),		"til" => d("søndag den 21. februar 2021"),	),
			"Påskeferie"		=> array( "fra" => d("Lørdag den 27. marts"),		"til" => d("mandag den 5. april 2021"),	),
			"St. Bededag"		=> array( "fra" => d("Fredag den 30. april"),		"til" => d("søndag den 2. maj 2021"),	),
			"Kristi Himmelfart"	=> array( "fra" => d("Torsdag den 13. maj"),		"til" => d("søndag den 16. maj 2021"),	),
			"Pinseferie"		=> array( "fra" => d("Lørdag den 22. maj"),		"til" => d("mandag den 24. maj 2021"),	),
			"Sommerferie"		=> array( "fra" => d("Lørdag den 26. juni 2021"),	"til" => d("Mandag den 9. august 2021",-1),	),
					),
		"2021-2022" => array(
			"Efterårsferie"		=> array( "fra" => d("Lørdag den 16. oktober"),		"til" => d("søndag den 24. oktober 2021"),	),
			"Juleferie"		=> array( "fra" => d("Lørdag den 18. december"),	"til" => d("søndag den 2. januar 2022"),	),
			"Vinterferie"		=> array( "fra" => d("Lørdag den 12. februar"),		"til" => d("søndag den 20. februar 2022"),	),
			"Påskeferie"		=> array( "fra" => d("Lørdag den 9. april"),		"til" => d("mandag den 18. april 2022"),	),
			"St. Bededag"		=> array( "fra" => d("Fredag den 13. maj"),		"til" => d("søndag den 15. maj 2022"),	),
			"Kristi Himmelfart"	=> array( "fra" => d("Torsdag den 26. maj"),		"til" => d("søndag den 29. maj 2022"),	),
			"Pinseferie"		=> array( "fra" => d("Lørdag den 4. juni"),		"til" => d("mandag den 6. juni 2022"),	),
			"Sommerferie"		=> array( "fra" => d("Lørdag den 25. juni 2022"),	"til" => d("Mandag den 8. august 2022",-1),	),
					),
		"2022-2023" => array(
			"Efterårsferie"		=> array( "fra" => d("Lørdag den 15. oktober"),		"til" => d("søndag den 23. oktober 2022"),	),
			"Juleferie"		=> array( "fra" => d("Onsdag den 21. december"),	"til" => d("mandag den 2. januar 2023"),	),
			"Vinterferie"		=> array( "fra" => d("Lørdag den 11. februar"),		"til" => d("søndag den 19. februar 2023"),	),
			"Påskeferie"		=> array( "fra" => d("Lørdag den 1. april"),		"til" => d("mandag den 10. april 2023"),	),
			"St. Bededag"		=> array( "fra" => d("Fredag den 5 maj"),		"til" => d("søndag den 7. maj 2023"),	),
			"Kristi Himmelfart"	=> array( "fra" => d("Torsdag den 18. maj"),		"til" => d("søndag den 21. maj 2023"),	),
			"Pinseferie"		=> array( "fra" => d("Lørdag den 27. maj"),		"til" => d("mandag den 29. maj 2023"),	),
			"Sommerferie"		=> array( "fra" => d("Lørdag den 24. juni 2023"),	"til" => d("Torsdag den 10. august 2023",-1),	),
					),
		"2023-2024" => array(
			"Efterårsferie"		=> array( "fra" => d("Lørdag den 14. oktober"),		"til" => d("søndag den 22. oktober 2023"),	),
			"Juleferie"		=> array( "fra" => d("Onsdag den 20. december"),	"til" => d("onsdag den 3. januar 2024"),	),
			"Vinterferie"		=> array( "fra" => d("Lørdag den 10. februar"),		"til" => d("søndag den 18. februar 2024"),),
			"Påskeferie"		=> array( "fra" => d("Lørdag den 23. marts"),		"til" => d("mandag den 1. april 2024"),	),
			"St. Bededag"		=> array( "fra" => d("Fredag den 26. april"),		"til" => d("søndag den 28. april 2024"),	),
			"Kristi Himmelfart"	=> array( "fra" => d("Torsdag den 9. maj"),		"til" => d("søndag den 12. maj 2024"),	),
			"Pinseferie"		=> array( "fra" => d("Lørdag den 18. maj"),		"til" => d("mandag den 20. maj 2024"),	),
			"Sommerferie ??"	=> array( "fra" => d("Lørdag den 29. juni 2024"),	"til" => d("Lørdag den 29. juni 2024",43),	),
					),
		) AS $year => $year_data) foreach($year_data AS $ferie => $ferie_data) {
	$fra = $ferie_data["fra"];
	$til = $ferie_data["til"];
	for ($date = $fra ; $date <= $til ; $date += 86400)
		add("skole-ferie",$date,array( "color" => "brown", "activity" => iconv("UTF-8","ISO-8859-15",$ferie), ));
	//echo "<div>$ferie x $key x $val x $fra x $til x ".date("Y-m-d",$fra)." x ".date("Y-m-d",$til)." </div>";
}

foreach(range( date("Y"), explode("-",end(array_keys($data)))[0]) AS $year) {
	foreach(array(
			"01-01" => "Nytårsdag",
			-49 => "Fastelavn",
			-7 => "Palmesøndag",
			-3 => "Skærtorsdag",
			-2 => "Langfredag",
			0 => "Påskedag",
			1 => "2. Påskedag",
			26 => "St. Bededag",
			39 => "Kr Himmelfart",
			"06-05" => "Grundlovsdag",
			49 => "Pinsedag",
			50 => "2. Pinsedag",
			"06-23" => "Sct Hans aften",
			"11-10" => "Mortens aften",
			"12-24" => "Juleaftensdag",
			"12-25" => "Juledag",
			"12-26" => "2. Juledag",
			"12-31" => "Nytårsaftensdag",
			) AS $offset => $dag) {
		add("ugedag",	$date = (is_numeric($offset)
											? easter_date($year)+$offset*86400
											: strtotime($year."-".$offset)
										),
								array(
										"color" => $sunday,
										));
		add("helligdag",	$date = (is_numeric($offset)
											? easter_date($year)+$offset*86400
											: strtotime($year."-".$offset)
										),
								array(
										"color" => $sunday,
										"activity" => iconv("UTF-8","ISO-8859-15",$dag),
										));
	}
	foreach(array(
			28 => "Industriferie", 29 => "Industriferie", 30 => "Industriferie", 31 => "Industriferie",
			) AS $uge => $activity) foreach(range(1,5) AS $weekday) {
		$date = strtotime($year."-1-1");
		$date = $date+($weekday-date("N",$date)+($uge-date("W",$date))*7)*86400;
		add("ugedag",$date,array( "color" => "silver", ));
		add("industri-ferie",$date,array( "color" => "silver", "activity" => $activity, ));
	}
	add("historie",strtotime($year."-05-03"), array( "color" => "violet", "activity"=>iconv("UTF-8","ISO-8859-15",($year-2000)." år siden stiftende generalforsamling"	)));
	add("historie",strtotime($year."-12-21"), array( "color" => "violet", "activity"=>iconv("UTF-8","ISO-8859-15",($year-1998)." år siden første møde"			)));
	add("historie",strtotime($year."-05-14"), array( "color" => "violet", "activity"=>iconv("UTF-8","ISO-8859-15",($year-1999)." år siden registrering af domæne"	)));
}

foreach(query_array("		############################################################
				SELECT	*,
					CASE
						WHEN POSITION('Installfest'		IN activity) THEN '$linux'
						WHEN POSITION('Linuxaften'		IN activity) THEN '$linux'
						WHEN POSITION('Udstilling'		IN activity) THEN '$udstilling'
						WHEN POSITION('Python-gruppen'		IN activity) THEN '$python'
						WHEN POSITION('Generalforsamling'	IN activity) THEN 'violet'
					END AS color
				FROM	dates
				WHERE	DATE(NOW()) <= date AND
							date <= '".end(array_keys($data))."' AND
						POSITION('Installfest'		IN CONCAT('.',activity))+
						POSITION('Linuxaften'		IN CONCAT('.',activity))+
						POSITION('Udstilling'		IN CONCAT('.',activity))+
						POSITION('Python-gruppen'	IN CONCAT('.',activity))+
						POSITION('Generalforsamling'	IN CONCAT('.',activity))+
						0 > 1
				############################################################") AS $event) {
	add("aktivitet",strtotime($event->date),(array)$event);
}

echo "<table".($_SERVER["QUERY_STRING"] == "color_only" ? "" : " width=100%")." cellspacing=0>";
//unset($data[1969]);
//unset($data[1970]);
//foreach(array_splice(array_keys($data),0,2) AS $_year_) foreach($data[$_year_] AS $month => $month_days) {
foreach(array_splice($data,0,12*3) AS $month => $month_days) {
	echo "<tr>";
	if (date("Y-m") == $month || date("N",strtotime($month."-01"))*1 == 1
				)
		echo "<th class='border'></th>";
	echo "<th colspan=7>".$month."</th></tr>";
	foreach($month_days AS $week => $week_days) {
		echo "<tr>";
		if (isset($week_days[1]) || $month == date("Y-m"))
			echo "<th".($_SERVER["QUERY_STRING"] == "color_only" ? ""
						: " width=".(100-7*($day_width = 13))."%").
				(!isset($week_days[7]) ? " rowspan=3" : "").
				" class='border'>".$week."</th>";
		foreach(range(1,7) AS $weekday) {
			echo "<td".
					(!isset($week_days[$weekday]) ? " bg_color=black" :
					(isset(reset($week_days[$weekday])["color"]) ? " bgcolor=".reset($week_days[$weekday])["color"] :
					(isset($day_color[$weekday]) ? " bgcolor=".$day_color[$weekday] : "" ))).
					" width=".$day_width."%".
					(isset($week_days[$weekday]) ? " class='border'" : "").
									">";
			if (isset($week_days[$weekday])) {
				if ( $_SERVER["QUERY_STRING"] == "color_only") {
					echo "<div title='";
							//end($week_days[$weekday])["activity"].
					echo 			"'>".date("j",strtotime(end($week_days[$weekday])["date"]))."</div>";
				} else {
					echo "<div>". (isset(end($week_days[$weekday])["date"])
								? date("j. M",strtotime(end($week_days[$weekday])["date"]))
								: "")."</div>";
					foreach($week_days[$weekday] As $event)
						if (isset($event["activity"]))
							echo "<div".
				(isset($event["color"]) ? " style='background:".$event["color"].";'" : "").
									">". print_r($event["activity"],true) ."</div>";
				}
//				echo
//							 ( $_SERVER["QUERY_STRING"] == "color_only"
//							. "<div>". (isset($week_days[$weekday]["activity"])
//									? $week_days[$weekday]["activity"]
//									: "")."</div>");
//				if ($_SERVER["QUERY_STRING"] != "color_only" &&
//						isset(	$week_days[$weekday]["date"]) &&
//						isset(	$week_days[$weekday]["color"]) &&
//							$week_days[$weekday]["color"] == $linux) {
//					$now = strtotime($week_days[$weekday]["date"]);
//					if (isset($last_linux)) {
//						echo "<div>(". ($interval = ($now-$last_linux)/86400) .")</div>";
//						$linux_intervals[$interval]++;
//					}
//					$last_linux = $now;
//				}
			}
			echo "</td>";
			if (isset($week_days[$weekday])) {
				foreach($week_days[$weekday] AS $event)
					if (isset($event["activity"])) {
						$activity_dates	[$weekday][	$event["activity"]]++;
						$activities	[		$event["color"]	]
								[		$event["activity"]] =
										$event["activity"];
					}
			}
		}
		echo "</tr>";
	}
}

unset($activities[$sunday]);
unset($activities["brown"]);
unset($activities["silver"]);
if($_SERVER["QUERY_STRING"] != "color_only") {
	echo "<tr><td colspan=8 bgcolor='black'></td></tr>";
	echo "<tr><td colspan=8 bgcolor='black'></td></tr>";
	echo "<tr><td colspan=8>&nbsp; <p>&nbsp;</p> <p>&nbsp;</p></td></tr>";

	foreach($activities AS $color => $act) {
//		echo "<tr><td colspan=8>$activity</td></tr>";
		echo "<tr><td></td>";
		foreach(range(1,7) AS $weekday) {
			echo "<td class='border'".
						(isset($day_color[$weekday]) ? " bgcolor=".$day_color[$weekday] : "" ).
							">";
			foreach($act AS $activity) if (isset(	$activity_dates[$weekday]		) &&
							isset(	$activity_dates[$weekday]		) &&
							isset(	$activity_dates[$weekday][$activity]	))
				echo "<div style='background:$color;'>".
									($activity_dates[$weekday][$activity] > 1
											? $activity_dates[$weekday][$activity]." * "
											: "").
									$activity.
								"</div>";
			echo "</td>";
		}
		echo "</tr>";
	}
}
echo "</table>";

echo "<pre>". print_r($activities,true) ."</pre>";
ksort($linux_intervals);
//echo "<pre>". print_r($linux_intervals,true) ."</pre>";
?>
