<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html>
<head>
<title>CSS Test: :nth-child(n) selector</title>
<style type="text/css">
div div:nth-child(n) { color: green; }
</style>
<script>
if (window.layoutTestController)
  window.layoutTestController.dumpAsText()
</script>
</head>
<body>
<p>The test passes if all DIVs are green.</p>
<div id="test">
<div>DIV1</div>
<div>DIV2</div>
</div>
<div id="testresult" style="color: blue">Running</div>
<script type="text/javascript">
function ArrayContains(array, value, ci)
{
  ci = ci == true ? true : false;
  for (var i = 0; i < array.length; i++)
  {
    if (ci && array[i].toLowerCase() == value.toLowerCase())
    {
      return true;
    }
    else if (array[i] == value)
    {
      return true;
    }
  }
  return false;
}

function TestCase()
{
  try
  {
    var greenValues = new Array("green", "#008000", "rgb(0, 128, 0)");

    var elem = document.getElementById("test");
    var val = getComputedStyle(elem.children[0], null).getPropertyValue("color");
    if (ArrayContains(greenValues, val, false))
    {
      document.getElementById("testresult").innerHTML = "Pass";
      return;
    }
  }catch(e){}
  document.getElementById("testresult").innerHTML = "Fail";
}
TestCase();
</script>
</body>
</html>