var dontHideSelects = 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 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;

  var child = menudiv.firstChild;
  while (child) {
    if (child.nodeName == 'LI') {

      child.onmouseover = function (e) {
        if (focusedListItem) hideMenu(e, focusedListItem);
        return showMenu(e, this);
      };
      child.onmouseout = function (e) {
        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;
  
  point = getPageXY(parent);
  if (alignLastRight && !parent.nextSibling)
    setPageXY(child, point.x - child.offsetWidth + parent.offsetWidth, point.y + parent.offsetHeight - 1);
  else
    setPageXY(child, point.x, point.y + parent.offsetHeight - 1);

  child.style.visibility = 'visible';

  if (!dontHideSelects) hideSelectElements(false);

  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) {
  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 : ["userbar", "teaserright", "content"];
  var elememtsClosedByDefaultString = elememtsClosedByDefault ? " " + elememtsClosedByDefault.join(" ") + " " : "";
  if (document.getElementById && document.getElementsByTagName) {
    for (var e = 0; e < elementsToSearch.length; e++) {
      var element = document.getElementById(elementsToSearch[e]);
	
      if (element) {
        var toggleChildren = getElementsByClass(element, "toggles");
        for (var i = 0; i < toggleChildren.length; i++) {
          var node = toggleChildren[i];

          var hElements = node.getElementsByTagName("h2");
          if (!hElements || !hElements.length) {
            hElements = getElementsByClass(node, "toggle-header");
          }

          if (hElements && hElements.length == 1) {
            var mode = "" 
            if (node.id && csgCookieJar && csgCookieJar.getCookieData) {
              var cookie = csgCookieJar.getCookieData("tog-" + node.id);
              if (cookie && cookie[0]) {
                if (cookie[0] == "0") mode = "closed";
                if (cookie[0] == "1") mode = "open";
              }
            }
            if (node.className.match(/\bdefault-(open|closed)\b/))
              node.className = node.className.replace(/\bdefault-(open|closed)\b/, mode ? mode : "$1");
            else
              node.className += (" " + (mode ? mode : "open"));
            
            var h2 = hElements[0];
            h2.onclick = function() {
              if (this.parentNode) {
                var cookieFlag;
                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");
                  cookieFlag = "1";
                } else {
                  this.parentNode.className = this.parentNode.className.replace(/\bopen\b/, "closing");
                  this.parentNode.className = this.parentNode.className.replace(/\bopening\b/, "closing");
                  cookieFlag = "0";
                }
                if (this.parentNode.id) {
                  csgCookieJar.replaceCookieData("tog-" + this.parentNode.id, [cookieFlag]);
                  csgCookieJar.commitCookieData();
                }
              }
            }
          }
        } 
      }
    }
  }
}

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 addBookmarkLink(url, title) {
  if (window.external && document.getElementById && document.createElement) {
    var newSPAN = document.createElement("SPAN");
    newSPAN.appendChild(document.createTextNode("Bookmark"));
    
    var newA = document.createElement("A");
    newA.href = "javascript:window.external.AddFavorite('" + url + "', '" + title + "');";
    newA.appendChild(newSPAN);

    var newLI = document.createElement("LI");
    newLI.appendChild(newA);

    var uls = document.getElementById("foot-menu").getElementsByTagName("ul");
    if (uls && uls[0]) {
       uls[0].appendChild(newLI);
    }
  }
}

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; 
						}
					}
				}
			}
		}
	}
}

function addLastSeen(id) {
	csgCookieJar.queueCookieData("lastseen", [id], 3);
	csgCookieJar.commitCookieData();
}
