jingleToPlay = "http://stream.chantefrance.com/stream_chante_france.mp3";
streamUrl = "http://stream.chantefrance.com/stream_chante_france.mp3"
restartTimer = undefined;
String.prototype.startsWith = function(str) {return (this.match("^"+str)==str)}

var pochetteTimer = null;
var firstTime = true;

$(document).ready(function() {
	$.get("/services/jingle.php", { date: Math.round((new Date()).getTime() / 1000) }, function(data) {
                jingleToPlay = $(data).find("jingle").text();
	}, "xml");

	// Si on a un id="player-auto-start" dans la page html on est dans le cadre d'un auto-start (exemple popup)
	var path = window.location.pathname;
	var search = window.location.search;
		
	$("#jquery_jplayer_1").jPlayer({
		ready: function (event) {
			// Auto-chargement
			if (($('#player-auto-start').length > 0) || (path.startsWith("/ecouter")) || (search.substr(1,9).startsWith("autoplay"))) {
				playAction();
			}
		},
		volumechange: function (event) {
			// S'il y a un changement de volume on capte l'évènement pour mettre à jour l'image de volume
			updateImgVolume($("#jquery_jplayer_1").data("jPlayer").status.volume);
		},
		ended: function(event) {
			$(this).jPlayer("clearMedia");
			$(this).jPlayer("setMedia", {
				mp3: streamUrl
			}).jPlayer("play");
		},
		play: function(event) {
			if (restartTimer != undefined) {
				clearInterval(restartTimer);
				restartTimer = undefined;
			}
		},
		error: function(event) {
			if (restartTimer == undefined) {
				restartTimer = setInterval("restartstream()", 10000);
			}
		},
	
		preload:"none",
		solution:"html,flash",
		supplied: "mp3",
		swfPath: "./jplayer",
		volume: 1
	});
	
	$("#player-play").click(function() {
		playAction();
    });
    
	$("#player-pause").click(function() {
		document.getElementById("player-play").className = "";
		document.getElementById("player-pause").className = "player-pause-active";
	
		// Si on clique sur le bouton pause, on arrête le flux
        $("#jquery_jplayer_1").jPlayer("clearMedia");
    });
	
	// Si le bouton player-moins existe on cable un comportement dessus
	if ($("#player-moins").length > 0) {
		$("#player-moins").click(function() {
			// On enlève 0.25 au volume courrant
			$("#jquery_jplayer_1").jPlayer("volume", $("#jquery_jplayer_1").data("jPlayer").status.volume - 0.25);
		});
	}
	
	// Si le bouton player-plus existe on cable un comportement dessus
	if ($("#player-plus").length > 0) {
		$("#player-plus").click(function() {
			// On ajoute 0.25 au volume courrant
			$("#jquery_jplayer_1").jPlayer("volume", $("#jquery_jplayer_1").data("jPlayer").status.volume + 0.25);
		});
	}
	 
	$('a.popup').click(function() {
		// On arrête la diffusion si elle était en cours
		$("#jquery_jplayer_1").jPlayer("clearMedia");
		
		document.getElementById("player-play").className = "";
		document.getElementById("player-pause").className = "player-pause-active";
	
		var v = window.open(this.href, "Player", "width=980, height=419");
		// Position de la fenêtre.
		v.moveTo(1,1);
		return false;
	});
	
	if ($('a[rel*=facebox]').length > 0) {
		$('a[rel*=facebox]').facebox();
	}
	
	// On charge la liste des morceaux passé et en cours de diffusion, on met un interval pour le faire toutes les 10s
	getMorceaux();
	pochetteTimer = setInterval("getMorceaux()", 20000);
});

var restartstream = function() {
	$("#jquery_jplayer_1").jPlayer("setMedia", {
		mp3: streamUrl
	}).jPlayer("play");
}

var playAction = function() {
	document.getElementById("player-play").className = "jp-loading";
	setTimeout("document.getElementById(\"player-play\").className = \"player-play-active\";", 2500);
	document.getElementById("player-pause").className = "";
	
	// Si on clique sur le bouton play, on re-loade le flux, sinon il va reprendre au début en cas de "pause", au lieu de reprendre à l'instant "t"
	$("#jquery_jplayer_1").jPlayer("setMedia", {
		mp3: jingleToPlay
	}).jPlayer("play");
}

var updateImgVolume = function(volume) {
	// On fonction de la valeur du volume on affiche une image différente
	if (volume == 0) {
		document.getElementById("player-volume").src = "images/volume-000.png";
	} else if (volume == 0.25) {
		document.getElementById("player-volume").src = "images/volume-025.png";
	} else if (volume == 0.75) {
		document.getElementById("player-volume").src = "images/volume-075.png";
	} else if (volume == 1) {
		document.getElementById("player-volume").src = "images/volume-100.png";
	} else {
		document.getElementById("player-volume").src = "images/volume-050.png";
	}
}

var limitDisplay = function(texte, taille) {
	if (texte.length > taille) {
		return texte.substr(0, taille) + "..."; 
	}
	return texte;
}

/**
 * Retourne la valeur d'un paramèe d'une url
 * 
 * @param string param
 * nom du paramèe dont on souhaite avoir la valeur
 * @param url
 * url dans laquel on souhaite répér le paramèe ou rien si l'on souhaite travailler sur l'url courante
 * @return String
 * @author Labsmedia
 * @see http://www.labsmedia.com
 * @licence GPL
 */
function getParamValue(param,url) {
	var u = url == undefined ? document.location.href : url;
	var reg = new RegExp('(\\?|&|^)'+param+'=(.*?)(&|$)');
	var matches = u.match(reg);
	if (matches == null) {
		return '';
	}
	return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';
}


var getMorceaux = function() {
	// Via Ajax jquery, on récupère les informations de diffusion du serveur
	$.get("/XML/morceaux.xml", { date: ((firstTime) ? "first" : Math.round((new Date()).getTime() / 1000)) }, function(data) {
		updateMorceau(data);
	}, "xml");
	firstTime = false;
}

function updateMorceauFromString(data) {
	updateMorceau($.parseXML(data));
}

function updateMorceau(data) {
	var isFirst = true;
	var previous = "";
	
	$(data).find("morceau").each(function() {
		if (isFirst) {
			$("#player-titreencours").html("<span title=\"" + $(this).find("artiste").text() + " / " + $(this).find("titre").text() + "\">" + limitDisplay($(this).find("artiste").text() + " / " + $(this).find("titre").text(),28) + "</span>");
			document.getElementById("player-pochette").src = $(this).find("pochette140").text();
			isFirst = false;
		} else {
			if (previous != "") {
				previous += "<br />";
			}
			previous += "<span title=\"" + $(this).find("heure").text() + " : " + $(this).find("artiste").text() + " / " + $(this).find("titre").text() +  "\">" + limitDisplay($(this).find("heure").text() + " : " + $(this).find("artiste").text() + " / " + $(this).find("titre").text(),40) + "</span>";
		}
	});
	
	$(".player-previous").html(previous);
}
