/* ----- ----- ----- Free software Foundation - Affero Licence ----- ----- -----

diapo.js - Slideshow with fading
    Copyright (C) 2008  Thibault Garcia (thibault.garcia@revaweb.com)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program 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 Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

----- ----- ----- Free software Foundation - Affero Licence ----- ----- ----- */

var diapoId;


/* ----- ----- diapoInit ----- -----
Initialise le diaporama (à mettre dans <body onload="diapoInit( ... );"> avec les paramètres suivants :
img   : identifiant de l'image
src   : liste des chemins des images ['img1.jpg','img2.jpg'...]
delay : temps entre chaque changement de diapo (ms)
prec  : flèche précédent
suiv  : flèche suivant
alt   : texte alternatif aux images du diaporama
title : info bulle sur le diaporama
*/
function diapoInit(img,src,delay,prec,suiv,divnum,alt,title){
	diapoId=document.createElement('img');
	diapoId.diapoTimer=null;
	diapoId.diapoNum=0;
	diapoId.diapoSrc=src;
	diapoId.diapoDelay=delay;
	diapoId.diapoNb=src.length;
	diapoId.diapoDivNum=document.getElementById(divnum);
	diapoId.Ok=true;

	/* ----- mise en place des éléments de l'image affichée ----- */
	document.getElementById(img).src=diapoId.diapoSrc[diapoId.diapoNum];
	document.getElementById(img).onclick=function() { diapoSuiv(); };
	document.getElementById(prec).onclick=function() { diapoPrec();return false };
	document.getElementById(suiv).onclick=function() { diapoSuiv();return false };

	/* ----- Gestion du fondu via image de fond d'un span ----- */
	var dep_node=document.getElementById(img);

	diapoId.alt=alt;
	diapoId.title=title;
	diapoId.style.margin=0;
	diapoId.style.padding=0;
	diapoId.style.border=0;
	diapoId.style.cssFloat='none';
	diapoId.style.display='inline';

	diapoId.style.borderWidth='1px';
	diapoId.style.borderStyle='solid';
	diapoId.style.borderColor='#FFF';


	dep_node.appendChild(diapoId);

	for(var i=diapoId.diapoNb;i--;) {
		/* ----- Préchargement ---- */
		img = document.createElement('img');

		var img_src = document.createAttribute('src');
		img_src.nodeValue = diapoId.diapoSrc[i];
		img.setAttributeNode(img_src);

		img.style.display='none';

		document.getElementsByTagName('body')[0].appendChild(img);
	}

	if(diapoId.diapoNb>0) {
		diapoId.src = diapoId.diapoSrc[0];
	}

}

/* ----- ----- diapoDebutIf ----- -----
temps : temps avant le prochain changement de diapo (ms)
*/
function diapoDebutIf(temps) {
	if(diapoId.Ok) diapoDebut(temps);
}


/* ----- ----- diapoFinIf ----- -----
Termine le diaporama en assurant que diapoDebutIf n'aura pas d'effet
*/
function diapoFinIf() {
	diapoId.Ok=false;
	diapoFin();
}

/* ----- ----- diapoDebut ----- -----
temps : temps avant le prochain changement de diapo (ms)
*/
function diapoDebut(temps) {
	if(diapoId.diapoTimer) clearTimeout(diapoId.diapoTimer);
	diapoId.diapoTimer=setTimeout('diapoSuiv()',temps);
	diapoId.diapoDivNum.innerHTML=(diapoId.diapoNum+1)+'/'+diapoId.diapoNb;
}
/* ----- ----- diapoFin ----- -----
*/
function diapoFin() {
	if(diapoId.diapoTimer) clearTimeout(diapoId.diapoTimer);
	diapoId.diapoOpacityValue=0;
	diapoId.style.opacity=1;
	diapoId.style.filter='alpha(opacity=100)';
}

/* ----- ----- diapoChange ----- -----
Changement de diapositive
n : numéro de la prochaine diapo à afficher
temps : temps avant de passer à la suivante
*/
function diapoChange(n,temps) {
	if(diapoId.diapoTimer) clearTimeout(diapoId.diapoTimer);

	diapoId.diapoNum=n;

	diapoId.src=diapoId.diapoSrc[diapoId.diapoNum];

	diapoId.diapoDivNum.innerHTML=(n+1)+'/'+diapoId.diapoNb;

	diapoId.diapoTimer=setTimeout('diapoSuiv()',temps);
}

/* ----- ----- diapoSuiv ----- -----
passe à la diapo suivante
*/
function diapoSuiv(){
	diapoChange((diapoId.diapoNum+1)%diapoId.diapoNb,diapoId.diapoDelay);
}

/* ----- ----- diapoPrec ----- -----
passe à la diapo précédente
*/
function diapoPrec(){
	diapoChange((diapoId.diapoNum+diapoId.diapoNb-1)%diapoId.diapoNb,diapoId.diapoDelay);
}

/* ----- ----- diapoSet ----- -----
Fixe le numéro de la diapo affiché :
n : numéro de diapo à afficher (de 0 à nb de diapos -1)
*/
function diapoSet(n){
	diapoChange(n,3*diapoId.diapoDelay);
}

/* ----- ----- diapoOut ----- -----
Evénement onmouseout sur miniatures
*/
function diapoOut(n){
}

/* ----- ----- diapoOver ----- -----
Evénement onmouseover sur miniatures
*/
function diapoOver(n){
}
