Действие данного скрипта вы можете лицезреть на Вайте.
Скрин, если внезапно поменяется набор скриптов.

Таки да, приступим. Эту часть скрипта мы отправляем в html-верх, а пояснения, как обычно, ниже.

<script type="text/javascript">
//cookies
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}

var aimg = {
open: '-',
close: '+'
}
function categorytoggle(el){
var cat = $(el).parents('div.category');
cat.children('div.container').toggle('slow');
el.innerHTML = el.innerHTML == aimg.open ? aimg.close : aimg.open;
var catc = getcookie(cat.attr('id'));
catc = catc == 'close' ? 'open' : 'close';
setcookie(cat.attr('id'),catc,3600*24*30*1000);
}
</script>

Выделенные плюс и минус есть ничто иное, как показатели свертывания и развертывания категорий. Вместо них можно вставить любые другие символы, даже картинку (<img src="адрес" border="0" />). Плюс - при закрытой категории отображается, минус, соответственно, при открытой.

Без изменений в html-низ:

Код:
<script type="text/javascript">
$('#pun-main div.category > h2 div.catleft').after('<a href="#" onclick="categorytoggle(this); return false;" style="float: right;">'+aimg.open+'</a>');
for(var i=1;i<=$('#pun-main div.category').length;i++)
    if(getcookie('pun-category'+i)=='close'){
	$('#pun-category'+i+' > div.container').css({display: 'none'});
	$('#pun-category'+i+' > h2 > a').html(aimg.close)
}
</script>