DOM = (document.getElementById)? true : false;
NN = (document.layers)? true : false;
IE = (document.all)? true : false;
if (IE) DOM=false;
//alert(DOM+' '+NN+' '+IE);

var showflag=false; // флаг показа
var id=null; // id таймера
var onname=""; // имя видимого на данный момент элемента
var submenu="";

function getRelLeft(which) {
	if (NN) {
		return document.layers[which].pageX;
	} else {
		var elem = (DOM)? document.getElementById(which) : document.all[which];
		var pos = elem.offsetLeft;
		while (elem.offsetParent != null) {
			elem = elem.offsetParent;
			pos += elem.offsetLeft;
			if (elem.tagName == 'BODY') break;
		} return pos;
	}
}

function getRelTop(which) {
	if (NN) {
		return document.layers[which].pageY;
	} else {
		var elem = (DOM)? document.getElementById(which) : document.all[which];
		var pos = elem.offsetTop;
		while (elem.offsetParent != null) {
			elem = elem.offsetParent;
			pos += elem.offsetTop;
			if (elem.tagName == 'BODY') break;
		} return pos;
	}
}

function show(name, item){ // name - id элемента x - смещение от начала меню

x=getRelLeft(item)+0;
y=getRelTop(item) +20;

killtimer(); // останавливаем таймер
if(showflag) hide(); // прячем, если показывали другой элемент

if(NN){
	document.layers[name].top=y;
	document.layers[name].left=x; // вычисляем смещение
	document.layers[name].visibility='show';
}

if(DOM){
	document.getElementById(name).style.top=y;
	document.getElementById(name).style.left=x; // вычисляем смещение
	document.getElementById(name).style.visibility='visible';
}

if(IE){
	document.all[name].style.top=y;
	document.all[name].style.left=x;
	document.all[name].style.visibility='visible';
}

showflag=true;
onname=name; // элемент name показывается

}

function showSubmenu(name, item){ // name - id элемента x - смещение от начала меню

    x=getRelLeft(item)+20;
    y=getRelTop(item) +0;

    killtimer(); // останавливаем таймер
    //if(showflag)  hideElement(submenu);

    if(NN){
    	document.layers[name].top=y;
    	document.layers[name].left=x; // вычисляем смещение
    	document.layers[name].visibility='show';
    }

    if(DOM){
    	document.getElementById(name).style.top=y;
    	document.getElementById(name).style.left=x; // вычисляем смещение
    	document.getElementById(name).style.visibility='visible';
    }

    if(IE){
    	document.all[name].style.top=y;
    	document.all[name].style.left=x;
    	document.all[name].style.visibility='visible';
    }

    showflag=true;
//    onname=item;
    submenu=name; // элемент name показывается

}



function killtimer(){

if(id!=null){ // если таймер установлен
	clearTimeout(id); // он обнуляется
	id=null;
}
return true;
}

function hide(){

  if(id!=null) killtimer();

  if(showflag){
  	if(NN) {
      document.layers[onname].visibility='hide';
    }
    
  	if(DOM) {
      document.getElementById(onname).style.visibility='hidden';
    }
    
  	if(IE) {
      document.all[onname].style.visibility='hidden';
    }
    
  }

  showflag=false;
  onname="";
}

function hideElement(name){

  if(id!=null) killtimer();

  if(showflag){
  	if(NN) document.layers[name].visibility='hide';
  	if(DOM) document.getElementById(name).style.visibility='hidden';
  	if(IE) document.all[name].style.visibility='hidden';
  }

  showflag=false;
//  onname="";
}

function reset(){ // функция закрытия элемента через полсекунды

killtimer();
id = setTimeout('hide()', 500);
}


