/* depends on prototype.js and Anim.js */

function onWindowLoad(func) {
	Event.observe(window, "load", func);
}

function setupActuator(transition, a) {
	if(a) {
		if(a.actuator && a.activation)
			transition.setupActuator(a.actuator, a.activation);
		else if(a.actuator)
			transition.setupActuator(a.actuator, "click-toggle");
		else
			transition.setupActuator(a);
	}
}

function setupMenu(menuId, actuators) {
	onWindowLoad(function() {
		var trans = new Anim.Trans.Transition(menuId, [ 
			new Anim.Trans.DiscreteHide(0.1)
			,new Anim.Trans.Fade(0.02, 1.0)
		], {
			easeFunction: Anim.Eases.InvertedParabolic,
			totalFrames: 10,
			framesPerSecond: 25,
			defaultActivation: "hover-on"
		});	
		
		if(actuators) {
			if(!actuators.each) actuators = $A(actuators);
			
			actuators.each(function(a) {
				setupActuator(trans, a);
			});
		}
	});
}

function setupShade(shadeId, startSize, endSize, actuators) {
	onWindowLoad(function() {
		var trans = new Anim.Trans.Transition(shadeId, [
			new Anim.Trans.Zoom( startSize, endSize )
		],{
			easeFunction: Anim.Eases.InvertedParabolic,
			totalFrames: 10,
			framesPerSecond: 25,
			defaultActivation: "hover-on"
		});
		
		if(actuators) {
			if(!actuators.each) actuators = $A(actuators);
		
			actuators.each(function(a) {
				setupActuator(trans, a);
			});
		}
	});
}

function setupFrameset(frameset, width, actuators) {
	onWindowLoad(function() {
		var fslide = new Anim.Effect.FramesetSlide(frameset, width, actuators, {
			easeFunction: Anim.Eases.InvertedParabolic,
			totalFrames: 25,
			framesPerSecond: 25,
			defaultActivation: "hover-on"
		});
	});
}