This is a requestAnimationFrame implementation in JavaScript.
If you don't know what requestAnimationFrame is, you can see the latest draft of the spec. It's a browser API for script-based animation. It allows the browser to control the frame rate in order to make the animation smooth while saving computation power so you don't have to worry about that.
var animationHandle;
function startAnimation() {
drawAnimationFrame();
};
function stopAnimation() {
window.cancelRequestAnimationFrame(animationHandle);
};
function drawAnimationFrame() {
/* draw your animation frame here */
animationHandle = window.requestAnimationFrame(drawAnimationFrame);
};