var MGFX = MGFX || {};
MGFX.Rotater = new Class({

    Implements:[Options,Events],

    options:{
        slideInterval:4000,
        transitionDuration:1000,
        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);
        A[B.toString()] = {opacity:1}
        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
}});

var MGFX = MGFX || {};
MGFX.Tabs = new Class({
    Extends:MGFX.Rotater,
    options:{
        slideInterval:6000,
        transitionDuration:300,
        autoplay:false
    },
    initialize:function(B, C, A) {
        this.tabs = $$(B + " span");
        this.tabsA = $$(B + " a");
        this.createTabs();
        this.parent(C, A);
        return this
    },
    createTabs:function() {
        this.tabsA.each(function(B, A) {
            B.addEvent("click", function(C) {
                C.stop();
                this.showSlide(A);
                this.stop()
            }.bind(this))
        }.bind(this))
    },
    activateTab:function(A) {
        this.tabs.removeClass("act");
        this.tabsA.removeClass("act");
        this.tabs[A].addClass("act");
        this.tabsA[A].addClass("act")
    },
    showSlide:function(A) {
        this.activateTab(A);
        this.parent(A);
        return this
    }
});