﻿/** 
* Widget Programe-TV.net
* Copyright: Kreactive-Technologies
* authors: Patrice FERLET (p.ferlet@kreactive-technologies.com)
*          Anthony Kuntz (a.kuntz@kreactive-technologies.com)
* 
**/

/* * * Globales * * */
//Root path
//var droot = 'http://widgets.feedget.eu/ptv/'
var droot = "./";
//var droot = 'http://copix.metal3d.org/ptv.net/'
//loading image
//var loading = 'http://widgets.feedget.eu/ptv/ajax-loader.gif';
var loading = config.loading;
//i18n months and days
var ptvbg = "#EFEFEF";

var months = {
    'm0' : 'Janvier',
    'm1' : 'F&eacute;vrier',
    'm2' : 'Mars',
    'm3' : 'Avril',
    'm4' : 'Mai',
    'm5' : 'Juin',
    'm6' : 'Juillet',
    'm7' : 'Ao&ucirc;t',
    'm8' : 'Septembre',
    'm9' : 'Octobre',
    'm10' : 'Novembre',
    'm11' : 'D&eacute;cembre'
};

var days = {
    'd0' : 'Dimanche',
    'd1' : 'Lundi',
    'd2' : 'Mardi',
    'd3' : 'Mercredi',
    'd4' : 'Jeudi',
    'd5' : 'Vendredi',
    'd6' : 'Samedi'
}
var progs = null;
var currentchanneltype = "";
// * Seek programs by ID * //
function getProg(id){
    for (i=0; i<progs.length; i++){
        if(progs[i].id == id)
            return progs[i];
    }
    return false;
}

// * Generate an numeric id from string * //
function uniqid(id){
    var c = 0;
    if (id.length > 0) {
        for(x=0;x<id.length;x++){
            var chr = id.charCodeAt(x);
            c +=""+chr;
        }
    }
    return c.replace(' ','');
}



function emptyDisplay(){
    try{
        if ($('WidgetDate'))  $('WidgetDate').setStyle('display', 'none')
        if ($('ptvbody'))   $('ptvbody').setStyle('display','none');
        if ($('enclosure')) $('enclosure').remove();
        if ($('comeback')) $('comeback').remove();
        $('selects').setStyles({
            'display':'none'    
        });
        if ($('resetbutton')) $('resetbutton').setStyle('display','none');
        //if($('about'))  $('about').remove();
        if($('aboutbutton')) $('aboutbutton').setStyle('display','none');
        if($('spacer')) $('spacer').setStyle('display','none');
    }catch(e){}
}


function prepareChanels (items){
       var j=0;
       var prefix="";
       var prefix2=""
       
       //for IE, we need to use prefix (RSSns.org -> tv dtd)
       if(window.ie || navigator.userAgent.match(/Firefox\/3/)){
           prefix = 'tv:'
           prefix2="content:"
       }
       
       var chans = new Array();
       for (i =0 ;i<items.length ;i++){
           try{
            var item = items[i];
            var chan = item.getElementsByTagName(prefix+'channel')[0];
            var logo = item.getElementsByTagName(prefix+'logo')[0];
            var csa  = item.getElementsByTagName(prefix+'parentAdvisory')[0];
            var title= item.getElementsByTagName('title')[0];
            var genre= item.getElementsByTagName(prefix+'genreProgramme')[0];
            var link = item.getElementsByTagName('link')[0];
            var date = item.getElementsByTagName('pubDate')[0];
            var description = item.getElementsByTagName(prefix2+'encoded')[0];
            var duration = item.getElementsByTagName(prefix+'duration')[0];
             //get enclosure or tv:image
            if(item.getElementsByTagName('enclosure') && item.getElementsByTagName('enclosure').length>0)            	
            	var image = item.getElementsByTagName('enclosure')[0].getAttribute('url');
            else
            	var image = item.getElementsByTagName(prefix+'image')[0].firstChild.nodeValue;
            	
            var prog = {
                id: uniqid(chan.firstChild.nodeValue + title.firstChild.nodeValue),
                chan : chan.firstChild.nodeValue,
                logo: logo.firstChild.nodeValue,
                csa: csa.firstChild.nodeValue,
                title : title.firstChild.nodeValue,
                link: link.firstChild.nodeValue,
                date: date.firstChild.nodeValue,
                description : description.firstChild.nodeValue,
                duration: duration.firstChild.nodeValue,
                image: image
            }            
            chans[j]=prog;
            j++;
        }catch(e){
            //console.log(e.message)
        }
    }
    return chans;
}


// * View program details * //
function view (pid){ 
    var p = getProg(pid);    
    var enclose =CWE.createView();
    enclose.setStyles({
	    'background-color':'#FFF',
	    'color':'#000'
    });
    enclose.id="enclosure";
    
    var retbutton = new Element('a').addClass('button').setHTML('Revenir à l\'accueil').addEvent('click',function (evt){
		$('mainbutton').fireEvent('click',evt);
    }).setStyle('float','right');
    
	var encloseDetail = new Element ("div");
	encloseDetail.setStyles({
		'margin':'0px 5px 0px 3px',
		'clear':'both',
		'zoom':'1'
	})
	
    encloseDetail.setHTML("<div style=\"font-size: 12pt; font-weight: bold; float: left; width: 98%\"><a style=\" color: #000; float: left; margin-top: 5px; clear:both; \" href=\""+p.link+"\" onclick=\"return CWE.openPopup(this.href,'ptv_popup');\" title=\"Voir la page de détail pour le programme: "+p.title+"\">"+p.title+"</a></div><br />");
    
    var m = $('market').clone().setStyle("text-align","center").injectTop(enclose);
    
    //.setStyle('background-color',ptvbg);
        
    var d = new Date(p.date);
    var h = d.getHours();
    var m = d.getMinutes();
    if (h.length < 10)     h = "0"+h;                    
    if (m < 10)    m = "0"+m;                    
    var hour = h + ':' + m;    

    
    encloseDetail.setHTML(encloseDetail.innerHTML + '<em>Sur '+p.chan+' - '+i18n.getDate(p.date)+' &agrave; '+h+':'+m+'</em>');
    //enclose.setHTML(enclose.innerHTML + '<img src="'+p.image+'" alt="'+p.title+'"/>');
    
    encloseDetail.setHTML(encloseDetail.innerHTML + p.description);
    encloseDetail.setHTML(encloseDetail.innerHTML + "<br /><a style=\"color: #000; float: left; margin-top: 5px; clear:both;\" href=\""+p.link+"\" onclick=\"return CWE.openPopup(this.href,'ptv_popup');\" title=\"Voir la page de détail pour le programme: "+p.title+"\">En savoir plus sur ce programme...</a>")
	encloseDetail.injectInside(enclose);
    enclose.injectAfter(CWE.currentPane);
    
    var paragraph = enclose.getElementsBySelector('p')[0];
    new Element('img').setProperty('src',p.image).setStyles({
    	'float' : 'left',
    	'margin-right': '5px'	
    }).injectTop(paragraph)
    paragraph.setStyle('text-align','justify');
    paragraph.setStyle('padding','0px');
    
    $$('.csa10').each(function (el){
        var csa10 = new Element('img').setProperties({
            src : "http://images.programme-tv.net/images/csa-10.gif",
            'class' : 'csaimg'
        });
        csa10.injectInside(el)
    });
    $$('.csa12').each(function (el){
        var csa12 = new Element('img').setProperties({
                    src : "http://images.programme-tv.net/images/csa-12.gif",
                    'class' : 'csaimg'        
                });
        csa12.injectInside(el)
    });
    
    $$('.csa16').each(function (el){
        var csa16 = new Element('img').setProperties({
            src : "http://images.programme-tv.net/images/csa-16.gif",
            'class' : 'csaimg'
        });
        csa16.injectInside(el)
    });
    
    $$('.csa18').each(function (el){
        var csa18 = new Element('img').setProperties({
            src : "http://images.programme-tv.net/images/csa-18.gif",
            'class' : 'csaimg'
        });
        csa18.injectInside(el)
    });    
    /**/
    $$('.csaimg').each(function(csa){
        csa.setStyles({
            'float': 'left'
        });
    });
    

    enclose.setStyles({
        'margin-bottom': '15px'
    });
    //bouton de retour
    retbutton.setStyle('float','right');
    retbutton.injectInside(enclose);
    
    return enclose;  
}

//when document is loaded
window.addEvent('domready', function () {
        CWE.setUrlContent('ptv-v2.html');
});

window.addEvent('widgetload',function (){
   if(CWE.getPlateform()=="vista" ){
   		CWE.addContainer({
	   		type: 'expand',
	   		view: expandView
   		});
   		CWE.addContainer({
   			type: 'default',
   			view: defaultView
   		});
   }else{
   		//alert('sinon')
		CWE.addContainer({
			type: 'default',
			view: expandView
		});
	
   }
  // alert('de dieu')
   CWE.execute();
   
   var ggbutton = null;
   ggbutton = $('button_igoogle')
   var images_dir= SERVER.replace('index.php','')+'../../themes/default/img/cwe/';
   try{
   	
   	  CWE.setAdderButtonUrl('button_igoogle','http://fusion.google.com/add?source=atgs&moduleurl=http://widget.programme-tv.net/ptv/google/programme-tv.xml');	  
		
	  fbbutton = $('button_Facebook')
		u = 'http://apps.facebook.com/programmetv'
		var fb  = CWE.getAdderButton({
			img: images_dir+'fb.gif',
			to: u,
			alt: i18n.widget.add+i18n.widget.platforms.facebook,
			'text': i18n.widget.platforms.facebook,
			'id' : 'button_Facebook'
		});

		fbbutton.replaceWith(fb);
	
		var osx  = CWE.getAdderButton({
			img: images_dir+'dashboard.png',
			to: 'http://widgets.feedget.eu/ptv/ProgrammeTV.wdgt.zip',
			alt: i18n.widget.add+i18n.widget.platforms.osx,
			'text': i18n.widget.platforms.osx,
			'id' : 'button_osx'
		});
		
		osx.injectAfter(fb);
		
    }catch(e){}
    /*
	   var u = SERVER.replace('index.php','')+'/../../../ptv/Programme TV.wdgt.zip'
	   var dash = CWE.getAdderButton({
			to: u,
			alt: 'Télécharcher le widget pour MacOS X',
			img: images_dir + '/dashboard.png',
			text: 'MacOS X'
		});	
		dash.injectAfter($('button_vista'));
	}catch(e){}*/
});

window.addEvent('widgetrssreaderdisplayed',function (){
	//BRUBECK CAMPAIGN
	if(false && CWE.target=='google'){
		$('readmore').innerHTML="<a id=\"fv_campaign_ad\" onclick=\"return CWE.openPopup(this.href,'ptv_popup');\"></a>"
		fv_createAdLink('fv_campaign_ad')
	} else {
		//$$('.itemtitle')[0].setStyle('display','none');
		var aa= $$('#readmore a')[0];
		$('readmore').removeEvents('click');
		aa.removeEvents('click');
		aa.setHTML($$('.itemtitle')[0].getText());
		aa.onclick = function () {return CWE.openPopup(this.href,'ptv_popup')};
	}
	//$$('.itemtitle')[0].setStyle('display','none');
	//$$('#readmore a')[0].setHTML($$('.itemtitle')[0].getText());

	/*var wrap = new Element('div').setStyles({
		'padding': '0 0 0 10px',
		'background-image' : 'url(http://static.programme-tv.net/prog-tv/bg1bouquetgauche.gif)',
		'background-repeat' : 'no-repeat',
		'background-position' : '0 3px'
	})*/

	$('tabedit').setStyle('background-color', ptvbg)
	
	/*$$('#market .itemenclosure img').each(function (enc){
		enc.injectBefore($E('#readmore a')).setStyles({
			'float' : 'left',
			'margin-top' : '6px'
		});	
	})*/
	//wrap.injectBefore($$('#readmore a')[0]);
	//$$('#readmore a')[0].injectInside(wrap);
	
	
	
})



//By PTV
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
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;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
