/*    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 = 9000;		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<data.length;i++)		{			var currentImg = document.createElement('div');			currentImg.className = "slideElement";			currentImg.style.position="absolute";			currentImg.style.left="0px";			currentImg.style.top="0px";			currentImg.style.margin="0px";			currentImg.style.border="0px";			currentImg.style.backgroundImage="url('" + data[i][0] + "')";			currentImg.style.backgroundPosition="center center";			this.articleLink.appendChild(currentImg);			currentImg.currentOpacity = new fx.Opacity(currentImg, {duration: 2500});			currentImg.setStyle('opacity',0);			this.slideElements[parseInt(i)] = currentImg;		}		this.slideInfoZone = document.createElement('div');		this.slideInfoZone.style.display = 'none';		this.slideInfoZone.className = 'slideInfoZone';		// this puts the little slide up info - we only want the link		//this.articleLink.appendChild(this.slideInfoZone);		this.slideInfoZone.style.opacity = 0;		this.doSlideShow();	},	destroySlideShow: function(element) {		var myClassName = element.className;		var newElement = document.createElement('div');		newElement.className = myClassName;		element.parentNode.replaceChild(newElement, element);	},	startSlideShow: function() {		this.lastIter = this.maxIter - 1;		this.currentIter = 0;		this.slideShowInit = 0;		this.slideElements[parseInt(this.currentIter)].setStyle('opacity', 1);        if ((this.slideShowData[this.currentIter][2] !='') && (this.slideShowData[this.currentIter][3] !='')) {            /* title and description data present */            setTimeout(this.showInfoSlideShow.bind(this),1000);            setTimeout(this.hideInfoSlideShow.bind(this),this.slideShowDelay-1000);        } else {             /* no data present */                    }/*		setTimeout(this.showInfoSlideShow.bind(this),1000);		setTimeout(this.hideInfoSlideShow.bind(this),this.slideShowDelay-1000);*/		setTimeout(this.nextSlideShow.bind(this),this.slideShowDelay);	},	nextSlideShow: function() {		this.lastIter = this.currentIter;		this.currentIter++;		if (this.currentIter >= this.maxIter)		{			this.currentIter = 0;			this.lastIter = this.maxIter - 1;		}		this.slideShowInit = 0;		this.doSlideShow.bind(this)();	},	doSlideShow: function() {		if (this.slideShowInit == 1)		{			setTimeout(this.startSlideShow.bind(this),10);		} 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);			}						if ((this.slideShowData[this.currentIter][2] !='') && (this.slideShowData[this.currentIter][3] !='')) {                /* title and description data present */                setTimeout(this.showInfoSlideShow.bind(this),1000);                setTimeout(this.hideInfoSlideShow.bind(this),this.slideShowDelay-1000);            } else {                 /* no data present */                            }			/*setTimeout(this.showInfoSlideShow.bind(this),1000);			setTimeout(this.hideInfoSlideShow.bind(this),this.slideShowDelay-1000);*/			setTimeout(this.nextSlideShow.bind(this),this.slideShowDelay);		}		// Alan Cole - added to add link without the sliding text block		this.articleLink.href = this.slideShowData[this.currentIter][1];	},	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.styles.custom({'opacity': [0, 0.7], 'height': [0, this.slideInfoZone.getStyle('height', true)]});		//this.slideInfoZone.styles.custom({'opacity': [0, 0.7]});	},	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();		}	}}
