Ticker = new Class({
    Implements: Options,

	options: {
	    period: 10000
	},
    
    initialize: function(id, options) {
        this.setOptions(options);
        this.element = $(id);
        this.current = 0;
        this.items = this.element.getChildren();
        this.element.setStyles({
            position: "relative",
            overflow: "hidden"
        })
        for(var i=0,item; item = this.items[i]; i++) {
            item.setStyles({
                position: "absolute",
                display: "none"
            })
        }
        if (this.items.length > 0) {
            this.items[0].setStyle('display', 'block');
            this.slide.periodical(this.options.period, this);
        }
    },
    
    slide: function() {
        var currentElement = this.items[this.current];
        var width = this.element.getSize().x;
        this.current = (this.current + 1) % this.items.length;
        var nextElement = this.items[this.current];
        new Fx.Morph(currentElement, {wait: false})
            .addEvent('complete', function(e) {e.setStyle('display', 'none')})
            .start({left: -width});
        (function() {
            new Fx.Morph(nextElement, {wait: false})
                .addEvent('start', function(e) {e.setStyles({left: width, display: 'block'})})
                .start({left: [width, 0]});
        }).delay(200);
    }
});

Ticker.assign = function(elements) {
    for (var i = 0, element; element = elements[i]; i++) {
        new Ticker(element);
    }
}

