PulldownMenu.menus = [];
PulldownMenu.aniLen = 250;
PulldownMenu.hideDelay = 1000;

function PulldownMenu() {}

function startSlide(node, open) {
	node.open = open
	node.menu.style.visibility = "visible";
  node.menu.parentNode.style.visibility = "visible";
	node.startTime = (new Date()).getTime();
	node.aniTimer = window.setInterval("slide("+node.menuId+")", 10)
}

function slide(i) {
  var node = PulldownMenu.menus[i];
	var elapsed = (new Date()).getTime() - node.startTime;
	if (elapsed > PulldownMenu.aniLen) 
    endSlide(node);
	else {
    var d = Math.round(Math.pow(PulldownMenu.aniLen - elapsed, 2) * node.accelConst)
    if (node.open)
  		node.menu.style.top = d + "px";
		else 
  		node.menu.style.top = -node.menu.offsetHeight - d + "px";
	}
}

function endSlide(node) {
	node.aniTimer = window.clearTimeout(node.aniTimer)
	//node.moveTo(node.open ? node.outPos : node.homePos)
	if (!node.open) {
    node.menu.style.visibility = "hidden";
    node.menu.parentNode.style.visibility = "hidden";
  }
  if (node.open) {
  	node.menu.style.top = 0;
  }
	//if ((node.open && !node.over) || (!node.open && node.over)) {
  //  startSlide()
  //	}
  if (!node.open) delclass(node, "hover");
}


function showmenu(node) {
  addclass(node, "hover");
  for(var i=0; i<PulldownMenu.menus.length; i++)
    if(PulldownMenu.menus[i] != node) 
      hide(i);
 	if (node.hideTimer) window.clearTimeout(node.hideTimer)
    node.hideTimer = 0
  if (!node.open) startSlide(node, true);
}

function hidemenu(node) {
  if (node.hideTimer) window.clearTimeout(node.hideTimer)
	node.hideTimer = window.setTimeout("hide('" + node.menuId + "')", PulldownMenu.hideDelay);
}

function hide(i) {
  var node = PulldownMenu.menus[i];
  if (node.open && !node.aniTimer) startSlide(node, false);
}


function inititem(i, li, ul) {
  var div = document.createElement('div');
  div.className = "container";
//      div.style.width = "130px";
//      div.style.height = "200px";
//      alert("" + ul.offsetWidth + "," + ul.offsetHeight)
  // loop door alle li's van lu en voeg li en a toe aan nieuwe ul
  
  var ul2 = document.createElement('ul');
  for(var j=0; j < ul.childNodes.length; j++) {
    var li2 = ul.childNodes[j];
    if(li2.nodeType == 1 && li2.tagName == 'LI') {
      for(var k=0; k < li2.childNodes.length; k++) {
        var a = li2.childNodes[k];
        if (a.nodeType == 1 && a.tagName == 'A') {
          var li3 = document.createElement('li');
          var ac = a.cloneNode(true);
          var t = ac.firstChild.data;
          ac.firstChild.data = t.replace(/ /g, "\u00A0");
          li3.appendChild(ac);
          ul2.appendChild(li3);
        }
      }
    }
  }
  li.appendChild(div);
  div.appendChild(ul2);
  //alert(ul2.offsetWidth);
  li.accelConst	= (0 - ul2.offsetHeight) / PulldownMenu.aniLen / PulldownMenu.aniLen
  ul2.style.top = -ul2.offsetHeight + "px";
  div.style.height = ul2.offsetHeight+"px";
  div.style.width  = ul2.offsetWidth + "px";
  
  PulldownMenu.menus[i] = li;
  li.menu   = ul2;
  li.menuId = i;
  li.onmouseover = function() { showmenu(this) };
  li.onmouseout  = function() { hidemenu(this) };
  li.style.position = "relative";
}

// zoek binnen de div "menu" elementen li met daarin ul
function initmenu() {
  var menuId = 0;
//  var menu = document.getElementById("menu");
//  if (!menu) return;
  
  var div = document.getElementsByTagName('DIV');
  for(var d=0; d < div.length; d++) {
    if (hasclass(div[d], 'pulldown')) {
      var menu = div[d];
      for(var i=0; i < menu.childNodes.length; i++) {
        var ulm = menu.childNodes[i];
        if(ulm.nodeType == 1 && ulm.tagName == 'UL') {
          for(var j=0; j < ulm.childNodes.length; j++) {
            var li = ulm.childNodes[j];
            if(li.nodeType == 1 && li.tagName == 'LI') {
              for(var k=0; k < li.childNodes.length; k++) {
                var ul = li.childNodes[k];
                if(ul.nodeType == 1 && ul.tagName == 'UL') {
                  inititem(menuId++, li, ul);
                }
              }
            }
          }
        }
      }
    }
  }
}

function addclass(e, c) {
  if (e.className.indexOf(c) == -1) {
    if (e.className.length > 0)
      e.className += " " + c;
    else
      e.className = c;
  }
}

function delclass(e, c) {
  var p = e.className.indexOf(c);
  if (p >= 0)
    e.className = e.className.substr(0, p) + e.className.substr(p + c.length);
}

function hasclass(e, c) {
  var p = e.className.indexOf(c);
  return (p >= 0)
}

onload = initmenu;
