function pop(wn)
{
        w=window.open('/blank.html',wn,'height=200, width=200, scrollbars=auto, menubar=0, statusbar=0');
        w.focus();
}


var mstatus=true; 

//mstatus - определяет раскрывается(true) или закрывается(false) меню  

var sel;
var sm;

var timer1=false; 
var timer2=false; 
// сюда будет записываться задержка закрытия

var mstep=30;
// кол-во пикселей, на которые будет передвигаться меню за 1 итерацию

var cm=null;
// здесь будет запоминаться последний активный слой



var hide_delay=400;
var show_delay=200;
// задержка перед тем, как активный слой станет невидимым

var tstat=0;
// имеются ли видимые слои (0 - нет, 1 - да)



// Определяем браузер пользователя

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) {
			objElement.visibility ="hidden"
		} else {
			objElement.visibility ="visible"
		}
	} else if (isIE5 || isNS6) {
		if(!bolVisible){
			//objElement.style.display = "none";
			new Effect.SlideUp(objElement,{duration: 0.2});
		} else {
			//objElement.style.display = "";
			new Effect.SlideDown(objElement,{duration: 0.2});
		}
	}
	
	if(objElement.parentNode.nodeName == 'LI') {
	if(!bolVisible) {
		objElement.parentNode.className='';
	} else {
		objElement.parentNode.className='amenu';
	}
	}
	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);
}



// Функция отображающая|скрывающая
// слои.

// Данная Функция не меняет координаты слоёв,
// не делает их прозрачными, а вызывает функцию movefx,
// которая этим занимается. 


// Вход:
// el - яйчейка таблицы на которой 
// находится указатель;
// m  - наименование слоя, который надо
// отобразить под этой яйчейкой.

function show(el,m) {

if (m!=null) {
m=getelementbyid(m);
}

// получаем элемент в m


        if ((el==null) && (cm)) {
        	mstatus=true;
			cm=null;
// имеются ли видимые слои (0 - нет, 1 - да)

			movefx()
			// закрываем меню через movefx

        } else if ((m!=cm) && (m)) {
        if (cm!=null) switchDiv(cm,false);
// пользователь перешёл на другой пункт основного меню
// немедлено сделать невидимым предыдущий (cm) видимый в данный момент слой.  

        switchDiv(m,true); // сделать видимым  слой m
        fxel=el;             
        fxm=m;
        fxrect=0; // текущая высота области отсечения (см. ниже)

        // запоминаем значения в глобальных переменных
        // для использования в дальнейшем

        mstatus=true; // будем открывать меню с помощью movefx
        //movefx()
	}
        
        if (m) cm=m; 
        // запоминаем значение m в cm 

  if (tstat==1) {
  clearTimeout(timer1);
  tstat=0
// если таймер timer1 запущен, останавливаем его
  }
  if (tstat==0) {
  clearTimeout(timer2);
  tstat=1
// если таймер timer1 запущен, останавливаем его
  }
 
}


// Функция, "закрывающая" меню.

// Функция принимает на вход b типа boolean
// при true закрывает меню учитывая задержку hide_delay;
// при false (или каком-либо другом значении кроме true) 
// закрывает меню немедленно
 
// и возвращает 1.

function hidemenu(b) {
	if (b)  {
		tstat=1;
		timer1=setTimeout("show(null)",hide_delay);
	} else {
		tstat=0;
		show(null);
	}
}

function showmenu(el,m,b) {
	 sel=el;
	 sm=m;
	 if (b)  {
		 timer2=setTimeout("show(sel,sm)",show_delay);
	 }
}



// Функция, останавливающая таймер, запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.

// Функция ничего не принимает на вход
// и возвращает 1.

function cancelhide() {
	if (!mstatus) {
		mstatus=true;
		// если меню закрывалось, открываем его вновь
	}
	 
	tstat=0;
	clearTimeout(timer1);
	// останавливаем таймер
}

function cancelshow() {

sel = false;
sm = false;
 
tstat=0;
clearTimeout(timer2);
// останавливаем таймер
 

}


// Функция, отвечающая за эффектное выпадение меню. 
// Ничего не принимает на вход
// Возвращает 1.


function movefx() {

  switchDiv(fxm,false);
  mstatus=true;
  return 1 

}


