<!DOCTYPE html>
<html>
<!--
	Test for jQuery.holdReady. Needs to be a
	standalone test since it deals with DOM
	ready.
-->
<head>
	<title>
		jQuery.holdReady Test
	</title>
	<style>
		div { margin-top: 10px; }
		#output { background-color: green }
		#expectedOutput { background-color: green }
	</style>
	<script src="../jquery.js"></script>
	<script src="./iframeTest.js"></script>

	<!-- Load the script loader that uses
		jQuery.readyWait -->

	<script type="text/javascript">
	(function() {
		var released = false;
		// Hold on jQuery!
		jQuery.holdReady( true );

		setTimeout( function() {
			released = true;
			jQuery.holdReady( false );
		}, 300 );

		jQuery(function() {
			jQuery( "#output" ).text( "Ready called, holdReady released: " + released );
			startIframeTest( released );
		});
	})();
	</script>
</head>
<body>
	<h1>
		jQuery.holdReady Test
	</h1>
	<p>
		This is a test page for jQuery.readyWait and jQuery.holdReady,
		see
		<a href="https://bugs.jquery.com/ticket/6781">trac-6781</a>
		and
		<a href="https://bugs.jquery.com/ticket/8803">trac-8803</a>.
	</p>
	<p>
	Test for jQuery.holdReady, which can be used
	by plugins and other scripts to indicate something
	important to the page is still loading and needs
	to block the DOM ready callbacks that are registered
	with jQuery.
	</p>
	<p>
	Script loaders are the most likely kind of script
	to use jQuery.holdReady, but it could be used by
	other things like a script that loads a CSS file
	and wants to pause the DOM ready callbacks.
	</p>
	<p>
	<strong>Expected Result</strong>: The text
	<span id="expectedOutput">It Worked!</span>
	appears below after about <strong>2 seconds.</strong>
	</p>
	<p>
	If there is an error in the console,
	or the text does not show up, then the test failed.
	</p>
	<div id="output"></div>
</body>
</html>
