content is the same as browser cache
	// So send a 304 Not Modified response header and exit
	if($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) {
		http_response_code(304);
		exit();
	}
}
*/
require_once("$documentRoot/import_runners.php");
function registration_table($runners) {
    parse_str($_SERVER['QUERY_STRING'], $query);
    $matpost = $query["control"];
    $runners_filtered = [];
    if ($query["filter"]) {
        for ($i = 0; $i < count($runners); $i++) {
            if (filter_runners($runners[$i], $query["filter"])) {
                array_push($runners_filtered, $runners[$i]);
            }
        }
        $runners = $runners_filtered;
    }
    if (count($runners) == 0) {
        $runner_id = $query["filter"];
        $response = "
Fant ingen løper med dette startnummeret. Registrer likevell? Registrer startnummer $runner_id ✅️ 
";
        echo($response);
    } else {
        
        echo("  
        # 
        Navn 
        Tid 
         
          
        ");
        for ($i = 0; $i < count($runners); $i++) {
            $runner = $runners[$i];
            
            // Klokkeslett for denne posten
            if ($runner->splits[$matpost-1] != false) {
                $tid_passering = $GLOBALS['start_time']->diff($runner->splits[$matpost-1])->format('%H:%I:%S');
            }
            else {
                $tid_passering = "";
            }
            
            if ($runner->get_control() == $matpost-1) {
                // Løperen har vært på denne matposten og vi farger raden grønn
                $button = "id)\">☑️ ";
                $cssclass = "class=\"bg-success\"";
            }
            elseif ($runner->get_control() > $matpost-1) {
                // Løperen har vært på denne matposten og vi farger raden grønn
                $button = "id)\">☑️ ";
                $cssclass = "class=\"bg-active\"";
            }
            else {
                $button = "id)\">✅️ ";
                $cssclass = "";
            }
            echo ("$runner->id $runner->name $tid_passering $button  \n");
        }
        echo(" ");
    }
}
function participants_table($runners) {
    usort($runners, "cmp_course");
    $kadaverløpere = 0;
    $minikadaverløpere = 0;
    for ($i = 0; $i < count($runners); $i++) {
        if ($runners[$i]->course == "Kadaverløpet") {
            $kadaverløpere++;
        }
        elseif ($runners[$i]->course == "Minikadaver'n") {
            $minikadaverløpere++;
        }
    }
    echo("
    $kadaverløpere påmeldt Kadaverløpet
$minikadaverløpere påmeldte i Minikadaver'n
     ");
    echo("
        
        S.nr 
        Navn 
        Klubb/Forening 
        Variant 
      
    ");
    for ($i = 0; $i < count($runners); $i++) {
        $runner = $runners[$i];
        echo ("$runner->id $runner->name $runner->club $runner->course  \n");
    }
    echo("");
}
function liveresult_table($runners) {
    usort($runners, "cmp");
    usort($runners, "cmp_course");
    $kadaver_table = "
        
        # 
	Navn 
        1. matpost 
        2. matpost 
        Mål 
        Etter 
        Sprekkindeks 
      
    ";
       	$kadaver_num = 0;
    for ($i = 0; $i < count($runners); $i++) {
        $runner = $runners[$i];
        $tid_maal = "";
        $sprekk = " ";
        if ($runner->splits[2] != false) {
            $tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S');
        }
	    if ($runner->course == "Kadaverløpet") {
		$kadaver_num++;
            $tid_1_mat = "";
            if ($runner->splits[0] != false) {
                // https://www.php.net/manual/en/class.dateinterval.php
                $tid_1_mat = $GLOBALS['start_time']->diff($runner->splits[0])->format('%H:%I:%S');
            }
            $tid_2_mat = "";
            //tid etter vinner
            $tid_etter = "";
            if ($runner->splits[2] != false && $kadaver_num > 0) {
                $tid_etter = $runners[0]->splits[2]->diff($runner->splits[2])->format('%I:%S');
            }
            //sprekkindekss
            if ($runner->splits[1] != false) {
                $tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S');
                try {
                    $sprekk = "" . number_format(100*(time_diff($GLOBALS['start_time'],$runner->splits[2]) - time_diff($GLOBALS['start_time'],$runner->splits[1])) / time_diff($GLOBALS['start_time'],$runner->splits[2]), 0) . "% ";
                }
                catch (DivisionByZeroError $e){
                    $sprekk = " ";
                }
                catch (TypeError $e) {
                    $sprekk = " ";
                }
            }
            $matposter = "$tid_1_mat $tid_2_mat ";
	}
        if ($runner->course == "Kadaverløpet") {
            $kadaver_table .= "". $kadaver_num .". $runner->name $matposter$tid_maal $tid_etter $sprekk \n";
        }
    }
    $kadaver_table .= " 
\n";
    echo($kadaver_table);
    
}
function minikadadvern_table($runners) {
    usort($runners, "cmp");
    usort($runners, "cmp_course");
    $minikadaver_table = "
    
    # 
    Navn 
    Mål 
      
    ";
       	$kadaver_num = 0;
       	$mini_num = 0;	
    for ($i = 0; $i < count($runners); $i++) {
        $runner = $runners[$i];
        $tid_maal = "";
        $sprekk = " ";
        if ($runner->splits[2] != false) {
            $tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S');
        }
	    if ($runner->course == "Kadaverløpet") {
		$kadaver_num++;
            $tid_1_mat = "";
            if ($runner->splits[0] != false) {
                // https://www.php.net/manual/en/class.dateinterval.php
                $tid_1_mat = $GLOBALS['start_time']->diff($runner->splits[0])->format('%H:%I:%S');
            }
            $tid_2_mat = "";
            //tid etter vinner
            $tid_etter = "";
            if ($runner->splits[2] != false && $kadaver_num > 0) {
                $tid_etter = $runners[0]->splits[2]->diff($runner->splits[2])->format('%I:%S');
            }
            //sprekkindekss
            if ($runner->splits[1] != false) {
                $tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S');
                try {
                    $sprekk = "" . number_format(100*(time_diff($GLOBALS['start_time'],$runner->splits[2]) - time_diff($GLOBALS['start_time'],$runner->splits[1])) / time_diff($GLOBALS['start_time'],$runner->splits[2]), 0) . "% ";
                }
                catch (DivisionByZeroError $e){
                    $sprekk = " ";
                }
                catch (TypeError $e) {
                    $sprekk = " ";
                }
            }
            $matposter = "$tid_1_mat $tid_2_mat ";
	}
	else {
		$mini_num++;
	}
        if ($runner->course == "Kadaverløpet") {
            $kadaver_table .= "". $kadaver_num .". $runner->name $matposter$tid_maal $tid_etter $sprekk \n";
        }
        elseif ($runner->course == "Minikadaver'n") {
            $minikadaver_table .= "". "" .". $runner->name $tid_maal  \n";
        }
    }
    $minikadaver_table .= " 
";
    echo($minikadaver_table);
    
}
$runners = read_runners_from_csv();
if (!isset($query)){
    parse_str($_SERVER['QUERY_STRING'], $query);
    if ($query["type"] == "registrering"){
        registration_table($runners);
    }
    elseif ($query["type"] == "paameldte") {
        participants_table($runners);
    }
    elseif ($query["type"] == "liveresultater") {
        liveresult_table($runners);
    }
    elseif ($query["type"] == "minikadavern") {
        minikadadvern_table($runners);
    }
}