Mold Exposure & Sensitivity Checker

Mold Exposure & Sensitivity Checker

Answer a few questions to assess your potential risk.

Environment Assessment

Symptom Checklist

Check any symptoms you've been experiencing consistently.

Assessment Report

Your Answers

Disclaimer: This tool is for informational purposes only and does not constitute medical advice. The results are based on common risk factors and symptoms associated with mold exposure. Consult with a healthcare professional or an environmental specialist for a formal diagnosis or inspection.

${q.text}

`; }); const symptomContainer = document.getElementById('symptom-checklist'); Object.keys(symptomCategories).forEach(category => { let categoryHtml = `

${category}

`; symptomCategories[category].forEach(symptom => { categoryHtml += ` `; }); 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 = '

Environment

    '; let 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 += `
    • ${q.text}
    • `; } }); envSummaryHtml += '
    '; // Calculate symptom score and summary document.querySelectorAll('#symptom-checklist input[type="checkbox"]').forEach(checkbox => { if (checkbox.checked) { score += parseInt(checkbox.dataset.points, 10); const label = document.querySelector(`label[for="${checkbox.id}"] span`); symptomsSummaryHtml += `
  • ${label.textContent}
  • `; symptomsFound = true; } }); if (!symptomsFound) symptomsSummaryHtml += '
  • None reported
  • '; symptomsSummaryHtml += '
'; document.getElementById('env-summary').innerHTML = envSummaryHtml; document.getElementById('symptom-summary').innerHTML = symptomsSummaryHtml; // Determine risk level let riskLevel, riskColor, recommendations; if (score < 30) { riskLevel = 'Low Risk'; riskColor = 'text-emerald-600'; recommendations = '

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; }); } });
Scroll to Top