var dhtmlgoodies_menuObj;   // Reference to the menu div 

   var currentZIndex = 1000; 

   var liIndex = 0; 

   var visibleMenus = new Array(); 

   var activeMenuItem = false;  

   var timeBeforeAutoHide = 1200; // Microseconds from mouse leaves menu to auto hide. 

   var dhtmlgoodies_menu_arrow = 'http://www.dhtmlgoodies.com/scripts/dhtmlgoodies-menu2/images/arrow.gif'; 

    

   var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false; 

   var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox')>=0?true:false; 

   var navigatorVersion = navigator.appVersion.replace(/.*?MSIE ([0-9]\.[0-9]).*/g,'$1')/1; 

   var menuBlockArray = new Array(); 

   var menuParentOffsetLeft = false;    





    // {{{ getStyle() 

   /** 

   * Return specific style attribute for an element 

   * 

   * @param Object el = Reference to HTML element 

   * @param String property = Css property 

   * @private 

   */        

   function getStyle(el,property) 

   {        



      if (document.defaultView && document.defaultView.getComputedStyle) { 



         var retVal = null;              

         var comp = document.defaultView.getComputedStyle(el, ''); 

         if (comp){ 

            retVal = comp[property]; 

              

            if(!retVal){ 

               var comp = document.defaultView.getComputedStyle(el, null); 

               retVal = comp.getPropertyCSSValue(property); 

            }          

         }    



         if(retVal==null)retVal=''; 

          

         return el.style[property] || retVal; 

      } 

      if (document.documentElement.currentStyle && MSIE){    

         var value = el.currentStyle ? el.currentStyle[property] : null; 

         return ( el.style[property] || value ); 

                                              

      } 

      return el.style[property];              

   } 

      

   function getTopPos(inputObj) 

   { 

   	var origInputObj = inputObj;

 

     var returnValue = inputObj.offsetTop; 

     if(inputObj.tagName=='LI' && inputObj.parentNode.className=='menuBlock1'){    

        var aTag = inputObj.getElementsByTagName('A')[0]; 

        if(aTag)returnValue += aTag.parentNode.offsetHeight; 

     } 

     var topOfMenuReached = false; 

     while((inputObj = inputObj.offsetParent) != null){ 

        if(inputObj.parentNode.id=='dhtmlgoodies_menu')topOfMenuReached=true; 

        if(topOfMenuReached && !inputObj.className.match(/menuBlock/gi) || (!MSIE && origInputObj.parentNode.className=='menuBlock1')){ 

           var style = getStyle(inputObj,'position'); 

           if(style=='absolute' || style=='relative'){                

              return returnValue;            

           } 

        } 

          

        returnValue += inputObj.offsetTop;          

     } 



     return returnValue; 

   } 

    

   function getLeftPos(inputObj) 

   { 

     var returnValue = inputObj.offsetLeft; 

      

     var topOfMenuReached = false; 

     while((inputObj = inputObj.offsetParent) != null){ 

       if(inputObj.parentNode.id=='dhtmlgoodies_menu')topOfMenuReached=true; 

        if(topOfMenuReached && !inputObj.className.match(/menuBlock/gi)){ 

           var style = getStyle(inputObj,'position'); 

           if(style=='absolute' || style=='relative')return returnValue; 

        } 

      

        returnValue += inputObj.offsetLeft; 

     } 

     return returnValue; 

   } 





    

   function showHideSub() 

   { 



      var attr = this.parentNode.getAttribute('currentDepth'); 

      if(navigator.userAgent.indexOf('Opera')>=0){ 

         attr = this.parentNode.currentDepth; 

      } 

        

      this.className = 'currentDepth' + attr + 'over'; 

        

      if(activeMenuItem && activeMenuItem!=this){ 

         activeMenuItem.className=activeMenuItem.className.replace(/over/,''); 

      } 

      activeMenuItem = this; 

    

      var numericIdThis = this.id.replace(/[^0-9]/g,''); 

      var exceptionArray = new Array(); 

      // Showing sub item of this LI 

      var sub = document.getElementById('subOf' + numericIdThis); 

      if(sub){ 

         visibleMenus.push(sub); 

         sub.style.display=''; 

         sub.parentNode.className = sub.parentNode.className + 'over'; 

         exceptionArray[sub.id] = true; 

      }    

        

      // Showing parent items of this one 

        

      var parent = this.parentNode; 

      while(parent && parent.id && parent.tagName=='UL'){ 

         visibleMenus.push(parent); 

         exceptionArray[parent.id] = true; 

         parent.style.display=''; 

          

         var li = document.getElementById('dhtmlgoodies_listItem' + parent.id.replace(/[^0-9]/g,'')); 

         if(li.className.indexOf('over')<0)li.className = li.className + 'over'; 

         parent = li.parentNode; 

          

      } 



          

      hideMenuItems(exceptionArray); 







   } 



   function hideMenuItems(exceptionArray) 

   { 

      /* 

      Hiding visible menu items 

      */ 

      var newVisibleMenuArray = new Array(); 

      for(var no=0;no<visibleMenus.length;no++){ 

         if(visibleMenus[no].className!='menuBlock1' && visibleMenus[no].id){ 

            if(!exceptionArray[visibleMenus[no].id]){ 

               var el = visibleMenus[no].getElementsByTagName('A')[0]; 

               visibleMenus[no].style.display = 'none'; 

               var li = document.getElementById('dhtmlgoodies_listItem' + visibleMenus[no].id.replace(/[^0-9]/g,'')); 

               if(li.className.indexOf('over')>0)li.className = li.className.replace(/over/,''); 

            }else{              

               newVisibleMenuArray.push(visibleMenus[no]); 

            } 

         } 

      }        

      visibleMenus = newVisibleMenuArray;        

   } 

    

    

    

   var menuActive = true; 

   var hideTimer = 0; 

   function mouseOverMenu() 

   { 

      menuActive = true;        

   } 

    

   function mouseOutMenu() 

   { 

      menuActive = false; 

      timerAutoHide();    

   } 

    

   function timerAutoHide() 

   { 

      if(menuActive){ 

         hideTimer = 0; 

         return; 

      } 

        

      if(hideTimer<timeBeforeAutoHide){ 

         hideTimer+=100; 

         setTimeout('timerAutoHide()',99); 

      }else{ 

         hideTimer = 0; 

         autohideMenuItems();    

      } 

   } 

    

   function autohideMenuItems() 

   { 

      if(!menuActive){ 

         hideMenuItems(new Array());    

         if(activeMenuItem)activeMenuItem.className=activeMenuItem.className.replace(/over/,'');        

      } 

   } 

    

    

   function initSubMenus(inputObj,initOffsetLeft,currentDepth) 

   {    

      var subUl = inputObj.getElementsByTagName('UL'); 

      if(subUl.length>0){ 

         var ul = subUl[0]; 

          

         ul.id = 'subOf' + inputObj.id.replace(/[^0-9]/g,''); 

         ul.setAttribute('currentDepth' ,currentDepth); 

         ul.currentDepth = currentDepth; 

         ul.className='menuBlock' + currentDepth; 

         ul.onmouseover = mouseOverMenu; 

         ul.onmouseout = mouseOutMenu; 

         currentZIndex+=1; 

         ul.style.zIndex = currentZIndex; 

         menuBlockArray.push(ul); 

         ul = dhtmlgoodies_menuObj.appendChild(ul); 

         var topPos = getTopPos(inputObj); 

         var leftPos = getLeftPos(inputObj)/1 + initOffsetLeft/1;          

         

         ul.style.position = 'absolute'; 

         ul.style.left = leftPos +2+ 'px'; 

         ul.style.top = topPos +3+ 'px'; 

         var li = ul.getElementsByTagName('LI')[0]; 

         while(li){ 

            if(li.tagName=='LI'){    

               li.className='currentDepth' + currentDepth;                

               li.id = 'dhtmlgoodies_listItem' + liIndex; 

               liIndex++;              

               var uls = li.getElementsByTagName('UL'); 

               li.onmouseover = showHideSub; 



               if(uls.length>0){ 

                  var offsetToFunction = li.getElementsByTagName('A')[0].offsetWidth+2; 

                  if(navigatorVersion<6 && MSIE)offsetToFunction+=15;   // MSIE 5.x fix 

                  initSubMenus(li,offsetToFunction,(currentDepth+1)); 

               }    

               if(MSIE){ 

                  var a = li.getElementsByTagName('A')[0]; 

                  a.style.width=li.offsetWidth+'px'; 

                  a.style.display='block'; 

               }                

            } 

            li = li.nextSibling; 

         } 

         ul.style.display = 'none';    

         if(!document.all){ 

            //dhtmlgoodies_menuObj.appendChild(ul); 

         } 

      }    

   } 





   function resizeMenu() 

   { 

      var offsetParent = getLeftPos(dhtmlgoodies_menuObj); 

        

      for(var no=0;no<menuBlockArray.length;no++){ 

         var leftPos = menuBlockArray[no].style.left.replace('px','')/1; 

         menuBlockArray[no].style.left = leftPos + offsetParent - menuParentOffsetLeft + 'px'; 

      } 

      menuParentOffsetLeft = offsetParent; 

   } 

    

   /* 

   Initializing menu 

   */ 

   function initDhtmlGoodiesMenu() 

   { 

      dhtmlgoodies_menuObj = document.getElementById('dhtmlgoodies_menu'); 

        

        

      var aTags = dhtmlgoodies_menuObj.getElementsByTagName('A'); 

      for(var no=0;no<aTags.length;no++){          



         var subUl = aTags[no].parentNode.getElementsByTagName('UL'); 

         if(subUl.length>0 && aTags[no].parentNode.parentNode.parentNode.id != 'dhtmlgoodies_menu'){ 

            var img = document.createElement('IMG'); 

            img.src = dhtmlgoodies_menu_arrow; 

            aTags[no].appendChild(img);              



         } 



      } 

              

      var mainMenu = dhtmlgoodies_menuObj.getElementsByTagName('UL')[0]; 

      mainMenu.className='menuBlock1'; 

      mainMenu.style.zIndex = currentZIndex; 

      mainMenu.setAttribute('currentDepth' ,1); 

      mainMenu.currentDepth = '1'; 

      mainMenu.onmouseover = mouseOverMenu; 

      mainMenu.onmouseout = mouseOutMenu;        



      var mainMenuItemsArray = new Array(); 

      var mainMenuItem = mainMenu.getElementsByTagName('LI')[0]; 

      mainMenu.style.height = mainMenuItem.offsetHeight + 2 + 'px'; 

      while(mainMenuItem){ 

          

         mainMenuItem.className='currentDepth1'; 

         mainMenuItem.id = 'dhtmlgoodies_listItem' + liIndex; 

         mainMenuItem.onmouseover = showHideSub; 

         liIndex++;              

         if(mainMenuItem.tagName=='LI'){ 

            mainMenuItem.style.cssText = 'float:left;';    

            mainMenuItem.style.styleFloat = 'left'; 

            mainMenuItemsArray[mainMenuItemsArray.length] = mainMenuItem; 

            initSubMenus(mainMenuItem,0,2); 

         }          

          

         mainMenuItem = mainMenuItem.nextSibling; 

          

      } 



      for(var no=0;no<mainMenuItemsArray.length;no++){ 

         initSubMenus(mainMenuItemsArray[no],0,2);          

      } 

        

      menuParentOffsetLeft = getLeftPos(dhtmlgoodies_menuObj);    

      window.onresize = resizeMenu;    

      dhtmlgoodies_menuObj.style.visibility = 'visible';    

   } 

	window.onload = initDhtmlGoodiesMenu;
