//
//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;
}

var playersHtml = {};
//affiche le programme hover et cache les autres
function toggleClass() {
    var classes = this.className.split(' ');
    for (var i = 0; i < classes.length; i++) {
        if (classes[i] == 'skliHover') {
            return;
        }
    }
    var lis = MYgetElementsByClassName('skli');
    for (var j = 0; j < lis.length; j++) {
        lis[j].className = 'skli';
    }
    this.className = 'skli skliHover';
    var divs = MYgetElementsByClassName('skPlayHtml');
    for (i = 0; i < divs.length; i++) {
        divs[i].innerHTML = '';
    }
    var div = MYgetElementsByClassName('skPlayHtml', '*', this);
    div[0].innerHTML = playersHtml[div[0].id];

}

function fillEmbeds() {
    var divs = MYgetElementsByClassName('skPlayHtml');
    for (var i = 0; i < divs.length; i++) {
        playersHtml[divs[i].id] = divs[i].innerHTML;
        divs[i].innerHTML = '';
    }
    var liHover = MYgetElementsByClassName('skliHover');
    var div = MYgetElementsByClassName('skPlayHtml', '*', liHover[0]);
    div[0].innerHTML = playersHtml[div[0].id];
}

//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));

//
//load a specific program ?
//
var sk_loadprograms = '';
if (typeof(skProgramme) != 'undefined') {
    var sk_loadprograms = '&loadprograms=' + skProgramme;
}

//alert(escape(encodeURIComponent(window.location.href)));
//var service = 'http://service.myskreen.com/player/';
//var service = 'http://servicedev.myskreen.typhon.net/player/';
//choix du domaine du service (prod ou dev)
//service.maxime.typhon.net
var re = /service\.(.*?)\.myskreen\.typhon\.net/gi;

var res = re.exec(window.location.href);
var service = 'http://service.myskreen.com/player';
var env = 'prod';

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

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
//
document.write('<link href="' + service + '/css/default.css" rel="stylesheet"/>');
document.write('<link href="' + service + '/css/' + partenaire + '.css" rel="stylesheet"/>');


if(partenaire != 'specials.fr'){
    //à l'emplacement du script - HACK msn
    document.write('<div id="apiSkreen"><div id="skPush"></div></div>');
}

//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>');
}

skAddEvent( window, 'load', function() {

    

    //HACK msn
    var skPlayerContainer = document.getElementById('skplayercontainer');
    if(skPlayerContainer != null){
        //dans un element de la page (code dans le <head>)
        var skApiskreen = document.createElement('div');
        skApiskreen.id = 'apiSkreen';
        var skPush = document.createElement('div');
        skPush.id = 'skPush';
        skApiskreen.appendChild(skPush);
        skPlayerContainer.appendChild(skApiskreen);
    }
	
    //Initialization
    var skPlayer = document.createElement('div');
    var skExpose = document.createElement('div');
    skPlayer.id = 'skPlayer';
    skPlayer.className = partenaire;
    skExpose.id = 'skExpose';
    skExpose.onclick = apiskreenClose;
    document.body.insertBefore(skPlayer,document.body.firstChild);
    document.body.insertBefore(skExpose,document.body.firstChild);
	
    //largeur de l'élément
    var pushwidth = document.getElementById('apiSkreen').parentNode.offsetWidth;
    if (pushwidth>349) {
        document.getElementById('skPush').className = 'Wide';
    } else {
        document.getElementById('skPush').style.width= pushwidth-10;
    }

    //player
    document.getElementById('skPlayer').innerHTML = '<div id="skClose"></div><div id="skPartenaire"></div><div id="skWrap" style="height:600px"><iframe src="javascript:false;" id="skFrame" frameborder="no" scrolling="no" width="100%" height="100%" allowTransparency="true"></iframe></div>';

    //expose
    document.getElementById('skExpose').style.width=(1000 + document.body.clientWidth)+'px';
    document.getElementById('skExpose').style.height=(5000 + document.body.clientHeight)+'px';
    document.getElementById('skExpose').onclick= apiskreenClose;
    document.getElementById('skClose').onclick= apiskreenClose;

    //json
    var s = document.createElement('script');
    s.src = service+'/json.php?'
    s.src += 'title='+sk_pagetitle+'&url=' + sk_pageurl +'&partenaire=' + partenaire +'&width=' + pushwidth;
    s.src += sk_loadprograms;
    s.src += '&id='+sk_pageid;
    s.src += '&env='+env;
    s.type = 'text/javascript';
    document.getElementById('apiSkreen').appendChild(s);
});

//
//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 = '';

    var liHover = MYgetElementsByClassName('skliHover');
    // on vide la player html
    var div = MYgetElementsByClassName('skPlayHtml', '*', liHover[0]);
    div[0].innerHTML = playersHtml[div[0].id];
    
    return false;
}
// launch
function apiskreenLaunch(){
    //launch
    var liHover = MYgetElementsByClassName('skliHover');

    // on vide la player html
    var div = MYgetElementsByClassName('skPlayHtml', '*', liHover[0]);
    div[0].innerHTML = '';
    
    //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;
    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;
}

//
//teaser launch
//
function teaserLaunch(){
    if (hasClass(document.getElementById('skPush'),'Wide') || partenaire == 'lefigaro') {
        //player 442px de large
        document.getElementById('skTeaser'+this.id.replace('skVignette','')).style.display='block';
        this.style.display='none';
    } else {
        //petit player > teaser dans player
        var liHover = MYgetElementsByClassName('skliHover');
        //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+'&launchTeaser=1';
        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';
    }
    return false;
}

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

//
//affichage
//
var callBackResult = function(results){
    var apiSkreen = document.getElementById('apiSkreen');
    var responseElmt = document.getElementById('skPush');
    if (results.ResultSet.Result.length > 0){
        /* DEBUG
	    var divDebug = document.createElement('div'); 
	    divDebug.style.display = 'none';
	    divDebug.appendChild(document.createTextNode('partenaire: title='+sk_pagetitle+'&url=' + sk_pageurl +'&id=' + sk_pageid)); 
	    var nbResults = document.createTextNode(results.ResultSet.totalResultsReturned+' programmes'); 
	    divDebug.appendChild(nbResults); 
	    divDebug.appendChild(document.createElement('br')); 
	    var ArticleId = document.createTextNode('Article ID : '+results.ResultSet.articleId); 
	    divDebug.appendChild(ArticleId); 
	    divDebug.appendChild(document.createElement('br')); 
	    var ArticleUrl = document.createTextNode('Article url : '+results.ResultSet.articleUrl); 
	    divDebug.appendChild(ArticleUrl); 
	    divDebug.appendChild(document.createElement('br')); 
	    var ArticleTitle = document.createTextNode('Article titre : '+results.ResultSet.articleTitle); 
	    divDebug.appendChild(ArticleTitle); 
	    divDebug.appendChild(document.createElement('br')); 
	    responseElmt.appendChild(divDebug);
			*/
			
        //load skPlayer partenaire info
        document.getElementById('skPartenaire').innerHTML = '<p>Votre programme en vod</p><div class="logoPartenaire"><img class="logoSite logo' + partenaire.slice(0,1).toUpperCase() + partenaire.substring(1) + '" align="absmiddle" style="margin-right:20px;" src="' + results.ResultSet.partenaireIco + '" /><img class="logoContexte" src="'+service+'/images/'+results.Contexte+'.png" align="absmiddle" /></div>';
			
        //affichage du block de resultats
        apiSkreen.style.display='block';

        //contexte : vodeoContexte ou myskreenContexte
        apiSkreen.className=results.Contexte+'Contexte';

        //header
        responseElmt.innerHTML = '<div id="skPartenaires"><img class="logoPartenaire" src="'+results.ResultSet.partenaireIco+'" align="absmiddle" hspace="5"/><img class="logoContexte" src="'+service+'/images/'+results.Contexte+'.png" align="absmiddle" /></div>';

        //programmes
        var ul = document.createElement('ul');
        for(var i = 0; i < results.ResultSet.Result.length; i++) {
            var result = results.ResultSet.Result[i];
            /* 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');
                var linkPub = document.createElement('img');
                linkPub.src = service+'/images/acheterlouer.png';
                teaserClick.appendChild(linkPub);
                teaserClick.className = 'skTeaserClick';
                //if (result.ProgrammeOffreDeporte)
                teaserClick.href = result.ProgrammeUrl;
                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.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;
            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';

            /* INFOS OFFRE */ //\340 partir de '+result.ProgrammeOffre.Cout+' \u20ac
            var linkOffre = document.createElement('a');
            linkOffre.innerHTML = '<span>Voir en int&eacute;gralit&eacute;<br/>&agrave; partir de <b>'+result.ProgrammeOffre.Cout+'</b> &#128;</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);
	    
        //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éos poussées
        var skCountVideosPushed = results.ResultSet.Result.length;
    } else {
      responseElmt.style.display='none';
  	
      //nb de vidéos poussées
      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 s = document.createElement('script'); 
			s.src = gaJsHost+"google-analytics.com/ga.js"; 
			s.type = 'text/javascript'; 
			document.body.appendChild(s);

			//is actif
			if (results.ResultSet.Result.length > 0) {
				var actif = 'actif';
			} else {
				var actif = 'inactif';
			}
			var s = document.createElement('script');
			s.appendChild(document.createTextNode('var pageTracker=_gat._getTracker("UA-6151896-1");pageTracker._initData();pageTracker._trackPageview(encodeUnicode("/player/' + partenaire + '/' + actif + '/' + encodeURI(sk_pagetitle) + '"));'));
			s.type = 'text/javascript'; 
			document.body.appendChild(s);
    }

}