Przedstawiam gotowiec...

Zalety:
-zapisywanie/odczytywanie statusu przez cookie
-łatwa modyfikacja wyglądu stylem css
-szybka integracja ze stroną
-kompatybilność z przeglądarkami IE, FF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #000000;
}
body {
background-color: #FFFFFF;
margin-left: 10px;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
}
a {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #FFFFFF;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #FFFFFF;
}
a:hover {
text-decoration: none;
color: #FFFFFF;
}
a:active {
text-decoration: none;
color: #FFFFFF;
}
.menu_naglowek {
background-color: #820000;
PADDING-LEFT: 8px;
PADDING-RIGHT: 8px;
PADDING-TOP: 2px;
PADDING-BOTTOM: 2px;
FONT-FAMILY: Verdana, Tahoma;
text-align: center;
FONT-SIZE: 10px;
FONT-WEIGHT: bold;
color: #FFFFFF;
height: 18px;
cursor: pointer;
}
.menu_tresc {
background-color: #FFFFFF;
BORDER-LEFT: 1px solid #820000;
BORDER-RIGHT: 1px solid #820000;
BORDER-TOP: 0px solid;
BORDER-BOTTOM: 1px solid #820000;
PADDING-LEFT: 8px;
PADDING-RIGHT: 8px;
PADDING-TOP: 5px;
PADDING-BOTTOM: 5px;
FONT-FAMILY: Verdana, Tahoma;
FONT-SIZE: 10px;
COLOR: #000000;
}
-->
<script language="javascript"> function init()
{
var cookie = getCookie('collapse_obj');
if(cookie)
{
var values = cookie.split(',');
for(var i = 0; i < values.length; i++)
{
var itm = getItem(values[i]);
if(itm)
itm.style.display = 'none';
}
}
}
function makeCookie(name, value)
{
var cookie = name + '=' + escape(value) + ';';
document.cookie = cookie;
}
function getCookie(name)
{
if(document.cookie == '')
return false;
var firstPos;
var lastPos;
var cookie = document.cookie;
firstPos = cookie.indexOf(name);
if(firstPos != -1)
{
firstPos += name.length + 1;
lastPos = cookie.indexOf(';', firstPos);
if(lastPos == -1)
lastPos = cookie.length;
return unescape(cookie.substring(firstPos, lastPos));
}
else
return false;
}
function getItem(id)
{
var itm = false;
if(document.getElementById)
itm = document.getElementById(id);
else if(document.all)
itm = document.all[id];
else if(document.layers)
itm = document.layers[id];
return itm;
}
function ShowHide(id)
{
itm = getItem(id);
if(!itm)
return false;
if(itm.style.display == 'none')
itm.style.display = '';
else
itm.style.display = 'none';
////////////////////
cookie = getCookie('collapse_obj');
values = new Array();
newval = new Array();
add = 1;
if(cookie)
{
values = cookie.split(',');
for(var i = 0; i < values.length; i++)
{
if(values[i] == id)
add = 0;
else
newval[newval.length] = values[i];
}
}
if(add)
newval[newval.length] = id;
makeCookie('collapse_obj', newval.join(','));
return false;
}
<table width="250" border="0" cellspacing="0" cellpadding="0"> <td class="menu_naglowek" onclick="javascript:ShowHide('menu_1');"><a name="menu1" id="menu1">Menu1
</a></td>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="menu_1"> <td height="20">nazwa1
</td> <td height="20">nazwa2
</td>
<table width="250" border="0" cellspacing="0" cellpadding="0"> <td class="menu_naglowek" onclick="javascript:ShowHide('menu_2');"><a name="menu2" id="menu2">Menu2
</a></td>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="menu_2"> <td height="20">nazwa1
</td> <td height="20">nazwa2
</td>
Jeśli chcemy aby przy pierwszym otwarciu przeglądarki jakiś fragment był domyślnie ukryty to nieco modyfikujemy kod:
zamiast
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="menu_1">
dajemy
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="menu_1" style="display: none;">
Dodatkowo jak ktoś potrzebuje zastosować tutaj elemnt <DIV> zamiast id="nazwa"
to może to zrobic tak:
<div id="nazwa" style="display: block;"> (zamiast block można też wpisać none dla zawartości ukrytej domyślnie)
zawartość html która będzie się pokazywać/ukrywać
Z uwagi na to że na JS nie znam się za bardzo dlatego mam jeszcze do was jedno pytanie, jak przerobić tą fukcję JS powyżej, żeby można było dodać kolejny parametr mówiący o tym czy box ma być domyślnie zamknięty/otwarty po pierwszym otwarciu strony?
ShowHide('menu_2', 'true'); //jak true to otwarty a jak false to domyślnie zamknięty
PS. zmiany powinny nastąpić we funkcji init() i ShowHide() i jeśli mamy parametr false to tam gdzie było none dajemy block a tam gdzie block dajemy none
Dla kogos kto siedzi w JS to będzie prosta przeróbka, pomożecie zatem?