/*
 *  El javascript se encarga de gestionar el movimiento vertical de la parrilla
 *  Es importante que no existan class repetidos de los que aquí se usan, para que no dejen de funcionar
 *  Y que no se añadan ninguna funcion que pueda modificar el valor de las variables globales
 */

/**
 * Esta función se usa porque en IE no funciona el GetElementByClassName
 */
if(!document.getElementsByClassName){
    document.getElementsByClassName = function(className){
        var array = [];
        var element = arguments[1] || document.documentElement;
        for(var elem = element.firstChild; elem != null; elem = elem.nextSibling){
            if(elem.nodeType != 1)continue;
            if(className==elem.className) array.push(elem);
            if(elem.hasChildNodes()) array = array.concat(arguments.callee(className, elem));
        }
        return array;
    }
}

var parrilla; //el div que contiene los canales y los programas
var arrayCanales; //elementos de la lista de canales
var listaCanales; //div que contiene los canales
var listaParrilla; //div que contiene los programas
var btnSubir; // botón flecha arriba
var btnBajar; // botón flecha arriba
var cualParrilla; //la usamos para saber que parrilla estamos usando(completa o recomendados)
var opciones; // parámetros para solicitar más canales
var primerCanal; // primer elemento de la lista
var ultimoCanal; // último elemento de la lista
var alto1Canal = 49; // alto de un canal, es el tamaño de las imagenes de los canales
var alto;  //alto del div de la parrilla
var numCanales; // número de canales
var margenSuperior = 0; //Posición de la esquina superior de la parrilla

/**
 * Funcion encargada de gestionar el movimiento
 */
function verticalSlider(opcionesRecibidas){
    //Asignación de variables de la parrilla completa
    opciones = opcionesRecibidas;
    parrilla = document.getElementById("verticalslider");
    arrayCanales = document.getElementsByClassName("canales");
    listaCanales = document.getElementById("listacanales");
    listaParrilla = document.getElementById("listaparrilla");
    btnSubir = document.getElementById("btnSubir");
    btnBajar = document.getElementById("btnBajar");
    numCanales = arrayCanales.length; //s
    alto = parrilla.offsetHeight //h
    if(alto==0){
        alto = 18.615384615384615384615384615385 * numCanales;
    }
    ultimoCanal = numCanales-1; //ts
    primerCanal = 0; //t
    if(opciones.mostrarParrillaAnterior){//posiciona la parrilla en el último elemento
        primerCanal = numCanales - Math.round(alto/alto1Canal);
        margenSuperior = (primerCanal*alto1Canal*-1); //inicialmente será 0 y luego lo iremos subiendo(restandole una cantidad=alto1Canal)
        listaCanales.style.marginTop = margenSuperior + "px";
        listaParrilla.style.marginTop = margenSuperior + "px";
    }
    //controlamos la presencia inicial de los iconos de direccion
    if (!opciones.menos && primerCanal<=0) {
        btnSubir.style.visibility = "hidden";
    }else{
        btnSubir.style.visibility = "visible";
    }
    //ocultamos el icono de bajar si hay menos de 4 elementos en la lista y no se pueden solicitar mas. 4 porque es el alto de la parrilla
    if(!opciones.mas && ultimoCanal-primerCanal<=4){
        btnBajar.style.visibility = "hidden";
    }else{
        btnBajar.style.visibility = "visible";
    }
}


// Función al pulsar sobre icono abajo
function pulsarAbajo(sesion){
    // Primero se solicita una carga de canales, si estamos al final de la lista y hay más canales por mostrar
    //alert("Primer:" +primerCanal +" UltimoCanal: " + ultimoCanal + "Alto: " + alto + "  Calculo: " +(ultimoCanal-(alto/alto1Canal)));
    if (primerCanal>=(ultimoCanal-(alto/alto1Canal)) && opciones.mas) {
        if(window.document.getElementById("parrillaCompleta")!=null){
            //Usuario identificado
            //mostrar reloj espera
            ponerReloj('pastillaCom');
            //solicitar mas canales
            var franja = document.getElementById("franjaHoraria").value;
            var param = '&paso=adelante&capa=0&franjaHoraria=' + franja;
            $.fn.cargarParrillaCompleta(opciones.url + param, sesion);
        }else{
            //Usuario sin identificar
            window.location = opciones.url+'&paso=adelante';
        }
    }else{
        // Si no hemos llegado al final de la lista, incrementamos el valor del primer canal
        primerCanal = (primerCanal>=ultimoCanal-alto/alto1Canal) ? primerCanal : primerCanal+1;
        //Movemos la parrilla
        margenSuperior = (primerCanal*alto1Canal*-1); //inicialmente será 0 y luego lo iremos subiendo(restandole una cantidad=alto1Canal)
        listaCanales.style.marginTop = margenSuperior + "px";
        listaParrilla.style.marginTop = margenSuperior + "px";
        //Borrar o mostrar iconos de dirección
        if ((primerCanal>=ultimoCanal-alto/alto1Canal) && !opciones.mas) {
            btnBajar.style.visibility = 'hidden';
        }
        if ((numCanales>5)) {
            btnSubir.style.visibility = 'visible';
        }
    }
}


// Función al pulsar sobre icono arriba
function pulsarArriba(sesion){
    // Primero se solicita una carga de canales, si estamos al final de la lista y hay más canales por mostrar
    if (primerCanal<=0 && opciones.menos) {
        if(window.document.getElementById("parrillaCompleta")!=null){
            //Usuario identificado
            var franja = document.getElementById("franjaHoraria").value;
            var param = '&paso=atras&capa=0&franjaHoraria=' + franja;
            //mostrar reloj espera
            ponerReloj('pastillaCom');
            //solicitar mas canales
            $.fn.cargarParrillaCompleta(opciones.url + param, sesion);
        }else{
            //Usuario sin identificar
            window.location = opciones.url+'&paso=atras';
        }
    }else{
        // Si no hemos llegado al principio de la lista, decrementamos el valor del primer canal
        primerCanal = (primerCanal<=0) ? 0 : primerCanal-1;

        //Movemos la parrilla
        margenSuperior = (primerCanal*alto1Canal*-1); //inicialmente será 0 y luego lo iremos subiendo(restandole una cantidad=alto1Canal)
        listaCanales.style.marginTop = margenSuperior + "px";
        listaParrilla.style.marginTop = margenSuperior + "px";

        //Borrar o mostrar iconos de dirección
        if (primerCanal<=0 && !opciones.menos){
            btnSubir.style.visibility = "hidden";
        }
        if ((numCanales>5)) {
            btnBajar.style.visibility = "visible";
        }
    }
}