
// HAWA PLAYER V4
// Hawa media & Univup interactive 2008


// Configuration
var defil_vitesse = 60; // millisecondes par pas
var defil_pause_start = 3000; // millisecondes
var defil_pause_end = 1000; // millisecondes
var flux_url = "http://futuradio.fr/playliste/128/universel/ecoute_hawa-"; // url de la playlist d'écoute + nom_du_flux.mp3
var ajax_url = "include/ajax.php?canal="; // url du fichier de données + nom_du_canal
var refresh_int = 10; // intervalle de rafraîchissement des données en secondes
var pause_start = 7; // secondes avant le premier rafraîchissement des données lors de l'appel du flux
var mess_newstream = "Chargement de"; // message de chargement d'un flux + nom_du_canal ...
var mess_stop = "Arr&ecirc;t&eacute;"; // message en cas de stop
var vignette_url = "images/vignette-"; // url image vignette (pochette) + nom_du_canal.jpg
var logo_url = "images/logo-"; // url image logo du flux + nom_du_canal.jpg
var flux_default = "futuradio"; // nom du flux lu par défaut


// Variables globales d'initialisation
var titre_actu = "";
var defil_titre_auto_active = 0;
var defil_titre_auto_sens = "l";
var defil_titre_auto_px = 0;
var player_url = '';
var lecture = false;
var canal = '';


// TITRAGE ###############################################################################
function affiche_titre(titre)
{
	if(titre != titre_actu)
	{
		titre_actu = titre;
		document.getElementById("titrage").innerHTML = titre_actu;
		
		start_defil_titre_auto();
	}
}

// Demarrage de la fonction boucle de défilement automatique barre titrage
function start_defil_titre_auto()
{
	// Si pas déja démarrée
	if(!defil_titre_auto_active)
	{
		defil_titre_auto_active = true;
		defil_titre_auto();
	}
	else
	{
		document.getElementById("titrage").style.left = "0px";
		defil_titre_auto_px = false;
	}
}

// Défilement automatique barre titrage
function defil_titre_auto_depasse()
{
	largeurmax = document.getElementById("player_titre").offsetWidth-10;
	largeur = document.getElementById("titrage").offsetWidth;
	
	// Si le titre dépasse
	if(largeur > largeurmax)
		return (largeur - largeurmax);
	else
		return false;
}
function defil_titre_auto()
{
	// Si le titre dépasse
	if(defil_titre_auto_depasse() > 0)
	{
		// (Re)Détermine le sens lorsque les extremités sont atteintes
		if(defil_titre_auto_px == (defil_titre_auto_depasse() * -1))
			defil_titre_auto_sens = "r";
		else if(defil_titre_auto_px == 0)
			defil_titre_auto_sens = "l";
		
		// Si le sens est vers la gauche
		if(defil_titre_auto_sens == "l")
		{
			defil_titre_auto_px --;
			document.getElementById("titrage").style.left = defil_titre_auto_px + "px";
		}
		// Si le sens est vers la droite
		else
		{
			defil_titre_auto_px ++;
			document.getElementById("titrage").style.left = defil_titre_auto_px + "px";
		}
		
			// TIMER
		if(defil_titre_auto_px == 0)
			pas = defil_pause_start; // Pause début
		else if(defil_titre_auto_px == (defil_titre_auto_depasse() * -1))
			pas = defil_pause_end; // Pause fin
		else
			pas = defil_vitesse;
		
		if(defil_titre_auto) window.setTimeout("defil_titre_auto();", pas); // Boucle
	}
	// Sinon recadrer
	else
	{
		document.getElementById("titrage").style.left = "0px";
		defil_titre_auto_px = false;
		defil_titre_auto_active = false;
	}
}




// RAFRAICHISSEMENT DES DONNEES ########################################################
function refresh_ajax(flux)
{ 
	var req = null;  var data = null;

	if(window.XMLHttpRequest) 						// Objet de la fenetre courant
		req = new XMLHttpRequest();  				// Firefox, Safari, ...
	else if (window.ActiveXObject) 					// Version Active
		req  = new ActiveXObject(Microsoft.XMLHTTP);// Internet Explorer 

	req.onreadystatechange = function()	 // instructions de traitement de la réponse
	{ 
		if(req.readyState == 4 && lecture && flux == canal) // ETAT: OK reçu correctement
		{
			if(req.status == 200)
			{
				// Lecture des données
				data = req.responseText.split("\r");
				
				// Titre actuel
				affiche_titre(data[0]);
				
				// Titres a suivre
				document.getElementById("playlist0").innerHTML = data[1];
				document.getElementById("playlist1").innerHTML = data[2];
				document.getElementById("label_playlist").style.visibility = "visible";
				document.getElementById("chargement").style.visibility = "hidden";
				
				// Relance une opération de rafraîchissement
				refresh_loop();
			}	
			else	
			{
				// Erreur
				affiche_titre("Erreur: " + req.status + " " + req.statusText);
				
				// Relance une opération de rafraîchissement
				refresh_loop();
			}	
		} 
	};
	url = ajax_url + canal;
	req.open("GET", url, true);
	req.send(null);
}
function refresh_loop()
{
	if(lecture)
		window.setTimeout('refresh_ajax("'+canal+'")', refresh_int * 1000);
}
function refresh_start()
{
	window.setTimeout('refresh_ajax("'+canal+'")', pause_start * 1000);
}




// CHOIX DU FLUX #######################################################################
function flash_slider_go(flux)
{
	canal = flux;
	player_url = flux_url + flux +".mp3";
	affiche_titre(mess_newstream +" "+ flux + " ...");
	document.getElementById("pochette").src = vignette_url + canal + ".jpg";
	document.getElementById("pochette").alt = "Webradio " + canal;
	document.getElementById("logo").src = logo_url + canal + ".jpg";
	document.getElementById("playlist0").innerHTML = '';
	document.getElementById("playlist1").innerHTML = '';
	document.getElementById("label_playlist").style.visibility = "hidden";
	document.getElementById("chargement").style.visibility = "visible";
	
	//--
	
	if(canal=="flashback")
	document.getElementById("titrage").style.color = "#fac950";
	
	if(canal=="urban")
	document.getElementById("titrage").style.color = "#4ef454";
	
	if(canal=="sweet")
	document.getElementById("titrage").style.color = "#fc69f0";
	
	if(canal=="rock")
	document.getElementById("titrage").style.color = "#db435c";
	
	if(canal=="dance")
	document.getElementById("titrage").style.color = "#53d1fb";

	if(canal=="futuradio")
	document.getElementById("titrage").style.color = "#ff8740";

	player_lecture();
}



// LECTEUR AUDIO #######################################################################
function player_lecture()
{
	lecture = true;
	url = player_url;
	document.getElementById("lecteur").innerHTML = 	 '<object id="myPlayer" name="myPlayer" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="0" height="0" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701">'
													+'<param name="uiMode" value="full" />'
													+'<param name="autoStart" value="true" />'
													+'<param name="stretchToFit" value="true" />'
													+'<param name="URL" value="'+ url +'" />'
													+'<param name="FULLSCREEN" value="false" />'
													+'<param name="volume" value="80" />'
													+'<param name="loop" value="-1" />'
													+'<param name="enablecontextmenu" value="false" />'
													+'<embed type="video/x-ms-asf-plugin" pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" src="'+ url +'" autostart="1" showcontrols="1" animationatstart="0" transparentatstart="1" allowchangedisplaysize="1" enablecontextmenu="1" fullscreen="1" width="0" height="0" showstatusbar="1" loop="-1"></embed>'
													+'</object>';
	refresh_start();
}
function player_stop()
{
	lecture = false;
	document.getElementById("lecteur").innerHTML = "stop";
	affiche_titre(mess_stop);
	document.getElementById("playlist0").innerHTML = '';
	document.getElementById("playlist1").innerHTML = '';
	document.getElementById("label_playlist").style.visibility = "hidden";
	document.getElementById("chargement").style.visibility = "hidden";
}
function player_play()
{
	flash_slider_go(canal);
}
function player_bouton()
{
	if(lecture)
	{
		document.getElementById("player_bouton").src = "images/player-play.png";
		player_stop();
	}
	else
	{
		document.getElementById("player_bouton").src = "images/player-stop.png";
		flash_slider_go(canal);
	}
}



// Lancement des fonctions au chargement de la page
function body_onload()
{
	// Lecture des variables passées en parametres de l'URL
	var tmp = window.location.search.substring(1).split("&");
	var GET = [];
	for (var i in tmp) 
		if (tmp[i].indexOf("=")!=-1)
			GET[decodeURI(tmp[i].substring(0, tmp[i].indexOf("=")))] = decodeURI(tmp[i].substring(tmp[i].indexOf("=")+1));
		else
			GET[decodeURI(tmp[i])]='';
	
	// Lecture du flux
	if(GET["canal"])
		flash_slider_go(GET["canal"])
	else
		flash_slider_go(flux_default)
}