<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>

function checkForLeftoverProperties(string, object)
{
    var array = new Array;
    for (var property in object) {
        array.push(property);
    }
    array.sort();
    for (var i = 0; i < array.length; ++i) {
        var property = array[i];
        shouldBeFalse(string + '.' + property + ' == "LEFTOVER"');
    }
}

checkForLeftoverProperties("history", window.history);
checkForLeftoverProperties("location", location);
checkForLeftoverProperties("locationbar", locationbar);
checkForLeftoverProperties("menubar", menubar);
checkForLeftoverProperties("personalbar", personalbar);
checkForLeftoverProperties("screen", screen);
checkForLeftoverProperties("scrollbars", scrollbars);
checkForLeftoverProperties("statusbar", statusbar);
checkForLeftoverProperties("toolbar", toolbar);

shouldBeUndefined('window.event');
</script>
<script src="../../../../resources/js-test-post.js"></script>
<script>
if (window.testRunner)
    testRunner.notifyDone();
</script>
</body>
</html>
