<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'sessionTimeout.php';
require 'db_connect.inc.php';
require 'meetSelector.php';
$meetSelector = getMeetSelector($conn);
$meetSelectorHtml = $meetSelector['html'];
$meetSelected = $meetSelector['meetSelected'];
if (isset($_POST['change_meet'])) {
    unset($_SESSION['selected_meet']);
    unset($_SESSION['table_name']);
    unset($_SESSION['meet_name']);
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit();
}
$success = '';
//Update session
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['action'] == "update_session") {
    // Arrays to store the updated values
    $session_dates = $_POST['session_date'];
    $open_wu_times = $_POST['open_wu_time'];
    $march_in_times = $_POST['march_in_time'];
    $timd_wu_times = $_POST['timd_wu_time'];
    $awards_times = $_POST['awards_time'];
    $types = $_POST['type'];
    $flights = $_POST['flights'];

    // First, create an array of sessions with their dates and times for sorting
    $sessions_array = array();
    foreach ($session_dates as $id => $date) {
        $sessions_array[] = array(
            'id' => $id,
            'date' => $date,
            'time' => $open_wu_times[$id]
        );
    }

    // Sort sessions by date and time
    usort($sessions_array, function($a, $b) {
        $date_compare = strtotime($a['date']) - strtotime($b['date']);
        if ($date_compare == 0) {
            return strtotime($a['time']) - strtotime($b['time']);
        }
        return $date_compare;
    });

    // Assign new session numbers based on sorted order
    $session_num = 1;
    foreach ($sessions_array as $session) {
    $id = $session['id'];
    $session_num = mysqli_real_escape_string($conn, $_POST['session_num'][$id]); // Use the provided session number
    
    // Update each session with new values and session number
    $update_query = "UPDATE sessions SET 
        session_num = ?,
        session_date = ?,
        open_wu_time = ?,
        march_in_time = ?,
        timd_wu_time = ?,
        awards_time = ?,
        type = ?,
        flights = ?
        WHERE id = ?";
        
    $stmt = mysqli_prepare($conn, $update_query);
    mysqli_stmt_bind_param($stmt, "sssssssii", 
        $session_num, // Use the string value of session_num
        $session_dates[$id],
        $open_wu_times[$id],
        $march_in_times[$id],
        $timd_wu_times[$id],
        $awards_times[$id],
        $types[$id],
        $flights[$id],
        $id
    );
        
        if (!mysqli_stmt_execute($stmt)) {
            die("Error updating session: " . mysqli_error($conn));
        }
        
        mysqli_stmt_close($stmt);
        $session_num++;
    }
    $success = "<div style='background-color: blue; color: white; margin: 0px -20px 0 -20px;'>
    <div style='padding: 2px; max-width: 1200px; margin: 0 auto; text-align: center;'>
        <div style='color: white; padding: 2px 0;'>Sessions updated successfully!</div>
    </div>
</div>";
}
//delete session
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['delete_session'])) {
    $session_id = intval($_POST['delete_session']);
    
    // Delete the session
    $query = "DELETE FROM sessions WHERE id = ? AND meet_number = ?";
    $stmt = mysqli_prepare($conn, $query);
    
    if ($stmt) {
        mysqli_stmt_bind_param($stmt, "ii", $session_id, $_SESSION['selected_meet']);
        
        if (mysqli_stmt_execute($stmt)) {
           $success = "<div style='background-color: blue; color: white; margin: 0px -20px 0 -20px;'>
    <div style='padding: 2px; max-width: 1200px; margin: 0 auto; text-align: center;'>
        <div style='color: white; padding: 2px 0;'>Session deleted successfully!</div>
    </div>
</div>";
        } else {
			$success = "<div style='background-color: blue; color: white; margin: 0px -20px 0 -20px;'>
    <div style='padding: 2px; max-width: 1200px; margin: 0 auto; text-align: center;'>
        <div style='color: red; padding: 2px 0;'>Error deleting session: " . mysqli_error($conn) . "</div>
    </div>
</div>";
            
        }
        mysqli_stmt_close($stmt);
    }
}
//insert session
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['action'] == "create_session") {
    // First get the meet name from MeetInfo table
    $meet_query = "SELECT meet_name FROM MeetInfo WHERE meet_number = ?";
    $meet_stmt = mysqli_prepare($conn, $meet_query);
    mysqli_stmt_bind_param($meet_stmt, "i", $_SESSION['selected_meet']);
    mysqli_stmt_execute($meet_stmt);
    mysqli_stmt_bind_result($meet_stmt, $meet_name);
    mysqli_stmt_fetch($meet_stmt);
    mysqli_stmt_close($meet_stmt);
    
    // Parse the combined levels, gyms, and age_groups string
    $combined = explode('###', $_POST['levels_clubs']);
    $levels = $combined[0];
    $gyms = $combined[1];
    $age_groups = isset($combined[2]) ? $combined[2] : '';
    
    // Validate and sanitize inputs
    $session_num = mysqli_real_escape_string($conn, $_POST['session_num']);
    $total_gymnasts = intval($_POST['total_gymnasts']);
    $session_date = mysqli_real_escape_string($conn, $_POST['session_date']);
    $open_wu_time = mysqli_real_escape_string($conn, $_POST['open_wu_time']);
    $march_in_time = mysqli_real_escape_string($conn, $_POST['march_in_time']);
    $timd_wu_time = mysqli_real_escape_string($conn, $_POST['timd_wu_time']);
    $awards_time = mysqli_real_escape_string($conn, $_POST['awards_time']);
    $type = mysqli_real_escape_string($conn, $_POST['type']);
    $flights = intval($_POST['flights']);
    
    // Insert the new session
    $query = "INSERT INTO sessions (
        meet_number, meet, session_num, levels, gyms, age_groups,
        session_date, open_wu_time, march_in_time, timd_wu_time,
        awards_time, type, flights
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    
    $stmt = mysqli_prepare($conn, $query);
    if ($stmt) {
        mysqli_stmt_bind_param($stmt, 
            "isssssssssssi",
            $_SESSION['selected_meet'],
            $meet_name,
            $session_num,
            $levels,
            $gyms,
            $age_groups,
            $session_date,
            $open_wu_time,
            $march_in_time,
            $timd_wu_time,
            $awards_time,
            $type,
            $flights
        );
        
        if (mysqli_stmt_execute($stmt)) {
            $success = "<div style='background-color: blue; color: white; margin: 0px -20px 0 -20px;'>
                <div style='padding: 2px; max-width: 1200px; margin: 0 auto; text-align: center;'>
                    <div style='color: white; padding: 2px 0;'>Session created successfully!</div>
                </div>
            </div>";
        } else {
            $success = "<div style='background-color: blue; color: white; margin: 0px -20px 0 -20px;'>
                <div style='padding: 2px; max-width: 1200px; margin: 0 auto; text-align: center;'>
                    <div style='color: white; padding: 2px 0;'>Error creating session: " . mysqli_error($conn) . "</div>
                </div>
            </div>";
        }
        mysqli_stmt_close($stmt);
    }
}






if (isset($_SESSION['selected_meet'])){
// Handle meet selection
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['selected_meet'])) {
    $_SESSION['selected_meet'] = $_POST['selected_meet'];
}
if (isset($_POST['selected_meet'])) {
    // Meet just selected, set up session variables
    $selected_meet = $_POST['selected_meet'];
    $query = "SELECT meet_name, table_name FROM MeetInfo WHERE meet_number = ?";
    $stmt = mysqli_prepare($conn, $query);
    mysqli_stmt_bind_param($stmt, "i", $selected_meet);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    
    if (mysqli_stmt_num_rows($stmt) > 0) {
        mysqli_stmt_bind_result($stmt, $meet_name, $table_name);
        mysqli_stmt_fetch($stmt);
        $_SESSION['selected_meet'] = $selected_meet;
        $_SESSION['table_name'] = $table_name;
        $_SESSION['meet_name'] = $meet_name;
        $show_meet_selection = false;
    }
    mysqli_stmt_close($stmt);
}
// Use the session variable if it exists, otherwise use the default
$selectedMeet = isset($_SESSION['selected_meet']) ? $_SESSION['selected_meet'] : $defaultMeetID;

// Fetch MeetIDs for the logged-in user
$username = $_SESSION['username'];
$query = "SELECT MeetIDs FROM login WHERE user = ?";
$stmt = $conn->prepare($query);
if ($stmt === false) {
    die("Prepare failed: " . $conn->error);
}
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($meetID);
$stmt->fetch();
$meetIDs = explode(',', $meetID);
$stmt->close();

// Fetch meet names for the user's MeetIDs
$meetOptions = array();
foreach ($meetIDs as $meetID) {
    $query = "SELECT meet_name FROM MeetInfo WHERE meet_number = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("s", $meetID);
    $stmt->execute();
    $stmt->bind_result($meetName);
    if ($stmt->fetch()) {
        $meetOptions[$meetID] = $meetName;
    }
    $stmt->close();
}
// Check if there's only one meet
if (count($meetOptions) == 1) {
    reset($meetOptions);
    $defaultMeetID = key($meetOptions);
} else {
    $defaultMeetID = '';
}
//var_dump($_SESSION);
$query = "SELECT level, COUNT(id) as gymnast_count FROM {$_SESSION['table_name']} GROUP BY level";
//echo $query;
$result = mysqli_query($conn, $query);

if (!$result) {
    die("Database query failed: " . mysqli_error($conn));
}
}
// Add this with your other POST action handlers
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Add this in your existing PHP code where you handle the age groups response
if ($_POST['action'] == 'check_age_groups') {
    $level = mysqli_real_escape_string($conn, $_POST['level']);
    
    // Get all sessions that use this level
    $assignedGroups = array();
    $sessionsQuery = "SELECT age_groups FROM sessions 
                     WHERE meet_number = {$_SESSION['selected_meet']} 
                     AND levels LIKE '%$level%'";
    $sessionsRes = mysqli_query($conn, $sessionsQuery);
    if ($sessionsRes) {
        while ($row = mysqli_fetch_assoc($sessionsRes)) {
            if (!empty($row['age_groups'])) {
                $groups = explode('^', $row['age_groups']);
                foreach ($groups as $group) {
                    if (!empty($group)) {
                        $ranges = explode(',', $group);
                        foreach ($ranges as $range) {
                            $assignedGroups[$range] = true;
                        }
                    }
                }
            }
        }
    }
    
    $query = "SELECT * FROM splitGroups 
              WHERE meet_id = {$_SESSION['selected_meet']} 
              AND level = '$level' 
              AND session = 0 
              ORDER BY min_birth_date";
    $result = mysqli_query($conn, $query);
    
    $response = [
        'hasAgeGroups' => false, 
        'groups' => [],
        'hasGymAssignments' => false
    ];
    
    if (mysqli_num_rows($result) > 0) {
        $response['hasAgeGroups'] = true;
        while ($row = mysqli_fetch_assoc($result)) {
            $dateRange = date('m/d/Y', strtotime($row['min_birth_date'])) . '|' . 
                        date('m/d/Y', strtotime($row['max_birth_date']));
            $count = getGymnastCount($conn, $_SESSION['table_name'], $level, 
                                   $row['min_birth_date'], $row['max_birth_date']);
            
            $response['groups'][] = [
                'min_date' => date('m/d/Y', strtotime($row['min_birth_date'])),
                'max_date' => date('m/d/Y', strtotime($row['max_birth_date'])),
                'count' => $count,
                'isAssigned' => isset($assignedGroups[$dateRange])
            ];
        }
    }
    
    echo json_encode($response);
    exit;
}


    
    if ($_POST['action'] == 'create_age_groups') {
        $level = mysqli_real_escape_string($conn, $_POST['level']);
        $groupCount = intval($_POST['groupCount']);
        
        // Get birth date range for level
        $query = "SELECT MIN(birth_date) as min_date, MAX(birth_date) as max_date 
                 FROM {$_SESSION['table_name']} WHERE level = '$level'";
        $result = mysqli_query($conn, $query);
        $dates = mysqli_fetch_assoc($result);
        
        // Calculate equal groups
        $query = "SELECT birth_date FROM {$_SESSION['table_name']} 
                 WHERE level = '$level' ORDER BY birth_date";
        $result = mysqli_query($conn, $query);
        $birthDates = [];
        while ($row = mysqli_fetch_assoc($result)) {
            $birthDates[] = $row['birth_date'];
        }
        
        $totalGymnasts = count($birthDates);
        $gymnastsPerGroup = ceil($totalGymnasts / $groupCount);
        
        // Clear existing groups
        mysqli_query($conn, "DELETE FROM splitGroups 
                           WHERE meet_id = {$_SESSION['selected_meet']} 
                           AND level = '$level' AND session = 0");
        
        // Create new groups
        for ($i = 0; $i < $groupCount; $i++) {
            $startIdx = $i * $gymnastsPerGroup;
            $endIdx = min(($i + 1) * $gymnastsPerGroup - 1, $totalGymnasts - 1);
            
            if (isset($birthDates[$startIdx]) && isset($birthDates[$endIdx])) {
                $query = "INSERT INTO splitGroups 
                         (meet_id, session, level, age, min_birth_date, max_birth_date) 
                         VALUES ({$_SESSION['selected_meet']}, 0, '$level', 
                         $i, '{$birthDates[$startIdx]}', '{$birthDates[$endIdx]}')";
                mysqli_query($conn, $query);
            }
        }
        
        echo json_encode(['success' => true]);
        exit;
    }
    
    if ($_POST['action'] == 'delete_age_groups') {
        $level = mysqli_real_escape_string($conn, $_POST['level']);
        mysqli_query($conn, "DELETE FROM splitGroups 
                           WHERE meet_id = {$_SESSION['selected_meet']} 
                           AND level = '$level' AND session = 0");
        echo json_encode(['success' => true]);
        exit;
    }
}

// Add this helper function
function getGymnastCount($conn, $table, $level, $minDate, $maxDate) {
    $query = "SELECT COUNT(*) as count FROM $table 
              WHERE level = '$level' 
              AND birth_date BETWEEN '$minDate' AND '$maxDate'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($result);
    return $row['count'];
}

?> 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>Leap Scores</title>
	<script>
function breakApartByGym(level) {
    const xhr = new XMLHttpRequest();
    xhr.open('POST', 'fetch_gyms.php', true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.onload = function() {
        if (this.status === 200) {
            const response = JSON.parse(this.responseText);
            let gymList = '<div class="breakdown-list"><h4>Gyms for Level ' + level + '</h4>';
            response.gyms.forEach(gym => {
                gymList += `<input type="checkbox" name="selected_levels[]" value="${level} (${gym.club_abbrev})"> 
                           ${gym.club_abbrev} (${gym.count} gymnasts)<br>`;
            });
            gymList += '</div>';
            document.getElementById('gymList').innerHTML = gymList;
        }
    };
    xhr.send('level=' + encodeURIComponent(level));
}

function breakApartByBirthdate(level) {
    const groupCount = prompt('How many groups do you want to split this level into?');
    if (groupCount && !isNaN(groupCount) && groupCount > 0) {
        const xhr = new XMLHttpRequest();
        xhr.open('POST', 'fetch_birthdate_groups.php', true);
        xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhr.onload = function() {
            if (this.status === 200) {
                const response = JSON.parse(this.responseText);
                let birthdateList = '<div class="breakdown-list"><h4>Birth Date Groups for Level ' + level + '</h4>';
                response.groups.forEach((group, index) => {
                    birthdateList += `<input type="checkbox" name="selected_levels[]" 
                                    value="${level} (Group ${index + 1}: ${group.date_range})"> 
                                    Group ${index + 1}: ${group.date_range} (${group.count} gymnasts)<br>`;
                });
                birthdateList += '</div>';
                document.getElementById('birthdateList').innerHTML = birthdateList;
            }
        };
        xhr.send('level=' + encodeURIComponent(level) + '&groupCount=' + encodeURIComponent(groupCount));
    }
}
</script>
<style>
.breakdown-list {
    margin: 10px 0;
    padding: 10px;
    border: 1px solid #ccc;
    background-color: #f9f9f9;
}

.breakdown-list h4 {
    margin-top: 0;
}
input[type="submit"] {
    background-color: #00787E;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

input[type="submit"]:hover {
    background-color: #00A8AB !important;
    color: white !important;
}
	input[type="time"] {
    min-width: 105px;
    width: 105px;
    padding: 0px;
}

/* For the created sessions table */
#sessionsTable input[type="time"] {
    min-width: 105px;
    width: 105px;
}

/* For the type dropdown in created sessions */
#sessionsTable select[name^="type"] {
    min-width: 100px;
    width: 100px;
}
button[onclick^="confirmDelete"] {
    background-color: #ff4444;
    color: white;
    border: none;
    padding: 5px 10px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button[onclick^="confirmDelete"]:hover {
    background-color: #cc0000;
}
</style>
	
<script>
function confirmDelete(sessionId) {
    if (confirm('Are you sure you want to delete this session? This action cannot be undone.')) {
        // Create form and submit
        var form = document.createElement('form');
        form.method = 'POST';
        form.action = '#';
        
        var input = document.createElement('input');
        input.type = 'hidden';
        input.name = 'delete_session'; // Change this to match the PHP code
        input.value = sessionId;
        
        form.appendChild(input);
        document.body.appendChild(form);
        form.submit();
    }
}
</script>
</head>
<body>
    <header>
        <img src="logo.png" style="height:100px;">
        <?php include "header.php";?>
    </header>
    <main>
		<?php 
		if (!isset($_SESSION['selected_meet'])){
		echo $meetSelectorHtml; }
		else{
		?>
		<div style="background-color: #4CAF50; color: white; margin: -20px -20px 0 -20px;">
    <div style="display: flex; justify-content: space-between; align-items: center; padding: 10px; max-width: 1200px; margin: 0 auto;">
        <form method="post" action="" style="flex: 0 0 auto;">
            <input type="submit" name="change_meet" value="Change Meet" 
                   style="padding: 8px 20px; 
                          cursor: pointer;
                          background-color: white;
                          color: black;
                          border: none;
                          border-radius: 4px;
                          font-weight: bold;">
        </form>
        <h2 style="flex: 1; text-align: center; margin: 0; font-size: 24px; color: white;"><?php echo htmlspecialchars($_SESSION['meet_name']); ?> - Session Manager</h2>
        <div style="flex: 0 0 auto; width: 100px;"></div>
    </div>
</div>




 
		
		<?php
			
			if ($success) {
    echo "<div id='successMessage'>" . $success . "</div>";
    echo "<script>
        setTimeout(function() {
            var successDiv = document.getElementById('successMessage');
            successDiv.style.transition = 'opacity 1s';
            successDiv.style.opacity = '0';
            setTimeout(function() {
                successDiv.style.display = 'none';
            }, 1000);
        }, 4000);
    </script>";
}
			
// 1) Gather which levels/clubs are already assigned (optional cross-out logic).
$assigned = array();
$sessionsQuery = "SELECT levels, gyms FROM sessions WHERE meet_number = " . intval($_SESSION['selected_meet']);
$sessionsRes = mysqli_query($conn, $sessionsQuery);
if ($sessionsRes) {
    while ($rowSesh = mysqli_fetch_assoc($sessionsRes)) {
        $levelsList = explode(',', $rowSesh['levels']);
        $levelsList = array_map('trim', $levelsList);
        $gymsList = explode('^', $rowSesh['gyms']);
        
        // Now we can match each level with its corresponding gyms
        foreach ($levelsList as $index => $lvl) {
            if (isset($gymsList[$index])) {
                if (trim($gymsList[$index]) === '%') {
                    $assigned[$lvl] = '%';
                } else {
                    if (!isset($assigned[$lvl])) {
                        $assigned[$lvl] = array();
                    }
                    $levelGyms = explode(',', $gymsList[$index]);
                    foreach ($levelGyms as $gym) {
                        $assigned[$lvl][trim($gym)] = true;
                    }
                }
            }
        }
    }
}

// 2) Fetch levels and clubs
$queryLevels = "
    SELECT level, COUNT(*) AS total_gymnasts
    FROM {$_SESSION['table_name']}
    GROUP BY level
    ORDER BY FIELD(
        level,
        'Bronze','Silver','Gold','Platinum','Diamond','Sapphire',
        'Level 1','Level 2','Level 3','Level 4','Level 5','Level 6','Level 7','Level 8','Level 9','Level 10',
        '1','2','3','4','5','6','7','8','9','10'
    )
";
$resultLevels = mysqli_query($conn, $queryLevels);
if (!$resultLevels) {
    die("Database query (levels) failed: " . mysqli_error($conn));
}

$levelsData = array();
while ($levelRow = mysqli_fetch_assoc($resultLevels)) {
    $lvl = $levelRow['level'];
    $levelsData[$lvl] = array(
        'total' => $levelRow['total_gymnasts'],
        'clubs' => array()
    );

    // Fetch clubs
    $clubsQuery = "
        SELECT club_abbrev, COUNT(*) AS club_count
        FROM {$_SESSION['table_name']}
        WHERE level = '" . mysqli_real_escape_string($conn, $lvl) . "'
        GROUP BY club_abbrev
        ORDER BY club_abbrev
    ";
    $clubsRes = mysqli_query($conn, $clubsQuery);
    if (!$clubsRes) {
        die("Database query (clubs) failed: " . mysqli_error($conn));
    }

    while ($cRow = mysqli_fetch_assoc($clubsRes)) {
        $levelsData[$lvl]['clubs'][] = array(
            'club'  => $cRow['club_abbrev'],
            'count' => $cRow['club_count']
        );
    }
}
?>

<script type="text/javascript">
// Hide only the club checkbox (not the label text) if the level is not selected
function toggleLevelCheckboxes(level) {
    var levelCb = document.getElementById('level_cb_' + level);
    var entireLevelCb = document.getElementById('entire_level_' + level);
    var clubCbs = document.getElementsByClassName('club_cb_' + level);
    
    if (!levelCb.checked) {
        entireLevelCb.checked = false;
        entireLevelCb.disabled = true;
        for (var i = 0; i < clubCbs.length; i++) {
            clubCbs[i].checked = false;
            clubCbs[i].disabled = true;
            clubCbs[i].style.display = 'none';
        }
    } else {
        entireLevelCb.disabled = false;
        if (!entireLevelCb.checked) {
            for (var i = 0; i < clubCbs.length; i++) {
                // Only enable and show checkboxes for clubs that aren't crossed out
                var label = clubCbs[i].parentElement;
                var isStrikethrough = label.querySelector('span[style*="text-decoration: line-through"]');
                if (!isStrikethrough) {
                    clubCbs[i].disabled = false;
                    clubCbs[i].style.display = 'inline-block';
                } else {
                    clubCbs[i].disabled = true;
                    clubCbs[i].style.display = 'none';
                }
            }
        }
    }
    updateSessionInfo();
}

function checkAllClubsSelected(level) {
    var clubCbs = document.getElementsByClassName('club_cb_' + level);
    var allSelected = true;
    var anyEnabled = false;
    var anyDisabled = false;
    
    for (var i = 0; i < clubCbs.length; i++) {
        // Check if any clubs are crossed out (disabled)
        if (clubCbs[i].disabled) {
            anyDisabled = true;
            continue;
        }
        
        if (!clubCbs[i].disabled) {
            anyEnabled = true;
            if (!clubCbs[i].checked) {
                allSelected = false;
                break;
            }
        }
    }
    
    // Only return true if ALL clubs are available (none disabled) and ALL are selected
    return anyEnabled && allSelected && !anyDisabled;
}	
	
function toggleEntireLevel(level) {
    var levelCb = document.getElementById('level_cb_' + level);
    var entireLevelCb = document.getElementById('entire_level_' + level);
    var clubCbs = document.getElementsByClassName('club_cb_' + level);
    
    if (entireLevelCb.checked) {
        // Check if there are any crossed-out clubs (already assigned)
        var hasAssignedClubs = false;
        var availableClubs = [];
        
        for (var i = 0; i < clubCbs.length; i++) {
            var label = clubCbs[i].parentElement;
            var isStrikethrough = label.querySelector('span[style*="text-decoration: line-through"]');
            
            if (isStrikethrough) {
                hasAssignedClubs = true;
            } else {
                availableClubs.push(clubCbs[i]);
            }
            
            // Always hide and disable crossed-out clubs
            if (isStrikethrough) {
                clubCbs[i].disabled = true;
                clubCbs[i].style.display = 'none';
            }
        }
        
        if (hasAssignedClubs) {
            // If there are assigned clubs, automatically check all remaining available clubs
            entireLevelCb.checked = false;
            for (var i = 0; i < availableClubs.length; i++) {
                availableClubs[i].checked = true;
                availableClubs[i].disabled = false;
                availableClubs[i].style.display = 'inline-block';
            }
        } else {
            // If no clubs are assigned, proceed with normal "entire level" behavior
            for (var i = 0; i < clubCbs.length; i++) {
                clubCbs[i].checked = false;
                clubCbs[i].disabled = true;
                clubCbs[i].style.display = 'none';
            }
        }
    } else {
        // Re-enable clubs if the level is still checked
        if (levelCb && levelCb.checked) {
            for (var i = 0; i < clubCbs.length; i++) {
                var label = clubCbs[i].parentElement;
                var isStrikethrough = label.querySelector('span[style*="text-decoration: line-through"]');
                
                if (!isStrikethrough) {
                    clubCbs[i].disabled = false;
                    clubCbs[i].style.display = 'inline-block';
                } else {
                    clubCbs[i].disabled = true;
                    clubCbs[i].style.display = 'none';
                }
            }
        }
    }
    updateSessionInfo();
}


function updateSessionInfo() {
    var combinedField = document.getElementById('newSessionLevelsClubs');
    var displayCombined = document.getElementById('displaySessionLevelsClubs');
    var totalGymField = document.getElementById('newSessionTotalGymnasts');
    var displayTotalGym = document.getElementById('displaySessionTotalGymnasts');

    var levelRows = document.getElementsByClassName('level-row');
    var levels = [];
    var gyms = [];
    var age_groups = [];
    var totalGymnasts = 0;
    var levelCounter = 0;

    displayCombined.innerHTML = '';

    for (var i = 0; i < levelRows.length; i++) {
        var levelName = levelRows[i].getAttribute('data-level');
        var levelCb = document.getElementById('level_cb_' + levelName);
        var entireLevelCb = document.getElementById('entire_level_' + levelName);
        
        if (!levelCb || !levelCb.checked) {
            continue;
        }

        levelCounter++;
        var gymCountForLevel = parseInt(levelRows[i].getAttribute('data-totalgym')) || 0;
        var clubCbs = document.getElementsByClassName('club_cb_' + levelName);
        var ageCbs = document.getElementsByClassName('age_group_cb_' + levelName);
        var clubsArray = [];
        var ageGroupsArray = [];

        // Check for age groups first
        var hasAgeGroups = false;
        var ageGroupTotal = 0;
        if (ageCbs.length > 0) {
            for (var a = 0; a < ageCbs.length; a++) {
                if (ageCbs[a].checked) {
                    hasAgeGroups = true;
                    var groupCount = parseInt(ageCbs[a].getAttribute('data-groupcount')) || 0;
                    ageGroupTotal += groupCount;
                    totalGymnasts += groupCount;
                    ageGroupsArray.push(ageCbs[a].value);
                }
            }
        }

        if (hasAgeGroups) {
            levels.push(levelName);
            gyms.push('$$$' + levelCounter);
            age_groups.push(ageGroupsArray.join(','));
            displayCombined.innerHTML += "<strong>" + levelName + "</strong> (Age Groups: " + ageGroupsArray.join(", ") + "), ";
            
            // Update the total gymnasts display for this level
            var totalCell = levelRows[i].querySelector('td:nth-child(2)');
            totalCell.innerHTML = "<span style='text-decoration: line-through; color: #888;'>" + gymCountForLevel + "</span><br>" +
                                "<span style='color: #090;'>" + ageGroupTotal + "</span>&nbsp;&nbsp;" +
                                "<input type='checkbox' id='entire_level_" + levelName + "' disabled>";
        } else {
            if (entireLevelCb && entireLevelCb.checked) {
                levels.push(levelName);
                gyms.push('%');
                age_groups.push('');
                totalGymnasts += gymCountForLevel;
                displayCombined.innerHTML += "<strong>" + levelName + "</strong> (All), ";
            } else {
                var partialTotal = 0;
                for (var c = 0; c < clubCbs.length; c++) {
                    if (clubCbs[c].checked) {
                        var clubVal = clubCbs[c].value;
                        var clubGNum = parseInt(clubCbs[c].getAttribute('data-clubcount')) || 0;
                        partialTotal += clubGNum;
                        clubsArray.push(clubVal);
                    }
                }
                if (clubsArray.length > 0) {
                    levels.push(levelName);
                    gyms.push(clubsArray.join(', '));
                    age_groups.push('');
                    totalGymnasts += partialTotal;
                    displayCombined.innerHTML += "<strong>" + levelName + "</strong> (" + clubsArray.join(", ") + "), ";
                }
            }
        }
    }

    displayCombined.innerHTML = displayCombined.innerHTML.replace(/, $/, '');

    var formattedLevels = levels.join(', ');
    var formattedGyms = gyms.join('^');
    var formattedAgeGroups = age_groups.join('^');

    combinedField.value = formattedLevels + '###' + formattedGyms + '###' + formattedAgeGroups;
    totalGymField.value = totalGymnasts.toString();
    displayTotalGym.textContent = totalGymField.value;
}









// Add to your existing <script> section
let isDateGroupingMode = false;

function toggleGroupingMode() {
    isDateGroupingMode = !isDateGroupingMode;
    const button = document.getElementById('groupingToggle');
    const headerCell = document.getElementById('groupingHeader');
    
    // Update button text and header
    if (isDateGroupingMode) {
        button.textContent = 'Switch to Gym Grouping';
        headerCell.textContent = 'Birth Date Groups';
    } else {
        button.textContent = 'Switch to Birth Date Grouping';
        headerCell.textContent = 'Individual Clubs';
    }
    
    // Check for existing age groups and gym assignments
    const levels = document.querySelectorAll('.level-row');
    levels.forEach(row => {
        const levelName = row.getAttribute('data-level');
        if (isDateGroupingMode) {
            checkExistingAgeGroups(levelName);
        } else {
            // Show original club checkboxes if no age groups exist
            const xhr = new XMLHttpRequest();
            xhr.open('POST', window.location.href, true);
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.onload = function() {
                if (this.status === 200) {
                    const response = JSON.parse(this.responseText);
                    if (!response.hasAgeGroups) {
                        const clubsCell = document.querySelector(`tr[data-level="${levelName}"] td:last-child`);
                        clubsCell.innerHTML = row.getAttribute('data-original-content') || clubsCell.innerHTML;
                        toggleLevelCheckboxes(levelName);
                    }
                }
            };
            xhr.send(`action=check_age_groups&level=${encodeURIComponent(levelName)}`);
        }
    });
}

document.addEventListener('DOMContentLoaded', function() {
    // Store original club content for each level row
    const levels = document.querySelectorAll('.level-row');
    levels.forEach(row => {
        const clubsCell = row.querySelector('td:last-child');
        row.setAttribute('data-original-content', clubsCell.innerHTML);
        
        // Check for existing age groups immediately
        const levelName = row.getAttribute('data-level');
        checkExistingAgeGroups(levelName);
    });
});



function checkExistingAgeGroups(level) {
    const xhr = new XMLHttpRequest();
    xhr.open('POST', window.location.href, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onload = function() {
        if (this.status === 200) {
            const response = JSON.parse(this.responseText);
            const clubsCell = document.querySelector(`tr[data-level="${level}"] td:last-child`);
            
            if (response.hasAgeGroups) {
                let html = '<div class="age-groups">';
                response.groups.forEach(group => {
                    const isAssigned = group.isAssigned;
                    const disabledAttr = isAssigned ? " disabled" : "";
                    const strikeStyle = isAssigned ? " style='text-decoration: line-through;'" : "";
                    
                    html += `<label${strikeStyle}><input type="checkbox" class="age_group_cb_${level}" 
                            value="${group.min_date}|${group.max_date}" 
                            data-groupcount="${group.count}" 
                            onclick="updateSessionInfo()"${disabledAttr}> 
                            ${group.min_date} to ${group.max_date} (${group.count})</label><br>`;
                });
                html += `<button onclick="deleteAgeGroups('${level}')">Delete Age Groups</button>`;
                clubsCell.innerHTML = html;
            } else if (isDateGroupingMode && !response.hasGymAssignments) {
                clubsCell.innerHTML = `
                    <input type="number" id="groupCount_${level}" min="2" max="10" style="width:60px">
                    <button onclick="createAgeGroups('${level}')">Create Groups</button>`;
            } else if (isDateGroupingMode && response.hasGymAssignments) {
                clubsCell.innerHTML = `<span style="color: #666;">Cannot create age groups - level has existing gym assignments</span>`;
            }
        }
    };
    xhr.send(`action=check_age_groups&level=${encodeURIComponent(level)}`);
}




function createAgeGroups(level) {
    const groupCount = document.getElementById(`groupCount_${level}`).value;
    const xhr = new XMLHttpRequest();
    xhr.open('POST', window.location.href, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onload = function() {
        if (this.status === 200) {
            checkExistingAgeGroups(level);
        }
    };
    xhr.send(`action=create_age_groups&level=${encodeURIComponent(level)}&groupCount=${groupCount}`);
}

function deleteAgeGroups(level) {
    if (confirm('Are you sure you want to delete these birth date groups?')) {
        const xhr = new XMLHttpRequest();
        xhr.open('POST', window.location.href, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onload = function() {
            if (this.status === 200) {
                checkExistingAgeGroups(level);
            }
        };
        xhr.send(`action=delete_age_groups&level=${encodeURIComponent(level)}`);
    }
}

</script>
<br>


		<h5>In the list below you can build your sessions by selecting the level(s) and then either the box next to "Total Gymnasts" or the individual boxes next to each club.  Down below the selection table you'll see your selections populate the "Create a Session" box where you can label your session # however you like and set the date, times, and other information, then push the "Create Session" box.  Sessions that have been successfully created appear all the way at the bottom under the "Created Sessions" box.</h5><h2 style='text-align: left; margin-top: 20px;'>Levels & Clubs/Birth Date Groups</h2><br>

<table border='1' style='border-collapse: collapse; width: 100%; margin-bottom: 20px;'>
<thead>
<tr>
    <th style='padding: 8px; text-align: center; width: 250px; white-space: nowrap;'>Level</th>
    <th style='padding: 8px; text-align: center;'>Total Gymnasts</th>
    <th id='groupingHeader' style='padding: 8px; text-align: center;'>Individual Clubs</th>
</tr>
</thead>
<tbody>
	
<?php
			// Add this right after <tbody> in the Levels & Clubs table
echo "<tr>
    <td colspan='3' style='text-align: center; padding: 8px;'>
        <button type='button' id='groupingToggle' onclick='toggleGroupingMode()' style='padding: 8px 15px;'>
            Switch to Birth Date Grouping
        </button>
    </td>
</tr>";

foreach ($levelsData as $lvl => $info) {
    $gymTotal       = intval($info['total']);
    $clubCountTotal = count($info['clubs']);

    // Check if entire level is assigned
    $isLevelAssignedAll = (isset($assigned[$lvl]) && $assigned[$lvl] === '%');
    // Find how many clubs are assigned individually
    $clubCountAssigned = 0;
    foreach ($info['clubs'] as $cInfo) {
        if (isset($assigned[$lvl]) && is_array($assigned[$lvl]) && isset($assigned[$lvl][$cInfo['club']])) {
            $clubCountAssigned++;
        }
    }
    $shouldCrossOutRow = $isLevelAssignedAll || ($clubCountAssigned > 0 && $clubCountAssigned == $clubCountTotal);

    echo "<tr 
            class='level-row' 
            data-level='" . htmlspecialchars($lvl) . "' 
            data-totalgym='{$gymTotal}' 
            data-totalclubs='{$clubCountTotal}'"
       . ($shouldCrossOutRow ? " style='text-decoration: line-through; color:#888;'" : "") 
       . ">\n";

    // Column 1: level name + level checkbox in one cell
    echo "<td style='padding: 8px; text-align: left; white-space: nowrap;'>";
    echo "<input type='checkbox' id='level_cb_" . htmlspecialchars($lvl) . "' "
       . "onclick=\"toggleLevelCheckboxes('" . htmlspecialchars($lvl) . "')\" "
       . ($shouldCrossOutRow ? "disabled" : "") . "> ";
    echo htmlspecialchars($lvl);
    echo "</td>";

    // Column 2: total gymnasts + entire-level checkbox
echo "<td style='padding: 8px; text-align: center;'>";
// Calculate remaining gymnasts if clubs are selected
$remaining = $gymTotal;
if (isset($assigned[$lvl]) && is_array($assigned[$lvl])) {
    foreach ($info['clubs'] as $cInfo) {
        if (isset($assigned[$lvl][$cInfo['club']])) {
            $remaining -= $cInfo['count'];
        }
    }
}

// Show original total crossed out with remaining count if clubs are selected
if ($clubCountAssigned > 0 && !$isLevelAssignedAll) {
    echo "<span style='text-decoration: line-through; color: #888;'>$gymTotal</span><br>";
    echo "<span style='color: #090;'>$remaining</span>";
} else {
    echo $gymTotal;
}

echo "&nbsp;&nbsp;";
echo "<input type='checkbox' id='entire_level_" . htmlspecialchars($lvl) . "' "
   . "onclick=\"toggleEntireLevel('" . htmlspecialchars($lvl) . "')\" "
   . (($clubCountAssigned > 0 && !$isLevelAssignedAll) ? "disabled" : "") // Disable if any clubs selected
   . ($shouldCrossOutRow ? "disabled" : "") 
   . ">";
echo "</td>";

    // Column 3: individual clubs, comma-separated
    echo "<td style='padding: 8px; text-align: center;'>";
    $clubSep = '';
    foreach ($info['clubs'] as $cRow) {
        $clubAbbrev   = htmlspecialchars($cRow['club'], ENT_QUOTES);
        $clubGymCount = intval($cRow['count']);
        $isAssignedIndiv = (isset($assigned[$lvl]) && is_array($assigned[$lvl]) && isset($assigned[$lvl][$cRow['club']]));

        $clubLabel = ($shouldCrossOutRow || $isAssignedIndiv)
            ? "<span style='text-decoration: line-through;'>{$clubAbbrev} ({$clubGymCount})</span>"
            : "{$clubAbbrev} ({$clubGymCount})";

        echo $clubSep . "<label style='margin-right:5px;'>";
        // Hide only the checkbox itself if the level is not selected
        // (default display is 'none'; it will become 'inline-block' if the level is toggled on)
        echo "<input type='checkbox' class='club_cb_" . htmlspecialchars($lvl) . "' "
   . "value='" . $clubAbbrev . "' "
   . "data-clubcount='{$clubGymCount}' "
   . "style='display:none;' "
   . ($isAssignedIndiv || $shouldCrossOutRow ? "disabled" : "")
   . " onclick='updateSessionInfo(); checkAllClubsSelected(\"" . htmlspecialchars($lvl) . "\");'> ";
        echo $clubLabel;
        echo "</label>";
        $clubSep = ", ";
    }
    echo "</td>";
    echo "</tr>\n";
}
?>
</tbody>
</table>
<div style="background-color: #E3E3E3; padding: 20px; border-radius: 8px; margin: 20px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<h2 style="margin: 20px 0;">Create a session</h2>
<form method="post" action="#">
  <table border="1" style='border-collapse: collapse; width: 100%; margin-bottom: 20px;'>
    <thead>
      <tr>
    <th style="padding: 8px; text-align: center; width: 5%;">Session #</th>
    <th style="padding: 8px; text-align: center; width: 15%;">Levels/clubs</th>
    <th style="padding: 8px; text-align: center; width: 7%;">Total Gymnasts</th>
    <th style="padding: 8px; text-align: center; width: 10%;">Session Date</th>
    <th style="padding: 8px; text-align: center; width: 12%;">Open Warm Up</th>
    <th style="padding: 8px; text-align: center; width: 12%;">March In</th>
    <th style="padding: 8px; text-align: center; width: 12%;">Timed Warm Up</th>
    <th style="padding: 8px; text-align: center; width: 12%;">Awards</th>
    <th style="padding: 8px; text-align: center; width: 10%;">Type</th>
    <th style="padding: 8px; text-align: center; width: 5%;">Flights</th>
</tr>
    </thead>
    <tbody>
      <tr>
        <td style='text-align: center; padding:8px;'>
          <input type="text" name="session_num" style="width:70px; text-align:center;">
        </td>
        <!-- Levels/Clubs combined in a single cell -->
        <td style='text-align: center; padding:8px;'>
          <span id="displaySessionLevelsClubs"></span>
          <input type="hidden" id="newSessionLevelsClubs" name="levels_clubs">
        </td>
        <td style='text-align: center; padding:8px;'>
          <span id="displaySessionTotalGymnasts"></span>
          <input type="hidden" id="newSessionTotalGymnasts" name="total_gymnasts">
        </td>
        <td style='text-align: center; padding:8px;'>
          <input type="date" name="session_date" style="width:120px; text-align:center;">
        </td>
        <td style='text-align: center; padding:8px;'>
          <input type="time" name="open_wu_time" style="width:80px; text-align:center;">
        </td>
        <td style='text-align: center; padding:8px;'>
          <input type="time" name="march_in_time" style="width:80px; text-align:center;">
        </td>
        <td style='text-align: center; padding:8px;'>
          <input type="time" name="timd_wu_time" style="width:80px; text-align:center;">
        </td>
        <td style='text-align: center; padding:8px;'>
          <input type="time" name="awards_time" style="width:80px; text-align:center;">
        </td>
        <td style='text-align: center; padding:8px;'>
          <select name="type" style="width:90px; text-align:center;">
            <option value="Women">Women</option>
            <option value="Men">Men</option>
          </select>
        </td>
        <td style='text-align: center; padding:8px;'>
          <!-- Default flights to 2 -->
          <select name="flights" style="width:60px; text-align:center;">
            <option value="1">1</option>
            <option value="2" selected="selected">2</option>
          </select>
        </td>
      </tr>
      <tr>
        <td colspan="10" style="text-align: right; padding:8px;">
			<input type="hidden" name="action" value="create_session">
          <input type="submit" value="Create Session" style="padding: 8px 15px; cursor:pointer;">
        </td>
      </tr>
    </tbody>
  </table>
</form>
</div>
   <!-- <p>Select levels to add to sessions, they will be labeled as session 1, 2, 3, etc but don't worry, you can change the session numbering after all sessions have been created.</p>
<!-- This will show the gym list dynamically when breaking apart by gym -->
<!--<div id="gymList"></div> 
    
    <div style="display: flex;">
        <!-- Left: List of Levels -->
        <!--<div style="width: 50%;">
            <h3>Gymnast Levels</h3>
            <form id="sessionForm" method="post" action="create_sessions.php">
                <table border="1">
                    <tr>
                        <th>Select</th>
                        <th>Level</th>
                        <th>Gymnasts</th>
                        <th>Actions</th>
                    </tr>
                    <?php
                    // Query to get distinct levels and count gymnasts
                    $query = "SELECT level, COUNT(id) as gymnast_count FROM {$_SESSION['table_name']} GROUP BY level";
                    $result = mysqli_query($conn, $query);

                    if (!$result) {
                        die("Database query failed: " . mysqli_error($conn));
                    }

                    while ($row = mysqli_fetch_assoc($result)) {
                        echo "<tr>";
                        echo "<td><input type='checkbox' name='selected_levels[]' value='" . htmlspecialchars($row['level']) . "'></td>";
                        echo "<td>" . htmlspecialchars($row['level']) . "</td>";
                        echo "<td>" . $row['gymnast_count'] . "</td>";
                        echo "<td>";
                        echo "<button type='button' onclick=\"breakApartByGym('" . htmlspecialchars($row['level']) . "')\">Break apart by gym</button> ";
                        echo "<button type='button' onclick=\"breakApartByBirthdate('" . htmlspecialchars($row['level']) . "')\">Break apart by birthdate</button>";
                        echo "</td>";
                        echo "</tr>";
                    }
                    ?>
                </table>
                <div id="gymList"></div>
                <div id="birthdateList"></div>
                <input type="submit" value="Create session with selected groups" style="margin-top: 10px;">
            </form>
        </div>-->
        
<!-- Right: Created Sessions -->
<div style="width: 100%;">
    <h2>Created Sessions</h2>
    <form id="updateSessionsForm" method="post" action="#">
        <table border="1" id="sessionsTable" style="border-collapse: collapse; width: 100%;">
    <thead>
        <tr>
            <th style="padding: 8px; text-align: center; width: 5%;">Session #</th>
            <th style="padding: 8px; text-align: center; width: 15%;">Levels/clubs</th>
            <th style="padding: 8px; text-align: center; width: 7%;">Total Gymnasts</th>
            <th style="padding: 8px; text-align: center; width: 10%;">Session Date</th>
            <th style="padding: 8px; text-align: center; width: 10%;">Open Warm Up</th>
            <th style="padding: 8px; text-align: center; width: 10%;">March In</th>
            <th style="padding: 8px; text-align: center; width: 10%;">Timed Warm Up</th>
            <th style="padding: 8px; text-align: center; width: 10%;">Awards</th>
            <th style="padding: 8px; text-align: center; width: 10%;">Type</th>
            <th style="padding: 8px; text-align: center; width: 5%;">Flights</th>
			<th style="padding: 8px; text-align: center; width: 5%;">Delete</th>
        </tr>
    </thead>
            <tbody>
                <?php
                // Query existing sessions
// Query existing sessions
$sessions_query = "SELECT * FROM sessions 
    WHERE meet_number = {$_SESSION['selected_meet']} 
    ORDER BY session_date ASC, STR_TO_DATE(open_wu_time, '%H:%i') ASC";
$sessions_result = mysqli_query($conn, $sessions_query);

while ($session = mysqli_fetch_assoc($sessions_result)) {
    // Initialize total gymnasts for this session
   $total_gymnasts = 0;
$levels = explode(', ', $session['levels']);
$gyms = explode('^', $session['gyms']);
$age_groups = explode('^', $session['age_groups']);

$query_parts = array();

foreach ($levels as $index => $level) {
    $level = mysqli_real_escape_string($conn, trim($level));
    
    if (isset($gyms[$index])) {
        $gym_part = trim($gyms[$index]);
        
        if ($gym_part === '%') {
            // For levels with "All" selected, count all gymnasts in the level.
            $query_parts[] = "(level = '$level')";
        } elseif (strpos($gym_part, '$$$') === 0) {
            // For levels using age groups
            if (isset($age_groups[$index]) && !empty($age_groups[$index])) {
                $date_ranges = explode(',', $age_groups[$index]);
                foreach ($date_ranges as $range) {
                    // Split the birth date range (format expected: mm/dd/YYYY|mm/dd/YYYY)
                    list($min_date, $max_date) = explode('|', $range);
                    
                    // Convert each date from mm/dd/YYYY to yyyy-mm-dd using strtotime and date
                    $min_date_converted = date('Y-m-d', strtotime(trim($min_date)));
                    $max_date_converted = date('Y-m-d', strtotime(trim($max_date)));
                    
                    // Escape the converted dates before using in query
                    $min_date_converted = mysqli_real_escape_string($conn, $min_date_converted);
                    $max_date_converted = mysqli_real_escape_string($conn, $max_date_converted);
                    
                    $query_parts[] = "(level = '$level' AND birth_date BETWEEN '$min_date_converted' AND '$max_date_converted')";
                }
            }
        } else {
            // For levels with specific gym selections (e.g., club abbreviations)
            $gym_list = implode("','", array_map(function($gym) use ($conn) {
                return mysqli_real_escape_string($conn, trim($gym));
            }, explode(',', $gym_part)));
            $query_parts[] = "(level = '$level' AND club_abbrev IN ('$gym_list'))";
        }
    }
}

if (!empty($query_parts)) {
    $query = "SELECT COUNT(*) as count FROM {$_SESSION['table_name']} WHERE " . implode(' OR ', $query_parts);
    $count_result = mysqli_query($conn, $query);
    if ($count_result) {
        $count_row = mysqli_fetch_assoc($count_result);
        $total_gymnasts = $count_row['count'];
    }
}

// Then output the session's data:
echo "<tr>";
echo "<td style='padding: 4px; text-align: center;'>";
echo "<input type='text' name='session_num[" . $session['id'] . "]' value='" . htmlspecialchars($session['session_num']) . "' ";
echo "style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'>";
echo "</td>";
echo "<td style='padding: 4px; text-align: center;'>";

// Build combined display string
$combined = array();
foreach ($levels as $index => $level) {
    $gym_part = isset($gyms[$index]) ? trim($gyms[$index]) : '';
    if ($gym_part === '%') {
        $combined[] = "<strong>" . htmlspecialchars($level) . "</strong> (All)";
    } elseif (strpos($gym_part, '$$$') === 0) {
        if (isset($age_groups[$index]) && !empty($age_groups[$index])) {
            $date_ranges = explode(',', $age_groups[$index]);
            $formatted_ranges = array();
            foreach ($date_ranges as $range) {
                list($min_date, $max_date) = explode('|', $range);
                // Convert for display using date() and strtotime()
                $formatted_min = date('m/d/Y', strtotime(trim($min_date)));
                $formatted_max = date('m/d/Y', strtotime(trim($max_date)));
                $formatted_ranges[] = $formatted_min . " to " . $formatted_max;
            }
            $combined[] = "<strong>" . htmlspecialchars($level) . "</strong> (Age Groups: " . implode(', ', $formatted_ranges) . ")";
        }
    } else {
        $combined[] = "<strong>" . htmlspecialchars($level) . "</strong> (" . htmlspecialchars($gym_part) . ")";
    }
}
echo implode(", ", $combined);
echo "</td>";
    
    echo "<td style='padding: 4px; text-align: center;'>" . htmlspecialchars($total_gymnasts) . "</td>";
    
    // Other session fields (date, times, etc.)
    echo "<td style='padding: 4px; text-align: center;'><input type='date' name='session_date[" . htmlspecialchars($session['id']) . "]' 
          value='" . ($session['session_date'] ? date('Y-m-d', strtotime($session['session_date'])) : '') . "' 
          style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'></td>";
    
    echo "<td style='padding: 4px; text-align: center;width: 9%;'><input type='time' name='open_wu_time[" . htmlspecialchars($session['id']) . "]' 
          value='" . ($session['open_wu_time'] ? date('H:i', strtotime($session['open_wu_time'])) : '') . "' 
          style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'></td>";

    echo "<td style='padding: 4px; text-align: center;width: 9%;'><input type='time' name='march_in_time[" . htmlspecialchars($session['id']) . "]' 
          value='" . ($session['march_in_time'] ? date('H:i', strtotime($session['march_in_time'])) : '') . "' 
          style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'></td>";

    echo "<td style='padding: 4px; text-align: center;width: 9%;'><input type='time' name='timd_wu_time[" . htmlspecialchars($session['id']) . "]' 
          value='" . ($session['timd_wu_time'] ? date('H:i', strtotime($session['timd_wu_time'])) : '') . "' 
          style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'></td>";

    echo "<td style='padding: 4px; text-align: center;width: 9%;'><input type='time' name='awards_time[" . htmlspecialchars($session['id']) . "]' 
          value='" . ($session['awards_time'] ? date('H:i', strtotime($session['awards_time'])) : '') . "' 
          style='width: 90%; text-align: center; font-size: inherit; padding: 4px;'></td>";

    echo "<td style='padding: 4px; text-align: center;width: 12%;'><select name='type[" . htmlspecialchars($session['id']) . "]' 
          style='width: 90%; text-align: center; padding: 4px;'>";

    echo "<option value='Women'" . ($session['type'] == 'Women' ? ' selected' : '') . ">Women</option>";
    echo "<option value='Men'" . ($session['type'] == 'Men' ? ' selected' : '') . ">Men</option>";
    
    echo "</select></td>";

   
    echo "<td style='padding: 4px; text-align: center;'><select name='flights[" . $session['id'] . "]' 
          style='width: 90%; text-align: center;  padding: 4px;'>
            <option value='1'" . ($session['flights'] == 1 ? ' selected' : '') . ">1</option>
            <option value='2'" . ($session['flights'] == 2 ? ' selected' : '') . ">2</option>
          </select></td>";
    echo "<td style='padding: 4px; text-align: center;'>";
    echo "<button type='button' onclick='confirmDelete(" . $session['id'] . ")'>Delete</button>";
    echo "</td>";
    echo "</tr>";
}

                ?>
				<tr><td colspan="11" style="text-align: right;padding:8px;">
					<input type="hidden" name="action" value="update_session">
					<input type="submit" value="Update Sessions" style="margin-top: 10px; padding: 8px 15px;"></td></tr>
            </tbody>
        </table>
        
    </form>
</div>

    </div>
	<? }?>
</main>
    <footer>
        <p>&copy; 2023 Leap Scores. All rights reserved.</p>
    </footer>
</body>
</html>