//var featured;

/**
 * Featured Content
 * galeria de destaques
 *
 * @author João Gustavo Vieira e Silva
 * @version beta
 */

/**
 * Carregamento Default
 */
function Featured(params){

    this.arrLinks = new Array();
    this.arrDestaques = new Array();
    this.ativo = 0; // Destaque inicial

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

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

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

    this.config.tipo = "li";
    this.config.classdivs = ".dest";

    this.config.offset = 0;

    if(params!=undefined){

        if(params['div_destaques']){
            this.config.div_destaques = params['div_destaques'];
        }
        if(params['classdivs']){
            this.config.classdivs = params['classdivs'];
        }
        if(params['div_navegacao']){
            this.config.div_navegacao = params['div_navegacao'];
        }
        if(params['tipo']){
            this.config.tipo = params['tipo'];
        }
        if(params['div_links']){
            this.config.div_links = params['div_links'];
        }
        if(params['offset']){
            this.config.offset = params['offset'];
        }
    }

    // Final da Configuração

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


        this.getDestaques();
        this.geraLinks();
        this.getLinks();
        this.prepLinks();

        try {
            document.getElementById(this.config.div_navegacao).style.visibility = 'visible';
        } catch (exception) {}

        this.mostraDestaque(this.ativo);

    }

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

    /**
     * Prepara os links para transição dos destaques
     */
    this.prepLinks = function()
    {

        var featured = this;

        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
                //this.mostraDestaque(this.link - 1);

                featured.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(this.config.div_links).style.visibility = 'visible';
    }

    /**
     * Pega os Destaques da Galeria
     * coloca os destaques no array arrDestaques
     */
    this.getDestaques = function()
    {

        if(this.config.tipo=='divs'){
            this.arrDestaques = $(this.config.div_destaques).getElementsBySelector(this.config.classdivs);
        }
        else {
            var temp = document.getElementById(this.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
     */
    this.mostraDestaque = function(indice) {


        if(this.arrDestaques.length == 0){
            alert("sem destaques");
            return;
        }

        this.escondeTodosDestaques();

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

        // Pega valor absoluto
        indice = Math.abs(indice);

        this.show(this.arrDestaques[indice]);

        this.arrLinks[indice].className = 'ativo';

        this.ativo = indice;

        if(this.arrDestaques.length>1){
            this.mostraProximo(indice, this.config.delay);
        }

    }

    this.show = function(box){

        //alert(this.config.div_destaques);

        try {
            Effect.Appear(box, {
                duration: 0.3
            });
        } catch (exception) {
            box.style.display = 'inline';
        }
    }

    this.hidden = function(box){
        box.style.display = 'none';
    }

    /**
     * Esconde todos os detaques
     */
    this.escondeTodosDestaques = function()
    {
        for(i=0;i<this.arrDestaques.length;i++)
        {
            this.hidden(this.arrDestaques[i]);
            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
     */
    this.mostraProximo = function(indice, delay)
    {

        var featured = this;

        // limpa o intervalo corrente
        clearInterval(this.intervalo);


        this.intervalo = window.setInterval(function()
        {
            clearInterval(this.intervalo);

            // Mostra o próximo destaque
            featured.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
     */
    this.geraLinks = function()
    {
        temp = document.getElementById(this.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) +'">'+ (++this.config.offset) +'</a>';
            lista.appendChild(li);
        }

        temp.appendChild(lista);

    }

    /**
     * Pula para próximo destaque
     */
    this.proximo = function(){
        this.mostraDestaque(this.ativo + 1);
    }

    /**
     * Pula para o destaque anterior
     */
    this.anterior = function(){
        this.mostraDestaque(this.ativo - 1);
    }

//initialize();

//return this;
}



//var teste = Featured();
//teste.initialize();

//addEvent(window,'load',Featured);
