// Initialize.
var timerArray = new Array();
var timerCount = 0;
var speed = 2000;
var pause = false;

function resetTimeouts() {
    timerArray = new Array();
    timerCount = 0;
}

function clearTimeouts() {
    for (var i = 0; i < timerArray.length; i++) {
        clearTimeout(timerArray[i]);
    }
    resetTimeouts();
}

function init_rotator() {
    clearTimeouts();
    if ($('#weeklyspecial_rotator li').length <= 0) {
        timerArray[timerCount++] = setTimeout(init_rotator, 500);
        return;
    }
    else {
        pause = false;
        rotate($('#weeklyspecial_rotator li:visible:first'));
        return;
    }
}


// Rotator function.
function rotate(element) {
    // Stop, if user has interacted.
    if (pause) {
        return;
    }
    // Either the next /first <li>.
    var $next_li = $(element).next('li').length ? $(element).next('li') : $('#weeklyspecial_rotator li:first');

    // Continue.
    function doIt() {
        rotate($next_li);
    }

    // Fade out <li>.
    $(element).fadeOut(speed);

    // Show next <li>.
    $($next_li).fadeIn(speed, function() {
    // Slight delay.
        timerArray[timerCount++] = setTimeout(doIt, speed);
    });
}
