<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style>
span.c1:nth-of-type(2n -1){ color: red; }
span.c1:nth-of-type(2n){ color: green; }
span.c2:nth-of-type(odd){ color: red; }
span.c2:nth-of-type(even){ color: green; }
span.c3:nth-of-type(n3){ color: red; }
span.c3:nth-of-type(foo){ color: green; }
span.c4:nth-of-type(2n3){ color: red; }
span.c4:nth-of-type(foon + bar ){ color: green; }

</style>

</head>
<body>
<p id="description"></p>
debug("These spans should alternate red and green");
<div id="test1"></div>
debug("These spans should alternate red and green");
<div id="test2"></div>
debug("These spans should be black");
<div id="test3"></div>
debug("These spans should be black");
<div id="test4"></div>
<br>
<script>
var i=1;
for(; i < 5; i++) {
    var str = "";
    var j=1;
    for (; j < 9; j++) {
        str += '<span class="c' + i + '" id="span' + i + j + '"> span </span>';
    }
    document.getElementById("test"+i).innerHTML = str;
}

</script>

<div id="console"></div>
<script>
description('This test passes if the nth-of-type can accept a parameter that is an+b, odd or even. But it does not accept any other parameter.');

el = document.querySelector("span.c1:nth-of-type(2n -1)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(255, 0, 0)'");

el = document.querySelector("span.c1:nth-of-type(2n)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(0, 128, 0)'");

el = document.querySelector("span.c2:nth-of-type(odd)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(255, 0, 0)'");

el = document.querySelector("span.c2:nth-of-type(even)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(0, 128, 0)'");

shouldThrow('document.querySelector("span.c3:nth-of-type(n3)")', '"Error: SyntaxError: DOM Exception 12"');

shouldThrow('document.querySelector("span.c3:nth-of-type(foo)")', '"Error: SyntaxError: DOM Exception 12"');

shouldThrow('document.querySelector("span.c3:nth-of-type(2n3)")', '"Error: SyntaxError: DOM Exception 12"');

shouldThrow('document.querySelector("span.c3:nth-of-type(foon + bar)")', '"Error: SyntaxError: DOM Exception 12"');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
