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_indicators) { target.select('li a').each(function(link){ link.observe('click',SPARCslideshow.jumpToSlide); }); } if (data.show_nav) { 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'), show = SPARCslideshow.grabShow(div), 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], target = $('slideshow-' + id), img = target.down('img'), current = new String(), dimensions = img.getDimensions(); target.setStyle({height: dimensions.height + 'px'}); 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; } }