рдлреНрд▓реИрд╢ рдХрд╛рд░реНрдб рдореЗрдХрд░

рдПрдЖрдИ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд╕рд╛рде рдкреЗрд╢реЗрд╡рд░ рдбрд┐рдЬрд┐рдЯрд▓ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдмрдирд╛рдПрдВред рд╕реНрдкреЗрд╕реНрдб рд░рд┐рдкрд┐рдЯреАрд╢рди, рдХрдИ рдЕрдзреНрдпрдпрди рдореЛрдб, рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рд╕рдорд░реНрдерди, рдФрд░ Anki рдФрд░ Quizlet рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХреА рд╕реБрд╡рд┐рдзрд╛ред

рдирдпрд╛ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдмрдирд╛рдПрдВ

рдЕрдкрдирд╛ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордиреЗ рдФрд░ рдкреАрдЫреЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реЗрдВ

рдЕрдкрдирд╛ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рдкреАрдЫреЗ рдХрд╛ рднрд╛рдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реЗрдВ
ЁЯФД
рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб
рдХреНрд▓рд╛рд╕рд┐рдХ рдлреНрд▓рд┐рдк рдХрд╛рд░реНрдб рдЕрдзреНрдпрдпрди
ЁЯза
рд╕реНрдкреЗрд╕реНрдб рд░рд┐рдкрд┐рдЯреАрд╢рди
рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдореАрдХреНрд╖рд╛
тЭУ
рдХреНрд╡рд┐рдЬрд╝ рдореЛрдб
рдмрд╣реБрд╡рд┐рдХрд▓реНрдкреА рдкрд░реАрдХреНрд╖рдг
ЁЯОп
рдорд┐рд▓рд╛рди рдЦреЗрд▓
рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдорд┐рд▓рд╛рдПрдВ
рдореЗрд░реЗ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб
0 рдХрд╛рд░реНрдб рдЖрдЬ 0 рдЕрдзреНрдпрдпрди рдХрд┐рдП
ЁЯУЪ рдЕрднреА рддрдХ рдХреЛрдИ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдХрд╛рд░реНрдб рдмрдирд╛рдПрдВ" рдкрд░ рдЬрд╛рдПрдВ!
0 рдХреБрд▓ рдХрд╛рд░реНрдб
0 рдЕрдзреНрдпрдпрди рд╢реНрд░реГрдВрдЦрд▓рд╛ (рджрд┐рди)
0 рдорд╣рд╛рд░рдд рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдб
0% рд╕рдЯреАрдХрддрд╛ рджрд░

ЁЯУд рдЕрдкрдиреЗ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдЕрдкрдиреЗ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрдзреНрдпрдпрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ рдпрд╛ рдСрдлрд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

ЁЯО┤
рдЕрдВрдХреА
APKG рдлреЙрд░реНрдореЗрдЯ
ЁЯУЪ
рдХреНрд╡рд┐рдЬрд╝рд▓реЗрдЯ
CSV рдлреЙрд░реНрдореЗрдЯ
ЁЯУК
рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓
рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ
ЁЯТ╛
JSON
рдмреИрдХрдЕрдк рдлреЙрд░реНрдореЗрдЯ
ЁЯЦия╕П
рдкреАрдбреАрдПрдл рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
рднреМрддрд┐рдХ рдХрд╛рд░реНрдб
ЁЯМР
рдСрдирд▓рд╛рдЗрди рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рд┐рдВрдХ
Supports CSV, JSON, TXT, and APKG files from Anki, Quizlet, and other platforms

ЁЯУЪ рд╢реИрдХреНрд╖рд┐рдХ рдпрд╛рддреНрд░рд╛ рдпрд╛ рд╡рд┐рджреЗрд╢ рдореЗрдВ рдкрдврд╝рд╛рдИ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЕрдзреНрдпрдпрди рдЕрдиреБрднрд╡реЛрдВ рдФрд░ рд╢реИрдХреНрд╖рд┐рдХ рдпрд╛рддреНрд░рд╛рдУрдВ рд╕реЗ рдЕрдкрдиреА рд╕реАрдЦ рдХреЛ рдмрдврд╝рд╛рдПрдВ

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

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

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

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

ЁЯТм ChatGPT
рд╕рдмрд╕реЗ рдмрд╣реБрдореБрдЦреА тАв рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда
ЁЯза Claude
рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рддрд░реНрдХ тАв рдЕрдзреНрдпрдпрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА
тЬи Gemini рдирд┐рдГрд╢реБрд▓реНрдХ
рдореБрдлреНрдд рджреИрдирд┐рдХ рд╕реАрдорд╛ тАв рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЪреИрдЯ
`); printWindow.document.close(); printWindow.print(); showNotification('рдкреНрд░рд┐рдВрдЯ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЦреБрд▓рд╛', 'success'); } // Share online function shareOnline() { const shareData = { title: 'рдореЗрд░реЗ рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб', text: `Check out my ${flashcards.length} flashcards created with WIA Code Flash Card Maker!`, url: window.location.href }; if (navigator.share) { navigator.share(shareData); } else { const text = `${shareData.text}\n\n${shareData.url}`; copyToClipboard(text); showNotification('Share link copied to clipboard!', 'success'); } } // Handle import function handleImport() { const file = document.getElementById('importFile').files[0]; if (!file) return; const reader = new FileReader(); reader.onload = function(e) { try { const content = e.target.result; let importedCards = []; if (file.name.endsWith('.json')) { importedCards = JSON.parse(content); } else if (file.name.endsWith('.csv')) { importedCards = parseCSV(content); } else if (file.name.endsWith('.txt')) { importedCards = parseTXT(content); } if (importedCards.length > 0) { flashcards = flashcards.concat(importedCards); saveData(); updateDeckDisplay(); updateStats(); showNotification(`Imported ${importedCards.length} flashcards!`, 'success'); } else { showNotification('рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рдорд╛рдиреНрдп рдлреНрд▓реИрд╢рдХрд╛рд░реНрдб рдирд╣реАрдВ рдорд┐рд▓рд╛', 'error'); } } catch (error) { showNotification('Error importing file: ' + error.message, 'error'); } }; reader.readAsText(file); } // Parse CSV import function parseCSV(content) { const lines = content.split('\n').filter(line => line.trim()); const cards = []; for (let i = 1; i < lines.length; i++) { // Skip header const parts = lines[i].split(','); if (parts.length >= 2) { cards.push({ id: Date.now().toString() + i, front: parts[0].replace(/"/g, '').trim(), back: parts[1].replace(/"/g, '').trim(), tags: parts[2] ? parts[2].replace(/"/g, '').split(';').map(t => t.trim()) : [], created: new Date().toISOString(), interval: 0, easiness: 2.5, repetitions: 0, nextReview: new Date().toISOString() }); } } return cards; } // Parse TXT import (tab-separated) function parseTXT(content) { const lines = content.split('\n').filter(line => line.trim()); const cards = []; lines.forEach((line, i) => { const parts = line.split('\t'); if (parts.length >= 2) { cards.push({ id: Date.now().toString() + i, front: parts[0].trim(), back: parts[1].trim(), tags: parts[2] ? parts[2].split(' ').filter(t => t.trim()) : [], created: new Date().toISOString(), interval: 0, easiness: 2.5, repetitions: 0, nextReview: new Date().toISOString() }); } }); return cards; } // ========== UTILITY FUNCTIONS ========== // Download file function downloadFile(content, filename, mimeType) { const blob = new Blob([content], { type: mimeType }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); } // Save data to localStorage function saveData() { localStorage.setItem('flashcards', JSON.stringify(flashcards)); localStorage.setItem('studyStats', JSON.stringify(studyStats)); } // Copy to clipboard function copyToClipboard(text) { navigator.clipboard.writeText(text).then(() => { showNotification('Copied to clipboard!', 'success'); }).catch(() => { // Fallback for older browsers const textArea = document.createElement('textarea'); textArea.value = text; document.body.appendChild(textArea); textArea.select(); document.execCommand('copy'); document.body.removeChild(textArea); showNotification('Copied to clipboard!', 'success'); }); } // Show notification toast 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); return toast; } // Show OTA section 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); } } // Analytics tracking 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 ========== // AI ыкиыЛм ьЧ┤ъ╕░ function openAIModal() { const modal = document.getElementById('aiModal'); modal.classList.add('show'); if (aiModalState.apiKey && aiModalState.currentView === 'gemini') { showGeminiChat(); } else { showAISelector(); } updateAPIKeyStatus(); } // AI ыкиыЛм ыЛлъ╕░ function closeAIModal() { const modal = document.getElementById('aiModal'); modal.classList.remove('show'); setTimeout(() => { aiModalState.currentView = 'selector'; showAISelector(); }, 300); } // AI ьДаэГЭ эЩФый┤ эСЬьЛЬ 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'; } // Gemini ь▒ДэМЕ эЩФый┤ эСЬьЛЬ 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 can help you with: тАв Creating effective flashcard content тАв Study techniques and memorization strategies тАв Spaced repetition optimization тАв Converting notes into flashcard format тАв Memory improvement tips What would you like to know about flashcards or studying?`); } } // API эВд ьДдьаХ эЩФый┤ эСЬьЛЬ function showAPIKeySetup() { document.getElementById('aiModalTitle').textContent = 'Gemini API рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ'; document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'none'; document.getElementById('apiKeySetup').style.display = 'block'; aiModalState.currentView = 'setup'; } // AI ьДаэГЭ ь▓Шыжм function selectAI(aiType) { const cardCount = flashcards.length; switch(aiType) { case 'chatgpt': let chatContext = `I'm using a Flash Card Maker tool on WIA Code platform. `; if (cardCount > 0) { chatContext += `I have ${cardCount} flashcards created. `; } chatContext += `Can you help me with flashcard creation strategies, study techniques, or memory improvement methods?`; const chatUrl = `https://chat.openai.com/?q=${encodeURIComponent(chatContext)}`; window.open(chatUrl, '_blank'); closeAIModal(); trackEvent('ai_selection', { ai_type: 'chatgpt' }); break; case 'claude': let claudeContext = `I'm using a Flash Card Maker tool. `; if (cardCount > 0) { claudeContext += `I have ${cardCount} flashcards in my deck. `; } claudeContext += `Please help me with effective flashcard design, spaced repetition strategies, or study optimization techniques.`; 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; } } // API эВд ьаАьЮе function saveGeminiApiKey() { const apiKey = document.getElementById('geminiApiKeyInput').value.trim(); if (apiKey) { localStorage.setItem('geminiApiKey', apiKey); aiModalState.apiKey = apiKey; showGeminiChat(); updateAPIKeyStatus(); } else { alert('рдХреГрдкрдпрд╛ рдПрдХ рдорд╛рдиреНрдп API рдХреА рджрд░реНрдЬ рдХрд░реЗрдВ'); } } // API эВд ьГБэГЬ ьЧЕыН░ьЭ┤эК╕ function updateAPIKeyStatus() { const statusEl = document.getElementById('apiKeyStatus'); if (aiModalState.apiKey) { statusEl.innerHTML = 'рдПрдкреАрдЖрдИ рдХреА рдмрджрд▓реЗрдВ'; } else { statusEl.textContent = 'рдХреЛрдИ API рдХреА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ'; } } // ь▒ДэМЕ ыйФьЛЬьзА ь╢Фъ░А 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; } // GeminiьЧР ыйФьЛЬьзА ьаДьЖб 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:
Thinking...'; loadingMsg.id = 'loading-message'; document.getElementById('chatMessages').appendChild(loadingMsg); try { let context = `Context: User is using a Flash Card Maker on WIA Code platform. `; if (flashcards.length > 0) { context += `Current deck has ${flashcards.length} flashcards. `; const recentCard = flashcards[flashcards.length - 1]; context += `Most recent card: "${recentCard.front}" -> "${recentCard.back}". `; } context += `User question: ${message}`; 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 }] }], 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('API рдХреА')) { 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.'); } } } // ========== EVENT LISTENERS ========== document.addEventListener('рдбреАрдУрдПрдо рдХрдВрдЯреЗрдВрдЯ рд▓реЛрдбреЗрдб', function() { // Initialize updateStats(); updateDeckDisplay(); updatePreview(); // AI ы▓ДэК╝ ьЭ┤ы▓дэК╕ document.getElementById('aiBtn').addEventListener('click', openAIModal); // ыкиыЛм ьЩ╕ы╢А эБ┤ыжньЛЬ ыЛлъ╕░ document.getElementById('aiModal').addEventListener('click', function(e) { if (e.target === this) { closeAIModal(); } }); // эВды│┤ыУЬ ьЭ┤ы▓дэК╕ document.addEventListener('keydown', function(e) { if (e.key === 'рдПрдВрдЯрд░') { const geminiInput = document.getElementById('geminiInput'); if (document.activeElement === geminiInput) { sendToGemini(); } } if (e.key === 'рдПрд╕реНрдХреЗрдк') { closeAIModal(); } // Study mode keyboard shortcuts if (!document.getElementById('studyInterface').classList.contains('hidden')) { if (e.key === ' ') { e.preventDefault(); flipCard('studyCard'); } else if (e.key === 'рджрд╛рдпрд╛рдБ рддреАрд░' || e.key === 'рдПрдВрдЯрд░') { e.preventDefault(); nextCard(); } } }); // ь┤Иъ╕░ API эВд ьГБэГЬ ьЧЕыН░ьЭ┤эК╕ updateAPIKeyStatus(); updateCurrentYear(); updateToolCount(); }); // Track analytics events document.querySelectorAll('a[href*="wia"]').forEach(link => { link.addEventListener('click', function() { trackEvent('wia_link_click', { link: link.textContent }); }); }); // ========== DYNAMIC TOOL COUNT ========== async function updateToolCount() { try { 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}`; }); } catch (error) { console.log('рдЯреВрд▓ рдХрд╛рдЙрдВрдЯ рдПрдкреАрдЖрдИ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ'); } } function updateCurrentYear() { const currentYear = new Date().getFullYear(); document.querySelectorAll('.current-year').forEach(el => { el.textContent = currentYear; }); } // ========== 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 });