<!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-pre.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'");

      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>
