<html>
<head></head>
<body>

<p>Test bug 12914 :  Trying to access XMLHttpRequest.responseText or responseXML when they are not available should raise an exception </p>
<p>Should see "PASS" four times:</p>
<div id="ans"></div>

<script type="text/javascript">
function log(message) {
    document.getElementById("ans").appendChild(document.createTextNode(message));
    document.getElementById("ans").appendChild(document.createElement("br"));
}

function test(num)
{
    var xhr;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else {
        try {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (ex) {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    xhr.onreadystatechange = function () {
        if (this.readyState == num) {
            ++finishedTests;
            try {
                // Force evaluation for Opera
                var response = this.responseXML;
                log("PASS");
            } catch (e) {
                log("FAILED");
            }
        }
        
        if (finishedTests == 4 && window.layoutTestController)
            layoutTestController.notifyDone();
    }

    xhr.open("GET", "resources/1251.html", true);
    if (num != 1)
        xhr.send(null);
}

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

var finishedTests = 0;

for (i = 1; i < 5; i++) {
    test(i);
}

</script>
</body>
</html>
