var xmlHTTP = null;
var tempsCarrega = 10000;
var timeoutId; //Id para almacenar timeout y poder cancelarlo
var timeToWait = 10000; //Timeout (Si pasa de 10s se aborta la petición)
var timerInterval = 180; //segons per l'interval de refresc de les crides
var timerIntervalRefresher = timerInterval * 1000; //milisegons pel refresc de les crides
var idPrograma = null; //variable per guardar l'id del programa 
var timeStampED = null; //variable per guardar el timestamp (hora)
var dataTimeStampED = null; //variable per guardar el timestamp (data)
var urlProgramaED = null; //url base on hi ha el fitxer de dades del programa en emissio
var elementId = null; //nom de l'element on posem el modul ED
var whereAmI = null; //on som (HomeCR, PlayerCR, ...)
var vUrlTime = "/su/time.jsp?type=xml&format=HH-mm-ss-yyyyMMdd&dummy=" + Math.random();
var vLastProgramId = 0; //per saber si ja tenim pintat el modul, i amb quin programa

var moscaDelay = 2000; //Delay per mostrar la mosca de l'endirecte al player de CR

function setIdProgramaActual(idProg) {
	idPrograma = idProg;
}

function getIdProgramaActual() {
	return idPrograma;
}

function setTimeStampED(timestampIn) {
	timeStampED = timestampIn;
}

function getTimeStampED() {
	return timeStampED;
}

function setDataTimeStampED(dataTimestampIn) {
	dataTimeStampED = dataTimestampIn;
}

function getDataTimeStampED() {
	return dataTimeStampED;
}

function setUrlProgramaED(urlEDIn) {
	urlProgramaED = urlEDIn;
}

function getUrlProgramaED() {
	return urlProgramaED;
}

function setElementId(elemId) {
	elementId = elemId;
}

function getElementId() {
	return elementId;
}

function getWhereAmI() {
	return whereAmI;
}

function setWhereAmI(pWhereAmI) {
	if (pWhereAmI!= undefined && pWhereAmI!= null && pWhereAmI != ""){whereAmI = pWhereAmI;}
}

function setLastProgramIdED(pProgramId){
	if (pProgramId!= undefined && pProgramId!= null && pProgramId != ""){vLastProgramId= pProgramId;}
	else{vLastProgramId= 0;}
}

function getLastProgramIdED(){
	return vLastProgramId;
}

// Funció que guarda l'id del programa del qual estem mirant la fitxa i que després comprova si el
// programa actual en emissió coincideix amb el de la fitxa per mostrar la imatge del "En Directe"
//
function isProgramaEnDirecte(idProg,urlEnDirecte,methodId) {
	setIdProgramaActual(idProg);
	loadXMLDoc(urlEnDirecte,false,methodId);
}

// Funció que pinta la imatge del "En Directe" si el programa actual en emissió té un "En Directe" a la fitxa de programa
//
function genericFunctionEDPrograma(idMethod,result) {
	try {
		var rootElement = result.documentElement;
		
		if(rootElement && rootElement != null) {
			var elemDescProg = rootElement.getElementsByTagName("DESCPRG")[0];
			
			if(elemDescProg && elemDescProg != null && elemDescProg.firstChild) {
				var descProg = elemDescProg.firstChild.data;
				//si no hi ha aquest camp el programa no te un endirecte
				if (descProg.length > 0) {
					var elemIdProg = rootElement.getElementsByTagName("IDPRG")[0];
					var idProg;
					
					if(elemIdProg && elemIdProg != null && elemIdProg.firstChild) {
						idProg = elemIdProg.firstChild.data;
						idProgramaActual = getIdProgramaActual();
						//si l'id del programa coincideix amb el del programa en directe mostrem la imatge que linka cap a En Directe
						if(idProg == idProgramaActual) {
							document.write('<a href="/endirecte/" target="_blank"><img src="/img/bt_endirecte.gif" style="cursor:pointer;" border="0" /></a>');
							document.write('<p class="hr_blanc10noMargin"></p>');
						}
					}
				}
			}
		}
	} catch(error) {}
}

// Punt d'entrada
function showEnDirecte(elemId, urlData, pWhereAmI) {
	//agafem l'hora i creem el timestamp
	loadServerTimestamp(vUrlTime,"GetTime");
	
	//mirem si el programa en emissió està icatitzat
	setElementId(elemId);
	setUrlProgramaED(urlData);
	if (pWhereAmI==undefined){pWhereAmI='HomeCR';}//Default
	setWhereAmI(pWhereAmI);
	loadModulEnDirecte();
	setInterval("loadModulEnDirecte()",timerIntervalRefresher); //cada 2 minuts
}

function loadServerTimestamp(urlTime,methodId) {
	loadXMLDoc(urlTime,false,methodId);
}

//
function genericFunctionGetTime(idMethod,result) {
	try {
		if(result && result != null) {
			var dataSistema = result.firstChild.attributes.getNamedItem("actual").value; //OK
			var aDataSistema = dataSistema.split("-");
			var hora = aDataSistema[0];
			var minut = aDataSistema[1];
			var segon = aDataSistema[2];
			
			var time = (parseInt(aDataSistema[0])*3600) + (parseInt(aDataSistema[1])*60) + (parseInt(aDataSistema[2]));
			timestamp = Math.floor(time / timerInterval);
			dataTimestamp = aDataSistema[3];
		}
	} catch (error) {
		timestamp=0;
		dataTimestamp=0;
	}
	setTimeStampED(timestamp);
	setDataTimeStampED(dataTimestamp);
}

//
function loadModulEnDirecte() {
	timestamp = getTimeStampED();
	dataTimestamp= getDataTimeStampED();
	urlData = getUrlProgramaED();
	urlDataTimestamp = urlData+'?dummy='+dataTimestamp+''+timestamp;
	loadXMLDoc(urlDataTimestamp,false,"GetModulED");
	timestamp++;
	setTimeStampED(timestamp);
}

// function with the logic to know if show or hide the "En Directe" module
//TODO: mirar el repintat...
function genericFunctionGetModulED(idMethod,result) {
	try {
		var rootElement = result.documentElement;
		var elemId = getElementId();
		var vWhereAmI = getWhereAmI(); //per saber on soc (home CR, player, etc...)

		if(rootElement && rootElement != null) {
			var elemDescProg = rootElement.getElementsByTagName("DESCPRG")[0];
	
			if(elemDescProg && elemDescProg != null && elemDescProg.firstChild) {
				var descProg = elemDescProg.firstChild.data;
				//si no hi ha aquest camp el programa no te un endirecte
				if (descProg.length > 0) {
					//eliminem els corxets finals
					if (descProg.indexOf("[") > -1 ) {
						descProg = descProg.split(" [")[0];
					}
					
					//agafar la informacio dels camps
					var textEnDirecte = descProg;
					var elemIdProg = rootElement.getElementsByTagName("IDPRG")[0];
					var idProg;
					
					if(elemIdProg && elemIdProg != null && elemIdProg.firstChild) {
						idProg = elemIdProg.firstChild.data;
					}
					
					// Pintem la info
					showModuleED(vWhereAmI, elemId, idProg, textEnDirecte);
				} else {
					hideModuleED(vWhereAmI, elemId);
				}
			} else {
				hideModuleED(vWhereAmI, elemId);
			}
		}
	} catch(error) {
	}
}


// Gets the actual location (HomeCR, PlayerCR,..) and shows the specific module
function showModuleED(pWhereAmI, elemId, idProg, textEnDirecte){
	
	if (getLastProgramIdED() != idProg){
		switch (pWhereAmI){
			case 'HomeCR':
				var urlImatge = getEndirecteImgUrl(idProg);
				var contentEnDirecte = ''+
					'<div class="dest_directe">' +
						'<div class="dest_directe_block">' +
							'<div class="left"><a href="/endirecte/" title="En directe" target="_blank"><img src="/img/cr_directe_dest.gif" alt="En directe" border="0" /></a></div>' + 
							'<div class="left titol"><h2><a href="/endirecte/" title="En directe" target="_blank"><span class="dest">'+textEnDirecte+'</span><br />Mira la ràdio en imatges i publica les teves opinions.</a></h2></div>' + 
							'<div class="img_colD"><a href="/endirecte/" title="En directe" target="_blank"><img border="0" height="43" width="55" alt="" src="'+urlImatge+'" /></a></div>' + 
						'</div>' + 
					'</div>';						
				document.getElementById(elemId).innerHTML = contentEnDirecte;
				document.getElementById(elemId).style.display = "block";						
				break;
				
			case 'PlayerCR':
				var msgStr = "Mira la ràdio i publica les teves opinions";
				contentEnDirecte= "<b>"+textEnDirecte+"</b><br />"+msgStr;
				document.getElementById(elemId).innerHTML = contentEnDirecte;
				var t = setTimeout(showMoscaPlayerED,moscaDelay);
				break;
		}
		setLastProgramIdED(idProg);
	}
		
}

// helper function to show the PlayerCR's "mosca"
function showMoscaPlayerED(){
	document.getElementById('mosca').className = 'mosca';	
}

// Gets the actual location (HomeCR, PlayerCR,..) and hides the specific module
function hideModuleED(pWhereAmI, elemId){
	if (getLastProgramIdED() != 0){
		switch (pWhereAmI){
			case 'HomeCR':
				document.getElementById(elemId).innerHTML = "";
				document.getElementById(elemId).style.display = "none";
				break;
			case 'PlayerCR':
				document.getElementById(elemId).innerHTML = "";
				document.getElementById(elemId).className = 'moscaHidden';
				break;
		}
		setLastProgramIdED(0);
	}	
}

function getEndirecteImgUrl(idProg) {
	var urlImg = '/endirecte/img/thumb_programa'+idProg+'.jpg';
	return urlImg;
}
