<script>
window.test_prop = 1;
</script>
<script>
onload = function() {
  document.open();
  document.write("<script>test_prop = 2; timeout_fired=false;<\/script>");
  document.close();

  setTimeout(function() {
    parent.tests[0].step(function() {
      parent.assert_equals(test_prop, 1, "Global scope from original window timeout");
      parent.assert_equals(window.test_prop, 2, "Window property from original window timeout")
    });
    parent.tests[1].step(function() {
      var t = get_this();
      parent.assert_equals(t.test_prop, 2, "Window property from original window timeout");
      parent.assert_equals(t, window, "Global scope from original window timeout");
    });
  }, 0);

  window.setTimeout(function() {
    parent.tests[2].step(function() {
      parent.assert_equals(test_prop, 1, "Global scope from original window timeout");
      parent.assert_equals(window.test_prop, 2, "Window property from original window timeout")
    });
    parent.tests[3].step(function() {
      var t = get_this();
      parent.assert_equals(t.test_prop, 2, "Window property from original window timeout");
      parent.assert_equals(t, window, "Global scope from original window timeout");
    });
    parent.tests_done();
  }, 100);
};

function get_this() {
  return this;
}
</script>
