<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
   <TITLE>Mozilla Test: Table + DHTML Problem in Mozilla</TITLE>
   <META name="author" content="Antti Huotari">
   
   <SCRIPT type="text/javascript" language="javascript">

   <!-- ===== hide
 
     // window.onerror = null;

     var agt = navigator.userAgent.toLowerCase ();

     var is_major = parseInt (navigator.appVersion);
     var is_minor = parseFloat (navigator.appVersion);

     var is_nav = ((agt.indexOf('mozilla') != -1)
                && (agt.indexOf('spoofer') == -1)
                && (agt.indexOf('compatible') == -1)
                && (agt.indexOf('opera') == -1)
                && (agt.indexOf('webtv') == -1));

     var is_nav5 = (is_nav && (is_major == 5));
     var is_ie = (agt.indexOf("msie") != -1);
     var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") != -1)); 

     function moveTestdiv ()
     {
       document.getElementById('testDiv').style.left = 200 + 'px';
       document.getElementById('testDiv').style.top = 200 + 'px';        
     }
         
     function init ()
     {
       if (is_nav5 || is_ie5)
       {
         setTimeout ("moveTestdiv ()", 700)
       }
     }

   // ===== hiding ends ===== -->
   

</SCRIPT>

</HEAD>

<BODY style="background: #999999; color: #000000;" onLoad="init()">

<div id="testDiv" style="position: absolute; left: 70px; top: 70px;">
<TABLE border="0" width="173" bgcolor="#CC6600" cellspacing="0" cellpadding="0">
<TR>
<TD><P align="center"><B>Testing</B></P></TD>
</TR>
</TABLE>
<TABLE border="0" width="173" cellspacing="0" cellpadding="0">
<TR>
<TD width="9" bgcolor="#666666">&nbsp;</TD>
<TD width="123" bgcolor="#FF9900">Test, test and test...</TD>
<TD width="9" bgcolor="#666666">&nbsp;</TD>
</TR>
</TABLE>
<TABLE border="0" width="173" bgcolor="#CC6600" cellspacing="0" cellpadding="0">
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
</TABLE>
</DIV>

<P>Problem: Tables inside a DIV get border=1 after moving the DIV. 
If you <A href="test2.html"><B>remove the border</B></A>
attribute from the tables, the border doesn't show up.</P>
</BODY>
</HTML>
