<!--

 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="description" content="A Cordova Tizen Web UI FW single-page template generated by Tizen Web IDE"/>

    <title>Tizen Web IDE - Template - Cordova Tizen - Tizen Web UI Framework - Single-Page</title>
    <!--NOTE:
        jquery.js and web-ui-fw.js must be included.
        DO NOT REMOVE below code!
    -->
    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
    <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js"
        data-framework-theme="tizen-white"></script>

    <!--NOTE:
        Additional scripts and css files are to be placed here.
        You can use jQuery namespace($) and all functionalities in jQuery
        in your script.  For example:

            <script src="main.js"></script>
            <link rel="stylesheet" href="my.css">

        When you want to manipulate elements in your code, you have to
        use domReady for your code to work properly, like this;

            domReady(function(){ ... });
    -->
    
    <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 type="text/javascript" src="./js/main.js"></script>
    
</head>

<body>
    <div data-role="page">
        <div data-role="header" data-position="fixed">
            <h1>Cordova Single-Page Application </h1>
        </div><!-- /header -->

        <div data-role="content">
            <p>This is a Cordova single page boilerplate template that you can copy to build your first Cordova Tizen Web UI Framework page.</p>
            <div id="myButton" data-role="button" data-inline="true">Battery Info</div>
            <div id="myInfo" data-role="content" data-inline="true" hidden="hidden">
            	<p>Battery Info.</p>
            </div>
        </div>
        </div><!-- /content -->

        <div data-role="footer" data-position="fixed">
            <h4>Footer content</h4>
        </div><!-- /footer -->
    </div><!-- /page -->
</body>
</html>
