cm = null;
hide_delay = 600;
timer1 = null;

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;
isIE = isIE4 || isIE5;

function setCellsClass(row, c) {
    if (typeof(document.getElementsByTagName) != 'undefined') {
        cells = row.getElementsByTagName('td');
    }
    else if (typeof(row.cells) != 'undefined') {
        cells = row.cells;
    }
    else {
        return;
    }
    for (i = 0; i < cells.length; i++)
        cells[i].className = c;
}
function setRowClass(row, c) {
    row.oldClass = row.className;
    setCellsClass(row, c);
}
function resetRowClass(row) {
    setCellsClass(row, row.oldClass);
}

function toggleBoxDiv(id) {// 1 visible, 0 hidden
    if(document.getElementById) {//gecko(NN6) + IE 5+
        var obj = document.getElementById(id);
        if(obj.style.visibility == "visible"){
            obj.style.visibility = "hidden";
            obj.style.display = "none";
        } else {
            obj.style.visibility = "visible";
            obj.style.display = "block";
        }
    } else if (document.all) {   // IE 4
        if(document.layers[id].style.display == "block") {
            document.all[id].style.visibility ="hidden";
            document.layers[id].style.display = "none";
        } else {
            document.all[id].style.visibility ="visible";
            document.layers[id].style.display = "block";
        }
    }

}

function getById(id) {
    return (document.getElementById) ? document.getElementById(id) : document.all[id];
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments;
    document.MM_sr = new Array;
    for(i = 0; i < (a.length - 2); i += 3)
    if ((x = MM_findObj(a[i])) != null) {
        document.MM_sr[j++] = x;
        if (!x.oSrc) x.oSrc = x.src;
        x.src = a[i + 2];
    }
}

function getPos(el, sProp) {
    var iPos = 0;
    while (el != null) {
        iPos += el["offset" + sProp];
        el = el.offsetParent;
    }
    return iPos;
}

function switchDiv(obj, show){
    if (isNS4 || isIE4) {
        if(!show) {
            obj.visibility ="hidden"
        } else {
            obj.visibility ="visible"
        }
    } else if (isIE5 || isNS6) {
        if (!show) {
            obj.style.display = "none";
        } else {
            obj.style.display = "";
        }
    }
}

function showDiv(cell, obj, show) {
    if (obj == null) return;
    if (!show) {
        switchDiv(obj, false);
        return;
    }
    obj.style.left = (getPos(cell, "Left") + cell.offsetWidth + 27) + "px";
    obj.style.top =  (getPos(cell, "Top") + cell.offsetHeight - 30) + "px";
    switchDiv(obj, true);
}
function showDivId(cell, id, show) {
    var obj = getById(id);
    if (obj != null) showDiv(cell, obj, show);
}

function searchSubmit() {
    var f = document.forms['searchform'];
    for (i = 0; i < f.elements.length; i++) {
        if (f.elements[i].name == 'search[text]' && f.elements[i].value == '') return;
    }
    f.submit();
}

// Функция отображающая|скрывающая
// ,а предварительно ещё и передвигающая
// должным образом слои.


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

function show(el, m, dy) {
    // Если имеется видимый слой,
    // сделать его невидимым.
    if (cm != null) {
        switchDiv(cm, false);
    }

    // Если указано название слоя для отображения,
    // то:
    // 1) Получить его объект;
    // 2) X слоя = X яйчейки;
    // 3) Y слоя = Y яйчейки + высота яйчейки;
    // 4) Сделать слой видимым;
    // 5) Сохранить копию слоя в cm.


    if (m != null) {
        cancelhide();
        m = getById(m);
        m.style.left = (getPos(el, "Left")) + el.offsetWidth + "px";
        m.style.top =  (getPos(el, "Top")) + el.offsetHeight - dy + "px";
        switchDiv(m, true);
        cm = m;
    }

}



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

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

function hidemenu() {
    // Устанавливаем задержку hide_delay с помощью
    // таймера;
    timer1 = setTimeout("show(null, null)", hide_delay);
    // Устанавливаем tstat=1 - признак, того, что таймер запущен.
    return 1;
}



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

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

function cancelhide() {
    if (timer1 != null) {
        clearTimeout(timer1);
        timer1 = null;
    }
    return 1;
}
