function hoverIn(evt)
{
  var e = evt || window.event;
  var el = e.target || e.srcElement;
    
  do
  {
    if (!el)
    {
      break;
    }
    else if (el.className && el.className.indexOf("hoverable") != -1)
    {
      el.className = "hover";
      break;
    }
    else if (el.className && el.className.indexOf("block") != -1)
    {
      el.className = "bover";
      break;
    }
    else if (el.className && el.className.indexOf("item") != -1)
    {
      archiveItemHoverIn(el);
      break;
    }
  } while (el = el.parentNode);
}

function hoverOut(evt)
{
  var e = evt || window.event;
  var el = e.target || e.srcElement;
  
  do
  {
    if (!el)
    {
      break;
    }
    else if (el.className && el.className.indexOf("hover") != -1)
    {
      if (e.toElement && el.contains(e.toElement))
        return;
      
      el.className = "hoverable";
      break;
    }
    else if (el.className && el.className.indexOf("bover") != -1)
    {
      if (e.toElement && el.contains(e.toElement))
        return;

      el.className = "block";
      break;
    }
    else if (el.className && el.className.indexOf("itemHover") != -1)
    {
      if (e.toElement && el.contains(e.toElement))
        return;

      archiveItemHoverOut(el);
      break;
    }
  } while (el = el.parentNode);
}

function itemClick(evt)
{
  var e = evt || window.event;
  var el = e.target || e.srcElement;
  
  do
  {
    if (!el)
    {
      break;
    }
    else if (el.id == "viewSwitch")
    {
      var swEl = document.getElementById("archiveList");
      el.innerHTML = "Toon " + (swEl.className == "list" ? "overzicht" : "voorpagina's");
      swEl.className = swEl.className == "list" ? "cover" : "list";
    }
    else if (el.className && el.className.indexOf("item") != -1)
    {
      var firstLink = el.getElementsByTagName("a");
      if (firstLink && firstLink[0])
        location.href = firstLink[0].href;
        
      break;
    }
    else if (el.className && el.className.indexOf("bover") != -1)
    {
      var firstLink = el.getElementsByTagName("a");
      if (firstLink && firstLink[0])
        location.href = firstLink[0].href;
        
      break;
    }
  } while (el = el.parentNode);
}

function archiveItemHoverIn(el)
{
  if (el.className.indexOf("itemHover") != -1)
    return;
  
  el.className += " itemHover";
}

function archiveItemHoverOut(el)
{
  if (el.className.indexOf("itemHover") == -1)
    return;
  
  el.className = el.className.replace(/\bitemHover\b/g, "");
}

window.onload = function()
{
  if (document.body && document.body.addEventListener)
  {
    document.body.addEventListener("mouseover", hoverIn, false);
    document.body.addEventListener("mouseout", hoverOut, false);
    document.body.addEventListener("click", itemClick, false);
  }
  else if (document.body && document.body.attachEvent)
  {
    document.body.attachEvent("onmouseover", hoverIn);
    document.body.attachEvent("onmouseout", hoverOut);
    document.body.attachEvent("onclick", itemClick);
  }
};