document.addEventListener('DOMContentLoaded', function () { // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); document.querySelector(this.getAttribute('href')).scrollIntoView({ behavior: 'smooth' }); }); }); // Interaction Checker Logic const interactionForm = document.getElementById('interaction-form'); const resultDiv = document.getElementById('interaction-result'); if (interactionForm) { interactionForm.addEventListener('submit', function (e) { e.preventDefault(); const drugA = document.getElementById('drugA').value.trim(); const drugB = document.getElementById('drugB').value.trim(); resultDiv.className = 'mt-4 d-none'; // Hide previous result resultDiv.innerHTML = '
Loading...
'; resultDiv.classList.remove('d-none'); setTimeout(() => { let resultMessage = ''; let alertClass = 'alert-success'; if (drugA.toLowerCase() === 'warfarin' && drugB.toLowerCase() === 'aspirin' || drugA.toLowerCase() === 'aspirin' && drugB.toLowerCase() === 'warfarin') { resultMessage = `High Risk Interaction: Combining ${drugA} and ${drugB} increases the risk of bleeding. Consult your doctor immediately.`; alertClass = 'alert-danger'; } else if (drugA === '' || drugB === '') { resultMessage = 'Please enter both drug names.'; alertClass = 'alert-warning'; } else { resultMessage = `No Major Interaction Found: No significant interaction was found between ${drugA} and ${drugB}. This is not a substitute for professional medical advice.`; } resultDiv.innerHTML = `
${resultMessage}
`; }, 1500); }); } // Contact Form Logic const contactForm = document.getElementById('contact-form'); const contactToastEl = document.getElementById('contact-toast'); const contactToast = new bootstrap.Toast(contactToastEl); if (contactForm) { contactForm.addEventListener('submit', function(e) { e.preventDefault(); const name = document.getElementById('name').value; const email = document.getElementById('email').value; const message = document.getElementById('message').value; const submitButton = contactForm.querySelector('button[type="submit"]'); const formData = new FormData(); formData.append('name', name); formData.append('email', email); formData.append('message', message); submitButton.disabled = true; submitButton.innerHTML = ' Sending...'; fetch('contact.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { const toastBody = contactToastEl.querySelector('.toast-body'); if (data.success) { toastBody.textContent = data.message; contactToastEl.classList.remove('bg-danger'); contactToastEl.classList.add('bg-success', 'text-white'); contactForm.reset(); } else { toastBody.textContent = data.message || 'An error occurred.'; contactToastEl.classList.remove('bg-success'); contactToastEl.classList.add('bg-danger', 'text-white'); } contactToast.show(); }) .catch(error => { const toastBody = contactToastEl.querySelector('.toast-body'); toastBody.textContent = 'A network error occurred. Please try again.'; contactToastEl.classList.remove('bg-success'); contactToastEl.classList.add('bg-danger', 'text-white'); contactToast.show(); }) .finally(() => { submitButton.disabled = false; submitButton.innerHTML = 'Send Message'; }); }); } // Expiry Alert Tracker Logic const medicineForm = document.getElementById('medicine-form'); const medicineListContainer = document.getElementById('medicine-list-container'); // Function to calculate date difference and apply styling const getExpiryStatus = (expiryDate) => { const now = new Date(); const expiry = new Date(expiryDate); // Reset time part to compare dates only now.setHours(0, 0, 0, 0); expiry.setHours(0, 0, 0, 0); const diffTime = expiry - now; const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); if (diffDays < 0) { return { text: `Expired on ${expiry.toLocaleDateString()}`, className: 'expired' }; } if (diffDays <= 7) { return { text: `Expires in ${diffDays} day(s)`, className: 'expiry-soon' }; } return { text: `Expires on ${expiry.toLocaleDateString()}`, className: '' }; }; // Function to render medicines const renderMedicines = (medicines) => { if (!medicines || medicines.length === 0) { medicineListContainer.innerHTML = '

No medicines being tracked yet.

'; return; } const list = document.createElement('ul'); list.className = 'list-group list-group-flush'; medicines.forEach(medicine => { const status = getExpiryStatus(medicine.expiry_date); const item = document.createElement('li'); item.className = 'list-group-item'; item.innerHTML = `
${medicine.medicine_name}
${status.text}
`; list.appendChild(item); }); medicineListContainer.innerHTML = ''; medicineListContainer.appendChild(list); }; // Function to fetch medicines from the server const fetchMedicines = () => { fetch('medicines.php?action=get') .then(response => response.json()) .then(data => { if (data.success) { renderMedicines(data.medicines); } else { console.error('Failed to fetch medicines:', data.message); medicineListContainer.innerHTML = '

Could not load medicines.

'; } }) .catch(error => { console.error('Error fetching medicines:', error); medicineListContainer.innerHTML = '

Error loading medicines.

'; }); }; // Event listener for adding a new medicine if (medicineForm) { medicineForm.addEventListener('submit', function (e) { e.preventDefault(); const medicineName = document.getElementById('medicine_name').value.trim(); const expiryDate = document.getElementById('expiry_date').value; const submitButton = medicineForm.querySelector('button[type="submit"]'); const formData = new FormData(); formData.append('action', 'add'); formData.append('medicine_name', medicineName); formData.append('expiry_date', expiryDate); submitButton.disabled = true; submitButton.innerHTML = ' Adding...'; fetch('medicines.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { medicineForm.reset(); fetchMedicines(); // Refresh the list } else { alert(`Error: ${data.message}`); } }) .catch(error => { alert('A network error occurred.'); }) .finally(() => { submitButton.disabled = false; submitButton.innerHTML = 'Add to Tracker'; }); }); } // Event listener for deleting a medicine (using event delegation) if (medicineListContainer) { medicineListContainer.addEventListener('click', function(e) { if (e.target && e.target.classList.contains('delete-medicine')) { const medicineId = e.target.getAttribute('data-id'); if (!confirm('Are you sure you want to remove this medicine?')) { return; } const formData = new FormData(); formData.append('action', 'delete'); formData.append('id', medicineId); e.target.disabled = true; fetch('medicines.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { fetchMedicines(); // Refresh the list } else { alert(`Error: ${data.message}`); e.target.disabled = false; } }) .catch(error => { alert('A network error occurred.'); e.target.disabled = false; }); } }); } // Initial fetch of medicines when the page loads if (medicineListContainer) { fetchMedicines(); } });