<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="google-adsense-account" content="ca-pub-6021239622180334">
  <title>Conseils SEO personnalisés - Analyse de votre page</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <!-- Publicité en haut -->
  <div class="ads-container">
    <ins class="adsbygoogle"
         style="display:block"
         data-ad-client="ca-pub-6021239622180334"
         data-ad-slot="1234567890"
         data-ad-format="auto"
         data-full-width-responsive="true"></ins>
  </div>

  <div class="container">
    <div class="header">
      <h1>Conseils SEO personnalisés</h1>
      <p>Analyse SEO automatisée basée sur des signaux techniques et des indicateurs de performance mesurables.</p>
    </div>

    <div id="page-url" class="page-url" style="display: none;">
      <strong>Page analysée :</strong>
      <span id="url-text"></span>
    </div>

    <div id="loading" class="loading">
      <p>Chargement de l'analyse SEO...</p>
    </div>

    <div id="no-data" class="no-data" style="display: none;">
      <h2>Aucune donnée disponible</h2>
      <p>Veuillez analyser votre page avec l'extension Chrome SEO Analysis Premium.</p>
    </div>

    <div id="advice-container" style="display: none;"></div>

    <!-- Publicité après l'intro -->
    <div class="ads-container">
      <ins class="adsbygoogle"
           style="display:block"
           data-ad-client="ca-pub-6021239622180334"
           data-ad-slot="1234567890"
           data-ad-format="auto"
           data-full-width-responsive="true"></ins>
    </div>
  </div>

  <!-- Script Google AdSense -->
  <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6021239622180334"
     crossorigin="anonymous"></script>

  <!-- ============================================
       SCRIPT PRINCIPAL - CHARGÉ EN PREMIER
       ============================================ -->
  <script>
    'use strict';
    
    // ============================================
    // 1. INITIALISATION ET VARIABLES GLOBALES
    // ============================================
    let seoData = null;
    let scriptsLoaded = {
      seoAdviceGenerator: false,
      seoRulesEngine: false,
      supabaseClient: false
    };
    
    // ============================================
    // 2. DISPLAYADVICE - DÉFINIE IMMÉDIATEMENT
    // ============================================
    function displayAdvice() {
      console.log('🔍 displayAdvice appelé');
      
      // Guard clause : vérifier que seoData existe
      if (!seoData) {
        console.error('❌ Aucune donnée SEO disponible');
        const loadingEl = document.getElementById('loading');
        const noDataEl = document.getElementById('no-data');
        if (loadingEl) loadingEl.style.display = 'none';
        if (noDataEl) noDataEl.style.display = 'block';
        return;
      }

      // Masquer le loading et no-data
      const loadingEl = document.getElementById('loading');
      const noDataEl = document.getElementById('no-data');
      const adviceContainer = document.getElementById('advice-container');
      
      if (loadingEl) loadingEl.style.display = 'none';
      if (noDataEl) noDataEl.style.display = 'none';
      if (!adviceContainer) {
        console.error('❌ advice-container non trouvé dans le DOM');
        return;
      }

      // Afficher l'URL
      const urlTextEl = document.getElementById('url-text');
      const pageUrlEl = document.getElementById('page-url');
      if (seoData.url && urlTextEl) {
        urlTextEl.textContent = seoData.url;
        if (pageUrlEl) pageUrlEl.style.display = 'block';
      }

      // Guard clause : vérifier que generateSEOAdvice est disponible
      if (typeof generateSEOAdvice !== 'function') {
        console.error('❌ generateSEOAdvice n\'est pas disponible');
        adviceContainer.innerHTML = `
          <div class="no-data">
            <h2>Erreur de chargement</h2>
            <p>Le moteur de règles SEO n'est pas chargé. Veuillez recharger la page.</p>
            <p style="font-size: 12px; margin-top: 10px;">
              Scripts chargés: ${JSON.stringify(scriptsLoaded)}
            </p>
          </div>
        `;
        adviceContainer.style.display = 'block';
        return;
      }

      console.log('✅ generateSEOAdvice disponible, génération des conseils...');
      
      // Générer les conseils avec gestion d'erreur
      let advice = [];
      try {
        advice = generateSEOAdvice(seoData);
        console.log('✅ Conseils générés:', advice.length, 'conseils');
      } catch (error) {
        console.error('❌ Erreur lors de la génération des conseils:', error);
        adviceContainer.innerHTML = `
          <div class="no-data">
            <h2>Erreur lors de la génération</h2>
            <p>Une erreur est survenue lors de la génération des conseils SEO.</p>
            <pre style="font-size: 12px; margin-top: 10px;">${error.message}\n${error.stack}</pre>
          </div>
        `;
        adviceContainer.style.display = 'block';
        return;
      }

      if (advice.length === 0) {
        adviceContainer.innerHTML = `
          <div class="no-data">
            <h2>✅ Aucun problème détecté</h2>
            <p>Votre page semble bien optimisée ! Aucun problème SEO majeur n'a été identifié.</p>
          </div>
        `;
        adviceContainer.style.display = 'block';
        return;
      }

      // Grouper par catégorie
      const adviceByCategory = {};
      advice.forEach(item => {
        if (!adviceByCategory[item.category]) {
          adviceByCategory[item.category] = [];
        }
        adviceByCategory[item.category].push(item);
      });

      // Afficher les conseils
      let html = '';
      Object.keys(adviceByCategory).forEach(category => {
        html += `
          <div class="advice-section">
            <h2 class="advice-section-title">${category}</h2>
            <div class="advice-list">
        `;

        adviceByCategory[category].forEach(item => {
          let formatted = item;
          if (typeof formatAdvice === 'function') {
            try {
              formatted = formatAdvice(item);
            } catch (e) {
              console.warn('⚠️ Erreur formatAdvice:', e);
              formatted = item;
            }
          }
          
          if (!formatted.urgencyIcon) {
            const urgencyIcons = {
              'Immediate': '🔴',
              'Soon': '🟠',
              'Optional': '🔵',
            };
            formatted.urgencyIcon = urgencyIcons[item.urgency] || '⚪';
          }
          
          html += `
            <div class="advice-card">
              <div class="advice-header">
                <span class="advice-category">${item.category}</span>
                <div class="advice-badges">
                  <span class="badge badge-severity-${item.severity.toLowerCase()}">${item.severity}</span>
                  <span class="badge badge-urgency">${formatted.urgencyIcon} ${item.urgency}</span>
                </div>
              </div>
              <div class="advice-problem">${item.problem}</div>
              <div class="advice-action">${item.action}</div>
            </div>
          `;
        });

        html += `
            </div>
          </div>
        `;
      });

      adviceContainer.innerHTML = html;
      adviceContainer.style.display = 'block';

      // Initialiser les publicités AdSense
      try {
        (adsbygoogle = window.adsbygoogle || []).push({});
        (adsbygoogle = window.adsbygoogle || []).push({});
        (adsbygoogle = window.adsbygoogle || []).push({});
      } catch (e) {
        console.error('Erreur AdSense:', e);
      }
    }
    
    // EXPOSER displayAdvice IMMÉDIATEMENT sur window
    window.displayAdvice = displayAdvice;
    console.log('✅ displayAdvice définie et exposée sur window.displayAdvice');
    console.log('✅ Type:', typeof window.displayAdvice);
    
    // Déclencher l'événement pour signaler que displayAdvice est disponible
    // (pour le système d'événements dans supabase-page-client.js)
    window.dispatchEvent(new CustomEvent('displayAdviceReady'));
    console.log('📢 Événement displayAdviceReady déclenché');
    
    // ============================================
    // 3. SYSTÈME D'ÉVÉNEMENTS POUR LE CHARGEMENT DES DONNÉES
    // ============================================
    const handleSeoDataLoaded = (event) => {
      console.log('✅ Événement seoDataLoaded reçu');
      if (event && event.detail) {
        seoData = event.detail;
        // Appel direct - displayAdvice est toujours disponible
        displayAdvice();
      }
    };
    
    // Ajouter l'écouteur IMMÉDIATEMENT
    window.addEventListener('seoDataLoaded', handleSeoDataLoaded);
    console.log('👂 Écouteur seoDataLoaded ajouté');
    
    // ============================================
    // 4. CHARGEMENT DES SCRIPTS EXTERNES AVEC GESTION D'ERREUR
    // ============================================
    function loadScript(src, name) {
      return new Promise((resolve, reject) => {
        // Vérifier si le script est déjà chargé
        const existingScript = document.querySelector(`script[src="${src}"]`);
        if (existingScript) {
          console.log(`✅ ${name} déjà chargé`);
          resolve();
          return;
        }
        
        const script = document.createElement('script');
        script.src = src + '?v=' + Date.now(); // Cache busting
        script.async = true;
        
        script.onload = () => {
          console.log(`✅ ${name} chargé avec succès`);
          scriptsLoaded[name] = true;
          resolve();
        };
        
        script.onerror = async (error) => {
          console.error(`❌ Erreur lors du chargement de ${name}:`, error);
          console.error(`💡 URL tentée: ${src}`);
          
          // Vérifier systématiquement le Content-Type
          try {
            const response = await fetch(src, { method: 'HEAD' });
            const contentType = response.headers.get('content-type') || '';
            const status = response.status;
            
            if (!response.ok) {
              console.error(`❌ ${name} retourne un status HTTP ${status}`);
              console.error(`📊 Content-Type: ${contentType}`);
              
              if (status === 404) {
                console.error(`❌ FICHIER NON TROUVÉ: ${src}`);
                console.error(`💡 Vérifier que le fichier existe dans le dossier de déploiement Netlify`);
              } else if (status >= 500) {
                console.error(`❌ ERREUR SERVEUR: ${status}`);
              }
            }
            
            // Vérifier si c'est du HTML au lieu de JavaScript
            if (contentType.includes('text/html') && !contentType.includes('javascript')) {
              console.error(`❌ ${name} renvoie du HTML au lieu de JavaScript`);
              console.error(`📊 Status: ${status}, Content-Type: ${contentType}`);
              console.error(`💡 Probable redirection vers index.html (404)`);
            }
          } catch (fetchError) {
            console.error(`❌ Erreur lors de la vérification de ${name}:`, fetchError);
          }
          
          scriptsLoaded[name] = false;
          reject(new Error(`Impossible de charger ${name} - Vérifier que le fichier existe et est accessible`));
        };
        
        document.head.appendChild(script);
      });
    }
    
    // ============================================
    // 5. CHARGEMENT SÉQUENTIEL DES SCRIPTS
    // ============================================
    async function loadAllScripts() {
      try {
        // Charger les scripts dans l'ordre
        await loadScript('seo-advice-generator.js', 'seoAdviceGenerator');
        await loadScript('seo-rules-engine.js', 'seoRulesEngine');
        
        console.log('✅ Tous les scripts de base chargés');
        
        // Charger supabase-page-client.js en dernier
        await loadScript('supabase-page-client.js', 'supabaseClient');
        console.log('✅ supabase-page-client.js chargé');
        
      } catch (error) {
        console.error('❌ Erreur lors du chargement des scripts:', error);
        const loadingEl = document.getElementById('loading');
        const noDataEl = document.getElementById('no-data');
        if (loadingEl) loadingEl.style.display = 'none';
        if (noDataEl) {
          noDataEl.style.display = 'block';
          noDataEl.innerHTML = `
            <h3>Erreur de chargement</h3>
            <p>Impossible de charger les scripts nécessaires. Veuillez recharger la page.</p>
            <p style="font-size: 12px; color: #666; margin-top: 10px;">
              <strong>Erreur:</strong> ${error.message}<br>
              <strong>Scripts chargés:</strong> ${JSON.stringify(scriptsLoaded)}
            </p>
          `;
        }
      }
    }
    
    // Démarrer le chargement des scripts
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', loadAllScripts);
    } else {
      loadAllScripts();
    }
    
    // ============================================
    // 6. GESTION DES PARAMÈTRES URL (FALLBACK)
    // ============================================
    const urlParams = new URLSearchParams(window.location.search);
    const analysisId = urlParams.get('id');
    
    if (analysisId) {
      console.log('📥 ID d\'analyse trouvé dans l\'URL:', analysisId);
      // Les données seront récupérées par supabase-page-client.js
      // via l'événement seoDataLoaded
    } else {
      console.log('ℹ️ Aucun ID d\'analyse trouvé dans l\'URL');
    }
  </script>
</body>
</html>
