var idtc = 0;
var indexPL = 0;
var playerPath = "";
var gXhr = null;
var gState = "";
var wPopWindow = null;
var tPlaylist = new Array();
var tWebRadiolist = new Array();

var plTimer = null;

// On nome la fenêtre RadioClassique !
if (window.name == "")
	window.name = "radioClassique";

function getXhr(){
	var xhr = null;
	
	if(window.XMLHttpRequest)		// Firefox et autres
		xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){	// Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else { // XMLHttpRequest non support? par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	}
	
	return xhr;
}

// supprime les balises HTML inclues dans expr
function regclean(texte) 
{
	expr = /<\/?(a|table|tr|td|script|b|i|em|strong|font|br)[^>]*>/g;
	
	if (document.getElementById) {
		transition = texte.replace(expr, "")
		return transition;
	}
	
	return texte;
}

function getXmlNodeValue(reponse, sName) {
	var node = reponse.getElementsByTagName(sName)[0];
	
	if ((node == null) || (node.childNodes.length == 0))
		return "";
	
	var str = node.firstChild.nodeValue.replace(/^(\s)*/, '')
	return str.replace(/(\s)*$/, '');
}

function getPlaylist(reponse) {
	tPlaylist[0] = new Array();
	tPlaylist[0].push(getXmlNodeValue(reponse,"tc_titre"));
	tPlaylist[0].push(getXmlNodeValue(reponse,"tc_contenu"));
	
	// Creation du tableau de la playlist
	// tPlaylist[i][j] : 
	// i compris entre -2 et 2
	// j : 0 pour le titre , 1 pour la description
	var cpt = -2;
	var node = reponse.getElementsByTagName("playlist");
	
	for (i=0;i<node.length;i++)
	{
		for (j=0;j<node[i].childNodes.length;j++)
		{
			if (node[i].childNodes[j].nodeType != 1) continue;
				tPlaylist[cpt] = new Array();
				
				for (k=0;k<node[i].childNodes[j].childNodes.length;k++)
				{
					if (node[i].childNodes[j].childNodes[k].nodeType != 1)
						continue;
					
					var fchild = node[i].childNodes[j].childNodes[k].firstChild;
					
					if (fchild)
							tPlaylist[cpt].push(fchild.nodeValue);
					else {
						tPlaylist[cpt].push("ndsp");
						tPlaylist[cpt].push("");
						continue;
					}
				}
			cpt++;
			if (cpt == 0) cpt = 1;
		}
	}
	
	// Toute la playlist...
	tPlaylist[-3] = new Array();
	tPlaylist[-3].push("");
	tPlaylist[-3].push("<a id='toutePlaylist' href='#'  onClick='windowSpecialOpen(\"http://www.radioclassique.fr/index.php?id=16\"); return false;'>Voir toute la playlist</a>");
	
	tPlaylist[3] = new Array();
	tPlaylist[3].push("");
	tPlaylist[3].push("<a id='toutePlaylist' href='#'  onClick='windowSpecialOpen(\"http://www.radioclassique.fr/index.php?id=16\"); return false;'>Voir toute la playlist</a>");
		
	return tPlaylist;
}

function onChangeXhr() {
	if(gXhr && gXhr.readyState == 4 && gXhr.status == 200 && gXhr.responseXML != null) {
		var reponse = gXhr.responseXML.documentElement;
		var newIdtc;
		
		if(reponse.getAttribute("idtc"))
			newIdtc = reponse.getAttribute("idtc");
		
		if (idtc != newIdtc) {
			idtc = newIdtc;
			
			if (gState != "mini") {
				var anim = getXmlNodeValue(reponse,"em_urlanimateur");
				if (anim == "")
					document.getElementById("animateur_nom").innerHTML = getXmlNodeValue(reponse,"em_animateur");
				else {
					var url_animateur = getXmlNodeValue(reponse,"em_urlanimateur");
					document.getElementById("animateur_nom").innerHTML = '<a href="'+url_animateur+'" onclick="windowSpecialOpen(\''+url_animateur+'\',-1,-1,520,400);return false;">'+getXmlNodeValue(reponse,"em_animateur")+'</a>';
				}
			}
			
			tPlaylist = getPlaylist(reponse);
			
			var urlEmission = getXmlNodeValue(reponse,"em_urlemission");
			if (urlEmission == "")
				document.getElementById("emission_titre").innerHTML = getXmlNodeValue(reponse,"em_titre");
			else {
				var url_emission = getXmlNodeValue(reponse,"em_urlemission");
				document.getElementById("emission_titre").innerHTML = '<a href="'+url_emission+'" onclick="windowSpecialOpen(\''+url_emission+'\',-1,-1,520,400);return false;">'+getXmlNodeValue(reponse,"em_titre")+'</a>';
			}
		
			if (gState != "mini") {
				document.getElementById("emission_descrition_contenu").innerHTML = getXmlNodeValue(reponse,"em_contenu");
				document.getElementById("animateur_photo").innerHTML = "<img width='40px' height='40px' src='"+getXmlNodeValue(reponse,"em_photoanimateur")+"' />";
			}
			
			var aime = getXmlNodeValue(reponse,"tc_urljaime")
			
			if (aime == ""){
				document.getElementById("jaime").innerHTML = "";
			}
			else{
				document.getElementById("jaime").innerHTML = '<a href="'+aime+'" onclick="windowOpenFixed(\''+aime+'\', 50, 50, 780, 500); return false;" title="Si vous aimez ce morceau et souhaitez le soutenir à l\'antenne, cliquez ici">J\'aime, je vote !</a>';
			}
			
			var acheter = getXmlNodeValue(reponse,"tc_urlachat");
			if (acheter == "") document.getElementById("acheter").innerHTML = "";
			else document.getElementById("acheter").innerHTML = '<a href="'+acheter+'"></a>';
			
			var message = getXmlNodeValue(reponse,"em_messagerie");
			
			if (message == "") document.getElementById("message").innerHTML = '<img src="' + playerPath + '/imgs/'+ gState +'bt_messagerie_d.png" />';
			else document.getElementById("message").innerHTML = '<a href="'+message+'" onclick="windowOpenFixed(\''+message+'\',-1,-1,530,445);return false;"></a>';
			
			var playlist = getXmlNodeValue(reponse,"em_playlist");
			if (playlist == "") document.getElementById("playlist").innerHTML = '<img src="' + playerPath + '/imgs/bt_playlist_d.png" />';
			else document.getElementById("playlist").innerHTML = '<a href="#" onClick="windowSpecialOpen(\''+playlist+'\'); return false;"></a>';
			
			var podcast = getXmlNodeValue(reponse,"em_podcast");
			if (podcast == "") document.getElementById("podcaster").innerHTML = '<img src="' + playerPath + '/imgs/bt_podcaster_d.png" />';
			else document.getElementById("podcaster").innerHTML = '<a href="'+podcast+'"></a>';
			
			/*** toolbar ***/
			var widget = getXmlNodeValue(reponse,"tb_urlwidget");
			if (widget == "")
				document.getElementById("widget").innerHTML = 'Widget';
			else {
				var widgetTarget = reponse.getElementsByTagName("tb_urlwidget")[0].attributes[0].nodeValue;
				
				if ( widgetTarget == '_self' )
					document.getElementById("widget").innerHTML = '<a href="#" onclick="windowSpecialOpen(\''+widget+'\'); return false;">Widget</a>';
				else
					document.getElementById("widget").innerHTML = '<a href="'+widget+'" target="'+ widgetTarget +'">Widget</a>';
			}
			
			var webcam = getXmlNodeValue(reponse,"tb_urlwebcams");
			if (webcam == "") {
				var video = getXmlNodeValue(reponse,"tb_urlvideos");
				if (video == "")
					document.getElementById("video").innerHTML = 'Vid&eacute;os';
				else {
					var videoTarget = reponse.getElementsByTagName("tb_urlvideos")[0].attributes[0].nodeValue;
					
					if ( videoTarget == '_self' )
						document.getElementById("video").innerHTML = '<a href="'+video+'" onclick="windowSpecialOpen(\''+video+'\'); return false;">Vid&eacute;os</a>';
					else
						document.getElementById("video").innerHTML = '<a href="'+video+'" target="'+ videoTarget +'">Vid&eacute;os</a>';
				}
			}
			else {
				var webcamTarget = reponse.getElementsByTagName("tb_urlwebcams")[0].attributes[0].nodeValue;
				document.getElementById("video").innerHTML = '<a href="'+webcam+'" target="'+ webcamTarget +'" onclick="popupPlayerVideo(\''+webcam+'\'); return false;">Vid&eacute;o en direct</a>';
			}
			
			if (gState != "mini") {
				document.getElementById("emission_horaire").innerHTML = getXmlNodeValue(reponse,"em_horaire");
			}
			afficheOeuvre();
		}

		//gXhr = null;
	}
}

function getPlayerInfo(url, path, state) {
	var param = "";
	// Si on affiche le titre en cours, on effectue le rafraichissement, sinon on ne fait rien
	if (indexPL == 0) {
		
		if (gXhr == null)
			gXhr = getXhr();
		
		if (gXhr != null) {
			playerPath = path;
			gState = state;
			
			try {
				gXhr.open("POST",url,true);
				gXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				gXhr.onreadystatechange = onChangeXhr;
				param = "idtc=" + idtc;
				gXhr.send(param);
			}
			catch (e) {
				;
			}
		}
	}
	
	setTimeout("getPlayerInfo('" + url + "', '"+ path + "', '" + state + "');",30000);
}

function windowSpecialOpen(url) {
	if (window.name.indexOf("player_popup", 0) == 0) {
		if (window.parent.name.indexOf("radioClassique", 0) == 0)
			window.opener.location = url;
		else {
			window.open(url,"radioClassique","resizable=yes,scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes");
			window.focus();
		}
	}
	else
		window.location = url;
}

/**
 * Ouvre la popup url
 *
 * @param url de la page
 */
// si x==-1 et y==-1 alors centrage par rapport ? l'?cran
function windowOpenFixed(urlPage,x,y,w,h) {
	if (wPopWindow && !wPopWindow.closed) {
		wPopWindow.close();
		wPopWindow = null;
	}
	
	if (x==-1) x = (screen.width / 2) - (w / 2);
	if (y==-1) y = (screen.height / 2) - (h / 2);
	
	wPopWindow = window.open(urlPage,'wPopWindow','width=' + w + ',height=' + h + ',left=' + x + ',top=' + y + ',resizable=no,scrollbars=yes,toolbar=no,location=no,directories=no,status=no');
	wPopWindow.focus();
	return false;
}

// Fonction appel?e lors du clic sur les boutons suivant et pr?c?dent
// Affiche les titres suivants et pr?c?dents
// sens : +1 pour avancer, -1 pour reculer
function getPlayerHistory(sens)
{
	clearTimeout(plTimer);
	plTimer = setTimeout("resetIndexPL()",10000);
	indexPL += sens;
	
	if (indexPL < -3)
		indexPL = -3;
	
	if (indexPL > 3)
		indexPL = 3;
	
	if(webRadio){
		if(indexPL >= 3)
			indexPL = 2;
		else if(indexPL <= -3)
			indexPL = -2;
	}
	
	afficheOeuvre();
}

// Fonction utilis?e pour remettre le player sur le titre en cours
function resetIndexPL()
{
	indexPL = 0;
	afficheOeuvre();
}

// Affichage g?n?rique de l'oeuvre avec ou sans scroll selon la longueur du texte
function afficheOeuvre() {
	var texte = tPlaylist[indexPL][0] + tPlaylist[indexPL][1];
	var longueurTitre = regclean(tPlaylist[indexPL][0]).length;
	var longueurTexte = regclean(tPlaylist[indexPL][1]).length;
	
	// 1 - On met à jour le contenu	
	var preTitre = "";
	var color2update = couleurCourant;
	
	switch (indexPL) {
	case -2:
		preTitre = "&#139;&#139;&nbsp;";
		color2update = couleurPrecedent;
		break;
	case -1:
		preTitre = "&#139;&nbsp;";
		color2update = couleurPrecedent;
		break;
	case 1:
		preTitre = "&#155;&nbsp;";
		color2update = couleurSuivant;
		break;
	case 2:
		preTitre = "&#155;&#155;&nbsp;";
		color2update = couleurSuivant;
		break;
	}
	
	var titre = document.getElementById("musique_titre")
	titre.innerHTML = preTitre + tPlaylist[indexPL][0];
	titre.style.color=color2update;
	
	var description = document.getElementById("musique_description");
	description.innerHTML = tPlaylist[indexPL][1];
	description.style.color=color2update;
	
	if (document.getElementById("lienPLT"))
		document.getElementById("lienPLT").style.color=color2update;
	
	if (document.getElementById("lienPLC"))
		document.getElementById("lienPLC").style.color=color2update;
	
	// 2 - On récupère le contenu titre et description et on arrête le marquee si il y en avait un !
	var marquee = document.getElementById("musique_texte");
	if (marquee) {
		marquee.stop();
		
		if (marquee.outerDiv) {	// Moz.
			if (marquee.outerDiv.scrollHeight > 3 * marquee.outerDiv.clientHeight)	// On défile
			{
				marquee.outerDiv.scrollTop = 0;
				marquee.stopAt = marquee.outerDiv.scrollHeight - marquee.outerDiv.clientHeight;
				marquee.start();
			}
			else																// Fixe
			{
				marquee.outerDiv.scrollTop = marquee.outerDiv.clientHeight;
			}

		}
		else {
			if (marquee.scrollHeight > 3 * marquee.clientHeight)					// On défile
			{
				marquee.scrollTop = 0;
				marquee.stopAt = marquee.scrollHeight - marquee.clientHeight;
				marquee.start();
			}
			else																// Fixe
			{
				marquee.scrollTop = marquee.clientHeight;
			}
		}
	}
}


function rollover(imgObj, img)
{
	imgObj.src = img;
}


