﻿jsDiapo = function(idContainer, params){this.init(idContainer, params);return this;}

jsDiapo.prototype.init = function(idContainer, params) {
	this.pause = (params['pause']) ? parseInt(params['pause']) : 1000; // Pause entre chaque transition
	this.transitionDelay = (params['transitionDelay']) ? parseInt(params['transitionDelay']) : 10;		// Délai de transition pour le fondu
	this.deltaOpacity = (params['deltaOpacity']) ? parseFloat(params['deltaOpacity']) : 0.1;			// Delta de l'opacité entre chaque transition
	this.isIE = document.all && !window.opera;
	this.currentOpacity = this.nextOpacity = this.currentLi = this.nextLi = this.steps = 0;
	this.dblSpeed = false;
	this.elts = document.getElementById(idContainer).getElementsByTagName("li");
	
	for (i = 0; i < this.elts.length; i++) {
		this.elts[i].style.position = 'absolute';
		this.elts[i].style.top = this.elts[i].style.left = '0px';
		this.setOpacity(this.elts[i], ((i == 1) ? 1 : 0));
	}
	this.changeContent(true);
};

jsDiapo.prototype.changeContent = function(step) {
	if (this.nextOpacity >= .99) {
		this.steps = 0;
		this.setOpacity(this.elts[this.currentLi], 0);
		this.currentLi = (this.currentLi < this.elts.length - 1) ? this.currentLi + 1 : 0;
		this.nextLi = (this.currentLi < this.elts.length - 1) ? this.currentLi + 1 : 0;
		this.currentOpacity = 1;this.nextOpacity = 0;
		this.timeOut = setTimeout(this.bindArgs(this, this.changeContent, [0]), this.pause);
	} else {
		this.steps++;
		this.currentOpacity = Math.cos(this.deltaOpacity * this.steps);
		this.nextOpacity = Math.sin(this.deltaOpacity * this.steps);
		this.setOpacity(this.elts[this.nextLi], this.nextOpacity);
		this.setOpacity(this.elts[this.currentLi], this.currentOpacity);
		this.timeOut = setTimeout(this.bindArgs(this, this.changeContent, [0]), this.transitionDelay);
	}
};

jsDiapo.prototype.bindArgs = function(objet, methode, myArgs) {
  return function() {
    return methode.apply(objet, myArgs);
  }
};

jsDiapo.prototype.setOpacity = function(obj, opacity) {
	this.isIE ? obj.style.filter = "alpha(opacity=" + (opacity * 100) + ")" : obj.style.opacity = opacity;
};
