//  Установка глобальных переменных

cm=null;                    // сюда будем запоминать 
                                // видимый слой. Начальное 
                               // значение - 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) {
      objElement.visibility ="hidden"
    } else {
      objElement.visibility ="visible"
    }     
  } else if (isIE5 || isNS6) {
    if (!bolVisible) {
      objElement.style.display = "none";
    } else {
      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) {

// Если имеется видимый слой,
// сделать его невидимым.

  if (cm!=null) {
    switchDiv(cm,false);

    fadeOpacity.back('ll_on');
    fadeOpacity.back('rl_on');
  }

// Если указано название слоя для отображения,
// то:
// 1) Получаем его объект;
// 4) Делаем слой видимым;
// 5) Сохраняем копию слоя в cm.  

  if (m != null) {
    m = getelementbyid(m);
    m.style.top =  "500px";
    switchDiv(m, true);
    cm = m;

    fadeOpacity('ll_on', 'oR1');
    fadeOpacity('rl_on', 'oR1');
  }
}

// Функция "закрывающая" меню.

// Функция ничего не принимает на вход
// и возвращает 1.

function hidemenu() {

// Устанавливаем задержку равную 
// hide_delay м.с. с помощью таймера; 

  timer1=setTimeout("show(null,null)",hide_delay);

// Устанавливаем tstat=1 - признак, того, что таймер запущен.
  tstat=1;

  return 1;
}



// Функция, останавливающая таймер запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.

// Функция ничего не принимает на вход
// и возвращает 1.

function cancelhide() {
  if (tstat==1) {
    clearTimeout(timer1);
    tstat=0;
  }
  return 1;
}


