//----- VARIABLES -----
var root

//----- FUNCTIONS -----  
function buildMenu()
{
  //Level ID = Father ID, Menu Name, Link to Page
  root     =addToMenuTree(0, " ", "index.html")   //dummy menu point

  menu0    =addToMenuTree(root,  "1. Die Schweiz auf einer Bühne des Welttheaters",              "kapitel1.html#begin")

  menuA    =addToMenuTree(root,  "2. Die Welt, in der wir leben",                                "kapitel2.html#begin")
  
  menuB    =addToMenuTree(root,  "3. Die Völker und ihr Staat",                                  "kapitel3.html#begin")
  
  menuC    =addToMenuTree(root,  "4. Neutralität - eine Gesinnungsfrage",                        "kapitel4.html#begin")
  
  menuD    =addToMenuTree(root,  "5. Die UNO",                                                   "kapitel5.html#begin")
  
  menuE    =addToMenuTree(root,  "6. Die Schweiz in der UNO",                                    "kapitel6.html#begin")
   menuE1  =addToMenuTree(menuE, "a. Zustand der Welt",                                          "kapitel6.html#a")
   menuE2  =addToMenuTree(menuE, "b. Zustand der UNO",                                           "kapitel6.html#b")
   menuE3  =addToMenuTree(menuE, "c. Zur Mentalität der UNO",                                    "kapitel6.html#c")
   menuE3  =addToMenuTree(menuE, "d. Beitrag der Schweiz für die Welt",                          "kapitel6.html#d")
  
  menuF    =addToMenuTree(root,  "7. Die Schweiz auf eigenem Boden",                             "kapitel7.html#begin")
   menuF1  =addToMenuTree(menuF, "a. Unsere Eid - Genossenschaft",                               "kapitel7.html#a")
   menuF2  =addToMenuTree(menuF, "b. Einige Holzwege unserer Zeit",                              "kapitel7.html#b")
   menuF3  =addToMenuTree(menuF, "c. Unser Eigenstand?",                                         "kapitel7.html#c")
   menuF4  =addToMenuTree(menuF, "d. Eine kleine Zusammenfassung",                               "kapitel7.html#d")
  
  menuW    =addToMenuTree(root,  "Nachwort",                                                     "nachwort.html")

  menuX    =addToMenuTree(root,  "Über den Autor",                                               "autor.html")

  menuY    =addToMenuTree(root,  "Gesamtes Werk",                                                "gesamteswerk.html")

  menuZ    =addToMenuTree(root,  "Werk herunterladen",                                           "die_ch_in_der_uno.pdf")
}

//*************************************************************************************
//    Function:  addToMenuTree(father, menuName, pageLink)                                                        
// Description:  create and initialize the menu structure/tree. the submenus are added 
//               at the end of the father array. if an array have only 6 elements,     
//               therefore no childs, so this is the last menu point menu point in the 
//               menu tree.                                                            
//*************************************************************************************
function addToMenuTree(father, menuName, pageLink)
{
  var menuPoint
    
  menuPoint = new Array()
  menuPoint[0] = 0             // 1/0 menu open/closed
  menuPoint[1] = 0             // menu level
  menuPoint[2] = 0             // # of submenus/children
  menuPoint[3] = menuName      // menu name
  menuPoint[4] = pageLink      // name of HTML page to link to

  if(father==0)                // if this is the dummy root
  {
    menuPoint[0] = 1           // Set to 1 to keep this dummy menu point open
    return menuPoint
  }
  else
  {
    child = menuPoint
    father[father.length] = child
    child[1] = father[1] +1          // child level is one plus father level
    father[2] = father[2] + 1        // increase child count of father
  }
 
  return menuPoint
}

//*************************************************************************************
//    Function:  initializeMenu()                                                      
// Description:  called on load of navigation html page. initializes/prepares menu     
//               structure in memory                                                   
//*************************************************************************************
function initializeMenu()
{
  if (parseInt(navigator.appVersion.substring(0,1))>3)  //only if browser version > 3
  {
    buildMenu()
    drawMenuPage()
  }
}  

//*************************************************************************************
//    Function:  drawMenuPage()                                                            
// Description:  called to display menu tree. only header of navigation page is created 
//               here, menu points are created recursively by calling drawMenuPoint    
//*************************************************************************************
function drawMenuPage()
{
  //display header of navigation page
  var frameDoc = top.navFrame.window.document
  frameDoc.clear()
  frameDoc.write("<body>\n")
  frameDoc.write("<table height=100 border=0 cellpadding=2 cellspacing=0>\n")
  frameDoc.write("<tr>\n")
  frameDoc.write("<td>\n")
  frameDoc.write("</td>\n")
  frameDoc.write("</tr>\n")
  frameDoc.write("</table>\n\n")

  //display menu points of navigation page
  drawMenu(root, frameDoc)

  frameDoc.close()
}  

//*************************************************************************************
//    Function:  drawMenu(menuPoint, frameDoc)                                                            
// Description:  called from 'drawMenuPage' to display menu points 
//*************************************************************************************
function drawMenu(menuPoint, frameDoc)
{
  var tableheight = 0
  var intend = 0
  var menuLine1 = ""
  var menuLine2 = ""
  var menuLine3 = ""
  var i=0
  
  if (menuPoint[1] > 0)  //only if not 'dummy' root level 
  {  
    tableheight = 42 - (menuPoint[1]) * 10      //table height in pixel 
	frameDoc.write("<table height="+tableheight+" cellpadding=2 cellspacing=0 border=0>\n")
    frameDoc.write("<tr>\n")  
  
    //display graphic with link at left side of menu point text
    frameDoc.write("<td valign=middle nowrap>\n")
    frameDoc.write("<a href='javascript:top.openMenu(\""+menuPoint[3]+"\",\""+menuPoint[4]+"\",\""+menuPoint[1]+"\")' ") 
    frameDoc.write("onMouseOver='window.status=\""+menuPoint[3]+"\";return true' style='text-decoration:none'>")

    intend = (menuPoint[1]) * 10      //intend in in pixel  
    frameDoc.write("<img src='graphics/blank.gif' width="+intend+" height=10 border=0>")    //intend with blank gif  
  
    if (menuPoint[0] == 1)    //open menu point
    {
      if (menuPoint[2] > 0)  //open menu with sub-menus
      {
        frameDoc.write("<img src='graphics/opened.gif' width=10 height=10 border=0>")   //menu point sign
      }
      else                   //open menu without sub-menus
      {
        frameDoc.write("<img src='graphics/blank.gif' width=10 height=10 border=0>")    //intend with blank gif
      }
    }
    else   //closed menu point
    {
      if(menuPoint[2] > 0)   //closed menu with sub-menus   
       {
         frameDoc.write("<img src='graphics/closed.gif' width=10 height=10 border=0>")  //menu point sign
       }
      else
       {
        frameDoc.write("<img src='graphics/blank.gif' width=10 height=10 border=0>")    //intend with blank gif
       } 
    }

    //divide menu point text in two parts/lines if too long
    menuLine1 = menuPoint[3]
    while (menuLine1.length > 31)
    {
      menuLine2 = menuLine1.substring(menuLine1.lastIndexOf(" "),menuLine1.length) + menuLine2
      menuLine1 = menuLine1.substring(0,menuLine1.lastIndexOf(" "))

      while (menuLine2.length > 25)
      {
        menuLine3 = menuLine2.substring(menuLine2.lastIndexOf(" "),menuLine2.length) + menuLine3
        menuLine2 = menuLine2.substring(0,menuLine2.lastIndexOf(" "))
      }
    }

    //display menu point text
    frameDoc.write("<font size=-1><tt>"+menuLine1)
    if (menuLine2 != "")
    {
      frameDoc.write("<br><img src='graphics/blank.gif' width="+(intend+22)+" height=10 border=0>")    //intend with blank gif
      frameDoc.write(menuLine2)

      if (menuLine3 != "")
      {
        frameDoc.write("<br><img src='graphics/blank.gif' width="+(intend+22)+" height=10 border=0>")  //intend with blank gif
        frameDoc.write(menuLine3)
      }
    }
    frameDoc.write("</tt></font></a></td>\n</tr>\n")
    frameDoc.write("</table>\n\n")
  }

  //if menu point is open and more sub-menus exists then display sub-menus recursively
  if ((menuPoint.length > 5) && menuPoint[0]) 
  {
     //display sub-menus
    for (i=5 ; i < menuPoint.length; i++)
    {
      drawMenu(menuPoint[i], frameDoc)
    }
  }

}

//*************************************************************************************
//    Function:  openMenu(menuName, pageLink, menuLevel)                                                            
// Description:  called if clicked on menu point 
//*************************************************************************************
function openMenu(menuName, pageLink, menuLevel)
{
  //open clicked menu point
  openMenuPoint(root,menuName,menuLevel)
  
  //show new page in main frame
  top.mainFrame.location=pageLink  

  redrawMenu = setTimeout("drawMenuPage()",100)
}

//*************************************************************************************
//    Function:  openMenuPoint(menuPoint, menuName, menuLevel)                                                            
// Description:  called by openMenu. opens clicked menu point  
//*************************************************************************************
function openMenuPoint(menuPoint, menuName, menuLevel)
{
  var i=0

  //close open menu point on same menu level  
  if ((menuPoint[3]!= menuName) && (menuPoint[1]== menuLevel) && (menuPoint[0]==1))
  { 
    closeMenuPoint(menuPoint)    //close all its submenus 
  } 

  if (menuPoint[3] == menuName)  //menu point to be opened
  {
    //menu point to be opened    
	if ((menuPoint[0]==1) && (menuPoint[2] > 0))  //close menu point if already open
	{
      closeMenuPoint(menuPoint)  //close all its submenus
	}
    else
      menuPoint[0] = 1
  } 
  else
  {
    //other menu point
    for (i=5; i < menuPoint.length ; i++)
      openMenuPoint(menuPoint[i], menuName, menuLevel)
  }
}

//*************************************************************************************
//    Function:  closeMenuPoints(menuPoint)                                                            
// Description:  called by openMenuPoint to close all submenus of closing menu point   
//*************************************************************************************
function closeMenuPoint(menuPoint)
{
  var i=0

  for (i=5; i< menuPoint.length; i++)
    closeMenuPoint(menuPoint[i])

  menuPoint[0] = 0
}

