//
//helper
//
//document ready
function skAddEvent(obj, evt, fn) {
    if ( typeof obj.attachEvent != 'undefined' ) {
        obj.attachEvent( "on" + evt, fn );
    } else if ( typeof obj.addEventListener != 'undefined' ) {
        obj.addEventListener( evt, fn, false );
    }
}
//getElementsByClassName
function MYgetElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
    tag = tag || "*";
    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;
}


if (typeof playersHtml == 'undefined') var playersHtml = {};

//affiche le programme hover et cache les autres
function toggleClass() {
  
  //handle de la div player en cours. (sert plus à rien)
  // var skPush = this.parentNode.parentNode;
  
    
    //on parcours toutes les classes de l'element en cours
    var classes = this.className.split(' ');
    for (var i = 0; i < classes.length; i++) {
        if (classes[i] == 'skliHover') {            
            return;
        }
    }
    
    //on parcours les li pour virer le hover de l'element en cours
    // ADDED : le test sert à rien vu qu'on parcours tous les li dans tous els cas...'
    var lis = MYgetElementsByClassName('skli', '*', this.parentNode.parentNode);
    for (var j = 0; j < lis.length; j++) {
    //  if (lis[j].parentNode.parentNode.className == skPush.className){
        lis[j].className = 'skli';        
    //  }
    }
    
    //on fout skliHover sur l'element en cours
    this.className = 'skli skliHover';
   
    //on vide tous les container de player    
    cleanEmbeds(this);
    
    //et on balancer celui en cours dans la premiere div à partir de l'element en cours
    var div = MYgetElementsByClassName('skPlay', '*', this);
    div[0].innerHTML = playersHtml[div[0].id];    
    EvalScript(div[0]);

}

function fillEmbeds() {
    
    //on recupere tous les players dans les div et on les mets dans un tableau
    //puis on vide la zone
    
    var divs = MYgetElementsByClassName('skPlay');
    for (var i = 0; i < divs.length; i++) {
      if (divs[i].innerHTML!='') {
        playersHtml[divs[i].id] = divs[i].innerHTML;
        divs[i].innerHTML = '';
      }
    }
    
    
    //on reaffect ceux des hovers. (plus economique que de faire length test)
    var liHovers = MYgetElementsByClassName('skliHover');
    for (var i = 0; i < liHovers.length; i++) {
      var div = MYgetElementsByClassName('skPlay', '*', liHovers[i]);
      div[0].innerHTML = playersHtml[div[0].id];
      EvalScript(div[0]);
    }
  
  
}

function EvalScript(item) {
  var AllScripts=item.getElementsByTagName("script")    
  for (var i=0; i<AllScripts.length; i++) {
    eval(AllScripts[i].innerHTML);
  }
}


function cleanEmbeds(target) {
    
    //on recupere tous les players dans les div et on les mets dans un tableau
    //puis on vide la zone    
    var divs = MYgetElementsByClassName('skPlay','*',target);
    for (var i = 0; i < divs.length; i++) {
      divs[i].innerHTML = '';
    }
  
}

//hasClass
function hasClass(ele,cls) {
    return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

//
//var
//
if (typeof sk_pageid =='undefined') {
	var sk_pageid = '';
}
if (typeof sk_pagetitle =='undefined') {
	var sk_pagetitle = escape(encodeURIComponent(document.title));
}
var sk_pageurl = unescape(encodeURIComponent(window.location.href));
var sk_loadprograms = '';

if (typeof skProgramme != 'undefined') {  
	var sk_loadprograms = '&loadprograms=' + skProgramme;
}
var sk_payment = '';
if (typeof skPayment != 'undefined') {
	var sk_payment = '&payment=' + skPayment;
}
var sk_nbprogrammes = '';
if (typeof skNbPrograms != 'undefined') {
var sk_nbprogrammes = '&nbprograms=' + skNbPrograms;
}


//choix du domaine du service (prod ou dev)
var re = /service\.(.*?)\.myskreen\.typhon\.net/gi;
var res = re.exec(window.location.href);
var service = 'http://service.myskreen.com/player';
var env = 'prod';
var medias_url = 'http://medias.myskreen.com';

if (res) {
    service = 'http://service.' + res[1] + '.myskreen.typhon.net/player';
    env = 'dev';
    var medias_url = 'http://medias.myskreen.typhon.net/';
}


//on extrait el nom du partenaire en cours
var result = window.location.href.replace('http://','');
result = result.replace('www.', '');
result = result.split('/'); 
var domain = result[0].split('.');
if (domain[2]) {
  partenaire = domain[0] + '.' + domain[1];
} else {
  partenaire = domain[0];
}

//
//install
//

//sauf pour MSN, on ecrit la div container sinon elle est fournie
var skPlayerContainer = document.getElementById('skplayercontainer-rm');
if (skPlayerContainer==null){
    document.write('<div id="apiSkreen" class="apiSkreenContainer"><div id="skPush"></div></div>');
}


if (typeof callBackResultDone == 'undefined') {

  //css
  document.write('<link href="' + service + '/css/default.css" rel="stylesheet"/>');
  document.write('<link href="' + service + '/css/' + partenaire + '.css" rel="stylesheet"/>');  

  //fucking ie6 !!
  var is_ie6 = /msie|MSIE 6/.test(navigator.userAgent) ? true : false;
  if (is_ie6) {
      document.write('<style type="text/css">body{ background-position:fixed; } #skPlayer { top:expression(documentElement.scrollTop+body.scrollTop);position:absolute; }</style>');
  }
  
  //onload
  skAddEvent( window, 'load', function() {
    //HACK msn
    var skPlayerContainer = document.getElementById('skplayercontainer-rm');
    if (skPlayerContainer != null){        
        //dans un element de la page (code dans le <head>)
        var skApiskreen = document.createElement('div');
        skApiskreen.id = 'apiSkreen';
        skApiskreen.className = 'apiSkreenContainer';
        var skPush = document.createElement('div');
        skPush.id = 'skPush';
        skApiskreen.appendChild(skPush);
        skPlayerContainer.appendChild(skApiskreen);
    }

    //Initialization
    var skPlayer = document.createElement('div');
    skPlayer.id = 'skPlayer';
    skPlayer.className = partenaire;

    var skExpose = document.createElement('div');      
    skExpose.id = 'skExpose';
    skExpose.onclick = apiskreenClose;

    document.body.insertBefore(skPlayer,document.body.firstChild);
    document.body.insertBefore(skExpose,document.body.firstChild);

    //installation popin
    document.getElementById('skPlayer').innerHTML = '<div id="skClose">&nbsp;</div><div id="skPartenaire"></div><div id="skWrap" style="height:600px"><iframe src="javascript:;" id="skFrame" frameborder="no" scrolling="no" width="100%" height="100%" allowTransparency="true"></iframe></div>';
    //installation expose
    //document.getElementById('skExpose').style.width=(1000 + document.body.offsetWidth)+'px';
    document.getElementById('skExpose').style.width='100%';
    document.getElementById('skExpose').style.height=(5000 + document.body.offsetHeight)+'px';
    //document.getElementById('skExpose').style.height='100%';
    //document.getElementById('skExpose').onclick= apiskreenClose; // On le fait deja avec skExpose.onclick = apiskreenClose;
    document.getElementById('skClose').onclick= apiskreenClose;
    //document.getElementById('skClose').style.display='block';

    //recuperation du ou des container du script
    apiSkreenContainer = MYgetElementsByClassName('apiSkreenContainer');

    //installation à  chaque endroit      
    for (i=0;i<(apiSkreenContainer.length);i++) {
      apiSkreenContainer[i].id = 'apiSkreen'+(i+1);

      //largeur de l'élément
      if (partenaire == 'leparisien' || 
        partenaire == 'telerama'   || 
        partenaire == 'lexpress'   || 
        partenaire == 'tvmag'      || 
        partenaire == 'tvmag.lefigaro'  || 
        partenaire == 'france24'   || 
        partenaire == 'lequipemag' || 
        partenaire == 'programme') {
        var pushwidth = 442;          

      } else if (partenaire == 'geo') {
        var pushwidth = 290;

      } else if (partenaire.indexOf('latribune')!=-1) {
        var pushwidth=310; //(on ajoute 10 car on retire 10 ensuite (pk on retire 10, je sais pas - Jonathan)
      } else if (partenaire.indexOf('pariscinema')!=-1) {
        var pushwidth=300; //(on ajoute 10 car on retire 10 ensuite (pk on retire 10, je sais pas - Jonathan)
      } else {        
        var pushwidth = apiSkreenContainer[i].parentNode.offsetWidth;
      }

        //hack tvmag
      var hackTvmag = apiSkreenContainer[i].parentNode.parentNode.parentNode.className;

        //url du appel json
      var url = service+'/json.php?'
      url += 'partenaire=' + partenaire;      

      if ((partenaire != 'tvmag.admin' && partenaire != 'tvmag' && partenaire != 'tvmag.lefigaro' && partenaire.indexOf('service',0)==-1 ) || hackTvmag == 'colright' || hackTvmag == 'colright marge') {
        url += sk_loadprograms;
        if (hackTvmag == 'colright' || hackTvmag == 'colright marge') {
          var pushwidth = 300;
        }
      }

      
      
      url += sk_nbprogrammes;
      url += sk_payment;
      url += '&id='+sk_pageid;
      url += '&env='+env;
      url += '&width='+pushwidth;
      //url += '&width=';
      //TODO : ca ira pas avec des tvmag & co qui utilise deja &loadprograms => a debugger plus tard            
      if (eval('typeof skProgramme'+(i+1)) != 'undefined') {
        url += '&loadprograms=' + eval('skProgramme'+(i+1));
      } else {
        url += sk_loadprograms;
      }
      url += '&payment='+sk_payment
      url += '&i='+(i+1);
      url += '&url='+sk_pageurl;
      url += '&title='+sk_pagetitle;


      //json
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.src = url;
      apiSkreenContainer[i].appendChild(s);

      /*
      //que pour le dev on affiche le lien json.php appelé
       if (partenaire.indexOf('service',0)>=0) {
         var skLien = document.createElement('div');
         skLien.innerHTML = "JSON : "+s.src;
         document.body.insertBefore(skLien,document.body.firstChild);
       }
    */
    }
    
  });
}

//
//apiskreen
//
// close
function apiskreenClose(){ 	
    document.getElementById('skPlayer').style.display='none';
    document.getElementById('skExpose').style.display='none';
    document.body.style.overflowX = 'visible';
    document.getElementById('skFrame').src = '';

    //on reaffect ceux des hovers. (plus economique que de faire length test)
    var liHovers = MYgetElementsByClassName('skliHover');
    for (var i = 0; i < liHovers.length; i++) {
      var div = MYgetElementsByClassName('skPlay', '*', liHovers[i]);
      div[0].innerHTML = playersHtml[div[0].id];
      EvalScript(div[0]);
    }

    return false;
}
// launch
function apiskreenLaunch(){

    stopRefresh();
    
    //si gratuit => teaser Launch
    if (hasClass(document.getElementById('skPush'), 'isGratuit')) {
     return false;
    }

    //launch
    var liHover = MYgetElementsByClassName('skliHover','*',this.parentNode.parentNode.parentNode.parentNode ); // grand ?
    if (typeof liHover[0]== 'undefined')  var liHover = MYgetElementsByClassName('skliHover','*',this.parentNode.parentNode); //non, petit ?

    // on vide la player html
    var div = MYgetElementsByClassName('skPlay', '*', liHover[0]);
    div[0].innerHTML = '';

    //on récupère le lien qui se trouve sous l'élément séléctionné (skliHover)
    document.getElementById('skFrame').src= liHover[0].childNodes[1].childNodes[0].href;
    document.body.style.overflowX = 'hidden';
    document.getElementById('skPlayer').style.display='block';
    document.getElementById('skExpose').style.display='block';
    var margin = (document.body.clientWidth - document.getElementById('skPlayer').offsetWidth)/2;
    document.getElementById('skPlayer').style.margin='30px 0 0 '+margin+'px';
    //hide teaser
    var teaser = MYgetElementsByClassName('skTeaser');
    for(var i=0; i<teaser.length; i++){
        current = teaser[i];
        current.style.display='none';
        document.getElementById('skVignette'+current.id.replace('skTeaser','')).style.display='block';
    }
    return false;
} 
// redirect
function apiskreenRedirect(){ 
    window.open(this.href);
    return false;
}


function stopRefresh() {
  //ya des partenaires qui s'amusent à refresh leur page toutes els X minutes'
  //pas pratique si on regarde un film dans l'iframe'
  
  try {
    if (partenaire == 'staragora') clearTimeout(timer); //staragora
    if (partenaire == 'latribune') clearTimeout(refresh); //latribune
  }
  catch(e){}
  
}

//
//teaser launch
//
function teaserLaunch(){
  stopRefresh();
  
  var skPush = this.parentNode.parentNode.parentNode.parentNode;

  //player 442px de large
  if (hasClass(skPush,'Event') ||
  		hasClass(skPush,'Wide') ||
      partenaire == 'lefigaro' ||
  		hasClass(skPush,'isGratuit')) {        
      document.getElementById('skTeaser'+this.id.replace('skVignette','')).style.display='block';
      this.style.display='none';

  //petit player > teaser dans lightbox
  } else {
      var liHover = MYgetElementsByClassName('skliHover','*',skPush );
      //on récupère le lien qui se trouve sous l'élement séléctionné (skliHover)
      document.getElementById('skFrame').src=liHover[0].childNodes[1].childNodes[0].href.replace('?','/bandeannonce?');        
      //on parcours tous les skPlay et on vire le contenu au cas ou il y ait 2 apiskreen et que l'un est en lecture'
      cleanEmbeds(null);

      document.getElementById('skPlayer').style.display='block';
      document.getElementById('skExpose').style.display='block';
      var margin = (document.body.clientWidth - document.getElementById('skPlayer').offsetWidth)/2;
      document.getElementById('skPlayer').style.margin='50px 0 0 '+margin+'px';
  }

  //track
  var url = 'http://api.myskreen.com/skPlayerPlugin/track.php?teaser_program_id='+this.id.replace('skVignette','')+'&partenaire_rewrite='+partenaire+'&url='+escape(window.location)+'&random='+Math.random();
  document.getElementById('skTracker').innerHTML = '<img style="height:1px;width:1px;visibility:hidden;" src="'+url+'" alt="track myskreen" />';

  return false;
}

function encodeUnicode(str){
    var re = /%(\w{2})/gi;
    //re.compile(str);
    return str.replace(re, "\\u00$1");
}

//
//affichage
//
var callBackResultDone = Array;



var callBackResult = function(results){//,chaine
  
  
  //que pour el dev on affiche le lien json.php appelé
  /*
     if (partenaire.indexOf('service',0)>=0) {
       var skRetour = document.createElement('div');
       skRetour.innerHTML = chaine;
       document.body.insertBefore(skRetour,document.body.firstChild);
     }
  */

    //load #skPlayer partenaire info
    if (results.ResultSet.partenaireIco != null) {
        var partenaireIco = '<img class="logoSite logo' + partenaire.slice(0,1).toUpperCase() + partenaire.substring(1) + '" align="absmiddle" src="' + results.ResultSet.partenaireIco + '" /><a href="http://www.myskreen.com" title="Vod" target="_blank">';
        
    } else {
        var partenaireIco = '';
    }
    document.getElementById('skPartenaire').innerHTML = '<div class="logoPartenaire">'+partenaireIco+'<img class="logoContexte" src="'+service+'/images/myskreen.png" alt="mySkreen" align="absmiddle" /></a></div>';

	
    var apiSkreen = document.getElementById('apiSkreen'+results.ResultSet.i);//apiSkreenContainer[i];

    
    if (results.ResultSet.Result.length > 0) {
     
      var responseElmt = apiSkreen.children[0]; //#skPush

				//width
		    if (results.Width == 600) {
		      responseElmt.className = 'Event';
		    } else if (results.Width > 349) {
		      responseElmt.className = 'Wide';
		    } else if (results.Width > 0) {
		      responseElmt.style.width = (results.Width-10)+'px';
		    } else {
		      responseElmt.style.width = '290px';
		    }
			
        //affichage du block de resultats
        apiSkreen.style.display="block";

        //header encart
        
        //branding vodiste ?
				
        if (results.ResultSet.Result.length == 1 && results.ResultSet.Result[0].ProgrammeFournisseurIco != null) {
        	responseElmt.innerHTML = '<div id="skPartenaires"><img class="logoFournisseur" src="'+ results.ResultSet.Result[0].ProgrammeFournisseurIco +'" align="absmiddle" hspace="5" /><a href="http://www.myskreen.com" title="Vod" target="_blank"><img class="logoContexte" src="'+service+'/images/myskreen.png" alt="mySkreen" align="absmiddle" /></a></div>';
				} else {
        	responseElmt.innerHTML = '<div id="skPartenaires"><a href="http://www.myskreen.com" title="Vod" target="_blank"><img class="logoContexte" src="'+service+'/images/myskreen.png" alt="mySkreen" align="absmiddle" /></a></div>';
				}

        //programmes
        var ul = document.createElement('ul');
        for(var i = 0; i < results.ResultSet.Result.length; i++) {

            var result = results.ResultSet.Result[i];

		    
    		    //gratuit ?
    		    if (result.ProgrammeIsGratuit && !hasClass(responseElmt,'isGratuit')) {
    		      responseElmt.className = responseElmt.className ? responseElmt.className+' isGratuit' : 'isGratuit';
    		    }

            /* quel acces ?
			    	if (result.ProgrammeOffre.AccesId == 1)
			    		var acces = 'Replay gratuit';
			    	else if (result.ProgrammeOffre.AccesId == 2)
			    		var acces = 'Catchup';
			    	else
			    		var acces = 'Vod payante';
			      */
            var li = document.createElement('li');
            if (i==0)
                li.className = 'skli skliHover';
            else
                li.className = 'skli';
	      
            li.onmouseover= toggleClass;
        
            var CLayer = document.createElement('div');
            CLayer.className = 'skLayer';

            /* TEASER */
            if (result.ProgrammeTeaser) {
                CLayer.className = 'skLayer skLayerTeaser';
                var teaserClick = document.createElement('div');
                if (!result.ProgrammeIsGratuit) {
                  var linkPub = document.createElement('img');
                  linkPub.src = service+'/images/acheterlouer.png';
                  teaserClick.appendChild(linkPub);
                }
                teaserClick.className = 'skTeaserClick';
                //if (result.ProgrammeOffreDeporte)
                teaserClick.href = result.ProgrammeOffreUrl;
                teaserClick.onclick = apiskreenLaunch;
                var teaser = document.createElement('div');
                teaser.id = 'skTeaser'+result.ProgrammeId;
                teaser.className = 'skTeaser skTeaser-'+i;
                teaser.appendChild(teaserClick);
                var embed = document.createElement('div');
                embed.style.width = '100%';
                embed.style.height = '100%';
                embed.innerHTML = result.ProgrammeTeaser;
                teaser.appendChild(embed);
                CLayer.appendChild(teaser);
                //positionne le layer sur la bande annonce
                teaserClick.style.width=teaser.style.width;
                teaserClick.style.height=teaser.style.height;
            }
        
            /* VIGNETTE */
            var vignette = document.createElement('div');
            vignette.style.backgroundImage = 'url('+result.ProgrammeVignette+')';
            vignette.style.backgroundRepeat = 'no-repeat';
            vignette.className = 'skVignette skImg skImg-'+i;
            vignette.id = 'skVignette'+result.ProgrammeId;
            vignette.onclick = teaserLaunch;
            
            if (!result.ProgrammeIsGratuit) {
                var vignettePlay = document.createElement('img');
                vignettePlay.src=service+'/images/launchTeaser2.png';
                vignette.appendChild(vignettePlay);
            }
            
            CLayer.appendChild(vignette);
        
            /* CARTOUCHE */
            var CTitre = document.createElement('div');
            CTitre.className = 'skTitre';

            if (!result.ProgrammeIsGratuit) {
                /* INFOS OFFRE */ //\340 partir de '+result.ProgrammeOffre.Cout+' \u20ac
                var linkOffre = document.createElement('a');
                linkOffre.innerHTML = '<span>'+result.ProgrammeLinkOffre+'</span>';
                linkOffre.className = 'skOffre';
                linkOffre.href = result.ProgrammeUrl;
                linkOffre.onclick = apiskreenLaunch;
                CTitre.appendChild(linkOffre);
            }

            /* TITRE */
            var PTitre = document.createTextNode(result.ProgrammeTitre);
            CTitre.appendChild(PTitre);

            /*SPAN INFOS*/
            var spanInfos = document.createElement('span');
            spanInfos.className = 'skInfos';
            spanInfos.innerHTML = '&nbsp; '+result.ProgrammeInfos;

           /* LIEN TITRE */
           var linkTitre = document.createElement('a');
           linkTitre.href = result.ProgrammeUrl;
           linkTitre.onclick = apiskreenLaunch;
           linkTitre.id = 'skLinkTitre';
           linkTitre.appendChild(PTitre);
           linkTitre.appendChild(spanInfos);
           CTitre.appendChild(linkTitre);


           li.appendChild(CLayer);
           li.appendChild(CTitre);
           ul.appendChild(li);
        }
        responseElmt.appendChild(ul);
        
        //tracker
        var skTracker = document.createElement('div');
        skTracker.id = 'skTracker';
        responseElmt.appendChild(skTracker);
	    
        //header
        var header = MYgetElementsByClassName('skHeader');
        if (header.length > 0) {
            header[0].style.display='block';
        }
        //footer
        var footer = MYgetElementsByClassName('skFooter');
        if (footer.length > 0) {
            footer[0].style.display='block';
        }
        
		    //gere les embed des ba
		    fillEmbeds();
			
        //nb de vidés poussÃ©es
        var skCountVideosPushed = results.ResultSet.Result.length;

    } else {
    	//on cache la div
      //responseElmt.style.display='none';

      //nb de vidés poussÃ©es
      if (typeof skCountVideosPushed == 'undefined') {
        var skCountVideosPushed = null;
      }
    }










  //
  // GA : génère les scripts pour les statistiques google en prod
  //			
	if (env == 'prod' && typeof skDisableAnalitycs == 'undefined') {
		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";
			
			//is actif
			if (skCountVideosPushed > 0) {
				var actif = 'actif';
			} else {
				var actif = 'inactif';
			}
			
			function _55callbackfunction(){
				var pageTracker=_gat._getTracker("UA-6151896-1");
				pageTracker._trackPageview('/player/' + partenaire + '/' + actif + '/' + 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);
		}
	}

}
