// news system


var events = (function() {
    var current = 0,
        WIDTH = 240,
        DURATION = 500,
        loadMoreEvents = true,
        currentlyLoading = 0,
        animationInProgress = false,
        container,
        scrollbox;
    
    function eventCount() {
        return scrollbox.children().length;
    };
    
    function init() {
    	container = $("#events-slider");
    	scrollbox = $("#events-slider-events");

    	if ($.browser.msie && $.browser.version == "6.0") {
    	    $("#events-slider-forward").css({"display":"block"});
    	    $("#events-slider-back").css({"display":"block"});
    	}
    	
        //console.log(container, scrollbox, eventCount, $("#events-slider").eq(0), $("#events-slider").eq(0).children());
    	$("#events-slider-forward").click(function() {
    	    goTo("next");
    	});
    	$("#events-slider-back").click(function() {
    	    goTo("previous");
    	});
    	

    	
    	//loadMore(4);
    	goToCurrent();
    };
    
    function goTo(what) {
    	if (!animationInProgress) {
            switch (what) {
                case "previous":
                    current = current - 4;
                break;
                case "next":
                    current = current + 4;
                break;
                default:
                    if (typeof what === "number") {
                        current = what;
                    }
                break;
            }
            
            current = Math.max(0, Math.min(eventCount() - 4, current));
            
            goToCurrent();
        }
    };
    
    function goToCurrent() {        
        animationInProgress = true;
        if (current >= eventCount() - 8) {
            loadMore();
        }
        showButtons();
        showBoxes("all");
        scrollbox.animate({ left: (-WIDTH * current) + "px" }, DURATION, "swing", function() {
            showBoxes();
            animationInProgress = false;
        });
    };
    
    function showButtons() {
        if (current === 0) {
            $("#events-slider-back").fadeOut(DURATION);
        }
        else {
            $("#events-slider-back").fadeIn(DURATION);
        }
        
        //console.log(eventCount(), current);
    	if (current >= eventCount() - 4) {
            $("#events-slider-forward").fadeOut(DURATION);
        }
        else {
            $("#events-slider-forward").fadeIn(DURATION);
        }    
    };
    
    function showBoxes(which) {
        scrollbox.children().each(function(i, item) {
            if (which == "all" || i >= current && i < current + 4) {
                $(item).css({'visibility' : 'visible'});
            }
            else {
                $(item).css({'visibility' : 'hidden'});
            }
        });
    };
    
    function loadMore(howMany) {
        howMany = howMany || 4;
        if (loadMoreEvents) {
            var eventCountBefore = eventCount(),
                url = "/ajax/featured-events/?from=" + (eventCount() + currentlyLoading) + "&num=" + howMany;
            $.ajax({
                url: url,
                cache: false,
                success: function(html){
                    scrollbox.css({'width': ((eventCount() + howMany + 1) * WIDTH) + 'px'});
                    scrollbox.append(html);

					$('#events-slider .event').addClass('clickable');
                    showButtons();
                    //showBoxes();
                    
                    currentlyLoading -= howMany;
                    // if the number loaded is less than howMany, assume we've reached the end
                    if ($("<div>" + html + "</div>").children().length < howMany) {
                        loadMoreEvents = false;
                    }

                }
            });
            currentlyLoading += howMany;
        }
    };
    
    return {
    	init: init,
    	goTo: goTo
    }
})();


$(events.init);

