<html>
<head>
<!--
Sorry for the hackery in this test. Currently, we have no elegant way to
catch Java errors and print out an intelligent response.
-->

<title>popup window</title>
<script>
function print(message) {
	var paragraph = document.createElement("p");
	paragraph.appendChild(document.createTextNode(message));
	document.getElementById("console").appendChild(paragraph);
}

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

    print(
        "applet.field returned " + 
        document.getElementById('applet').field
        );

    document.getElementById('applet').field += 1;
    print(
        "incremented applet.field by 1"
        );
        
    print(
        "applet.field returned " + 
        document.getElementById('applet').field
        );

    print(
        "applet.method() returned " + 
        document.getElementById('applet').method()
        );
}
</script>
</head>
<body onload="test();">
<applet id='applet' code="TestApplet.class" codebase="."></applet>
<div id='console'/>
</body>
</html>
