/*
* Cache van javascripts.script.js
* Created: 2011-11-09 13:24:57
*/

/*
$Author: sjors $
$LastChangedDate: 2006-10-19 14:05:31 +0200 (do, 19 okt 2006) $
$Id: javascripts.js 28 2006-10-19 12:05:31Z sjors $
$Rev: 28 $
*/

/* Menu */
var menuimgid   = 'menuimg_';
var menucursub  = new Array();
var menuimgs_dw = new Array();
var menuimgs_ov = new Array();
var menuimgs_up = new Array();

function getmenulevel(curel)
{
  var level = 0;
  while (curel.id != 'menu' && curel.tagName != 'BODY')
  {
    if (curel.tagName == 'UL')
    {
      level++;
    }
    curel = curel.parentNode;
  }
  return level;
}

function buildmenu()
{
  // Locate our menu
  var menuid = document.getElementById('menu');

  if (!menuid)
  {
    // Menu not found
    return;
  }

  // Index all images in menu
  var imgs = menuid.getElementsByTagName('img');
  for (var i=0; i<imgs.length; i++)
  {
    menuimgs_dw[i] = imgs[i].src;
    menuimgs_ov[i] = imgs[i].onmouseover?getEvent(imgs[i].onmouseover).replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1"):null;
    menuimgs_up[i] = imgs[i].onmouseout ?getEvent(imgs[i].onmouseout). replace(/this\.src\s*=\s*['|"](.*)['|"];?/, "$1"):null;
    imgs[i].id = menuimgid + i;
  }

  // Preload the images
  preload(menuimgs_ov);
  preload(menuimgs_up);

  // Attach event on menuitems and open current item
  var lis = menuid.getElementsByTagName('li');
  for (var i=0; i<lis.length; i++)
  {
    lis[i].onclick = function(event) {showsub(this); (window.event?window.event:event).cancelBubble=true;}
    if (lis[i].className == 'curpage')
    {
      opencurrentmenu(lis[i]);
    }
  }
}

function opencurrentmenu(curpageel)
{
  if (curpageel.id != "menu")
  {
    if (curpageel.tagName == 'LI')
    {
      var imgs   = curpageel.getElementsByTagName('img');
      var imgid  = imgs[0].id.replace(menuimgid, '');

      imgs[0].src = menuimgs_ov[imgid]?menuimgs_ov[imgid]:imgs[0].src;
      imgs[0].onmouseout  = null;
      imgs[0].onmouseover = null;

      if (curpageel.getElementsByTagName('ul').length > 0)
      {
        showsub(curpageel);
        menuimgs_dw[imgid] = imgs[0].src;
        menuimgs_ov[imgid] = imgs[0].src;
        menuimgs_up[imgid] = imgs[0].src;
      }
    }
    opencurrentmenu(curpageel.parentNode);
  }
}

function hidecursub(level)
{
  if (menucursub[level]) hidesub(menucursub[level]);
}

function showsub(curel)
{
  var uls = curel.getElementsByTagName('ul');
  var level = getmenulevel(curel);

  if (uls.length == 0 || menucursub[level] == curel)
  {
    hidecursub(level);
  }
  else
  {
    var imgs   = curel.getElementsByTagName('img');
    var imgid  = imgs[0].id.replace(menuimgid, '');
    imgs[0].src = menuimgs_ov[imgid]?menuimgs_ov[imgid]:imgs[0].src;
    imgs[0].onmouseout  = null;
    imgs[0].onmouseover = null;

    hidecursub(level);
    for (var i=0; i<uls.length; i++)
    {
      if (getmenulevel(uls[i]) == level+1)
      {
        uls[i].className = 'shown';
      }
    }

    menucursub[level] = curel;
  }
}

function hidesub(closeel)
{
  var level = getmenulevel(closeel);

  if (menucursub[level+1])
  {
    hidesub(menucursub[level+1]);
  }

  var imgs  = closeel.getElementsByTagName('img');
  var imgid = imgs[0].id.replace(menuimgid, '');

  imgs[0].src = menuimgs_dw[imgid]?menuimgs_dw[imgid]:imgs[0].src;
  if (menuimgs_up[imgid])
  {
    imgs[0].onmouseout  = function () {this.src = menuimgs_up[this.id.replace(menuimgid, '')];};
  }
  if (menuimgs_ov[imgid])
  {
    imgs[0].onmouseover = function () {this.src = menuimgs_ov[this.id.replace(menuimgid, '')];};
  }

  var uls = closeel.getElementsByTagName('ul');
  for (var i=0; i<uls.length; i++)
  {
    uls[i].className = '';
  }

  menucursub[level] = '';
}
/* Menu */
