тут переписанный скрипт, с комментами. html я не трогал, так что именно из-за этого так реализовано. и не использовал
getElementsByClassName. поддержка, знаете ли.
вот копия того же скрипта
var i = document.getElementsByTagName("div"),
a = i.length,
img,
mouseoverDivCateg;
// назначаем обработчики.
while( a-- ) if ( i[a].className === 'categimg' ) {
// img - картинка внутри div с классом categimg.
img = i[a].getElementsByTagName('img')[0];
img.onmouseover = find_sp;
img.onmouseout = hide_sp;
}
function find_sp(e) {
var parent, currElem = e ? e.target : event.srcElement;
// ищем li , с которой начинается текущая категория.
while( currElem.tagName.toLowerCase() !== 'li' ) currElem = currElem.parentNode;
// ищем div с классом sp, который относится к текущей категории
var div = currElem.getElementsByTagName("div"),i = div.length;
while( i-- ) if (div[i].className === "sp") break;
div = div[i];
div.style.visibility = "visible";
// сохраняем этот дивчик, чтобы потом не искать
mouseoverDivCateg = div;
}
function hide_sp() {
// скрываем сохраненный див
mouseoverDivCateg.style.visibility= "hidden";
}