function MenuItemOnMouseOver(e){/*Данная функция обрабатывает событие наведения курсора на пункт основного меню*/
if(!e)e=window.event;/*У "замечательного" IE другая структура обработки событий*/
if(e.srcElement)e=e.srcElement;else e=e.target;/*Тоже самое - IE это "другое"*/
e.style.backgroundImage="url(http://antirak.ru/images/hmenu/butoff.jpg)";/*изменение фона*/
}
function MenuItemOnMouseOut(e){/*Данная функция вызывается при убирании мыши в сторону с пункта меню*/
if(!e)e=window.event;/*IE имеет свой "источник" события, поэтому его получаем по-другому*/
if(e.srcElement)e=e.srcElement;else e=e.target;/*Получаем элемент, для которого было вызвано событие*/
e.style.backgroundImage="url(http://antirak.ru/images/hmenu/buton.jpg)";/*Здесь должен быть указат тот же фон, что и в стиле для элемента основного меню - в противном случае "просмотренные" и "не просмотренные" элементы меню будут отличаться, что не есть хорошо*/
}
function MenuSpaceOnMouseMove(e){/*Данная функция вызывается в процессе покидания курсором мыши блока меню*/
var b;var i;var x;var y;var r;var w;var h;
if(!e)e=window.event;/*Получаем объект события для IE, так как он не передаётся в параметре события*/
b=document.getElementById("menu-h-main");/*Получаем объект меню для определения координат*/
if(!b)return;/*Если у нас его нет (или мы про него забыли), то убирать нечего, так как координаты отслеживаемой области неизвестны*/
if(typeof(e.clientX)!="undefined"){/*Если определены координаты мыши через старые методы*/
 x=e.clientX;
 y=e.clientY;
}else if(typeof(e.pageX)!="undefined"){/*Если координаты мыши определены через новые параметры*/
 x=e.pageX;
 y=e.pageY;
}else return;/*Если координаты мыши определить нельзя, то и узнать о выходе мыши за пределы области невозможно*/
if(!b.getBoundingClientRect)return;/*Если невозможно определить координату области объекта, то и убрать меню никто не сможет*/
r=b.getBoundingClientRect();/*Получаем координаты блока относительно окна*/
if(typeof(document.body.scrollWidth)!="undefined"){/*Если определён стиль получения координат как в IE*/
 w=document.body.scrollWidth;
 h=document.body.scrollHeight;
}else if(typeof(document.width)!="undefined"){/*Определяем координаты для Mozilla и Netscape*/
 w=document.width;
 h=document.height;
}else if(typeof(document.body.style.pixelWidth)!="undefined"){/*Не забываем и про Оперу*/
 w=document.body.style.pixelWidth;
 h=document.body.style.pixelHeight;
}else{/*Если вообще определить не смогли, то мы просто приравниваем их к правому краю объекта*/
 w=r.right;
 h=r.bottom;
}
if((x<0)||(y<0)||(x<r.left)||(x>=r.right)||(y<r.top)||(y>=r.bottom)||(x>w)||(y>h)){/*Здесь мы проверяем, что мышь покинула нашу область или покинула рабочую область окна*/
 for(i=1;i<=5;i++){/*Здесь мы перебираем все "коробочки" нашего меню и прячем их*/
  b=document.getElementById("menu-h-box-"+String(i));
  if(b)b.style.display="none";/*Лишняя проверка, чтобы не выдавались ошибки, если мы по каким-то причинам не описали коробочку или перепутали id*/
  }
 if(document.onmousemove==MenuSpaceOnMouseMove)document.onmousemove=void(0);/*Выключаем отслеживание события мыши - проверку делаем, чтобы если кто-то ещё будет использовать это событие - случайно не отключить кого-то другого*/
 }
}
function MenuItemOnClick(e){/*Данная функция обрабатывает событие нажатия на элемент меню*/
var i;var j;var b;
if(!e)e=window.event;/*Получаем объект события для работы с ними*/
if(e.srcElement)e=e.srcElement;else e=e.target;/*Получаем объект, для которого было вызвано событие*/
i=e.id;/*получаем идентификатор элемента меню - из него мы получим номер меню, которое надо вывести на экран*/
if(i.substr(0,12)!="menu-h-item-")return;/*если не получили нашего id, то просто выходим, так как ничего мы вывести и не сможем*/
i=i.substr(12);/* получаем строку с номером элемента меню, которую надо отобразить*/
for(j=1;j<=5;j++){/*Цикл по всем "коробочкам" для меню, то есть здесь мы указываем цифру*/
 b=document.getElementById("menu-h-box-"+String(j));/*Получаем ссылку на коробочку*/
 if(b){/*Проверяем, что коробочка существует (мало-ли - мы могли забыть её описать)*/
  if(i==String(j))b.style.display="block";else b.style.display="none";/*Если нужная коробочка, то её нужно показать, а если другая - то спрятать*/
  }
 }
if(!document.onmousemove)document.onmousemove=MenuSpaceOnMouseMove;/*Включение события отслеживания движения мыши - устанавливаем отслеживание только если оно ещё не установлено, а также если кто-то другой не запросил обработчик этого события, чтобы не сломать что-то более серьёзное, чем какое-то неудачное меню*/
}
function InitMenu(){/*Данная функция выполняет первоначальную инициализацию меню*/
var i;var b;
for(i=1;i<=5;i++){/*Цикл по всем пунктам основного меню*/
 b=document.getElementById("menu-h-item-"+String(i));
 if(b){/*проверяем, что у нас элемент существует, чтобы не было проблем, если его нету*/
  b.onmouseover=MenuItemOnMouseOver;
  b.onmouseout=MenuItemOnMouseOut;
  b.onclick=MenuItemOnClick;
  }
 }
}
