/**
 * Featured Content
 * galeria de destaques
 *
 * @author João Gustavo Vieira e Silva
 * @version beta
 */
function Featured()
{
    arrLinks = new Array();
    arrDestaques = new Array();

    intervalo = window.setInterval(function() {}, 1);

    config = new Object(); // Configuração

    /**
     * Configuração da classe
     */
    config.div_destaques = "box_destaque";
    config.div_links = "links_destaque";
    config.delay = 6; //em segundos

    // Final da Configuração

    /**
     * Inicializa a Classse
     * montando os arraies de links e destaques
     * mostrando o primeiro elemeno
     */
    initialize = function ()
    {
        this.getDestaques();

        this.geraLinks();
        this.getLinks();
        this.prepLinks();
        
        this.mostraDestaque(0);
    }

    /**
     * Pega os links da Galeria
     * coloca os links no array arrLinks
     */
    getLinks = function()
    {
        temp = document.getElementById(config.div_links);
        this.arrLinks = temp.getElementsByTagName("a");
    }

    /**
     * Prepara os links para transição dos destaques
     */
    prepLinks = function()
    {
        for(i=0;i<this.arrLinks.length;i++)
        {
            ele = this.arrLinks[i];

            // Sobrecarrega o onclick do link
            ele.onclick = function()
            {
                // Pega att name <=> indice do destaque
                temp = this.getAttribute('name').substr(1);
                
                // Pega o valor do elemento como indice dos destaques
                this.link = parseInt(temp);

                // Mostrando respectivo destaque
                mostraDestaque(this.link - 1);
            }
            // Mostra o link
            ele.style.display = 'inline';
            
            // Seta o href do link
            ele.setAttribute('href', 'javascript:void(0)');
        }

        // Mostra a navegação da galeria
        document.getElementById(config.div_links).style.visibility = 'visible';
    }

    /**
     * Pega os Destaques da Galeria
     * coloca os destaques no array arrDestaques
     */
    getDestaques = function()
    {
        temp = document.getElementById(config.div_destaques);
        this.arrDestaques = temp.getElementsByTagName("li");
    }

    /**
     * Mostra Destaque
     * Esconde todos outros destaques e mostra o que for indicado pelo parametro
     * Ativa o link referente
     *
     * @param indice posição do destaque no array de Destaques
     */
    mostraDestaque = function(indice)
    {
        this.escondeTodosDestaques();

        // Indice do módulo da quantidade de Destaques
        indice = indice % this.arrDestaques.length;

        this.arrDestaques[indice].style.display = 'inline';
        this.arrLinks[indice].className = 'ativo';

        this.mostraProximo(indice, config.delay);
    }

    /**
     * Esconde todos os detaques
     */
    escondeTodosDestaques = function()
    {
        for(i=0;i<this.arrDestaques.length;i++)
        {
            this.arrDestaques[i].style.display = 'none';
            this.arrLinks[i].className = '_ativo';
        }
    }

    /**
     * Mostra o próximo destaque ao final do delay
     *
     * @param indice Índice do destaque anterior que chamou este método
     * @param delay Tempo em segundos que deve esperar para mostrar
     */
    mostraProximo = function(indice, delay)
    {
        // limpa o intervalo corrente
        clearInterval(this.intervalo);
        
        this.intervalo = window.setInterval(function()
        {
            clearInterval(this.intervalo);
            
            // Mostra o próximo destaque
            this.mostraDestaque(++indice);
        }, (delay*1000));

        /*
        // Para ser executada uma única vez
        window.setTimeout(function()
        {            
            this.mostraDestaque(indice+1)
        }, (delay*1000));
        */
    }

    /**
     * Cria os links dinamicamente de acordo a quantidade de Destaques
     */
    geraLinks = function()
    {
        temp = document.getElementById(config.div_links);
        temp.innerHTML = "";// limpa conteudo antigo

        lista = document.createElement("ul");

        for(i=0;i<this.arrDestaques.length;i++)
        {
            var li = document.createElement("li");
            li.innerHTML = '<a class="_ativo" href="#" name="_'+ (i+1) +'">'+ (i+1) +'</a>';
            lista.appendChild(li);
        }       

        temp.appendChild(lista);

    }

    this.initialize();
}

addEvent(window,'load',Featured);