<!--

  var RmenuIT = new Object();

  RmenuIT.gIndexDE = 0;
  RmenuIT.gIndexFR = 1;
  RmenuIT.gIndexEN = 2;

  RmenuIT.gLangDE = 'de'; 
  RmenuIT.gLangFR = 'fr'; 
  RmenuIT.gLangEN = 'en'; 
  
  RmenuIT.gMenuTypeHorizontalLeftAligned = 0;
  RmenuIT.gMenuTypeHorizontalRightAligned = 1;
  
  RmenuIT.gArrLanguageUrl = new Array(RmenuIT.gLangDE, RmenuIT.gLangFR, RmenuIT.gLangEN);
  
  RmenuIT.menuItem = function(className, bMaster, bSelected)
  {
    this.level = -1;  // vertical level
    this.levelIndex = -1;  // horizontal order index
    this.parent = null;
    this.className = className;
    this.arrChildren = new Array();
    this.arrMenuLangInfo = new Array();
    this.isMaster = bMaster; // only master menu can be selected menu (multiple url)
    this.selected = bSelected;
  }

  RmenuIT.menuLangInfo = function(menuName, url, alternativeUrls)
  {
    this.menuName = menuName;
    this.url = url;
    
    if (alternativeUrls.length > 0)
    {
      var arrUrls = alternativeUrls.split(';');

      for (var i=0; i < arrUrls.length; i++)
      {
        arrUrls[i] = arrUrls[i].replace(/^\s*|\s*$/g,''); //trim()
      }
      this.arrAlternativeUrls = arrUrls;
    }
    else
    {
      this.arrAlternativeUrls = null;
    }
  }

  RmenuIT.CreateMenuInstance = function(menuInstanceName) {
    if (RmenuIT[menuInstanceName] == null) {
      RmenuIT[menuInstanceName] = new Object();
    }

    var RmenuITInstance = RmenuIT[menuInstanceName];
    
    RmenuITInstance.menuName = menuInstanceName;
    RmenuITInstance.gMenuType = RmenuIT.gMenuTypeHorizontalLeftAligned;
    RmenuITInstance.gTimeOutTime = 2000;
    RmenuITInstance.gTimeoutInProgress = null;
    RmenuITInstance.gUseLanguageInUrl = false;
    RmenuITInstance.gUseSelectionInfoFromNode = true;
    RmenuITInstance.gActualLanguage = RmenuIT.gIndexDE;
    RmenuITInstance.gStrOut = '';
    RmenuITInstance.gRootMenu = null;
    RmenuITInstance.gArrSelectedMenu = new Array(-1, -1);  
    RmenuITInstance.gInitMenuSelection = -1;
  
    RmenuITInstance.setRootElement = function(rootElement)
    {
      this.gRootMenu = rootElement;
      RmenuITInstance.setParentNodes(rootElement, -1);
    }
  
    RmenuITInstance.setSelectedMenuItem = function(levelIndex0, levelIndex1)  
    {
      this.gArrSelectedMenu[0] = levelIndex0;
      this.gArrSelectedMenu[1] = levelIndex1;
    }

    RmenuITInstance.setMenuType = function(menuType)
    {
      RmenuITInstance.gMenuType = menuType;
    }

    RmenuITInstance.setTimeOutTime = function(timeInMilliseconds)
    {
      RmenuITInstance.gTimeOutTime = timeInMilliseconds;
    }


    RmenuITInstance.setActualLanguage = function(langISO)
    {
      switch (langISO.toLowerCase()) 
      {
        case RmenuIT.gLangDE:
          RmenuITInstance.gActualLanguage = RmenuIT.gIndexDE;
          break;
        case RmenuIT.gLangFR:
          RmenuITInstance.gActualLanguage = RmenuIT.gIndexFR;
          break;
        case RmenuIT.gLangEN:
          RmenuITInstance.gActualLanguage = RmenuIT.gIndexEN;
          break;
        default:
          RmenuITInstance.gActualLanguage = RmenuIT.gIndexDE;
          break;
      }
    } 
    
    RmenuITInstance.setUseLanguageInUrl = function(bValue)
    {
      RmenuITInstance.gUseLanguageInUrl = bValue;
    } 
    
    RmenuITInstance.setUseSelectionInfoFromNode = function(bValue)
    {
      RmenuITInstance.gUseSelectionInfoFromNode = bValue;
    } 
    
    RmenuITInstance.checkSelection = function(node)
    {
      if (RmenuITInstance.gUseSelectionInfoFromNode)
      {
        return node.selected;
      }
      else
      {
        return (node.levelIndex == this.gArrSelectedMenu[node.level]);
      }
    }
    
    RmenuITInstance.setParentNodes = function(parentNode, level)
    {
      var bSelectionFoundInSubTree = false;
      if (parentNode != null)
      {
        bSelectionFoundInSubTree = parentNode.selected;

        for (var i = 0; i < parentNode.arrChildren.length; i++)
        {
          var childNode = parentNode.arrChildren[i];
          childNode.parent = parentNode;
          childNode.level = level + 1;
          childNode.levelIndex = i;
          if (RmenuITInstance.setParentNodes(childNode, level+1))
          {
            bSelectionFoundInSubTree = true;
            childNode.selected = true;
          }
        }
      }
      return bSelectionFoundInSubTree;
    } 


    
    
    RmenuITInstance.processMouseOver = function(levelIndex)
    {
      if (RmenuITInstance.gTimeoutInProgress != null)
      {
        clearTimeout(RmenuITInstance.gTimeoutInProgress);
      }
      
    	if (document.getElementById)
    	{
    	  for (var i = 0; i < this.gRootMenu.arrChildren.length; i++)
    	  {
  	      var divElement = document.getElementById('m_' + this.menuName + '_sub_' + i);
          if (divElement != null)
          {
    	      //if ((i == levelIndex) || ((levelIndex == this.gInitMenuSelection) && (i == this.gArrSelectedMenu[0])))
    	      if ((i == levelIndex) || ((levelIndex == this.gInitMenuSelection) && (RmenuITInstance.checkSelection(this.gRootMenu.arrChildren[i]))))
    	      {
    	        divElement.style.display = "block";
    	      }
    	      else
    	      {
    	        divElement.style.display = "none";
    	      }
          }
    	  }
    	}
    	return true;
    }



    RmenuITInstance.processMouseOut = function(obj, event)
    {
      if (EventBubbling.checkMouseLeave(obj, event)) 
      {
        RmenuITInstance.gTimeoutInProgress = setTimeout(function() { RmenuITInstance.processMouseOutTimeOut();}, RmenuITInstance.gTimeOutTime);
      }
      return true;
    }


    RmenuITInstance.processMouseOutTimeOut = function()
    {
      if (document.getElementById)
    	{
    	  for (var i = 0; i < this.gRootMenu.arrChildren.length; i++)
        {
  	      var divElement = document.getElementById('m_' + this.menuName + '_sub_' + i);
          if (divElement != null)
          {
    	      //if (i == this.gArrSelectedMenu[0])
    	      if (RmenuITInstance.checkSelection(this.gRootMenu.arrChildren[i]))
    	      {
    	        divElement.style.display = "block";
    	      }
    	      else
    	      {
    	        divElement.style.display = "none";
    	      }
          }
    	  }
    	}
  	  return true;
    }
       

    RmenuITInstance.renderMenu = function(target_element_id)
    {
      this.gStrOut = ('');

      // main menu level
      this.gStrOut = this.gStrOut + ('<div id="div_mousecheck_') + this.menuName + ('" onMouseOut="javascript: RmenuIT.') + this.menuName + ('.processMouseOut(this, event);">\n');
    
      this.gStrOut = this.gStrOut + ('<table cellspacing="0" class="menutable" >\n<tr>\n<td>\n');
      this.displayMenu(this.gRootMenu);
      this.gStrOut = this.gStrOut + ('</td>\n</tr>\n</table>\n');


      // sub menu level
      this.gStrOut = this.gStrOut + ('<table cellspacing="0" class="menutable">\n<tr>\n<td>\n');

      for (var i=0; i < this.gRootMenu.arrChildren.length; i++)
      {
        this.displayMenu(this.gRootMenu.arrChildren[i]);
      }
      this.gStrOut = this.gStrOut + ('</td>\n</tr>\n</table>\n</div>');

    
      var theOutputElement = document.getElementById(target_element_id);
      if (theOutputElement)
      {
        theOutputElement.innerHTML = this.gStrOut;      
      }     
    
      return this.gStrOut;
    }


    RmenuITInstance.getChildIndex = function(i, numberOfChildren)
    {
      var childIndex = 0;
      switch(RmenuITInstance.gMenuType)
      {
        case RmenuIT.gMenuTypeHorizontalLeftAligned:
          childIndex = i;
          break;
        case RmenuIT.gMenuTypeHorizontalRightAligned:
          childIndex = Math.abs(numberOfChildren - 1 - i);
          break;
        default:
          break;        
      }
      return childIndex;
    }

    RmenuITInstance.displayMenu = function(parentNode)
    {
 
      if (parentNode != null)
      {

        for (var i = 0; i < parentNode.arrChildren.length; i++)
        {
          var childIndex = RmenuITInstance.getChildIndex(i, parentNode.arrChildren.length);
          var node = parentNode.arrChildren[childIndex];
          var linkClassName = '';
          var linkUrl = ((this.gUseLanguageInUrl) ? '/' + RmenuIT.gArrLanguageUrl[this.gActualLanguage] : '')  + node.arrMenuLangInfo[this.gActualLanguage].url;
          var onClickUrl = ' onClick="document.location=\'' + linkUrl + '\';" ';
          var onMouseOut;
          var onMouseOver;
          var styleClass;
  
          var txtLink;

          var className;
          var classNameHover;

          if (parentNode == this.gRootMenu)
          {
            className = (RmenuITInstance.checkSelection(node)) ? 'm_' + this.menuName + '_main_selected' : 'm_' + this.menuName + '_main_normal';
            classNameHover = (RmenuITInstance.checkSelection(node)) ? 'm_' + this.menuName + '_main_selected_hover' : 'm_' + this.menuName + '_main_normal_hover';
          
            if (node.className.length > 0)
            {
              linkClassName = ' class="' + node.className + '" ';
              className = className + ' ' + node.className;
              classNameHover = classNameHover + ' ' + node.className;
            }

            styleClass = ' class="' + className + '" ';
            onMouseOut = ' onMouseOut="this.className=\'' + className + '\';"';
            onMouseOver = ' onMouseOver="RmenuIT.' + this.menuName + '.processMouseOver(' + node.levelIndex + '); this.className=\'' + classNameHover + '\';"';

            if (node.arrMenuLangInfo[this.gActualLanguage].url == '/')
            {
              onClickUrl = '';
              txtLink = '<span ' + linkClassName + '>' + node.arrMenuLangInfo[this.gActualLanguage].menuName + '</span>';  
            }
            else
            {
              txtLink = '<a href="' + linkUrl + '"><span ' + linkClassName + '>' + node.arrMenuLangInfo[this.gActualLanguage].menuName + '</span></a>';  
            }
          
            this.gStrOut = this.gStrOut + ('<div id="m_') + this.menuName + ('_main_' + node.levelIndex + '" ' + styleClass + onClickUrl + onMouseOut + onMouseOver + '>' + txtLink + '</div>\n');

          }
          else
          {
            if (parentNode.level == 0)
            {
              if (i == 0)
              {
                 this.gStrOut = this.gStrOut + ('<div id="m_') + this.menuName + ('_sub_' + parentNode.levelIndex + '" class="div_m_') + this.menuName + ('_sub" >\n');
              }
              className = (RmenuITInstance.checkSelection(node) && RmenuITInstance.checkSelection(node.parent)) ? 'm_' + this.menuName + '_sub_selected' : 'm_' + this.menuName + '_sub_normal';
              classNameHover = (RmenuITInstance.checkSelection(node) && RmenuITInstance.checkSelection(node.parent)) ? 'm_' + this.menuName + '_sub_selected_hover' : 'm_' + this.menuName + '_sub_normal_hover';

              if (node.className.length > 0)
              {
                linkClassName = ' class="' + node.className + '" ';
                className = className + ' ' + node.className;
                classNameHover = classNameHover + ' ' + node.className;
              }
 
              styleClass = ' class="' + className + '" ';
              onMouseOut = ' onMouseOut="this.className=\'' + className + '\';"';
              onMouseOver = ' onMouseOver="this.className=\'' + classNameHover + '\';"';

              if (node.arrMenuLangInfo[this.gActualLanguage].url == '/')
              {
                onClickUrl = '';
                txtLink = '<span ' + linkClassName + '>' + node.arrMenuLangInfo[this.gActualLanguage].menuName + '</span>';  
              }
              else
              {
                txtLink = '<a href="' + linkUrl + '"><span ' + linkClassName + '>' + node.arrMenuLangInfo[this.gActualLanguage].menuName + '</span></a>';  
              }
       
              this.gStrOut = this.gStrOut + ('<span ' + styleClass + onClickUrl + onMouseOut + onMouseOver + '>' + txtLink + '</span>\n');
            
              if (i == (parentNode.arrChildren.length-1))
              {
                this.gStrOut = this.gStrOut + ('</div>\n');
              }  
            }
          }
        }
      }
    }




    return RmenuITInstance;
  }

//-->