<!--
 * 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>
<title>testing</title>
<script src="/modjewel-require.js"></script>
<script type="text/javascript">require("modjewel").warnOnRecursiveRequire(true)</script>
<script src="/scooj.transportd.js"></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/target/Console.transportd.js"></script>
<script src="/add-css-properties.js"></script>
<script src="/weinre/target/WiApplicationCacheImpl.transportd.js"></script>
<script src="/weinre/target/WiBrowserDebuggerImpl.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/WiDebuggerImpl.transportd.js"></script>
<script src="/weinre/target/WiDOMImpl.transportd.js"></script>
<script src="/weinre/target/WiDOMStorageImpl.transportd.js"></script>
<script src="/weinre/target/WiFileSystemImpl.transportd.js"></script>
<script src="/weinre/target/WiInjectedScriptImpl.transportd.js"></script>
<script src="/weinre/target/WiInspectorImpl.transportd.js"></script>
<script src="/weinre/target/WiNetworkImpl.transportd.js"></script>
<script src="/weinre/target/WiProfilerImpl.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="/interfaces/all-json-idls.js"></script>

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

<style>
h1 {
    color: green;
}

.blue {
    color: blue;
}

#metrics {
    margin:   1em;
    border:   0.2em solid;
    padding:  3em;
}
</style>
</head>

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

<div id="metrics">a div</div>
</body>

</html>
