  if( !document.getElementById ) {
    if( document.all ) {
      document.getElementById = function( id ) {
        return document.all[ id ];
      };
    } else {
      document.getElementById = function() {
        return null;
      };
    }
  }

  function getByTagName( o, tN ) {
    if( o ) {
      if( o.getElementsByTagName ) {
        return o.getElementsByTagName( tN );
      } else if( o.all && o.all.tags ) {
        return o.all.tags( tN );
      }
    }
    return null;
  }

  function setStyle( e, p, v ) {
    if( e ) {
      if( e.style ) {
        e.style[ p ] = v;
      } else {
        e[ p ] = v;
      }
    }
  }

  function initialiseTableRuler( tableId, foreCol, backCol ) {
    var t = document.getElementById( tableId ), tB = null;

    if( t ) {
      if( t.tBodies ) {
        tB = t.tBodies;
      } else {
        tB = getByTagName( t, 'TBODY' );
      }
    }
    if( tB ) {
      for( var b, r = null, i = 0, n = tB.length; i < n; ++i, r = null ) {
        if( b = tB[ i ]) {
          if( b.rows ) {
            r = b.rows;
          } else {
            r = getByTagName( b, 'TR' );
          }
        }
        if( r ) {
          for( var j = 0, m = r.length; j < m; ++j ) {
            r[ j ].onmouseover = showRuler;
            r[ j ].onmouseout = hideRuler;
          }
        }
      }
    }

    function hideRuler() {
      setStyle( this, 'color', '' );
      setStyle( this, 'backgroundColor', '' );
    }
  
    function showRuler() {
      setStyle( this, 'color', foreCol );
      setStyle( this, 'backgroundColor', backCol );
    }
  }

  function stripeTable( tableId ) {
    var c = 0, t = document.getElementById( tableId ), tB = null;

    if( t ) {
      if( t.tBodies ) {
        tB = t.tBodies;
      } else {
        tB = getByTagName( t, 'TBODY' );
      }
    }
    if( tB ) {
      for( var b, r = null, i = 0, n = tB.length; i < n; ++i, r = null ) {
        if( b = tB[ i ]) {
          if( b.rows ) {
            r = b.rows;
          } else {
            r = getByTagName( b, 'TR' );
          }
        }
        if( r ) {
          for( var j = 0, m = r.length; j < m; ++j, ++c ) {
            if( !( c % 2 )) {
              r[ j ].className = 'section';
            }
          }
        }
      }
    }
  }