var carouselFunc = { itemWidth: 0, itemCount: 0, itemsPage: 3, pages: 1, page: 1, userInteract: false, handleNavigation: function () { $('#mycarousel-prev,#mycarousel-next').unbind('click'); if ( this.page > 1 ) $('#mycarousel-prev').bind('click', this.prevHandler); if ( this.page < this.pages ) $('#mycarousel-next').bind('click', this.nextHandler); $(".cfOfferCarouselleNavigation").removeClass('cfOfferCarouselleNavigation_active'); this.setNavigationNumbers(this.page); }, disableNavigationWhileAnimation: function() { if ( this.userInteract === false ) { this.userInteract = true; $('#cfOfferScroller li .cfImage img[data-src]').each(function(){ $(this).attr('src',$(this).attr('data-src')).removeAttr('data-src'); }); } $('#mycarousel-prev, #mycarousel-next').unbind('click'); }, disablePrev: function() { $('#mycarousel-prev') .removeClass("cfOfferCarouselleNavigation") .addClass("cfOfferCarouselleNavigation_disabled"); }, enablePrev: function() { $('#mycarousel-prev') .addClass("cfOfferCarouselleNavigation") .removeClass("cfOfferCarouselleNavigation_disabled"); }, disableNext: function() { $('#mycarousel-next') .removeClass("cfOfferCarouselleNavigation") .addClass("cfOfferCarouselleNavigation_disabled"); }, enableNext: function() { $('#mycarousel-next') .addClass("cfOfferCarouselleNavigation") .removeClass("cfOfferCarouselleNavigation_disabled"); }, prevHandler: function(e) { return carouselFunc.animateTo(( carouselFunc.page - 1 )); }, nextHandler: function(e) { return carouselFunc.animateTo(( carouselFunc.page + 1 )); }, animateTo: function(page) { carouselFunc.disableNavigationWhileAnimation(); this.page = page; var item = ( (page-1) * this.itemsPage ); var offset = -( $('#cfOfferScroller > li').eq(item).position().left + 1 ); $("#cfOfferScroller").animate({ left: offset }, 600, function(){ carouselFunc.handleNavigation(); }); return false; }, printNavigationLine: function(id, active) { retur = ""+id+""; return retur; }, setNavigationNumbers: function(page) { var retur = ''; if ( page <= 1 ) { page = 1; retur += carouselFunc.printNavigationLine((page), true); retur += carouselFunc.printNavigationLine((page+1), false); retur += carouselFunc.printNavigationLine((page+2), false); carouselFunc.disablePrev(); } else if ( page >= this.pages ) { retur += carouselFunc.printNavigationLine((this.pages-2), false); retur += carouselFunc.printNavigationLine((this.pages-1), false); retur += carouselFunc.printNavigationLine((this.pages), true); carouselFunc.disableNext(); } else { carouselFunc.enableNext(); carouselFunc.enablePrev(); retur += carouselFunc.printNavigationLine((page-1), false); retur += carouselFunc.printNavigationLine((page), true); retur += carouselFunc.printNavigationLine((page+1), false); } $("#cfNavigation_numbers").html(retur); }, clickItem: function(element) { document.location.href = "/detail.php?"+element.data('href'); return false; }, init: function() { this.itemCount = $("#cfOfferScroller li").length; this.itemWidth = $("#cfOfferScroller li").eq(0).width(); this.pages = Math.ceil(this.itemCount / this.itemsPage); $("#cfOfferScroller").css({left:-1,width:( this.itemWidth + $('#cfOfferScroller > li:last').position().left )}); $('.cfOffer').bind('click', function(){ carouselFunc.clickItem($(this)); }); this.handleNavigation(); } }; // Initialization directly from JS, and not from inline scripting carouselFunc.init();