



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 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];

          hElements = getElementsByClass(node, "toggle-header");

          if (hElements && hElements.length == 1) {
            var mode = "" 
            if (node.id && element.id != "userbar" && 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() {
              var thisToggle = this.parentNode;
              if (thisToggle) {
              	var allToggles;
              	if (thisToggle.parentNode.id == "userbar")
	              allToggles = getElementsByClass(thisToggle.parentNode, "toggles");
	            else
	              allToggles = [thisToggle];
                var closed = (thisToggle.className.indexOf("closing")>=0 || thisToggle.className.indexOf("closed")>=0);
                var cookieFlag;
                for (var i = 0; i < allToggles.length; i++) {
               	  var toggle = allToggles[i];
                  if (toggle == thisToggle && closed) {
                    toggle.className = toggle.className.replace(/\bclosed\b/, "opening");
                    toggle.className = toggle.className.replace(/\bclosing\b/, "opening");
                    cookieFlag = "1";
                  } else {
                    toggle.className = toggle.className.replace(/\bopen\b/, "closing");
                    toggle.className = toggle.className.replace(/\bopening\b/, "closing");
                    cookieFlag = "0";
                  }
                  if (toggle.id && toggle.parentNode && toggle.parentNode.id != "userbar") {
                    csgCookieJar.replaceCookieData("tog-" + toggle.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 && img.tagName && 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();
}

function addLastSeenGK(id) {
	csgCookieJar.queueCookieData("lastseenGK", [id], 3);
	csgCookieJar.commitCookieData();
}

function addMeta(mName, mContent) {	
	var myMeta = document.createElement("meta");
	myMeta.name = mName;
	myMeta.content = mContent;
	document.getElementsByTagName("head")[0].appendChild(myMeta);	
}
