<!DOCTYPE HTML>
<!--
         Licensed to the Apache Software Foundation (ASF) under one$
         or more contributor license agreements.  See the NOTICE file$
         distributed with this work for additional information$
         regarding copyright ownership.  The ASF licenses this file$
         to you 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.$
-->
<html>
  <head>
    <meta name="viewport" content="width=320; user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Cordova Tests</title>
	  <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title">
	  <script type="text/javascript" charset="utf-8" src="../cordova.js"></script>
      <script type="text/javascript" charset="utf-8" src="../main.js"></script>
  </head>
  <body onload="init();" id="stage" class="theme">
    <h1>Menu Test</h1>
    <div id="info">
        <h4>Platform: <span id="platform"> &nbsp;</span>,   Version: <span id="version">&nbsp;</span></h4>
        <h4>UUID: <span id="uuid"> &nbsp;</span>,   Name: <span id="name">&nbsp;</span></h4>
        <h4>Width: <span id="width"> &nbsp;</span>,   Height: <span id="height">&nbsp;
                   </span>, Color Depth: <span id="colorDepth"></span></h4>
     </div>
     <div id="info">
     <h4>The menu items should be:</h4>
     <li>Item1<br>
     <li>Item2<br>
     <li>Item3<br>
     <h4>There is also a context menu.  Touch and hold finger here to see:</h4>
     <li>Context Item1<br>
     </div>

  </body>
</html>
