рд╕реНрдХреВрд▓ рд╕рд╛рдордЧреНрд░реА рдЪреЗрдХрд▓рд┐рд╕реНрдЯ

2025-2026 рд╢реИрдХреНрд╖рдгрд┐рдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреЗрдХрд▓рд┐рд╕реНрдЯ, рдмрдЬрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдФрд░ рдкреИрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рдЯрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕реНрдХреВрд▓ рд╡рд╛рдкрд╕реА рдЦрд░реАрджрд╛рд░реА рдЧрд╛рдЗрдбред

ЁЯУЪ 2025-2026 School Year Ready рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдирдП рд╢реИрдХреНрд╖рдгрд┐рдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рд╡рд┐рд╕реНрддреГрдд рд╕рд╛рдордЧреНрд░реА рд╕реВрдЪреА, рдХрдХреНрд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рдХрд┐рдлрд╛рдпрддреА рд╡рд┐рдХрд▓реНрдк рдФрд░ рдкреИрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЦрд░реАрджрд╛рд░реА рд░рдгрдиреАрддрд┐рдпрд╛рдВред

рдЕрдкрдиреЗ рдмрдЪреНрдЪреЗ рдХреА рдХрдХреНрд╖рд╛ рдХрд╛ рд╕реНрддрд░ рдЪреБрдиреЗрдВ

ЁЯОТ
рдирд░реНрд╕рд░реА
рдЖрдпреБ 5-6
ЁЯУЭ
рдкреНрд░рд╛рдердорд┐рдХ
рдХрдХреНрд╖рд╛ 1-5
ЁЯУЪ
рдорд┐рдбрд┐рд▓ рд╕реНрдХреВрд▓
рдХрдХреНрд╖рд╛ 6-8
ЁЯОУ
рд╣рд╛рдИ рд╕реНрдХреВрд▓
рдХрдХреНрд╖рд╛ 9-12
ЁЯТ░ рдкреИрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рдЦрд░реАрджрд╛рд░реА рдЯрд┐рдкреНрд╕
  • рдЯреИрдХреНрд╕-рдлреНрд░реА рд╡реАрдХреЗрдВрдб рдХреЗ рджреМрд░рд╛рди рдЦрд░реАрджрд╛рд░реА рдХрд░реЗрдВ (рдХрдИ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ 2-4 рдЕрдЧрд╕реНрдд, 2025)
  • рдмреБрдирд┐рдпрд╛рджреА рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдЬреЗрдиреЗрд░рд┐рдХ рдмреНрд░рд╛рдВрдб рдЦрд░реАрджреЗрдВ - рд╡реЗ рдЙрддрдиреЗ рд╣реА рдЕрдЪреНрдЫреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
  • рдЦрд░реАрджрд╛рд░реА рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдШрд░ рдкрд░ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ
  • рдЕрдиреНрдп рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдХ рдореЗрдВ рдЦрд░реАрджрд╛рд░реА рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рдХреАрдорддреЗрдВ рдкрд╛рдПрдВ
  • рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдЪрдд рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рд▓реЙрдпрд▓реНрдЯреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдХреВрдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • рдЕрдЧрд▓реЗ рд╕рд╛рд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕реАрдЬрди рдХреЗ рдЕрдВрдд рдХреА рд╕реЗрд▓ рдореЗрдВ рдЦрд░реАрджрд╛рд░реА рдХрд░реЗрдВ
  • рдЦрд░реАрджрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдСрдирд▓рд╛рдЗрди рдФрд░ рд╕реНрдЯреЛрд░ рдХреА рдХреАрдорддреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
  • рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рди рдЦрд░реАрджреЗрдВ - рдХреБрдЫ рд╕рд╛рдорд╛рди рд╕реЗрдореЗрд╕реНрдЯрд░ рдХреЗ рдордзреНрдп рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

ЁЯУЛ рддреНрд╡рд░рд┐рдд рдЧреНрд░реЗрдб рдЙрджрд╛рд╣рд░рдг

рдХрд┐рдВрдбрд░рдЧрд╛рд░реНрдЯрди рд╕реНрдЯрд╛рд░реНрдЯрд░
рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдХреВрд▓ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдорд╛рди
рддреАрд╕рд░реА рдХрдХреНрд╖рд╛ рдорд╛рдирдХ
рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕реВрдЪреА
рд╕рд╛рддрд╡реАрдВ рдХрдХреНрд╖рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд
рд╕рдВрдЧрдарди-рдХреЗрдВрджреНрд░рд┐рдд рдорд┐рдбрд┐рд▓ рд╕реНрдХреВрд▓ рд╕реВрдЪреА
рд╣рд╛рдИ рд╕реНрдХреВрд▓ рдПрдбрд╡рд╛рдВрд╕реНрдб
рд╡рд┐рд╖рдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╛рдИ рд╕реНрдХреВрд▓ рд╕рд╛рдордЧреНрд░реА
рдмрдЬрдЯ-рдЕрдиреБрдХреВрд▓ рд╕реВрдЪреА
рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдПрдВ, тВ╣4000 рд╕реЗ рдХрдо
рдкреНрд░реАрдорд┐рдпрдо рдХрдореНрдкрд▓реАрдЯ
рдЧрдВрднреАрд░ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА

ЁЯЫНя╕П рд╕реНрдХреВрд▓ рдХреА рдЦрд░реАрджрд╛рд░реА рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рд╕реНрдХреВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреА рдЦрд░реАрджрд╛рд░реА рдХреЛ рд╢реИрдХреНрд╖рд┐рдХ рдЖрдХрд░реНрд╖рдг рд╡рд╛рд▓реЗ рд╢рд╣рд░реЛрдВ рдХреА рдкрд╛рд░рд┐рд╡рд╛рд░рд┐рдХ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВ

тЬи Smart Nation's Core Infrastructure: WIA Code тЬи

рдбреНрд░реЛрди рдбрд┐рд▓реАрд╡рд░реА, рд╕реНрд╡рд╛рдпрддреНрдд рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ, рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдмрдЪрд╛рд╡ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ - рднрд╡рд┐рд╖реНрдп рдХрд╛ рдЕрдиреБрднрд╡ 30 рджрд┐рдиреЛрдВ рдореЗрдВ рдХрд░реЗрдВ, рдЖрдкрдХреЗ рджреЗрд╢ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлреНрдд!

рдбрдмреНрд▓реНрдпреВрдЖрдИрдП рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВ

ЁЯдЦ рдЕрдкрдирд╛ рдПрдЖрдИ рд╕рд╣рд╛рдпрдХ рдЪреБрдиреЗрдВ

ЁЯТм рдЪреИрдЯрдЬреАрдкреАрдЯреА
рд╕рдмрд╕реЗ рдмрд╣реБрдореБрдЦреА тАв рд╕реНрдХреВрд▓ рд╕рд╛рдордЧреНрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда
ЁЯза рдХреНрд▓реЙрдб
рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рддрд░реНрдХ тАв рдмрдЬрдЯ рдпреЛрдЬрдирд╛ рдФрд░ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА
тЬи рдЬреЗрдорд┐рдиреА рдирд┐:рд╢реБрд▓реНрдХ
рдирд┐:рд╢реБрд▓реНрдХ рджреИрдирд┐рдХ рд╕реАрдорд╛рдПрдВ тАв рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦрд░реАрджрд╛рд░реА рдорд╛рд░реНрдЧрджрд░реНрд╢рди
`); printWindow.document.close(); printWindow.print(); trackEvent('print_checklist', { grade: SUPPLY_DATA.selectedGrade }); } function generatePrintableChecklist() { const gradeData = SUPPLY_LISTS[SUPPLY_DATA.selectedGrade]; if (!gradeData) return '

рдХреГрдкрдпрд╛ рдкрд╣рд▓реЗ рдПрдХ рдЧреНрд░реЗрдб рд╕реНрддрд░ рдЪреБрдиреЗрдВред

'; let html = `

${gradeData.title}

`; html += `

рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛: ${new Date().toLocaleDateString()}

`; html += `

рдХреБрд▓ рдмрдЬрдЯ: ${SUPPLY_DATA.budget.total.toFixed(2)}


`; Object.entries(gradeData.categories).forEach(([categoryName, items]) => { html += `

${categoryName}

`; items.forEach((item, index) => { const itemId = `${categoryName}-${index}`; const checked = SUPPLY_DATA.checkedItems.has(itemId) ? 'тШС' : 'тШР'; html += `
${checked} ${item.name} - ${item.description} ${item.priority} (${item.price})
`; }); html += '
'; }); return html; } function exportToEmail() { const checklist = generateTextChecklist(); const subject = `School Supply Checklist - ${SUPPLY_DATA.selectedGrade}`; const body = encodeURIComponent(checklist); window.location.href = `mailto:?subject=${subject}&body=${body}`; trackEvent('email_checklist', { grade: SUPPLY_DATA.selectedGrade }); } function generateTextChecklist() { const gradeData = SUPPLY_LISTS[SUPPLY_DATA.selectedGrade]; if (!gradeData) return 'Please select a grade level first.'; let text = `${gradeData.title}\n`; text += `Generated: ${new Date().toLocaleDateString()}\n`; text += `Total Budget: ${SUPPLY_DATA.budget.total.toFixed(2)}\n\n`; Object.entries(gradeData.categories).forEach(([categoryName, items]) => { text += `${categoryName}:\n`; items.forEach((item, index) => { const itemId = `${categoryName}-${index}`; const checked = SUPPLY_DATA.checkedItems.has(itemId) ? '[тЬУ]' : '[ ]'; text += ` ${checked} ${item.name} - ${item.description} (${item.price})\n`; }); text += '\n'; }); return text; } function shareChecklist() { if (navigator.share) { navigator.share({ title: `School Supply Checklist - ${SUPPLY_DATA.selectedGrade}`, text: generateTextChecklist(), url: window.location.href }); } else { // Fallback: copy to clipboard navigator.clipboard.writeText(generateTextChecklist()).then(() => { showNotification('Checklist copied to clipboard!', 'success'); }); } trackEvent('share_checklist', { grade: SUPPLY_DATA.selectedGrade }); } function resetChecklist() { if (confirm('Are you sure you want to reset all checked items?')) { SUPPLY_DATA.checkedItems.clear(); SUPPLY_DATA.budget.total = 0; document.querySelectorAll('.supply-checkbox').forEach(checkbox => { checkbox.checked = false; }); updateProgress(); updateBudget(); localStorage.removeItem('schoolSupplyChecklist'); showNotification('Checklist reset successfully!', 'success'); } } function loadSampleGrade(sampleType) { const samples = { 'kindergarten-sample': 'kindergarten', 'elementary-sample': 'elementary', 'middle-sample': 'middle', 'high-sample': 'high', 'budget-sample': 'elementary', 'premium-sample': 'high' }; const grade = samples[sampleType]; if (grade) { selectGrade(grade); // For budget sample, only check essential items if (sampleType === 'budget-sample') { setTimeout(() => { document.querySelectorAll('.supply-checkbox').forEach(checkbox => { const item = checkbox.closest('.supply-item'); const priority = item.querySelector('.priority-essential'); if (priority) { checkbox.checked = true; checkbox.dispatchEvent(new Event('change')); } }); }, 500); } showNotification(`Loaded ${sampleType.replace('-', ' ')}`, 'success'); } } // Utility Functions function showNotification(message, type = 'success') { const toast = document.createElement('div'); toast.className = `toast ${type}`; toast.textContent = message; document.body.appendChild(toast); setTimeout(() => { toast.remove(); }, 3000); } function showOTA() { const otaContainer = document.getElementById('otaContainer'); if (otaContainer && (otaContainer.style.display === 'none' || !otaContainer.style.display)) { otaContainer.style.display = 'block'; setTimeout(() => { const otaHeader = document.querySelector('.ota-header h3'); if (otaHeader) { otaHeader.style.animation = 'pulse 1s ease-in-out'; } }, 100); } } function trackEvent(eventName, data = {}) { if (typeof gtag !== 'undefined') { gtag('event', eventName, { 'event_category': TOOL_CONFIG.category, 'event_label': TOOL_CONFIG.name, ...data }); } } // AI Assistant Functions function openAIModal() { const modal = document.getElementById('aiModal'); modal.classList.add('show'); if (aiModalState.apiKey && aiModalState.currentView === 'gemini') { showGeminiChat(); } else { showAISelector(); } updateAPIKeyStatus(); } function closeAIModal() { const modal = document.getElementById('aiModal'); modal.classList.remove('show'); setTimeout(() => { aiModalState.currentView = 'selector'; showAISelector(); }, 300); } function showAISelector() { document.getElementById('aiModalTitle').textContent = 'Choose Your AI Assistant'; document.getElementById('aiSelector').style.display = 'flex'; document.getElementById('geminiChat').style.display = 'none'; document.getElementById('apiKeySetup').style.display = 'none'; aiModalState.currentView = 'selector'; } function showGeminiChat() { document.getElementById('aiModalTitle').innerHTML = 'тЬи Gemini AI Assistant'; document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'flex'; document.getElementById('apiKeySetup').style.display = 'none'; aiModalState.currentView = 'gemini'; const chatMessages = document.getElementById('chatMessages'); if (!chatMessages.innerHTML.trim()) { addMessage('assistant', `Hello! I'm here to help with back-to-school shopping: тАв Grade-specific supply recommendations тАв Budget-friendly shopping strategies тАв Where to find the best deals тАв Organization tips for different age groups тАв Alternatives to expensive items What school supply questions can I help with?`); } } function showAPIKeySetup() { document.getElementById('aiModalTitle').textContent = 'рдЬреЗрдорд┐рдиреА рдПрдкреАрдЖрдИ рд╕реЗрдЯрдЕрдк'; document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'none'; document.getElementById('apiKeySetup').style.display = 'block'; aiModalState.currentView = 'setup'; } function selectAI(aiType) { switch(aiType) { case 'chatgpt': const toolContext = `I'm using a School Supply Checklist tool for back-to-school shopping. The tool helps plan supplies for Kindergarten through High School with budget tracking and grade-specific recommendations. Can you help me with school supply shopping strategies, budget planning, and organization tips for students?`; const chatUrl = `https://chat.openai.com/?q=${encodeURIComponent(toolContext)}`; window.open(chatUrl, '_blank'); closeAIModal(); trackEvent('ai_selection', { ai_type: 'chatgpt' }); break; case 'claude': const claudeContext = `I'm working with a School Supply Checklist tool for back-to-school planning. Can you help me understand the best shopping strategies, budget-friendly alternatives, and organization systems for different grade levels?`; const claudeUrl = `https://claude.ai/chat?q=${encodeURIComponent(claudeContext)}`; window.open(claudeUrl, '_blank'); closeAIModal(); trackEvent('ai_selection', { ai_type: 'claude' }); break; case 'gemini': if (!aiModalState.apiKey) { showAPIKeySetup(); } else { showGeminiChat(); } trackEvent('ai_selection', { ai_type: 'gemini' }); break; } } function saveGeminiApiKey() { const apiKey = document.getElementById('geminiApiKeyInput').value.trim(); if (apiKey) { localStorage.setItem('geminiApiKey', apiKey); aiModalState.apiKey = apiKey; showGeminiChat(); updateAPIKeyStatus(); } else { alert('рдХреГрдкрдпрд╛ рдПрдХ рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдХреА рджрд░реНрдЬ рдХрд░реЗрдВ'); } } function updateAPIKeyStatus() { const statusEl = document.getElementById('apiKeyStatus'); if (aiModalState.apiKey) { statusEl.innerHTML = 'рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмрджрд▓реЗрдВ'; } else { statusEl.textContent = 'рдХреЛрдИ рдПрдкреАрдЖрдИ рдХреА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ'; } } function addMessage(type, content) { const chatMessages = document.getElementById('chatMessages'); const messageDiv = document.createElement('div'); messageDiv.className = `message ${type}`; if (type === 'user') { messageDiv.innerHTML = `You: ${content}`; } else { messageDiv.innerHTML = `тЬи Gemini:
${content.replace(/\n/g, '
')}`; } chatMessages.appendChild(messageDiv); chatMessages.scrollTop = chatMessages.scrollHeight; } async function sendToGemini() { const input = document.getElementById('geminiInput'); const message = input.value.trim(); if (!message) return; addMessage('user', message); input.value = ''; const loadingMsg = document.createElement('div'); loadingMsg.className = 'message assistant'; loadingMsg.innerHTML = 'тЬи Gemini:
Checking school supply recommendations...'; loadingMsg.id = 'loading-message'; document.getElementById('chatMessages').appendChild(loadingMsg); try { const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${aiModalState.apiKey}`, { method: 'рдкреЛрд╕реНрдЯ', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ contents: [{ parts: [{ text: `Context: User is using a School Supply Checklist tool for back-to-school shopping. Tool features: Grade-specific supply lists (K-12), budget tracking, priority categorization, printable checklists, and money-saving tips. The tool helps families plan and budget for school supplies efficiently. User question: ${message} Please provide helpful school supply shopping advice, budget tips, or grade-specific recommendations as appropriate. Focus on practical, actionable guidance for parents and students preparing for the school year.` }] }], generationConfig: { temperature: 0.7, maxOutputTokens: 1000 } }) }); const data = await response.json(); document.getElementById('loading-message').remove(); if (data.candidates && data.candidates[0] && data.candidates[0].content) { const reply = data.candidates[0].content.parts[0].text; addMessage('assistant', reply); } else { addMessage('assistant', 'Sorry, I could not generate a response. Please try again.'); } } catch (error) { document.getElementById('loading-message')?.remove(); if (error.message.includes('рдПрдкреАрдЖрдИ рдХреА')) { addMessage('error', 'Invalid API key. Please check your API key and try again.'); showAPIKeySetup(); } else { addMessage('error', 'Failed to connect to Gemini. Please check your internet connection and try again.'); } } } // Dynamic Tool Count Functions async function updateToolCount() { try { const response = await fetch('/api/tool-count.php'); const data = await response.json(); document.querySelectorAll('.dynamic-tools-count').forEach(el => { el.textContent = `${data.count}+ free online tools in 206 languages. No signup, no fees, just tools that work.`; }); document.querySelectorAll('.dynamic-count').forEach(el => { const prefix = el.getAttribute('data-text') || ''; const suffix = el.getAttribute('data-suffix') || ''; const icon = el.textContent.split(' ')[0] || ''; el.textContent = `${icon} ${prefix} ${data.count}+ ${suffix}`; }); } catch (error) { const fallbackCount = 333; document.querySelectorAll('.dynamic-tools-count').forEach(el => { el.textContent = `${fallbackCount}+ free online tools in 206 languages. No signup, no fees, just tools that work.`; }); document.querySelectorAll('.dynamic-count').forEach(el => { const prefix = el.getAttribute('data-text') || ''; const suffix = el.getAttribute('data-suffix') || ''; const icon = el.textContent.split(' ')[0] || ''; el.textContent = `${icon} ${prefix} ${fallbackCount}+ ${suffix}`; }); } } function updateCurrentYear() { const currentYear = new Date().getFullYear(); document.querySelectorAll('.current-year').forEach(el => { el.textContent = currentYear; }); } // Event Listeners document.addEventListener('рдбреАрдУрдПрдо рдХрдВрдЯреЗрдВрдЯ рд▓реЛрдбреЗрдб', function() { // AI button event document.getElementById('aiBtn').addEventListener('click', openAIModal); // Modal outside click to close document.getElementById('aiModal').addEventListener('click', function(e) { if (e.target === this) { closeAIModal(); } }); // Keyboard events document.addEventListener('keydown', function(e) { if (e.key === 'рдПрдВрдЯрд░') { const geminiInput = document.getElementById('geminiInput'); if (document.activeElement === geminiInput) { sendToGemini(); } } if (e.key === 'рдПрд╕реНрдХреЗрдк') { closeAIModal(); } }); // Load saved data const savedData = localStorage.getItem('schoolSupplyChecklist'); if (savedData) { try { const data = JSON.parse(savedData); if (data.grade && SUPPLY_LISTS[data.grade]) { selectGrade(data.grade); setTimeout(() => { data.checkedItems.forEach(itemId => { const checkbox = document.getElementById(itemId); if (checkbox) { checkbox.checked = true; checkbox.dispatchEvent(new Event('change')); } }); }, 500); } } catch (error) { console.error('Error loading saved data:', error); } } updateAPIKeyStatus(); updateCurrentYear(); updateToolCount(); }); // Analytics window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-XXXXXXXXX'); trackEvent('page_view', { tool: TOOL_CONFIG.name, category: TOOL_CONFIG.category });