function initTableLayers (tableName, rows, cols) {
  if (document.layers) {
    var maxHeight = new Array (rows);
    var maxWidth = new Array (cols);
    for (var r = 0; r < rows; r++)
      maxHeight[r] = 0;
    for (var c = 0; c < cols; c++)
      maxWidth[c] = 0;
    for (var r = 0; r < rows; r++)
      for (var c = 0; c < cols; c++) {
        var cell = document[tableName + 'Cell' + r + '_' + c];
        if (maxHeight[r] < cell.clip.height)
          maxHeight[r] = cell.clip.height;
      }
    for (var c = 0; c < cols; c++)
      for (var r = 0; r < rows; r++) {
        var cell = document[tableName + 'Cell' + r + '_' + c];
        if (maxWidth[c] < cell.clip.width)
          maxWidth[c] = cell.clip.width;
      }       
    for (var r = 0; r < rows; r++)
      for (var c = 0; c < cols; c++) {
        var cell = document[tableName + 'Cell' + r + '_' + c];
        cell.clip.width = maxWidth[c];
        cell.clip.height = maxHeight[r];
        cell.rowIndex = r; cell.colIndex = c;
        var ol = cell.ol = new Layer(maxWidth[c]);
        ol.cell = cell;
        ol.clip.height = maxHeight[r];
        ol.left = cell.pageX;
        ol.top = cell.pageY;
        ol.visibility = 'show';
      }
  }
} 
function initTableEventHandler (tableName, rows, cols, event, handler) {
  if (document.layers) {
    var cell0_0 = document[tableName + 'Cell0_0'];
    if (!cell0_0.ol)
      initTableLayers (tableName, rows, cols);
    for (var r = 0; r < rows; r++)
      for (var c = 0; c < cols; c++) {
        var cell = document[tableName + 'Cell' + r + '_' + c];
        cell.ol['on' + event.toLowerCase()] = handler;
      }
  }
}

var highColor = 'white'
function tdMouseOver (evt) {
   this.cell.bgColor = highColor;
}
var lowColor = '#EEEEFF'
function tdMouseOut (evt) {
   this.cell.bgColor = lowColor;
}
function init () {
  initTableEventHandler ('table1', 3, 3, 'mouseover', tdMouseOver);
  initTableEventHandler ('table1', 3, 3, 'mouseout', tdMouseOut);
}


