soundManager.url = '../swf/'; // Chemin du dossier "swf"
soundManager.debugMode = false; // DebugMode désactivé
soundManager.waitForWindowLoad = true; // Attendre le chargement de la page pour charger soundManager
soundManager.onerror = function() { // En cas d'erreur ...
	alert("SoundManager 2 a rencontré une erreur."); // ... on affiche un message à l'utilisateur
}
var playlist = []; // Tableau pour contenir la playlist
var act_vol = 75; // Variable pour le volume actuel, initialisée au volume par défaut de SoundManager
var loop = "none"; // Mode de répétition séléctionné
var next = false; // Indicateurs booléens du clic sur Previous et Next
var prev = false;

		

soundManager.onload = function() { // On attend tout d'abord le chargement...
	var barre = document.getElementById("barre"); // On récupère la barre d'avancement,
	var chargement = document.getElementById("chargement"); // la barre de chargement,
	var cpt = document.getElementById("cpt"); // le compteur de secondes,
	var vol = document.getElementById("volume"); // la barre de volume,
	var list = document.getElementById("playlist").getElementsByTagName("a"); // et les différents liens <a> de la playlist (les titres).
	for (var i=0;i<list.length;i++) { // On parcourt la liste
		list[0].rel = 0; // On renseigne un indice arbitraire dans l'attribut rel de chaque <a>
		var sp = document.createElement("span"); // On crée un élément span
		list[0].parentNode.insertBefore(sp,list[0]); // qu'on ajoute avant chaque <a> de la liste
		list[0].onclick = function() { // On crée une fonction onclick sur chaque lien :
			soundManager.stopAll(); // On stoppe tous les sons
			lire_current(); // On appelle la fonction lire_current() pour lancer la lecture
			return false; // On renvoie faux pour empêcher les liens de rediriger (ils ne servent qu'aux sans-js)
		};
		(function(titre) {
			playlist[0] = soundManager.createSound( // On crée un son pour chaque lien de la playlist
			{
				id : "piste"+0, // Id arbitraire : piste0, piste1, etc.
				url : "../musique/nhill.mp3", // L'url de chaque son est le href de chaque lien
				whileloading : function() { // Pendant le chargement :
					chargement.style.backgroundPosition = -420+(this.bytesLoaded/this.bytesTotal * 420)+"px 50%"; // On ajuste le background de la barre de chargement
					if(this.bytesTotal>= 1048576) { // Si taille totale >= 1 Mo
						taille_totale = parseInt(this.bytesTotal/1048576*100)/100+" Mo";
						taille_chargee = parseInt(this.bytesLoaded/1048576*100)/100+" Mo";
					} else if(this.bytesTotal >= 1024) { // Sinon si taille totale >= 1 Ko
						taille_totale = parseInt(this.bytesTotal/1024*100)/100+" Ko";
						taille_chargee = parseInt(this.bytesLoaded/1024*100)/100+" Ko";
					} else { // Sinon si < 1 Ko
						taille_totale = this.bytesTotal+" o";
						taille_chargee = this.bytesLoaded+" o";
					}
					document.getElementById("load").innerHTML = taille_chargee+" / "+taille_totale; // On insère dans le span de chargement.
				},
				whileplaying : function() { // Pendant la lecture :
					barre.style.backgroundPosition = -420+(this.position/this.duration * 420)+"px 50%"; // On ajuste le background de la barre d'avancement
					act_sec = parseInt(this.position/1000 % 60,10); // Calcul du nb de secondes écoulées
					if(act_sec<10) { act_sec = "0"+act_sec; } // (Ajout d'un 0 si <10)
					act_min = parseInt(this.position/1000/60,10); // Calcul du nb de minutes écoulées
					tot_sec = parseInt(this.duration/1000 % 60,10); // Calcul du nb de secondes total du son
					if(tot_sec<10) { tot_sec = "0"+tot_sec; } // (Ajout d'un 0 si <10)
					tot_min = parseInt(this.duration/1000/60,10); // Calcul du nb de minutes total du son
					cpt.innerHTML = act_min+":"+act_sec+" / "+tot_min+":"+tot_sec; // On affiche ces valeurs dans le div "cpt"
					vol.style.backgroundPosition = -100+act_vol+"px 50%"; // On ajuste le background de la barre de son, en fonction du son actuel
					vol.title = "Volume : "+act_vol; // On ajuste aussi le title du volume
				},
				onresume : // Quand on enlève "pause" :
					function() {
					titre.previousSibling.innerHTML = "<img src='../images/played.png' alt='lecture' /> "; // On insère une image "play" dans le span créé
					},
				onplay : // Quand on fait "play" :
					function() {
					titre.previousSibling.innerHTML = "<img src='../images/played.png' alt='lecture' /> "; // On insère une image "play" dans le span créé
					},
				onstop : // Quand on fait "stop" :
					function() {
					playlist[0].unload(); // On "décharge" le son, histoire de pas occuper trop de mémoire
					titre.previousSibling.innerHTML = ""; // On enlève l'image du span
					},
				onfinish : // A la fin d'un son
					function() {
					b_play.src = "../images/play.png"; // Le bouton "pause" devient "play"
					b_play.title = "Lecture"; // On change le title également		
					titre.previousSibling.innerHTML = ""; // On enlève l'image du span
					},
				onpause : // Quand on fait "pause"
					function() {
					titre.previousSibling.innerHTML = "<img src='../images/paused.png' alt='pause' /> "; // On insère une image "pause" dans le span créé
					},
				onid3 : function() { // A l'arrivée des Tag ID3
					var chaine_tag = ""; // On crée une chaîne vide
					if(this.id3["artist"]) { // Et on y insère les différents tag en vérifiant leur existence au préalable.
						//chaine_tag += "<strong>Artiste : </strong>"+this.id3["artist"]+"<br />";
					}
					if(this.id3["album"]) {
						//chaine_tag += "<strong>Album : </strong>"+this.id3["album"]+"<br />";
					}
					if(this.id3["songname"]) {
						//chaine_tag += "<strong>Titre : </strong>"+this.id3["songname"];
					}
					document.getElementById("tagid3").innerHTML = chaine_tag; // On insère finalement la chaîne dans la page
					
				}
			});	
			
		})(list[0]);
		
	}
	bouton_play();
	bouton_play();
	lire_current();
}



function lire_current() { // Fonction de démarrage de la lecture
	soundManager.stopAll(); // On stoppe tous les sons (pour éviter le multi-shot
	playlist[0].setPosition(0); // On réinitialise la position du son courant
	playlist[0].setVolume(act_vol); // On applique le volume actuel
	playlist[0].play(); // On lance la lecture
	document.getElementById("play").src = "../images/pause.png"; // Le bouton "play" devient "pause"
	document.getElementById("play").title = "Pause"; // On change le title également.
}
function bouton_play() { // Appui sur le bouton "play"
	if(playlist[0].playState) { // On teste si un titre est en cours de lecture/pause. Si oui
		b_play = document.getElementById("play"); // On récupère le bouton "play"
		if(playlist[0].paused) { // S'il est en pause
			playlist[0].resume(); // On le relance
			b_play.src = "../images/pause.png"; // Le bouton "play" devient "pause"
			b_play.title = "Pause"; // On change le title également
		} else { // S'il est en lecture
			playlist[0].pause(); // On le met en pause
			b_play.src = "../images/play.png"; // Le bouton "pause" devient "play"
			b_play.title = "Lecture"; // On change le title également
		}
	} else { // Si le son est stoppé
		lire_current(); // On démarre la lecture
	}
}
function bouton_stop() { // Appui sur le bouton "stop"
	playlist[0].stop(); // On stoppe le son courant
	document.getElementById("play").src = "../images/play.png"; // Le bouton "pause" devient "play"
	document.getElementById("play").title = "Lecture"; // On change le title également
	document.getElementById("barre").style.backgroundPosition = "-420px 50%"; // On réinitialise la position du background de la barre d'avancement
	document.getElementById("cpt").innerHTML = "0:00 / 0:00"; // On réinitialise le compteur de temps
	document.getElementById("chargement").style.backgroundPosition = "-420px 50%"; // On réinitialise la position du background de la barre de chargement
	document.getElementById("load").innerHTML = "0 / 0"; // On réinitialise le compteur de chargement
}
function bouton_toggleMute() { // Appui sur le bouton "Muet"
	var bouton_muet = document.getElementById("mute"); // On récupère le bouton
	if(bouton_muet.alt == "muet") { // S'il est en sonore
		soundManager.mute(); // On coupe le son
		bouton_muet.alt = "son"; // On change les attributs alt, title et src
		bouton_muet.title = "Son";
		bouton_muet.src = "../images/mute.png";
	} else { // S'il est en muet
		soundManager.unmute(); // On remet le son
		bouton_muet.alt = "muet"; // On change les attributs alt, title et src
		bouton_muet.title = "Muet";
		bouton_muet.src = "../images/sound.png";
	}
}
function bouton_volume(aug) { // Appui sur les boutons du volume
	if(aug) { // Si appui sur "+"
		if(act_vol<100) { // Si on peut encore augmenter
		act_vol++; // On augmente
		timer = setTimeout(bouton_volume,50,true); // Et on relance la fonction
		}
	} else { // Si appui sur "-"
		if(act_vol>0) { // Si on peut encore diminuer
		act_vol--; // On diminue
		timer = setTimeout(bouton_volume,50,false); // Et on relance la fonction
		}
	}
	playlist[current].setVolume(act_vol); // On applique le volume au titre courant
	var vol = document.getElementById("volume"); // On récupère la barre de volume
	vol.style.backgroundPosition = -100+act_vol+"px 50%"; // On ajuste son background
	vol.title = "Volume : "+act_vol; // et son title
}
var v_clic = false; // Indicateur booléen du clic sur la barre de volume
var b_clic = false; // Indicateur booléen du clic sur la barre d'avancement
var v_x; // Variable de position absolue en x de la barre de volume
var b_x; // Variable de position absolue en x de la barre d'avancement

function clic(obj, event) { // Clic sur une des deux barres
	if (event.preventDefault){ // Code pour éviter que la souris embarque les ../images...
	event.preventDefault();
	}
	event.returnValue = false;
	if(obj=="vol") { // Si on clique sur la barre de volume
		v_clic = true; // On active le booléen
		var vol = document.getElementById("volume"); // On récupère la barre de volume
		v_x = coord(vol); // On calcule sa position absolue en x
		act_vol = event.clientX - v_x; // Une simple soustraction donne le volume
		playlist[0].setVolume(act_vol); // On applique le volume au titre courant
		vol.style.backgroundPosition = -100+act_vol+"px 50%"; // On ajuste son background
		vol.title = "Volume : "+act_vol; // et son title
	} else { // Si on clique sur la barre d'avancement
		b_clic = true; // On active le booléen
		var barre = document.getElementById("barre"); // On récupère la barre d'avancement
		b_x = coord(barre); // On calcule sa position absolue en x
		playlist[0].setPosition(parseInt((event.clientX - b_x)/420 * playlist[0].duration,10)); // On change la position du titre en cours en fonction
	}
}
function move(obj, event) { // Cliquer-glisser sur une des deux barres
	if(obj=="vol" && v_clic) { // Si on est sur la barre de volume
		act_vol = event.clientX - v_x; // On calcul le volume choisi
		playlist[0].setVolume(act_vol); // On applique le volume au titre courant
		var vol = document.getElementById("volume"); // On récupère la barre de volume
		vol.style.backgroundPosition = -100+act_vol+"px 50%"; // On ajuste son background
		vol.title = "Volume : "+act_vol; // et son title
	} else if(obj=="barre" && b_clic) { // Si on est sur la barre d'avancement
		playlist[0].setPosition(parseInt((event.clientX - b_x)/420 * playlist[0].duration,10)); // On change la position du titre en cours en fonction
	}
}
function coord(element) { // Fonction pour calculer la position absolue en x d'un élement
	var eX = 0; // Initialisation de la valeur
	do{
		eX += element.offsetLeft; // On ajoute l'offsetLeft
		element = element.offsetParent; // On remonte à l'objet parent
	} while( element && element.style.position != 'absolute'); // Et on recommence
	return eX; // On renvoit la position absolue en x de l'élément
}
document.onmouseup = function() { // Quand on relâche le clic
	v_clic = false; // On "désactionne" les deux indicateurs de clic.
	b_clic = false;
}

