Kd-one: Probleme mit DHTML-Menü

Beitrag lesen

Ich hab mir mühevoll ein DHTML menü geschrieben, funktioniert auch soweit ganz gut, solange ich nur eine Ebene öffne.
Sobald ich aber versuche, aus der ersten Ebene eine zweite zu öffnen, spielt da Script verrückt.

Zur Erklärung:

Das Script:

timer=false
function show_it(id)
{
if(window.opera || (document.getElementById && !document.all))
document.getElementById(id).style.visibility = 'visible';
else if(document.all)
document.all[id].style.visibility = 'visible';
else if(document.layers)
document.layers[id].visibility = 'show';
}
function hide_it(id)
{
if(window.opera || (document.getElementById && !document.all))
document.getElementById(id).style.visibility = 'hidden';
else if(document.all)
document.all[id].style.visibility = 'hidden';
else if(document.layers)
document.layers[id].visibility = 'hide';
}

Der Aufruf erfolgt so:

<a class="sub" id="l2" href="#" onMouseOver="clean1();window.clearTimeout(timer);show_it('divMenu1')"
onMouseOut="timer=window.setTimeout('hide_it('divMenu1')',100);" style="cursor:default;">    ALLGEMEIN<img border="0" src="/images/pix.gif" width="16" height="9" alt=""></a>

Damit wird die erste Ebene geöffnet, deren Layer folgenden Aufruf enthält:

<div id="divMenu1" style="visibility:hidden;"
onMouseOver="change('l2','sub2');change('w2','mOverO');window.clearTimeout(timer);show_it('divMenu1')"
onMouseOut="change('l2','sub');change('w2','mOutO');timer=window.setTimeout('hide_it('divMenu1')',100);"><?php include("includes/allgemein/menue.txt") ?></div>

Das "DIV" wird via CSS definiert.

die zweite Ebene wird genauso wie die erste geöffnet, geht auch, solange die Maus den ersten Layer nicht verläßt.
So sieht der Layer aus:

<div id="divMenu6" style="visibility:hidden;"
onMouseOver="window.clearTimeout(timer);show_it('divMenu6');show_it('divMenu4');change('w64','mOverO');"
onMouseOut="change('w64','mOutO');timer=window.setTimeout('hide_it('divMenu6')',100);timer=window.setTimeout('hide_it('divMenu4')',200);"><?php include("includes/javascript/popup/menue.txt") ?></div>

Beim onMouseOver-Event sollte für den geöffneten Layer und auch den Layer, von dem dieses Menü geöffnet wird, der Timeout abgebrochen werden, solange die Maus über Layer 2 ist.
Genau das funktioniert aber nicht. Die funktion change() wird korrekt ausgeführt(Hintergrundbildtausch), ebenso das Verbergen der beiden Layer zeitverzögert.
Der Timeout ist aus zwei Gründen nötig:
Erstens braucht man ein wenig Zeit, um mit der Maus zwischen den Layern zu wechseln und zweitens flackert das Menü in Mozilla ganz fürchterlich, wenn der Timeout fehlt.

Nun wird der Timeout beim onMouseOver im zweiten Layer nicht abgebrochen und ich weiß nicht, warum.
Kann einer von euch Cracks den Fehler finden?

Ach ja, der Link zum Problemkind:
<a href="http://faq.united-web.at/layout_1.php" target="_blank">Unter JAVASCRIPT/POPUP´S schauen!</a>
(Sicherheitshalber hab ich unten die URL zur Seite nochmal eingefügt, für den Fall, daß der Link hier nicht funktioniert. :-)) )

Ach ja, noch was:
Bei meiner letzten Frage erhielt ich die Lösung zu meinem Problem in einer Form, mit der ich absolut nichts anfangen konnte. Erst die Erklärung eines anderen bereitete mir die Information so auf, daß ich auch die Zusammenhänge und somit das Problem verstehen konnte.
Ich ersuche um ausreichend dokumentierte Antworten, ich bin Anfänger in Sachen JavaScript, mit Verweisen auf allgemeine Problemlösungen oder versteckten Hinwiesen auf Lösungsansätze kann ich recht wenig anfangen, da ich u.U. die Ansätze mit meinen derzeitigen Kenntnissen (noch) nicht verstehe. Also, macht euch bitte die Mühe und antwortet so, daß es auch ein Dummy versteht. :-)

Danke und Gruß

Kurt