﻿/*
 * Cyt Text Scroller 
 * Scl Tools - Santiago Corredoira 06-08-2008
 *
 *
 */
 
if (typeof Scl == "undefined") 
{
    var Scl = {};
}

(function() {
    Scl.TickerItem = function(text, link) {
        this.text = text;
        this.link = link;
    }

    Scl.Ticker = function(panelId, speed) {
        var items = new Array();
        var tickerSpan;
        var innerPanel;
        var innerPanelWidth;
        var innerPanelHeight;
        var tickerSpanWidth;
        var tickerSpanHeight;
        var left = 0;
        var top = 0;
        var leftLimit;
        var topLimit;
        var thread;
        var running;
        var posiciona = 0;
        var posiciona_stop = 36;

        this.addItem = function(text, link) {
            items.push(new Scl.TickerItem(text, link));
        }

        this.start = function() {
            // Obtener el panel contenedor en la pagina html
            var panel = document.getElementById(panelId);

            // Crear el panel del ticker que contiene el span
            innerPanel = document.createElement('div');
            innerPanel.style.position = 'relative';
            innerPanel.style.overflow = 'hidden';
            innerPanel.innerHTML = '&nbsp;'; // Para que tenga alto el div
            addEvent(innerPanel, 'mouseover', onMouseOver, false);
            addEvent(innerPanel, 'mouseout', onMouseOut, false);
            panel.appendChild(innerPanel);
            innerPanel.style.width = "800px";

            // crear el span que se mueve
            tickerSpan = document.createElement('span');
            tickerSpan.style.whiteSpace = 'nowrap';
            tickerSpan.style.position = 'absolute';
            innerPanel.appendChild(tickerSpan);

            // Añadir los elementos
            for (var i = 0; i < items.length; i++) {
                var item = items[i];
                var link = document.createElement('a');
                var cr = document.createElement('br');
                var cr2 = document.createElement('br');
                link.setAttribute('href', item.link);
                link.appendChild(document.createTextNode(item.text));
                tickerSpan.appendChild(link);
                tickerSpan.appendChild(cr);
                tickerSpan.appendChild(cr2);
            }

            // Cachear la info para mejorar rendimiento
            tickerSpanWidth = tickerSpan.offsetWidth;
            tickerSpanHeight = tickerSpan.offsetHeight;
            innerPanelWidth = panel.offsetWidth;
            innerPanelHeight = panel.offsetHeight;
            leftLimit = tickerSpanWidth * -1;
            topLimit = tickerSpanHeight * -1;

            // Arrancar la animacion
            left = innerPanelWidth; // empezar desde la derecha
            top = innerPanelHeight;
            running = true;

            var thread = setInterval(run, speed);
            // var thread2 = setInterval(controla, speed);

        }

        function parayarranca() {
            onMouseOver();
            setTimeout(onMouseOut, 3000);
        }



        function apaga() {

            running = false();

        }

        // Bucle principal de la animacion
        function run() {

            if (running) {
                top--;
                posiciona++;
                tickerSpan.style.top = top + 'px';
                if (posiciona == posiciona_stop) {
                    parayarranca();
                    posiciona = 0;
                }
                if (top < topLimit) {
                    top = innerPanelHeight; // empezar de nuevo
                    posiciona = 0;
                }
            }
        }




        function onMouseOver() {
            running = false;
        }

        function onMouseOut() {
            running = true;
        }

        function debug(text) {
            document.getElementById('debug').innerHTML = text;
        }

        function addEvent(element, evType, functionName, useCapture) {
            if (element.addEventListener) {
                element.addEventListener(evType, functionName, useCapture);
            }
            else if (element.attachEvent) {
                element.attachEvent('on' + evType, functionName);
            }
            else {
                element['on' + evType] = functionName;
            }
        }
    }
})();


