なぜだかFirefoxだと超遅くなる。なんで?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
#MainMenu {
  width :680px;
  height: 300px;
  overflow:auto;
}

#MainMenu ul {
  float :left;
  list-style: none;
  overflow : auto;
  margin : 0;
  padding : 0;
  height : 300px;
}

#MainView {
  width  : 500px;
}

#MainView li {
  margin : 0;
  padding : 0;
  height : 300px;
}

#MainView li img {
  width:500px;
  height:300px;
  border : 0px none;
}

#ItemList {
  list-style: none;
  width : 180px;
}

#ItemList li {
  width : 180px;
  height: 50px;
}
#ItemList li a {
  width : 180px;
  height: 50px;
  border :0px none;
}

#ItemList li a img {
  width : 180px;
  height: 50px;
  border: 0px none;
}

</style>

</head>
<body>
<p>abc</p>
<div id="MainMenu">

  <ul id="MainView">
    <li><img src="./img/0.gif" alt="xxx0">
    <li><img src="./img/1.gif" alt="xxx1">
    <li><img src="./img/2.gif" alt="xxx2">
    <li><img src="./img/3.gif" alt="xxx3">
    <li><img src="./img/4.gif" alt="xxx4">
    <li><img src="./img/5.gif" alt="xxx5">
    <li><img src="./img/6.gif" alt="xxx6">
  </ul>

  <ul id="ItemList">
    <li>
      <a href="#">
        <img src="./img/0.gif" alt="yyy0" class="hv">
      </a>

    <li>
      <a href="#">
        <img src="./img/1.gif" alt="yyy1" class="hv">
      </a>

    <li>
      <a href="#">
        <img src="./img/2.gif" alt="yyy2" class="hv">
      </a>

    <li>
      <a href="#">
        <img src="./img/3.gif" alt="yyy3" class="hv">
      </a>

    <li>
      <a href="#">
        <img src="./img/4.gif" alt="yyy4" class="hv">
      </a>

    <li>
      <a href="#">
        <img src="./img/5.gif" alt="yyy5" class="a hv bc">
      </a>

    <li>
      <a href="#">
        <img src="./img/6.gif" alt="yyy6" class="hv">
      </a>
  </ul>
</div>

<script type="text/javascript">
//@cc_on

var AutoChanger = function ( id, wait, step, span ) {

  var p = document.getElementById ( id ); if( !p ) return;
  var tw = p.clientWidth, th = p.clientHeight, tc = p.firstChild;
  var ts = [ ];
  var no = 0, o, s = p.style;
  var tmid;

  s.overflow = 'hidden', s.position = 'relative'; 

  while( o = tc ) {
    tc = o.nextSibling;
    if( 'LI' == o.nodeName ) {
      o.style.position = 'absolute';
      ts.push( o );
    } else p.removeChild( o );
  }


  this.change = function ( n, r ) {
    if( no == n ) return;
    no = ( 'number' == typeof n ? n: no + 1 ) % ts.length;
    r  = ( 'number' == typeof r ? r : Math.random() * 4 )  % 4 |0;

    var target = ts[ no = no % ts.length ];
    var z = [[ 0, -th], [ tw, 0 ], [ 0, th ], [ -tw, 0]][ r ];
    var fade = 1;
    var s = target.style;
    var that = this;
    p.appendChild( target );
    
    (function ( ) {
      if( 0.001 < ( fade /= step ) ) {
        s.top = ( z[1] * fade | 0) + 'px';
        s.left = ( z[0] * fade | 0) + 'px';
        s./*@if( @_jscript )
          filter = 'Alpha(opacity=' + (100 - fade * 100) + ')' @else@*/
          opacity = 1 - fade + '' /*@end@*/;
        return setTimeout( arguments.callee, span );
      }
      that.start( );
    })();
  };


  this.start = function ( ) {
    this.stop();
    return tmid = setTimeout( (function ( that ) {
      return function ( ) { that.change( ); };
    })( this ), wait );
  };


  this.stop = function ( ) {
    return clearInterval( tmid );
  };
  
  return this.start();
};


//__________

var ListRoller = function ( id, step, span ) {
  var p = document.getElementById( id ); if( !p ) return;
  var ts = p.getElementsByTagName( 'LI' );
  var s = p.style;
  var c = 0, b = 0, max = 0, tmid, o;
  
  s.overflow = 'hidden', s.position = 'relative'; 
  step = step || 2, span = span || 50;
  
  while( o = ts[ c++ ] ) {
    s = o.style;
    s.position = 'absolute';
    s.left = '0px';
    s.top = ( max += b ) + 'px';
    b = o.offsetHeight;
  }


  this.start = function ( ) {
    return tmid = setInterval( (function ( that ) {
      return function ( ) {
        var i = 0, o, h, t;
        if( step > 0 ) {
          while( o = ts[ i++ ] ) {
            t = ( h = o.offsetTop + step ) - max;
            if( 0 < t ) h = -o.offsetHeight + t;
            o.style.top = h + 'px';
          }
        } else {
          while( o = ts[ i++ ] ) {
            t = ( h = o.offsetTop + step ) + o.offsetHeight;
            if( 0 > t ) h = max + t;
            o.style.top = h + 'px';
          }
        }
      };
    })( this ), span );
  };
  
  
  this.stop = function ( ) {
    return clearTimeout( tmid );
  };
  
  return this.start( );
};

ListRoller.memory = [ ];
ListRoller.Listener = (function ( ) {
  var m;
  return function ( evt ) {
    var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
    var p = P( e, 'nodeName', 'UL' ) || { };

    if( m ) {
      m.obj && m.obj.start( );
    }
    
    m = ListRoller.memory[ p.id ];
    if( m ) {
      m.obj && m.obj.stop( );
      m.cbFunc && m.cbFunc( e, C( P( e, 'nodeName', 'LI' ) ) );
    }

    function P(n,t,v){return n?v==n[t]?n:arguments.callee(n.parentNode,t,v):null}
    function C(n,c,t){
      if((c=-1)&&n&&(t=n.nodeName))do c+=(t==n.nodeName);while(n=n.previousSibling)
      return c;
    }
  };
})();


ListRoller.add = function ( id, step, interval, cbFunc ) {
  var e = document.getElementById( id );
  if( ! this.memory[0] )
    document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
      'mouseover', ListRoller.Listener, false );
   
  if( e && 'UL' == e.tagName && !ListRoller.memory[ id ] )
    this.memory[ id ] = { cbFunc: cbFunc, obj: new this( id, step, interval ) };
};

//__________

var ImageHover = function ( cssName, addStr ) {

  var reg_chk = new RegExp( '(^|\\s)' + cssName + '($|\\s)' );
  var reg_rep = new RegExp( '^(.+)(\\..+)$' );
  var reg_pbk = new RegExp( '^(.+)' + addStr + '(\\..+)$');
  var m;

  return function ( evt ) {
    var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;

    if( m && m != e )
      m.src = m.src.replace( reg_pbk, '$1$2' );

    if( 'IMG' == e.nodeName && reg_chk.test( e.className ) ) {
      e.src = e.src.replace( reg_rep, '$1' + addStr + '$2' );
      m = e;
    }
  };
};

document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
  'mouseover', ImageHover( 'hv', '_rev' ) , false );

//__________
  ListRoller.add( 'ItemList', -1, 100, (function ( that ) {
      return function ( e, n ) { that.change( n, 1 ); }; 
    })(new AutoChanger( 'MainView', 3000, 1.3, 50 ) ) );
</script>

</body>
</html>