function Opacity() {}

/*
Opacity.timeouts = new Array();

Opacity.animateOpacity = function(id, opacStart, opacEnd, millisec, executeOnFinish) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if (opacStart > opacEnd) {
		for (i = opacStart; i >= opacEnd; i--) {
			Opacity.timeouts.push(setTimeout("Opacity.changeOpacity(" + i + ",'" + id + "')", (timer * speed)));
			timer++;
		}
	} else if (opacStart < opacEnd) {
		for (i = opacStart; i <= opacEnd; i++) {
			Opacity.timeouts.push(setTimeout("Opacity.changeOpacity(" + i + ",'" + id + "')", (timer * speed)));
			timer++;
		}
	}
	Opacity.timeouts.push(setTimeout("eval("+executeOnFinish+")", millisec + 200));
}
*/

Opacity.timeouts = {};

Opacity.animateOpacity = function(id, start_opacity, end_opacity, animation_time, fps, executeOnFinish) {
	//animation_time = seconds
	//fps = frames per second
	
	Opacity.timeouts[id] = new Array();
	
	var delay = Math.round(1000 / fps); //time between frames in milliseconds
	var num_frames = Math.round(animation_time * fps);
	var opacity_incr = (end_opacity - start_opacity) / num_frames;

	for (var i = 1; i <= num_frames; i++) {
		var opacity = Math.round(start_opacity + (opacity_incr * i));
		Opacity.timeouts[id].push(setTimeout("Opacity.changeOpacity('"+id+"', "+opacity+")", (delay * i)));
	}
	
	if (executeOnFinish) Opacity.timeouts[id].push(setTimeout("eval("+executeOnFinish+")", (animation_time * 1000) + 200));
}

//change the opacity for different browsers
Opacity.changeOpacity = function(id, opacity) {
	if (document.getElementById(id)) {
		var object = document.getElementById(id);
		if (object.style.visibility != "hidden" && object.style.display != "none") {
			object.style.opacity = (opacity / 100);
			object.style.MozOpacity = (opacity / 100);
			object.style.KhtmlOpacity = (opacity / 100);
			object.style.filter = "alpha(opacity=" + opacity + ")";
		}
	}
} 

//set to opaque for different browsers
Opacity.setOpaque = function(id) {
	if (document.getElementById(id)) {
		var object = document.getElementById(id);
		object.style.opacity = 100;
		object.style.MozOpacity = 100;
		object.style.KhtmlOpacity = 100;
		object.style.filter = "alpha(opacity=" + 100 + ")";
	}
} 

//set to transparent for different browsers
Opacity.setTransparent = function(id) {
	if (document.getElementById(id)) {
		var object = document.getElementById(id);
		object.style.opacity = 0;
		object.style.MozOpacity = 0;
		object.style.KhtmlOpacity = 0;
		object.style.filter = "alpha(opacity=" + 0 + ")";
	}
} 

Opacity.cancelOpacityAnimTimeouts = function() {
	for (var i in Opacity.timeouts) {
		clearTimeout(Opacity.timeouts[i]);
	}
	Opacity.timeouts = new Array();
}

