<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>CSS Test: Run in - dynamically inserted rel pos inline should prevent running in</title>
  <link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu"/>
  <link rel="reviewer" title="Microsoft" href="http://www.microsoft.com/" />
  <link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#run-in"/>
  <link rel="match" href="run-in-text-ref.xht"/>
  <meta name="flags" content="dom" />
  <meta name="assert"
        content="Tests that run-ins don't run in if there's a dynamically
                 inserted rel pos inline between them and the block."/>
  <style type="text/css"><![CDATA[
    div { display: block; }
    .run-in { display: run-in; font-weight: bold }
    #target { border: 2px solid black; }
    .outer { position: relative; top: 50px; }
    .inner { position: relative; top: -50px; }
  ]]></style>
  <script type="text/javascript"><![CDATA[
    function flushLayout(elt) {
      elt.offsetWidth; /* Just undefined on non-elements, but that's ok */
      for (var i = 0; i < elt.childNodes.length; ++i) {
        flushLayout(elt.childNodes[i]);
      }
    }
    window.onload = function() {
      flushLayout(document.documentElement);
      var t = document.getElementById("target");
      var s = document.createElement("span");
      s.className = "inner";
      s.appendChild(document.createTextNode("Some text."));
      var s2 = document.createElement("span");
      s2.className = "outer";
      s2.appendChild(s);
      t.parentNode.insertBefore(s2, t);
    }
  ]]></script>
 </head>
 <body>
   <div class="run-in">Run-in header</div>
   <div id="target">Start of block.  The run-in header should NOT be inside the border around this block; it should be on a line by itself before the line containing "Some text".</div>
 </body>
</html>
