
function SimpleSlideshow()
{
    var PrototypesObject = new Prototypes();
    var Class = this;

    // ID
    this.ID = '';

    // Container
    this.Container = '';

    // Settings
    this.Width = 600;
    this.Height = 400;
	this.BackgroundColor = '#000000';
    this.TransitionDelay = 1000;
    this.TransitionDuration = 300;

    // Content
    this.Images = new Array();
    this.Thumbnails = new Array();
    this.noImages = 0;

    //
    this.ImagesLoaded = new Array();
    this.ImagesResized = new Array();
    this.currentImage = 0;
    this.currentImageLoading = 0;
    this.AnimationID;
    this.AnimationON = true;

    this.init = function(id, container, data, width, height)
    {
        this.currentImage = 1;
        this.ID = id;
        this.Container = container;
        if (width != undefined) this.Width = width;
        if (height != undefined) this.Height = height;
        this.parseData(data);
    }

    this.parseData = function(data)
    {
        this.BackgroundColor = data.split(';;;')[0].split(';;')[0];
        this.TransitionDelay = data.split(';;;')[0].split(';;')[1];
        this.TransitionDuration = parseInt(data.split(';;;')[0].split(';;')[2]);
        
        this.Images = data.split(';;;')[1].split(';;');
        this.noImages = this.Images.length;
        
        var i = 0;
        for (i=0; i<this.noImages; i++) this.ImagesLoaded[i] = false;

        this.setContainer();
        this.initSlideshow();
    }

    this.setContainer = function()
    {
        $(this.Container).css('overflow', 'hidden');
        $(this.Container).css('margin', '0px');
        $(this.Container).css('padding', '0px');
        $(this.Container).css('background', this.BackgroundColor);
        $(this.Container).width(this.Width);
        $(this.Container).height(this.Height);
        $(this.Container).css('cursor', 'pointer');
        this.AnimationON = true;
        $(this.Container).click(function()
        {
            if (Class.noImages > 1)
            {
                var jumptTo = Class.currentImage+1;
                if (Class.currentImage == Class.noImages) jumptTo = 1;

                if (Class.ImagesLoaded[jumptTo-1] == true && Class.AnimationON == false) Class.animation();
            }
        });
    }

    this.initSlideshow = function()
    {
        var HTML = '';
        
        for (i=1; i<=this.noImages; i++)
            HTML += '<div class="DOP_SimpleSlideshow_Image" id="DOP_SimpleSlideshow_'+this.ID+'_Image_'+i+'"></div>';
        
        $(this.Container).html(HTML);

        this.currentImageLoading = 1;
        this.loadImage(1);
    }

    this.stopSlideshow = function()
    {
        clearInterval(Class.LoadingID);
        clearInterval(Class.AnimationID);

        this.noImages = 0;
        
        var i = 0;
        for (i=0; i<this.noImages; i++) this.ImagesLoaded = false;
        this.currentImage = 0;
        this.currentImageLoading = 0;
        this.AnimationON = true;
    }

    this.loadImage = function(no)
    {
        $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).width(Class.Width);
        $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).height(Class.Height);
        if (no == 1) $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).addClass('DOP_SimpleSlideshow_loading');

        var img = new Image();

        $(img).load(function()
        {
            if (no == 1) $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).removeClass('DOP_SimpleSlideshow_loading').append(this);
            else $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).append(this);
            $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).stop(true, true).animate({'opacity':'0'}, 0);
            PrototypesObject.ResizeImage('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no, Class.Width, Class.Height, 'vertical-center');
            Class.ImagesLoaded[no-1] = true;

            if (no == Class.currentImage)
            {
                Class.AnimationON = true;
                $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+no).stop(true, true).animate({'opacity':'1'}, Class.TransitionDuration, function()
                {
                    Class.AnimationON = false;
                    if (Class.noImages > 1) Class.AnimationID = setInterval(Class.animation, Class.TransitionDelay);
                });
            }

            if (no < Class.noImages) Class.loadImage(no+1);
        }).attr('src', Class.Images[no-1]);
    }

    this.animation = function()
    {
        clearInterval(Class.AnimationID);
        var previousImage = Class.currentImage;

        if (Class.currentImage == Class.noImages) Class.currentImage = 1;
        else Class.currentImage++;
        
        if (Class.ImagesLoaded[Class.currentImage-1] == true)
        {
            Class.AnimationON = true;
            $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+previousImage).stop(true, true).animate({'opacity':'0'}, Class.TransitionDuration);
            $('#DOP_SimpleSlideshow_'+Class.ID+'_Image_'+Class.currentImage).stop(true, true).animate({'opacity':'1'}, Class.TransitionDuration, function()
            {
                Class.AnimationON = false;
                Class.AnimationID = setInterval(Class.animation, Class.TransitionDelay);
            });
        }
    }
}
