<!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">
    <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>Events</h1>
    <div id="info">
        <b>Results:</b><br>
        <span id="results"></span>
    </div>
    <input type="text" value="Type here to test events when fields are focused" />
    <h2>Action</h2>
    <div class="btn large interceptBackButton">Intercept backbutton</div>
    <div class="btn large stopInterceptOfBackButton">Stop intercept of backbutton</div>
    <div class="btn large interceptMenuButton">Intercept menubutton</div>
    <div class="btn large stopInterceptOfMenuButton">Stop intercept of menubutton</div>
    <div class="btn large interceptSearchButton">Intercept searchbutton</div>
    <div class="btn large stopInterceptOfSearchButton">Stop intercept of searchbutton</div>
    <div class="btn large interceptVolumeUpButton">Intercept volumeup</div>
    <div class="btn large stopInterceptOfVolumeUpButton">Stop intercept of volumeup</div>
    <div class="btn large interceptVolumeDownButton">Intercept volumedown</div>
    <div class="btn large stopInterceptOfVolumeDownButton">Stop intercept of volumedown</div>
    <div class="btn large interceptResume">Intercept resume</div>
    <div class="btn large stopInterceptOfResume">Stop intercept of resume</div>
    <div class="btn large interceptPause">Intercept pause</div>
    <div class="btn large stopInterceptOfPause">Stop intercept of pause</div>
    <div class="btn large interceptOnline">Intercept online</div>
    <div class="btn large stopInterceptOfOnline">Stop intercept of online</div>
    <div class="btn large interceptOffline">Intercept offline</div>
    <div class="btn large stopInterceptOfOffline">Stop intercept of offline</div>

    <h2> </h2><div class="backBtn">Back</div>
  </body>
</html>
