function showCompetitionResultsByPerson($resultsTable = 'Results')
{
    #----------------------------------------------------------------------
    global $chosenByPerson, $chosenAllResults, $chosenTop3, $chosenWinners;
    global $chosenCompetitionId;
    #--- Get the results.
    $competitionResults = getCompetitionResults($resultsTable);
    startTimer();
    tableBegin('results', 8);
    foreach ($competitionResults as $result) {
        extract($result);
        $isNewPerson = !isset($previousPersonId) || $personId != $previousPersonId;
        $isNewEvent = !isset($previousEventId) || $eventId != $previousEventId || $isNewPerson;
        #--- Welcome new persons.
        if ($isNewPerson) {
            if (isset($previousPersonId)) {
                tableRowBlank();
            }
            $bo3_as_mo3 = $formatId == '3' && ($eventId == '333bf' || $eventId == '333fm' || $eventId == '333ft');
            $headerAverage = $formatId == 'a' || $formatId == 'm' || $bo3_as_mo3 ? 'Average' : '';
            $headerAllResults = $formatId != '1' ? 'Result Details' : '';
            tableCaptionNew(false, $personId, spaced(array(personLink($personId, $personName), $countryName)));
            tableHeader(explode('|', "Event|Round|Place|Best||{$headerAverage}||{$headerAllResults}"), array(2 => 'class="r"', 3 => 'class="R"', 5 => 'class="R"', 7 => 'class="f"'));
        }
        #--- One result row.
        tableRowStyled($isNewEvent ? '' : 'color:#AAA', array($isNewEvent ? eventLink($eventId, $eventCellName) : '', $roundCellName, $isNewEvent ? "<b>{$pos}</b>" : $pos, formatValue($best, $valueFormat), $regionalSingleRecord, formatValue($average, $valueFormat), $regionalAverageRecord, formatAverageSources($formatId != '1', $result, $valueFormat)));
        $previousPersonId = $personId;
        $previousEventId = $eventId;
    }
    tableEnd();
    stopTimer("printing the huge table");
}
function showCompetitionResults($competitionId, $eventId, $roundId)
{
    #----------------------------------------------------------------------
    # NOTE: This is mostly a copy of the same function in competition_results.php
    #--- Get the results.
    $competitionResults = getCompetitionResults($competitionId, $eventId, $roundId);
    tableBegin('results', 8);
    $prevEventId = $prevRoundId = '';
    foreach ($competitionResults as $result) {
        extract($result);
        $isNewEvent = $eventId != $prevEventId;
        $isNewRound = $roundId != $prevRoundId;
        #--- Welcome new rounds.
        if ($isNewEvent || $isNewRound) {
            $anchors = ($isNewEvent ? "{$eventId} " : "") . "{$eventId}_{$roundId}";
            $eventHtml = eventLink($eventId, $eventName);
            $caption = spaced(array($eventHtml, $roundName, $formatName));
            tableCaptionNew(false, $anchors, $caption);
            $bo3_as_mo3 = $formatId == '3' && ($eventId == '333bf' || $eventId == '333fm' || $eventId == '333ft');
            $headerAverage = $formatId == 'a' || $formatId == 'm' || $bo3_as_mo3 ? 'Average' : '';
            $headerAllResults = $formatId != '1' ? 'Result Details' : '';
            tableHeader(explode('|', "Place|Person|Best||{$headerAverage}||Citizen of|{$headerAllResults}"), array(0 => 'class="r"', 2 => 'class="R"', 4 => 'class="R"', 7 => 'class="f"'));
        }
        #--- One result row.
        tableRow(array($pos, personLink($personId, $personName), formatValue($best, $valueFormat), $regionalSingleRecord, formatValue($average, $valueFormat), $regionalAverageRecord, $countryName, formatAverageSources($formatId != '1', $result, $valueFormat)));
        $prevEventId = $eventId;
        $prevRoundId = $roundId;
    }
    tableEnd();
}
function getQualifications($competitionId, $eventId, $roundId1, $roundId2)
{
    #----------------------------------------------------------------------
    global $competitionResults1, $competitionResults2, $personsBothRounds;
    #--- Get the results.
    $competitionResults1 = getCompetitionResults($competitionId, $eventId, $roundId1);
    $competitionResults2 = getCompetitionResults($competitionId, $eventId, $roundId2);
    #--- Intersection of the two rounds
    foreach ($competitionResults1 as $row) {
        $personsRound1[] = $row['personId'];
    }
    foreach ($competitionResults2 as $row) {
        $personsRound2[] = $row['personId'];
    }
    $personsBothRounds = array_intersect($personsRound1, $personsRound2);
    return count($personsBothRounds);
}