var dontHideSelects = true;

/*@cc_on @*/
/*@if (@_jscript_version < 5.7)
var dontHideSelects = false;
@end @*/

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 a = document.createElement('a');
                var text = document.createTextNode(items[i].text);

                a.href = items[i].href;
                a.onclick = function() { intern = true; };
                a.appendChild(text);

                li.appendChild(a);

                dropdown.appendChild(li);
              }

            item.appendChild(dropdown);
          }
      }
  }

var focusedListItem = null;

function cssjsmenu(menuid)
  {
    if (!document.getElementById) return;

    var offset = navigator.userAgent.indexOf('Opera');

    if (offset != -1 && parseInt('0' + navigator.userAgent.substr(offset + 6), 10) < 7) return;
    if ( navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Mac') != -1 ) return;

    var menudiv = document.getElementById(menuid);

    if (!menudiv) return;

    menudiv = menudiv.getElementsByTagName("UL")[0];

    if (!menudiv) return;

    menudiv.onmouseover = function (e) { this.className = this.className + " hovered"; };
    menudiv.onmouseout = function (e) { this.className = this.className.replace(/ ?hovered/, ""); };

    var child = menudiv.firstChild;

    while (child)
      {
        if (child.nodeName == 'LI')
          {
            child.onmouseover = function (e)
              {
                if (focusedListItem) hideMenu(e, focusedListItem);

                this.className = this.className + " hovered";

                return showMenu(e, this);
              };
            child.onmouseout = function (e)
              {
                this.className = this.className.replace(/ ?hovered/, "");

                return hideMenu(e, this);
              };

            var a = child.getElementsByTagName("A")[0];

            if (a && a.parentNode == child)
              {
                a.onfocus = function (e)
                  {
                    if (focusedListItem == this.parentNode) return false;
                    if (focusedListItem) hideMenu(e, focusedListItem);

                    focusedListItem = this.parentNode;

                    return showMenu(e, this.parentNode);
                  };
              }
          }
        child = child.nextSibling;
      }
    return;
  }

function showMenu(e, parent)
  {
    var child = parent.getElementsByTagName("UL")[0]

    if (!child) return false;
  
    var point = getPageXY(parent);

    if (alignLastRight && !parent.nextSibling)
      var x = point.x - child.offsetWidth + parent.offsetWidth;
    else
      var x = point.x;

    var y = point.y + parent.offsetHeight - 1;

    setPageXY(child, x, y);

    child.style.visibility = 'visible';

    if (!dontHideSelects) hideSelectElements(false, x, y, child.offsetWidth, child.offsetHeight);

    return false;
  }

function hideMenu(e, parent)
  {
    var relatedTarget = null;

    if (e)
      {
        relatedTarget = e.relatedTarget;

        if (!relatedTarget && navigator.product == 'Gecko' && navigator.platform.indexOf('Linux') != -1) relatedTarget = e.originalTarget;
      }
    else if (window.event)
      {
        relatedTarget = window.event.toElement;
      }

    if (elementContains(parent, relatedTarget)) return false;

    var child = parent.getElementsByTagName("UL")[0];

    if (!child) return false;

    child.style.visibility = 'hidden';

    if (!dontHideSelects) hideSelectElements(true);
  
    return false;
  }

function elementContains(elmOuter, elmInner)
  {
    while (elmInner && elmInner != elmOuter)
      elmInner = elmInner.parentNode;

    return (elmInner == elmOuter);
  }

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, menuX, menuY, menuWidth, menuHeight)
  {
    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)
              {
                if (!visible)
                  {
                    var selectPos = getPageXY(arrayOfSelects[i]);
	            intersect =
                      ((menuX < selectPos.x + arrayOfSelects[i].offsetWidth) && (menuY < selectPos.y + arrayOfSelects[i].offsetHeight) && (menuX + menuWidth > selectPos.x) && (menuY + menuHeight > selectPos.y));
                  }

                arrayOfSelects[i].style.visibility = (visible || !intersect ? "visible" : "hidden")
              }
          }
      }
  }

function getElementsByClass(element, className)
  {
    function _GetElementsByClass(outArray, seed, className)
      {
        while (seed)
          {
            if (seed.nodeType == 1)
              { //ELEMENT_NODE
                if (seed.className)
                  {
                    var c = " " + seed.className + " ";

                    if (c.indexOf(" " + className + " ") != -1) outArray.push(seed);
                  }

                _GetElementsByClass(outArray, seed.firstChild, className)
              }
            seed = seed.nextSibling;
          }
      }

    var outArray = new Array();

    if (element && className) _GetElementsByClass(outArray, element.firstChild, className);

    return outArray;
  }

function initFunctionHover()
  {
    if (document.getElementById && document.getElementsByTagName)
      {
        var fhElements = getElementsByClass(document.getElementById("content"), "function-hover");
        var fh = document.getElementById("function-hover");

        if (fh) fhElements[fhElements.length] = fh;
          for (var j = 0; j < fhElements.length; j++)
            {
              fhElement = fhElements[j];
              fhElement.className += " with-js";

              var DTs = fhElement.getElementsByTagName("dt");

              for (var i = 0; i < DTs.length; i++)
                {
                  var img = DTs[i].firstChild;
                  if (img.tagName.toLowerCase() == "img")
                    {
                      img.onmouseover = function ()
                        {
                          var functionHoverCurrent = this.parentNode.parentNode.parentNode.functionHoverCurrent;

                          if (functionHoverCurrent && functionHoverCurrent.className) { functionHoverCurrent.className = functionHoverCurrent.className.replace(/( |^)hover( |$)/g, " "); }
                          if ((" " + this.className + " ").indexOf(" hover ") == -1) this.className += " hover";

                          this.parentNode.parentNode.parentNode.functionHoverCurrent = this;

                          var listItem = this.parentNode.nextSibling;

                          while (listItem && (!listItem.tagName || listItem.tagName.toLowerCase() != "dd"))
                            { listItem = listItem.nextSibling; }

                          if (listItem.innerHTML)
                            {
                              var textNode = document.getElementById(this.parentNode.parentNode.parentNode.id + "-text");

                              if (textNode) textNode.innerHTML = listItem.innerHTML; 
                            }
                        }
                    }
                }
            }
      }
  }