var onSubMenuBgColor = "#FFFFFF";


var dom = (document.getElementById)? true : false;
var nn4 = (document.layers)? true : false;
var ie4 = (!dom && document.all)? true : false; 
var anyNN = (navigator.appName.indexOf('Netscape') != -1) ? true : false;

/*****************   MENU   *****************/
var subMenuBack = "";
var eventObj = new Object;
var menuClassName;
var subMenuOn = false; // id развернутого подменю

function menuRollOver(obj, mode) {
/*
	if (mode == "on") {
		menuClassName = obj.className;
		obj.className = obj.className + "On";
	} else {
		obj.className = menuClassName;
	}
*/
}

// под NN события MouseOut/MouseOver возникают даже при перемещении по кнопке (с пространства вокруг текста - на текст)
function menuOn(obj, event) {
	eventObj = event;
	var menuId = obj.getAttribute("menuId");
	if (subMenuOn != menuId) {
		hideSubmenu(subMenuOn);
		showSubmenu(menuId); 
	}
}
function menuOff(obj, event) {
	eventObj = event;
	var menuId = obj.getAttribute("menuId");
	var td = document.getElementById("td" + menuId);
	var layer = document.getElementById("layer" + menuId);
	if (layer == null) return false;
	if (isMouseOnObject(td)) return false; // если мышка на кнопке, а событие возникло (дурацкий NN!) - игнорирум событие
	if (!isMouseOnObject(layer)) hideSubmenu(menuId); // если мышка ушла не на подменю - гасим его 
}
function showSubmenu(id) {
	subMenuOn = id;
	var layer = document.getElementById("layer" + id);
	if (layer == null) return;
	var td = document.getElementById("td" + id);
	layer.style.visibility = "visible";
   	layer.style.left = realPosX(td);
	layer.style.top = realPosY(td) + td.offsetHeight;
	menuRollOver(td, "on");
}
function hideSubmenu(id) {
	if (!id) return false;
	subMenuOn = false;
	var layer = document.getElementById("layer" + id);
	if (layer == null) return;
	layer.style.visibility = "hidden";
	menuRollOver(document.getElementById("td" + id), "off");
}
function isMouseOnObject(obj) {
	var x1 = realPosX(obj);
	var y1 = realPosY(obj);
	var x2 = x1 + (obj.offsetWidth - 1); // -1 - т.к. координаты начинаются с нуля, а мы к координатам прибавляем высоту/ширину элемента
	var y2 = y1 + (obj.offsetHeight - 1);
	if (anyNN) { 
		var x2 = x1 + (obj.offsetWidth + scrollLeft() - 1); // -1 - т.к. координаты начинаются с нуля, а мы к координатам прибавляем высоту/ширину элемента
		var y2 = y1 + (obj.offsetHeight - 1);

		var x = clientX() + scrollLeft(); // и не спрашивайте, почему +1..............
		var y = clientY() + scrollTop();
	} else {
		var x = clientX() + scrollLeft() - 2; // и не спрашивайте, почему -2..............
		var y = clientY() + scrollTop() - 2;
	}
//	 alert("    x=" + x +  "    y=" + y + "\n  x1=" + x1 + "  y1=" + y1 + "\n  x2=" + x2  + "  y2=" + y2 );
	return ((x < x1+1) || (x > x2-1) || (y < y1) || (y > y2)) ? false : true;
}

/*****************   SUBMENU   *****************/
function popupOn(obj, event) {
	eventObj = event;
	subMenuBack = obj.style.background;
	obj.style.backgroundColor = onSubMenuBgColor;
}
function popupOff(obj, event) {
	eventObj = event;
	obj.style.backgroundColor = subMenuBack;
	var menuId = obj.getAttribute("menuId");
	var layer = document.getElementById("layer" + menuId);
	if (!isMouseOnObject(layer)) hideSubmenu(menuId); // если мышка ушла c подменю - гасим его 
}

/*****************************************************************************************/
/******************************* вспомогательные функции *********************************/
/*****************************************************************************************/
function clientX() {
    if (anyNN) return (eventObj.pageX - scrollLeft())
	else return eventObj.clientX;
}
function clientY() {
    if (anyNN) return (eventObj.pageY - scrollTop())
	else return eventObj.clientY;
}
function scrollTop() {
	if (anyNN) return window.pageYOffset
	else return document.body.scrollTop;
}
function scrollLeft() {
	if (anyNN) return window.pageXOffset
	else return document.body.scrollLeft;
}

function realPosX(elem) {
    var pos = elem.offsetLeft;
    while (elem.offsetParent != null) {
      elem = elem.offsetParent;
      pos += elem.offsetLeft;
      if (elem.tagName == 'BODY') break;
    } 
    return pos;
}

function realPosY(elem) {
    var pos = elem.offsetTop;
    while (elem.offsetParent != null) {
      elem = elem.offsetParent;
      pos += elem.offsetTop;
      if (elem.tagName == 'BODY') break;
    } return pos;
}  

