$(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();
});