<html>
<head>
<title>Simple Table Painting</title>
    <style>
      table.testtable { border: 1px solid black; border-collapse:collapse; background-color: green; }
      table.testtable td { border: 1px solid black;  font-size: 20px; background-color: green; width:60px; height:60px; direction:rtl;}
      body { margin: 0px; }
    </style>
    <script>
        if (window.testRunner) {
            window.testRunner.waitUntilDone();
        }
        function repaintTest() {
            var testCell = document.getElementById("testcell");
            var offset = document.body.offsetTop;
            testCell.style.backgroundColor = "green";
            if (window.testRunner) {
                window.testRunner.notifyDone();
            }
        }
    </script>
    <script type="text/javascript" src="../repaint/resources/repaint.js"></script>
</head>
    <body onload="runRepaintTest()">
    <table class="testtable">
      <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr>
        <td></td>
        <td></td>
        <td style="background-color: red;" id="testcell"></td>
        <td></td>
        <td></td>
      </tr>
      <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
    </table>
    <script>

    </script>
  </body>
</html>
