<!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">
    <script type="text/javascript" charset="utf-8" src="../cordova-incl.js"></script>
  </head>
  <body id="stage" class="theme">
    <h1>InAppBrowser - Local URL</h1>
    <div id="info">
        You have successfully loaded a local URL
      </div>
      <div>User-Agent = <span id="u-a"></span></div>
      <div><a href="http://www.google.com">Visit Google</a></div>
      <div><a href="http://www.yahoo.com">Visit Yahoo</a></div>
      <div><a href="http://www.stluciadance.com/prospectus_file/sample.pdf">Check out my remote PDF</a></div>
      <div><a href="local.pdf">Check out my local PDF</a></div>
    <h2> </h2><div class="backBtn" onclick="backHome();">Back</div>
  </body>
  <script>
      function updateUserAgent() {
          document.getElementById("u-a").textContent = navigator.userAgent;
      }
      updateUserAgent();
      window.setInterval(updateUserAgent, 1500);
  </script>
</html>
