﻿/* objeto Tablero Rugby */
var tableroRugby =
function(value, isActive) {

    this._value = value;
    this._estaActivo = isActive || true;
    this._cambioEncuentro = false;
    this._cambioIncidencias = false;
    this._cambioExtras = false;
    this._cambioFormaciones = false;
    this._tieneTiempo = true;

    /* TAG A ACTUALIZAR */

    if (this._value.cc.hasOwnProperty('tipoTablero')) {
        this.TAG_RESULTADOS = this._value.cc.tipoTablero + "res";
        this.TAG_INCIDENCIA = this._value.cc.tipoTablero + "i";
        this.TAG_ESTADO = this._value.cc.tipoTablero + "st";
        this.TAG_PERIODO = this._value.cc.tipoTablero + "p";
        this.TAG_TIEMPO = this._value.cc.tipoTablero + "t";
        this.TAG_GAMECAST = this._value.cc.tipoTablero + "gamec";
    }
    else {
        this.TAG_RESULTADOS = "res";
        this.TAG_INCIDENCIA = "i";
        this.TAG_ESTADO = "st";
        this.TAG_PERIODO = "p";
        this.TAG_TIEMPO = "t";
        this.TAG_GAMECAST = "gamec";
    }

    /* ******************** */


    this.setValue = function(valorActualizado) {
        try {
            if (valorActualizado.hasOwnProperty('cc')) { this._value.cc = valorActualizado.cc };
            if (valorActualizado.hasOwnProperty('encuentro')) { this._value.encuentro = valorActualizado.encuentro; this._cambioEncuentro = true; } else { this._cambioEncuentro = false; };
            if (valorActualizado.hasOwnProperty('ins')) { this._value.ins = valorActualizado.ins; this._cambioIncidencias = true; } else { this._cambioIncidencias = false; };
            if (valorActualizado.hasOwnProperty('fors')) { this._value.fors = valorActualizado.fors; this._cambioFormaciones = true; } else { this._cambioFormaciones = false; };
            if (valorActualizado.hasOwnProperty('extras')) { this._value.extras = valorActualizado.extras; this._cambioExtras = true; } else { this._cambioExtras = false; };
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.setValue', err) };
        }
    }
    this.cambiarActivo = function(isActive) {
        try {
            this._estaActivo = isActive;
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.estaActivo', err) };
        }
    }
    this.tieneTiempo = function() {
        return this._tieneTiempo;
    }

    this.estaActivo = function() {
        return this._estaActivo;

    }
    this.actualizarGamecast = function() {
        try {
            var oGamecast = jQuery("#" + this.TAG_GAMECAST + this._value.cc.id)[0];

            if ((oGamecast != undefined) && (this._value.encuentro.linkeable != undefined)) {
                if (this._value.encuentro.linkeable == "1") {
                    oGamecast.style.display = "block";
                }
                else {
                    oGamecast.style.display = "none";
                }
            }
            else { }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarGamecast', err) };
        }
    }
    this.actualizarIncidencias = function() {
        try {

            var oIncidencia = jQuery("#" + this.TAG_INCIDENCIA + this._value.cc.id)[0];
            if ((oIncidencia != undefined) && (this._value.ins[0].inc.cm != undefined)) {
                for (var i = 0; i < this._value.ins.length; i++) {
                    oIncidencia.innerHTML = this._value.ins[0].inc.mm + "' " + this._value.ins[0].inc.cm;
                }
            }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarIncidencias', err) };
        }
    }

    this.actualizarFormaciones = function() {
        try {

        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarFormaciones', err) };
        }
    }

    this.actualizarMarquesina = function() {
        try {
            //TODO
            var oMarquesina = jQuery("#" + "mq" + this._value.cc.id)[0];

            if ((oMarquesina != undefined) || (this._value.extras.mq != undefined)) {
                oMarquesina.innerHTML = this._value.extras.mq.texto;
            }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarMarquesina', err) };
        }
    }
    this.actualizarResultado = function() {

        try {

            var local, visitante;
            if ((this._value.encuentro.local.id != undefined) && (this._value.encuentro.visitante.id)) {

                local = jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.local.id)[0];
                visitante = jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.visitante.id)[0];

                if ((local != undefined) && (visitante != undefined)) {
                    local.innerHTML = this._value.encuentro.local.goles;
                    visitante.innerHTML = this._value.encuentro.visitante.goles;
                    if (this._value.encuentro.local.goles > this._value.encuentro.visitante.goles) {
                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.local.id).addClass("ganador");
                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.visitante.id).removeClass("ganador");
                    }
                    else if (parseInt(this._value.encuentro.local.goles) < parseInt(this._value.encuentro.visitante.goles)) {

                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.visitante.id).addClass("ganador");
                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.local.id).removeClass("ganador");
                    }
                    else {
                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.visitante.id).removeClass("ganador");
                        jQuery("#" + this.TAG_RESULTADOS + this._value.encuentro.local.id).removeClass("ganador");
                    }
                }
            }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarResultado', err) };
        }

    }
    this.actualizarEstado = function() {
        try {
            var estado;
            if (this._value.encuentro.estado != undefined) {
                estado = jQuery("#" + this.TAG_ESTADO + this._value.cc.id)[0];
                if (estado != undefined) {
                    switch (this._value.encuentro.estado) {
                        case "1":
                            estado.innerHTML = this.ESTADO_SIN_COMIENZO;
                            break;
                        case "2":
                            estado.innerHTML = this.ESTADO_EN_JUEGO;
                            break;
                        case "3":
                            estado.innerHTML = this.ESTADO_FINALIZADO;
                            break;
                        case "4":
                            estado.innerHTML = this.ESTADO_SUSPENDIDO;
                            break;
                        case "5":
                            estado.innerHTML = this.ESTADO_ENTRETIEMPO;
                            break;
                    }
                }
            }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarPeriodo', err) };
        }

    }
    this.actualizarPeriodo = function() {

        try {
            if (this._value.encuentro.tiempo != undefined) {

                var oPeriodo = jQuery("#" + this.TAG_PERIODO + this._value.cc.id)[0];
                if (oPeriodo != undefined) {
                    if (this._value.encuentro.estado == "2") {
                        if (oPeriodo != undefined) {
                            oPeriodo.innerHTML = "";
                            switch (this._value.encuentro.tiempo) {
                                case "1":
                                    oPeriodo.innerHTML = this.PRIMER_TIEMPO;
                                    break;
                                case "2":
                                    oPeriodo.innerHTML = this.SEGUNDO_TIEMPO;
                                    break;
                                case "3":
                                    oPeriodo.innerHTML = this.PRIMER_TIEMPO_SUPLEMENTARIO;
                                    break;
                                case "4":
                                    oPeriodo.innerHTML = this.SEGUNDO_TIEMPO_SUPLEMENTARIO;
                                    break;
                                case "5":
                                    oPeriodo.innerHTML = this.PENALES;
                                    break;
                            }
                        }

                    } else {
                        oPeriodo.innerHTML = "";
                    }
                }
            }

        } catch (err) {
            if (isDebugging) { showError('tableroRugby.actualizarEstado', err) };
        }

    }
    this.isTypeOf = function(value) {
        var _isTypeOf = false;
        if (value == "tableroRugby")
            _isTypeOf = !_isTypeOf;
        return _isTypeOf;
    }
    this.PRIMER_TIEMPO = "1er tiempo";
    this.SEGUNDO_TIEMPO = "2do tiempo";
    this.PRIMER_TIEMPO_SUPLEMENTARIO = "1er tiempo suplementario";
    this.SEGUNDO_TIEMPO_SUPLEMENTARIO = "2do tiempo suplementario";
    this.PENALES = "Penales";
    this.ESTADO_SIN_COMIENZO = "Sin comienzo";
    this.ESTADO_EN_JUEGO = "En juego";
    this.ESTADO_FINALIZADO = "Finalizado";
    this.ESTADO_SUSPENDIDO = "Suspendido";
    this.ESTADO_ENTRETIEMPO = "Entretiempo";



    this.calcularDelta = function() {
        var horaPC = new Date();
        var toReturn = 0;

        if (fechaServidor != null) {
            toReturn = (horaPC - fechaServidor) / 1000;
        }
        return (toReturn);
    }

    this.tiempoTranscurrido = function(horaInicio) {
        var elReloj = new Date();
        var deltaTiempo = this.calcularDelta();

        if (horaInicio != null) {
            // Armo el dia con la horacomienzo

            var relojComienzo = new Date(elReloj.getFullYear(), elReloj.getMonth(), elReloj.getDate(), Number(horaInicio.substr(0, 2)), Number(horaInicio.substr(3, 2)), 0);
            if (elReloj > relojComienzo) {
                var miliSegundos = (elReloj - deltaTiempo) - relojComienzo;
                var Hora = Math.floor(miliSegundos / (3600000)); // Horas
                var Minuto = Math.floor(miliSegundos / (60000)) - (Hora * 60); // Minutos
                var Segundo = Math.floor(miliSegundos / (1000)) - (Minuto * 60) - (Hora * 3600); // Segundos

                if (Hora != 0 && Hora > 0)
                    Hora += ":";
                else
                    Hora = "";

                if (typeof (Segundo) == "undefined")
                    Segundo = SegundoAnt;
                else
                    var SegundoAnt = Segundo;

                if (typeof (Minuto) == "undefined")
                    Minuto = MinutoAnt;
                else
                    var MinutoAnt = Minuto;

                if (Minuto < 10)
                    Minuto = "0" + Minuto.toString();

                if (Segundo < 10)
                    Segundo = "0" + Segundo.toString();

                return Minuto + ":" + Segundo;
            }
            else {
                return "";
            }
        }
        else {
            return "";
        }
    }
    this.actualizarReloj = function() {

        this.renderReloj();

    }

    this.renderReloj = function() {
        var oTiempo;

        try {

            oTiempo = document.getElementById(this.TAG_TIEMPO + this._value.cc.id);

            if (oTiempo != undefined) {
                if (this._value.encuentro.estado == "2") {
                    oTiempo.style.display = "inline";
                    oTiempo.innerHTML = this.tiempoTranscurrido(this._value.encuentro.inicio_tiempo);
                }
                else {
                    oTiempo.innerHTML = " ";
					oTiempo.style.background = "#FFFFFF url(/_ui/desktop/imgs/tableros/gris75.gif) no-repeat scroll 0 0";
                    this._tieneTiempo = false;
                }
            }
            else {
                this._tieneTiempo = false;
            }
            oTiempo = null;

        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.renderReloj', err) };
            this._tieneTiempo = false;
        }

    }

    // implementa diferente para cada tipo de tablero: tennis, Rugby
    this.execute = function() {
        try {

            if (this._cambioEncuentro) {
                this.actualizarEstado();
                this.actualizarPeriodo();
                this.actualizarResultado();
                this.actualizarGamecast();
            }
            if (this._cambioIncidencias) {
                this.actualizarIncidencias();
            }

            if (this._cambioExtras) { this.actualizarMarquesina(); }
        }
        catch (err) {
            if (isDebugging) { showError('tableroRugby.execute', err) };
        }
    }
};
