<!--
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 *
 * Copyright (c) 2010, 2011 IBM Corporation
-->

<html>
<head>
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height">
<title>weinre demo</title>
<link rel="stylesheet" href="weinre-demo.css">
<script>window.WeinreServerURL = location.protocol + "//" + location.hostname + ":" + location.port</script>
<script>try {window.WeinreServerId = location.hash.split("#")[1]} catch(e) {window.WeinreServerId = "anonymous"}</script>
<script src="/modjewel-require.js"></script>
<script type="text/javascript">require("modjewel").warnOnRecursiveRequire(true)</script>
<script src="/weinre/common/Ex.transportd.js"></script>
<script src="/weinre/common/StackTrace.transportd.js"></script>
<script src="/weinre/common/Weinre.transportd.js"></script>
<script src="/weinre/common/IDLTools.transportd.js"></script>
<script src="/weinre/common/MessageDispatcher.transportd.js"></script>
<script src="/weinre/common/WebSocketXhr.transportd.js"></script>
<script src="/weinre/common/Binding.transportd.js"></script>
<script src="/weinre/common/Callback.transportd.js"></script>
<script src="/weinre/common/EventListeners.transportd.js"></script>
<script src="/weinre/common/IDGenerator.transportd.js"></script>
<script src="/weinre/common/MethodNamer.transportd.js"></script>
<script src="/weinre/common/HookLib.transportd.js"></script>
<script src="/weinre/target/Console.transportd.js"></script>
<script src="/add-css-properties.js"></script>
<script src="/weinre/target/CheckForProblems.transportd.js"></script>
<script src="/weinre/target/WiConsoleImpl.transportd.js"></script>
<script src="/weinre/target/WiCSSImpl.transportd.js"></script>
<script src="/weinre/target/WiDatabaseImpl.transportd.js"></script>
<script src="/weinre/target/WiDOMImpl.transportd.js"></script>
<script src="/weinre/target/WiDOMStorageImpl.transportd.js"></script>
<script src="/weinre/target/WiInspectorImpl.transportd.js"></script>
<script src="/weinre/target/WiRuntimeImpl.transportd.js"></script>
<script src="/weinre/target/WeinreTargetEventsImpl.transportd.js"></script>
<script src="/weinre/target/NodeStore.transportd.js"></script>
<script src="/weinre/target/CSSStore.transportd.js"></script>
<script src="/weinre/target/InjectedScriptHostImpl.transportd.js"></script>
<script src="/weinre/target/Target.transportd.js"></script>
<script src="/weinre/target/ElementHighlighter.transportd.js"></script>
<script src="/weinre/target/InjectedScript.js"></script>
<script src="/weinre/target/Timeline.transportd.js"></script>
<script src="/weinre/target/SqlStepper.transportd.js"></script>
<script src="/weinre/target/WeinreExtraClientCommandsImpl.transportd.js"></script>
<script src="/weinre/target/HookSites.transportd.js"></script>
<script src="/weinre/target/ExceptionalCallbacks.transportd.js"></script>
<script src="/interfaces/all-json-idls-min.js"></script>
<script src="weinre-demo.js"></script>

<script type="text/javascript">
    require("weinre/common/Weinre").showNotImplemented()
    require('weinre/target/Target').main()
</script>
</head>

<body onload="onLoad()">
<input id="button-start-stuff" type="button" value="start stuff">

<h1>this is a green h1</h1>
<h1 class="blue">this is a blue h1</h1>
<h1 style="color:red">this is a red h1</h1>
<p>Some text, <i>some italic text</i>, and <b>some bold text</b>.

<hr>
<p>test exceptions in callbacks:
<div style="margin-left:1em">
    <input id="button-error-DOM-event"    type="button" value="DOM addEventHandler">
<br><input id="button-error-window-event" type="button" value="window addEventHandler">
<br><input id="button-error-XHR-event"    type="button" value="XHR addEventHandler">
<br><input id="button-error-setTimeout"   type="button" value="setTimeout()">
<br><input id="button-error-setInterval"  type="button" value="setInterval()">
</div>

<hr>
<p><input id="button-clear-output" type="button" value="clear output">
<div id="output"></div>
</body>

</html>
