// #PLib::PLoad('PLib.Dom.Client.Scriptaculous.effects');

var SlideShowLoader = Class.create();

SlideShowLoader.prototype = {
	initialize: function(options) {
		this.options = Object.extend({
			selector: '.slide_show'
		}, options || {});
		
		Event.observe(window, 'load', this.bindToDocument.bindAsEventListener(this));
	},

	bindToDocument: function(event){
		var parents = $$(this.options.selector)
		var myThis = this;
		parents.each(function(parent) {
			new SlideShow(parent, myThis.options);
		});
	}
}

var SlideShow = Class.create();

SlideShow.prototype = {
	initialize: function(parent, options) {
		this.parent = parent;

		this.options = Object.extend({
			childSelector: '.slide',
			delay: 4000
		}, options || {});
		
		this.bindToDocument();
	},

	bindToDocument: function(){
		var myThis = this;
		this.slides = this.parent.select(this.options.childSelector);
		this.slideIndex = 0;
		var first = this.slides.first();
/*		this.parent.setStyle({
			width: first.getWidth(),
			height: first.getHeight()
		})
	*/	
		this.slides.each(function(slide) {
			slide.show();
			slide.absolutize();
			if(slide != first)
			{
				
				slide.hide();
			}
		});
		
		setTimeout(this.nextSlide.bindAsEventListener(this), this.options.delay);
	},
	
	nextSlide: function() {
		Effect.Fade(this.slides[this.slideIndex]);
		var next = (this.slideIndex + 1) % this.slides.length;
		Effect.Appear(this.slides[next]);
		this.slideIndex = next;
		
		setTimeout(this.nextSlide.bindAsEventListener(this), this.options.delay);
	}
}


