/* ============================================
   CONFIGURATION AVANCÉE (OPTIONNEL)
   Personnalisez le jeu selon vos besoins
   ============================================ */

/**
 * CONFIGURATION GLOBALE
 * Décommentez et modifiez les valeurs selon vos besoins
 */

// ============================================
// 1. ANALYTICS (Backend)
// ============================================

// Si vous avez un serveur pour collecter les analytics
// window.ANALYTICS_ENDPOINT = 'https://votre-api.com/analytics';

// Activer/désactiver les analytics
// window.ANALYTICS_ENABLED = true;

// ============================================
// 2. PERSONNALISATION VISUELLE
// ============================================

// Couleur dominante (remplacer --teal par une autre variable)
// Changez dans memory-game.css : :root { --couleur-dominante: ... }

// Dark mode auto (selon les préférences système)
// Déjà géré avec @media (prefers-color-scheme: dark)

// ============================================
// 3. COMPORTEMENT DU JEU
// ============================================

// Désactiver les sons (si ajoutés plus tard)
// window.SOUND_ENABLED = false;

// Désactiver les animations pour accessibilité
// window.REDUCE_MOTION = true;
// (Détecté automatiquement avec prefers-reduced-motion)

// ============================================
// 4. DURÉES DE TRANSITION
// ============================================

// Durée du flip de carte (ms)
// const FLIP_DURATION = 1200;

// Délai avant vérification d'une paire (ms)
// const MATCH_CHECK_DELAY = 1200;

// ============================================
// 5. LIMITES DE STOCKAGE
// ============================================

// Nombre maximum de scores à conserver
// const MAX_SCORES = 100;

// Taille maximale du localStorage (bytes)
// const MAX_STORAGE_SIZE = 5242880; // 5MB

// ============================================
// 6. INTÉGRATION CMS
// ============================================

// URL de callback après fin de jeu (optionnel)
// window.ON_GAME_COMPLETE_CALLBACK = function(gameData) {
//     // Envoyer les données au CMS
//     fetch('/api/game-complete', {
//         method: 'POST',
//         body: JSON.stringify(gameData)
//     });
// };

// URL pour les récompenses (certifications, badges)
// window.REWARDS_API = 'https://votre-api.com/rewards';

// ============================================
// 7. MODES PERSONNALISÉS
// ============================================

// Ajouter des niveaux supplémentaires
// DIFFICULTY_MODES.custom = {
//     name: "Mon Niveau",
//     paires: 6,
//     timeLimit: 240,
//     scoreMultiplier: 1.5,
//     description: "Description personnalisée"
// };

// ============================================
// 8. ACHIEVEMENTS PERSONNALISÉS
// ============================================

// Ajouter des achievements
// ACHIEVEMENTS.custom = {
//     id: 'custom_achievement',
//     name: '🎖 Mon Achievement',
//     icon: '🎖',
//     description: 'Description',
//     condition: (moves, time, pairs, difficulty) => {
//         // Votre condition
//         return true;
//     }
// };

// ============================================
// 9. STYLES PERSONNALISÉS
// ============================================

// Exemple : Charger une police personnalisée
// const link = document.createElement('link');
// link.href = 'https://fonts.googleapis.com/css2?family=..';
// link.rel = 'stylesheet';
// document.head.appendChild(link);

// Exemple : Ajouter un CSS personnalisé
// const style = document.createElement('style');
// style.textContent = `
//     :root {
//         --custom-color: #FF0000;
//     }
// `;
// document.head.appendChild(style);

// ============================================
// 10. WEBHOOKS & ÉVÉNEMENTS
// ============================================

// Fonction callback au démarrage du jeu
// window.ON_GAME_START = function(difficulty) {
//     console.log('Jeu démarré en mode:', difficulty);
// };

// Fonction callback à la fin du jeu
// window.ON_GAME_END = function(gameData) {
//     console.log('Jeu terminé:', gameData);
//     // Faire quelque chose (rediriger, afficher popup, etc.)
// };

// Fonction callback pour chaque match réussi
// window.ON_PAIR_MATCHED = function(pictogrammeId) {
//     console.log('Paire trouvée:', pictogrammeId);
// };

// ============================================
// 11. TRADUCTION & LOCALISATION
// ============================================

// Dictionnaire de traduction (exemple pour l'espagnol)
// const TRANSLATIONS = {
//     en: {
//         'memory-title': 'Memory Game',
//         'score': 'Score',
//         'time': 'Time'
//     },
//     es: {
//         'memory-title': 'Juego de Memoria',
//         'score': 'Puntuación',
//         'time': 'Tiempo'
//     }
// };

// ============================================
// 12. DONNÉES UTILISATEUR & RGPD
// ============================================

// Pseudo anonyme au lieu du nom complet
// window.ANONYMOUS_MODE = true;

// Acceptation RGPD requise
// window.GDPR_CONSENT_REQUIRED = true;

// Politique de confidentialité
// window.PRIVACY_POLICY_URL = 'https://votre-site.com/privacy';

// ============================================
// 13. INTÉGRATION LMS (Moodle, Canvas, etc.)
// ============================================

// Paramètres SCORM pour intégration LMS
// window.SCORM_ENABLED = false;
// window.SCORM_API_URL = 'https://lms.example.com/scorm';

// Passer les scores au LMS
// window.ON_GAME_COMPLETE = function(score) {
//     if (window.SCORM_ENABLED && window.parent && window.parent.postMessage) {
//         window.parent.postMessage({
//             type: 'game_score',
//             score: score
//         }, '*');
//     }
// };

// ============================================
// 14. DEBUGGING & MONITORING
// ============================================

// Mode debug global
// localStorage.setItem('nextgn_debug', 'true');

// Profiling des performances
// window.ENABLE_PERFORMANCE_MONITORING = true;

// Logs dans la console (au lieu de localStorage)
// window.DEBUG_TO_CONSOLE = true;

// ============================================
// 15. EXEMPLE DE CONFIGURATION COMPLÈTE
// ============================================

/*
// Configuration pour établissement scolaire
window.GAME_CONFIG = {
    mode: 'classroom',
    classroom_id: 'CLASS-001',
    teacher_email: 'prof@ecole.edu',
    
    // Colorier selon établissement
    schoolColors: {
        primary: '#1D9E75',
        secondary: '#FF9800'
    },
    
    // Analytics vers serveur école
    analyticsEndpoint: 'https://ecole.edu/api/analytics',
    
    // Logo de l'école
    schoolLogo: 'https://ecole.edu/logo.png',
    
    // Branding
    appName: 'Memory Pictogrammes - École XYZ',
    
    // Récompenses (badges)
    rewardsEnabled: true,
    rewardsAPI: 'https://ecole.edu/api/rewards',
    
    // Leaderboard public pour la classe
    clashroomLeaderboard: true,
    
    // Rapport pour professeur
    reportingEnabled: true,
    reportAPI: 'https://ecole.edu/api/teacher-reports'
};
*/

// ============================================
// HELPERS POUR CONFIGURATION
// ============================================

/**
 * Charger une configuration personnalisée depuis un fichier JSON
 * Exemple : config.json
 */
function loadCustomConfig(configUrl) {
    fetch(configUrl)
        .then(response => response.json())
        .then(config => {
            Object.assign(window.GAME_CONFIG || {}, config);
            console.log('Configuration chargée:', config);
        })
        .catch(err => console.error('Erreur chargement config:', err));
}

/**
 * Appliquer des styles personnalisés
 */
function applyCustomStyles(styleObject) {
    const root = document.documentElement;
    Object.keys(styleObject).forEach(key => {
        root.style.setProperty(`--${key}`, styleObject[key]);
    });
}

/**
 * Enregistrer un hook personnalisé
 */
function registerHook(hookName, callback) {
    if (!window._hooks) window._hooks = {};
    window._hooks[hookName] = callback;
}

/**
 * Exécuter un hook
 */
function executeHook(hookName, ...args) {
    if (window._hooks && window._hooks[hookName]) {
        return window._hooks[hookName](...args);
    }
}

// ============================================
// EXEMPLE D'UTILISATION
// ============================================

/*
// Dans votre HTML ou un script chargé avant memory-game.js :

// 1. Charger une config personnalisée
loadCustomConfig('/config.json');

// 2. Appliquer des styles personnalisés
applyCustomStyles({
    'teal': '#0F6E56',
    'primary-color': '#185FA5'
});

// 3. Enregistrer des hooks
registerHook('onGameComplete', function(gameData) {
    console.log('Jeu terminé!', gameData);
    // Envoyer au serveur, ouvrir un formulaire, etc.
});

// 4. Exécuter le hook
executeHook('onGameComplete', { score: 2500, difficulty: 'normal' });
*/

// ============================================
// AUTO-CONFIGURATION (Détection d'environnement)
// ============================================

(function detectEnvironment() {
    // Détecter si nous sommes dans un iFrame (LMS, CMS)
    if (window.self !== window.top) {
        console.log('Running in iFrame');
        window.IN_IFRAME = true;
    }
    
    // Détecter les paramètres URL
    const params = new URLSearchParams(window.location.search);
    if (params.has('debug')) {
        localStorage.setItem('nextgn_debug', 'true');
    }
    
    if (params.has('difficulty')) {
        window.DEFAULT_DIFFICULTY = params.get('difficulty');
    }
    
    if (params.has('player')) {
        localStorage.setItem('nextgn_playerName', params.get('player'));
    }
    
    // Détecter le thème sombre
    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
        console.log('Système en mode sombre');
    }
    
    // Détecter la langue
    const lang = navigator.language || navigator.userLanguage;
    window.BROWSER_LANG = lang.split('-')[0];
    console.log('Langue du navigateur:', lang);
})();

// ============================================
// FIN DE LA CONFIGURATION
// ============================================

console.log('✓ Configuration avancée chargée');
