<!DOCTYPE html>
<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">
    <script type="text/javascript" charset="utf-8" src="../cordova.js"></script>      

      
<script type="text/javascript" charset="utf-8">

    var deviceReady = false;

    function interceptBackbutton() {
    	eventOutput("Back button intercepted");
    }
    function interceptMenubutton() {
    	eventOutput("Menu button intercepted");
    }
    function interceptSearchbutton() {
    	eventOutput("Search button intercepted");
    }
    function interceptResume() {
      eventOutput("Resume event intercepted");
    }
    function interceptPause() {
      eventOutput("Pause event intercepted");
    }
    function interceptOnline() {
      eventOutput("Online event intercepted");
    }
    function interceptOffline() {
      eventOutput("Offline event intercepted");
    }
    
    var eventOutput = function(s) {
        var el = document.getElementById("results");
        el.innerHTML = el.innerHTML + s + "<br>";
    };

    
    /**
     * Function called when page has finished loading.
     */
    function init() {
        document.addEventListener("deviceready", function() {
                deviceReady = true;
                console.log("Device="+device.platform+" "+device.version);
                eventOutput("deviceready event: "+device.platform+" "+device.version);
            }, false);
        window.setTimeout(function() {
        	if (!deviceReady) {
        		alert("Error: Apache Cordova did not initialize.  Demo will not run correctly.");
        	}
        },1000);
    }

</script>

  </head>
  <body onload="init();" 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" onclick="document.addEventListener('backbutton', interceptBackbutton, false);">Intercept backbutton</div>
    <div class="btn large" onclick="document.removeEventListener('backbutton', interceptBackbutton, false);">Stop intercept of backbutton</div>
    <div class="btn large" onclick="document.addEventListener('menubutton', interceptMenubutton, false);">Intercept menubutton</div>
    <div class="btn large" onclick="document.removeEventListener('menubutton', interceptMenubutton, false);">Stop intercept of menubutton</div>
    <div class="btn large" onclick="document.addEventListener('searchbutton', interceptSearchbutton, false);">Intercept searchbutton</div>
    <div class="btn large" onclick="document.removeEventListener('searchbutton', interceptSearchbutton, false);">Stop intercept of searchbutton</div>
    <div class="btn large" onclick="document.addEventListener('resume', interceptResume, false);">Intercept resume</div>
    <div class="btn large" onclick="document.removeEventListener('resume', interceptResume, false);">Stop intercept of resume</div>
    <div class="btn large" onclick="document.addEventListener('pause', interceptPause, false);">Intercept pause</div>
    <div class="btn large" onclick="document.removeEventListener('pause', interceptPause, false);">Stop intercept of pause</div>
    <div class="btn large" onclick="document.addEventListener('online', interceptOnline, false);">Intercept online</div>
    <div class="btn large" onclick="document.removeEventListener('online', interceptOnline, false);">Stop intercept of online</div>
    <div class="btn large" onclick="document.addEventListener('offline', interceptOffline, false);">Intercept offline</div>
    <div class="btn large" onclick="document.removeEventListener('offline', interceptOffline, false);">Stop intercept of offline</div>

    <h2> </h2><div class="backBtn" onclick="backHome();">Back</div>
  </body>
</html>
