jQuery.fn.scrolling = function(options) {
    
    return this.each(function() {
        var container = $(this);
        
        var is_moving = false;
        
        var panorama = container.find("ul.panoram-list");
        var sfWidth = container.find(".scroll-frame").width(); //width of scroll frame
        var outerWidth = panorama.children("li:first").outerWidth(true); //outerWidth of scroll item
        var count = Math.round(sfWidth/outerWidth);
        var scrollitem_count = panorama.children("li").length;

        function updateUI() {
            if (panorama.position().left != -((scrollitem_count-count)*outerWidth) && scrollitem_count > count) {
                    container.find("a.right-passive").removeClass("right-passive").addClass("right-normal");
            }else {
                container.find("a.right-normal").removeClass("right-normal").addClass("right-passive");
            }
            
            if (panorama.position().left < 0) {
                container.find("a.left-passive").removeClass("left-passive").addClass("left-normal");
            }else {
                container.find("a.left-normal").removeClass("left-normal").addClass("left-passive");
            }
        }
        
        container.find("a.right-passive").click(function() {
            var right = $(this);
            
            if (is_moving == true || right.hasClass("right-passive")) { return; }
            is_moving = true;
            
            panorama.animate({"left":"-="+outerWidth+"px"}, "slow", function() {
                updateUI();
                is_moving = false;
            });
        });
        
        container.find("a.left-passive").click(function() {
            var left = $(this);
            
            if (is_moving == true || left.hasClass("left-passive")) { return; }
            is_moving = true;
            
            panorama.animate({"left":"+="+outerWidth+"px"}, "slow", function() {
                updateUI();
                is_moving = false;
            });
        })
        
        updateUI();
    });
}