var d = 4.5;
var speed = 0.00;
var maxAccel = 0.005;
var maxSpeed = 0.15;
var speedSuggestion = 0.02;
var offset = 0.08;
var platter = 614;
var rad = 650;
var letters;
var desiredD = 5.5;
var timer;

$(document).ready(
    function() {
        letters = [
            $("#S"),
            $("#C"),
            $("#H"),
            $("#I"),
            $("#N"),
            $("#Y")
        ];

        doMove();

        timer = setTimeout("animate();", 1000);

        $("#platter").click(function(e){
            desiredD = Math.random() * Math.PI * 2;
            clearTimeout(timer);
            animate();
        });

        $(".letter").show();
    }
);

function doMove() {
    var runningOffset = 0;
    var o = rad/2;
    var t = (rad - platter)/2 + 7;

    // calc speed
    offsetD = desiredD - d;
    newSpeed = offsetD * speedSuggestion;
    newSpeed = Math.min(newSpeed, maxSpeed);

    // cap accel
    if (Math.abs(newSpeed) > Math.abs(speed)) {
        speedDelta = newSpeed - speed;
        if (Math.abs(speedDelta) > maxAccel) {
            newSpeed = speed + (speedDelta/Math.abs(speedDelta) * maxAccel);
        }
    }
    speed = newSpeed;

    for(i = 0; i < letters.length; i++, runningOffset += offset) {
        var x = Math.cos(d + runningOffset) * o + o - t;
        var y = Math.sin(d + runningOffset) * o + o - t;
        //alert(x + ", " + y);
        letters[i].css({
            left: x,
            top: y});
    }

    d += speed;
}

function animate() {
    doMove();
    if (Math.abs(speed) > 0.001) {
        timer = setTimeout("animate()", 30);
    }
}
