var img, texte, page1, page2, zone, liendiapo;
var ligne, loading, imgTemp, idTempo=0, idTempoDiapo, idTempoTimer, diapoEnCours=false;
var opacity=100, n, i=1, termine=false, speed=20;
var delai = 5000, timer;

// Préchargement des images pour le chargement d'une nouvelle photo
var angle1 = new Image();
angle1.src = "data/images/angle1.png";
var angle2 = new Image();
angle2.src = "data/images/angle2.png";
var angle3 = new Image();
angle3.src = "data/images/angle3.png";
var angle4 = new Image();
angle4.src = "data/images/angle4.png";
var chargement = new Image();
chargement.src = "data/images/loading.gif";

function init() {
	loading = document.getElementById("loading");
	img = document.getElementById("vue");
	texte = document.getElementById("texte");
	page1 = document.getElementById("page1");
	page2 = document.getElementById("page2");
	zone = document.getElementById("zone");
	lienDiapo = document.getElementById("diapo");
	termine = true;
}

function makeRequest() {
	if (termine) {
		termine = false;
		i = 1;
		fondu();

		var httpRequest = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			httpRequest = new XMLHttpRequest();
			if (httpRequest.overrideMimeType) {
				httpRequest.overrideMimeType('text/html');
			}
		}
		else {
			if (window.ActiveXObject) { // IE
				try {
					httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e) {
					try {
						httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch (e) {}
				}
			}
		}
		if (!httpRequest) {
			alert('Abandon :( Impossible de créer une instance XMLHTTP');
			return false;
		}
		httpRequest.onreadystatechange = function() { chargeImage(httpRequest); };
		httpRequest.open('GET', "data/ajax/ajax_aleatoire.php", true);
		httpRequest.send(null);
	}
}

function chargeImage(httpRequest) {
	if (httpRequest.readyState == 1) {
		loading.style.display = "inline";
		var largeur;
		if (navigator.appName == "Netscape")
			largeur = window.outerWidth;
		else
			largeur = document.body.offsetWidth;
		loading.style.left = ((largeur / 2) - 105) + "px";

		var hauteur;
		if (img.height == 500)
			hauteur = 400;
		else
			hauteur = 380;
		
		if (album && hauteur_page < 665)
			hauteur = hauteur - 165;
		loading.style.top = hauteur + "px";
	}
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			ligne = httpRequest.responseText.split("##");
			imgTemp = new Image();
			imgTemp.src = ligne[0];
			setTimeout("wait()", 10);
		}
		else {
			alert('Un problème est survenu avec la requête.');
		}
	}
}

function next() {
	if (!diapoEnCours)
		makeRequest();
	else
		diaporama();
}

function fondu() {
	clearTimeout(idTempo);
	//Disparition
	if (i == 1) {
		opacity = opacity - 2;
		if (opacity != 0) {
			idTempo = setTimeout("fondu()", speed);
		}
	}
	//Apparition
	else {
		opacity = opacity + 5;
		if (opacity > 100)
			opacity = 100;
		if (opacity != 100)
			idTempo = setTimeout("fondu()", speed / 2);
		else {
			clearTimeout(idTempo);
			termine = true;
			loading.style.display = "none";
			if (diapoEnCours) {
				// Décrémenter le timer
				idTempoTimer = setTimeout("DecrTimer()", 300);
			}
		}		
	}

	if (n)
		zone.style.opacity = (opacity / 100).toString();
	else
		zone.style.filter = "alpha(opacity=" + opacity + ")";
}

function diaporama() {
	//Arrêt du diaporama
	if (diapoEnCours) {
		clearTimeout(idTempoTimer);
		clearTimeout(idTempoDiapo);
		diapoEnCours = false;
		timer = delai / 1000;
		lienDiapo.innerHTML = "diaporama";
	}
	//Démarrage du diaporama
	else {
		makeRequest();
		diapoEnCours = true;
	}
}

function wait() {
	// Photo chargée
	if (imgTemp.complete == true) {
		clearTimeout(idTempo);
		i = 0;
		if (diapoEnCours) {
			timer = delai / 1000;
			lienDiapo.innerHTML = delai / 1000;
		}
		fondu();
		img.src = imgTemp.src;
		texte.innerHTML = ligne[1];
		page1.innerHTML = ligne[2];
		page1.href = ligne[3];
		page2.innerHTML = ligne[4];
		page2.href = ligne[5];
	}
	// Photo en chargement
	else
		setTimeout("wait()", 10);
}

function DecrTimer() {
	timer--;
	lienDiapo.innerHTML = timer;
	if (timer > 0) {
		idTempoTimer = setTimeout("DecrTimer()", 1000);
	}
	else {
		makeRequest();
		clearTimeout(idTempoTimer);
	}
}