var Parent = new Array();           // Массив выясняющий соотношения, кто в кого вкладывается
var Text = new Array();             // Массив текстов для каждого меню
var Url = new Array();              // Массив ссылок для каждого меню
var Src_img = new Array();          // Массив путей для картинок
var Src_img_hilite = new Array();   // Массив путей для подсвеченных картинок
var Direction = new Array();        // Масив направлений выпадающео меню 1 - вертикальное, 0 - горизонтальное
var Main_Width = new Array();       // Массив колличеств пунктов главного меню на одну строчку
                                    // Main_Width[i] - сколько пунктов в i-й строке.
var L = new Array();                // Массив, определяющий отступ слева для отображения меню
var T = new Array();                // Массив, определяющий отступ сверху для отображения меню

var Main_Menu_Html_Text = "";       // HTML - текст главного меню
var Sub_Menu_Html_Text = "";        // HTML - текст подменюшек
var Count = 0;                      // Количество ссылок в меню
var ShowMenu = 0;                   // Переменная для определения, отображется ли меню.
var TimeOut;

var MainTableStyle = "";            // Параметры таблицы главного меню
var MainTrStyle = "";               // Параметры строки таблицы главного меню
var MainTdStyle = "";               // Параметры ячейки таблицы главного меню
var SubBorderTableStyle = "";       // Параметры внешней таблицы подменю
var SubBorderTrStyle = "";          // Параметры строки внешней таблицы подменю
var SubBorderTdStyle = "";          // Параметры ячейки внешней таблицы подменю
var SubTableStyle = "";             // Параметры таблицы подменю
var SubTrStyle = "";                // Параметры строки таблицы подменю
var SubTdStyle = "";                // Параметры ячейки таблицы подменю
var MainFontStyle = "";             // Параметры шрифта главного меню
var SubFontStyle = "";              // Параметры шрифта подменю
var MenuSpeed = 10;                // Скорость исчезания меню

Parent[0]=0;
Direction[0]=0;

// Далее идут функции с говорящим названием
function SetMainFontStyle(s) {
  MainFontStyle = s;
  return 1;
}

function SetSubFontStyle(s) {
  SubFontStyle = s;
  return 1;
}

function SetMenuSpeed(s) {
  MenuSpeed = s;
  return 1;
}

function SetMainTableStyle(s) {
  MainTableStyle = s;
  return 1;
}

function SetMainTrStyle(s) {
  MainTrStyle = s;
  return 1;
}

function SetMainTdStyle(s) {
  MainTdStyle = s;
  return 1;
}

function SetSubBorderTableStyle(s) {
  SubBorderTableStyle = s;
  return 1;
}

function SetSubBorderTrStyle(s) {
  SubBorderTrStyle = s;
  return 1;
}

function SetSubBorderTdStyle(s) {
  SubBorderTdStyle = s;
  return 1;
}

function SetSubTableStyle(s) {
  SubTableStyle = s;
  return 1;
}

function SetSubTrStyle(s) {
  SubTrStyle = s;
  return 1;
}

function SetSubTdStyle(s) {
  SubTdStyle = s;
  return 1;
}

function SetMainWidth(line, maximum) {
  Main_Width[line] = maximum;
  return 1;
}

/* 
Функция добавления ссылки
  parent:           к кому относится. Ноль, если самое главное.
  text:             отображает текст, если не определен src_img или параметр alt в img
  l:                смещение от левого края документа, где отображать подменю, связанное с данной ссылкой
  t:                смещение от верхнего края документа, где отображать подменю, связанное с данной ссылкой
  src_img:          если установленио и не пустое, то обозначает ссылку на картинку, которую отображать
  src_img_hilite:   если установлено и не пусто, то картинка, показываемая при наведении на рисунок
  direction:        направление отображения подменю 1-вниз, 0-вправо
  
  Функция возвращает ссылку(номер) данной сылки в общем мссиве
*/
function AddMenu(parent, text, l, t, url, src_img, src_img_hilite, direction) {
  Count++;
  Parent[Count] = parent;
  if ((l) || (l==0)) {
    L[Count] = l;
  } else {
    L[Count] = 0;
  }
  if ((t) || (t==0)) {
    T[Count] = t;
  } else {
    T[Count] = 0;
  }
  if (!text) {
    Text[Count] = "";
  } else {
    Text[Count] = text;
  }
  if (!url) {
    Url[Count] = "";
  } else {
    Url[Count] = url;
  }
  if (!src_img) {
    Src_img[Count] = "";
  } else {
    Src_img[Count] = src_img;
  }
  if (!src_img_hilite) {
    Src_img_hilite[Count] = "";
  } else {
    Src_img_hilite[Count] = src_img_hilite;
  }
  if ((direction) || (direction==0)) {
    Direction[Count]=direction;
  } else {
    Direction[Count]=1;
  }
  return Count;
}

// Функция для формирования HTML-текста подменю, связанного с ссылкой номер Par
function Init_Menu_Rec(Par) {
  var i;
  var was_sub_menu = 0;
  var Parents = "";
  var Pref = "";
  var Suf = "";
  var Out;
  if (document.all) {
    Out = "<div id=d_"+Par;
    Out += " onmouseover=\"javascript: ShowMenu++;\" onmouseout=\"javascript: HideAll();\" ";
    Out += " style=\"POSITION: absolute; VISIBILITY: hidden; LEFT: "+L[Par]+"; TOP: "+T[Par]+"; Z-INDEX: "+Par+"\">";
  } else {
    if (document.layers) {
      Out = "<layer"
      Out += " onmouseover=\"javascript: ShowMenu++;\" onmouseout=\"javascript: HideAll();\" ";
      Out += "NAME=\"l_"+Par+"\" LEFT=\""+L[Par]+"\" TOP=\""+T[Par]+"\" VISIBILITY=\"hide\">";
    } else {
      Out = "<layer"
      Out += " onmouseover=\"javascript: ShowMenu++;\" onmouseout=\"javascript: HideAll();\" ";
      Out += "NAME=\"l_"+Par+"\"  style=\"position:absolute;top:"+T[Par]+"px;left:"+L[Par]+"px;visibility:hidden;\">";
    }
  }  
  Out += "<table "+SubBorderTableStyle+"><tr "+SubBorderTrStyle+"><td "+SubBorderTdStyle+"><table "+SubTableStyle+">";
  if (Direction[Par]==0) {
    Out += "<tr "+SubTrStyle+">";
  }
  for (i=1; i<=Parent.length; i++) {
    if (Parent[i]==Par) {
      was_sub_menu = 1;

      if (Direction[Par]==0) {
        Pref = "<td "+SubTdStyle+">";
        Suf = "</td>";
      } else {
        Pref = "<tr "+SubTrStyle+"><td "+SubTdStyle+">";
        Suf = "</td></tr>";
      }
      if (Url[i] != "") {
        Pref += "<a  href=\""+Url[i]+"\"";
      } else {
        Pref += "<a  href=\"..\" onclick=\"javascript: return false;\"";
      }
      if (Src_img[i] != "") {
        if (Src_img_hilite[i] != "") {
          if (document.all) {
            Pref += " onmouseover=\"javascript: Show("+i+"); document.images['img_"+i+"'].src='"+Src_img_hilite[i]+"';\"";
            Pref += " onmouseout=\"javascript: HideAll(); document.images['img_"+i+"'].src='"+Src_img[i]+"';\">";
          } else {
            Pref += " onmouseover=\"javascript: Show("+i+"); document.layers['l_"+Par+"'].document.images['img_"+i+"'].src='"+Src_img_hilite[i]+"';\"";
            Pref += " onmouseout=\"javascript: HideAll(); document.layers['l_"+Par+"'].document.images['img_"+i+"'].src='"+Src_img[i]+"';\">";
          }
        } else {
          Pref += " onmouseover=\"javascript: Show("+i+");\" onmouseout=\"javascript: HideAll();\">";
        }
        Pref += "<img name=img_"+i+" border=0 src=\""+Src_img[i]+"\"";
        Pref += " alt=\""+Text[i].replace(/"/g,"&quot;")+"\">";
      } else {
        Pref += " onmouseover=\"javascript: Show("+i+");\" onmouseout=\"javascript: HideAll();\">";
        Pref += "<font "+SubFontStyle+">"+Text[i].replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")+"</font>";
      }
      Suf = "</a>"+Suf;
      Out += Pref + Suf;
      Parents += Init_Menu_Rec(i);
    }
  }
  if (Direction[Par]==0) {
    Out += "</tr>";
  }
  Out += "</table></td></tr></table>";
  if (document.all) {
    Out += "</div>\n\n";
  } else {
    Out += "</layer>\n\n";
  }
  Out += Parents;
  if (was_sub_menu) {
    return Out;
  } else {
    return "";
  }
}

// Функция для формирования HTML-текста главного меню
function Init_Menu_Main() {
  var i;
  var was_sub_menu = 0;
  var Parents = "";
  var Pref = "";
  var Suf = "";
  var line_num = 1;
  var line_count = 1;
  var Out = "<table "+MainTableStyle+">";
  Out += "<tr "+MainTrStyle+">";
  for (i=1; i<=Parent.length; i++) {
    if (Parent[i]==0) {
      was_sub_menu = 1;
      
      if ((!Main_Width[line_num]) || (line_count<=Main_Width[line_num])) {
        line_count++;
      } else {
        line_num++;
        line_count=2;
        Out += "</tr></table><table "+MainTableStyle+"><tr "+MainTrStyle+">";
      }
      Pref = "<td "+MainTdStyle+">";
      Suf = "</td>";
      if (Url[i] != "") {
        Pref += "<a href=\""+Url[i]+"\"";
      } else {
        Pref += "<a href=\"..\" onclick=\"javascript: return false;\"";
      }
      if (Src_img[i] != "") {
        if (Src_img_hilite[i] != "") {
          if (document.all) {
            Pref += " onmouseover=\"javascript: Show("+i+"); document.images['img_"+i+"'].src='"+Src_img_hilite[i]+"';\"";
            Pref += " onmouseout=\"javascript: HideAll(); document.images['img_"+i+"'].src='"+Src_img[i]+"';\">";
          } else {
            if (document.layers) {
              Pref += " onmouseover=\"javascript: Show("+i+"); document.images['img_"+i+"'].src='"+Src_img_hilite[i]+"';\"";
              Pref += " onmouseout=\"javascript: HideAll(); document.images['img_"+i+"'].src='"+Src_img[i]+"';\">";
            } else {
              Pref += " onmouseover=\"javascript: Show("+i+"); document.getElementsByTagName('img').namedItem('img_"+i+"').src='"+Src_img_hilite[i]+"';\"";
              Pref += " onmouseout=\"javascript: HideAll(); document.getElementsByTagName('img').namedItem('img_"+i+"').src='"+Src_img[i]+"';\">";
            }
          }
        } else {
          Pref += " onmouseover=\"javascript: Show("+i+");\" onmouseout=\"javascript: HideAll();\">";
        }
        Pref += "<img name=img_"+i+" border=0 src=\""+Src_img[i]+"\"";
        Pref += " alt=\""+Text[i].replace(/"/g,"&quot;")+"\">";
      } else {
        Pref += " onmouseover=\"javascript: Show("+i+");\" onmouseout=\"javascript: HideAll();\">";
        Pref += "<font "+MainFontStyle+">"+Text[i].replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")+"</font>";
      }
      Suf = "</a>"+Suf;
      Out += Pref + Suf;
      Parents += Init_Menu_Rec(i);
    }
  }
  Out += "</tr>";
  Out += "</table>\n\n";
  Main_Menu_Html_Text = Out;
  Sub_Menu_Html_Text = Parents;
  return 1;
}

// Функция сворачивания i-й подменюшки
function Hide(i) { 
  if (isShow(i))
    if (document.all) 
      document.all.tags("DIV")['d_'+i].style.visibility='hidden';
    else
      if (document.layers)
        document.layers['l_'+i].visibility='hide';
      else
        document.getElementsByTagName('layer').namedItem('l_'+i).style.visibility='hidden';
  return 1;
}

// Функция проверки i-й подменюшки: показана она или нет
function isShow (i) {
  if (document.all) {
    if (document.all.tags("DIV")["d_"+i])
      return (document.all.tags("DIV")["d_"+i].style.visibility=='visible');
    else
      return false;
  } else {
    if (document.layers)
      if (document.layers['l_'+i])
        return (document.layers['l_'+i].visibility=='show');
      else
        return false;
    else
      if (document.getElementsByTagName('layer').namedItem('l_'+i))
        return (document.getElementsByTagName('layer').namedItem('l_'+i).style.visibility=='visible');
      else
        return false;
  }
}

// Сворачивание всех подменю
function HideAllReal() {
  var i;
  if (!(ShowMenu==0))
    return false;
  for (i=1; i<=Count; i++)
    Hide(i);
  return 1;
}

// Установка через время сворачивание всех подменю
function HideAll() {
  ShowMenu--;
  window.clearTimeout(TimeOut);
  TimeOut = window.setTimeout("HideAllReal()",MenuSpeed);
  return 1;
}

// Проверка, нужно ли всорачивать i-е подменю, если отображаем подменю с номером for_i
function needHide(i,for_i) {
  if (for_i==0)
    return true;
  return !( (Parent[for_i]==i) || (i==for_i) || !needHide(i,Parent[for_i]));
  return false;
}

// Отображение i-го подменю
function Show(i) {
  var j;
  ShowMenu++;
  if (document.all) {
    if (document.all.tags("DIV")['d_'+i])
      document.all.tags("DIV")['d_'+i].style.visibility='visible';
  } else {
    if (document.layers) {
      if (document.layers['l_'+i])
        document.layers['l_'+i].visibility="show";
    } else {
      if (document.getElementsByTagName('layer').namedItem('l_'+i))
        document.getElementsByTagName('layer').namedItem('l_'+i).style.visibility='visible';
    }
  }
  for (j=1; j<=Count; j++)
    if (isShow(j))
      if (needHide(j,i))
        Hide(j);
  return 1;
}

// Инициализация меню
function Init_Menu() {
  Init_Menu_Main();  
  return 1;
}

// Отрисовка главного меню
function Draw_Main() {
  document.write (Main_Menu_Html_Text); //.replace(/</g,"&lt;").replace(/>/g,"&gt;"));
  return 1;
}

// Отрисовка всех подменю
function Draw_Sub() {
  document.write (Sub_Menu_Html_Text); //.replace(/</g,"&lt;").replace(/>/g,"&gt;")+"]");
  return 1;
}
