/*
=================================================
Класс Menu - описывает отдельное меню.
Конструктор класса получает как аргумент id-слоя,
на котором находится меню
=================================================
*/

/*
Метод определяющий тип и версию броузера.
*/
function setBrowserType(){
	if(navigator.appName=='Microsoft Internet Explorer'){
		if(document.getElementById) 
			this.IEnew=true;
		else 
			this.IEold=true;
	}else if(navigator.appName=='Netscape'){
		if(parseInt(navigator.appVersion)==4) 
			this.NNold=true;
		else if(parseInt(navigator.appVersion)==5) 
			this.NNnew=true;
	}
}
/*
Метод управляющий видимостью слоя связанного с меню
*/
function setVisible(visible){
	if(visible){
		//this.hideOverMenus();
		if(this.IEold) eval(this.id+'.style.visibility="visible"');
		else if(this.NNold) eval('document.'+this.id+'.visibility="show"');
		else if(this.NNnew || this.IEnew) document.getElementById(this.id).style.visibility="visible";
	}else{
		if(this.IEold) eval(this.id+'.style.visibility="hidden"');
		else if(this.NNold) eval('document.'+this.id+'.visibility="hide"');
		else if(this.NNnew || this.IEnew) document.getElementById(this.id).style.visibility="hidden";
	}
}
/*
Конструктор класса Menu - получает как аргумент id слоя
на котором находится меню в HTML документе.
*/
function Menu(id){
	this.id=id; //id слоя связанного с меню
	this.NNold=this.NNnew=this.IEold=this.IEnew=false; //тип броузера
	this.setBrowserType=setBrowserType;
	this.setVisible=setVisible;
	this.setBrowserType(); //вызываем метод для установления типа броузера
}

/*
========================================================
Author: Kachalov Michail
Email: mike74@mail.ru
Version: 1.1
========================================================
*/
/*
========================================================
Класс MenuBar объединяет отдельные меню в единую систему
========================================================
*/
/*
Метод addMenu добавляет новый объект типа Menu к 
общему MenuBar. В качестве аргумента метод получает
id слоя, связанного с меню.
*/
function addMenu(id){
	var length=this.menus.length;
	this.menus[length]=new Menu(id);
}
/*
Метод show показывает на экране меню с указаным id
*/
function show(id){
	clearTimeout(this.timer);
	this.timer=0;
	for(var i=0; i<this.menus.length; i++){
		if(this.menus[i].id==id){
			this.menus[i].setVisible(true);
		}else{this.menus[i].setVisible(false);}
	}
}

/*
Метод hide убирает с экрана меню с указаным id
*/
var tmpObject;
function hide(id){
	for(var i=0; i<this.menus.length; i++){
		if(this.menus[i].id==id){
			tmpObject=this.menus[i];
			this.timer=setTimeout("tmpObject.setVisible(false)",500);			
			break;
		}
	}
}

/*
Конструктор класса MenuBar
*/
function MenuBar(){
	this.menus=new Array(); //массив хранящий объекты типа Menu
	this.timer=0; //поле для связи с запущенным "таймером"
	this.addMenu=addMenu;
	this.show=show;
	this.hide=hide;
}
