<!--

 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>
    
    <link rel="stylesheet" type="text/css" href="./css/style.css"/>
    <link rel="stylesheet" type="text/css" href="./css/cordova-tizen.css" />

    <script type="text/javascript" src="cordova-2.9.0.js"></script>
    <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>
