$(function() {
    var SPEED = 'slow';
    var EASING = 'easeOutQuad';
    var slides = new Array();
    var positions = new Array(
        [
            { // back left
                'top': 94,
                'left': 150,
                'width': 199,
                'height': 186
            },
            {
                'z-index': 0
            }
        ],
        [
            { // left
                'top': 50,
                'left': 18,
                'width': 299,
                'height': 279
            },
            {
                'z-index': 10
            }
        ],
        [
            { // middle
                'top': 0,
                'left': 264,
                'width': 398,
                'height': 372
            },
            {
                'z-index': 20
            }
        ],
        [
            { // right
                'top': 50,
                'left': 621,
                'width': 299,
                'height': 279
            },
            {
                'z-index': 10
            }
        ],
        [
            { // back right
                'top': 94,
                'left': 589,
                'width': 199,
                'height': 186
            },
            {
                'z-index': 0
            }
        ],
        [
            { // back middle
                'top': 94,
                'left': 372,
                'width': 199,
                'height': 186
            },
            {
                'z-index': 0,
                'display': 'none'
            }
        ]
    );
    
    var current = 1;
    var d = function(delta) {
        var i = current + delta;
        while (i >= slides.length) {
            i = i - slides.length;
        }
        while (i < 0) {
            i = slides.length + i;
        }
        return i;
    }
    var go_to = function(i) {
        current = i;
        slides[d(-2)].go_to(5);
        slides[d(2)].go_to(5);
        slides[d(-1)].go_to(1);
        slides[d(1)].go_to(3);
        slides[d(0)].go_to(2);
    }
    var go_next = function() {
        go_to(d(1));
    }
    var go_prev = function() {
        go_to(d(-1));
    }
    
    $('#rotator-slides a').each(function(i) {
        var slide = new Object();
        slide.a = $(this);
        slide.img = $(this).find('img');
        slide.current = -1;
        slide.go_to = function(index) {
            if (index != slide.current) {
                slide.current = index;
                if (current != i) {
                    slide.img.animate(positions[index][0], SPEED, EASING, function() {
                        slide.img.css(positions[index][1]);
                    });
                } else {
                    slide.img
                    .css(positions[index][1])
                    .animate(positions[index][0], SPEED, EASING);
                }
            }
        }
        slide.a.click(function(e) {
            if (current !== i) {
                e.preventDefault();
                go_to(i);
            }
        });
        
        slide.img.css(positions[5][0]);
        slide.img.css(positions[5][1]);
        
        slides.push(slide);
    });
    
    $('#rotator-btn-next').click(function(e) {
        e.preventDefault();
        go_next();
    });
    $('#rotator-btn-prev').click(function(e) {
        e.preventDefault();
        go_prev();
    });
    
    var mouseOver = false;
    $('#rotator .slide').hover(function() {
        mouseOver = true;
    }, function() {
        mouseOver = false;
    });
    
    setTimeout(function() { go_to(0); }, 500);
    setTimeout(function() { do_timeout(); }, 2000);
    
    var timeout;
    var do_timeout = function() {
        if (!mouseOver) {
            go_to(d(+1));
        }
        timeout = setTimeout(do_timeout, 6000);
    }
});

