// document.write("<DIV style='position: absolute; top: 59; left: 0; width:100%; height:5; background-color: #FF0000; Z-INDEX: 7'><img border=0 src='images/clearpcx.gif' width=1 height=1></img></DIV>");
// введено var hideTime - задержка, мс. перед отображением меню
// введено mouseInRange (def = true) - флаг нахождения мыши в поле главного меню (use для проверки при показе, чтобы меню не мелькало при случайном "пролете" мыши над гл. меню)
 //function doMenu(): mouseInRange = true;      window.setTimeout("showMenu()", hideTime);
 // function hideMenu(): mouseInRange = false;
 // function showMenu(): if (mouseInRange){ делаем все, если hidemenu еще не было (user не уходил в течении времени hideTime с гл-го меню) }


//var Menu_Supported = false;
var Menu_Supported = true;

// Menu_Supported = поддерживается ли броузером
//if (navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.appVersion.substring(0,1) > 3)
//{
//        Menu_Supported = true;
//}

// определение переменных
if (Menu_Supported)
{
        var mouseInRange = true;                        // флаг нахождения мыши в поле главного меню (use для проверки при показе, чтобы меню не мелькало при случайном "пролете" мыши над гл. меню)
        var hideTime = 80;                              // задержка, мс. перед отображением меню
        var topOfMenu = 43;                             // отступ сверху
        var newLineChar = String.fromCharCode(10);      // код перехода на новую строку
        var char34 = String.fromCharCode(34);           // кавычки
        var CurMenu = "";
        var HTMLStr;
        var x = 0;
        var y = 0;
        var x2 = 0;
        var y2 = 0;
        var MenuMinWidth = 760;
        var ToolbarMenu;
        var aDefColor = new Array(4);
        var aCurColor = new Array(4);
        var aCurColorSubMenu = new Array(4);
        var Font;
        var MaxMenu = 30;
        var TotalMenu = 0;
        var arrMenuInfo = new Array(30);
        var menuBorderStr;
menuBorderStr = 

"<DIV style='position: absolute; top: "+(topOfMenu-2)+"; left: 0; width:100%; height:1; background-color: #A0A0A0; Z-INDEX: 9'><img border=0 src='images/clearpcx.gif' width=1 height=1></img></DIV>"+
"<DIV style='position: absolute; top: "+(topOfMenu-1)+"; left: 0; width:100%; height:1; background-color: #D0D0D0; Z-INDEX: 9'><img border=0 src='images/clearpcx.gif' width=1 height=1></img></DIV>"+

"<DIV style='position: absolute; top: "+(topOfMenu+19)+"; left: 0; width:100%; height:1; background-color: #A0A0A0; Z-INDEX: 9'><img border=0 src='images/clearpcx.gif' width=1 height=1></img></DIV>"+
"<DIV style='position: absolute; top: "+(topOfMenu+20)+"; left: 0; width:100%; height:1; background-color: #808080; Z-INDEX: 9'><img border=0 src='images/clearpcx.gif' width=1 height=1></img></DIV>";


document.write("<SPAN ID='StartMenu' STYLE='display:none;'></SPAN>");                                   // ID=StartMenu

HTMLStr =
                "<DIV ID='Menu' STYLE='position:absolute;top:"+topOfMenu+";left:2;height:17; Z-INDEX: 7'><!--MENU_TITLES-->" +  // ID=Menu
                "<SCRIPT TYPE='text/javascript'>" + 
                "   var ToolbarMenu = StartMenu;" +                                                     // "var ToolBarMenu = ID=StartMenu"
                "</SCRIPT>";

// Define event handlers
        window.onresize  = resizeMenu;

// Intialize global variables

        Font = "bold 12px Arial";

// Установка цветов для меню
        aCurColor[0] = "#000033";       // bgColor;
        aCurColor[1] = "#CCFFFF";       // text font color
        aCurColor[2] = "#FF0000";       // mouseOver font color
        aCurColor[3] = "#000000";       // bgOver color

// Установка цветов для подменю
        aCurColorSubMenu[0] = "#000033";                // bgcolor;
        aCurColorSubMenu[1] = "#CCFFFF";                // text font color
        aCurColorSubMenu[2] = "#FF0000";                // mouseover font color
        aCurColorSubMenu[3] = "#000000";                // bgOver color
}


// вывод HTML с коррекцией ширины меню
function drawMenu()
{
        HTMLStr += "</DIV>";
        document.write(HTMLStr);
        document.write(menuBorderStr);


        Menu.style.backgroundColor = aCurColor[0];
        resizeMenu();

        for (i = 0; i < TotalMenu; i++) 
        {
                thisMenu = document.all(arrMenuInfo[i].IDStr);
                if (thisMenu != null)
                        thisMenu.style.width = arrMenuInfo[i].width + 'px';
        }
}


// Menu.style.width = Ширина экрана
function resizeMenu()
{
        w = Math.max(MenuMinWidth, document.body.clientWidth) - MenuMinWidth;
        Menu.style.width = MenuMinWidth + w;
}

// установка цветов меню
function setDefaultMenuColor(bgColor, fontColor, mouseoverColor, bgOverColor)
{       
        if (bgColor != "") aCurColor[0] = bgColor;
        if (fontColor != "") aCurColor[1] = fontColor;
        if (mouseoverColor != "") aCurColor[2] = mouseoverColor;
        if (bgOverColor != "") aCurColor[3] = bgOverColor;
}

// установка цветов подменю
function setDefaultSubMenuColor(bgColor, fontColor, mouseoverColor, bgOverColor)
{       
        if (bgColor != "") aCurColorSubMenu[0] = bgColor;
        if (fontColor != "") aCurColorSubMenu[1] = fontColor;
        if (mouseoverColor != "") aCurColorSubMenu[2] = mouseoverColor;
        if (bgOverColor != "") aCurColorSubMenu[3] = bgOverColor;
}


// arrMenuInfo[i] = new menuInfo(MenuIDStr); // если меню с таким ID еще нет, то добавляем в массив
function addSubMenuIDToArray(MenuIDStr)  //addSubMenuIDToArray
{
        var fFound = false;
        if (TotalMenu == MaxMenu)
        {
                alert("Unable to process menu. Maximum of " + MaxMenu + " reached.");
                return;
        }
        
        for (i = 0; i < TotalMenu; i++)
                if (arrMenuInfo[i].IDStr == MenuIDStr)
                {
                        fFound = true;
                        break;
                }

        if (!fFound)
        {
                arrMenuInfo[i] = new menuInfo(MenuIDStr);
                TotalMenu += 1;// кол-во подменюшек всего
        }
}


// типа конструктор ;-)
function menuInfo(MenuIDStr)
{
        this.IDStr = MenuIDStr;
        this.width = 0;
        this.count = 0;
}


// arrMenuInfo[i].width = SubMenuStr.length // если необходимо
function updateSubMenuWidth(MenuIDStr, SubMenuStr)
{
        for (i = 0; i < TotalMenu; i++)
                if (arrMenuInfo[i].IDStr == MenuIDStr)
                {
                        if (arrMenuInfo[i].width < SubMenuStr.length) 
                                arrMenuInfo[i].width = SubMenuStr.length;
                        arrMenuInfo[i].count = arrMenuInfo[i].count + 1; // кол-во пунктов в данном подменю (при условии, что updateSubMenuWidth будет вызываться 1 раз для каждого пункта)
                        break;
                }
}



// добавка MainMenu ("AM_" + MenuIDStr):        1) в HTMLStr (+события_для_мыши)        2) в массив (addSubMenuIDToArray)
function addMenu(MenuIDStr, MenuDisplayStr, MenuURLStr)
{
        tagStr = "<!--MENU_TITLES-->";

        MenuStr = newLineChar;
        MenuStr += "<font color=" + aCurColor[1] + ">" + "|" + "</font>"
                +"<A ID='AM_" + MenuIDStr + "'" + " STYLE='text-decoration:none; cursor:hand; font:" + Font + ";background-color:" + aCurColor[0] + ";color:" + aCurColor[1] + ";'";

        if (MenuURLStr != "")
                MenuStr += " HREF='" + MenuURLStr + "'";
        else
                MenuStr += " HREF='' onclick='window.event.returnValue=false;'";

        MenuStr +=
                " onmouseout="  + char34 + "mouseMenu('out' ,'" + MenuIDStr + "'); hideMenu();" + char34 + 
                " onmouseover=" + char34 + "mouseMenu('over','" + MenuIDStr + "'); doMenu('"+ MenuIDStr + "');" + char34 + ">" +
                "&nbsp"+MenuDisplayStr+"</a>";

        MenuStr += tagStr;
        
        HTMLStr = HTMLStr.replace(tagStr, MenuStr);     
        addSubMenuIDToArray(MenuIDStr);
}

// добавка SubMenu ("AS_" + MenuIDStr): 1) в HTMLStr (+события_для_мыши)        2) в массив (addSubMenuIDToArray)
function addSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr)
{

//alert(SubMenuURLStr);

        var LookUpTag  = "<!--" + MenuIDStr + "-->";
        var sPos = HTMLStr.indexOf(LookUpTag);

        if (sPos <= 0)
                HTMLStr +=
                        newLineChar + newLineChar + "<SPAN alt='123123123' ID='" + MenuIDStr + "'" +
                        " STYLE='display:none;position:absolute;background-color: "+aCurColorSubMenu[0]+"; padding-top:0;padding-left:0;padding-bottom:10;z-index:9;'" +
                        " onmouseout='hideMenu();'>" + "<DIV alt='123123123' STYLE='position:relative;left:0;top:5;'>";
//merlin                        " onmouseout='hideMenu(); window.status=\"\";' onmouseover='window.status=\"" + SubMenuURLStr + "\"'>" + "<DIV alt='123123123' STYLE='position:relative;left:0;top:5;'>";

        if (SubMenuURLStr != "")
                onClickStr = "location.href='" + SubMenuURLStr + "';";
        else
                onClickStr = "window.event.returnValue=false;";

        TempStr =
                newLineChar + "<div ID='AS_" + MenuIDStr + "'" +
                " STYLE='text-decoration:none;cursor:hand;font:" + Font + ";color: "+aCurColorSubMenu[1] + ";'" +
                " onmouseout="  + char34 + "mouseSubMenu('out' ,'" + MenuIDStr + "');" + char34 + 
                " onclick = " + onClickStr + 
                " onmouseover=" + char34 + "mouseSubMenu('over','" + MenuIDStr + "');" + char34 + ">" +
                "&nbsp;" + SubMenuStr + "</div>" + LookUpTag;

        if (sPos <= 0)
                HTMLStr += TempStr + "</DIV></SPAN>";
        else
                HTMLStr = HTMLStr.replace(LookUpTag, TempStr);  

        updateSubMenuWidth(MenuIDStr, SubMenuStr);      
}

// изменение цвета текста для MenuIDStr на OnMouseOver (id='over') и OnMouseOut (id='out')
function mouseMenu(id, MenuIDStr) 
{
        IsMouseout = (id.toUpperCase().indexOf("OUT") != -1);

        if (IsMouseout)
        {
                color = aDefColor[1];
                bgColor = aDefColor[3];
                if (MenuIDStr != CurMenu && aCurColor[1] != "") 
                        {
                        color = aCurColor[1];
                        bgColor = aCurColor[0];
                        }
        }
        else
        {
                color = aDefColor[2];
                bgColor = aDefColor[3];
                if (MenuIDStr != CurMenu && aCurColor[2] != "") 
                        {
                        color = aCurColor[2];
                        bgColor = aCurColor[3];
                        }
        }
        window.event.srcElement.style.color = color;
        window.event.srcElement.style.backgroundColor = bgColor;
//      ThisMenu.style.bgcolor = MybgColor;
}


function mouseSubMenu(id, MenuIDStr) 
{
        IsMouseout = (id.toUpperCase().indexOf("OUT") != -1);

        if (IsMouseout)
        {
                color = aDefColor[1];
                bgColor = aDefColor[0];
                if (MenuIDStr != CurMenu && aCurColorSubMenu[1] != "")
                        { 
                        color = aCurColorSubMenu[1];
                        bgColor = aCurColorSubMenu[0];
                        };
//         window.status="";
        }
        else
        {
                color = aDefColor[2];
                bgColor = aDefColor[3];
                if (MenuIDStr != CurMenu && aCurColorSubMenu[2] != "") 
                        {
                        color = aCurColorSubMenu[2];
                        bgColor = aCurColorSubMenu[3];
                        }
//         window.status="submenu";
        }
        window.event.srcElement.style.color = color;
        window.event.srcElement.style.backgroundColor = bgColor;
}


function doMenu(MenuIDStr) 
{
        var thisMenu = document.all(MenuIDStr);
        if (ToolbarMenu == null || thisMenu == null) 
        {
                window.event.cancelBubble = true;
                return false;
        }

        // Reset dropdown menu
        window.event.cancelBubble = true;
        ToolbarMenu.style.display = "none";
        ToolbarMenu = thisMenu;

        // Set dropdown menu display position
        x  = window.event.srcElement.offsetLeft; // ? + window.event.srcElement.offsetParent.offsetLeft;

        y  = Menu.offsetHeight;
        thisMenu.style.top  = y;
        thisMenu.style.left = x;
        thisMenu.style.clip = "rect(0 0 0 0)";
        thisMenu.style.display = "block";

        // delay 2 millsecond to allow the value of ToolbarMenu.offsetHeight be set

mouseInRange = true;

        window.setTimeout("showMenu()", hideTime);
        return true;
}

function showMenu() 
{
if (mouseInRange)
{
//alert("clientX="+event.clientX+"; clientY="+event.clientY);
        if (ToolbarMenu != null) 
        { 
//              y2 = y + ToolbarMenu.offsetHeight;      // y2 нужен потом для hideMenu()
                ToolbarMenu.style.clip = "rect(auto auto auto auto)";
        }

scrWidth = window.screen.width;
subMenuWidth = ToolbarMenu.offsetWidth;

if (x + subMenuWidth > scrWidth)
        {
        // alert(ToolbarMenu.offsetWidth); 
        x = scrWidth - subMenuWidth;
        thisMenu.style.left = x-20;
        }
}
}

function hideMenu()
{

mouseInRange = false;

x = ToolbarMenu.offsetLeft + ToolbarMenu.offsetParent.offsetLeft - document.body.scrollLeft;
//alert("document.body.scrollTop = " + document.body.scrollTop);
x2 = x + ToolbarMenu.offsetWidth;
y = Menu.offsetTop;
y2 = y + Menu.offsetHeight + ToolbarMenu.offsetHeight;

        if (ToolbarMenu != null && ToolbarMenu != StartMenu) 
        {
//alert("clientX="+event.clientX+"; clientY="+event.clientY);

        // Don't hide the menu if the mouse move between the menu and submenus
        cY = event.clientY + document.body.scrollTop;
        if ( (event.clientX >= (x+5) && event.clientX <= x2) && ((cY > y+5) && (cY <= y2)) )    
        {
                window.event.cancelBubble = true;
                return; 
        };
        ToolbarMenu.style.display = "none";
        ToolbarMenu = StartMenu;
        window.event.cancelBubble = true;

        }
}

