Ci sono varie cose che non mi piacciono in quel pezzetto di script.
Primo che non e` generale: tra i browser moderni funziona solo con Netscape (tralasciando tutta una serie di browser molto importanti ad iniziare da Mozilla).

Secondo che viene usata la funzione (deprecata) eval(): andrebbe sostituita mediante l'uso corretto di if.

Comunque mi pare che nel setTimeout usi gli apici in maniera impropria: passi delle stringhe, leggi dei valori (che poi passi come stringa).

Vedi queste modifiche (NON sistemo gli eval() ).

codice:
var prelayer, showlayer, hidelayer;
if(document.all) {
  ns6=0; ns=0; ie=1;
  prelayer='document.all.';
  showlayer='.style.visibility="visible"';
  hidelayer='.style.visibility="hidden"';
} else if(document.layers){
  ns6=0; ns=1; ie=0;
  prelayer='document.layers.';
  showlayer='.visibility="show"';
  hidelayer='.visibility="hide"';
} else if(document.getElementById) {
  ns6=1; ns=0; ie=0;
  prelayer = 'document.getElementById("';
  showlayer = '").style.visibility= "visible"';
  hidelayer = '").style.visibility= "hidden"';
} else {
  alert(" script non funzionante");
}

function layerdisplay(lname,ftis){
  if (!ftis) {
    eval(prelayer+lname+hidelayer);
  } else {
    eval(prelayer+lname+showlayer); 
  }
  setTimeout("layerdisplay("+lname+","+ftis+")",300)
}
Ciao
Michele