

var Slideshow = {
	options: {},
		
	setNext: function(e) {
		Slideshow.options.element.select('.'+Slideshow.options.next).each(function(n){
			if (typeof(e.next('a.'+Slideshow.options.slide)) == 'undefined') {
				n.addClassName('disabled');
				n.rel='';
			} else {
				n.removeClassName('disabled');
				n.rel=e.next('a.'+Slideshow.options.slide).id;
			}
		});
	},

	setPrev: function(e) {
		Slideshow.options.element.select('.'+Slideshow.options.prev).each(function(n){
			if (typeof(e.previous('a.'+Slideshow.options.slide)) == 'undefined') {
				n.addClassName('disabled');
				n.rel='';
			} else {
				n.removeClassName('disabled');
				n.rel=e.previous('a.'+Slideshow.options.slide).id;
			}
		});
	},

	switchSlide: function(slide) {
		if (slide) {
			Slideshow.options.element.select('.'+Slideshow.options.placeholder).each(function(p){
				p.src=slide.href;
				p.title=slide.title;
				p.alt=slide.title;
			});
			Slideshow.options.element.select('.'+Slideshow.options.desc).each(function(d){
				d.update(slide.title);
			});
			
			Slideshow.setNext(slide);
			Slideshow.setPrev(slide);
			
			Slideshow.options.element.select('a.'+Slideshow.options.slide).each(function(s){
				s.removeClassName('selected');
			});
			slide.addClassName('selected');
		}
	},
	
	create: function(element) {
		Slideshow.options = Object.extend({ 
      element: 	$(element),
			placeholder: 'placeholder', 
			prev: 		'prev', 
			next: 		'next', 
			desc: 		'desc', 
			slide: 		'slide', 
			slides: 	'slides'
    }, arguments[1] || {});
		
		Slideshow.options.element.select('a.'+Slideshow.options.slide).each(function(e){
			Event.observe(e,'click',Slideshow.handleNumberClick.bindAsEventListener(e));
		});
		
		[Slideshow.options.prev,Slideshow.options.next].each(function(d){
			Slideshow.options.element.select('.'+d).each(function(b){
				b.observe('click',Slideshow.handlePrevNextClick.bindAsEventListener(b,d));
			});
		});
		
		first = Slideshow.options.element.select('.'+Slideshow.options.slides+' .'+Slideshow.options.slide).shift();
		Slideshow.switchSlide(first);
	},
	
	handleNumberClick: function(ev) {
		Event.stop(ev);
		e = Event.element(ev);
		Slideshow.switchSlide(e);
	},
	
	handlePrevNextClick: function(ev) {
		Event.stop(ev);
		e = Event.element(ev);
		Slideshow.switchSlide($(e.rel));
	}

}
