var Slideshow = new Class({
    initialize: function(div, opt){
    	this.opt = opt || {width:0, height:0, fade: 2000, periodical: 5000};
        this.div = div;
        this.images = div.getChildren('img');
        if(this.opt.width!=0)
        	this.div.setStyle('width', this.opt.width+'px');
        if(this.opt.height!=0)
        	this.div.setStyle('height', this.opt.height+'px');        
        this.images.each(function(el, i){
        	el.setStyles({
				'position': 'absolute',
				'top': 0,
				'left': 0,
				'right': 0,
				'opacity': 0,
				'padding': 0
			});
			if(i==0){
				el.setStyle('opacity', '1');
			}
        });
     	var current = 0;
		var prev = 0;
		var next;
		var fx1, fx2;
		var o = {'duration': this.opt.fade, 'transition': Fx.Transitions.Linear};
		
		function callback(i){
			if(this.images.length <= 1){
				$clear(this.intervalId);
				return;
			}
			i = i || 1;
			prev = current;
			next = current+i;
			if(next>=this.images.length) next = 0;
			if(next<0) next = this.images.length - 1;

			fx1 = new Fx.Tween(this.images[prev], opt);
			fx1.start('opacity', '1', '0');
			fx2 = new Fx.Tween(this.images[next], opt);
			fx2.start('opacity', '0', '1');
			current = next;
		}
		this.intervalId = callback.bind(this).periodical(this.opt.periodical);
    }
});
