<html>
<head>
<script type="text/vbscript">
<!--
Dim counter

counter = 1

Sub ok(b,m)
    Call external.ok(b,m)
End Sub
-->
</script>
<script>
' Verifies that we're in VBScript although there is no type specified
If true then counter = counter+1
function inccounter(x)
    counter = counter+x
end function
</script>
<script type="text/javascript">
// We're in javascript
try {
    counter++;
    incCounter(2);
}catch(e) {
    ok(false, "got an exception " + e.message);
}
</script>
<script>
' And back to VBScript
If true then counter = counter+1

Sub runTest()
    Call ok(counter = 6, "counter = " & counter)
    Call ok(isNull(document.onkeyup), "document.onkeyup is not null")
    Call ok(document.formname.tagName = "FORM", "document.form.tagName = " & document.formname.tagName)
    Call ok(formname.tagName = "FORM", "form.tagName = " & formname.tagName)
    Call external.reportSuccess()
End Sub
</script>
<script type="text/javascript">
// We're in javascript
</script>
<body onload="If true then runTest()">
<form name="formname"></form>
</body>
</html>
