Вот что мне спело средство разработки в опере на мой скрипт:
	
	| 
		 Код: 
	 | 
	ecmascript
http://mysite.ru/
Timeout thread: delay 100 ms
Error:
name: TypeError
message: Statement on line 11: Cannot convert undefined or null to Object
Backtrace:
  Line 11 of linked script http://mysite.ru/catmenu.js: In function hL
    document.getElementById(level).style.visibility = 'hidden';
  Line 1 of unknown script 
    hL("cm_lev2_15")
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' | 
	
вот скрипт (прячет элементы через css):
timer_mod=100;
function hL(level)
{
var al=document.getElementById(level).style.visibility;
if (al=='visible')
{
document.getElementById(level).style.visibility = 'hidden';
}
}
// тут я запускаю код чтобы он закрыл все отрытые элементы
//кстати тоже не знаю как как сделать, чобы код выполнялся не до i<20 , а пока не закончатся cm_lev2_+'i'
for (i=1;i<20;i++)
 {
  setTimeout('hL("cm_lev2_'+i+'")', timer_mod);
 }
При всем при этом скрипт работает нормально, просто понадобилось валидность привести в порядок.
Я предполагаю, что он матерится на несуществующий объект c "ID такимто" но понятия не имею как запретить дальнейшее выполнения скрипта если "id такойто" не существует.
В пхп это например делается функцией isset(), но здесь как это сделать я не знаю, причем если "document.getElementById(level)" загонять в переменную, то он начинает выдавать такую же ошибку еще на моменте присвоения.