gfi.Slider = new Class({
    initialize: function(sliderContainer, elmToSlide,slidesElm,slideWidth) {
        if (sliderContainer && elmToSlide && slidesElm && slideWidth) {
            this.currentSlide = 0;
            this.sliderContainer = sliderContainer;
            this.slides = slidesElm;
            this.slideWidth = slideWidth;
            slidesElm.getParent().setStyle('width',this.slideWidth*slidesElm.length);
            this.myFx = new Fx.Morph(elmToSlide, {
                duration: 1000,
                link: 'chain'
            }).set({'top':0,'right':0});
            this.nextButton = sliderContainer.getElements('.nextButton');
            this.previousBtn = sliderContainer.getElements('.previousButton');
            this.sliderNavBtn = $$('.pager li');
            this.setNextButtonEvents();
            this.setPreviousButtonEvents();
            this.setSliderNavEvents();
        }
    },

    setNextButtonEvents: function() {
        this.nextButton.each(function(item){
            item.addEvent('click',function() {
                if (this.slides[this.currentSlide+1]) {
                    this.moveToSlide(this.currentSlide+1);
                    this.previousBtn.removeClass("disabled");
                    if (this.slides.length == this.currentSlide+1) {
                          this.nextButton.addClass("disabled");
                    }
                }
            }.bind(this));
        }.bind(this));
    },

    setPreviousButtonEvents: function() {
        this.previousBtn.each(function(item) {
            item.addEvent('click',function() {
                if (this.slides[this.currentSlide-1]) {
                    this.moveToSlide(this.currentSlide-1);
                    if (this.currentSlide == 0) {
                        this.previousBtn.addClass("disabled");
                    }
                    if (this.currentSlide+1 == (this.slides.length-1)){
                          this.nextButton.removeClass("disabled");
                    }
                }
            }.bind(this));
        }.bind(this));
    },

    setSliderNavEvents: function() {
        if(this.sliderNavBtn.length > 0){
            this.sliderNavBtn.each(function(item,index) {
                item.addEvent('click', function(index) {
                    this.moveToSlide(index);
                    if (this.currentSlide == 0) {
                        this.previousBtn.addClass("disabled");
                    } else{
                        this.previousBtn.removeClass("disabled");                        
                    }
                    if (this.currentSlide+1 == (this.slides.length-1)){
                        this.nextButton.removeClass("disabled");
                    }
                    if (this.slides.length == this.currentSlide+1) {
                        this.nextButton.addClass("disabled");
                    }                    
                }.bind(this,index));
            }.bind(this));
        }
    },

    moveToSlide: function(index) {
        this.myFx.start({'top': 0,'right': this.slideWidth*(index)});
        if(this.sliderNavBtn.length > 0){
            this.sliderNavBtn.removeClass('active');
            this.sliderNavBtn[index].addClass('active');
        }
        this.currentSlide = index;
    }
});
