/* This file is part of JonDesign's SmoothSlideshow v2.0. JonDesign's SmoothSlideshow is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. JonDesign's SmoothSlideshow is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Foobar; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Main Developer: Jonathan Schemoul (JonDesign: http://www.jondesign.net/) Contributed code by: - Christian Ehret (bugfix) - Simon Willison (addLoadEvent) */ // declaring the class var timedSlideShow = Class.create(); // implementing the class timedSlideShow.prototype = { initialize: function(element, data) { this.currentIter = 0; this.lastIter = 0; this.maxIter = 0; this.slideShowElement = element; this.slideShowData = data; this.slideShowInit = 1; this.slideElements = Array(); this.slideShowDelay = 4500; this.articleLink = ""; this.slideInfoZone = ""; element.style.display="block"; this.articleLink = document.createElement('a'); this.articleLink.className = 'global'; element.appendChild(this.articleLink); this.articleLink.href = "" ; this.maxIter = data.length; for(i=0;i= this.maxIter) { this.currentIter = 0; this.lastIter = this.maxIter - 1; } this.slideShowInit = 0; this.doSlideShow.bind(this)(); }, doSlideShow: function() { if (this.slideShowInit == 1) { imgPreloader = new Image(); // once image is preloaded, start slideshow imgPreloader.onload=function(){ setTimeout(this.startSlideShow.bind(this),10); }.bind(this); imgPreloader.src = this.slideShowData[0][0]; } else { if (this.currentIter != 0) { this.slideElements[parseInt(this.currentIter)].currentOpacity.options.onComplete = function() { this.slideElements[parseInt(this.lastIter)].setStyle('opacity',0); }.bind(this); this.slideElements[parseInt(this.currentIter)].currentOpacity.custom(0, 1); } else { this.slideElements[parseInt(this.currentIter)].setStyle('opacity',1); this.slideElements[parseInt(this.lastIter)].currentOpacity.custom(1, 0); } setTimeout(this.showInfoSlideShow.bind(this),1000); setTimeout(this.hideInfoSlideShow.bind(this),this.slideShowDelay-1000); setTimeout(this.nextSlideShow.bind(this),this.slideShowDelay); } }, showInfoSlideShow: function() { this.articleLink.removeChild(this.slideInfoZone); this.slideInfoZone = document.createElement('div'); this.slideInfoZone.styles = new fx.Styles(this.slideInfoZone); this.slideInfoZone.setStyle('opacity',0); var slideInfoZoneTitle = document.createElement('h2'); slideInfoZoneTitle.innerHTML = this.slideShowData[this.currentIter][2] this.slideInfoZone.appendChild(slideInfoZoneTitle); var slideInfoZoneDescription = document.createElement('p'); slideInfoZoneDescription.innerHTML = this.slideShowData[this.currentIter][3]; this.slideInfoZone.appendChild(slideInfoZoneDescription); this.articleLink.appendChild(this.slideInfoZone); this.articleLink.href = this.slideShowData[this.currentIter][1]; this.slideInfoZone.className = 'slideInfoZone'; this.slideInfoZone.normalHeight = this.slideInfoZone.getStyle('height', true).toInt(); this.slideInfoZone.styles.custom({'opacity': [0, 0.7], 'height': [0, this.slideInfoZone.normalHeight]}); }, hideInfoSlideShow: function() { this.slideInfoZone.styles.custom({'opacity': [0.7, 0]}); } }; function initTimedSlideShow(element, data) { var slideshow = new timedSlideShow(element, data); } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } }