/**
 * Simple Slideshow
 * Copyright (c) 2009 Creos Lernideen und Beratung GmbH
 *
 * Requires: jQuery 1.3.2 (Not tested with earlier versions).
 *           jQuery.timers 1.1.2
 */
var slideshowOptions = {
    div: '#slideshow',
    boxes: [],
    fadeInSpeed: 300,
    fadeOutSpeed: 300,
    interval: 5000,
    startString: 'Start',
    stopString: 'Stop'
};

var slideshowActive = false;
var slideshowOffset = 0;
var slideshowBoxes = new Array();

function slideshow()
{
    if (slideshowOffset == slideshowOptions.boxes.length)
    {
        slideshowOffset = 0;
    }
    if (typeof slideshowBoxes[slideshowOffset] == 'undefined')
    {
        $.ajax({
            url: slideshowOptions.boxes[slideshowOffset],
            async: false,
            cache: false,
            success: function(data){
                slideshowBoxes[slideshowOffset] = data;
            }
        });
    }
    
    var offset = slideshowOffset;
    
    $(slideshowOptions.div).fadeOut(slideshowOptions.fadeOutSpeed, function () {
        
        $(slideshowOptions.div).html(slideshowBoxes[offset]);
        $(slideshowOptions.div).fadeIn(slideshowOptions.fadeInSpeed);
        $('.slideshow_toggle').css('display', 'block');
        $('.slideshow_toggle').html(slideshowOptions.stopString);
    });
    slideshowOffset++;
}

function slideshowStop()
{
    $(slideshowOptions.div).stopTime("slideshowTimer");
    
    $('.slideshow_toggle').html(slideshowOptions.startString);
    $('.slideshow_toggle').addClass('slideshow_toggle_filled');

    slideshowActive = false;

    return false;
}

function slideshowStart()
{
    if (slideshowActive)
    {
        slideshowStop();
    }

    $('.slideshow_toggle').html(slideshowOptions.stopString);
    $('.slideshow_toggle').removeClass('slideshow_toggle_filled');

    $(slideshowOptions.div).everyTime(slideshowOptions.interval, "slideshowTimer", function() {
        slideshow();
    }, 0, true);

    slideshowActive = true;

    return false;
}

function slideshowToggle()
{
    if (slideshowActive)
    {
        slideshowStop();
    }
    else
    {
        slideshowStart();
        slideshow();
    }
}

function slideshowInit(options)
{
    if (typeof(options) != 'undefined')
    {
        if (typeof(options.div) != 'undefined')
        {
            slideshowOptions.div = options.div;
        }

        if (typeof(options.boxes) != 'undefined')
        {
            slideshowOptions.boxes = options.boxes;
        }

        if (typeof(options.fadeInSpeed) != 'undefined')
        {
            slideshowOptions.fadeInSpeed = options.fadeInSpeed;
        }

        if (typeof(options.fadeOutSpeed) != 'undefined')
        {
            slideshowOptions.fadeOutSpeed = options.fadeOutSpeed;
        }

        if (typeof(options.interval) != 'undefined')
        {
            slideshowOptions.interval = options.interval;
        }

        if (typeof(options.startString) != 'undefined')
        {
            slideshowOptions.startString = options.startString;
        }

        if (typeof(options.stopString) != 'undefined')
        {
            slideshowOptions.stopString = options.stopString;
        }
    }
    

    if (typeof(slideshowOptions.boxes) != 'undefined' && slideshowOptions.boxes.length > 0)
    {
        arrayShuffle(slideshowOptions.boxes);

        $('.slideshow_toggle').css('display', 'block');
        $('.slideshow_toggle').html(slideshowOptions.stopString);
        
        slideshowStart();
    }

    function arrayShuffle(arr){
        var tmp, rand;
        for(var i =0; i < arr.length; i++){
            rand = Math.floor(Math.random() * arr.length);
            tmp = arr[i];
            arr[i] = arr[rand];
            arr[rand] =tmp;
        }
    }
}
