Muestra/oculta capas 100% compatible con todos los navegadores

Lo complicado no es ocultar o mostrar una capa, sino que dicha acción sea compatible con todos los navegadores del mercado:

isOPERA = (navigator.userAgent.indexOf('Opera') >= 0)? true : false;
isIE    = (document.all && !isOPERA)? true : false;
isDOM   = (document.getElementById && !isIE && !isOPERA)? true : false;
 
function procesa (id)
{
	if (isDOM)
	{
		if(document.getElementById(id).style.display=='none')
			show (id, 'table-row');
		else
			hide (id);
	}
	else if (isIE)
	{
		if(document.all[id].style.display=='none')
			show (id, 'table-row');
		else
			hide (id);
	}
	return false;
}
 
function show (id, displayValue)
{
	if (isDOM)
		document.getElementById(id).style.display = (displayValue)? displayValue : "block";
	else if (isIE)
		document.all[id].style.display = "block";
}
 
function hide (id)
{
	if (isDOM)
		document.getElementById(id).style.display = "none";
	else if (isIE)
		document.all[id].style.display = "none";
}
if (isDOM || isIE)
{
	document.writeln('<style type="text/css">');
	document.writeln('.SubItemRow \{ display: none; \}');
	document.writeln('</style>');
}
El uso del SubItemRow (el último if) todavía no lo tengo demasiado claro.

Primero detecta el tipo de navegador (opera, ie o dom) y despues procesa el estado del elemento id que hayamos pasado por parámetro. Si está oculto lo muestra y viceversa. Para ello hace uso de las funciones show() y hide() definidas más abajo.

Un ejemplo de su uso en HTML es el siguiente:

<a href="" onclick="procesa('micapa'); return false;">cambiar estado</a>
<div id="micapa" style="display: none">texto de prueba</div>