
var dontHideSelects = false;
var mainNavTableMode = false;
var alignLastRight = false;

function initMainNavItem(id, items) {
  if (document.getElementById) {
    if (items && items.length > 0) {
      var item = document.getElementById(id);
      var dropdown = document.createElement('ul');

      if (!item) return;

      for (var i = 0; i < items.length; i++) {
         var li = document.createElement('li');
         var b = document.createElement('b');
         /* var punkte = document.createTextNode('::'); */
         var punkte = document.createTextNode('');
         var a = document.createElement('a');
         var text = document.createTextNode(' ' + items[i].text);
         a.href = items[i].href;
         a.onclick = function() { intern = true; };
         b.appendChild(punkte);
         a.appendChild(b);
         a.appendChild(text);
         li.appendChild(a);
				 if (i == 0) li.className="nav-first";
				 if (i == items.length-1) li.className="nav-last";
         dropdown.appendChild(li);
      }
      item.appendChild(dropdown);
    }
  }
}

function cssjsmenu(menuid)
{
  var i;
  var j;
  var node;
  var child;
  var parent;
  
  // if the browser doesn't even support
  // document.getElementById, give up now.
  if (!document.getElementById)
  {
    return true;
  }

  // check for downlevel browsers
  // Opera 6, IE 5/Mac are not supported

  var version;
  var offset;

  offset = navigator.userAgent.indexOf('Opera');
  if (offset != -1)
  {
    version = parseInt('0' + navigator.userAgent.substr(offset + 6), 10);
    if (version < 7)
    {
      return true;
    }
  }

  offset = navigator.userAgent.indexOf('MSIE');
  if (offset != -1)
  {
    if (navigator.userAgent.indexOf('Mac') != -1)
    {
      return true;
    }
  }

  var menudiv = document.getElementById(menuid);
  if (mainNavTableMode) {
    menudiv = menudiv.getElementsByTagName("TABLE")[0].childNodes[0].childNodes[0];
  }

  // ul
/*
  var ul = new Array();

  for (i = 0; i < menudiv.childNodes.length; i++)
  {
    node = menudiv.childNodes[i];
    if (node.nodeName == 'UL')
    {
      ul[ul.length] = node;
    }
  }
*/
  var ul = [menudiv];

  // ul > li
  var ul_gt_li = new Array();

  for (i = 0; i < ul.length; i++)
  {
    node = ul[i];
    for (j = 0; j < node.childNodes.length; j++)
    {
      child = node.childNodes[j];
      if ( (!mainNavTableMode && child.nodeName == 'DIV') || (mainNavTableMode && child.nodeName == 'TD') )
      {
        ul_gt_li[ul_gt_li.length] = child;
        // child.style.display = 'inline';
        // child.style.listStyle = 'none';
        child.style.position = 'static';
      }
    }
  }

  // ul > li > ul
  var ul_gt_li_gt_ul = new Array();

  for (i = 0; i < ul_gt_li.length; i++)
  {
    node = ul_gt_li[i];

    for (j = 0; j < node.childNodes.length; j++)
    {
      child = node.childNodes[j];
      if (child.nodeName == 'UL')
      {
        ul_gt_li_gt_ul[ul_gt_li_gt_ul.length] = child;
        child.style.position = 'absolute';
        child.style.left = '-13em';
        child.style.visibility = 'hidden';

        // attach hover to parent li
        parent = child.parentNode;
        parent.onmouseover = function (e)
        {
          var i;
          var child;
          var point;

          // stop the pure css hover effect
          this.style.paddingBottom = '0';

          for (i = 0; i < this.childNodes.length; i++)
          {
            child = this.childNodes[i];
            if (child.nodeName == 'UL')
            {
              point = getPageXY(this);
              if (alignLastRight && !this.nextSibling)
                setPageXY(child, point.x - child.offsetWidth + this.offsetWidth, point.y + this.offsetHeight);
              else
                setPageXY(child, point.x, point.y + this.offsetHeight);
              child.style.visibility = 'visible';
              if (!dontHideSelects) hideSelectElements(false);
            }
          }
          return false;
        };
        parent.onmouseout = function (e)
        {
          var relatedTarget = null;
          if (e)
          {
            relatedTarget = e.relatedTarget;
            // work around Gecko Linux only bug where related target is null
            // when clicking on menu links or when right clicking and moving
            // into a context menu.
      if (navigator.product == 'Gecko' && navigator.platform.indexOf('Linux') != -1 && !relatedTarget)
      {
        relatedTarget = e.originalTarget;
      }
          }
          else if (window.event)
          {
            relatedTarget = window.event.toElement;
          }

          if (elementContains(this, relatedTarget))
          {
            return false;
          }

          var i;
          var child;
          for (i = 0; i < this.childNodes.length; i++)
          {
            child = this.childNodes[i];
            if (child.nodeName == 'UL')
            {
                child.style.visibility = 'hidden';
                if (!dontHideSelects) hideSelectElements(true);
            }
          }

          return false;
        };
      }
    }
  }
  return true;
}

function elementContains(elmOuter, elmInner)
{
  while (elmInner && elmInner != elmOuter)
  {
    elmInner = elmInner.parentNode;
  }
  if (elmInner == elmOuter)
  {
    return true;
  }
  return false;
}

function getPageXY(elm)
{
  var point = { x: 0, y: 0 };
  while (elm)
  {
    point.x += elm.offsetLeft;
    point.y += elm.offsetTop;
    elm = elm.offsetParent;
  }
  return point;
}

function setPageXY(elm, x, y)
{
  var parentXY = {x: 0, y: 0 };

  if (elm.offsetParent)
  {
    parentXY = getPageXY(elm.offsetParent);
  }

  elm.style.left = (x - parentXY.x) + 'px';
  elm.style.top  = (y - parentXY.y) + 'px';
}


var arrayOfSelects = null;

function hideSelectElements(visible) {

  if (!document.getElementsByTagName) return;

  if (!arrayOfSelects)
    arrayOfSelects = document.getElementsByTagName("SELECT");

  if (arrayOfSelects && arrayOfSelects.length) {
    for (var i = 0; i < arrayOfSelects.length; i++) {
      if (arrayOfSelects[i] && arrayOfSelects[i].style) {
        arrayOfSelects[i].style.visibility = (visible ? "visible" : "hidden")
      }
    }
  }
}


function initToggles(elementsToSearch, elememtsClosedByDefault) {
  elementsToSearch = elementsToSearch ? elementsToSearch : ["teaserleft", "teaserright"];
  elememtsClosedByDefault = elememtsClosedByDefault ? elememtsClosedByDefault : ["my-handy-logos", "my-handy-soundlogo", "my-handy-alternatives"];
  var elememtsClosedByDefaultString = " " + elememtsClosedByDefault.join(" ") + " ";
	if (document.getElementById && document.getElementsByTagName){
		for (var e = 0; e < elementsToSearch.length; e++) {
      var element = document.getElementById(elementsToSearch[e]);
      if (element && element.childNodes && element.childNodes.length) {
        for (var i = 0; i < element.childNodes.length; i++) {
          var node = element.childNodes[i];
          if (/\btoggles\b/.test(node.className)) {
            var h2elements = node.getElementsByTagName("h2");
            if (h2elements && h2elements.length == 1) {
              var mode = "" 
              if (node.id && window.getCookie) {
                if (getCookie(node.id) == "0") mode = "closed";
                if (getCookie(node.id) == "1") mode = "open";
              }
              if (mode == "") {
                if (elememtsClosedByDefaultString.match("\\b" + node.id + "\\b"))
                  mode = "closed";
                else
                  mode = "open";
              }
              node.className += " " + mode;
              var h2 = h2elements[0];
              h2.onclick = function() {
                if (this.parentNode) {
                  if (this.parentNode.className.indexOf("closing")>=0 || this.parentNode.className.indexOf("closed")>=0) {
                    this.parentNode.className = this.parentNode.className.replace(/\bclosed\b/, "opening");
                    this.parentNode.className = this.parentNode.className.replace(/\bclosing\b/, "opening");
                    if (this.parentNode.id) setCookie(this.parentNode.id, "1", 5);
                  } else {
                    this.parentNode.className = this.parentNode.className.replace(/\bopen\b/, "closing");
                    this.parentNode.className = this.parentNode.className.replace(/\bopening\b/, "closing");
                    if (this.parentNode.id) setCookie(this.parentNode.id, "0", 5);
                  }
                }
              }
            }
          }
        }
      }
		}
	}
}