Above has multiple meanings. Do you mean that your menu is being
'overwritten' by other stuff (z-axis), or do you mean that it's
showing up at the bottom of the page (y-axis)?
Assuming z-axis for a moment, be aware that z-index doesn't break
through tag structure. In other words, the following dialog box will
still be UNDER everything:
<div style="z-index: -1;"><div style="z-index: 1000000;">This content
will render BELOW everything!</div><div>But this will render even
lower</div></div>
In other words, z-index only decides how an element renders relative
to its siblings. Other than that, z-index has no known bugs that I'm
aware of. If you are setting it using DOM.setStyleAttribute, make sure
you use the javascript version of z-index, which is zIndex (take out
all hyphens and capitalize the letter that followed the hyphen), or it
doesn't work on half the browsers.
Lastly, for elements with equal z-index (and all elements have a
silent z-index of 0 if you don't specify anything), rendering order is
established according to DOM order; the LAST element added to the DOM
is rendered on top. So one solution is to just add your menu last, as
it were. That works as long as none of its siblings have z-index.