<!--

 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.

-->

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,maximum-scale=1.0,initial-scale=1.0" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Cordova Mobile Spec</title>
      <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
      <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>Page2 App</h1>
    <h2>This is page 2 of a Apache Cordova app</h2>
    <div id="info">
        <h4>Platform: <span id="platform">  </span></h4>
        <h4>Version: <span id="version"> </span></h4>
        <h4>UUID: <span id="uuid">  </span></h4>
        <h4>Name: <span id="name"> </span></h4>
        <h4>Width: <span id="width">  </span>,   Height: <span id="height"> 
                   </span>, Color Depth: <span id="colorDepth"></span></h4>
     </div>
      <div ><button class="backBtn" onclick="backHome();">Back</button></div>
  </body>
</html>
