/*
    Mike West - http://mikewest.org/
    Released under a CC license - http://creativecommons.org/licenses/by/2.0/
*/
function handleEvent(obj, event, func) {
  try {
    obj.addEventListener(event, func, false);
  } catch (e) {
    if (typeof eval("obj.on"+event) == "function") {
      var existing = obj['on'+event];
      obj['on'+event] = function () { existing(); func(); };
    } else {
      obj['on'+event] = func;
    }
  }
}

/*
  *  Zebra-Ruled Tables:
  *      Original implementations by
  *      Davis Miller (http://alistapart.com/articles/zebratables/)
  *          and
  *      Christian Heilmann (http://alistapart.com/articles/tableruler/)
  */
function ZebraTable() {
  var self = this;

  self.stripeTable = function (table) {
    var tbodies = table.getElementsByTagName("tbody");
    for (i=0, numBodies=tbodies.length; i<numBodies; i++) {
      var even    = false;
      var trs = tbodies[i].getElementsByTagName("tr");
      for (var j=0, numTrs=trs.length; j<numTrs; j++) {
        trs[j].className += (even)?" even":" odd";
        even = !even;
        handleEvent(
          trs[j],
          "mouseover",
          function(e) {
            var self = this;
            if (window.event) {
              self = window.event.srcElement.parentNode;
            }
            if (!self.className) {
              self.className = "hoverClass";
            } else if (!self.className.match(/hoverClass/)) {
              var classes = self.className.split(/\s+/);
              classes.push("hoverClass");
              self.className = classes.join(" ");
            }
          }
        );
        handleEvent(
          trs[j],
          "mouseout",
          function() {
            var self = this;
            if (window.event) {
              self = window.event.srcElement.parentNode;
            }
            self.className = self.className.replace(/hoverClass/, "");
          }
        );
      }
    }
  }
  self.stripeAllTables = function () {
    var tables = document.getElementsByTagName('table');
    for (i=0, numTables=tables.length; i<numTables; i++) {
      if (tables[i].className.match(/DataTable/)) {
        self.stripeTable(tables[i]);
      }
    }
  }

  handleEvent(window, "load", self.stripeAllTables);
}

var tableStriper = new ZebraTable();

