var CrossFadingPresentation = new Class({ Extends: Presentation, // Assumes slides are positioned absolutely within the presentation swap: function(oldSlide, newSlide) { this.swapping = true; // Position newSlide under oldslide newSlide.setStyle('z-index', 0); oldSlide.setStyle('z-index', 1); // Add newSlide to the DOM newSlide.inject(this.presentation); var newSlideFx = newSlide.retrieve('fx', null); if(!newSlideFx) { newSlideFx = new Fx.Tween(newSlide, {duration: this.options.transitionDuration, transition: this.options.transitionType}); newSlideFx.addEvent('complete', this.swapCompleteListener.bind(this)); newSlide.store('fx', newSlideFx); } // Create fx object if not exists var oldSlideFx = oldSlide.retrieve('fx', null); if(!oldSlideFx) { oldSlideFx = new Fx.Tween(oldSlide, {duration: this.options.transitionDuration, transition: this.options.transitionType}); oldSlideFx.addEvent('complete', this.swapCompleteListener.bind(this)); oldSlide.store('fx', oldSlideFx); } // Start the fx newSlideFx.set('opacity', 1); oldSlideFx.start('opacity', 1, 0); } });