// 02-11-2009
// Jérémie Román
// Control de errores si fallan los ficheros del arafem.
 
//// CONSTANTS ////

// URL base NOW&NEXT.
var URL_ARAFEM		= "http://www.tv3.cat/ptv3/arafem";

// Interval refresc NOW&NEXT.
var URL_ARAFEM_INTERVAL	= 30; // 30segons

// Nom layer NOW&NEXT emissores
var LAYER_HTML_ZONE			= "html_zone";
var LAYER_HTML_ZONE_DIRECTE = "html_zone_directe";

// Senyals de retorn entre objectes.
var RET_CHANGED_TRUE	= "CHANGED=true";
var RET_CHANGED_FALSE	= "CHANGED=false";

// canals implicats
//var CHANNELS = "TV3|33D|K3D|300|324|TVI".split("|");
var CHANNELS = "TV3|33D|CS3|300|324|TVI".split("|");

var reqGeneral=null;
//// VARIABLES ////

// Per referenciar de forma externa l'objecte OBSERVABLE actual.
var _observable = null;

// Per referenciar de forma externa l'objecte OBSERVER actual.
var _observer = null;

var isVideo = false;

////////////////////////////////////////////////////////////////////////////////////////////////

//// TVCRefreshController ////

// Constructor. Agrega tants observadors com emissores es passin com a parm.
function TVCRefreshController(channels) {
	this.name = "TVCRefreshController";
	this.url = URL_ARAFEM + "/refresher.xml";
	this.interval = URL_ARAFEM_INTERVAL;
	this.observers = new Map();
	for (var j=0; j<channels.length; j++) {
		this.addObserver( new TVCChannel(channels[j]) );
	}
}

// Herencia.
TVCRefreshController.prototype = new Observable();

// Sobreescrit.
TVCRefreshController.prototype.addObserver = function() {
	var observer = arguments[0];
	this.observers.put(observer.getName(), observer);
}

// Sobreescrit. Efectua notificació sobre observadors.
// Marca '_observable' per referència externa.
TVCRefreshController.prototype.notifyObservers = function() {
	_observable = this;
	var txh = new XmlHttp(this.url, CACHE_SYSTEM_SERVER, URL_ARAFEM_INTERVAL);
	txh.doPost("TVCRefreshControllerNotifyObservers");
	
}

//
TVCRefreshController.prototype.getChannel = function() {
	var channel = arguments[0];
	return this.observers.get(channel);
}

// Mètode TimeTask.
TVCRefreshController.prototype.run = function() {
	URL_ARAFEM_INTERVAL = this.interval;
	this.notifyObservers();
}

// Mètode TimeTask.
TVCRefreshController.prototype.reset = function() {
	URLCached_CacheSystemServer_reset();
}

// Mètode TimeTask.
TVCRefreshController.prototype.pause = function() {
	
}

TVCRefreshController.prototype.updatePlayer = function(observer) {
	var channel = vCadenaDirecte;
	var oChannel = this.getChannel(channel);
	if (!observer || !oChannel.isBroadcasts() || !isVideo){
		var mResources = new Map();
		//		path imatges
		mResources.put(channel+'_IMG', '/img/ico_blau_'+channel+'.gif');
		mResources.put('TV3_IMG', '/img/ico_blau_tv3.gif');
		mResources.put('TVI_IMG', '/img/ico_blau_tv3cat.gif');
		mResources.put('K3D_IMG', '/img/ico_blau_k3.gif');
		mResources.put('33D_IMG', '/img/ico_blau_33.gif');
		//		ca query-string (distintes qualitats)
		mResources.put('TV3_Q_A', 'ALTERNATE=YES&ID=111111155&ID_BACKUP=111111255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('TV3_Q_B', 'ALTERNATE=YES&ID=111111155&ID_BACKUP=111111255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('TV3_Q_H', 'ALTERNATE=YES&ID=111111155&ID_BACKUP=111111255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('K3D_Q_A', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('K3D_Q_B', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('K3D_Q_H', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('CS3_Q_A', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('CS3_Q_B', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('CS3_Q_H', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('324_Q_A', 'ALTERNATE=YES&ID=333333355&ID_BACKUP=333333255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('324_Q_B', 'ALTERNATE=YES&ID=333333355&ID_BACKUP=333333255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('324_Q_H', 'ALTERNATE=YES&ID=333333355&ID_BACKUP=333333255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('TVI_Q_A', 'ALTERNATE=YES&ID=444444455&ID_BACKUP=444444255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('TVI_Q_B', 'ALTERNATE=YES&ID=444444455&ID_BACKUP=444444255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('TVI_Q_H', 'ALTERNATE=YES&ID=444444455&ID_BACKUP=444444255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('300_Q_A', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('300_Q_B', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('300_Q_H', 'ALTERNATE=YES&ID=555555555&ID_BACKUP=555555255&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('33D_Q_A', 'ALTERNATE=YES&ID=222222255&ID_BACKUP=222222155&QUALITY=A&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('33D_Q_B', 'ALTERNATE=YES&ID=222222255&ID_BACKUP=222222155&QUALITY=B&FORMAT=WM&AGENT=WEBTV3');
		mResources.put('33D_Q_H', 'ALTERNATE=YES&ID=222222255&ID_BACKUP=222222155&QUALITY=H&FORMAT=WM&AGENT=WEBTV3');
		var caURL = 'http://www.tv3.cat/su/tvc/tvcConditionalAccess.jsp?'+mResources.get(channel+'_Q_'+vdQualitat);
	
		isVideo = oChannel.isBroadcasts();
		
		var buff = '<div class="mediaplayer">';
		buff += '<div id="dMediaPlayer" class="wmvPlayer">';
		if (isVideo) {
			buff += GetWMO("MediaPlayer",caURL,null,true,489,412);
		}
		buff += '</div>';
		buff += '</div>';
	
		buff += '<div class="directe_desc_holder" id="directe_desc_holder">';
		buff += programacioCanal_getNowNext(reqGeneral,channel);                      
	
		buff += '</div>';
		oChannel.setValue(LAYER_HTML_ZONE_DIRECTE, buff);
	}
	else{
		//Vienes del observador Y tienes permisos Y tu anterior tenia permisos
		document.getElementById('directe_desc_holder').innerHTML = programacioCanal_getNowNext(reqGeneral,channel);                      
	}
	
	var facebook = oChannel.getValue('facebook');
	var idPrograma = oChannel.getValue('idPrograma');
	if (facebook==1){
		document.getElementById('superdestacat').style.display = 'none';
		document.getElementById('directe_related').style.display = '';
		document.getElementById('dest_promo').style.display = '';
		facebook_connect(idPrograma);	
	}
	else{
		document.getElementById('directe_related').style.display = 'none';
		document.getElementById('dest_promo').style.display = 'none';
		document.getElementById('superdestacat').style.display = '';
	}
	
}


//
TVCRefreshController.prototype.connect = function() {
	var channel = arguments[0];
	if ( this.observers.containsKey(channel) ) {
		vCadenaDirecte = channel;
		// reset 'timestamp' observadors
		var channels = this.observers.entryKeys(); 
		for (var i=0; i<channels.length; i++) { 
			this.observers.get(channels[i]).setValue("timestamp",null);
		}
		this.run();
	}
}

// Representació textual.
TVCRefreshController.prototype.toString = function() {
	var buff = "TVCRefreshController : [ observers:{";
	var ch = this.observers.entryKeys();
	for (var i=0; i<ch.length; i++) {
		buff += "\n" + this.observers.get(ch[i]) + ", ";
	}
	buff += "\n}]";
	return buff;
}

//// MÈTODES ////

// Capturador sincron especific.
// Comunica als observadors de "_observable" si han estat modificats (variació timestamp),
// i acaba actualitzant una zona html (actualitza layer amb el codi HTML de cada observador).
function synchronousHandlerTVCRefreshControllerNotifyObservers(req) {
	try {
		if (req.readyState==4 && req.status==200) {
	    var result = req.responseXML;
			// es procesa els elements del xml, es notifica a cada emissora si s'ha actualitzat o no.
			var eItems = result.documentElement.getElementsByTagName("item");
			for (var i=0; i<eItems.length; i++) {
				var item = eItems.item(i);
				var channel = getNodeValue(item, "channel");
				var timestamp = getNodeValue(item, "timestamp");
				var observer = _observable.observers.get(channel);
				if (observer!=null) {
					var observer_timestamp = observer.getValue("timestamp");
					var changed = observer_timestamp==null || observer_timestamp!=timestamp;
					observer.update(_observable, changed ? RET_CHANGED_TRUE : RET_CHANGED_FALSE);
					observer.setValue("timestamp", timestamp);
					if (changed && channel==vCadenaDirecte) {
						_observable.updatePlayer(observer_timestamp);
					}
				}
			}
			// es monta l'HTML, es segueix l'ordre d'emissores establert.
			var buffDirecte = "";
			var buff = '<ul id="tabs_canals">';
			var channels = _observable.observers.entryKeys();
			for (var i=0; i<channels.length; i++) {
				var observer = _observable.observers.get(channels[i]);
				buff += observer.getValue(LAYER_HTML_ZONE);
				if (buffDirecte=="") {
					buffDirecte = observer.getValue(LAYER_HTML_ZONE_DIRECTE);
				}
				observer.setValue(LAYER_HTML_ZONE_DIRECTE,"");
			}
			buff += "</ul>";
			if(vCadenaDirecte=="TV3"){buff = buff.replace('<li id="TV3" class="">', '<li id="TV3" class="stream_selected">');}
			else if(vCadenaDirecte=="33D"){buff = buff.replace('<li id="33D" class="">', '<li id="33D" class="stream_selected">');}
			else if(vCadenaDirecte=="K3D"){buff = buff.replace('<li id="K3D" class="">', '<li id="K3D" class="stream_selected">');}
			else if(vCadenaDirecte=="CS3"){buff = buff.replace('<li id="CS3" class="">', '<li id="CS3" class="stream_selected">');}
			else if(vCadenaDirecte=="300"){buff = buff.replace('<li id="300" class="">', '<li id="300" class="stream_selected">');}
			else if(vCadenaDirecte=="324"){buff = buff.replace('<li id="324" class="">', '<li id="324" class="stream_selected">');}
			else if(vCadenaDirecte=="TVI"){buff = buff.replace('<li id="TV3CAT" class="">', '<li id="TV3CAT" class="normargin stream_selected">');}
			document.getElementById(LAYER_HTML_ZONE).innerHTML = buff;
			if (buffDirecte!="") {
				document.getElementById(LAYER_HTML_ZONE_DIRECTE).innerHTML = buffDirecte;
			}
			options();
		}
	} 
	catch (e) {
		var buffDirecte = "";
		var buff = '<ul id="tabs_canals">';
		var channels = _observable.observers.entryKeys();
		for (var i=0; i<channels.length; i++) {
			var observer = _observable.observers.get(channels[i]);
			buff += observer.getValue(LAYER_HTML_ZONE);
			if (buffDirecte=="") {
				buffDirecte = observer.getValue(LAYER_HTML_ZONE_DIRECTE);
			}
			observer.setValue(LAYER_HTML_ZONE_DIRECTE,"");
		}
		buff += "</ul>";
		if(vCadenaDirecte=="TV3"){buff = buff.replace('<li id="TV3" class="">', '<li id="TV3" class="stream_selected">');}
		else if(vCadenaDirecte=="33D"){buff = buff.replace('<li id="33D" class="">', '<li id="33D" class="stream_selected">');}
		else if(vCadenaDirecte=="K3D"){buff = buff.replace('<li id="K3D" class="">', '<li id="K3D" class="stream_selected">');}
		else if(vCadenaDirecte=="CS3"){buff = buff.replace('<li id="CS3" class="">', '<li id="CS3" class="stream_selected">');}
		else if(vCadenaDirecte=="300"){buff = buff.replace('<li id="300" class="">', '<li id="300" class="stream_selected">');}
		else if(vCadenaDirecte=="324"){buff = buff.replace('<li id="324" class="">', '<li id="324" class="stream_selected">');}
		else if(vCadenaDirecte=="TVI"){buff = buff.replace('<li id="TV3CAT" class="">', '<li id="TV3CAT" class="normargin stream_selected">');}
		document.getElementById(LAYER_HTML_ZONE).innerHTML = buff;
		if (buffDirecte!="") {
			document.getElementById(LAYER_HTML_ZONE_DIRECTE).innerHTML = buffDirecte;
		}
		options();
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////

//// TVCChannel ////

// Constructor. A partir del ID de emissora s'obté la URL del "Arafem" corresponent.
function TVCChannel(name) { 
	this.name = name;
	this.values	= new Map();
	this.setValue("url", URL_ARAFEM + "/arafem_" + name + ".xml");
	this.setValue(LAYER_HTML_ZONE, "");
	this.setValue(LAYER_HTML_ZONE_DIRECTE, "");
	this.setValue("emissio", "NO");
}    

// Herencia.
TVCChannel.prototype = new Observer();

// Sobreescrit. Si ha canviat actualitza la seva zona html.
// Marca '_observer' per referència externa.
TVCChannel.prototype.update = function() {
	_observer = this;
	var observable = arguments[0];
	var arg	= arguments[1];
	if (arg==RET_CHANGED_TRUE) {
		var txh = new XmlHttp(this.getValue("url"), CACHE_SYSTEM_SERVER_READER, URL_ARAFEM_INTERVAL);
		txh.doPost("TVCChannelUpdate");
	}
}

// Nom emissora.
TVCChannel.prototype.getName = function() {
	return this.name;
}

// Obté si el canal actual está en emissió.
TVCChannel.prototype.isBroadcasts = function() {
	return this.getValue('emissio')=='SI';
}

// Sobreescrit.
TVCChannel.prototype.toString = function() {
	var buff = "TVCChannel : [ " +
		"key:" + this.name + ", isB:" + this.getValue("emissio") + ", url:" + this.getValue("url") + 
		" ]";
	return buff;
}

//// MÈTODES ////

//
function solveConnectHref(canal) {
	var shref = 'http://www.tv3.cat/ptv3/tv3EnDirecte.jsp?canal='+canal;
	try {
		var existLayerDirecte = document.getElementById(LAYER_HTML_ZONE_DIRECTE)!=null;
		if (existLayerDirecte) {
			shref = 'javascript:_ctrl.connect(\''+canal+'\')';
		}
	} catch (e) {}
	return shref;
}

// a cada click lo llama por todos los programas activos
function TVCChannel_getNowHtml(item) {
	var cadena = getNodeValue(item, 'cadena');
	var hora = getNodeValue(item, 'hora');
	var titol = getNodeValue(item, 'titol');
	var cadena_aux = cadena;
	if(cadena == "33D"){cadena="33";}
	if(cadena == "K3D"){cadena="K3";}
	if(cadena == "TVI"){cadena="TV3CAT";}
	var buff = '<li id="'+cadena_aux+'" class="">';	
	if(cadena == "TV3CAT"){
		if (cadena_aux==this.vCadenaDirecte)
			buff = '<li id="'+cadena_aux+'" class="normargin stream_selected">';	
		else
			buff = '<li id="'+cadena_aux+'" class="normargin">';	
	}
	buff += ' <a title="'+cadena+'" class="tab_dir_logos tab_dir_'+cadena.toLowerCase()+'">'+cadena+'</a>';
	buff += ' <span class="arafemlabel">Ara fem</span>';
	buff += ' <div class="aratext">'+titol+'</div>';
	buff += '</li>';
	return buff;
}

//funcion para tv3.cat/3alacarta
function TVCChannel_getNowHtml_3alacarta(item) {
    var cadena = getNodeValue(item, 'cadena');
    var hora = getNodeValue(item, 'hora');
    var titol = getNodeValue(item, 'titol');
    var buff = '<li>';
    buff += ' <div class="text nofoto">';
    buff += ' <div class="ico">';
    buff += ' <img class="floatleft" src="/img/ico_directe_'+cadena+'.gif" alt="'+cadena+'">';
    if (cadena!=vCadenaDirecte) {
        buff += '<div class="connecta"><a title="Connecta" href="'+solveConnectHref(cadena)+'">Connecta</a></div>';
    }
    buff += ' </div>';
    buff += ' <div class="hora">'+hora+'</div><p>'+titol+'</p></div><div class="clear">&nbsp;</div>';
    buff += '</li>';
    return buff;
}


// Next HTML
function TVCChannel_getNextHtml(item) {
	var cadena = getNodeValue(item, 'cadena');
	var hora = getNodeValue(item, 'hora');
	var titol = getNodeValue(item, 'titol');
	var cadena_aux = cadena;
	if(cadena == "33D"){cadena="33";}
	if(cadena == "K3D"){cadena="k3";}
	if(cadena == "TVI"){cadena="TV3CAT";}
	var buff = '<li id="'+cadena_aux+'" class="propera">';	
	if (cadena_aux==this.vCadenaDirecte){				
		buff = '<li id="'+cadena_aux+'" class="">';	
	}
	if(cadena == "TV3CAT"){
		if (cadena_aux==this.vCadenaDirecte)
			buff = '<li id="'+cadena_aux+'" class="propera normargin stream_selected">';	
		else
			buff = '<li id="'+cadena_aux+'" class="propera normargin">';	
	}
	buff += ' <a title="'+cadena+'" class="tab_dir_logos tab_dir_'+cadena.toLowerCase()+'">'+cadena+'</a>';
	buff += ' <div class="aratext">';
	buff += ' L\'emissi&oacute; actual no està disponible a 3alacarta.<br />';
	buff += '</div>';
	buff += '</li>';
	return buff;
}



// Pinta la informació referent al que s'està emetent actualment al canal i el següent que s'emetrà
function programacioCanal_getNowNext(req,canal){
	try{
		var result = req.responseXML;
		var eItems = result.documentElement.getElementsByTagName('item');
		buff = "";
		for (var i=0; i<eItems.length; i++) {
			var item = eItems.item(i);
			var cadena = getNodeValue(item, 'cadena');
			if(cadena == canal){
				var hora = getNodeValue(item, 'hora');
				var titol = getNodeValue(item, 'titol');
				if (titol.length > 50){
					titol= titol.substring(0,50)+'...';
				}
				var taula = getNodeValue(item, 'taula');
				var sinopsi = getNodeValue(item,'sinopsi');
				if (sinopsi.length > 250){
					sinopsi= sinopsi.substring(0,250)+'...';
				}
				if (taula == 'now' && hasPermission(item)) {
					var cadena = getNodeValue(item, 'cadena');
					var hora = getNodeValue(item, 'hora');
					var titol = getNodeValue(item, 'titol');
					if(cadena == '33D'){cadena='33';}
					if(cadena == 'K3D'){cadena='K3';}
					buff += '<div class="directe_desc">';
	 	 			buff += '	<p class="directe_atitol">ESTÀS VEIENT</p>';
	    		buff += '		<h2>'+titol+'</h2>';
	    		buff += '		<h3>'+sinopsi+'</h3> ';
	 	 		  buff += '</div>';                    
				} else if (taula=='now' && hasPermission(item)== false) {
					var cadena = getNodeValue(item, 'cadena');
					var hora = getNodeValue(item, 'hora');
					var titol = getNodeValue(item, 'titol');
					if(cadena == '33D'){cadena='33';}
					if(cadena == 'K3D'){cadena='K3';}
					buff += '<div class="directe_desc">';
	 	 			buff += '	<p class="directe_atitol">EMISSI&Oacute; ACTUAL NO DISPONIBLE PER INTERNET</p>';
	    		buff += '		<h2>'+titol+'</h2>';
	    		buff += ' 	<h3 class="directe_nodrets">Per motius legals lligats als drets de difusió, no podem oferir-te aquest programa en directe per internet</h3>';
	    	  buff += '</div>';
				} else if (taula=='next' && hasPermission(item)) {
	 					var cadena = getNodeValue(item, 'cadena');
						var hora = getNodeValue(item, 'hora');
						var titol = getNodeValue(item, 'titol');
						if (titol.length > 50){
							titol= titol.substring(0,50)+'...';
						}
						if(cadena == '33D'){cadena='33';}
						if(cadena == 'K3D'){cadena='K3';}
						buff += '<div class="next_desc">';
	  	  		buff += '	<div class="directe_separador_fosc">&nbsp;</div>';
	  	  		buff += '	<p class="directe_atitol">I DESPRÉS</p>';
	  	  		buff += '  	<p class="directe_hora">'+hora+'h</p>';
	  	  		buff += '		<h2>'+titol+'</h2>';
	  	  		buff += '    <div class="directe_minillegenda"><span>Proper programa amb drets per emetre per internet</span></div>';
	  	  		buff += '</div>';
				}
			}
		}		
		return buff;
	}
	catch (e) {
		return '<div class="directe_desc"><p class="directe_atitol">Per problemes tècnics en aquests moments no podem mostrar-te aquesta emissió.</p></div>';
	}
}


// Drets
function hasPermission(item) {
	var drets = getNodeValue(item, 'drets');
	var geo = getNodeValue(item, 'geo');
	return drets=='SI' && geo=='TOTS';
}

// Capturador sincron especific. Regeneració de la zona html de '_observer'.
// No actualitza cap layer, solament regenera el codi HTML.
function synchronousHandlerTVCChannelUpdate(req) {
	reqGeneral = req;
	try {
    if (req.readyState==4 && req.status==200) {
			var result = req.responseXML;
			var eItems = result.documentElement.getElementsByTagName('item');
			var buffNow = '';
			var buffNext = '';
			var cadena = '';
			var title = '';
			var facebook='';
			var idPrograma='';
			var emissio = 'NO';
			for (var i=0; i<eItems.length; i++) {
				var item = eItems.item(i);
				var taula = getNodeValue(item, 'taula');
				cadena = getNodeValue(item, 'cadena');
				if (taula=='now' && hasPermission(item)) {
					emissio = 'SI';
					title = getNodeValue(item, 'titol');
					facebook = getNodeValue(item, 'fbconect');
					idPrograma = getNodeValue(item, 'id_ptvc');
	        if (presentacio == '3alacarta')
	         	buffNow = TVCChannel_getNowHtml_3alacarta(item);
	        else
	        	buffNow = TVCChannel_getNowHtml(item);
				} else 
				if (taula=='next' && hasPermission(item)) {
					buffNext = TVCChannel_getNextHtml(item);
				}
			}
			_observer.setValue('facebook',facebook);
			_observer.setValue('titol', title);
			_observer.setValue('idPrograma',idPrograma);
			_observer.setValue('emissio', emissio);
			_observer.setValue(LAYER_HTML_ZONE, buffNow=='' ? buffNext : buffNow);
		}
		else{
			var cadena = this._observer.name;
			var cadena_aux = cadena;
			if(cadena == "33D"){cadena="33";}
			if(cadena == "K3D"){cadena="k3";}
			if(cadena == "TVI"){cadena="TV3CAT";}
			var buff = '<li id="'+cadena_aux+'" class="propera">';	
			if (cadena_aux==this.vCadenaDirecte){
				buff = '<li id="'+cadena_aux+'" class="stream_selected">';	
			}
			if(cadena == "TV3CAT"){
				if (cadena_aux==this.vCadenaDirecte)
					buff = '<li id="'+cadena_aux+'" class="propera normargin stream_selected">';	
				else
					buff = '<li id="'+cadena_aux+'" class="propera normargin">';	
			}
			buff += ' <a title="'+cadena+'" class="tab_dir_logos tab_dir_'+cadena.toLowerCase()+'">'+cadena+'</a>';
			buff += ' <div class="aratext">';
			buff += ' Sense senyal<br />';
			buff += '</div>';
			buff += '</li>';
			_observer.setValue('facebook','0');
			_observer.setValue('titol', '0');
			_observer.setValue('idPrograma','0');
			_observer.setValue('emissio', 'NO');
			_observer.setValue(LAYER_HTML_ZONE, buff);
		}
	} 
	catch (e) { }
}

// Instancia del controlador
var _ctrl = new TVCRefreshController(CHANNELS);

function options(){
		$("#tabs_canals > li")
		.click(function(){
			carregant();
			_ctrl.connect(this.id);
			$(this).mouseout();
		})
		.mouseover(function(){if($(this).hasClass("stream_selected") == false)$(this).addClass("over");})
		.mouseout(function(){$(this).removeClass("over");});
	}
	
	function carregant(){
		document.getElementById("dMediaPlayer").className="wmvPlayer wmvCarregant";
	}
 

function facebook_connect(idPrograma){
    buff = '		<div class="mod_facebook">';
    buff += '		<div class="txt_facebook">';    
    buff += '			<fb:comments xid="'+idPrograma+'" canpost="true" candelete="false" publish_feed="true" numposts="8" width="300px" height="508px"><fb:title>Participa! El teu comentari pot sortir per pantalla</fb:title></fb:comments>';    
		buff += '		</div>';    
    buff += '	</div>';    

    document.getElementById("directe_related").innerHTML = buff;
    FB_RequireFeatures(["XFBML"], function(){FB.Facebook.init("e7a2c54dd7befcac04592d4abd4e0d55", "http://www.tv3.cat/xd_receiver.htm");});
}
