<!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: PhoneGap 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>

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