$ -> intitalizeSlider() intitalizeSlider = -> carousel = $('.carousel') console.log carousel if carousel.length computeSlidingTimeAndSlideIt(0) # start with first slide contolWrapper = carousel.find('.carousel-controls') contolWrapper.on 'click', 'a', -> index = $(@).parent().index() goToSlide(index) false carouselTimeoutId = null computeSlidingTimeAndSlideIt = (activeIndex) -> carousel = $('.carousel') slides = carousel.find('.carousel-images .item') currentSlide = slides.eq(activeIndex) nextSlide = if activeIndex + 2 <= slides.length then activeIndex + 1 else 0 length = 6000 clearTimeout carouselTimeoutId carouselTimeoutId = setTimeout -> goToSlide(nextSlide) , length carousel.off('mouseenter').on 'mouseenter', -> # halt the carousel clearTimeout carouselTimeoutId carousel.off('mouseleave').on 'mouseleave', -> # continnue to slide clearTimeout carouselTimeoutId carouselTimeoutId = setTimeout -> goToSlide(nextSlide) , length goToSlide = (slideIndex) -> carousel = $('.carousel') slides = carousel.find('.carousel-images') controls = carousel.find('.carousel-controls') slides.find('.active').removeClass 'active' slides.find('.item').eq(slideIndex).addClass 'active' controls.find('.active').removeClass 'active' controls.find('.item').eq(slideIndex).addClass 'active' clearTimeout carouselTimeoutId computeSlidingTimeAndSlideIt(slideIndex)