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);
        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 + " li");
        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("active");
        this.tabsA.removeClass("active");
        this.tabs[A].addClass("active");
        this.tabsA[A].addClass("active")
    },
    showSlide:function(A) {
        this.activateTab(A);
        this.parent(A);
        return this
    },
    showNext:function(A) {
        this.activateTab(A);
        this.parent(A);
        return this
    },
    next:function() {
        this.stop();
        current = this.currentSlide;
        next = (current + 1 >= this.slides.length) ? 0 : current + 1;
        this.showSlide(next);
    },
    prev:function() {
        this.stop();
        current = this.currentSlide;
        prev = (current - 1 < 0) ? this.slides.length - 1 : current - 1;
        this.showSlide(prev);
    }
});
