﻿var superDestaque = undefined

var SuperDestaque = function () {
    var nums = new Array()
    var divs = new Array()
    var atual = 1
    var anterior = 1

    var delayNot = 10000
    var delayAnim = 300

    var timerNot = null
    var timerAnim = null

    var alphaRatio = 20
    var alphaAtual = 0
    var alphaAnterior = 0

    this.SetAlpha = function (Elem, Alpha) {
        Elem.style.opacity = Alpha / 100
        Elem.style.filter = 'alpha(opacity=' + Alpha + ')'
    }

    this.GetAlpha = function (Elem) {
        return Elem.style.opacity * 100
    }

    this.Select = function () {
        var Elem = nums[atual - 1]
        Elem.className = 'DestaqueSelected'
        Elem.onmouseover = ''
        Elem.onmouseout = ''
        Elem.onclick = ''
        Elem.style.cursor = 'default'
    }

    this.Deselect = function (i) {
        var Elem = nums[anterior - 1]
        Elem.className = 'Destaque'
        Elem.onmouseover = function () { this.className = "DestaqueHover" }
        Elem.onmouseout = function () { this.className = "Destaque" }
        eval('Elem.onclick = function() { superDestaque.Change(' + anterior + ') }')
        Elem.style.cursor = 'pointer'
    }

    this.Anim = function () {
        var divAtual = divs[atual - 1]
        var divAnterior = divs[anterior - 1]

        alphaAnterior -= alphaRatio
        alphaAtual += alphaRatio

        this.SetAlpha(divAnterior, alphaAnterior)
        this.SetAlpha(divAtual, alphaAtual)

        if (this.GetAlpha(divAtual) >= 100) {
            divAtual.style.filter = ''
            divs[anterior - 1].style.display = 'none'
            clearInterval(timerAnim)
            timerNot = setTimeout('superDestaque.Next()', delayNot)
        }
    }

    this.Change = function (prox) {
        clearTimeout(timerNot)
        clearInterval(timerAnim)

        if (prox > divs.length)
            prox = 1

        if (atual != anterior)
            this.SetAlpha(divs[anterior - 1], 0)

        anterior = atual
        atual = prox

        this.Deselect()
        this.Select()

        divs[atual - 1].style.display = ''

        alphaAnterior = this.GetAlpha(divs[anterior - 1])
        alphaAtual = 100 - alphaAnterior

        timerAnim = setInterval('superDestaque.Anim()', delayAnim / (100 / alphaRatio))
    }

    this.Next = function () {
        this.Change(atual + 1)
    }

    this.Initialise = function () {
        superDestaque = this

        var i = 1
        var div = undefined
        var num = undefined

        num = document.getElementById('SuperDestaqueNumero_' + i);
        div = document.getElementById('SuperDestaque_' + i);
        this.SetAlpha(div, 100)

        while (div != undefined) {
            if (divs.length > 0) {
                this.SetAlpha(div, 0)
            }

            nums.push(num)
            divs.push(div)
            i++
            div = document.getElementById('SuperDestaque_' + i);
            num = document.getElementById('SuperDestaqueNumero_' + i);
        }

        if (divs.length > 1) {
            timerNot = setTimeout('superDestaque.Next()', delayNot)
        }
    }

    this.Initialise()
}
