     var timer    = 0;
     var category = null;
     var timeOut  = null;

     function setCategory(cat) {
         category = cat;
     }

     function fadeout() {
         timeOut = window.setTimeout("hideMenu()",100);
     }

     function hideMenu() {
         document.getElementById(category+"_menu").style.visibility = "hidden";
         timeOut  = null;
         category = null;
     }

     function focusMenu() {
         if (timeOut != null)
             window.clearTimeout(timeOut);
         if (this.tagName == 'TD')
             this.style.backgroundColor = '#c66';
     }

     function unfocusMenu() {
         if (this.tagName == 'TD')
             this.style.backgroundColor = '#e9e9e9';
         fadeout();
     }

     function hideOthers(category) {
         menus = document.getElementById("menu").getElementsByTagName("table");
         for (i=0; i<menus.length; i++)
             if (menus[i].id != category+"_menu")
                 menus[i].style.visibility = "hidden";
     }

     function refreshMenuY() {
         if (category != null)
             document.getElementById(category+"_menu").style.top = document.body.scrollTop;
     }

     window.onload = function() {
         var req;

                 menu           = document.createElement('div');
                 menu.id        = 'menu';
                 document.body.appendChild(menu);

         try {
             req = window.XMLHttpRequest?new XMLHttpRequest():
             new ActiveXObject("Microsoft.XMLHTTP");

             req.onreadystatechange = function() {
                 if ((req.readyState == 4) && (req.status == 200)) {
                     document.getElementById("menu").innerHTML = req.responseText;

                     menupoints = document.getElementById("menu").getElementsByTagName("td");
                     for (i=0; i<menupoints.length; i++)
                         if (menupoints[i].addEventListener) {
                             menupoints[i].addEventListener('mouseover', focusMenu, false);
                             menupoints[i].addEventListener('mouseout', unfocusMenu, false);
                         } else {
                             menupoints[i].onmouseover = focusMenu;
                             menupoints[i].onmouseout  = unfocusMenu;
                         }
                 }
             };

             req.open('get', 'menu.html');
             req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
             req.send('');

         } catch (e) {
             // kein AJAX-Support
         }
     }
