(function() { var track = document.querySelector('.carousel-track'); if (!track) return; var dots = document.querySelectorAll('.carousel-dot'); var caption = document.getElementById('carousel-caption'); var captions = JSON.parse(caption.dataset.captions); var count = dots.length; var current = 0; function go(i) { current = i; track.style.transform = 'translateX(-' + (i * 100) + '%)'; dots.forEach(function(d, j) { d.classList.toggle('active', j === i); }); caption.textContent = captions[i]; } dots.forEach(function(d) { d.addEventListener('click', function() { go(+d.dataset.index); }); }); setInterval(function() { go((current + 1) % count); }, 8000); })();