/***************************************************************
 *
 * Dinamical HTML menu for ARLICON portal
 *
 * Author:        Dmitry Kumanovsky
 * Version:       1.0
 * Last modified: 21.04.04
 *
 ***************************************************************/

var dir = "/";
var NS4 = false;
var NS6 = false;
var IE = false;
var newWin = null;
var MOL=new Array();

/*********************************************************************
 * Detect browser type
 *********************************************************************/
if (!document.all && document.getElementById) NS6 = true;
if (document.layers) NS4 = true;
if (document.all) IE = true;

/*********************************************************************
 * DHTML browser templates
 *********************************************************************/
var layerRef,layerLeft,layerWidth,layerStyle,layerTail,layerClass;
var isFramed = false;
if (NS4 || NS6){
        if (NS4){
                layerRef = "document.layers[";
                layerLeft = "].left";
                layerVis = "].visibility";
        } else {
                layerRef = "document.getElementById(";
                layerLeft = ").style.left";
                layerVis = ").style.visibility";
                layerWidth = ").style.width";
                layerHeigth = ").style.height";
                layerDisplay = ").style.display";
                layerStyle = ").style";
                layerTail = ")";
                layerSrc=").src";
                layerClass=").className";
        }
}else{
        layerRef = "document.all[";
        layerLeft = "].style.pixelLeft";
        layerVis = "].style.visibility";
        layerWidth = "].style.width";
        layerHeight = "].style.height";
        layerDisplay = "].style.display";
        layerStyle = "].style";
        layerTail = "]";
        layerSrc="].src";
        layerClass="].className";
}


/*********************************************************************
 * DHTML menu items
 *********************************************************************/
var menuItems = new Array(9);
var prhMenuItems = new Array(6, 9);

menuItems[0] = new Array(2);
menuItems[0][0] = new classLink("Новости",dir+"news/", "Раздел новостей и событий АРБИКОН");
var menu = new Array(3);
menuItems[0][1] = menu;
menu[0] = new classLink("Лента новостей",dir+"news/index.asp", "Новости АРБИКОН");
menu[1] = new classLink("Подписка",dir+"news/subscribe.asp", "Подписка на новости АРБИКОН");
menu[2] = new classLink("События",dir+"news/events.asp", "События");

menuItems[1] = new Array(2);
menuItems[1][0] = new classLink("О нас", dir+"project/",
                          "Раздел, посвящённый АРБИКОН");
menu = new Array(17);
menuItems[1][1] = menu;
menu[0] = new classLink( "О нас", dir+"project/",
                          "Информация о проекте АРБИКОН");
menu[1] = new classLink( "История", dir+"project/history.asp",
                          "История создания проекта АРБИКОН");
menu[2] = new classLink( "Зачем вступать", dir+"project/reasons.asp",
                          "Информация для желающих вступить");
menu[3] = new classLink( "Управление", dir+"project/structure.asp",
                          "Информация об органах управления АРБИКОН");
menu[4] = new classLink( "Учредители", dir+"project/founders.asp",
                          "Информация об учредителях АРБИКОН");
menu[5] = new classLink( "НТС АРБИКОН", dir+"project/nts.asp",
                          "Информация о НТС АРБИКОН");
menu[6] = new classLink( "Консорциумы", dir+"project/consortiums.asp",
                          "Информация о российских региональных консорциумах");
menu[7] = new classLink( "Эл. карта АРБИКОН", dir+"project/arbicon_map.asp",
                          "Карта охвата России деятельностью АРБИКОН");
menu[8] = new classLink( "Участники", dir+"project/members.asp",
                          "Информация об участниках АРБИКОН");
menu[9] = new classLink( "Контакты", dir+"project/contacts.asp",
                          "Контактная информация")
menu[10] = new classLink("Кто есть кто", dir+"project/whoiswho.asp",
                          "Информация о руководстве управляющих органов АРБИКОН");
menu[11] = new classLink("Как вступить", dir+"project/howtojoin.asp",
                          "Информация для желающих вступить в АРБИКОН");
menu[12] = new classLink("Платежи", dir+"project/payments.asp",
                          "Информация о взносах и платежах в проекте АРБИКОН");
menu[13] = new classLink("Реквизиты",dir+"project/requisits.asp",
                          "Банковские реквизиты АРБИКОН")
menu[14] = new classLink("Символика",dir+"project/symbol.asp",
                          "Официальная символика АРБИКОН")
menu[15] = new classLink("Документы АРБИКОН",dir+"project/docs.asp", "Официальные документы АРБИКОН");

menu[16] = new classLink("FAQ (Памятка)",dir+"project/faq.asp", "Наиболее часто задаваемые вопросы");
// menu[4] = new classLink("Технологии",dir+"project/technology.asp")

menuItems[2] = new Array(2);
menuItems[2][0] = new classLink("Проекты",dir+"projects/", "Информация о проектах АРБИКОН");
menu = new Array(7);
menuItems[2][1] = menu;
menu[0] = new classLink( "О проектах", dir+"projects",
                          "Информация о проектах АРБИКОН");
menu[1] = new classLink( "Вопрос-ответ", dir+"projects/QA.asp",
                          "Ответы на общие вопросы по Проектам");
menu[2] = new classLink("История Проектов", dir+"project/projects.asp",
                          "Проекты АРБИКОН в 2003-2005 годах");
menu[3] = new classLink( "Проект ЭПОС", dir+"projects/EPOS",
                          "Информация о проекте ЭПОС");
menu[4] = new classLink( "Проект МАРС", dir+"projects/MARS",
                          "Информация о проекте МАРС");
menu[5] = new classLink( "Проект ЭДД", dir+"projects/EDD",
                          "Информация о проекте ЭДД");
menu[6] = new classLink( "Проект КОРСАР", dir+"projects/CORSAR",
                          "Информация о проекте КОРСАР");

menuItems[3] = new Array(2);
menuItems[3][0] = new classLink("Обучение",dir+"training/",
                          "Программа обучения в рамках проекта АРБИКОН");
menu = new Array(5);
menuItems[3][1] = menu;
menu[0] = new classLink( "Тренинг-центры АРБИКОН",dir+"training/",
                          "Информация о тренинг-центрах АРБИКОН");
menu[1] = new classLink( "Москва",dir+"training/msk.asp",
                          "Информация о Московском тренинг-центре");
menu[2] = new classLink( "Санкт-Петербург",dir+"training/spb.asp",
                          "Информация о Санкт-Петербургском тренинг-центре");
menu[3] = new classLink( "Томск",dir+"training/tomsk.asp",
                          "Информация о Томском тренинг-центре");
menu[4] = new classLink( "Новосибирск",dir+"training/ns.asp",
                          "Информация о Новосибирском тренинг-центре");

menuItems[4] = new Array(2);
menuItems[4][0] = new classLink("Сервисы",dir+"services/",
                          "Предлагаемые АРБИКОН службы поиска и доступа к информации");
menu = new Array(21);
menuItems[4][1] = menu;
menu[0] = new classLink( "Текущая государственная<br>библиография РКП",dir+"services/rkp_cbib.asp",
                          "Поиск в текуших библиографических записях РКП");
menu[1] = new classLink( "Ресурсы АРБИКОН","http://new.arlicon.com/services/",
                          "Поиск информации в ресурсах АРБИКОН");
menu[2] = new classLink( "Аналитика АРБИКОН (МАРС)","http://new.arlicon.com/services/mars_analitic.html",
                          "Поиск в аналитических записях АРБИКОН");
//menu[3] = new classLink( "","","");
menu[3] = new classLink( "Аналитика АРБИКОН (МАРС - демо)",dir+"services/index_mars_test.asp",
                          "Поиск в аналитических записях АРБИКОН");
menu[4] = new classLink( "Ресурсы ЭПОС",dir+"services/index_epos.asp",
                          "Поиск по ресурсам проекта ЭПОС");
menu[5] = new classLink( "Аналитика РКП (2000-2003)",dir+"services/indexrkp.asp",
                          "Поиск в аналитических записях РКП");
menu[6] = new classLink( "MeSH",dir+"services/index_mesh.asp",
                          "Поиск в тезаурусе MeSH");
menu[7] = new classLink( "Ресурсы РНБ",dir+"services/index_nlr.asp",
                         "Поиск в ресурсах Российской Национальной Библиотеки");
menu[8] = new classLink( "Предметные рубрики РКП", dir+"services/index_rkps.asp","Поиск в предметных рубриках РКП (образцах)");
menu[9] = new classLink( "","","");
menu[10] = new classLink( "Медицинский портал АРБИКОН",dir+"services/index_med.asp",
                          "Поиск среди медицинских библиотек-участниц АРБИКОН");
menu[11] = new classLink( "Портал АРБИКОН для слабовидящих",
                          dir+"services/index_blind.asp",
                          "Поиск среди библиотек-участниц АРБИКОН для слабовидящих");
menu[12] = new classLink( "Музейно-библиотечный портал",
                          dir+"services/index_ml.asp",
                          "Поиск среди записей музейно-библиотечного портала АРБИКОН");
menu[13] = new classLink( "","","");
menu[14] = new classLink( "Статистика",dir+"services/stat.asp",
                          "Статистика использования портала АРБИКОН");
menu[15] = new classLink( "Справка",dir+"services/help.asp",
                          "Справочная информация по работе со службами АРБИКОН");
menu[16] = new classLink( "Стандарты",dir+"services/standard.asp",
                          "Стандарты, применяемые в проекте АРБИКОН");
menu[17] = new classLink( "Корпоративный профиль АРБИКОН",dir+"services/require.asp",
                          "Технические требования, предъявляемые к партнёрам");
menu[18] = new classLink("Поиск по сайту",dir+"services/search.asp",
                          "Поиск информации на сайте АРБИКОН");
menu[19] = new classLink("Ссылки",dir+"services/links.asp",
                          "Ссылки на другие полезные ресурсы");
menu[20] = new classLink("Публикации",dir+"services/publications.asp", "Материалы, документы, публикации НП АРБИКОН и его участников");

//menuItems[5] = new Array(2);
//menuItems[5][0] = new classLink("Гостевая книга",dir+"guestbook/",
//                          "Гостевая книга АРБИКОН");
//menuItems[5][1] = new Array(0);

menuItems[5] = new Array(2);
menuItems[5][0] = new classLink("Форумы",dir+"staff/forum/",
                          "Форумы портала АРБИКОН");
menuItems[5][1] = new Array(0);

menuItems[6] = new Array(2);
menuItems[6][0] = new classLink("Конференции",dir+"staff/chat/",
                          "Конференции (т.н. CHAT) для пользователей АРБИКОН");
menuItems[6][1] = new Array(0);

menuItems[7] = new Array(2);
menuItems[7][0] = new classLink("Галерея",dir+"picgallery/",
                          "Фотогалерея пользователей АРБИКОН");
menuItems[7][1] = new Array(0);

menuItems[8] = new Array(2);
menuItems[8][0] = new classLink("Авторизация",dir+"staff/index.asp",
                          "Раздел, посвящённый авторизации пользователей АРБИКОН");
menuItems[8][1] = new Array(0);

/*********************************************************************
 * Menu item object
 *********************************************************************/
function classLink(title, url, caption) {
        this.name = title;
        this.url = url;
        if (caption)
          this.caption = caption;
        else
          this.caption = "";
 }

/*********************************************************************
 * Menu templates
 *********************************************************************/
function MenuObj(_A,_B,_C,_D,_E,_F,_G,_H,_I)
{
  this.name=_A;
  this.bOn=_E;
  this.bOf=_F;
  this.bA=_G;
  this.SBS=SBS;
  this.showing=false;
  this.TM=TM;
  document.onclick=MCH;
  this.Direction=_I;
  MOL[MOL.length]=this;
  this.divObj=eval('document.getElementById("' + _B + '")');
  this.divStyleObj=eval('document.getElementById("' + _B + '").style');
  this.refTDObj=eval('document.getElementById("' + _C + '")');
  if (_D)
    this.DdTDObj=eval('document.getElementById("' + _D + '")');
  this.frmObj=eval('document.getElementById("' + _H + '")');
  this.SPDiv=eval('document.getElementById("' + _B + 'MenuDIV")');
  this.SPDivStyleObj = eval('document.getElementById("' + _B + 'MenuDIV").style');
  this.strShow='visible';
  this.strHide='hidden';
  this.strDisplay='block';
  this.strNoDisplay='none';
}
/*********************************************************************
 * DHTML menu templates
 *********************************************************************/
var menuHeader =  "<table border=\"0\" cellpadding=\"2\"";
menuHeader +=     " cellspacing=\"0\" height=\"22\"><tr>";
menuHeader +=     "<td class=\"menubar-left\">&nbsp;</td>";
var menuFooter =  "<td class=\"menuitem-empty\">&nbsp;</td></tr></table>";
var menuItemHeader = "<td class=\"menuitem\" nowrap=\"nowrap\"";

var menuItemHeader1 = " onmouseover=\"javascript:setOverState(event,true);\"" +
                      " onmouseout=\"javascript:setOverState(event,false);\"";
var menuItemHeader11 = " onclick=\"javascript:goToURL(\'";
var menuItemHeader12 = " \');\"";

var menuItemHeader21 = " onmouseover=\"javascript:MME(event, ";
var menuItemHeader22 = ");\"";
var menuItemHeader23 = " onmouseout=\"javascript:MME(event, ";
var menuItemHeader24 = ");\"";
var menuItemHeader25 = " onblur=\"javascript:MME(event, ";
var menuItemHeader26 = ");\"";
var menuItemHeader27 = " onclick=\"javascript:MCH(event, ";
var menuItemHeader28 = ");\" id=\"";
var menuItemHeader29 = "TD\"";

var menuItemHeader3 = ">";
var menuItemFooter = "</td>";
var menuDelimiter = "<td class=\"menuitem-empty\">|</td>";

var subMenuHeader1 = "<div id=\"";
var subMenuHeader2 = "TableMenuDIV\" class=\"hidden-menu-div\"><table id=\"";
var subMenuHeader3 = "Table\" onclick=\"MCH(event,";
var subMenuHeader4 = ",true)\">";
var subMenuFooter = "</tr></table></div>";
var subMenuItemHeader1 =  "<tr><td class=\"submenuitem\"" +
                          " onmouseover=\"setOverState(event,true);\"" +
                          " onmouseout=\"setOverState(event,false);\"";
var subMenuItemHeader2 = " onclick=\"javascript:goToURL(\'";
var subMenuItemHeader3 = " \');\"";
var subMenuItemHeader4 = " title=\"";
var subMenuItemHeader5 = "\"";
var subMenuItemHeader6 = ">";

var subMenuItemFooter = "</td></tr>";
var subMenuItemDelimiter = "<tr><td class=\"submenuitem-delimeter\">" +
                           "<img src=\"/images/clear.gif\" width=\"1\"" +
                           " height=\"1\" alt=\"\"></td></tr>";

/*********************************************************************
 * Cross-browser functions to get specified layer
 *********************************************************************/
function getElemByID(layerName, parentLayerName) {
  var objLayer = false;
  if(document.getElementById)       // NN6+ & IE5+
    objLayer=document.getElementById(layerName);
  if(document.all)
    objLayer=document.all[layerName]; // IE4
  if(document.layers){              //NN4
    if(parentLayerName){
      objLayer=findLayer(layerName, eval(parentLayerName));
    }else{
      objLayer=findLayer(layerName, document.layers);
    }
  }
  return objLayer;
}

function findLayer(what, where){
  if(!where) return false;

  var i,l,parent;
  l = where[what];
  if (l) return l;

  var len=where.length;
  for(i=0;i<len;i++){
    parent=where[i].document.layers;
    l=parent[what];
    if(l) return l;
    l=findLayer(what, parent);
    if(l) return l;
  }
  return false;
}

/*********************************************************************
 * Create menu including/excluding forum and conference menu items
 *********************************************************************/
function createMenu(objId, destFrame, isFull) {
  var parentObj = getElemByID(objId);
  var menuTemplate = menuHeader;
  var subMenuTemplate = "";

  for (var i=0; i < menuItems.length; i++) {
    if (!isFull && isInList(prhMenuItems, i))
      continue;

    var menuName = "menu" + i;
    menuTemplate += menuItemHeader;
    if (menuItems[i][1].length == 0) {
      menuTemplate += menuItemHeader1;

      menuTemplate += " title=\"" + menuItems[i][0].caption + "\"";
      menuTemplate += menuItemHeader11;
      menuTemplate += menuItems[i][0].url;
      menuTemplate += menuItemHeader12;

      menuTemplate += menuItemHeader3;
      menuTemplate += "<a href=\"" + menuItems[i][0].url + "\">"
      menuTemplate += menuItems[i][0].name
      menuTemplate += "</a>"
    } else {
      menuTemplate += " title=\"" + menuItems[i][0].caption + "\"";
      menuTemplate += menuItemHeader21 + menuName + menuItemHeader22;
      menuTemplate += menuItemHeader23 + menuName + menuItemHeader24;
      menuTemplate += menuItemHeader25 + menuName + menuItemHeader26;
      menuTemplate += menuItemHeader27 + menuName + menuItemHeader28;
      menuTemplate += menuName + menuItemHeader29;

      menuTemplate += menuItemHeader3;
      menuTemplate += menuItems[i][0].name;

      // create sub menu
      subMenuTemplate += subMenuHeader1 + menuName + subMenuHeader2 +
                         menuName + subMenuHeader3 + menuName +
                         subMenuHeader4;
      for (var j=0; j < menuItems[i][1].length; j++) {
        if (menuItems[i][1][j].name.length == 0) {
          subMenuTemplate += subMenuItemDelimiter;
        } else {
          subMenuTemplate += subMenuItemHeader1;
          if (menuItems[i][1][j].url.length > 0) {
            subMenuTemplate += subMenuItemHeader2;
            subMenuTemplate += menuItems[i][1][j].url;
            subMenuTemplate += subMenuItemHeader3;
          }
          if (menuItems[i][1][j].url.length > 0) {
            subMenuTemplate += subMenuItemHeader4;
            subMenuTemplate += menuItems[i][1][j].caption;
            subMenuTemplate += subMenuItemHeader5;
          }
          subMenuTemplate += subMenuItemHeader6;
          subMenuTemplate += menuItems[i][1][j].name;
          subMenuTemplate += subMenuItemFooter;
        }
      }

      subMenuTemplate += subMenuFooter;
      subMenuTemplate += "<script language=\"javascript\">";
      subMenuTemplate += "var " + menuName  + " = new MenuObj(\"" + menuName + "\", \"";
      subMenuTemplate += menuName + "Table\", \"" + menuName + "TD\", \"\",";
      subMenuTemplate += " \"menuitem-over\", \"menuitem\", \"menuitem-opened\",";
      subMenuTemplate += "\"" + menuName + "\",\"\");</script>";
    }
    menuTemplate += menuItemFooter;
    if (i < menuItems.length-1)
      menuTemplate += menuDelimiter;
  }

  menuTemplate += menuFooter;
  parentObj.innerHTML = menuTemplate;
  document.write (subMenuTemplate);
}

function SSM(e, srcObj) // Show Sub Menu
{
  if (!e)
  var e=window.event;

  if(!e) //event's been canceled
    return;
  var pCurrMenuObj=ROP(srcObj);
  e.cancelBubble=true;

  if (pCurrMenuObj.showing) {
    pCurrMenuObj.SPDivStyleObj.display = pCurrMenuObj.strNoDisplay;
    pCurrMenuObj.showing = false;
    pCurrMenuObj.refTDObj.className = pCurrMenuObj.bOf;
  } else {
    pCurrMenuObj.SPDivStyleObj.display = pCurrMenuObj.strDisplay;
    pCurrMenuObj.showing = true;
    pCurrMenuObj.refTDObj.className = pCurrMenuObj.bA;
    pCurrMenuObj.SPDivStyleObj.visibility=pCurrMenuObj.divStyleObj.visibility=pCurrMenuObj.strShow;

  }
}

function MME(e, srcObj)
{
  try {
    if (!e)
    var e=window.event;
    var pCurrMenuObj=ROP(srcObj);
    if (!pCurrMenuObj.showing) {
      if (e.type == 'mouseover')
        pCurrMenuObj.SBS('on');
      else if ((e.type == 'mouseout') || (e.type == 'blur'))
        pCurrMenuObj.SBS();
    }
  } catch(e){}
}

function ROP(ObjRef)
{
  var theObj=null;
  if (ObjRef) {
    if (typeof ObjRef != 'object')
      theObj=eval(ObjRef);
    else
      theObj=ObjRef;
    return theObj;
  }  else
    return false;
}

function MCH(e, srcObj, srcIsMenuDiv)
{
  var srcElem;
  if (!e)
    var e=window.event;
  e.cancelBubble=true;
  if (srcObj) {
    var pCurrMenuObj=ROP(srcObj);
    if (!srcIsMenuDiv)
      pCurrMenuObj.divObj.onclick="MCH(event,"+srcObj+",true)";
    pCurrMenuObj.TM();
  } else
    CM();
}

function TM()
{
  if (!this.showing) {
    var RelObjCords=getXY(this.refTDObj);
    if (this.Direction) {
      this.SPDiv.style.top=this.divStyleObj.top =  RelObjCords.top + this.divObj.offsetHeight;
      this.SPDiv.style.left=this.divStyleObj.left =  RelObjCords.left;
    } else {
      this.SPDiv.style.top=this.divStyleObj.top =  RelObjCords.top + 18;
      this.SPDiv.style.left=this.divStyleObj.left =  RelObjCords.left;
    }
    var pCurrMenuObj=ROP(this);
    CM(this);
    this.SBS('clicked');
    this.SPDivStyleObj.visibility=this.divStyleObj.visibility =  this.strShow;
    this.SPDivStyleObj.display = this.strDisplay;
    this.showing=true;
  } else {
    this.SPDivStyleObj.visibility=this.divStyleObj.visibility =  this.strHide;
    this.SPDivStyleObj.display = this.strNoDisplay;
    this.showing=false;
    this.SBS();
  }
}
function CM(callerObj)
{
  for (aIndex=0;aIndex < MOL.length; aIndex++) {
    if ((callerObj) && (callerObj.name != MOL[aIndex].name)) {
      if (MOL[aIndex].showing) {
        MOL[aIndex].TM();
        MOL[aIndex].SBS();
      }
    } else {
      if (MOL[aIndex].showing) {
        MOL[aIndex].TM();
        MOL[aIndex].SBS();
      }
    }
  }
}
function SBS(wS) {
  if (typeof this.refTDObj != "undefined") {
    if (wS == 'on') {
      if (this.bOn) {
        if (typeof this.DdTDObj != "undefined")
          this.DdTDObj.className=this.bOn;
        this.refTDObj.className=this.bOn;
      }
    } else if (wS == 'clicked') {
      if (this.bA) {
        if (typeof this.DdTDObj != "undefined")
          this.DdTDObj.className=this.bA;
        this.refTDObj.className=this.bA;
      }
    } else {
      if (this.bOf) {
        if (typeof this.DdTDObj != "undefined")
          this.DdTDObj.className=this.bOf;
        this.refTDObj.className=this.bOf;
      }
    }
  }
}
function getXY(Obj)
{
  for (var sumTop=0,sumLeft=0;
    Obj!=document.body;
    sumTop+=Obj.offsetTop,sumLeft+=Obj.offsetLeft, Obj=Obj.offsetParent);
  return {left:sumLeft,top:sumTop}
}

function setOverState(e, isOver) {
  if (!e)
    var e=window.event;
  var S=e.target;
  if (!S)
    S=e.srcElement;
  while (S.tagName!="TD") {
    S=S.parentNode;
  }

  if (S) {
    var length = S.className.lastIndexOf("-over");
    if (isOver) {
      if (length==-1)
        S.className=S.className + "-over";
    } else {
      if (length>0)
        S.className = S.className.substr(0, length);
    }
    //alert(S.className);
  }
}

function changeClassName(objName, className) {
  if (objName) {
		eval (layerRef+'\''+objName+'\''+layerClass+' = \"' + className + '\"');
  }
}

function goToURL(url) {
  document.location = url;
}

function isInList(itemList, item) {
  for (var j=0; j < itemList.length; j++) {
    if (item == itemList[j])
      return true;
  }
  return false;
}


