/*     ACTIONS
 * --- sliding teaser --- */

var slide_count;
var slide_current = 0;
var slide_timer;
var slide_delay = 5000;

function sliderteaser_slideTo(slide) {
    for (i = 0; i < slide_count; i++) {
        $$('#slider_teaser .slides .slide-' + i).tween('left', (i - slide) * 616);
    }
    for (i = 0; i < slide_count; i++) {
        $$('#slider_teaser .controls .dot-' + i).removeClass('active');
    }
    $$('#slider_teaser .controls .dot-' + slide).addClass('active');
    slide_current = slide;

    sliderteaser_reset();
}

function sliderteaser_slideNext() {
    var slide = (slide_current + 1) % (slide_count);
    sliderteaser_slideTo(slide);
}

function sliderteaser_slidePrev() {
    var slide = slide_current - 1;
    if (slide < 0) { slide = slide_count - 1; }
    sliderteaser_slideTo(slide);
}

function sliderteaser_starttimer() {
    slide_timer = setTimeout("sliderteaser_timed()", slide_delay);
}
function sliderteaser_cleartimer() {
    clearTimeout(slide_timer);
}
function sliderteaser_timed() {
    sliderteaser_reset();
    sliderteaser_slideNext();
}
function sliderteaser_reset() {
    sliderteaser_cleartimer();
    sliderteaser_starttimer();
}

function sliderteaser_dotcallback(i) {
    return function(e) {
        sliderteaser_slideTo(i);
    };
}


document.addEvent('domready', function() {
    if ($$("#slider_teaser").length > 0) {
        // better check?
        slide_count = $$('#slider_teaser .slides .slide').length;
        if (slide_count > 1) {
            $$('#slider_teaser .slides .slide').set('tween', {
                transition: Fx.Transitions.Quad.easeInOut
            });

            var i;

            // randomize slides
            var numbers = [];
            for (i = 0; i < slide_count; i++) {
                numbers.push(i);
            }
            numbers.sort(function(a, b) {return (Math.random()*2)-1; });

            // number slides
            for (i = 0; i < slide_count; i++) {
                $$('#slider_teaser .slides .slide')[numbers[i]].addClass("slide-" + i);
            }
            // slide positioning
            for (i = 1; i < slide_count; i++) {
                $$('#slider_teaser .slides .slide-' + i).setStyle('left', i * 616);
            }

            // setting up controls
            (new Element("img", {
            	src: 'http://www.nvv-ag.de/css2/slider-arrow.png',
                'class': 'arrow-left',
                events: {
                    click: sliderteaser_slidePrev,
                    mouseover: function() {
                        this.addClass("hover");
                    },
                    mouseout: function() {
                        this.removeClass("hover");
                    }
                }
            })).inject($$("#slider_teaser .controls")[0]);
            for (i = 0; i < slide_count; i++) {
                (new Element("img", {
            		src: 'http://www.nvv-ag.de/css2/slider-dot.png',
                    'class': 'dot dot-' + i,
                    events: {
                        click: sliderteaser_dotcallback(i)
                    }
                })).inject($$("#slider_teaser .controls")[0]);
            }(new Element("img", {
            	src: 'http://www.nvv-ag.de/css2/slider-arrow.png',
                'class': 'arrow-right',
                events: {
                    click: sliderteaser_slideNext,
                    mouseover: function() {
                        this.addClass("hover");
                    },
                    mouseout: function() {
                        this.removeClass("hover");
                    }
                }
            })).inject($$("#slider_teaser .controls")[0]);

            var controls_width = $$("#slider_teaser .controls").getWidth();
            $$("#slider_teaser .controls").setStyle('left', (616 - controls_width) / 2);

            // finishing
            sliderteaser_slideTo(slide_current);
        }
    }
});

