/*
 * Slider
 * @author Gennadiy Ukhanov
 * @version 0.0.1
 * @build 34 (30/06/2011 15:56)
 */
(function(_global){
    /**
     * @namespace MainScroller
     * @name MainScroller
     */
    Slider = function() {
        this.isFirstRun = true;
    };
    
    /**
     * @namespace Slider
     * @name Slider
     */
    Slider.prototype = {

        /**
         * @public
         */
        create : function() {
            if(this.sliderNavNext!=undefined || this.sliderNavPrev!=undefined) {
                this.sliderNavNext.bind('click', $.proxy(this, 'count'))
                this.sliderNavPrev.bind('click', $.proxy(this, 'count'))
            }

            if(this.sliderNavNext!=undefined) {
                this.sliderNavItem.bind('click', $.proxy(this, 'changeCount'))
            } else {
                this.sliderInterval = setInterval($.proxy(this, 'count'), this.sliderIntervalTimeout);
            }
            
            if(this.sliderAnimationEffect == 'slideEffect') {
                this.sliderWrap.width(this.sliderItem.width()*this.sliderItem.length)
            }
            
            this.slideTo(this.sliderCounter);
            return this;
        },

        /**
         * @public
         */
        count : function(event) {
			
            var isNext = null;

            if(event!=undefined) {
                isNext = $(event.currentTarget).hasClass(this.sliderNavPrevClass);
            }
            
            if(isNext) {
                this.sliderCounter-=1;
                if(this.sliderCounter<0) {
                    this.sliderCounter = this.sliderItem.length-1;
                }
            } else {
                this.sliderCounter+=1;
                if(this.sliderCounter>this.sliderItem.length-1) {
                    this.sliderCounter = 0;
                }
            }

            this.slideTo(this.sliderCounter);
            
            return false;
        },

        /**
         * @public
         */
        changeCount : function(event) {
            this.sliderCounter = $(event.currentTarget).index();
            
            if(this.sliderAnimationEffect == 'slideEffect' || this.sliderNavNextClass!=undefined || this.sliderNavPrevClass!=undefined) {
                this.slideTo(this.sliderCounter-1)
            } else {
                this.slideTo(this.sliderCounter)
            }
            return false;
        },

        /**
         * @public
         */
        slideTo : function(_index) {
            if(this.sliderNav!=undefined) {
                this.sliderNavItem.removeClass(this.sliderNavCurrentClass)
                this.sliderNavItem.eq(_index).addClass(this.sliderNavCurrentClass)
            }
            this[this.sliderAnimationEffect](_index)
            return false;
        },

        slideEffect : function(_index) {
            this.sliderWrap.animate({
                'left': '-'+((this.sliderItem.width()*_index)+'px')
                }, 200)
        },

        fadeEffect : function(_index) {

            this.sliderItem.removeClass(this.sliderNavCurrentClass).hide();

            if(this.isFirstRun) {
                this.sliderItem.eq(_index).addClass(this.sliderNavCurrentClass).show()
            } else {
                this.sliderItem.eq(_index-1).show().fadeOut(1000)
                this.sliderItem.eq(_index).addClass(this.sliderNavCurrentClass).hide().fadeIn(1000)
            }

            this.isFirstRun = false;
        }

    }

    /**
     * Constructor
     */
    Slider.sliderWrap   = null;
    Slider.sliderNav    = null;

})(window || this);


$(document).ready(function() {
    var promoSlider = new Slider();

    promoSlider.module                  = $('.b-slider')
    promoSlider.sliderWrap              = promoSlider.module.find('.b-slider-list')
    promoSlider.sliderItem              = promoSlider.module.find('.b-slider-list__item')
    promoSlider.sliderNav               = undefined;
    promoSlider.sliderNavNextClass      = undefined;
    promoSlider.sliderNavPrevClass      = undefined;
    promoSlider.sliderNavItem           = undefined;
    promoSlider.sliderNavNext           = undefined;
    promoSlider.sliderNavPrev           = undefined;
    promoSlider.sliderNavCurrentClass   = 'b-slider-list__item_state_current';
    promoSlider.sliderCounter           = 0;
    promoSlider.sliderAnimationEffect   = 'fadeEffect';
    promoSlider.sliderIntervalTimeout   = 5000;
    promoSlider.create();

    var thirdSlider = new Slider();

    thirdSlider.module                  = $('.b-slider-dev')
    thirdSlider.sliderWrap              = thirdSlider.module.find('.b-slider-list__dev')
    thirdSlider.sliderItem              = thirdSlider.module.find('.b-slider-list__item_dev')
    thirdSlider.sliderNav               = undefined;
    thirdSlider.sliderNavNextClass      = undefined;
    thirdSlider.sliderNavPrevClass      = undefined;
    thirdSlider.sliderNavItem           = undefined;
    thirdSlider.sliderNavNext           = undefined;
    thirdSlider.sliderNavPrev           = undefined;
    thirdSlider.sliderNavCurrentClass   = 'b-slider-list__item_state_current_dev';
    thirdSlider.sliderCounter           = 0;
    thirdSlider.sliderAnimationEffect   = 'fadeEffect';
    thirdSlider.sliderIntervalTimeout   = 10000;
    thirdSlider.create();

    var secondSlider = new Slider();

    secondSlider.module                  = $('.text-slider')
    secondSlider.sliderWrap              = secondSlider.module.find('.b-slider-list_second')
    secondSlider.sliderItem              = secondSlider.module.find('.b-slider-list__item_second')
    secondSlider.sliderNav               = undefined;
    secondSlider.sliderNavNextClass      = undefined;
    secondSlider.sliderNavPrevClass      = undefined;
    secondSlider.sliderNavItem           = undefined;
    secondSlider.sliderNavNext           = undefined;
    secondSlider.sliderNavPrev           = undefined;
    secondSlider.sliderNavCurrentClass   = 'b-slider-list__item_state_current_second';
    secondSlider.sliderCounter           = 0;
    secondSlider.sliderAnimationEffect   = 'fadeEffect';
    secondSlider.sliderIntervalTimeout   = 10000;
    secondSlider.create();

});





