cm=null;
hide_delay=500;
tstat=0;

// Определяем браузер пользователя

isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;


// Функция отображающая и скрывающая слои

// Вход:
// objElement - идентификатор(id) слоя;
// bolVisible - булева переменная:
// true  - отобразить слой;
// false - скрыть слой.

// Выход:
// 1


// P.S: В зависимости от типа браузера
// сценарий для манипуляции с видимостью слоёв
// несколько различается.

function switchDiv(objElement, bolVisible)
{

	if(isNS4||isIE4)
	{
		if(!bolVisible) 
		{
			/*
			if ( objElement.id==23487 || objElement.id==23496 || objElement.id==23499 ) {
				objMonth 	= document.getElementById("month");
				if (objMonth != null && typeof(objMonth) == "object") 
				{
					objMonth.style.visibility = "visible";
					objMonth.style.display = "";
				}
				objYear 	= document.getElementById("year");
				if (objYear != null && typeof(objYear) == "object") 
				{
					objYear.style.visibility = "visible";
					objYear.style.display = "";
				}
			}
			*/
			objElement.visibility ="hidden";
		} else {
			/*
			if ( objElement.id==23487 || objElement.id==23496 || objElement.id==23499 ) {
				objMonth 	= document.getElementById("month");
				if (objMonth != null && typeof(objMonth) == "object") 
				{
					objMonth.style.visibility = "hidden";
					objMonth.style.display = "none";
				}
				objYear 	= document.getElementById("year");
				if (objYear != null && typeof(objYear) == "object") 
				{
					objYear.style.visibility = "hidden";
					objMonth.style.display = "none";
				}
			}
			*/
			objElement.visibility ="visible";
		}     
	} else if (isIE5 || isNS6) {
		if(!bolVisible)
		{
			/*
			if ( objElement.id==23487 || objElement.id==23496 || objElement.id==23499 ) {
				objMonth 	= document.getElementById("month");
				if (objMonth != null && typeof(objMonth) == "object") 
				{
					objMonth.style.visibility = "visible";
					objMonth.style.display = "";
				}
				objYear 	= document.getElementById("year");
				if (objYear != null && typeof(objYear) == "object") 
				{
					objYear.style.visibility = "visible";
					objYear.style.display = "";
				}
			}
			*/
			objElement.style.display = "none";         
		} else {
			/*
			if ( objElement.id==23487 || objElement.id==23496 || objElement.id==23499 ) {
				objMonth 	= document.getElementById("month");
				if (objMonth != null && typeof(objMonth) == "object") 
				{
					objMonth.style.visibility = "hidden";
					objMonth.style.display = "none";
				}
				objYear 	= document.getElementById("year");
				if (objYear != null && typeof(objYear) == "object") 
				{
					objYear.style.visibility = "hidden";
					objMonth.style.display = "none";
				}
			}
			*/
			objElement.style.display = "";        
		}
	}
	return 1;
}



// Функция возвращающая значение указанного ей 
// свойства объекта (не обязательно слоя).

// Вход:
// el    - идентификатор элемента;
// sProp - свойство (left,top...)

// Выход:
// Значение какого-нибудь свойства объекта.



function getPos(el,sProp) {
	var iPos = 0;
	while (el!=null) {
		iPos+=el["offset" + sProp]
		el = el.offsetParent
	}
	return iPos

}



// Функция выдаёт объект с указанным
// ей названием.

// Вход:
// myid - название объекта

// Выход: объект.

function getelementbyid(myid) {
	if (isNS4)
	{
        	objElement = document.layers[myid];
	} else if (isIE4) {
		objElement = document.all[myid];
	} else if (isIE5 || isNS6) {
		objElement = document.getElementById(myid);
	}
	return(objElement);
}



// Функция отображающая|скрывающая
// ,а предварительно ещё и передвигающая
// должным образом слои.


// Вход:
// el - яйчейка таблицы на которой 
// находится указатель;
// m  - наименование слоя, который надо
// отобразить под этой яйчейкой.

function show(el, m) 
{
	//alert("el = " + el);
	//alert("m = " + m);
	// Если имеется видимый слой,
	// сделать его невидимым.

	if (cm!=null) {
		switchDiv(cm, false);
	}


	// Если указано название слоя для отображения,
	// то:
	// 1) Получить его объект;
	// 2) X слоя = X яйчейки;
	// 3) Y слоя = Y яйчейки + высота яйчейки;
	// 4) Сделать слой видимым;
	// 5) Сохранить копию слоя в cm.  


	if (m!=null) {
		//alert("m = " + m);
		mDoc		= document.getElementById(m);
		if (mDoc!=null) {
			//alert("mDoc = " + mDoc);
			mDoc.style.left 	= getPos(el,"Left")+"px";
			mDoc.style.top 		= getPos(el,"Top")+el.offsetHeight+"px";
			switchDiv(mDoc, true);
			cm			= mDoc;
		}
	}

}



// Функция "закрывающая" меню.

// Функция ничего не принимает на вход
// и возвращает 1.

function hidemenu(id) 
{
var tdID = document.getElementById('td_id_'+id);
if (tdID && typeof(tdID)=="object") {
tdID.className = "folder";
}

	// Устанавливаем задержку hide_delay с помощью
	// таймера; 

	timer1=setTimeout("show(null,null)",hide_delay);

	// Устанавливаем tstat=1 - признак, того, что таймер запущен.
	tstat=1;

	return 1;
}



// Функция останавливающая таймер запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.

// Функция ничего не принимает на вход
// и возвращает 1.

function cancelhide(id) 
{

var tdID = document.getElementById('td_id_'+id);
if (tdID && typeof(tdID)=="object") {
tdID.className = "folder_current";
}

	if (tstat==1) {
	clearTimeout(timer1);
	tstat=0;
	}
	return 1;
	

}
