(function() {
    var Products = function(element, autoScroll) {
		element = $(element);
		var obj = this;
        var page = 0;
        var speed = 1000;
        var autoScroll = autoScroll;
        var autoScrollDelay = 5000;
        var ul = element.find('ul');
        var autoScrollDirection = 1;
        var autoScrollTimer = null;
        
        this.init = function() {
			ul.css({position:'absolute'});
            ul.width(ul.find('li:first').outerWidth() * ul.find('li').length + 30);
			$('.next').click(function(ev) {
				ev.preventDefault();
                obj.goToNextPage(1);
				if(autoScrollTimer != null){
					window.clearTimeout(autoScrollTimer);
				}
	            autoScrollTimer = window.setTimeout(function() { obj.autoScroll(); }, autoScrollDelay);
			});
            $('.prev').click(function(ev) {
                ev.preventDefault();
                obj.goToNextPage(-1);
				if(autoScrollTimer != null){
					window.clearTimeout(autoScrollTimer);
				}
	            autoScrollTimer = window.setTimeout(function() { obj.autoScroll(); }, autoScrollDelay);
			});	
            if(autoScroll) {
                obj.startAutoScroll();
            }
        };
        
        this.scroll = function() {
            var multiplier = -1;
            var itemWidth = ul.find('li:first').outerWidth();
			var scrollLength = page * itemWidth * multiplier;
            ul.animate({ left: scrollLength }, { duration: speed });
        };
        
        this.autoScroll = function() {
            var currentPage = page;
            obj.goToNextPage(autoScrollDirection);
            if (page == currentPage) {
                autoScrollDirection = -autoScrollDirection;
                obj.goToNextPage(autoScrollDirection);
            }
            obj.startAutoScroll();
        };

        this.startAutoScroll = function() {
            if (autoScrollTimer != null) {
                window.clearTimeout(autoScrollTimer);
            }
            autoScrollTimer = window.setTimeout(function() { obj.autoScroll(); }, autoScrollDelay);
        };

        this.stopAutoScroll = function() {
            if (autoScrollTimer != null) {
                window.clearTimeout(autoScrollTimer);
            }
            autoScrollTimer = null;
        };
        
        this.goToNextPage = function(direction) {
            if (direction < 0) {
                if (page > 0) {
                    page--;
                    obj.scroll();

                }
            } else {
                var onLastPage = (ul.find('li').length - 1) == Math.abs(page);
                  if (!onLastPage) {
                    page++;
                    obj.scroll();
                }
            }
        };
    };
	$(document).ready(function(){
	 	var products = new Products($('#our-business'), true);
		products.init();
	});
})(jQuery);
