SPARCslideshow = {
	shows: {},
	init: function (id,options,json) {
		SPARCslideshow.shows[id] = {};
		SPARCslideshow.shows[id].images = json.evalJSON();
		SPARCslideshow.shows[id].options = options.evalJSON();
		var data = SPARCslideshow.shows[id].options;
		var target = $('slideshow-' + id);
		if (data.show_nav) {
			target.select('li a').each(function(link){
				link.observe('click',SPARCslideshow.jumpToSlide);
			});
		}
		if (data.show_indicators) {
			target.select('.slide-nav a').each(function(link){
				link.observe('click',SPARCslideshow.prevNext);
			});
		}
		SPARCslideshow.shows[id].timer = setTimeout(function(){
			SPARCslideshow.swap(id);
		},(data.duration * 1000));
	},

	grabShow: function(element){
		return element.up('div.slideshow').id.split('-')[1];
	},

	effects: function(img,newimg,data,swapto) {
		switch(data.options.transition) {
			case 'fadeout':
				Effect.Fade(img,{
					duration: 0.4,
					afterFinish: function () {
						img.src = data.images[swapto].src;
						img.width = data.images[swapto].width;
						img.height = data.images[swapto].height;
						img.classNames().each(function(e){
							img.removeClassName(e);
						});
						img.addClassName('image-' + swapto);
						Effect.Appear(img,{
							duration: 0.5
						});
					}
				});
				break;
			case 'fadein':
/* 				img.absoluteize(); */
/*
				alert(img.positionedOffset());
				var link = img.up('a');
				newimg.hide();
				link.appendChild(newimg);
				Effect.Fade(img,{
					duration: 0.4,
					afterFinish: function () {
						img.src = data.images[swapto].src;
						img.width = data.images[swapto].width;
						img.height = data.images[swapto].height;
						DOMUtil.setClass(img,'image-' + swapto);
						Effect.Appear(img,{
							duration: 0.5
						});
					}
				});
*/
				break;
		}
		img.up('a').href = (data.images[swapto].link.length > 0) ? data.images[swapto].link : 'javascript:;';
		img.up('a').target = (data.images[swapto].link.indexOf('http') >= 0) ? '_blank': '_self';
	},

	jumpToSlide: function (event) {
		var li = Event.element(event).up('li');
		var show = SPARCslideshow.grabShow(li);		
		var data = SPARCslideshow.shows[show];
		clearTimeout(data.timer);
		li.siblings().each(function(e){
			e.removeClassName('active-slide');
		});
		li.addClassName('active-slide');
		var swapto = li.previousSiblings().length;
		var img = li.up('div.slideshow').down('img');
		var newimg = new Image();
		newimg.onload = function () {
			SPARCslideshow.effects(img,newimg,data,swapto);
			SPARCslideshow.shows[show].timer = setTimeout(function(){
				SPARCslideshow.swap(show);
			},(20000));
		}
		newimg.src = data.images[swapto].src;
	},

	prevNext: function(event){
		Event.element(event).stopObserving();
		var div = Event.element(event).up('div');
		var show = SPARCslideshow.grabShow(div);		
		var data = SPARCslideshow.shows[show];
		clearTimeout(data.timer);
		
		switch (div.hasClassName('prev')) {
			case true:
				var img = div.up('div.slideshow').down('img');
				var current = new String();
				img.classNames().each(function(c){
					current = c;
				});
				current = current.split('-')[1];
				var swapto = (((current * 1) - 1) < 0) ? (data.images.length - 1) : ((current * 1) - 1);
				if (div.up('div.slideshow').down('ul.slideshow-nav')) {
					div.up('div.slideshow').down('ul.slideshow-nav').childElements().each(function(e,index){
						if (index == swapto) {
							e.addClassName('active-slide');
						} else {
							e.removeClassName('active-slide');
						} 
					});
				}
				var newimg = new Image();
				newimg.onload = function () {
					SPARCslideshow.effects(img,newimg,data,swapto);
					SPARCslideshow.shows[show].timer = setTimeout(function(){
						SPARCslideshow.swap(show);
					},(20000));
				}
				newimg.src = data.images[swapto].src;
				break;
			case false:
				SPARCslideshow.swap(show);
				break;
		}
		Event.element(event).observe('click',SPARCslideshow.prevNext);
		return;
	},

	swap: function(id) {
		var data = SPARCslideshow.shows[id];
		var target = $('slideshow-' + id);
		var img = target.down('img');
		var current = new String();
		img.classNames().each(function(c){
			current = c;
		});
		current = current.split('-')[1];
		var swapto = (((current * 1) + 1) > (data.images.length - 1)) ? 0 : ((current * 1) + 1);
		var newimg = new Image();
		newimg.onload = function () {
			if (target.select('.slideshow-nav')){
				target.select('.slideshow-nav li').each(function(e,index){
					if (index == swapto) {
						e.addClassName('active-slide');
					} else {
						e.removeClassName('active-slide');
					} 
				});
			}
			SPARCslideshow.effects(img,newimg,data,swapto);
			SPARCslideshow.shows[id].timer = setTimeout(function(){
				SPARCslideshow.swap(id);
			},(data.options.duration * 1000));
		}
		newimg.src = data.images[swapto].src;
	}
}
