var MenuBarMenus = new Array()
var current = null
var popup

// function window.onload() 
function get_cms_system_menu()
  {
    MenuInit();

    var MenuModule = new Menu(0,0)
    var SubMenuModuleArticle = new Menu(0,0)
    var SubMenuModuleDocument = new Menu(0,0)
    var SubMenuModuleFAQ = new Menu(0,0)
    var SubMenuModuleGuestbook = new Menu(0,0)
    var SubMenuModuleClassifiedAd = new Menu(0,0)
    var SubMenuModuleLexicon = new Menu(0,0)
    var SubMenuModuleLink = new Menu(0,0)
    var SubMenuModuleEmployee = new Menu(0,0)
    var SubMenuModuleNews = new Menu(0,0)
    var SubMenuModuleNewsletter = new Menu(0,0)
    var SubMenuModuleNewsletterRecipient = new Menu(0,0)
    var SubMenuModuleOrganisation = new Menu(0,0)
    var SubMenuModuleSpecial = new Menu(0,0)
    var SubMenuModuleTeaser = new Menu(0,0)
    var SubMenuModuleSurvey = new Menu(0,0)
    var SubMenuModuleCompany = new Menu(0,0)
    var SubMenuModuleEvent = new Menu(0,0)

    var MenuStatistic = new Menu(0,0)

    var MenuSystem = new Menu(0,0)
    var SubMenuSystemCategory = new Menu(0,0)

    var MenuLogout = new Menu(0,0)

    /*
    var KontaktMenu = new Menu(0,0)
    var SupportMenu = new Menu(0,0)
    var y2kSubMenu = new Menu(0,0)
    var SpecialsMenu = new Menu(0,0)
    var SpieleSubMenu = new Menu(0,0)
    var SearchMenu = new Menu(0,0)
    */
    
    MenuModule.addItem(new MenuItem('Beiträge', null, null, SubMenuModuleArticle))
      SubMenuModuleArticle.addItem(new MenuItem('Erfassen', '/module/article'))
      SubMenuModuleArticle.addItem(new MenuItem('Suchen', '/module/article/search'))

    MenuModule.addItem(new MenuItem('Dokumente', null, null, SubMenuModuleDocument))      
      SubMenuModuleDocument.addItem(new MenuItem('Erfassen', '/module/document'))
      SubMenuModuleDocument.addItem(new MenuItem('Suchen', '/module/document/search'))    
          
    MenuModule.addItem(new MenuItem('FAQ', null, null, SubMenuModuleFAQ))      
      SubMenuModuleFAQ.addItem(new MenuItem('Erfassen', '/module/faq'))
      SubMenuModuleFAQ.addItem(new MenuItem('Suchen', '/module/faq/search'))    
    
    MenuModule.addItem(new MenuItem('Gästebuch', null, null, SubMenuModuleGuestbook))      
      SubMenuModuleGuestbook.addItem(new MenuItem('Erfassen', '/module/guestbook'))
      SubMenuModuleGuestbook.addItem(new MenuItem('Suchen', '/module/guestbook/search'))    

    MenuModule.addItem(new MenuItem('Kleinanzeigen', null, null, SubMenuModuleClassifiedAd))      
      SubMenuModuleClassifiedAd.addItem(new MenuItem('Erfassen', '/module/classified_ad'))
      SubMenuModuleClassifiedAd.addItem(new MenuItem('Suchen', '/module/classified_ad/search'))    
    
    MenuModule.addItem(new MenuItem('Lexikon', null, null, SubMenuModuleLexicon))      
      SubMenuModuleLexicon.addItem(new MenuItem('Erfassen', '/module/lexicon'))
      SubMenuModuleLexicon.addItem(new MenuItem('Suchen', '/module/lexicon/search'))    

    MenuModule.addItem(new MenuItem('Links', null, null, SubMenuModuleLink))      
      SubMenuModuleLink.addItem(new MenuItem('Erfassen', '/module/link'))
      SubMenuModuleLink.addItem(new MenuItem('Suchen', '/module/link/search'))    
    
    MenuModule.addItem(new MenuItem('Mitarbeiter', null, null, SubMenuModuleEmployee))      
      SubMenuModuleEmployee.addItem(new MenuItem('Erfassen', '/module/employee'))
      SubMenuModuleEmployee.addItem(new MenuItem('Suchen', '/module/employee/search'))    

    MenuModule.addItem(new MenuItem('News', null, null, SubMenuModuleNews))      
      SubMenuModuleNews.addItem(new MenuItem('Erfassen', '/module/news'))
      SubMenuModuleNews.addItem(new MenuItem('Suchen', '/module/news/search'))    
    
    MenuModule.addItem(new MenuItem('Newsletter', null, null, SubMenuModuleNewsletter))      
      SubMenuModuleNewsletter.addItem(new MenuItem('Erfassen', '/module/newsletter'))
      SubMenuModuleNewsletter.addItem(new MenuItem('Suchen', '/module/newsletter/search'))    

    MenuModule.addItem(new MenuItem('NL-Empfänger', null, null, SubMenuModuleNewsletterRecipient))      
        SubMenuModuleNewsletterRecipient.addItem(new MenuItem('Erfassen', '/module/newsletter/recipient'))
        SubMenuModuleNewsletterRecipient.addItem(new MenuItem('Suchen', '/module/newsletter/recipient/search'))    
    
    MenuModule.addItem(new MenuItem('Organisationen', null, null, SubMenuModuleOrganisation))      
      SubMenuModuleOrganisation.addItem(new MenuItem('Erfassen', '/module/organisation'))
      SubMenuModuleOrganisation.addItem(new MenuItem('Suchen', '/module/organisation/search'))    

    MenuModule.addItem(new MenuItem('Specials', null, null, SubMenuModuleSpecial))      
      SubMenuModuleSpecial.addItem(new MenuItem('Erfassen', '/module/special'))
      SubMenuModuleSpecial.addItem(new MenuItem('Suchen', '/module/special/search'))    

    MenuModule.addItem(new MenuItem('Teaser', null, null, SubMenuModuleTeaser))      
      SubMenuModuleTeaser.addItem(new MenuItem('Erfassen', '/module/teaser'))
      SubMenuModuleTeaser.addItem(new MenuItem('Suchen', '/module/teaser/search'))    

    MenuModule.addItem(new MenuItem('Umfragen', null, null, SubMenuModuleSurvey))      
      SubMenuModuleSurvey.addItem(new MenuItem('Erfassen', '/module/survey'))
      SubMenuModuleSurvey.addItem(new MenuItem('Suchen', '/module/survey/search'))    
    
    MenuModule.addItem(new MenuItem('Unternehmen', null, null, SubMenuModuleCompany))      
      SubMenuModuleCompany.addItem(new MenuItem('Erfassen', '/module/company'))
      SubMenuModuleCompany.addItem(new MenuItem('Suchen', '/module/company/search'))    

    MenuModule.addItem(new MenuItem('Veranstaltungen', null, null, SubMenuModuleEvent))      
      SubMenuModuleEvent.addItem(new MenuItem('Erfassen', '/module/event'))
      SubMenuModuleEvent.addItem(new MenuItem('Suchen', '/module/event/search'))    
      
    MenuStatistic.addItem(new MenuItem('Website', 'http://www.braunfels.de/stats'))

    // MenuSystem.addItem(new MenuItem('Profil', '/system/user'))

    MenuSystem.addItem(new MenuItem('Kategorien', null, null, SubMenuSystemCategory))
      SubMenuSystemCategory.addItem(new MenuItem('Erfassen', '/system/category'))
      SubMenuSystemCategory.addItem(new MenuItem('Suchen', '/system/category/search'))

    MenuSystem.addItem(new MenuItem('Abmelden', '/index.php'))

    /*
    LeistungenMenu.addItem(new MenuItem('Entwicklung', '/leistungen/entwicklung', '/images/entwicklung.gif'))
    //LeistungenMenu.addItem(new MenuItem(null, null, null, null, true))
    LeistungenMenu.addItem(new MenuItem('Design', '/leistungen/design'))
    LeistungenMenu.addItem(new MenuItem('Web-Hosting', null, null, WebHostingSubMenu))

    WebHostingSubMenu.addItem(new MenuItem('PRO BUSINESS', '/leistungen/web-hosting'))
    WebHostingSubMenu.addItem(new MenuItem('SMALL BUSINESS', '/leistungen/web-hosting/#SMALL'))
    WebHostingSubMenu.addItem(new MenuItem('SERVER', '/leistungen/web-hosting/#SERVER'))
    
    KontaktMenu.addItem(new MenuItem('Kontakt', '/kontakt', '/images/kontakt.gif'))
    KontaktMenu.addItem(new MenuItem('Feedback', '/feedback', '/images/feedback.gif'))
    KontaktMenu.addItem(new MenuItem('Newsletter', '/newsletter', '/images/news.gif'))
    KontaktMenu.addItem(new MenuItem('G&auml;stebuch', '/gaestebuch', '/images/gaestebuch.gif'))
    KontaktMenu.addItem(new MenuItem('E-Mail', 'mailto:info@i12.de', '/images/email.gif'))

    SupportMenu.addItem(new MenuItem('Links', '/support/links', '/images/links.gif'))
    SupportMenu.addItem(new MenuItem('Downloads', '/support/downloads', '/images/downloads.gif'))
    SupportMenu.addItem(new MenuItem('Domains', '/support/domains', '/images/domains.gif'))
    SupportMenu.addItem(new MenuItem('Glossar', '/support/Glossar'))
    SupportMenu.addItem(new MenuItem('Jahr 2000', null, '/images/y2k.gif', y2kSubMenu))

    y2kSubMenu.addItem(new MenuItem('Links', '/support/links/y2k', '/images/links.gif'))
    y2kSubMenu.addItem(new MenuItem('Downloads', '/support/downloads/y2k', '/images/downloads.gif'))

    SpecialsMenu.addItem(new MenuItem('Spiele', null, null, SpieleSubMenu))
    SpieleSubMenu.addItem(new MenuItem('Concentration', '/specials/spiele/concentration', '/images/concentration.gif'))

    SearchMenu.addItem(new MenuItem('zum Anfang', 'http://www.yahoo.com'))
    SearchMenu.addItem(new MenuItem('Yahoo', 'http://www.yahoo.com'))
    SearchMenu.addItem(new MenuItem('WebCrawler', 'http://www.webcrawler.com/'))
    //SearchMenu.addItem(new MenuItem(null, null, null, null, true))
    SearchMenu.addItem(new MenuItem('Schlie&szlig;en', new Function('PupUpCmd()'), '/images/info.gif'))
    */
    
    MenuModule.show(true)
    MenuStatistic.show(true)
    MenuSystem.show(true)
    // MenuLogout.show(true)
    // SupportMenu.show(true)
    // SpecialsMenu.show(true)
    // WebHostingSubMenu.show(true)
    // SearchMenu.show(true)

    // popup = SearchMenu

    MenuBarMenus[0] = MenuModule;
    MenuBarMenus[1] = MenuStatistic;
    MenuBarMenus[2] = MenuSystem;
    // MenuBarMenus[3] = MenuLogout;
  }


function MenuBarClose() 
  {
    if (current != null) 
      {
        var menu = MenuBarMenus[current.menu]
        menu.hide()
        menu = null
        current.style.backgroundColor = 'transparent'
        current.style.color = 'white'
      }
  }

function document.onclick()
  {
    MenuBarClose()
// document.getElementById("address").style.visibility="visible"
  }

function MenuBarOnMouseOver()
  {
    var obj = window.event.srcElement
    var to = window.event.toElement
    var fromElement = window.event.fromElement
    var toElement = window.event.toElement
    var menu;
// document.getElementById("address").style.visibility="hidden"

//document.getElementById("SELECTID").style.display="none"

    window.event.cancelBubble = true;

    /*
    if ((fromElement != null) && (toElement != null) && (toElement.className == 'cmsMenuBarItem'))
      {
        if (fromElement.menuid == toElement.menuid) 
          {
            SoundSpielen('wischen');
          }
      }
    */
    
    if (obj.className == 'cmsMenuBarItem') 
      {
        if (current != null) MenuBarClose()

        menu = MenuBarMenus[obj.menu]

        if (menu != null) 
          {

            obj.style.color = '#000'
            obj.style.backgroundColor = '#f9fecf'
   
            menu.left = obj.offsetLeft
            menu.top = obj.offsetTop + obj.offsetHeight
            menu.show()
  
            current = obj;}
          }
      }

var flag = false

function PupUpCmd() 
  {
    if (flag) 
      {
        popup.hide()
      }
    else
      {
        popup.left = window.event.x
        popup.top = window.event.y
        popup.show()
      }
    flag = ! flag
  }


//**************Bis hier eingefügt


var menus = new Array()

function MenuRegister(item) 
{
  menus[menus.length] = item
  return (menus.length - 1)
}

//*****************************************************************************
// Function:   MenuItem
// Arguments:  caption   -- a string to be used for the menu item caption
//             command   -- a url string or a function reference
//             image     -- a url to a 16x16 image.  Pass in null for no image
//             submenu   -- a reference to a Menu object.  It will display the 
//                       -- arrow to the right of the caption and display the
//                       -- submenu. Pass in null for no submenu
//             separator -- (true|false) display this menu item as a line
// Purpose:    For each menu item in a menu, there is one MenuItem object to
//             describe it.
//*****************************************************************************

function MenuItem(caption, command, image, submenu, separator) 
{
  this.caption = caption;
  this.command = command;
  this.image = image;
  this.submenu = submenu;
  this.separator = (separator) ? true : false;
  this.id = MenuRegister(this);
}

//*****************************************************************************
// Function:   MenuItemOnClick()
// Arguments:  obj  -- This is always a reference to the table row for the menu
//                     item.
// Purpose:    When the user clicks on a menu item, the table row will call 
//             this function.  If the MenuItem.command is a function, it gets
//             run, and if it is a string (url), the window.location gets set
//             to it.
//*****************************************************************************

function MenuItemOnClick(obj) {
  var item = menus[obj.menuid]
  var menub1 = document.all['MENU' + item.parent + 'B1']

//  Blinken()

  window.event.cancelBubble = true

  if (item == null) return

  if ((typeof item.command) == 'function') item.command()
  if ((typeof item.command) == 'string') window.location = item.command
}

//*****************************************************************************
// Function:   MenuItemOnMouseOver()
// Arguments:  obj  -- This is always a reference to the table row for the menu
//                     item.
// Purpose:    This is the onMouseOver event for the menu table rows.  It will
//             highligh the row and display the submenu if there is one.
//*****************************************************************************

function MenuItemOnMouseOver(obj) {
  var item = menus[obj.menuid]
  var parent = menus[item.parent]
  var menub1 = document.all['MENU' + item.parent + 'B1']
  var fromElement = window.event.fromElement
  var toElement = window.event.toElement

  window.event.cancelBubble = true

  // If just moving around within the row, then return
  // This improves performance and avoids a flicker
  if ((fromElement != null) && (toElement != null))
    {
      if (fromElement.menuid == toElement.menuid) return;
    }

  /*
  if (item.submenu == null)
    {
      SoundSpielen('click');
    }
  */
    
  obj.style.backgroundColor = '#f9fecf'  // Change background to light green
  obj.style.color = '#000'               // Change text to black


  // If a submenu is open that is not for this menu item, close it
  if ((parent.submenu != null) && (parent.submenu != item.submenu))
  {
    parent.submenu.hide()
    parent.submenu = null
  }

  // If this item has a submenu, open it
  if ((item.submenu != null) && (parent.submenu != item.submenu)) 
  {
    // SoundSpielen('wischen');
    item.submenu.top = menub1.offsetTop + obj.offsetTop;
    item.submenu.left = menub1.offsetLeft + obj.offsetWidth;
    item.submenu.show()
    parent.submenu = item.submenu
    return;
  }

}

//*****************************************************************************
// Function:   MenuItemOnMouseOut()
// Arguments:  obj  -- This is always a reference to the table row for the menu
//                     item.
// Purpose:    This is the onMouseOut event for the menu table rows.  It will
//             return the row to a non-highlighted state and will close the
//             close the submenu unless the mouse was moved over to the submenu
//*****************************************************************************

function MenuItemOnMouseOut(obj) {
  var item = menus[obj.menuid]
  var parent = menus[item.parent]
  var toElement = window.event.toElement

  window.event.cancelBubble = true

  if ((toElement != null) && (toElement.menuid == parent.id)) { 
    if ((parent.submenu != null) && (parent.submenu != item))
    {
      parent.submenu.hide()
      parent.submenu = null
    }
  }

  if ((window.event.fromElement != null) && (window.event.toElement != null))
  {
    if (window.event.fromElement.menuid == window.event.toElement.menuid) return;

  }

  obj.style.backgroundColor = "transparent"
  obj.style.color = 'white'
}

//*****************************************************************************
// Function:   MenuItemToString()
// Arguments:  none
// Purpose:    This is used by the Menu object when creating each row of the 
//             menu table.
//*****************************************************************************

function MenuItemToString() 
{
  if (this.separator)
    return "<tr style='height:5px'><td colspan=3><hr size='1' noshade></td></tr>\n"

  return "  <tr class=cmsMenuRow \n" +
         "      onMouseOver='MenuItemOnMouseOver(this)'\n" +
         "      onMouseOut='MenuItemOnMouseOut(this)'\n" +
         "      onClick='MenuItemOnClick(this)'\n" +
         "      menuid=" + this.id +
         "      >\n" +
         "    <td class=cmsMenuImageCell noWrap=noWrap menuid=" + this.id + ">" + 
                 ((this.image != null) ? "&nbsp;&nbsp;<img class=cmsMenuImage menuid=" + this.id + " src='" + this.image + "'>&nbsp;&nbsp;" : "&nbsp;&nbsp;" ) + "</td>\n" +
         "    <td class=cmsMenuCaptionCell noWrap=noWrap menuid=" + this.id + ">" + this.caption + "</td>\n" +
         "    <td class=cmsMenuArrowCell noWrap=noWrap menuid=" + this.id + " " + 
           ((this.submenu != null) ? "style='font-family:Webdings'>4" : "style='font-family:times'>&nbsp;&nbsp;&nbsp;") + "</td>\n" +
         "  </tr>\n";
}

MenuItem.prototype.toString = MenuItemToString;

//*****************************************************************************
// Function:   Menu
// Arguments:  top   -- The top coordinate for the menu
//             left  -- The left coordinate for the menu
// Purpose:    This is used to create a menu
//*****************************************************************************

function Menu(top, left)
{
  this.items = new Array()
  this.top = top
  this.left = left
  this.id = MenuRegister(this)
  this.update = true;

  MENUINSERT.insertAdjacentHTML('BeforeEnd', this.borders())
}

//*****************************************************************************
// Function:   MenuAddItem
// Arguments:  item -- a menu item to add to the end of the menu.
// Purpose:    Used to add a new menu item to the end of the menu.
//*****************************************************************************

function MenuAddItem(item)
{
  this.items[this.items.length] = item
  item.parent = this.id
}

//*****************************************************************************
// Function:   MenuShow
// Arguments:  noDisplay  -- use true when the menu is created to initialize
//                        -- the menu
// Purpose:    Menu.show() is called from code to show the menu when needed and
//             Menu.show(true) should be called to initialize the menu.
//*****************************************************************************

function MenuShow(noDisplay)
{
  var menub1 = document.all['MENU' + this.id + 'B1']
  var menub2 = document.all['MENU' + this.id + 'B2']

  if (this.update)
  {
    menub2.innerHTML = this.getTable()
    this.update = false
  }

  var menu = document.all['MENU' + this.id]

  menub1.style.top = this.top
  menub1.style.left = this.left

  menub2.style.width = menu.offsetWidth + 2
  menub2.style.height = menu.offsetHeight + 2
  menub1.style.width = menu.offsetWidth + 4
  menub1.style.height = menu.offsetHeight + 12


  // BUG: some offset factors are used here to compensate for scroll bars and 
  //      differences between large and small fonts
  
  // If the menu goes past the bottom of the body, move it up
  if ((menub1.offsetTop + menub1.offsetHeight) > (MenuBodyRef.offsetHeight - 4))
    menub1.style.top = MenuBodyRef.offsetHeight - menub1.offsetHeight - 4

  // If the menu goes past the right of the body, move it left
  if ((menub1.offsetLeft + menub1.offsetWidth) > (MenuBodyRef.offsetWidth - 24))
    menub1.style.left = MenuBodyRef.offsetWidth - menub1.offsetWidth - 24

  // If the menu is too far up, make the top at 0
  if (menub1.offsetTop < 0)
    menub1.style.top = 0

  // If the menu is too far left, make the left at 0
  if (menub1.offsetLeft < 0)
    menub1.style.left = 0

  // BUG: Removing this causes the highlight to be broken up between cells
  MENUINSERT.insertAdjacentHTML('BeforeEnd', "")

  //alert(menub1.style.visibility);

  if (noDisplay) 
  {
    menub1.style.top = -1000
    menub1.style.left = -1000
  } else {
    menub1.style.visibility = 'visible'
  }

}

//*****************************************************************************
// Function:   MenuHide
// Arguments:  none
// Purpose:    Menu.hide() is called from code to make the menu disappear.
//*****************************************************************************

function MenuHide()
{ 
  var menub1 = document.all['MENU' + this.id + 'B1']
  if (this.submenu != null) this.submenu.hide()

  // BUG: the use of style.display='none' causes the menu to turn into a 
  //      little 5x20px gray block that never again displays correctly 

  menub1.style.visibility = 'hidden'
  menub1.style.top = -1000
  menub1.style.left = -1000
}

//*****************************************************************************
// Function:   MenuBorders()
// Arguments:  none
// Purpose:    The borders create the 3D effect and serve as a container for
//             the menu table.
//*****************************************************************************

function MenuBorders() {
  return  "<div id=MENU" + this.id +"B1 style='position: absolute' class=cmsMenuBorder1 menuid=" + this.id + 
                " onClick='window.event.cancelBubble = true'>\n" +
          "  <div id=MENU" + this.id +"B2 class=cmsMenuBorder2 menuid=" + this.id + ">\n" +
          "  </div>\n" +
          "</div>\n";
}

//*****************************************************************************
// Function:   MenuTable()
// Arguments:  none
// Purpose:    This creates the HTML table used to represent the menu.
//*****************************************************************************

function MenuTable()
{
  var str

  str = "<table id=MENU" + this.id + "\n" +
        "       cellpadding=0 cellspacing=0 border=0 class=cmsMenuTable>\n"

  for (var i=0; i < this.items.length; i++)
    str += this.items[i];

  str += "</table>\n"

  return str
}

Menu.prototype.addItem = MenuAddItem;
Menu.prototype.borders = MenuBorders;
Menu.prototype.getTable = MenuTable;
Menu.prototype.show = MenuShow;
Menu.prototype.hide = MenuHide;

//*****************************************************************************
// Function:   MenuInit()
// Arguments:  none
// Purpose:    This creates the object used to insert the HTML menu objects 
//             into at runtime.  It should be called only once, probably during
//             The window's onLoad event and it must be called before Menu()
//             objects are created.
//*****************************************************************************

var MenuBodyRef;
function MenuInit() {
  for(var i in document.all){
    if (document.all[i].tagName == 'BODY')
    {
      MenuBodyRef = document.all[i]
   //   MenuBodyRef.insertAdjacentHTML('AfterBegin', '<div id=MENUINSERT></div>')
      MenuBodyRef.insertAdjacentHTML('BeforeEnd', '<div id=MENUINSERT></div>')
      break
    }
  }
}

/*
function Blinken()
  {  
    var obj = window.event.srcElement
  

    //setTimeout("Blinken()",10000);



        if (obj.style.color == "black")
          {
             obj.style.color = 'white'
             obj.style.backgroundColor = 'red'
           }
         else
           {
             obj.style.color = 'black'
             obj.style.backgroundColor = 'rgb(167,189,255)'
           }
           alert("wurst");
        window.setTimeout("Blinken()", 10000);

 }

*/

function cms_module_tr_highlighting(bln_action) {

    var tr = window.event.srcElement.parentElement

    if( bln_action ) {
        tr.style.color = "#fff"
        tr.style.backgroundColor = "#1c380a"
        tr.style.cursor = "hand"
    } else {
        tr.style.color = "#000"
        tr.style.backgroundColor="#fcfde1"
        tr.style.cursor = "default"
    }
}

