<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.testRunner) {
        testRunner.dumpAsText();
        testRunner.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.testRunner)
        testRunner.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>
