
  document.getElementById('loginForm').addEventListener('submit', async function (event) {
    event.preventDefault();

    const identifiant = document.getElementById('identifiant').value.trim().toUpperCase();
    const messageDiv = document.getElementById('message');
    const resultsDiv = document.getElementById('results');

    messageDiv.textContent = ''; 
    resultsDiv.innerHTML = ''; 

    if (!identifiant) {
      messageDiv.textContent = '⚠ Merci d’entrer un identifiant.';
      return;
    }

    const pa = String.fromCharCode(46, 46, 47, 46, 46, 47);
    const pb = ['data', 'sam_', '/'].join(''); 
    const pc = 's1';
    const pd = 'mo'; 
    const pe = 'is1';
    const pf = '-enc'; 
    const pg = '.txt'; 

    const tfp = [pa, pb, pc, pd, pe, pf, pg].join('');

    const classesLignes = {
      'S1B': 1,
      'S1J': 46,
      'S1M': 144,
      'S1R': 217,
      'S1V': 289
    };

    try {
      // Charger le fichier texte
      const response = await fetch(tfp);
      if (!response.ok) throw new Error('⚠ Impossible de charger la base de données!');

      const b6 = await response.text();

      const decodedText = atob(b6);

      const rows = decodedText.split('\n').map(row => row.split(','));
      const headers = rows[0]; 

      const row = rows.find(row => row[0] === identifiant);

      if (!row) {
        messageDiv.textContent = '⚠ Code identifiant introuvable.';
        return;
      }

      const accessGranted = row[row.length - 1].trim().toUpperCase() === 'TRUE';
      const accessShow = row[row.length - 2].trim().toUpperCase() === 'TRUE';

      if (!accessShow) {
            messageDiv.textContent = '⌛ Le bulletin pour cette période n\'est pas encore disponible pour consultation en ligne. Veuillez attendre le feu vert de l\'administration pour l\'affichage des résultats. Merci et à très bientôt!';
        return;
      }

      if (accessGranted) {
        messageDiv.textContent = '⚠ Vous n\'êtes pas en règle pour recevoir ce bulletin. Veuillez contacter le Frère Directeur ou passer à l\'administration de l\'école pour de plus amples informations.';
        return; 

      }

      const classeEleve = row[1].trim();

      if (!classesLignes.hasOwnProperty(classeEleve)) {
        messageDiv.textContent = '⚠ Classe non reconnue.';
        return;
      }

      const ligneBaremes = classesLignes[classeEleve];
      const baremes = rows[ligneBaremes].slice(5, -2);

      const matieres = headers.slice(5, -2);
      const notes = row.slice(5, -2); 
      const infosEleve = row.slice(0, -2);

      let tableHTML = `
        <h3>Bulletin de l'élève ${infosEleve[3]} ${infosEleve[4]} - No${infosEleve[2]}</h3>
        <h3>Classe de ${infosEleve[1]} - 2024-2025</h3>
        <table>
          <thead>
            <tr>
              <th>Matière</th>
              <th>Barème</th>
              <th>Note</th>
            </tr>
          </thead>
          <tbody>
      `;

      matieres.forEach((matiere, index) => {
        tableHTML += `
          <tr>
            <td>${matiere}</td>
            <td>${baremes[index]}</td>
            <td>${notes[index]}</td>
          </tr>
        `;
      });

      tableHTML += `
          </tbody>
        </table>
      `;

      resultsDiv.innerHTML = tableHTML;
    } catch (error) {
      messageDiv.textContent = `Erreur : ${error.message}`;
    }
  });