var slideShow = Class.create({
	delay:			10,
	totalElmt:		0,
	paused:			0,
	arrSlideElmt:	null,
	curElmtNum:		null,
	executor:		null,
							 
	initialize: function(div, delay) {
		this.delay = delay;
		this.totalElmt = $(div).childElements().size();
		this.paused = 0;
		this.arrSlideElmt = $(div).childElements();
		this.curElmtNum = (Math.round(Math.random()*(this.totalElmt - 1)));
		for(i=0; i<this.totalElmt; i++){
			Event.observe($(this.arrSlideElmt[i]), 'mouseover', function() { this.paused = 1; }.bind(this));
			Event.observe($(this.arrSlideElmt[i]), 'mouseout', function() { this.paused = 0; }.bind(this));
		}
		$A(this.arrSlideElmt).each(function(node) {
			Element.setStyle(node, { display: 'none'});
			Event.observe(node, 'click', function(s){
				Element.setStyle($(this.arrSlideElmt[this.curElmtNum]), { display: 'none'});
				this.checkSlide();
				Element.setStyle($(this.arrSlideElmt[this.curElmtNum]), { display: 'block'});
				s.stop();
			}.bind(this));
		}.bind(this));
		this.start();
	},
	start: function() {
		Element.setStyle($(this.arrSlideElmt[this.curElmtNum]), { display: 'block'});
		if(this.totalElmt>1){
			this.executor = new PeriodicalExecuter(function() { this.next();}.bind(this), this.delay);		
		}
	},
	next: function(){
		if(!this.paused) {
			this.update();
		}
	},
	update: function() {
		if(this.paused>0) return;
		var xOld = this.curElmtNum;
		this.checkSlide();
		var xNew = this.curElmtNum;
		new Effect.Parallel([ new Effect.Fade($(this.arrSlideElmt[xOld]),{duration:1, from:1, to:0}), new Effect.Appear($(this.arrSlideElmt[xNew]), {duration:1, from:0, to:1}) ]);
	},
	checkSlide: function() {
		if (this.curElmtNum == this.totalElmt-1) { this.curElmtNum = 0; }
		else { this.curElmtNum++; }		
	}
});
