// Shared JavaScript functions document.addEventListener('DOMContentLoaded', function() { // Initialize tooltips const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); }); }); // Form validation function function validateForm(formId) { const form = document.getElementById(formId); const inputs = form.querySelectorAll('input[required], select[required], textarea[required]'); let isValid = true; inputs.forEach(input => { if (!input.value) { input.classList.add('border-red-500'); isValid = false; } else { input.classList.remove('border-red-500'); } }); return isValid; } // Toggle dropdown function function toggleDropdown(dropdownId) { const dropdown = document.getElementById(dropdownId); dropdown.classList.toggle('hidden'); } // Close dropdown when clicking outside document.addEventListener('click', function(event) { const dropdowns = document.querySelectorAll('.dropdown-content'); dropdowns.forEach(dropdown => { if (!dropdown.contains(event.target) && !event.target.matches('.dropdown-toggle')) { dropdown.classList.add('hidden'); } }); });