bee367/ecogamify-recycledash
0
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 