/*
$BD:Slide - version 0.9.4$
$LastModified: 04/02/2006$

Sistema Free para uso pessoal ou comercial contanto que os
créditos permaneçam intactos. Eu já nem estou colocando um
monte de coisa pra não deixar o código pesado. ^^

Maiores Informações:
http://my.opera.com/bimonti/
*/

slide = {

    // vetor com os slides
    _imagens: [
			["Images/slide/Foto1.jpg", "Oferta Imperdível", "", "Oferta.aspx"],
			["Images/slide/Foto2.jpg", "Linha de servidores HP", "", "Servidores.aspx"],
			["Images/slide/Foto3.jpg", "Linha de servidores HP", "", "Servidores.aspx"],
			["Images/slide/Foto4.jpg", "Linha de desktops e All-in-one", "", "Produto.aspx"],
			["Images/slide/Foto5.jpg", "Linha de desktops e All-in-one", "", "Produto.aspx"],
			["Images/slide/Foto6.jpg", "Linha de desktops e All-in-one", "", "Produto.aspx"],
			["Images/slide/Foto7.jpg", "Linha de desktops e All-in-one", "", "Produto.aspx"]
		],


    // ID dos elementos que o sistema modifica
    // ID da imagem do slide
    _slideImg: 'slideImg',
    // ID do link do slide, ou seja, um elemento A
    _linkSlide: 'linkSlide',
    // ID do título do slide, uma div ou span por exemplo
    _titleSlide: 'titleSlide',
    // ID do título do slide, idêntico ao de cima
    _textSlide: 'textSlide',
    // ID da imagem de play|pause
    _playPause: 'playpause',
    // ID da div que mostra ou esconde as opções de customização de tempo
    // essa opção pode ser omitida do usuário, basta retirar o botão
    // settings da página, e como a div já vem com o display:none por
    // padrão o usuário não terá acesso a essas opções.
    _showTimer: 'showTimer',


    // variáveis do sistema
    // Daqui para baixo não é necessário alterar mais nada, aqui o sistema
    // cuidará de tudo
    _count: 0,
    _length: null,
    _timeOutID: null,
    _pause: false,
    _timer: 4,

    // função que inicia o slide e seta todas os parâmetros necessários
    start: function() {
        with (this) {
            _preLoader();
            _length = _imagens.length;
            _work();
        }
    },

    // faz o pré-carregamento das imagens
    _preLoader: function() {
        for (x in this._imagens) {
            var image = new Image();
            image.src = this._imagens[x][0];
        }
    },

    // função principal que faz as checagens necessárias
    _work: function() {
        with (this) {
            (_count == _length) ? _count = 0 : (_count < 0) ? _count = _length - 1 : void (0);
            var current = _imagens[_count];
            _exchange(current);
            if (!_pause) {
                (typeof (_timeOutID) == "number") ? clearTimeout(_timeOutID) : void (0);
                _timeOutID = setTimeout(
						function() {
						    slide.next();
						    fade(0, 0, $(_slideImg));
						}, (Number(_timer) * 1000)
				);
            }
        }
    },

    // função que altera os elementos da página, altere os IDs se necessário
    _exchange: function(img) {
        var nome = document.getElementsByName("slideImg");
        if (nome.length > 0) {
            //            this.$(this._slideImg).src = img[0];
            document.getElementById('slideImg').style.background = " url(" + img[0] + ") no-repeat center";

            //this.$(this._titleSlide).innerHTML = img[1];
            //this.$(this._textSlide).innerHTML = img[2];
            //this.$(this._linkSlide).innerHTML = img[1];

            //this.$(this._linkSlide).href = img[3];
            this.fade(0, 100, this.$(this._slideImg));

        }
    },

    // altera para o próximo slide ao clicar no botão Próximo
    next: function() {
        with (this) {
            _count++;
            _work();
        }
    },

    // altera para o slide anterior ao clicar no botão correspondente
    previous: function() {
        with (this) {
            _count--;
            _work();
        }
    },

    // pausa e continua a apresentação
    pause: function() {
        var img = this.$(this._playPause);
        if (this._pause) {
            this._pause = false;
            img.src = 'Images/pause.gif';
            img.title = 'Parar';
        }
        else {
            this._pause = true;
            img.src = 'Images/play.gif';
            img.title = 'Continuar';
        }
        with (this) { (typeof (_timeOutID) == "number") ? clearTimeout(_timeOutID) : void (0); _work(); }
    },

    // controla o tempo de troca de cada slide
    tControl: function(act) {
        with (this) {
            (act == "m") ? ((_timer == 4) ? void (0) : _timer = _timer - 1) : ((_timer == 9) ? void (0) : _timer = _timer + 1);
            this.$(this._showTimer).innerHTML = _timer + "s";
        }

    },

    // altera a opacidade do elemento e suaviza a transição entre os slides
    fade: function() {

        var type, signal;
        var from = arguments[0];
        var to = arguments[1];
        var el = arguments[2];

        (document.all) ? type = 'filter' : type = 'opacity';
        (from > to) ? signal = '-' : signal = '+';

        if (from >= to / 2) {
            from = eval(from + signal + 10);
        } else {
            from = eval(from + signal + 5);
        }

        if (type == 'opacity') {
            try { el.style[type] = Number(from * 0.01); } catch (e) { }
        } else {
            try { el.style[type] = 'alpha(opacity=' + from + ')'; } catch (e) { }
        }

        if (from != to) {
            setTimeout(function() { slide.fade(from, to, slide.$(slide._slideImg)); }, 50);
        }
    },

    // retorna o elemento solicitado através de seu ID
    $: function() {
        return document.getElementById(arguments[0]);
    }
}
