<!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>
    <!-- Inject CSP -->
    <script type="text/javascript" src="../csp-incl.js"></script>

    <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>
