// Event filter
var EFconfig = new Array;
EFconfig["block"] = "events";
EFconfig["index"] = "." + EFconfig["block"] + " .typeindex";
EFconfig["calendar"] = "." + EFconfig["block"] + " .calendar";
EFconfig["events"] = "." + EFconfig["block"] + " .eventgrp";
EFconfig["doHide"] = true;

function initEventFilter ()
{
  if (!document.getElementById) { return true; }

  var theIndex = document.getElementsBySelector(EFconfig["index"] + " li");
  if (theIndex.length > 0 )
  {
    theIndex[0].className += " current";
    theIndex[0].className.replace(/^\s/, "");

    for (var k = 0; k < theIndex.length; k++)
    {
      theIndex[k].getElementsByTagName("a")[0].onclick = doEventFilter;
    }

    var classPrefix = EFconfig["block"].match(/([^. ]+)$/)[1];
    var theBlock = document.getElementsBySelector("." + EFconfig["block"])[0];
    theBlock.className += " " + classPrefix + "-active";
  }
  return true;
};

function doEventFilter ()
{
  var IndexLIs = this.parentNode.parentNode.getElementsByTagName("li");
  for (var i = 0; i < IndexLIs.length; i++) { IndexLIs[i].className = ""; }
  this.parentNode.className = "current";
  var currentEventID = this.href.replace(/.+#/, "");
  var displayAll = (IndexLIs[0].getElementsByTagName("a")[0].href.replace(/.+#/, "") == currentEventID);

  if (EFconfig["doHide"])
  {
    var calDays = document.getElementsBySelector(EFconfig["calendar"] + " td");
    for (var i = 0; i < calDays.length; i++)
    {
      var dayEvents = calDays[i].getElementsByTagName("p");
      var dayIsEmpty = true;
      for (var k = 0; k < dayEvents.length; k++)
      {
        if ( (dayEvents[k].className == currentEventID) || displayAll )
        {
          dayEvents[k].style.display = "block";
          dayIsEmpty = false;
        }
        else
        {
          dayEvents[k].style.display = "none";
        }
      }
      if (dayEvents.length > 0)
      {
        var dayTitle = calDays[i].getElementsByTagName("h4")[0];
        if (dayIsEmpty && (dayTitle.linkurl == null))
        {
          // strip out the link, but safe the href URL for later
          dayTitle.linkurl = dayTitle.innerHTML.match(/ href=["']([^"']*)["']/)[1];
          dayTitle.innerHTML = dayTitle.innerHTML.replace(/<[^<>]+>/g, "");
        }
        else if (!dayIsEmpty && !dayTitle.innerHTML.match(/<\//))
        {
          // put the link back in
          dayTitle.innerHTML = '<a href="' + dayTitle.linkurl + "'>" + dayTitle.innerHTML + '</a>';
          dayTitle.linkurl = null;
        }
      }
    }

    var eventGrps = document.getElementsBySelector(EFconfig["events"]);
    for (var i = 0; i < eventGrps.length; i++)
    {
      eventGrps[i].style.display = ((eventGrps[i].id == currentEventID) || displayAll) ? "block" : "none";
    }
  }
  else
  {
    // implement this later
    alert("Sorry, not implemented yet.");
  }

  return false;
}
