// Fonctions JS pour les players
// Detect Client Browser type

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var isLinux = (navigator.userAgent.indexOf("Linux") != -1) ? true : false;

// Pour controler l'état du player Flash
var currentStreamURL = ''; // Url du stream en cours
var currentStreamType = ''; // Type de stream (Fla, Real, WM)
var isPlaying = false; // Mode du stream courant
	
function getMovie(movieName) { 
  if (navigator.appName.indexOf("Microsoft") != -1) { 
    return window[movieName] 
  }else { 
    return document[movieName] 
  } 
} 

// Fonction appelée par le carousel qd on clique sur une radio
function updatePlayer(radioID)
{
  var xhr;
  
  xhr = GetXmlHttpObject();

  var data = "id="+radioID;
  //on définit l'appel de la fonction au retour serveur
  xhr.onreadystatechange = function() { onChangeRadio(xhr); };

  xhr.open("POST", "ajax/getMediaInfos.php", true);
  
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.send(data);
}

// Fonction appelée par le carousel quand on passe la souris sur une radio
function getInfos(radioID)
{
	var xhr;
  xhr = GetXmlHttpObject();

  var data = "id="+radioID;

  //on définit l'appel de la fonction au retour serveur
  xhr.onreadystatechange = function() { 
	if(xhr.readyState == 4)
	{
		//alert(xhr.responseText);
		getMovie("tuner").sendInfos(xhr.responseText); 
	}	
  };

  xhr.open("POST", "ajax/getMediaInfos2.php", true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.send(data);

}

// onChangeRadio
// *** Selection d'une radio sur le carousel
function onChangeRadio(xhr)
{	
	if(isPlaying)
	{
		onPlayerStop();
	}

	if(xhr.readyState == 4)
	{ 
		var docXML= xhr.responseXML;
		var items = docXML.getElementsByTagName("media");

		//on fait juste une boucle sur chaque radio trouvée
		for (i=0;i<items.length;i++)
		{
		  var streamTechno = items.item(i).getAttribute('streamTechno');
		  var playerURL = urldecode(items.item(i).getAttribute('playerURL'));
		  var streamURL = urldecode(items.item(i).getAttribute('streamURL'));
		  var radioName = items.item(i).getAttribute('name');
		  
		  // Si on a l'url de streaming, on lance le player correspondant
		  if(streamURL)
			{
				  // On va afficher les infos de la radio sur le player
				  getMovie("displayerComMedia").updateDisplayer(xhr.responseText);
				  //alert ('URL = '+streamURL);
				  
				isPlaying = true;
				  // 1er traitement on prend les suffixes
				  if( (strpos(streamURL, '.m3u') !== false) || (strpos(streamURL, 'mms://') !== false) || (strpos(streamURL, '.ram') !== false) || (strpos(streamURL, '.mp3') !== false) ||
				 (strpos(streamURL, '.asx') !== false) || (strpos(streamURL, '.wax') !== false))
				  {
					  startPlayerWM(streamURL);
				  }
				  else if((strpos(streamURL, '.ram') !== false))
				  {
					  //alert('Streaming de type Real : ' + streamURL);
					  startPlayerReal(streamURL);
					  currentStreamType = 'Real';
				  }
				  else if((strpos(streamURL, '.flv') !== false))
				  {
					  //alert('Streaming de type Flash: ' + streamURL);
					  loadPlayerFLV(streamURL);
					  currentStreamType = 'Fla';
				  }
				  else if((strpos(streamURL, '.mov') !== false))
				  {
					  //alert('Streaming de type Quicktime : ' + streamURL);
					  startPlayerQuicktime(streamURL);
					  currentStreamType = 'QT';
				  }
				  // 2eme traitement on prend l'info en base			
				  else if (streamTechno == 3 || streamTechno == 27 || streamTechno == 29 || streamTechno == 30) { // Techno Flash
					  //alert('Streaming de type Flash :' + streamURL);
					  loadPlayerFLV(streamURL);
					  currentStreamType = 'Fla';
				  }
				  else if(streamTechno == 13 || streamTechno == 19 || streamTechno == 21) { // Techno MediaPlayer
					  //alert('Streaming de type Media Player : ' + streamURL);
					  startPlayerWM(streamURL);
					  currentStreamType = 'WM';
				  }
				  else if(streamTechno == 9 || streamTechno == 12) { // Techno Real
					  //alert('Streaming de type Real : ' + streamURL);
					  startPlayerReal(streamURL);
					  currentStreamType = 'Real';
				  } else if(streamTechno == 11 || streamTechno == 16 || streamTechno == 22) { // Techno QT
					  //alert('Streaming de type Quicktime : ' + streamURL);
					  startPlayerQuicktime(streamURL);
					  currentStreamType = 'QT';
				  } else {
					  //alert('Flux inconnu : ' + streamURL + ' (WMA par default)');
					  startPlayerWM(streamURL);
					  currentStreamType = 'WM';
				  }
			}
			else if (playerURL)
			{
				// On stoppe le lecteur interne
				if(isPlaying)
				{
				  onPlayerStop();
				}
				
				// On lance le lecteur externe
				open(playerURL,'popup','width=400,height=400,toolbar=no,scrollbars=no,resizable=yes');
  			xhr.open("POST", "ajax/getMediaInfos2.php", true);
			}
		}
	}
}

function loadPlayerFLV(streamURL)
{	
	getMovie("displayerComMedia").loadStream(streamURL);
}

function startPlayerWM(streamURL)
{
  if(isWin || isLinux)
  {
	//alert('Streaming de type Window Media Player : ' + streamURL);
    document.playerWM.URL = streamURL;
    document.playerWM.controls.play();
    currentStreamType = 'WM';
  } else {
	//alert('Streaming de type Quicktime Player : ' + streamURL);
    startPlayerQuicktime(streamURL);
	currentStreamType = 'QT';
  }
}

function startPlayerReal(streamURL)
{
  document.playerReal.URL = streamURL;
  try {
     document.playerReal.play();
  }
  catch (e) {
    document.playerReal.DoPlay();
  }

}

function startPlayerQuicktime(streamURL)
{
  document.playerQuicktime.SetURL(streamURL);
  document.playerQuicktime.Play();
}

function loadPlayers()
{
  if(isIE)
  {
    document.getElementById('divPlayerWM').innerHTML = '<OBJECT id="playerWM" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="1" height="1"><param name="SendPlayStateChangeEvents" value="True"><PARAM name="uiMode" value="none"></OBJECT>';
    //document.getElementById('divPlayerReal').innerHTML = '<OBJECT id="playerReal" type="audio/x-pn-realaudio" CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" WIDTH="1" HEIGHT="1"><param name="src" value=""></OBJECT>';
  }
  else if (isWin || isLinux) {
    document.getElementById('divPlayerWM').innerHTML = '<OBJECT id="playerWM" type="application/x-ms-wmp" width="1" height="1"><param name="SendPlayStateChangeEvents" value="True"><PARAM name="uiMode" value="none"></OBJECT>';
    //document.getElementById('divPlayerReal').innerHTML = '<OBJECT WIDTH="1" HEIGHT="1"><param name="src" value=""><EMBED NAME="playerReal" type="audio/x-pn-realaudio-plugin" src="" width="1" height="1" ></EMBED></OBJECT>';
  } else { // OS MAC
    document.getElementById('divPlayerQt').innerHTML = '<object id="playerQuicktime" name="playerQuicktime" type="audio/x-mpeg" data="" width="200" height="16"><param name="controller" value="true" /><param name="autoplay" value="false" /><param name="autostart" value="0" /><param name="pluginurl" value="http://www.apple.com/quicktime/download/" /></object>';
  }
}

// CONTROLES DES LECTEURS

// Fonction appelée par le player Flash qd on change le volume
function onChangedVolume(volume)
{
  // Le volume du flash est déjà mis à jour par le player Flash
  if(currentStreamType == 'WM')	
  {
	// mode Mute ou non
	document.playerWM.settings.mute = (!volume);
	if (volume)
	{
		document.playerWM.settings.volume = Math.round(100 * volume);
	}
  }
  else if(currentStreamType == 'Real') 	document.playerReal.controls.MuteVolume = 100 * volume;
  else if(currentStreamType == 'QT') document.playerQuicktime.SetVolume(volume);
}

// Fonction appelée par le player Flash qd on passe en fullScreen
function onFullScreen(bFullScreen)
{
  if(currentStreamType == 'WM')	document.playerWM.fullScreen = bFullScreen;
  //else if(currentStreamType == 'Real') 	document.playerReal.controls.DoPlay();
}

function PlayerAskForStatus ()
{
  var strStatus = "";
  if(currentStreamType == 'WM')	
  {
    switch (document.playerWM.playState)
	{
	case 0: strStatus = ""; break;
	case 1: strStatus = "Stop"; break;
	case 2: strStatus = "Pause"; break;
	case 3: strStatus = "Lecture"; break;
	case 4: strStatus = "Avance"; break;
	case 5: strStatus = "Rembobine"; break;
	case 6: strStatus = "Chargement"; break;
	case 7: strStatus = "En attente"; break;
	case 8: strStatus = "Fin du Media"; break;
	case 9: strStatus = "Preparation"; break;
	case 10: strStatus = "Pret"; break;
	case 11: strStatus = "Reconnection"; break;
	}
	getMovie("displayerComMedia").updateDisplayerStatus(strStatus);
  }
  // les autres cas nesont pas gérés
}

//Fonction appelée par le lecteur qd on clique sur Play
function onPlayerPlay()
{
	
	if(currentStreamType == 'Fla')		getMovie("displayerComMedia").playStream();
	else if(currentStreamType == 'WM')	document.playerWM.controls.play();
	else if(currentStreamType == 'Real') 	document.playerReal.controls.DoPlay();
	else if(currentStreamType == 'QT') document.playerQuicktime.Stop();
	
	isPlaying = true;
}

//Fonction appelée par le lecteur qd on clique sur Stop
function onPlayerStop()
{	
  if(currentStreamType == 'Fla')		getMovie("displayerComMedia").stopStream();
  else if(currentStreamType == 'WM')	document.playerWM.controls.stop();
  else if(currentStreamType == 'Real') 	document.playerReal.controls.DoStop();
  else if(currentStreamType == 'QT') 	document.playerQuicktime.Play();
  
  isPlaying = false;
}

function OnPlayerWMState(state)
{	
	switch(state) {
	// on charge une radio
	case 9 :
	//alert('Buffering en cours');
	break;
	// la musique demarre
	case 3 :
	//alert('Buffering Terminé');
	break;
	default:
	break;
	}
}

