I am trying to menu an expandable menu when you click on it. It seems to work ok in IE, but it Doesn't in Mozilla.

Java script (default.js):
Code:
function BrowserCheck() {
	this.ns4 = (document.layers)? true:false;
	this.ie = (document.all && !window.opera)? true:false;
	this.ie4 = (document.all && !document.getElementById)? true:false;
	this.iewin = (window.ActiveXObject)? true:false;
	this.dom = (document.getElementById)? true:false;
	this.gecko = (navigator.userAgent.indexOf('Gecko')!=-1)? true:false;
	this.nsGecko = ((navigator.userAgent.indexOf('Gecko')!=-1)&&navigator.userAgent.indexOf('Netscape')!=-1)? true:false;
	this.opera = (window.opera)? true:false;
	this.mac = (navigator.userAgent.indexOf('Mac')!=-1)? true:false;
	this.iemac = ((navigator.userAgent.indexOf('Mac')!=-1) && (document.all&&(!window.opera)) )? true:false;
}
is = new BrowserCheck()

if (is.dom) {
	//document.write('<link rel="stylesheet" href="style.css" media="all" />')
}

if (is.gecko) {
	/* 
	document.write('<style>');
	document.write('#content { position:relative;top:-1px; }');
	document.write('#contentForum { ;position:relative;top:-1px; }');
	document.write('</style>');
	*/
}

function init() {

}

//window.onload = init;

// these functions are for the menu guide dhtml:

function setDesc(head,text,e) {
  if (!document.getElementById) {
    document.descriptionForm.description.value = head+"\n\n"+text;
  } else {
    // confirmed in newest opera, ie, and moz
    if (!e) e = window.event;
    d = document.getElementById('explanationDiv');
    d.firstChild.firstChild.nodeValue = head;
    d.lastChild.firstChild.nodeValue = text;
    if (document.all && !window.opera) {
        posLeft = document.body.scrollLeft+20+e.clientX;
        posHeight = document.body.scrollTop+10+e.clientY;
        widthSpaceLeft = document.body.clientWidth;
        widthSpaceHeight = document.body.clientHeight;
    } else { // opera does things like moz, nice to know
        posLeft = window.pageXOffset+20+e.clientX;
        posHeight = window.pageYOffset+10+e.clientY;
        widthSpaceLeft = window.innerWidth;
        widthSpaceHeight = window.innerHeight;
    }
    if (posLeft+200 > widthSpaceLeft) {
        posLeft -= 240;
    }
    d.style.left = posLeft+"px";
    d.style.top = posHeight+"px";
    d.style.visibility = "visible";
  }
}

function killDesc() {
    d.style.visibility = "hidden";
}

// this function, is for the extensions listings expanding stuff

t = new Image();
t.src = "images/bookclosed.PNG";
d = new Image();
d.src = "images/bookopen.PNG";

function extension(header) {
    if (header.nextSibling) {
        if (header.nextSibling.style.display == "block") {
            header.title = "Click to expand";
            header.nextSibling.style.display = "none";
            header.parentNode.style.backgroundImage = "url('images/bookclosed.PNG')";
        } else {
            header.title = "Click to collapse";
            header.nextSibling.style.display = "block";
            header.parentNode.style.backgroundImage = "url('images/bookopen.PNG')";
        }
    }
}

function expandAllCategories(button) {
    var doAction = "";
    if (button.value== "Expand all categories") {
        doAction = "Expand";
        button.value = "Collapse all categories";
    } else {
        doAction = "Collapse";
        button.value = "Expand all categories";
    }

    if (document.getElementsByTagName) {
        var p = document.getElementsByTagName("p");
        for (var i = 0; i < p.length; i++ ) {
            if (p[i].className == "extensionCategory") {
                if (doAction=="Expand") {
                    if (!(p[i].nextSibling.style.display == "block")) {
                        p[i].click();
                    }    
                } else {
                    if (p[i].nextSibling.style.display == "block") {
                        p[i].click();
                    }
                }
            }
        }
    }
}
HTML:
HTML Code:
<!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" xml:lang="en" lang="en">
<head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
	<script src="default.js" type="text/javascript"></script>
	<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<br />
<a href="index.html" target="_top">Home</a>
<br />
<br />
<a href="backup.html" target="main">Backup your registry</a>
<br />
<a href="contact.html" target="main">Contact Us</a>
<br />
<br />     

<div class="extensionsList">
 <div><p class="extensionCategory" onclick="extension(this);" title="Click to expand">Desktop Tweaks</p> 
 <ul>
  <li><a href="associateanicondrive.html" target="main">Associate an icon with a drive</a>
  </li>
  <li><a href="">.....</a>
  </li>
  <li><a href="">....</a>
  </li>
  <li><a href="">....</a>
  </li>
  <li><a href="">....</a>
  </li>
 </ul>
 </div>   
</div>
</body>
</html>
CSS (style.css):
Code:
.extensionsList div {
	font-size: 11px;
}
.extensionsList div li {
	font-size: 11px;
}
#explanationDiv {
	padding: 3px;
	position: absolute;
	top: 0;
	left: 0;
	visibility: hidden;
	color: InfoText;
	background: InfoBackground;
	width: 200px;
	border: 1px solid black;
}

#explanationDiv h2 {
	font-size: 12px;
	font-weight: 900;
	color: InfoText;
	background: InfoBackground;
	margin: 2px 2px 2px 2px;
}

#explanationDiv p {
	color: InfoText;
	background: InfoBackground;
	margin: 2px 2px 2px 2px;
}

/* some messing with margins, to get it all to look nice */
.extensionsList div p {
	display: inline;
}
.extensionsList div ul {
	margin-top: 0.5em;
	margin-bottom: 0.5em;
}
.extensionCategory {
	cursor: pointer;
}
.extensionsList div {
	padding-left: 20px;
	margin-left: 1em;
	background-image: url('images/bookclosed.PNG');
	background-position: 0 0;
	background-repeat: no-repeat;
}
.extensionsList div ul {
	display: none;
}
What am I doing wrong?