<!DOCTYPE html>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<!--
  ONOS UI - single page web app
  Version 1.1

  @author Simon Hunt
  -->
<html>
<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" href="img/onos-logo.png">
    <title>ONOS</title>

    <!-- Third party library code included here -->
    <!--TODO: use the minified version of d3, once debugging is complete -->
    <script src="tp/d3.js"></script>
    <script src="tp/topojson.v1.min.js"></script>
    <script src="tp/jquery-2.1.1.min.js"></script>

    <!-- ONOS UI Framework included here -->
    <script src="onos.js"></script>

    <!-- Framework and library stylesheets included here -->
    <link rel="stylesheet" href="base.css">
    <link rel="stylesheet" href="onos.css">
    <link rel="stylesheet" href="onosMast.css">
    <link rel="stylesheet" href="onosFloatPanel.css">
    <link rel="stylesheet" href="onosFlash.css">
    <link rel="stylesheet" href="onosQuickHelp.css">

    <!-- This is where contributed stylesheets get INJECTED -->
    <!-- TODO: replace with template marker and inject refs server-side -->
    <link rel="stylesheet" href="topo.css">
</head>
<body>
    <div id="frame">
        <div id="mast">
            <!-- NOTE: masthead injected here by mast.js -->
        </div>
        <div id="view">
            <!-- NOTE: views injected here by onos.js -->
        </div>
        <div id="floatPanels">
            <!-- NOTE: floating panels injected here, as needed -->
            <!--       see onos.ui.addFloatingPanel             -->
        </div>
        <div id="alerts">
            <!-- NOTE: alert content injected here, as needed -->
        </div>
        <div id="feedback">
            <!-- NOTE: feedback flashes to user -->
        </div>
        <div id="quickhelp">
            <!-- NOTE: key bindings and mouse gesture help -->
        </div>
    </div>

    <!-- Initialize the UI...-->
    <script type="text/javascript">
        var ONOS = $.onos({
            comment: 'configuration options',
            theme: 'dark',
            startVid: 'topo'
        });
    </script>

    <!-- Library modules included here -->
    <script src="d3Utils.js"></script>
    <script src="geometry.js"></script>
    <script src="glyphs.js"></script>

    <!-- Framework modules included here -->
    <script src="onosMast.js"></script>
    <script src="onosFlash.js"></script>
    <script src="onosQuickHelp.js"></script>

    <!-- View Module Templates; REMOVE THESE LINES, FOR PRODUCTION -->
    <script src="module-svg-template.js"></script>
    <script src="module-div-template.js"></script>

    <!-- Sample Views; REMOVE THESE LINES, FOR PRODUCTION -->
    <script src="sample.js"></script>
    <script src="sampleRadio.js"></script>
    <script src="sampleKeys.js"></script>
    <script src="sampleHash.js"></script>

    <!-- Contributed (application) views injected here -->
    <!-- TODO: replace with template marker and inject refs server-side -->
    <script src="topo.js"></script>

    <!-- finally, build the UI-->
    <script type="text/javascript">
        $(ONOS.buildUi);
    </script>

</body>
</html>
