﻿// GESTIONE SLIDE HOMEPAGE ////////////////////////////////////////////////////////////////////////////////////////////////////
var SlideShow = new Class({

    Implements: Options,

    options: {
        width: 250,                 /* larghezza gallery */
        duration: 800               /* Durata transizione */
    },

    initialize: function(element, options) {

        this.element = this.subject = $(element);
        this.setOptions(options);

        this.objects = new Array();
        this.currentObject = 0;

        this.onSlide = false;       // mutex per evitare multipli click
        this.validSlide = false;    // settato nella prepareSlide() se elementi > 0

        this.prepareSlide();

    },

    slideLeft: function(obj, mode) {

        var offset = 0;
        if (mode == 'out') {
            offset = -(this.options.width);
        }
        obj.tween('left', offset);

    },

    slideRight: function(obj, mode) {

        var offset = 0;
        if (mode == 'out') {
            offset = this.options.width;
        }
        obj.tween('left', offset);

    },

    showNext: function() {
        if (this.objects.length > 1) {
            if (this.onSlide || !this.validSlide) {
                return;
            }
            this.onSlide = true;

            var nextObject = (this.currentObject + 1) % this.objects.length;
            this.objects[nextObject].setStyle('left', this.options.width);

            this.slideLeft(this.objects[nextObject], 'in');
            this.slideLeft(this.objects[this.currentObject], 'out');

            this.currentObject = nextObject;
        }

    },

    showPrev: function() {
        if (this.objects.length > 1) {
            if (this.onSlide || !this.validSlide) {
                return;
            }
            this.onSlide = true;

            var nextObject = (this.currentObject - 1 >= 0) ? this.currentObject - 1 : (this.objects.length - 1);
            this.objects[nextObject].setStyle('left', -(this.options.width));

            this.slideRight(this.objects[nextObject], 'in');
            this.slideRight(this.objects[this.currentObject], 'out');

            this.currentObject = nextObject;
        }

    },

    prepareSlide: function() {

        // controllo che esista l'elemento
        if (this.element) {

            var myClass = this;

            // prendo i figli
            myClass.objects = myClass.element.getElements('li');

            // se ho almeno un figlio
            if (myClass.objects.length > 0) {

                myClass.validSlide = true;

                myClass.objects.setStyle('left', 250).set('tween', {
                    'duration': myClass.options.duration,
                    'onComplete': function() {
                        myClass.onSlide = false;
                    }
                });

                myClass.objects[0].setStyle('left', 0);

            }

        }

    }

});

