<!--
/*
# Version: 1.1
# Created: 2008-06-09
# Modified: 2008-06-09

hl_columns = { column_key_1: [cell1, cell2, cell3...],
               column_key_2: [cell4, cell5, cell6...],
               column_key_3: [cell7, cell8, cell9...] ... }

column key format: tableNum_columnNum
*/
var CH = {
  hl_columns: {},
  hl_color: '#cad6ff',

  start: function() {
    if (window.addEventListener){
        window.addEventListener('load', CH.init, false);
    } else if (window.attachEvent){
        window.attachEvent('onload', CH.init);
    } else {
      onloadfunc = window.onload;
      window.onload = function() {
        if (onloadfunc) onloadfunc();
        CH.init();
      }
    }
  },

  init: function() {
  
    var all_tables = document.getElementsByTagName('table');
    
    var tables = [];
    for (var i = 0; i < all_tables.length; ++i) {
      var t = all_tables[i];
      var class_names = t.className.split(/\s+/).filter(function(element, index, array){ return (element.length > 0) });
      if (class_names.indexOf('highlight_cells') != -1) tables.push(t);
    }
    if (tables.length == 0) return;

    for (var i = 0; i < tables.length; ++i) {
      var table = tables[i];
      var trs = table.getElementsByTagName('tr');

      for (var j = 0; j < trs.length; ++j) {
        var tr = trs[j];
        if (j > 0) { // not for the 1st row
          tr.onmouseover = tr.onmouseout = function() { CH.toggleRowColor(this); }
        }

        var tds = tr.getElementsByTagName('td');

        for (var k = 1; k < tds.length; ++k) {
          var column_key = i + '_' + k; // column key format: tableNum_columnNum
          
          if (! (column_key in CH.hl_columns)) CH.hl_columns[column_key] = [];
          
          var td = tds[k];

          // no highlight for the 1st row, so don't put the td into hl_columns
          if (j > 0) CH.hl_columns[column_key].push(td);

          td.column_key = column_key;
          td.onmouseover = td.onmouseout = function() { CH.toggleColColor(this.column_key); }
        }
      }
    }
  },

  toggleRowColor: function(tr) {
    var color = tr.style.backgroundColor;
    if (color == undefined || color == '') {
      tr.style.backgroundColor = CH.hl_color;
    } else {
      tr.style.backgroundColor = '';
    }
  },

  toggleColColor: function(column_key) {
    var hl_column_cells = CH.hl_columns[column_key];
    var color = hl_column_cells[0].style.backgroundColor;
    if (color == undefined || color == '') {
      color = CH.hl_color;
    } else {
      color = '';
    }
    
    for (var i = 0; i < hl_column_cells.length; ++i) {
      hl_column_cells[i].style.backgroundColor = color;
    }
  }
}

CH.start();

//-->
