$(document).ready(function() { /* ---------- Functions ---------- */ /** * Event handler for previous/next buttons. Displays the * previous or next carousel item. * * @param object carousel The carousel container. * @author Dianne Castillo * */ var cycleCarousel = function(ev) { var carouselNavButton = $(this); var carouselNavButtonClass = $(this).attr('class'); var carouselItemList = ev.data.itemList; var currentCarouselItem = ev.data.currentItem; var carouselItemCount = ev.data.itemList.length; var carouselItemLast = carouselItemCount - 1; var newCarouselItemIndex; var newCarouselItem; // Couldn't get an item count if(typeof(carouselItemCount) == 'undefined' || carouselItemCount === null || carouselItemCount === 0) { return; } // Hide all $(carouselItemList).each(function(i, el) { $(el).hide(); }); // END: loop through all Carousel Items // Select previous item if ($(carouselNavButton).hasClass('previous')) { newCarouselItemIndex = currentCarouselItem - 1; // Go to last item if at the beginning newCarouselItemIndex = newCarouselItemIndex < 0 ? carouselItemLast : newCarouselItemIndex; } // Select next item else if ($(carouselNavButton).hasClass('next')) { newCarouselItemIndex = currentCarouselItem + 1; // Go to first item if at the end newCarouselItemIndex = newCarouselItemIndex > carouselItemLast ? 0 : newCarouselItemIndex; } // Show new item var newCarouselItem = $(carouselItemList)[newCarouselItemIndex]; $(newCarouselItem).show(); // Store new item ev.data.currentItem = newCarouselItemIndex; }; // END: cycleCarousel /** * Initiate News and Events carousel on Home Page. * * @author Dianne Castillo * */ var initHomeCarousel = function() { var carouselItemList = '#carousel .news-item-container'; var carouselItemCount = $(carouselItemList).length; var carousel = { 'itemList': $(carouselItemList), 'currentItem': 0 }; // Add previous/next buttons var newsLink = '.more-news a'; $(newsLink).before(''); $(newsLink).after(''); var buttonPrevious = '.more-news button.previous'; var buttonNext = '.more-news button.next'; // Add event handlers for previous/next buttons $(buttonPrevious).bind('click', carousel, cycleCarousel); $(buttonNext).bind('click', carousel, cycleCarousel); }; // END: initHomeCarousel /* ---------- Events ----------- */ initHomeCarousel(); });