<!doctype html>
<html>
  <head>
    <title>maction</title>
    <script type="text/javascript">
      var mathmlNS = "http://www.w3.org/1998/Math/MathML";

      function test()
      {
        var maction = document.getElementsByTagNameNS(mathmlNS, "maction");

        // Setting the actiontype attribute
        maction[0].setAttribute("actiontype", "tooltip");
        maction[1].setAttribute("actiontype", "tooltip");
        maction[2].setAttribute("actiontype", "statusline");
        maction[3].removeAttribute("actiontype");

        // Setting the selection attribute
        maction[4].setAttribute("selection", "2");
        maction[5].setAttribute("selection", "4");
        maction[6].removeAttribute("selection");

        // Setting the child list
        maction[7].removeChild(maction[7].firstElementChild);
        var e = maction[8].firstElementChild;
        maction[8].insertBefore(e.cloneNode(true), e);
      }
    </script>

  </head>
  <body onload="test()">

    <!-- This test verifies which child of the maction element is selected after a DOM change. The page should render the same as the static version. -->

    <math>
      <maction selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="statusline" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>

    <math>
      <maction actiontype="toggle">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>

    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>
    <math>
      <maction actiontype="toggle" selection="3">
        <mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn>
      </maction>
    </math>

  </body>
</html>
