$(function () { var index = 0 const maxIndex = numImages - 1 const delay = 6000 const shuffeledIndices = [] for(let i=0; i<=maxIndex; i++){ shuffeledIndices.push(i) } // Shuffle by Fisher-Yates algorithm for(let i=maxIndex; i>= 0; i--) { const j = Math.floor(Math.random() * (i+1)) const tmp = shuffeledIndices[j] shuffeledIndices[j] = shuffeledIndices[i] shuffeledIndices[i] = tmp } function showImage(idxidx) { const idx = shuffeledIndices[idxidx] const imgs = $('#header .slider .slider-img') imgs.eq(idx).removeClass('hidden') imgs.filter((i, e) => {return i != idx}).addClass('hidden') const dots = $('#header .slider .dots .dot') dots.removeClass('active') dots.eq(idxidx).addClass('active') index = idxidx } function getNextIndex() { const ret = index + 1 if (ret > maxIndex) { return 0 } else { return ret } } function nextImage() { const newIdx = getNextIndex() showImage(newIdx) setTimeout(nextImage, delay) } showImage(0) // Start the animaions delayed to allow for showing the first image directly setTimeout(() => { $('#header .slider .slider-img').addClass('animated') }, 150) setTimeout(nextImage, delay) $('#header .slider .dots .dot').click(function (evt) { // console.log(evt) const newIdx = $(evt.target).data('index') showImage(newIdx) }) })