//
//helpers
//
//affiche le programme hover et cache les autres
//getElementsByClassName
function MYgetElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

var playersHTML = [];
function toggleClass() {
	var lis = MYgetElementsByClassName('skplayer');
	for (j=0; j<lis.length; j++) {
		lis[j].className = 'skplayer hide';
		document.getElementById('ico' + lis[j].id.replace('skplayer','')).className='';
    // on supprime s'il existe le contenu de sklive
    var sklive = lis[j].firstChild
    if(sklive) {
        while(sklive.firstChild) {
            sklive.removeChild(sklive.firstChild);
        }
    }
	}
	//alert(this.id);
  this.className = 'playing';
  var playerId = this.id.replace('ico','');
	var currentplayer = document.getElementById('skplayer' + playerId);
	currentplayer.className = 'skplayer skplayerHover';
  // on ajoute Ã  l'Ã©lÃ©ment currentplayer > sklive la video correspondante
  var currentlive = document.getElementById('skLive' + playerId);
  currentlive.innerHTML = playersHTML[playerId];

  //il faut exécuter toutes les balise script :
  var allscript = currentlive.getElementsByTagName('script');
  for(var i=0;i< allscript.length;i++){
    eval(allscript[i].text);
  }
  
  return false;
}

//
//initialisation des paramÃ¨tres pour construction de l'url du service
//
if (typeof(sk_pageid)=='undefined') {
	var sk_pageid = '';
}
if (typeof(sk_pagetitle)=='undefined') {
	var sk_pagetitle = escape(encodeURIComponent(document.title));
}
var sk_pageurl = escape(encodeURIComponent(window.location.href));

//choix du domaine du service (prod ou dev)
var re = /service\.(.*?)\.myskreen\.typhon\.net/gi;
var res = re.exec(window.location.href);
var env = '';

if(res) {
  var service = 'http://service.' + res[1] + '.myskreen.typhon.net/player/';
  env = 'dev';
} else {
  var service = 'http://service.myskreen.com/player/';
  env = 'prod';
}

// on rÃ©cupÃ¨re le nom du partenaire : la chaine domaine dans http://domaine.tld ou https://www.domaine.tld
// TODO : gestion du https /!\
result = window.location.href.replace('http://',''); 
result = result.replace('www.', '');
result = result.split('/'); 
domain = result[0].split('.');
if (domain[2]) { partenaire = domain[0] + '.' + domain[1]; } else { partenaire = domain[0]; }

//
//load channel ?
//
if (typeof chaineId == 'undefined')
{
	var re = /chaineId=([0-9][0-9]*[0-9]*)/gi;
	var res = re.exec(window.location);
	chaineId = res ? res[1] : 166;
}
	

//
//install
//
document.write('<link href="http://service.myskreen.com/player/css/live.css" rel="stylesheet">');
document.write('<div id="apiSkreen"><div id="skLive"></div></div>');

//
//au chargement on rÃ©cupÃ¨re les donnÃ©es json retournÃ©e par 'json_live.php'
//
window.onload = function() {
   var s = document.createElement('script'); 
   s.src = service+'/json_live.php?'
   s.src += 'title='+sk_pagetitle+'&url=' + sk_pageurl +'&id=' + sk_pageid/*  +'&partenaire=' + partenaire */; 
   s.type = 'text/javascript';   
   document.body.appendChild(s);
   //var pushwidth = document.getElementById('skPlayer').offsetWidth;
   //document.getElementById('skPlayer').style.height = ((pushwidth*3) /4)+'px';
}

//
//on affiche les donnÃ©es JSON transmises dans le champs results
//
var callBackResult = function(results) {
    var responseElmt = document.getElementById('skLive');
    //debug
    var nbResults = document.createTextNode(results.ResultSet.totalResultsReturned+' chaines'); 
    responseElmt.appendChild(nbResults); 
    responseElmt.appendChild(document.createElement('br'));

    //header
    responseElmt.innerHTML = '<div id="skPartenaires"><a href="http://www.myskreen.com" title="Télé en direct" style="text-align:center;text-decoration:none;font-size:0.9em;color:grey;"><img alt="mySkreen : TV en direct" class="logoPartenaire" src="http://mskstatic.com/150/medias/logo.png" align="absmiddle" hspace="5"/></a></div>';
	  
    if (results.ResultSet.Result.length > 0)
    {
    	//affichage du block de resultats
	    var apiSkreen = document.getElementById('apiSkreen');
	    apiSkreen.style.display='block';

	    var ulPlayer = document.createElement('ul'); 
	    var ulIco = document.createElement('ul'); 
      var ulIcoDeporte =document.createElement('ul');
      ulIcoDeporte.id = 'chaines_deportees';
	    ulPlayer.id = 'skPlayer'; 
	    ulIco.id = 'chaines_exportees'; 
	    
			for(var i = 0; i < results.ResultSet.Result.length; i++)
	    {
				var result = results.ResultSet.Result[i];
				//alert(i+': '+result.liveId+' : '+(result.liveDeporte?result.liveDeporte:result.liveExterne));
	    	if (result.liveIco)
	    	{
					var liPlayer = document.createElement('li');
					liPlayer.className = 'skplayer hide';
					liPlayer.id = 'skplayer'+result.liveId;
          //liPlayer.style.display = 'none';
					var liIco = document.createElement('li');
					liIco.id = 'ico' + result.liveId;

					/* LIVE */
					if (result.liveDeporte)
					{
						liIco.onclick = toggleClass;
						var live = document.createElement('div');
						//live.innerHTML = result.liveDeporte;
            playersHTML[result.liveId] = result.liveDeporte;
						liPlayer.appendChild(live);
						// chaine sélectionnée (France24 par défaut)
            if (result.liveId == chaineId) {
							liIco.className = 'playing';
							liPlayer.className = 'skplayer skplayerHover';
              live.innerHTML = result.liveDeporte;  
              
              current_live = live;
            }
            live.id = 'skLive'+result.liveId;
            live.className = 'skLive skLive-' + i;
					}

					var ico = document.createElement('img');
					ico.src = result.liveIco; 
          

					ulPlayer.appendChild(liPlayer); 
					if (result.liveDeporte) {
            ico.style.width='67px';
            ico.style.height='50px';
					  var a = document.createElement('a');
					  a.href = result.seoUrl;//'?chaineId='+result.liveId+'&chaineNom='+escape(result.liveNom);
					  a.title = result.liveNom+' en direct';
					  a.appendChild(ico);
					  liIco.appendChild(a);
					  ulIcoDeporte.appendChild(liIco);
					} else {
					  var a = document.createElement('a');
					  a.href = 'http://www.myskreen.com/redirection/'+encodeURIComponent(result.liveExterne)+'?estat='+result.liveNom+'|Player%20Exporte%20Live|||'+result.partenaireEstatId;
					  a.target = "_blank";
					  a.appendChild(ico);
					  liIco.appendChild(a);
					  ulIco.appendChild(liIco); 
					}
		    }
	        
	    }
	    responseElmt.appendChild(ulPlayer); 
      responseElmt.appendChild(ulIcoDeporte);

      var clear = document.createElement('div');
      clear.style.clear = 'both';
      responseElmt.appendChild(clear);
      
      var nonDeporte = document.createElement('div');
      nonDeporte.id = 'liveExt';
      
      var titre = document.createElement('p');
      titre.innerHTML = 'Directement disponibles sur le site des cha&icirc;nes :';
      nonDeporte.appendChild(titre);
      
      nonDeporte.appendChild(ulIco);
      
      clear = document.createElement('div');
      clear.style.clear = 'both';
      nonDeporte.appendChild(clear);
      
      responseElmt.parentNode.appendChild(nonDeporte);    
    }
    else
    {
    	responseElmt.style.display='none';
    }

  //
  //eval onload : il faut exécuter toutes les balise script
  //
  var allscript = current_live.getElementsByTagName('script');
  for(var i=0;i< allscript.length;i++){
    eval(allscript[i].text);
  }


 	//
	//GA : gÃ©nÃ¨re les scripts pour les statistiques google en prod
	//
	
  if(env == 'prod') {
		var gaJsHost=("https:"==document.location.protocol)?"https://ssl.":"http://www.";
		var bodyID = document.getElementsByTagName("body")[0];
		if(bodyID){
			var s = document.createElement('script'); 
			s.type = 'text/javascript'; 
			s.src = gaJsHost+"google-analytics.com/ga.js"; 

			function _55callbackfunction(){
					var pageTracker=_gat._getTracker("UA-6151896-1");
					pageTracker._trackPageview('/live/' + partenaire + '/' + unescape(sk_pagetitle) );
				}
		
			// IE
			var _55loadFunction = function(){
				if (this.readyState == 'complete' || this.readyState == 'loaded'){
					_55callbackfunction(); 
				}
				};
				s.onreadystatechange = _55loadFunction;
			
			//FF
				s.onload = _55callbackfunction;
				bodyID.appendChild(s);
			}
  }
}
