/*
Script: Gimmick.js
	Class for generating the scroll gimmicks
*/
var Gimmick = new Class({

    Implements: [Options],

    options : {
        frameDiv: null,
        name: null,
        counter: 1,
        scrollWay: true,
        scrollCounter: 1,
        scrollCurr: 0,
        scrollTimer: null,
        scrollWidth: 100,
        scrollStep: 5
    },

    initialize: function(options) {

        this.options.frameDiv = $(options.frameDiv);
        this.options.name = options.name;

        if(options.scrollWidth !== undefined)
            this.options.scrollWidth = options.scrollWidth;

        if(options.scrollStep !== undefined)
            this.options.scrollStep = options.scrollStep;

    },

    addGimmick: function(gimmClass) {

        var newGimmick = new Element('div');
        newGimmick.set('id', 'mooGimm_' + this.options.name + '_' + this.options.counter);
        newGimmick.set('class', 'Gimmick ' + gimmClass);
        newGimmick.setStyle('left', (this.options.counter - 1) * this.options.scrollWidth + '%');
        newGimmick.injectInside(this.options.frameDiv);

        this.options.counter++;

    },

    scrollGimmick: function() {

        clearInterval(this.options.scrollTimer)
        this.options.scrollTimer = this.scrollTimeout.periodical(10, this);

    },

    scrollTimeout: function() {

        this.options.scrollCurr = this.options.scrollCurr + (this.options.scrollWay ? this.options.scrollStep : -this.options.scrollStep);

        this.options.frameDiv.setStyle('left', - this.options.scrollCurr + '%');

        if(this.options.scrollCurr == (this.options.scrollCounter * this.options.scrollWidth)) {

            clearInterval(this.options.scrollTimer);

            if(this.options.scrollWay) {


                if(this.options.scrollCounter == (this.options.counter - 2)) {

                    this.options.scrollWay = false;
                    this.options.scrollCounter--;

                } else {

                    this.options.scrollCounter++;

                }

            } else {

                if(this.options.scrollCounter == 0) {

                    this.options.scrollWay = true;
                    this.options.scrollCounter++;

                } else {

                    this.options.scrollCounter--;

                }

            }

        }

    }

});

