addEvent(window, "load", prepareMiniCal, false);

function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
}

//Assigns onMouseOver and onMouseOuts to mini-cal cells that contain events.
function prepareMiniCal() {
  cells = document.getElementsByTagName('td');
  //Go through all <td> elements
  for (var cellCtr = 0; cellCtr < cells.length; cellCtr++) {
    //if td has a class, put classes in array and look for .hasevents or hasevents(in the event td has multiple classes)
    if (cells[cellCtr].className.length > 0) { 
      cellClasses = new Array;
      cellClasses = cells[cellCtr].className.split(' ');
      for (classCtr = 0; classCtr < cellClasses.length; classCtr++) {
        //If td has hasevents class, assign it a mouseover and mouseoff event listeners
        if (cellClasses[classCtr] == '.hasevents' || cellClasses[classCtr] == 'hasevents') {
          //Find <a> child          
          children = cells[cellCtr].childNodes;
          for (var childCtr = 0; childCtr < children.length; childCtr++) {
            if (children[childCtr].tagName == 'A') {
              addEvent(children[childCtr], "mouseover", showCalTeaser, false);
              addEvent(children[childCtr], "mouseout", hideCalTeaser, false);
            }
          }
        }
      }
    }
  }
}

function showCalTeaser(e) {
  if (e.target) {
    children = e.target.parentNode.childNodes;
  } else {
    children = e.srcElement.parentNode.childNodes;
  }
  for (var childCtr = 0; childCtr < children.length; childCtr++) {
    if (children[childCtr].tagName == 'SPAN') {
      children[childCtr].style.display = 'block';
      children[childCtr].style.zindex = 1000;
    }
  }
}

function hideCalTeaser(e) {
  if (e.target) {
    children = e.target.parentNode.childNodes;
  } else {
    children = e.srcElement.parentNode.childNodes;
  }
  for (var childCtr = 0; childCtr < children.length; childCtr++) {
    if (children[childCtr].tagName == 'SPAN') {
      children[childCtr].style.display = 'none';
    }
  }
}