
var mytimer = null;

// Vertical Scroller
var verticalTicker = 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().y;
            this.items.each(function(li, index){
                w += li.getSize().x;
            });
        }
        else {
            w = this.el.getSize().x;
            this.items.each(function(li, index){
                h += li.getSize().y;
            });
        }
        this.el.setStyles({
            position: 'absolute',
            top: 0,
            left: 0,
            width: w,
            height: h
        });
        this.fx = new Fx.Morph(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();
    },
    next: function(){
        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
        });
        //this.next.bind(this).delay(this.options.delay+this.options.speed);
        //In the next function, set the mytimer var to the delay timer.
        mytimer = this.next.bind(this).delay(this.options.delay + this.options.speed);
    },
    
    pause: function(){
        $clear(mytimer);
        mytimer = null;
    },
    resume: function(){
        if (mytimer == null) {
            this.next();
        }
    }
});
// Appel
/*
window.addEvent('domready', function(){

	var vert = new verticalTicker('TickerVertical',{speed:1000, delay:2000,direction:'vertical'});

	$('NewsTicker').addEvent('mouseenter', function() {vert.pause();});
	$('NewsTicker').addEvent('mouseleave', function() {vert.resume();});
});
*/

// Horizontal Scroller
var horizontalTicker = new Class({
    setOptions: function(options){
        this.options = Object.extend({
            speed: 1500,
            delay: 2000,
            direction: 'horizontal',
            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().y;
            this.items.each(function(li, index){
                w += li.getSize().x;
            });
        }
        else {
            w = this.el.getSize().x;
            this.items.each(function(li, index){
                h += li.getSize().y;
            });
        }
        this.el.setStyles({
            position: 'absolute',
            top: 0,
            left: 0,
            width: w,
            height: h
        });
        this.fx = new Fx.Morph(this.el, {
            transition: Fx.Transitions.Bounce.easeOut,
            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();
    },
    next: function(){
        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
        });
        //this.next.bind(this).delay(this.options.delay+this.options.speed);
        //In the next function, set the mytimer var to the delay timer.
        mytimer = this.next.bind(this).delay(this.options.delay + this.options.speed);
    },
    
    pause: function(){
        $clear(mytimer);
        mytimer = null;
    },
    resume: function(){
        if (mytimer == null) {
            this.next();
        }
    }
});

// Appel
/*
window.addEvent('domready', function(){ 

 var horiz = new horizontalTicker('TickerHorizontal',{speed:1500,delay:3000,direction:'horizontal'}); 

 $('NewsTicker').addEvent('mouseenter', function() {horiz.pause();});
 $('NewsTicker').addEvent('mouseleave', function() {horiz.resume();});

});

*/


