function Slideshow(slideshowID)
{
    this.playing = true;
    this.opacity = 50;
    this.slideshowSpeed = 9000;
    this.slidesList;
    this.slideshow;
    this.slides;
    this.timer;
    this.fadeTimer;
    this.fadeOpacity;
    this.Initialise = Initialise;
    this.Play = Play;
    this.PlayNext = PlayNext;
    this.changeOpacity = changeOpacity;
    this.CrossFade = CrossFade;
    
    
    function Initialise()
    {
        mySlideshowRef = this;
        this.slideshow  = document.getElementById(slideshowID);
        list = this.slideshow.getElementsByTagName("UL");
        this.slidesList = list[0];
        this.slides = this.slidesList.getElementsByTagName("LI");

        for(x=0; x < this.slides.length; x++)
        {
            slide = this.slides[x];
            slide.id = this.slidesList.id + x;
            //slide.onmouseover = function(){ clearTimeout(mySlideshowRef.fadeTimer);};
            
            if (x > 0)
            {
                this.slides[x].style.display = 'none';
                this.changeOpacity(this.opacity,this.slides[x]);
            }
            else this.slides[x].style.display = 'block';
        }
    }
    
    function Play()
    {
        this.playing = true;
        this.timer = setTimeout('mySlideshowRef.PlayNext()', this.slideshowSpeed);
    }

    function PlayNext()
    {
        for(x=0; x < this.slides.length; x++)
        {
                
                if (this.slides[x].style.display == 'block'){
                    nextslide = ( x == this.slides.length - 1) ? 0 : x + 1;
                    this.fadeOpacity = 0;
                    this.CrossFade(x,nextslide);
                    return;
                }
        }
    }
    
    function Stop()
    {
        clearTimeout(this.timer);
        this.playing = false;
    }
    
    function CrossFade(fromID, toID)
    {
        if (this.fadeOpacity == 0) this.slides[toID].style.display = "block";
        this.fadeOpacity += 10;
        this.changeOpacity(this.fadeOpacity, this.slides[toID])
        this.changeOpacity(100 - this.fadeOpacity, this.slides[fromID])
        if(this.fadeOpacity < 100)
        {
            this.fadeTimer = setTimeout('mySlideshowRef.CrossFade('+fromID+', '+toID+')', 100);
        }
        else
        {
            clearOpacity(this.slides[toID]);
            this.slides[fromID].style.display = "none";
            this.changeOpacity(100, this.slides[fromID]);
            if(this.playing) this.Play();
        }
    }
    
    
    /*function ThumbnailHover(sourceElement)
    {
        itemId = sourceElement.id.replace(this.thumbnailList.id,'');
        
        for(x=0; x < this.slides.length; x++)
        {
            clearOpacity(this.slides[x]);
            if (x == itemId)
            {
                this.slides[x].style.display = 'block'
                this.changeOpacity(100,this.thumbnails[x])
            }
            else
            {
                this.slides[x].style.display = 'none';
                this.changeOpacity(this.opacity,this.thumbnails[x]);
            }
        }

    }*/
    
    function changeOpacity(opacity, object) { 
    object.style.opacity = (opacity / 100); 
    object.style.MozOpacity = (opacity / 100); 
    object.style.KhtmlOpacity = (opacity / 100); 
    object.style.filter = "alpha(opacity=" + opacity + ")"; 
    }    
    
    function clearOpacity(object) { 
    object.style.opacity = 100; 
    object.style.MozOpacity = 100; 
    object.style.KhtmlOpacity = 100; 
    object.style.filter = ""; 
    }
}