<!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" xml:lang="en"><head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="resources/basic.css" type="text/css">
  <link rel="stylesheet" href="resources/small.css" type="text/css">
  <link rel="stylesheet" href="resources/normal.css" type="text/css">
  <link rel="alternate stylesheet" href="resources/high.css" title="Different layout" type="text/css">
  <script src="../../resources/js-test.js"></script>
</head>
<body>
  <h1 id="firstH1">Alternate stylesheets</h1>
  
  <p id="textLine">This document has 3 stylesheets, with 1 alternate stylesheet which now has the added <code>title</code> 
    attribute. It should:</p>
  
  <ul>
    <li>Have a green border at the top of the page</li>
    <li>An underlined <code>H1</code></li>
    <li>12px text</li>
  </ul>

  <script>
    description("Alternate stylesheet (link) title test 3");

    if (window.testRunner)
      testRunner.dumpAsText();

    window.onload = function () {
      element = document.getElementById("firstH1");
      shouldBe("getComputedStyle(element).getPropertyValue('text-decoration')", "'underline solid rgb(51, 51, 51)'");

      element = document.getElementById("textLine");
      shouldBe("getComputedStyle(element).getPropertyValue('font-size')", "'12px'");

      shouldBe("getComputedStyle(document.body).getPropertyValue('border-top-color')", "'rgb(0, 128, 0)'");

      wasPostTestScriptParsed = true;
      finishJSTest();
    }
  </script>

</body>
</html>
