VCM Logo

Victorious Christian

Montessori

VCM Logo

School Events

Stay updated with all the exciting events happening at VCM

All Events

Job Opening: Mathematics Teacher
Event
Feb
26
February 26, 2026

Job Opening: Mathematics Teacher

As a Math Teacher, you will be responsible for planning and teaching maths lessons to all the grade levels. You will also be responsible for performin...

1 views
Read More
Job Opening: Faculty Staff
Event
Feb
26
February 26, 2026

Job Opening: Faculty Staff

Faculty members are responsible for designing their courses, preparing lectures, and grading student work, along with engaging in scholarly research a...

1 views
Read More
Job Opening: Staff
Event
Feb
26
February 26, 2026

Job Opening: Staff

Office staff responsibilities include performing clerical and administrative duties for an office. Clerical duties support the day-to-day operations o...

1 views
Read More
return; } console.log(' Menu elements found'); // Ensure hamburger button is clickable hamburgerBtn.style.pointerEvents = 'auto'; hamburgerBtn.style.zIndex = '1000'; hamburgerBtn.style.position = 'relative'; // State management let isAnimating = false; let currentOpenDropdown = null; /** * Open menu with staggered animations */ function openMenu() { if (isAnimating || !isMobile()) { console.log(' Cannot open menu:', { isAnimating, isMobile: isMobile() }); return; } isAnimating = true; console.log(' Opening menu'); // Add active classes hamburgerBtn.classList.add('active', 'menu-open'); menuOverlay.classList.add('active'); slideMenu.classList.add('active'); body.classList.add('menu-open'); // Allow animations to complete setTimeout(() => { isAnimating = false; }, 600); } /** * Close menu and cleanup */ function closeMenu() { if (isAnimating) return; isAnimating = true; console.log(' Closing menu'); // Remove active classes hamburgerBtn.classList.remove('active', 'menu-open'); menuOverlay.classList.remove('active'); slideMenu.classList.remove('active'); body.classList.remove('menu-open'); // Close all dropdowns closeAllDropdowns(); // Allow animations to complete setTimeout(() => { isAnimating = false; }, 400); } /** * Toggle menu state */ function toggleMenu() { if (!isMobile()) return; const isActive = slideMenu.classList.contains('active'); if (isActive) { closeMenu(); } else { openMenu(); } } /** * Close all open dropdowns */ function closeAllDropdowns() { const dropdowns = document.querySelectorAll('.menu-dropdown'); dropdowns.forEach(dropdown => { dropdown.classList.remove('active'); }); currentOpenDropdown = null; } // ===== EVENT LISTENERS ===== /** * Hamburger button click */ hamburgerBtn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); console.log(' Hamburger clicked'); toggleMenu(); }); // Add additional event listeners for better mobile compatibility hamburgerBtn.addEventListener('touchstart', function(e) { e.preventDefault(); }, { passive: false }); hamburgerBtn.addEventListener('touchend', function(e) { e.preventDefault(); e.stopPropagation(); if (isMobile()) { toggleMenu(); } }, { passive: false }); /** * Close button click */ if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); closeMenu(); }); } /** * Overlay click to close */ menuOverlay.addEventListener('click', function(e) { if (e.target === menuOverlay) { closeMenu(); } }); /** * Dropdown functionality */ const dropdownBtns = document.querySelectorAll('.menu-dropdown-btn'); dropdownBtns.forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); const dropdown = this.closest('.menu-dropdown'); const isCurrentlyActive = dropdown.classList.contains('active'); // Close all other dropdowns first if (!isCurrentlyActive) { closeAllDropdowns(); } // Toggle current dropdown dropdown.classList.toggle('active'); // Update current open dropdown reference if (dropdown.classList.contains('active')) { currentOpenDropdown = dropdown; } else { currentOpenDropdown = null; } }); }); /** * Keyboard navigation */ document.addEventListener('keydown', function(e) { const isActive = slideMenu.classList.contains('active'); if (e.key === 'Escape' && isActive) { closeMenu(); } }); /** * Responsive behavior - clean up on desktop */ let resizeTimeout; const handleResponsiveResize = () => { clearTimeout(resizeTimeout); resizeTimeout = setTimeout(() => { const currentWidth = window.innerWidth; if (currentWidth >= 768) { // Desktop mode - clean up mobile menu state const isActive = slideMenu.classList.contains('active'); if (isActive) { closeMenu(); } // Ensure complete cleanup for desktop body.classList.remove('menu-open'); hamburgerBtn.classList.remove('active', 'menu-open'); menuOverlay.classList.remove('active'); slideMenu.classList.remove('active'); closeAllDropdowns(); } }, 150); }; // Resize handling window.addEventListener('resize', handleResponsiveResize, { passive: true }); /** * Menu item clicks - close menu after navigation */ const menuLinks = document.querySelectorAll('.menu-item[href], .sub-menu-item[href]'); menuLinks.forEach(link => { link.addEventListener('click', function() { // Close menu with delay setTimeout(() => { closeMenu(); }, 150); }); }); /** * Prevent menu from closing when clicking inside */ slideMenu.addEventListener('click', function(e) { e.stopPropagation(); }); console.log(' Inline Mobile Menu setup complete (no scroll animations)'); });