<!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=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"> <!-- ISO-8859-1 -->
    <title>Cordova Mobile Spec</title>
    <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
    <style>
    table {
      width: 100%;
      border: 1px solid white;
    }

    th, td {
      width: 25%;
      text-align: center;
      vertical-align: top;
      border: 1px solid gray;
    }
    
    .highlight-w {
        color: white;
    }
    
    #stage.theme .small{
        width:50px;
        padding:1.2em 0;
    }
    
    input[type=text] {
        width: 70%;
        height: 30px;
    }
    
    .btn-dismiss {
        width: 20%;
        height: 30px;
    }
    
    #error {
        color: red;
    }

    </style>
    <script type="text/javascript" charset="utf-8" src="./window-onerror.js"></script>      
    <script type="text/javascript" charset="utf-8" src="../cordova-incl.js"></script>      
    <script type="text/javascript" charset="utf-8" src="./index.js"></script>      
  </head>
  <body id="stage" class="theme">
  
    <h1>Keyboard (iOS)</h1>

    <br />
    <div>
        <input type="text" placeholder="touch to see keyboard" /><button class="btn-dismiss">dismiss</button>
    </div>

    <h1>isVisible</h1>
    <br />
    <div class="btn large keyboardIsVisible">Keyboard.isVisible</div>
    
    <h1>API Tests</h1>
    <br />
    <div>
    The current state is highlighted below in the list. Touch a test <span class="highlight-w">"#" button</span> in the table, then touch a textfield (available at the top and bottom of the page) to see the results.
    </div>
    <ul>
        <li>shrinkView(<span id="shrinkView-arg" class="highlight-w">false</span>)</li>
        <li>hideFormAccessoryBar(<span id="hideFormAccessoryBar-arg" class="highlight-w">false</span>)</li>
        <li>disableScrollingInShrinkView(<span id="disableScrollingInShrinkView-arg" class="highlight-w">false</span>)</li>
    </ul>
    <!-- &#x2717; is X, &#10004; is check-mark -->
    <table>
        <tr>
            <th>Test #</th>
            <th>shrinkView</th>
            <th>hideForm&hellip;</th>
            <th>disableScrolling&hellip;</th>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_1">1</div>
            </td>
            <td>&#x2717;</td>
            <td>&#x2717;</td>
            <td>&#x2717;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_2">2</div>
            </td>
            <td>&#x2717;</td>
            <td>&#x2717;</td>
            <td class="highlight-w">&#10004;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_3">3</div>
            </td>
            <td>&#x2717;</td>
            <td class="highlight-w">&#10004;</td>
            <td class="highlight-w">&#10004;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_4">4</div>
            </td>
            <td>&#x2717;</td>
            <td class="highlight-w">&#10004;</td>
            <td>&#x2717;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_5">5</div>
            </td>
            <td class="highlight-w">&#10004;</td>
            <td>&#x2717;</td>
            <td>&#x2717;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_6">6</div>
            </td>
            <td class="highlight-w">&#10004;</td>
            <td>&#x2717;</td>
            <td class="highlight-w">&#10004;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_7">7</div>
            </td>
            <td class="highlight-w">&#10004;</td>
            <td class="highlight-w">&#10004;</td>
            <td class="highlight-w">&#10004;</td>
        </tr>
        <tr>
            <td class="highlight-w">
                <div class="btn small set_8">8</div>
            </td>
            <td class="highlight-w">&#10004;</td>
            <td class="highlight-w">&#10004;</td>
            <td>&#x2717;</td>
        </tr>
    </table>
    <br />
    <div>
        <input type="text" placeholder="touch to see keyboard" /><button class="btn-dismiss">dismiss</button>
    </div>
    <br />
    <div class="backBtn">Back</div>
    
  </body>
</html>
