parrilla = {

	moverIzquierda : function(){

		$("div.mover_canales .flecha_izq").each(function(e){
			$(this).unbind("click");
			$(this).bind("click", function(i){
				// Id del div padre del enlace pulsado
				var div_actual = $(this).parent().attr("id");
		
				// Id del div anterior al que contiene el enlace pulsado
				var div_prev = $("#"+div_actual).prev().attr("id");				

				// Se comprueba si el div anterior es el primero, ya que si es asi habra que eliminar del actual el enlace de mover a la izquierda
				var div_primero = $("#"+div_prev).prev().attr("id");

				// Se inserta el div a tratar delante del div que tiene a la izquierda
                $("#"+div_actual).fadeOut("slow", function(a){
                    $("#"+div_actual).insertBefore("#"+div_prev);
					if(div_primero == null || div_primero == ""){
						// Se trata del primer div porque no tiene anterior, por tanto, se borra el enlace para mover a izquierda del div actual
						$("#"+div_actual+" .flecha_izq").hide();

						// Ademas, si el elemento anterior es el primero hay que añadirle el enlace de mover a la izquierda
						$("#"+div_prev + " .flecha_izq").show();
					}

					// Se muestra el enlace para mover a la derecha si lo tiene desactivado. Esto se hace para el ultimo div
					if($("#"+div_actual + " .flecha_der").is(":hidden")){
						$("#"+div_actual + " .flecha_der").show();

						// Se oculta el enlace para mover a la derecha del enlace que pasa a ser el ultimo
						$("#"+div_prev + " .flecha_der").hide();
					}
					
                    $("#"+div_actual).fadeIn("slow");

                });

				// Se actualizan las coockies
				var milistaTipos = "";
				var ckArr = document.cookie.split("; ");

				//xref en cookie
				for (var nBucle=0;nBucle<ckArr.length;nBucle++){
					var aCookie = ckArr[nBucle].split("=");
					if ((aCookie[0].substring(0,8)) == 'milistaC'){
						if(aCookie[1]!=undefined)
							milistaTipos = aCookie[1];
					}
				}

				var i=0;
				var resultado=false;
				var arraytipos =milistaTipos.split("-");
				while(resultado==false && i < arraytipos.length){
					if(arraytipos[i] == div_actual)
						resultado=true;
					else
						i++;
				}

				if(resultado){
					ELEArr = milistaTipos.split("-");
					milistaTipos="";
					for(var i=0;i<ELEArr.length;i++){
						if(ELEArr[i+1] == div_actual){
							if(milistaTipos!="")
								milistaTipos = milistaTipos + "-";
							milistaTipos = milistaTipos + ELEArr[i+1];
							milistaTipos = milistaTipos + "-";
							milistaTipos = milistaTipos + ELEArr[i];
							i++;
						}
						else{
							if(milistaTipos!="")
								milistaTipos = milistaTipos + "-";
							milistaTipos = milistaTipos + ELEArr[i];
						}
					}
					var date = new Date();
         			date.setTime((date.getTime() + (8760*60*60*1000)));
			        document.cookie = "milistaC=" + milistaTipos+"; path=/; expires="+date.toGMTString();	
				}

				$(document).ready(parrilla.recargar);

				return false;
	
			})
		})
	},

	moverDerecha : function(){

		$("div.mover_canales .flecha_der").each(function(e){
			$(this).unbind("click");
			$(this).bind("click", function(i){
				// Id del div padre del enlace pulsado
				var div_actual = $(this).parent().attr("id");
		
				// Id del div siguiente al que contiene el enlace pulsado
				var div_next = $("#"+div_actual).next().attr("id");

				// Se comprueba si el div siguiente es el ultimo, ya que si es asi habra que eliminar del actual el enlace de mover a la derecha
                var div_ultimo = $("#"+div_next).next().attr("id");

				// Se inserta el div a tratar delante del div que tiene a la izquierda
                $("#"+div_actual).fadeOut("slow", function(a){
					$("#"+div_actual).insertAfter("#"+div_next);
					if(div_ultimo == null || div_ultimo == ""){
						// Se trata del ultimo div porque no tiene siguiente, por tanto, se borra el enlace para mover a derecha del div actual
						$("#"+div_actual+" .flecha_der").hide();

						// Ademas, si el elemento siguiente es el ultimo hay que añadirle el enlace de mover a la derecha
						$("#"+div_next + " .flecha_der").show();

					}

					// Se muestra el enlace para mover a la izquierda si lo tiene desactivado. Esto se hace para el primer div
					if($("#"+div_actual + " .flecha_izq").is(":hidden")){
						$("#"+div_actual + " .flecha_izq").show();

						// Se oculta el enlace para mover a la izquierda del enlace que pasa a ser el primero
						$("#"+div_next + " .flecha_izq").hide();
					}
                    $("#"+div_actual).fadeIn("slow");

                });

				// Se actualizan las coockies
				var milistaTipos = "";
				var ckArr = document.cookie.split("; ");

				//xref en cookie
				for (var nBucle=0;nBucle<ckArr.length;nBucle++){
					var aCookie = ckArr[nBucle].split("=");
					if ((aCookie[0].substring(0,8)) == 'milistaC'){
						if(aCookie[1]!=undefined)
							milistaTipos = aCookie[1];
					}
				}

				var i=0;
				var resultado=false;
				var arraytipos =milistaTipos.split("-");
				while(resultado==false && i < arraytipos.length){
					if(arraytipos[i]==div_actual)
						resultado=true;
					else
						i++;
				}

				if(resultado){
					ELEArr = milistaTipos.split("-");
					milistaTipos="";
					for(var i=0;i<ELEArr.length;i++){
						if(ELEArr[i] == div_actual){
							if(milistaTipos!="")
								milistaTipos = milistaTipos + "-";
							if(ELEArr[i+1]){
								milistaTipos = milistaTipos + ELEArr[i+1];
								milistaTipos = milistaTipos + "-";
							}
							milistaTipos = milistaTipos + ELEArr[i];
							i++;
						}
						else{
							if(milistaTipos!="")
								milistaTipos = milistaTipos + "-";
							milistaTipos = milistaTipos + ELEArr[i];
						}
					}	
				    var date = new Date();
         			date.setTime((date.getTime() + (8760*60*60*1000)));
			        document.cookie = "milistaC=" + milistaTipos+"; path=/; expires="+date.toGMTString();
				}

				$(document).ready(parrilla.recargar);

				return false;
			})
		})
	},

	eliminar : function(){

        $(".borrarC").each(function(e){
			$(this).unbind("click");
            $(this).bind("click", function(i){
                // Id del div padre del enlace pulsado
                var div_actual = $(this).parent().attr("id");

				// Si el elemento a eliminar es el primero entonces hay que quitar el enlace para mover a izquierda del elemento que pasa a ser el primero
				// Si el elemento a eliminar es el ultimo entonces hay que quitar el enlace para mover a derecha del elemento que pasa a ser el ultimo
				var div_prev = $("#"+div_actual).prev().attr("id");
				var div_next = $("#"+div_actual).next().attr("id")
				if(div_prev == null || div_prev == "")
					$("#"+div_next + " .flecha_izq").hide();

				if(div_next == null || div_next == "")
					$("#"+div_prev + " .flecha_der").hide();

                // Se elimina el div en cuestion
				$("#"+div_actual).fadeOut("slow", function(a){
					$("#"+div_actual).remove();
				});

				// Se actualizan las coockies
				var milistaTipos = "";
				var ckArr = document.cookie.split("; ");

				// xref en cookie
				for (var nBucle=0;nBucle<ckArr.length;nBucle++){
					var aCookie = ckArr[nBucle].split("=");
					if ((aCookie[0].substring(0,8)) == 'milistaC'){
						if(aCookie[1]!=undefined)
						milistaTipos = aCookie[1];
					}
				}

				var i = 0;
				var resultado = false;
				var arraytipos = milistaTipos.split("-");
				while(resultado == false && i < arraytipos.length){
					if(arraytipos[i] == div_actual)
						resultado = true;
					else
						i++;
				}

				if(resultado){
					ELEArr = milistaTipos.split("-");
					milistaTipos = "";
					for(var i = 0; i < ELEArr.length; i++){
						if(ELEArr[i] != div_actual){
							if(milistaTipos!="")
								milistaTipos = milistaTipos + "-";
							milistaTipos = milistaTipos + ELEArr[i];
						}
					}
					var date = new Date();
         			date.setTime((date.getTime() + (8760*60*60*1000)));
			        document.cookie = "milistaC=" + milistaTipos+"; path=/; expires="+date.toGMTString();
				}

				// Se recalcula el ancho de la lista que contiene los canales
				var ancho = $("div.mover_canales ul").css("width");
                var nuevoAncho = parseInt(ancho.replace("px", "")) - 83;
				if(nuevoAncho <= 0)
					nuevoAncho = 0;
                $("div.mover_canales ul").css("width", nuevoAncho+"px");

				$(document).ready(parrilla.recargar);

				return false;
            })
        })
    },

	insertar : function(){

		$("#lista_canales li a:first-child").each(function(e){
			$(this).unbind("click");
			$(this).bind("click", function(i){

				/* Se comprueba si el canal se encuentra en la lista de canales seleccionados por el usuario, ya que de ser asi no habra que darle la 
				funcionalidad para que pueda ser añadido */
				var id_canal = $(this).attr("id");
				var existe = $("div.mover_canales #opcionC"+id_canal).attr("id");
				if(existe == null || existe == ""){
					var title_canal = $(this).attr("title");
					var html_canal = $(this).html();

					// Se genera el código html que hay que insertar en el conjunto de canales seleccionados por el usuario
					var nuevo_canal = '<li style="display:none" id="opcionC'+id_canal+'">';
					nuevo_canal += '<a href="" title="'+title_canal+'">'+html_canal+'</a> ';
				
					/* Como hay que añadir el elemento en cuestion al final de la lista de canales seleccionados por el usuario, hay que modificar el 
					ultimo elemento de esta lista para que pase a tener enlace para realizar movimiento hacia la derecha. Si no existen canales en esta lista
					entonces hay que añadir el nuevo elemento sin enlace para mover a izquierda ni enlace para mover a derecha */
					var id_ultimo = $("div.mover_canales li.mensaje").prev().attr("id");
					if(id_ultimo == null || id_ultimo == "")
						nuevo_canal += '<a style="display: none;" href="" title="mover a la izquierda" id="'+id_canal+'" class="flecha_izq">mover a la izquierda</a>' ;
					else{
						nuevo_canal += '<a href="" title="mover a la izquierda" id="'+id_canal+'" class="flecha_izq">mover a la izquierda</a> ' ;
						$("#"+id_ultimo + " .flecha_der").show();
					}

					nuevo_canal += '<a style="display: none;" href="" title="mover a la derecha" id="'+id_canal+'" class="flecha_der">mover a la derecha</a> ';
					nuevo_canal += '<a href="" title="borrar" id="'+id_canal+'" class="borrarC eliminar">eliminar</a> ';
					nuevo_canal += '</li>';

					// Finalmente se añade el codigo creado anteriormente en la lista de canales seleccionados por el usuario
					$("div.mover_canales li.mensaje").before(nuevo_canal);
					
					$("#opcionC"+id_canal).fadeIn("slow");


					// Se actualizan las coockies
					var milistaTipos = "";
					var ckArr = document.cookie.split("; ");

					// xref en cookie
					for (var nBucle=0;nBucle<ckArr.length;nBucle++){
  						var aCookie = ckArr[nBucle].split("=");
						if ((aCookie[0].substring(0,8)) == 'milistaC'){
							if(aCookie[1]!=undefined)
								milistaTipos = aCookie[1];
						}
					}

					//nuevo xref
					xrefNuevo = 'opcionC' + id_canal;

					var i=0;
					var resultado=false;
					var arraytipos =milistaTipos.split("-");
					while(resultado==false && i < arraytipos.length){
						if(arraytipos[i]==xrefNuevo)
							resultado=true;
						else
							i++;
					}

					if(resultado){
						//         si lo encuentra ya en la lista  que no haga nada
					}
					else{
						//actualizar lista  en cookie
						if(milistaTipos!="" && milistaTipos!=null)
							milistaTipos=milistaTipos+"-";
						milistaTipos = milistaTipos + xrefNuevo;
						var date = new Date();
         				date.setTime((date.getTime() + (8760*60*60*1000)));
			         	document.cookie = "milistaC=" + milistaTipos+"; path=/; expires="+date.toGMTString();
					}

					// Se recargan las funciones propias para actualizar en nuevo elemento
					$(document).ready(parrilla.moverIzquierda);
					$(document).ready(parrilla.moverDerecha);
					$(document).ready(parrilla.eliminar);

					// Se recalcula el ancho de la lista que contiene los canales
    	            var ancho = $("div.mover_canales ul").css("width");
        	        var nuevoAncho = parseInt(ancho.replace("px", "")) + 83;
	                $("div.mover_canales ul").css("width", nuevoAncho+"px");

					$(document).ready(parrilla.recargar);

				}	
				return false;
			})
		})
	},

	recargar : function(){
		// Se obtienen los canales a incluir en la llamada ajax
		var listaCanales = cargar_cookie("milistaC");
		var canalesAjax = "";
		if(listaCanales != null){
			var canalesAjaxAux = listaCanales.split("-");
			for(var i = 0; i < canalesAjaxAux.length; i++){
				if(i != 0 && i != 1)
					canalesAjax += canalesAjaxAux[i].replace("opcionC","") + "-";
			}
			if(canalesAjax != "")
				canalesAjax = canalesAjax.substr(0, canalesAjax.length - 1);
		}

		// Se hace una llamada ajax para cargar todo el bloque de programaciones: mañana, tarde y noche, para todos los canales de la cookie
		// El valor devuelto por la llamada ajax contiene los pases para todas las franjas horarias. Se deja en un div temporal
		// Módulo a utilizar en la llamada ajax
		var modulo = 'PARParrillaCanalesOU';

		// Contenedor temporal, parámetros y llamada.
		var cnt = 'temporal_pases';
		var params = "fechaEntrada%3D"+fechaEntrada.replace(/_/g,"-")+"%26horaEntrada%3D"+horaEntrada+"%26franja%3D"+"manana-tarde-noche"+"%26canales%3D"+canalesAjax+"%26vista%3D"+"completa";
		aP = "modulo=" + modulo + "&params=" + params;

		// Una vez realizada la petición ajax se copia cada div resultante (almacenado en el div temporal) sobre su franja correspondiente
		var fin = function(){
			// Se carga cada franja y se modifica su franja horaria en función de la que venga en la llamada ajax
			// Mañana
			$("#franja_maniana_estirar").html($("#temporal_franja_maniana").html());
			$("#franja_maniana_estirar").css("background-position", $("#temporal_franja_maniana").css("background-position"));
			$("#temporal_franja_maniana").html("");

			// Tarde
			$("#franja_tarde_estirar").html($("#temporal_franja_tarde").html());
			$("#franja_tarde_estirar").css("background-position", $("#temporal_franja_tarde").css("background-position"));
			$("#temporal_franja_tarde").html("");

			// Noche
			$("#franja_noche_estirar").html($("#temporal_franja_noche").html());
			$("#franja_noche_estirar").css("background-position", $("#temporal_franja_noche").css("background-position"));
			$("#temporal_franja_noche").html("");

			// Se marcan los colores de las opciones marcadas
			$(document).ready(rules_programacion_parrilla.tratar_prog_concapa);
            $(document).ready(rules_programacion_parrilla.cargar_eleccion);

			// Se ejecuta una llamada ajax para recargar el menú de canales de la parte superior de la pantalla
			modulo = 'PARMenuCanalesSuperiorOU';
			cnt = 'menu_canales_superior';
			params = "canales%3D"+canalesAjax;
			var fin2 = function(){
				$(document).ready(rules_canales_dia.click);
			}

			aP = "modulo=" + modulo + "&params=" + params;
			a = new Ajax();
			imagen = '<div id="cargando" class="preload"><img src="/im/loading.gif" alt="cargando"><p>Cargando...</p></div>';
			a.replace("/modulo/index.html",aP,imagen,cnt,"GET",fin2);
		}

		a = new Ajax();
		imagen = '<div id="cargando" class="preload"><img src="/im/loading.gif" alt="cargando"><p>Cargando...</p></div>';
		a.replace("/modulo/index.html",aP,imagen,cnt,"GET",fin);
	}
}

$(document).ready(parrilla.moverIzquierda);
$(document).ready(parrilla.moverDerecha);
$(document).ready(parrilla.insertar);
$(document).ready(parrilla.eliminar);
