function getTarget(e) {
	var targ;
	if (!e) e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
  return targ;
}

function btn_over(e) {
  if (!e) var e = window.event;
  var btn = (window.event) ? e.srcElement : e.target;
  //btn.style.backgroundPosition = "right bottom";
}

function btn_out(e) {
  if (!e) var e = window.event;
  var btn = (window.event) ? e.srcElement : e.target;
  //btn.style.backgroundPosition = "right top";
}

function h23over(e) {
  var h2or3 = getTarget(e);
  h2or3.style.backgroundPosition = "right bottom";
}

function h23out(e) {
  var h2or3 = getTarget(e);
  if (h2or3.parentNode.className == "collapsed")
   h2or3.style.backgroundPosition = "right top";
}

function expandAll() {
  var div = document.getElementsByTagName("DIV");
  for(var i=0; i<div.length; i++) {
    if (div[i].className == "collapsed") {
      div[i].className = "expanded";
    }
  }
}

function collapseAll() {
  var div = document.getElementsByTagName("DIV");
  for(var i=0; i<div.length; i++) {
    if (div[i].className == "expanded") {
      div[i].className = "collapsed";
    }
  }
}

function expandORcollapse(e) {
  var h2or3 = getTarget(e);
  var div = h2or3.parentNode;
  if (div) {
    if (div.className == "expanded") {
      div.className = "collapsed";
      //if (h2or3.firstChild.data == "Bestel bij Beke")
      //  rollDown(div, "collapsed", function() { div.className = "collapsed" });
    } else {
      div.className = "expanded";
      //document.documentElement.clientHeight
      //div.offsetHeight
      var wsize  = getWindowSize();
      var scroll = getScrollXY();
      var h = div.offsetTop + div.offsetHeight;
      //alert(div.offsetTop + ", " + div.offsetHeight + ", " + wsize[1] + ", " + scroll[1]);
      if (h > wsize[1] + scroll[1])
        window.scrollTo(0, h - wsize[1]);
      
      //alert(div.offsetHeight);
      //if (h2or3.firstChild.data == "Bestel bij Beke")
      //  rollDown(div, "expanded",  function() { div.className = "expanded" });
    }
  }
}

/* roll down effect bij expand/collapse */

var rollObj = {div:null, height:0, duration:500, incr:0, startTime:0, aniTimer:0 };

function rollDown(div, expand, func) {
  rollObj.div = div;
  rollObj.duration = 1000;
  rollObj.afterFunc = func;
  if (expand == "expanded") {
    rollObj.height = div.offsetHeight;
    rollObj.incr = div.offsetHeight/40;
    div.style.height = "0px";
  } else {
    rollObj.height = 0;
    rollObj.incr = -div.offsetHeight/40;
  }
  div.style.overflow = "hidden";
  rollObj.startTime = (new Date()).getTime();
  rollObj.aniTimer = window.setInterval("rollUpdate()", 10)
}

function rollUpdate(){
	var elapsed = (new Date()).getTime() - rollObj.startTime;
	if ((rollObj.height && rollObj.div.offsetHeight >= rollObj.height) || 
      (rollObj.height == 0 && rollObj.div.offsetHeight <= 10)) 
    rollFinish();
	else
    rollObj.div.style.height = rollObj.div.offsetHeight + rollObj.incr + "px";
}

function rollFinish() {
 	window.clearInterval(rollObj.aniTimer);
//  rollObj.div.style.height = (rollObj.height ? "auto" : "19px");
  rollObj.div.style.height = "auto";
  if (rollObj.afterFunc) 
    rollObj.afterFunc();
  //rollObj.div.style.overflow = "visible";
  //rollObj = null;
}


/* initialize */

function init_website() {
  // tableofcontent
  toc();
  
  // koppel btn_over/btn_out aan input submit buttons
  var btn = document.getElementsByTagName('INPUT');
  for(var i=0; i<btn.length; i++) {
    if (btn[i].className == 'submit') {
      btn[i].onmouseover = btn_over;
      btn[i].onmouseout = btn_out;
    }
  }

  // koppel expandORcollapse aan h2 en h3 binnen divs collapsed en expanded
  var div = document.getElementsByTagName("DIV");
  for(var i=0; i<div.length; i++) {
    if (div[i].className == "collapsed" || div[i].className == "expanded") {
      var children = div[i].childNodes;
      for(var j=0; j<div[i].childNodes.length; j++) {
        var e = div[i].childNodes[j];
        if(e.nodeType == 1 && (e.tagName == "H2" || e.tagName == "H3")) {
          e.onmousedown = expandORcollapse;
          e.onmouseover = h23over;
          e.onmouseout = h23out;
        }
      }
    }
  }
}

function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [ myWidth, myHeight ];
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function toc() {
  var page = location.href;
  var toc = document.getElementById("tableofcontent");
  if (toc) {
    var div = toc.parentNode;
    while (div != null && !(div.tagName == 'DIV' && div.id.indexOf('webetui_') == 0)) {
      div = div.parentNode;
    }
    if(div == null)
      return;
      
    var ul = document.createElement("UL");
    ul.className = "toc";
    if (div) {
      var h2 = div.getElementsByTagName("H2");
      for (var i=0; i<h2.length; i++) {
        // get h2 info
        var t = h2[i].firstChild;
        if (t) {
          if(t.nodeType == 1)
            t = t.firstChild;
          var text = t.data;
          var aname = "toc" + i;
          
          // make list element
          var li = document.createElement("LI");
          var a = document.createElement("A");
          var t = document.createTextNode(text);
          a.setAttribute("href", page + "#" + aname);
          a.appendChild(t);
          li.appendChild(a);
          ul.appendChild(li);
          h2[i].innerHTML=  '<a name="'+aname+'"></a>'+h2[i].innerHTML;
        }
      }
    }
    toc.appendChild(ul);
  }
}

//onload = init_website;
//document.observe('dom:loaded', init_website);