// These functions implement a "smooth" transition.
// They will call the same function over and over with a "percent done" 
// argument.  The last call will take place after "delay" milliseconds.
var glideObj = new Object;
function glide(delay,f) {
	var id = (glideObj.id = new Object);
	var step = delay/20000.0;
	for (var i = step ; i <= 1.0 ; i+= step) {
		glideCallback(f, Math.sin(Math.PI/2*i), delay*i, id);
	}
}
function interruptGlide() { glideObj.id = null; }
function glideCallback(func, part, delay, id) {	
	setTimeout(function() { if (glideObj.id == id) func(part); } , delay);
}
//
