
var fSlider = new Class({

    Implements: [Options, Events],

    initialize : function(options) {
        this.options = $extend({
            slider: 'slider',
            item_left: 'slider-left',
            item_right: 'slider-right',
            additional_items_left_selector: null,
            additional_items_right_selector: null,
            block_width: 216,
            block_selector: '.gallery_item',
            number: 1,
            items_visible : 4,
            duration: 500
        }, options || {});

        this.slider = $(this.options.slider);
        var object = this;
        this.tween = new Fx.Tween(this.slider,{
            'duration':this.options.duration,
            onStart: function(){
                object.slider_active = true;
            },
            onComplete: function() {
                object.slider_active = false;
            }
        });

        this.item_left  = $(this.options.item_left);
        this.item_right = $(this.options.item_right);

        this.scrollLeftBound = this.scrollLeft.bindWithEvent(this);
        this.scrollRightBound = this.scrollRight.bindWithEvent(this);

        this.item_left.addEvent('click',this.scrollLeftBound);
        this.item_right.addEvent('click',this.scrollRightBound);

        if (this.options.additional_items_left_selector) {
            $$(this.options.additional_items_left_selector).addEvent('click',scrollLeftBound);
        }
        if (this.options.additional_items_right_selector) {
            $$(this.options.additional_items_right_selector).addEvent('click',scrollRightBound);
        }

        this.elements = this.slider.getElements(this.options.block_selector);
        if (this.elements.length > 0) {
        this.width = 104;
        this.elements.each(function(item){
            this.width += item.getSize().x;
        }.bind(this));
        this.slider.setStyle('width',this.width);
        }
        this.block_count = this.elements.length;
        this.items_visible = this.options.items_visible;

        if (this.options.number > this.block_count || this.options.number < 2) {
            this.left_number = 1;
            this.slider.grab(this.elements[this.elements.length - 1],'top');
            this.tween.set('left',(-1)*this.options.block_width);
//            this.item_left.addClass('button_disabled');
//            this.item_left.setStyle('visibility','hidden');
//            this.item_left.removeEvents('click');
//        } else if(this.options.number > this.block_count - this.items_visible) {
//            this.left_number = this.block_count - this.items_visible + 1;
//            this.item_right.addClass('button_disabled');
//            this.item_right.setStyle('visibility','hidden');
//            this.item_right.removeEvents('click');
//            this.tween.set('left',(-1)*(this.left_number - 1)*this.options.block_width);
        } else {
            this.left_number = this.options.number;
            for(var i = 1; i < this.left_number - 1; i++) {
                this.slider.grab(this.slider.getFirst(this.options.block_selector),'bottom');
            }
            this.tween.set('left',(-1)*this.options.block_width);
        }
    },

    scrollLeft: function(evt) {
        evt.stop();
        if (this.slider_active == true) {
            return false;
        }
        if (this.left_number <= 1) {
//            return false;
            this.left_number = this.block_count;
        }
            this.left_number--;
//            if (this.left_number <= 1) {
//                this.item_left.addClass('button_disabled');
//                this.item_left.setStyle('visibility','hidden');
//                this.item_left.removeEvents('click');
//            } else if (this.item_left.hasClass('button_disabled')){
//                this.item_left.removeClass('button_disabled');
//                this.item_left.setStyle('visibility','visible');
//                this.item_left.addEvent('click',this.scrollLeftBound);
//            }
//
//            if (this.left_number > ( this.block_count - this.items_visible)) {
//                this.item_right.addClass('button_disabled');
//                this.item_right.setStyle('visibility','hidden');
//                this.item_right.removeEvents('click');
//            } else if (this.item_right.hasClass('button_disabled')){
//                this.item_right.removeClass('button_disabled');
//                this.item_right.setStyle('visibility','visible');
//                this.item_right.addEvent('click',this.scrollRightBound);
//            }
            this.slider.grab(this.slider.getLast(this.options.block_selector),'top');
//            this.tween.start('left',(-1)*(this.left_number - 1)*this.options.block_width)
            this.tween.set('left', (-1) * this.options.block_width * 2);
            this.tween.start('left',(-1) * this.options.block_width );

    },

    scrollRight: function(evt) {
        evt.stop();
        if (this.slider_active == true) {
            return false;
        }
        if (this.left_number > ( this.block_count - this.items_visible) ) {
            this.left_number = 0;
        }

            this.left_number++;
            this.slider.grab(this.slider.getFirst(this.options.block_selector),'bottom');
            this.tween.set('left', 0);
            this.tween.start('left',(-1) * this.options.block_width);


//            if (this.left_number <= 1) {
//                this.item_left.addClass('button_disabled');
//                this.item_left.setStyle('visibility','hidden');
//                this.item_left.removeEvents('click');
//            } else if (this.item_left.hasClass('button_disabled')){
//                this.item_left.removeClass('button_disabled');
//                this.item_left.setStyle('visibility','visible');
//                this.item_left.addEvent('click',this.scrollLeftBound);
//            }
//
//            if (this.left_number > ( this.block_count - this.items_visible)) {
//                this.item_right.addClass('button_disabled');
//                this.item_right.setStyle('visibility','hidden');
//                this.item_right.removeEvents('click');
//            } else if (this.item_right.hasClass('button_disabled')){
//                this.item_right.removeClass('button_disabled');
//                this.item_right.setStyle('visibility','visible');
//                this.item_right.addEvent('click',this.scrollRightBound);
//            }
//            this.tween.start('left',(-1)*(this.left_number - 1)*this.options.block_width);
//        }
    },

    scrollTo: function(num){
//        if (num < 1 || num > (this.block_count - this.items_visible + 1)) {
//            return false
//        } else {
//            this.left_number = num.toInt();
//            this.tween.start('left',(-1)*(this.left_number - 1)*this.options.block_width);
//        }
    }

});
