// JavaScript Document
    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 = 'stripe-even';
              }
            }
          }
        }
      }
    }

