(function($){

	$.fn.auto_scroll = function(p) {

        var p=p||{};

        var _height = p && p.height ? p.height : "100px";
        var _width = p && p.width ? p.width : "100px";
        var _delay = p && p.delay ? p.delay : "1000";
        var _increment = p && p.increment ? p.increment : "1";
        var _direction = p && p.direction ? (p.direction == "horizontal" ? p.direction : "vertical") : "vertical";

        var container = $(this),
            element = container.find(':first-child').css('padding', '0').css('margin', '0'),
            scrollDirection = 1;

        element.addClass("scroll-element");
        container.css("height", _height).css("width", _width);

        // Initially hiding scrollbar
        ToggleScrollbar(false, '');

        // Hover on news item container
        container.hover (
            // Hover
            function() {
                ToggleScrollbar(true);
                AutoScroll(false);
            },
            // Leave
            function() {
                ToggleScrollbar(false);
                AutoScroll(true);
            }
        );

        // Toggles visibility of scrollbar
        function ToggleScrollbar(showScrollbar) {
            if ( showScrollbar ) {
                container.css('overflow', 'auto');
            }
            else {
                container.css('overflow', 'hidden');
            }
        }

        setTimeout(function() { AutoScroll(true); } , parseInt(_delay));

        function AutoScroll(scroll) {
	        if (((element.height() <= container.height()) && (_direction == "vertical"))
	            || ((element.width() <= container.width()) && (_direction == "horizontal")))
	            return;

	        if ( scroll ) {
	            container.everyTime(60, 'scrollingTimer', function(i) {
	                if ( scrollDirection == 1 ) {
	                    if ((container.scrollTop() < ((element.height() - container.height()))) && (_direction == "vertical")) {
	                        container.scrollTop(container.scrollTop() + parseInt(_increment));
	                    }
	                    else if ((container.scrollLeft() < ((element.width() - container.width()))) && (_direction == "horizontal")) {
	                        container.scrollLeft(container.scrollLeft() + parseInt(_increment));
	                    }
	                    else {
	                        scrollDirection = -1;
	                        container.stopTime('scrollingTimer');
	                        setTimeout(function() { AutoScroll(true); } , parseInt(_delay));
	                    }
	                }
	                else {
	                    if ((container.scrollTop() > 0) && (_direction == "vertical")) {
	                        container.scrollTop(container.scrollTop() - parseInt(_increment));
	                    }
	                    else if ((container.scrollLeft() > 0) && (_direction == "horizontal")) {
	                        container.scrollLeft(container.scrollLeft() - parseInt(_increment));
	                    }
	                    else {
	                        scrollDirection = 1;
	                        container.stopTime('scrollingTimer');
	                        setTimeout(function() { AutoScroll(true); } , parseInt(_delay));
	                    }
	                }
	            }, 0, true );
	        }
	        else {
	            container.stopTime('scrollingTimer');
	        }
	        return false;
        }

    };

})(jQuery);
