$(document).ready(function () {
    var slideshow = $('.app\\/home\\/slideshow-2011 .show');
    var container = slideshow.find('.viewer');
    var slides = container.find('.slide');
    var cur = 0;
    var animating = false;
    var transition_time = 1500;
    var pause_time = 3000;
    
    function show_slide(which) {
        if (animating) {
            return;
        }
        if (which >= slides.size()) {
            which = 0;
        }
        animating = true;
        var next = slides.eq(which);
        var active = slides.eq(cur);
        next.css({'opacity':0,'display':'block'}).appendTo(container);
        next.animate({'opacity':1}, transition_time, function () {
            cur = which;
            active.removeClass('active');
            next.addClass('active');
            animating = false;
            rotate();
        });
    }
    
    function show_next_slide() {
        show_slide(cur+1);
    }
    
    function rotate() {
        slideshow.queue(function () {
            window.setTimeout(show_next_slide, pause_time);
        }).dequeue();
    }
    
    // preload all slides
    var to_load = slides.size();
    slides.each(function () {
        var pl = $('<img/>');
        pl.load(function () {
            to_load = to_load - 1;
            if (to_load == 0) {
                rotate();
            }
        });
        pl.attr('src', $(this).find('img').attr('src'));
    });
});
