<html>
<head>
<script type="text/javascript">
function pass() {
    var contentElement = document.getElementById(test);

    if (contentElement.textContent == 'PASS') {
        contentElement.textContent = 'FAIL';
    } else if (contentElement.textContent == 'FAIL') {
        contentElement.textContent = 'PASS';
    }
}

function test() {
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }

    test = "p1";
    var e1 = document.createElement("script");
    e1.textContent = pass.toString() + " pass();";
    document.getElementsByTagName("head")[0].appendChild(e1);
    document.getElementsByTagName("head")[0].removeChild(e1);

    test = "p2";
    document.getElementsByTagName("head")[0].appendChild(e1);
    document.getElementsByTagName("head")[0].removeChild(e1);

    test = "p3";
    e3 = document.createElement("script");
    e3.src = "resources/script-reexecution-pass.js";
    e3.onload = function() { finish(); };
    document.getElementsByTagName("head")[0].appendChild(e3);
}

function finish() {
    test = "p4";

    e3.onload = "";
    document.getElementsByTagName("head")[0].removeChild(e3);
    document.getElementsByTagName("head")[0].appendChild(e3);

    if (window.layoutTestController)
        layoutTestController.notifyDone();
}
</script>
</head>
<body onload="test()">
<p>Created script element, script data passed as text content, appended: <span id="p1">FAIL</span></p>
<p>Removed element, readd element, remove again, script shouldn't have executed:<span id="p2">PASS</span></p>
<p>Created script element, loading external script content, appended: <span id="p3">FAIL</span></p>
<p>Removed element, readd element, script shouldn't have executed: <span id="p4">PASS</span></p>
</body>
</html>
