скрипт..
var navShown=false;
var navFade=null;
var NNN=(document.layers)?true:false;
var NIE=(document.all)?true:false;
var nameShown = "";

function hideNav()
{
if (navFade) {
clearTimeout(navFade);
navFade=null
}
if(navShown) {
if (NNN){
document.layers["kmnav"+nameShown].visibility="hide";
}else if (NIE){
document.getElementById("kmnav"+nameShown).style.visibility="hidden";
}
}
navShown=false;
nameShown="";
return true;
}
function showNav(name,X)
{
if (navFade) {
clearTimeout(navFade);
navFade=null
}
if(nameShown!=name)
{
X+=Math.round(((NNN)?window.innerWidth-16:((NIE)?document.body.clientWidth:0)))-800;
if (navShown) hideNav();
if (NNN) {
document.layers["kmnav"+name].top=18;
document.layers["kmnav"+name].left=X-15;
document.layers["kmnav"+name].visibility="show";
}else if (NIE){
document.getElementById("kmnav"+name).style.top=18;
document.getElementById("kmnav"+name).style.left=X-15;
document.getElementById("kmnav"+name).style.visibility="visible";
}
nameShown = name;
}
if(NNN)
navFade=setTimeout("hideNav();",10000);
navShown=true;
return true;
}
function closeNav()
{
navFade=setTimeout("hideNav();",100);
//hideNav();
return true;
}
function mouse_up (e)
{
closeNav();
return true;
}
if (NNN) {
window.onmouseup=mouse_up;
window.captureEvents(Event.MOUSEUP);
}

жуть эти слои...ослик с оперой всё нормал...мозилка отказывается....

http://sage.jino-net.ru/052.shtml

Никто не отвечает. Ну ладно, я отвечу тогда :)

жуть эти слои...

Это точно  :) Только вот зачем их использовать? Метод layers использовался последний раз по-моему в Netscape 4, т.е. около 10 лет назад. Вам точно нужна поддержка Netscape? :)

Все современные браузеры (даже IE :) ) подеерживают метод getElementById. Так не лучше ли использовать его?

Выделить код

Код:

var variable=(document.getElementById)?true:false

Спасибо конечно за ответ, но может я туплю немного...:)
старый код . .

document.layers["kmnav"+nameShown].visibility="hide";

заменен...(в том числе и скобки)

document.getElementById("kmnav"+nameShown).visibility="hide";

и так везде где встречаются layers....
не работает...подскажи где я ошибся...

Если метод getElementById поддерживается, то должен использоваться
document.getElementById("kmnav"+nameShown).style.visibility="hidden";

В противном случае (document.all)
document.all["kmnav"+nameShown].style.visibility = "hidden" (вроде бы :) )

Поддержку NN можно убрать (я бы убрал)

ААА...Всё получилось..сенкс rurik...
манипуляции

var navShown=false;
var navFade=null;
var NNN=(document.layers)?true:false; // layers заменить не уд. ошибка...
var NIE=(document.getElementById)?true:false; //вместо all подставлен .getElementById
var nameShown = "";

...

везде прописан матод .getElementById

document.getElementById["kmnav"+name].top=18;.....

получ. код....

var navShown=false;
var navFade=null;
var NNN=(document.layers)?true:false;
var NIE=(document.getElementById)?true:false;
var nameShown = "";

function hideNav()
{
if (navFade) {
clearTimeout(navFade);
navFade=null
}
if(navShown) {
if (NNN){
document.getElementById["kmnav"+nameShown].visibility="hide";
}else if (NIE){
document.getElementById("kmnav"+nameShown).style.visibility="hidden";
}
}
navShown=false;
nameShown="";
return true;
}
function showNav(name,X)
{
if (navFade) {
clearTimeout(navFade);
navFade=null
}
if(nameShown!=name)
{
X+=Math.round(((NNN)?window.innerWidth-16:((NIE)?document.body.clientWidth:0)))-800;
if (navShown) hideNav();
if (NNN) {
document.getElementById["kmnav"+name].top=18;
document.getElementById["kmnav"+name].left=X-15;
document.getElementById["kmnav"+name].visibility="show";
}else if (NIE){
document.getElementById("kmnav"+name).style.top=18;
document.getElementById("kmnav"+name).style.left=X-15;
document.getElementById("kmnav"+name).style.visibility="visible";
}
nameShown = name;
}
if(NNN)
navFade=setTimeout("hideNav();",10000);
navShown=true;
return true;
}
function closeNav()
{
navFade=setTimeout("hideNav();",100);
//hideNav();
return true;
}
function mouse_up (e)
{
closeNav();
return true;
}
if (NNN) {
window.onmouseup=mouse_up;
window.captureEvents(Event.MOUSEUP);
}

Я в восторге.

Выделить код

Код:

var NIE=(document.all)?true:false;

...

Выделить код

Код:

}else if (NIE){
document.getElementById("kmnav"+name).style.top=18;

Это здорово!
Наверное, имелось в виду

Выделить код

Код:

var NIE=(document.getElementById)?true:false;

- тоже не очень удачно.
Предлагаю вариант:

Выделить код

Код:

function gElId(elId) {return ((document.getElementById)?document.getElementById(elId):((document.all)?document.all[elId]:null));}

и дальше вызывать объекты уже через gElId('id_элемента');
Вообще легче скрипт переписать, чем отлаживать. (Прошу прощения за такие слова, но это одна из самых популярных фраз на форуме. К сожалению, определение переменных isNN и isIE и затем оперирование ими - один из приемов веб-дизайна образца 2000 года, в наше время должно быть переключение не просто по функциональности, но и с учетом document.getElementById(), и лучше менять классы у элементов, а не конкретные свойства стилей.)