/**
 * jQuery TOOLS plugin :: scrollable.autoscroll 1.0.1
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#autoscroll
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch  : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) {

    var t = $.tools.scrollable;
    t.plugins = t.plugins || {};

    t.plugins.autoscroll = {
        version: '1.0.1',

        conf: {
            autoplay: true,
            interval: 3000,
            autopause: true,
            steps: 1,
            api: false
        }
    };

    // jQuery plugin implementation
    $.fn.autoscroll = function(conf) {

        if (typeof conf == 'number') {
            conf = { interval: conf };
        }

        var opts = $.extend({}, t.plugins.autoscroll.conf), ret;
        $.extend(opts, conf);

        this.each(function() {

            var api = $(this).scrollable();
            if (api) { ret = api; }

            // interval stuff
            var timer, hoverTimer, stopped = true;

            api.play = function() {

                // do not start additional timer if already exists
                if (timer) { return; }

                stopped = false;

                // construct new timer
                timer = setInterval(function() {
                    api.move(opts.steps);
                }, opts.interval);

                api.move(opts.steps);
            };

            api.pause = function() {
                timer = clearInterval(timer);
            };

            // when stopped - mouseover won't restart 
            api.stop = function() {
                api.pause();
                stopped = true;
            };

            // property added by Björn Olsson, Sublime
            api.options = opts;

            /* when mouse enters, autoscroll stops */
            if (opts.autopause) {
                api.getRoot().add(api.getNaviButtons()).hover(function() {
                    api.pause();
                    clearInterval(hoverTimer);

                }, function() {
                    if (!stopped) {
                        hoverTimer = setTimeout(api.play, opts.interval);
                    }
                });
            }

            if (opts.autoplay) {
                setTimeout(api.play, opts.interval);
            }

        });

        return opts.api ? ret : this;

    };

})(jQuery);		
