var defaultMenu = null;
var activeMenu  = null;
function showMenu(key) {
  if(activeMenu) {
    activeMenu.style.display = 'none';
  }
  if(key.length < 1) {
     if(defaultMenu) {key = defaultMenu;} else {return;}
  }
  key = "menu_" + key.replace(/\W/g,'').toLowerCase();
  d = document.getElementById(key);
  if(d) {
    activeMenu = d;
    d.style.display = 'block';
  }
}
function activateMenu(menuContainer, menuMain, menuSubs) {
  d = document.getElementById(menuMain);
  if(!d) return;
  var links = d.getElementsByTagName('A');
  for(i = 0; i < links.length; i++) {
    if(links[i].className.match(/active/)) {
      defaultMenu = links[i].innerHTML;
    }
    links[i].onmouseover = function(evt) {if(showMenu) showMenu(this.innerHTML);}
  }
  d = document.getElementById(menuContainer);
  if(d) {
    d.onmouseout = function(evt) {
      try {
        if(!event && windows.event) {event = window.event;}
        if(!event && evt)           {event = evt;}
        if(!event && window.Event)  {event = window.Event;}
        if(checkMouseLeave(this, event)) {
          if(showMenu) showMenu("");
        }
      } catch(e) {
        //showMenu("");
      }
    }
  }
}



function menuOver(el, evt)
{
  if(checkMouseEnter(el, evt)) {
    
    el.className=el.className.replace(/closed/g,'opened');
  }
}
function menuOut(el, evt)
{
  if(checkMouseLeave(el, evt))
    el.className=el.className.replace(/opened/g,'closed');
}

var scrollElem;
var scrollToTop = 0;
var scrollTop = 0;
var isScrolling = 0;
var scrollInterval;
function activateScroll(elemId) {
  if(!document.getElementById) return;
  if(!document.getElementById(elemId)) return;
  scrollElem = document.getElementById(elemId);
  scrollElem.style.position = "relative";
  scrollElem.initTop = 350;
  setInterval("checkScroll()", 200);
}
function checkScroll() {
  var s = getWindowScrollTop();
  if(s > scrollElem.initTop) {
    scrollToTop = (s-scrollElem.initTop);
  } else {
    scrollToTop = 0;
  }
  if(scrollTop != scrollToTop && !isScrolling) {
    scrollInterval = setInterval("doScroll()", 50);
  }
}

function doScroll() {
    var scrollDiff = (scrollToTop-scrollTop) / 10;
    if(Math.abs(scrollDiff) < 0.1) {
      isScrolling = false;
      clearInterval(scrollInterval);
      //scrollTop = scrollToTop;
    } else {
      scrollTop += scrollDiff;
      isScrolling = true;
    }
    scrollTop = Math.round(scrollTop);
    scrollElem.style.top = scrollTop + "px";
}

function getElemTop(elem) {
}

function getWindowScrollTop() {
  if(document.documentElement && document.documentElement.scrollTop)
    return document.documentElement.scrollTop;
  if(document.body && document.body.scrollTop)
    return document.body.scrollTop;
  return 0;
}

function getWindowHeight() {
  if (document.layers){
   return window.outerHeight;
  }
  if (document.all){
   return document.body.clientHeight;
  }
}



function thumbLoader(imageObjects, fullScreenImage, fullUrl, thumbUrl) {
  for(i = 0; i < imageObjects.length; i++) {
    img = imageObjects[i];
    img.img  = document.getElementById(img.name);
    if(img.img) {
      img.fimg = new Image();
      img.fimg.thumb  = img.img;
      img.fimg.onload = function() {this.thumb.onmouseover=function() {this.onclick()};}
      img.fimg.src = fullUrl + img.src;
      img.img.preview = fullScreenImage;
      img.img.previewsrc = img.fimg.src;
      img.img.description = img.description ? img.description : '';
      img.img.style.cursor = "pointer";
      img.img.onclick = function() {
        if(!this.preview) {return;}
        if(!this.previewsrc) {return;}
        if(!document.getElementById(this.preview)) {
          document.title = "Preview afbeelding niet gevonden [" + this.preview + "]";
          document.getElementById(this.preview + "_caption").innerHTML = '';
        } else {
          document.getElementById(this.preview).src = this.previewsrc;
          document.getElementById(this.preview + "_caption").innerHTML = this.description;
        }
      }
    } else {
      document.title = 'image object not found:' + img.name;
    }
  }
}

function menu(title, href, onclick)
{
   /* Create attributes */
   this.childs = new Array();
   this.title = title;
   this.href = href;
   this.onclick=onclick;

   /* Link methods */
   this.show = menu_show;
   this.add = menu_add;
   this.getAnchor = menu_anchor;
}

function menu_anchor(level)
{
  anch = '<a';
  if(this.onclick)
  {
    if(this.href)
      anch += ' class="link rwa'+level+'" href="' + this.href + '" onclick="' + this.onclick + '"';
    else
      anch += ' class="link rwa'+level+'" href="#" onclick="' + this.onclick + '"';
  }
  else if(this.href)
  {
    anch += ' class="link rwa'+level+'" href="' + this.href + '"';
  }
  else
  {
    anch += ' class="nolink rwa'+level+'" href="#" onclick="return false;"';
  }
  anch += '>' +this.title + '</a>';
  return anch;
}

function menu_show(level)
{
  if(!level || level == 0)
    level = 0;
  if(level == 0) document.write('<div class="rwmenu rwmenu0">');
  var level2 = level + 1;
  slevel = "\n";
  for(var i = 0; i < level; i++)
    slevel += " ";
  document.write(slevel+'<div class="rwsubmenu rwsubmenu'+level+'">');
  for(var i = 0; i < this.childs.length; i++)
  {
    var child = this.childs[i];
    document.write(slevel+'<div class="rwmenu rwmenuclosed rwmenu'+level2+' rwmenu'+level2+'closed"' + 
                   ' onmouseover="menuOver(this,event);"'+
                   ' onmouseout ="menuOut(this,event);"'+
                   '>');
    document.write(slevel+child.getAnchor());
    if(child.childs.length > 0)
      child.show(level2);
    document.write(slevel+'</div>');
  }
  document.write(slevel+'</div>');
  if(level == 0) document.write('</div>');
}

function menu_add(menu)
{
  this.childs[this.childs.length] = menu;
}






/************ Supportive functions ********************/
function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseEnter (element, evt) {
  if (element.contains && evt.fromElement) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}




