var SlideShow = Class.create({
    initialize: function(){
        this.currentElement = null;
    },
    
    add: function(container){
        var containerPanel = $(container);
        var containerPanelId = containerPanel.identify();
        var elements = containerPanel.select(".slideshow_element");


        var firstElement = elements.first();
        for(var i = 0; i < elements.size(); i++){
            var element = elements[i];
            if(element.select(".slideshow_image").first().empty()){
                element.remove();
            }
            if(i > 0){
                element.setStyle({ zIndex: i , position: 'absolute' });
                element.clonePosition(firstElement);
            }
            element.select(".slideshow_caption").first().remove();
        }
        if(firstElement.nextSiblings().size() > 0){
            this.currentElement = firstElement.nextSiblings().first();
            setInterval('slideshowHelper()', 7000);
            var call = '$(\'' + firstElement.identify() + '\').hide()';
            setTimeout(call, 12000);
        }
    },
    
    addAll: function(){
        var slideShows = $$(".slideshow_container");
        for(var i = 0; i < slideShows.size(); i++){
            this.add(slideShows[i]);
        }
    },
    
    play: function(element){
        var element = $(element);
        var prevElements = element.previousSiblings();
        var nextElements = element.nextSiblings();
        
        element.setStyle({ zIndex: 10 });
        
        if(prevElements.size() > 0){
            prevElements.first().setStyle({ zIndex: prevElements.size() - 1 })
        }else{
            nextElements.last().setStyle({ zIndex: nextElements.size() })
        }
        
        element.makePositioned();
        element.appear({ duration: 3.0 });
        
        var call = '$(\'' + element.identify() + '\').hide()';
        if(nextElements.size() > 0){
            this.currentElement = nextElements.first()
            setTimeout(call, 12000);//TODO CHECK this
        }else{
            this.currentElement = prevElements.last()
            setTimeout(call, 12000);
        }
    }
});

var slideShow = new SlideShow();

function slideshowHelper(){
    slideShow.play(slideShow.currentElement);
}

Event.observe(window, 'load', function() {
    slideShow.addAll();
});

