<!--

 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 charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, target-densityDpi=device-dpi">
    <meta name="description" content="Cordova Tizen basic template generated by Tizen Web IDE"/>

    <title>Tizen Web IDE - Tizen - Tizen basic Application</title>

    <script type="text/javascript" src="cordova-2.0.0.js"></script>
    
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    <script src="js/main.js"></script>
</head>

<body>
  <header>
    <hgroup>
      <h1>Tizen Cordova Application</h1>
      <h2>An empty template of a Cordova Tizen application</h2>
    </hgroup>
  </header>

  <nav>
    <ul>
       <li><a href="#">Home</a></li>
       <li><a href="#">About Us</a></li>
       <li><a href="#">Contact Us</a></li>
    </ul>
  </nav>

  <article>
    <header>
      <h1>
        <img src="images/ic_cordova_32.png" /> Application Name
      </h1>
    </header>
    <p>This is an empty template of a Cordova Tizen Web Application. Tizen will support multiple device categories:
      <ul>
        <li>smartphones, tablets and smart TVs
        <li>netbooks, in-vehicle infotainment devices
      </ul>
    </p>
    <section>
      <p>This is a basic section of a document.</p>
      <p>The following button displays live battery info by using the Cordova JavaScript API.</p>
      <div id="divbutton1">
        <button onclick="startBatteryInfoMonitoring();">Battery Info</button>
      </div>
    </section>
  </article>

  <footer>
    <p>&copy; 2012 Company Name. All rights reserved.</p>
  </footer>    
</body>
</html>
