se lasci il posizionamento relativo e al posto di cambiare la visibilita' cambi il display, i livelli nascosti non dovrebbero occupare spazio

al posto di
organigramma.style.visibility="hidden";

organigramma.style.display="none";

al posto di
organigramma.style.visibility="visible";

organigramma.style.display="block";


sinceramente lo script non e' molto bello a vedersi,
prepara un array con tutti gli id,
cicla per esso nascondendo i livelli
e mostra solo quello che deve rimanere

ciao