CoolFace
Apppublic

bee367/ecogamify-recycledash

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
script.js161 linesDownload Raw Back to root
1 2// Main JavaScript for 2 Clean 2 Green3document.addEventListener('DOMContentLoaded', async function() {4    try {5        // Smooth scrolling for anchor links6        const anchors = document.querySelectorAll('a[href^="#"]');7        anchors.forEach(anchor => {8            anchor.addEventListener('click', async function(e) {9                e.preventDefault();10                const target = document.querySelector(this.getAttribute('href'));11                if (target) {12                    await new Promise(resolve => {13                        target.scrollIntoView({14                            behavior: 'smooth',15                            block: 'start'16                        });17                        setTimeout(resolve, 1000);18                    });19                }20            });21        });22 23        // Initialize language selector on all pages24        const langSelector = document.getElementById('language-selector');25        if (langSelector) {26            langSelector.addEventListener('change', async function() {27                const lang = this.value;28                await updateTranslations(lang);29            });30        }31 32        // Load translations if needed33        if (!window.translations) {34            await loadTranslations();35        }36    } catch (error) {37        console.error('Initialization error:', error);38    }39});40 41async function loadTranslations() {42    try {43        // In a real app, this would fetch from an API44        window.translations = {45            en: {46                nav_how_it_works: "How It Works",47                nav_features: "Features",48                nav_pricing: "Pricing",49                nav_dashboard: "Dashboard",50                nav_single_player: "Single Player",51                nav_simulator: "Simulator",52                nav_signup: "Sign Up"53            },54            ru: {55                nav_how_it_works: "Как это работает",56                nav_features: "Функции",57                nav_pricing: "Цены",58                nav_dashboard: "Панель",59                nav_single_player: "Одиночная игра",60                nav_simulator: "Симулятор",61                nav_signup: "Регистрация"62            },63            zh: {64                nav_how_it_works: "工作原理",65                nav_features: "特征",66                nav_pricing: "价钱",67                nav_dashboard: "仪表板",68                nav_single_player: "单人游戏",69                nav_simulator: "模拟器",70                nav_signup: "注册"71            }72        };73    } catch (error) {74        console.error('Failed to load translations:', error);75    }76}77 78async function updateTranslations(lang) {79    try {80        const elements = document.querySelectorAll('[data-i18n]');81        for (const el of elements) {82            const key = el.getAttribute('data-i18n');83            if (window.translations[lang] && window.translations[lang][key]) {84                el.textContent = window.translations[lang][key];85            }86        }87    } catch (error) {88        console.error('Translation update failed:', error);89    }90}91// Waste types classification92window.wasteCategories = {93  plastic: {94    name: "Plastic",95    color: "#3B82F6",96    icon: "♻",97    recyclingTip: "Rinse containers before recycling. Remove caps and labels."98  },99  paper: {100    name: "Paper",101    color: "#10B981", 102    icon: "📄",103    recyclingTip: "Keep dry and clean. Remove any plastic or metallic parts."104  },105  glass: {106    name: "Glass",107    color: "#6366F1",108    icon: "🍷", 109    recyclingTip: "Rinse thoroughly. Separate by color if required."110  },111  metal: {112    name: "Metal",113    color: "#F59E0B",114    icon: "🔩",115    recyclingTip: "Rinse cans. Remove paper labels if possible."116  },117  ewaste: {118    name: "E-Waste",119    color: "#EC4899",120    icon: "🔌",121    recyclingTip: "Do not throw in regular trash. Find specialized recycling."122  },123  organic: {124    name: "Organic",125    color: "#84CC16",126    icon: "🍂",127    recyclingTip: "Compost if possible. Do not mix with recyclables."128  }129};130 131// Global translations object132window.translations = {133en: {134        nav_how_it_works: "How It Works",135        nav_features: "Features",136        nav_pricing: "Pricing",137        nav_dashboard: "Dashboard",138        nav_single_player: "Single Player",139        nav_simulator: "Simulator",140nav_signup: "Sign Up"141},142    ru: {143        nav_how_it_works: "Как это работает",144        nav_features: "Функции",145        nav_pricing: "Цены",146        nav_dashboard: "Панель",147        nav_single_player: "Одиночная игра",148        nav_simulator: "Симулятор",149nav_signup: "Регистрация"150},151    zh: {152        nav_how_it_works: "工作原理",153        nav_features: "特征",154        nav_pricing: "价钱",155        nav_dashboard: "仪表板",156        nav_single_player: "单人游戏",157        nav_simulator: "模拟器",158nav_signup: "注册"159}160};161