var Ticker = new Class({
    setOptions: function(options) {
        this.options = Object.extend({
            speed: 1500,
            delay: 5000,
            direction: 'vertical',
            onComplete: Class.empty,
            onStart: Class.empty
        }, options || {});
    },
    initialize: function(el, options) {
        this.setOptions(options);
        this.el = $(el);
        this.items = this.el.getElements('li');
        var w = 0;
        var h = 0;
        if (this.options.direction.toLowerCase() == 'horizontal') {
            h = this.el.getSize().size.y;
            this.items.each(function(li, index) {
                w += li.getSize().size.x;
            });
        } else {
            w = this.el.getSize().size.x;
            this.items.each(function(li, index) {
                h += li.getSize().size.y;
            });
        }
        this.el.setStyles({
            position: 'absolute',
            top: 0,
            left: 0,
            width: w,
            height: h
        });
        this.fx = new Fx.Styles(this.el, { duration: this.options.speed, onComplete: function() {
            var i = (this.current == 0) ? this.items.length : this.current;
            this.items[i - 1].injectInside(this.el);
            this.el.setStyles({
                left: 0,
                top: 0
            });
        } .bind(this)
        });
        this.current = 0;
        this.next();
    },

    pause: function() {
        $clear(mytimer);
        mytimer = null;
    },
    resume: function() {
        if (mytimer == null) {
            this.next();
        }
    },
    next: function() {
        if (this.items.length > 0) {
            this.current++;
            if (this.current >= this.items.length) this.current = 0;
            var pos = this.items[this.current];
            this.fx.start({
                top: -pos.offsetTop,
                left: -pos.offsetLeft
            });
            mytimer = this.next.bind(this).delay(this.options.delay + this.options.speed);
        }
    }
});

var mytimer = null;

window.addEvent('domready', function() {
    var hor = new Ticker('TickerVertical', {
        speed: 500, delay: 5000, direction: 'vertical'
    });
    var stopscroll = $('stop_scroll');
    if (stopscroll != null) {
        stopscroll.addEvent('click', function() {
            $('play_scroll_cont').style.display = 'block';
            $('stop_scroll_cont').style.display = 'none';
            hor.pause();
        });
    }
    var playscroll = $('play_scroll');
    if (playscroll != null) {
        playscroll.addEvent('click', function() {
            $('stop_scroll_cont').style.display = 'block';
            $('play_scroll_cont').style.display = 'none';
            hor.resume();
        });
    }
});