var Vsir = new Class({
    Implements: [Options, Events],
    options: {
        slideInterval: 3000,
        transitionDuration: 2000,
        startIndex: 0,
        autoplay: true
    },
    initialize: function (B, A) {
        this.setOptions(A);
        this.slides = $$(B);
        this.createFx();
        this.showSlide(this.options.startIndex);
        if (this.slides.length < 2) {
            this.options.autoplay = false
        }
        if (this.options.autoplay) {
            this.autoplay()
        }
        return this
    },
    toElement: function () {
        return this.container
    },
    createFx: function () {
        if (!this.slideFx) {
            this.slideFx = new Fx.Elements(this.slides, {
                duration: this.options.transitionDuration
            })
        }
        this.slides.each(function (A) {
            A.setStyle("opacity", 0)
        })
    },
    showSlide: function (B) {
        var A = {};
        this.slides.each(function (C, D) {
            if (D == B && D != this.currentSlide) {
                A[D.toString()] = {
                    opacity: 1
                }
            } else {
                A[D.toString()] = {
                    opacity: 0
                }
            }
        }, this);
        this.fireEvent("onShowSlide", B);
        this.currentSlide = B;
        this.slideFx.start(A);
        return this
    },
    autoplay: function () {
        this.slideshowInt = this.rotate.periodical(this.options.slideInterval, this);
        this.fireEvent("onAutoPlay");
        return this
    },
    stop: function () {
        $clear(this.slideshowInt);
        this.fireEvent("onStop");
        return this
    },
    rotate: function () {
        current = this.currentSlide;
        next = (current + 1 >= this.slides.length) ? 0 : current + 1;
        this.showSlide(next);
        this.fireEvent("onRotate", next);
        return this
    }
});
