var NavigationStartpageProductgroups = new function() {
    var me          = this;
    var numberOfProductgroups;
    var locked;
    var shift;
    var containerNode;
    var activeProductgroup;
    var allowAutoslide;
    var timer;

    me.init = function( numberOfProductgroups ){
        me.numberOfProductgroups = numberOfProductgroups;
        me.locked = false;
        me.shift = 0;
        me.activeProductgroup = 0;
        me.allowAutoslide = true;
        me.containerNode = $('div#feature-bar .inner');

        $('div#feature-bar a.selector').bind('click',function(){
            me.activateProductgroup( parseInt($(this).attr("id").substr(9)) )
        });

        $('div#feature-block').bind('mouseover', me.stopAutoslide    );
        $('div#feature-block').bind('mouseout' , me.restartAutoslide );
        
        $('div#feature-bar a.arrow-left' ).click(function(ev) { me.clickBackward(ev, this ); });
        $('div#feature-bar a.arrow-right').click(function(ev) { me.clickForward(ev, this );  });
        
        me.activateProductgroup(0);
        me.handleLeftRightActive();
        me.autoslide();
    };



    /*
     *          FORWARD SCROLLING
     */

    me.clickForward = function(ev, target) {
        if(!me.locked){
            me.scrollForward(300);
        }
    };

    me.scrollForward = function(speed) {
        if( me.shift+5 < me.numberOfProductgroups){
            me.locked = true;
            me.containerNode.animate(
                {left: '-=82'},
                speed,
                function() {
                    me.shift++;
                    me.handleLeftRightActive();
                    me.locked = false;
                }
            );
        }
    };



    /*
     *          BACKWARD SCROLLING
     */

    me.clickBackward = function(ev, target) {
        if(!me.locked){
            me.scrollBackward(300);
        }
    };

    me.scrollBackward = function(speed) {
        if( me.shift > 0 ){
            me.locked = true;
            me.containerNode.animate(
                {left: '+=82'},
                speed,
                function() {
                    me.shift--;
                    me.handleLeftRightActive();
                    me.locked = false;
                }
            );
        }
    };



    /*
     *          RESET SCROLLING
     */

    me.scrollReset = function(speed) {
        if( me.shift > 0 ){
            me.locked = true;            
            me.containerNode.animate(
                {left: '+='+82*me.shift},
                speed,
                function() {
                    me.shift = 0;
                    me.locked = false;
                }
            );
        }
    };



    /*
     *          ACTIVATE
     */

    me.activateProductgroup = function(productgroupId) {
        for(i=0;i<me.numberOfProductgroups;i++){
            if (i != me.activeProductgroup) {
                $('#feature_'+i).hide();
            }
        }
        $('#feature_'+me.activeProductgroup).fadeOut('slow');
        $('#feature_'+productgroupId).fadeIn('slow');

        $(".productgroup-text").hide();
        $('#feature_text_' + productgroupId).show();

        $('#selector-'+ me.activeProductgroup).removeClass('active');
        $('#selector-'+ productgroupId).addClass('active');



        me.activeProductgroup = productgroupId;

    };



    /*
     *          AUTOSLIDER
     */

    me.autoslide = function() {
        if(me.allowAutoslide){
            this.timer = setInterval( me.autoslideNext , 3000 );
        }
    };

    me.autoslideNext = function() {
        if (me.allowAutoslide) {
            // next
            nextProductgroup = me.activeProductgroup + 1;

            // reset
            if (nextProductgroup == me.numberOfProductgroups) {
                nextProductgroup = 0;
                me.scrollReset(300);
            }

            // slide
            if (nextProductgroup > me.shift + 4) {
                me.scrollForward(300);
            }

            me.activateProductgroup( nextProductgroup );
        }
    };

    me.stopAutoslide = function() {
        if (me.timer) {
            clearTimeout( me.timer );
            me.timer = false;
        }
    }

    me.restartAutoslide = function() {
        if (!me.timer) {
            me.autoslide();
        }
    }



    /*
     *          Fade in/out buttons
     */

    me.handleLeftRightActive = function() {
        if (me.shift == 0){
            $('div#feature-bar a.arrow-left' ).removeClass('active');
        } else {
            $('div#feature-bar a.arrow-left' ).addClass('active');
        }
        if (me.shift == me.numberOfProductgroups-5){
            $('div#feature-bar a.arrow-right' ).removeClass('active');
        } else {
            $('div#feature-bar a.arrow-right' ).addClass('active');
        }
    };

}


