`;
});
const symptomContainer = document.getElementById('symptom-checklist');
Object.keys(symptomCategories).forEach(category => {
let categoryHtml = ``;
symptomContainer.innerHTML += categoryHtml;
});
}
populateQuestions();
updateNavButtons();
// --- Event Listeners ---
tabs.forEach(tab => {
tab.addEventListener('click', (e) => {
e.preventDefault();
if (!e.target.dataset.tab) return;
activateTab(parseInt(e.target.dataset.tab, 10));
});
});
nextTabBtn.addEventListener('click', () => {
if (currentTab < totalTabs) activateTab(currentTab + 1);
});
prevTabBtn.addEventListener('click', () => {
if (currentTab > 1) activateTab(currentTab - 1);
});
downloadPdfBtn.addEventListener('click', generatePdf);
// --- Core Functions ---
function activateTab(tabNumber) {
currentTab = tabNumber;
tabs.forEach(t => t.classList.toggle('active', parseInt(t.dataset.tab) === currentTab));
tabContents.forEach(c => c.classList.toggle('active', parseInt(c.id.split('-')[1]) === currentTab));
updateNavButtons();
if (currentTab === 3) {
runAssessment();
}
}
function updateNavButtons() {
prevTabBtn.disabled = currentTab === 1;
nextTabBtn.disabled = currentTab === totalTabs;
}
function runAssessment() {
let score = 0;
let envSummaryHtml = '
${category}
`;
symptomCategories[category].forEach(symptom => {
categoryHtml += `
`;
});
categoryHtml += `
Environment
- ';
let symptomsSummaryHtml = '
- ${q.text} `; } }); envSummaryHtml += '
- ${label.textContent} `; symptomsFound = true; } }); if (!symptomsFound) symptomsSummaryHtml += '
- None reported '; symptomsSummaryHtml += '
Symptoms
- ';
let symptomsFound = false;
// Calculate environment score and summary
envQuestions.forEach(q => {
const selected = document.querySelector(`input[name="${q.id}"]:checked`);
if (selected && selected.value === 'yes') {
score += q.points;
envSummaryHtml += `
Recommendations
Your results indicate a low likelihood of significant mold issues. Maintain good ventilation and monitor for any changes in your environment or health.
'; } else if (score < 65) { riskLevel = 'Moderate Risk'; riskColor = 'text-yellow-500'; recommendations = 'Recommendations
Your results suggest a moderate potential for mold exposure or sensitivity. Consider a professional inspection if environmental factors are present. Discuss your symptoms with a healthcare provider.
'; } else { riskLevel = 'High Risk'; riskColor = 'text-red-600'; recommendations = 'Recommendations
Your results indicate a high likelihood of mold exposure or sensitivity affecting your health. It is strongly recommended to consult a healthcare provider about your symptoms and seek a professional environmental inspection of your living/work space.
'; } document.getElementById('risk-level-text').className = 'text-3xl font-extrabold ' + riskColor; document.getElementById('risk-level-text').textContent = riskLevel; document.getElementById('risk-score-text').textContent = `Score: ${score} / 153`; document.getElementById('recommendations-section').innerHTML = recommendations; // Update gauge pointer const pointer = document.getElementById('gauge-pointer'); const rotation = Math.min(180, (score / 153) * 180); // Max score is 153 pointer.style.transform = `rotate(${rotation}deg)`; } function generatePdf() { pdfLoader.classList.remove('hidden'); downloadPdfBtn.disabled = true; const pdfContent = document.getElementById('pdf-output'); html2canvas(pdfContent, { scale: 2 }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const canvasWidth = canvas.width; const canvasHeight = canvas.height; const ratio = canvasWidth / canvasHeight; const imgHeight = (pdfWidth - 80) / ratio; pdf.addImage(imgData, 'PNG', 40, 40, pdfWidth - 80, imgHeight); pdf.save('mold_assessment_report.pdf'); pdfLoader.classList.add('hidden'); downloadPdfBtn.disabled = false; }).catch(err => { console.error("PDF generation failed:", err); alert("Sorry, there was an error creating the PDF."); pdfLoader.classList.add('hidden'); downloadPdfBtn.disabled = false; }); } });