<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function debug(str) {
    var c = document.getElementById('console')
    c.appendChild(document.createTextNode(str + '\n'));
}

var numErrs = 0;

function imageLoaded() {
    if (!i2.complete) {
        debug('FAILURE: image loaded but complete is false!');
        numErrs++;
    }
    
    if (i2.width != 52) {
        debug('FAILURE: image width should be 52, was ' + i2.width)
        numErrs++;
    }

    if (i2.height != 64) {
        debug('FAILURE: image width should be 64, was ' + i2.height)
        numErrs++;
    }

    if (numErrs == 0) {
        debug('SUCCESS!')
    }
    
    if (window.layoutTestController) { 
        layoutTestController.notifyDone();
    }
}

function runTests() {
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }
    
    i1 = new Image();
    if (!i1.complete) {
        debug('FAILURE: Empty image should have complete set to true.');
        numErrs++;
    }
    
    i2 = new Image()
    i2.onload = imageLoaded;
    i2.src = 'resources/apple.gif';
}

</script>
</head>
<body onload="runTests();">
<p>
This tests that the Image JavaScript object works as expected. If the test is successful, the test "SUCCESS" should be shown below.
</p>
<pre id="console">
</pre>
</body>
</html>
