/*
	Variable: actual
		Indica el elemento del carrusel que el usuario está viendo en cada momento. Su valor se inicia en 0, por lo que el predeterminado de 1 se corresponde al 2º elemento.
*/
var actual = 1;
/*
	Variable: fondo
		Contiene la ruta de la imagen de fondo del elemento activo del carrusel, y que usaremos en el script que arregla el bug de los PNG en Internet Explorer 6.
*/
var fondo;




/*
	Class: CARRUSEL
		Maneja el comportamiento del carrusel de la página de inicio.
*/
var CARRUSEL = {

	/*
		Function: inicio
			Añade los eventos ONMOUSEDOWN Y ONFOCUS a todas las imágenes del carrusel y a los enlaces de "anterior" y "siguiente".
		
		See Also:
			- <anterior>
			- <siguiente>
			- <actualiza>
	*/
	inicio : function() {
		// creamos la variable que controlará si se ha disparado el ONCLICK o no
		var disparado = false;
		// añadimos ONMOUSEDOWN, ONCLICK y ONFOCUS a todos las imágenes de la derecha del carrusel
		var enlaces = document.getElementById('lista-carrusel').getElementsByTagName('li');
		for (i=0;i<enlaces.length;i++) {
			// recogemos el enlace previo al activo
			if (enlaces[i].className == 'activa')
				var previo = enlaces[(i==0)?(enlaces.length-1):(i-1)];
			// recogemos el último enlace del carrusel
			if (i == (enlaces.length-1))
				var ultimo = enlaces[i];
			enlaces[i].getElementsByTagName('a')[0].onmousedown = function() {
				disparado = true;
				CARRUSEL.actualiza(this.parentNode);
				return false;
			}
			enlaces[i].getElementsByTagName('a')[0].onclick = function() {
				return false;
			}
			enlaces[i].getElementsByTagName('a')[0].onfocus = function() {
				if (!disparado) {
					if (this.parentNode != previo)
						CARRUSEL.anterior();
					this.onmousedown();
				}
				disparado = false;
			}
		}
		// añadimos ONBLUR al último banner
		ultimo.getElementsByTagName('a')[1].onblur = function() {
			document.getElementById('noticias').getElementsByTagName('a')[0].focus();
		}
		// si estamos en IE6, actualizamos la variable que contiene la URL de la imagen de fondo
		if (ie6)
			fondo = enlaces[actual].getElementsByTagName('a')[0].currentStyle.backgroundImage.split('"')[1];
		// añadimos el ONCLICK a los enlaces de anterior y siguiente
		enlaces = document.getElementById('contenedor-novedades').getElementsByTagName('ol')[0].getElementsByTagName('a');
		enlaces[0].onclick = function() {
			CARRUSEL.anterior();
			return false;
		}
		enlaces[1].onclick = function() {
			CARRUSEL.siguiente();
			return false;
		}
	},
	
	/*
		Function: anterior
			Muestra la imagen anterior en el carrusel
		
		See Also:
			- <inicio>
			- <desactiva>
			- <activa>
			- <mueve>
	*/
	anterior : function() {
		// recorremos todas las imágenes del carrusel
		var enlaces = document.getElementById('lista-carrusel').getElementsByTagName('li');
		for (i=0;i<enlaces.length;i++) {
			// cuando encontremos la que está activa
			if (enlaces[i].className == 'activa') {
				// desactivamos la actual
				CARRUSEL.desactiva(enlaces[i]);
				// si la imagen activa es la de en medio o la de arriba, activamos la de abajo
				if (i < (enlaces.length-1))
					CARRUSEL.activa(enlaces[i+1]);
				// movemos la primera imagen al final del carrusel
				CARRUSEL.mueve(enlaces[0],'final');
				// si la imagen activa es la de abajo, activamos la que acabamos de mover
				if (i == (enlaces.length-1))
					CARRUSEL.activa(enlaces[enlaces.length-1]);
			}
		}
	},
	
	/*
		Function: siguiente
			Muestra la imagen siguiente en el carrusel
		
		See Also:
			- <inicio>
			- <desactiva>
			- <activa>
			- <mueve>
	*/
	siguiente : function() {
		// recorremos todas las imágenes del carrusel
		var enlaces = document.getElementById('lista-carrusel').getElementsByTagName('li');
		for (i=0;i<enlaces.length;i++) {
			// cuando encontremos la que está activa
			if (enlaces[i].className == 'activa') {
				// desactivamos la actual
				CARRUSEL.desactiva(enlaces[i]);
				// si la imagen activa es la de en medio o la de abajo, activamos la de arriba
				if (i > 0)
					CARRUSEL.activa(enlaces[i-1]);
				// movemos la última imagen al principio del carrusel
				CARRUSEL.mueve(enlaces[enlaces.length-1],'inicio');
				// si la imagen activa es la de arriba, activamos la que acabamos de mover
				if (i < 1)
					CARRUSEL.activa(enlaces[0]);
			}
		}
	},
	
	/*
		Function: actualiza
			Actualiza el carrusel activando la imagen que le llega como parámetro.
		
		Parameters:
			cual - Imagen que ha de activarse en el carrusel (un <A> en el HTML)
		
		See Also:
			- <inicio>
			- <activa>
			- <desactivaTodas>
	*/
	actualiza : function(cual) {
		// desactivamos todas las imágenes
		CARRUSEL.desactivaTodas();
		// activamos el seleccionado
		CARRUSEL.activa(cual);
	},
	
	/*
		Function: activa
			Activa la imagen del carrusel que le llegue como parámetro.			
		
		Parameters:
			cual - Imagen que ha de activarse en el carrusel (un <A> en el HTML)
		
		See Also:
			- <anterior>
			- <siguiente>
			- <actualiza>
	*/
	activa : function(cual) {
		// asignamos la clase "activa" al LI que corresponda
		cual.className = 'activa';
		// si estamos en IE6, aplicamos el filtro para la transparencia de los PNG
		if (ie6) {
			cual.getElementsByTagName('a')[0].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + fondo + '", sizingMethod="crop")';				
			cual.getElementsByTagName('a')[0].style.backgroundImage = 'url("")';
		}
	},
	
	/*
		Function: desactiva
			Desactiva la imagen del carrusel que le llegue como parámetro.			
		
		Parameters:
			cual - Imagen que ha de desactivarse en el carrusel (un <A> en el HTML)
		
		See Also:
			- <anterior>
			- <siguiente>
			- <desactivaTodas>
	*/
	desactiva : function(cual) {
		// eliminamos la clase "activa" del LI que corresponda
		cual.className = '';
		// si estamos en IE6, eliminamos el filtro para la transparencia de los PNG
		if (ie6)
			cual.getElementsByTagName('a')[0].style.filter = '';
	},
	
	/*
		Function: desactivaTodas
			Desactiva todas las imágenes del carrusel.
		
		See Also:
			- <actualiza>
			- <desactiva>
	*/
	desactivaTodas : function() {
		// recorremos todos los LI llamando a la función que los desactiva
		var elementos = document.getElementById('lista-carrusel').getElementsByTagName('li');
		for (j=0;j<elementos.length;j++) {
			CARRUSEL.desactiva(elementos[j]);
		}
	},
	
	/*
		Function: mueve
			Mueve la imagen al principio o final de carrusel en función de los parámetros que le lleguen.
		
		Parameters:
			cual - Imagen que ha de moverse en el carrusel (un <A> en el HTML)
			donde - Cadena que indica si la imagen ha de moverse al inicio o al final del carrusel
		
		See Also:
			- <anterior>
			- <siguiente>
	*/
	mueve : function(cual,donde) {
		// clonamos el elemento que nos llega
		var clonado = cual.cloneNode(true);
		// replicamos su evento ONMOUSEDOWN
		clonado.getElementsByTagName('a')[0].onmousedown = cual.getElementsByTagName('a')[0].onmousedown;
		// replicamos su evento ONCLICK
		clonado.getElementsByTagName('a')[0].onclick = cual.getElementsByTagName('a')[0].onclick;
		// replicamos su evento ONFOCUS
		clonado.getElementsByTagName('a')[0].onfocus = cual.getElementsByTagName('a')[0].onfocus;
		// si tiene evento ONBLUR, lo replicamos
		if (cual.getElementsByTagName('a')[1].onblur != null)
			clonado.getElementsByTagName('a')[1].onblur = cual.getElementsByTagName('a')[1].onblur;
		// insertamos el elemento en función del parámetro "donde"
		if (donde == 'inicio')
			cual.parentNode.insertBefore(clonado,cual.parentNode.firstChild);
		else if (donde == 'final')
			cual.parentNode.appendChild(clonado);
		// eliminamos el elemento que nos llega
		cual.parentNode.removeChild(cual);
	}
	
}




/*
	Class: TODAS_LAS_SERIES
		Gestiona el área de "Todas las series" de la página de inicio.
*/
var TODAS_LAS_SERIES = {
	
	/*
		Function: inicio
			Añade el evento ONCLICK a todos los enlaces de la paginación, si es que la hay, de la zona de "Todas las series".
		
		See Also:
			- <ejecutar>
	*/
	inicio : function() {
		// recorremos todos los enlaces de la paginación
		if (document.getElementById('todas-las-series').getElementsByTagName('ul').length > 1) {
			var enlaces = document.getElementById('todas-las-series').getElementsByTagName('ul')[1].getElementsByTagName('a');
			for (i=0;i<enlaces.length;i++) {
				enlaces[i].onclick = function() {
					TODAS_LAS_SERIES.ejecutar(this);
					return false;
				}
			}
		}
	},
	
	/*
		Function: ejecutar
			Lanza la llamada al AJAX que gestiona la paginación.
			
		Parameters:
			cual - Enlace que ha disparado el evento ONCLICK.
		
		See Also:
			- <inicio>
	*/
	ejecutar : function(cual) {
		var parametros = cual.href.split('/');
		// obtenemos las variables que necesitará el AJAX (ID de serie y página que hay que cargar)
		var variables = new Array(2);
		variables[0] = parametros[parametros.length-1];
		// llamamos al AJAX
		var instanciaSeries;
		AJAX.cargaDatos('series',instanciaSeries,variables);
	}
	
}




/*
	Class: PROGRAMACION_TV
		Gestiona el área de "Programación TV" de la página de inicio.
*/
var PROGRAMACION_TV = {
	
	/*
		Function: inicio
			Añade el evento ONCLICK a las pestañas de las cadenas y a los enlaces de los programas, y muestra inicialmente la programación de Clan.
		
		See Also:
			- <actualiza>
	*/
	inicio : function() {
		// añadimos el evento ONLCIK a dos de las pestañas de Clan, La 1 y La 2
		document.getElementById('programacion-tv').getElementsByTagName('a')[1].onclick = function() {
			PROGRAMACION_TV.actualiza(this);
			return false;	
		}
		// recorremos todos los enlaces de la programación
		var enlaces = document.getElementById('programacion-tv').getElementsByTagName('a');
		for (i=0;i<enlaces.length;i++) {
			if (i<2) {
				// si es una pestaña, llamamos a la función que las actualiza
				document.getElementById('programacion-tv').getElementsByTagName('a')[0].onclick = function() {
					PROGRAMACION_TV.actualiza(this);
					return false;	
				}
			} else if (enlaces[i].id != 'enlace-programacion-completa') {
				enlaces[i].onclick = function() {
					// si no, le asignamos una llamada de AJAX para recuperar los datos de la serie
					var direccion = this.href;
					var instanciaSerie;
					AJAX.cargaDatos('serie',instanciaSerie,direccion);
					return false;
				}
			}			
		}
		// añadimos la clase "clan" para que sólo se muestre la programación de Clan
		document.getElementById('programacion-tv').className = 'CTV_CLANTV';
	},
	
	/*
		Function: actualiza
			Actualiza las pestañas de las cadenas en función de la selección del usuario.
		
		Parameters:
			cual - Pestaña seleccionada por el usuario (un <A> en el HTML)
		
		See Also:
			- <inicio>
	*/
	actualiza : function(cual) {
		// actualizamos la clase del DIV con la del A seleccionado
		cual.parentNode.parentNode.parentNode.className = cual.parentNode.className;
		// clonamos el A seleccionado
		var clonado = cual.cloneNode(true);
		// recogemos el STRONG actual de la lista
		var estrong = cual.parentNode.parentNode.parentNode.getElementsByTagName('strong')[0];
		// transformamos su contenido en URL
		var uerreele = estrong.getElementsByTagName('span')[0].innerHTML.toLowerCase().replace(/ /gi,'-');
		// comprobamos qué cadena hemos seleccionado
		if (clonado.title.indexOf('La 1') != -1) {
			// modificamos el TITLE y HREF del elemento clonado, y preparamos la cadena que asignaremos más adelante al STRONG
			clonado.title = clonado.title.replace(/La 1/gi,estrong.getElementsByTagName('span')[0].innerHTML);
			clonado.href = clonado.href.replace(/la-1/gi,uerreele);
			var cadena = '<span>La 1</span>';
		} else if (clonado.title.indexOf('La 2') != -1) {
			clonado.title = clonado.title.replace(/La 2/gi,estrong.getElementsByTagName('span')[0].innerHTML);
			clonado.href = clonado.href.replace(/la-2/gi,uerreele);
			var cadena = '<span>La 2</span>';
		} else {
			clonado.title = clonado.title.replace(/Clan/gi,estrong.getElementsByTagName('span')[0].innerHTML);
			clonado.href = clonado.href.replace(/clan/gi,uerreele);
			var cadena = '<span>Clan</span>';	
		}
		// modificamos el innerHTML del elemento clonado
		clonado.innerHTML = estrong.innerHTML;
		// replicamos el evento ONCLICK del enlace
		clonado.onclick = cual.onclick;
		// lo reemplazamos por el enlace
		estrong.parentNode.replaceChild(clonado,estrong);
		// creamos un STRONG
		var estrong = document.createElement('strong');
		// le asignamos el valor que le corresponde
		estrong.innerHTML = cadena;
		// reemplazamos el A seleccionado por el STRONG
		cual.parentNode.replaceChild(estrong,cual);
	}
	
}

var cookies={
		init:function(str){
			 $.cookie("cookieFlash", str, {path: '/', expires: 1 });	
		}	
	}




addLoadEvent(function() {
	CARRUSEL.inicio();
});

addLoadEvent(function() {
	TODAS_LAS_SERIES.inicio();
});

addLoadEvent(function() {
	PROGRAMACION_TV.inicio();
});

addLoadEvent(function() {
	copyAdsCode();
});