function toggleVisible(id, textID, textShow, textHide) {
    document.getElementById(id).style.display = document.getElementById(id).style.display == 'none' ? 'block' : 'none';
    document.getElementById(textID).firstChild.data = document.getElementById(id).style.display == 'none' ? textShow : textHide;
}

var fadeTimers = new Object();
  
function fade(id, destOp, rate, delta) {
	clearTimeout(fadeTimers[id]);
	var obj = document.getElementById(id);
	var opacity;
	var type;
	if (typeof obj.filters != 'undefined') { // IE
		opacity = obj.filters.alpha.opacity;
      	type = 0;
	} else if (typeof obj.style.opacity != 'undefined') { // CSS3
		opacity = obj.style.opacity;
		type = 1;
	} else if (typeof obj.style.MozOpacity != 'undefined') { // Mozilla
		opacity = obj.style.MozOpacity;
		type = 2;
	} else
	return;

	if (type > 0) {
		opacity *= 100;
	}
	diff = destOp - opacity;
	var dir = opacity > destOp ? -1 : 1;
	var delta = Math.min(dir * diff, delta);
	opacity += delta * dir;
	if (type == 0)
		obj.filters.alpha.opacity = opacity;
	else if (type == 1)
		obj.style.opacity = opacity / 100;
	else
		obj.style.MozOpacity = opacity / 100;
	if (dir == 1 && opacity < destOp  ||  dir == -1 && opacity > destOp)
		fadeTimers[id] = setTimeout("fade('"+id+"',"+destOp+","+rate+","+delta+")", rate);
}
