document.addEventListener('DOMContentLoaded', function() { const languageToggle = document.getElementById('language-toggle'); const langLabel = document.getElementById('lang-label'); const pageHeading = document.getElementById('page-heading'); const portugueseContent = document.getElementById('portuguese-content'); const englishContent = document.getElementById('english-content'); const navCommitment = document.getElementById('nav-commitment'); const navDocuments = document.getElementById('nav-documents'); const htmlElement = document.documentElement; let documentsData = []; // Load documents from JSON fetch('./documents.json') .then(response => response.json()) .then(data => { documentsData = data.documents; renderDocuments('pt-PT'); setLanguage(localStorage.getItem('preferred-language') || 'pt-PT'); }) .catch(error => console.error('Error loading documents:', error)); languageToggle.addEventListener('click', function() { const currentLang = htmlElement.lang; const newLang = currentLang === 'pt-PT' ? 'en' : 'pt-PT'; setLanguage(newLang); }); function renderDocuments(lang) { const container = lang === 'pt-PT' ? document.getElementById('documents-container') : document.getElementById('documents-container-en'); const filtered = documentsData; // Group by category const grouped = {}; filtered.forEach(doc => { if (!grouped[doc.category]) { grouped[doc.category] = []; } grouped[doc.category].push(doc); }); container.innerHTML = ''; Object.keys(grouped).forEach(category => { const categoryTitle = getCategoryTitle(category, lang); const categoryDiv = document.createElement('div'); categoryDiv.className = 'document-category'; const categoryHeading = document.createElement('h2'); categoryHeading.textContent = categoryTitle; categoryDiv.appendChild(categoryHeading); grouped[category].forEach(doc => { const docCard = document.createElement('div'); docCard.className = 'document-card'; const cardHeader = document.createElement('div'); cardHeader.className = 'card-header'; const docTitle = document.createElement('h3'); docTitle.textContent = doc.title; cardHeader.appendChild(docTitle); const langBadge = document.createElement('div'); langBadge.className = 'language-badge'; const langText = getLanguageName(doc.language); langBadge.innerHTML = ` language ${langText} `; cardHeader.appendChild(langBadge); docCard.appendChild(cardHeader); const docDesc = document.createElement('p'); docDesc.textContent = doc.description; docCard.appendChild(docDesc); const downloadLink = document.createElement('a'); downloadLink.href = doc.filename; downloadLink.className = 'btn btn-primary'; downloadLink.download = ''; downloadLink.innerHTML = ` download ${lang === 'pt-PT' ? 'Download' : 'Download'} `; const linkWrapper = document.createElement('p'); linkWrapper.style.marginTop = '16px'; linkWrapper.appendChild(downloadLink); docCard.appendChild(linkWrapper); categoryDiv.appendChild(docCard); }); container.appendChild(categoryDiv); }); } function getLanguageName(langCode) { const names = { 'pt-PT': 'Português', 'en': 'English' }; return names[langCode] || langCode; } function getCategoryTitle(category, lang) { const titles = { legal: { 'pt-PT': 'Documentos Legais', 'en': 'Legal Documents' }, report: { 'pt-PT': 'Relatórios', 'en': 'Reports' }, policy: { 'pt-PT': 'Políticas', 'en': 'Policies' } }; return titles[category][lang] || category; } function setLanguage(lang) { if (lang === 'en') { htmlElement.lang = 'en'; portugueseContent.classList.add('hidden'); englishContent.classList.remove('hidden'); pageHeading.lang = 'en'; pageHeading.textContent = 'Accessibility Documents'; langLabel.textContent = 'Português'; if (navCommitment) navCommitment.textContent = 'Commitment'; if (navDocuments) navDocuments.textContent = 'Documents'; renderDocuments('en'); } else { htmlElement.lang = 'pt-PT'; englishContent.classList.add('hidden'); portugueseContent.classList.remove('hidden'); pageHeading.lang = 'pt-PT'; pageHeading.textContent = 'Documentos de Acessibilidade'; langLabel.textContent = 'English'; if (navCommitment) navCommitment.textContent = 'Compromisso'; if (navDocuments) navDocuments.textContent = 'Documentos'; renderDocuments('pt-PT'); } localStorage.setItem('preferred-language', lang); } });