Upgrade to jQuery Mobile Alpha 4.1 in production mode
[busui.git] / include / common-template.inc.php
blob:a/include/common-template.inc.php -> blob:b/include/common-template.inc.php
<?php <?php
   
  /*
  * Copyright 2010,2011 Alexander Sadleir
   
  Licensed 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.
  */
   
// Copyright 2009 Google Inc. All Rights Reserved. // Copyright 2009 Google Inc. All Rights Reserved.
$GA_ACCOUNT = "MO-22173039-1"; $GA_ACCOUNT = "MO-22173039-1";
$GA_PIXEL = "/lib/ga.php"; $GA_PIXEL = "/lib/ga.php";
function googleAnalyticsGetImageUrl()  
{ function googleAnalyticsGetImageUrl() {
global $GA_ACCOUNT, $GA_PIXEL; global $GA_ACCOUNT, $GA_PIXEL;
$url = ""; //if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return "";
$url.= $GA_PIXEL . "?"; $url = "";
$url.= "utmac=" . $GA_ACCOUNT; $url.= $GA_PIXEL . "?";
$url.= "&utmn=" . rand(0, 0x7fffffff); $url.= "utmac=" . $GA_ACCOUNT;
$referer = $_SERVER["HTTP_REFERER"]; $url.= "&utmn=" . rand(0, 0x7fffffff);
$query = $_SERVER["QUERY_STRING"]; $referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "");
$path = $_SERVER["REQUEST_URI"]; $query = $_SERVER["QUERY_STRING"];
if (empty($referer)) { $path = $_SERVER["REQUEST_URI"];
$referer = "-"; if (empty($referer)) {
} $referer = "-";
$url.= "&utmr=" . urlencode($referer); }
if (!empty($path)) { $url.= "&utmr=" . urlencode($referer);
$url.= "&utmp=" . urlencode($path); if (!empty($path)) {
} $url.= "&utmp=" . urlencode($path);
$url.= "&guid=ON"; }
return str_replace("&", "&amp;", $url); $url.= "&guid=ON";
} return str_replace("&", "&amp;", $url);
function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) }
{  
echo ' function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) {
  global $basePath, $GTFSREnabled;
  echo '
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>' . $pageTitle . '</title> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="google-site-verification" <title>' . $pageTitle . ' - Canberra Bus Timetable</title>
content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />'; <meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />
if ($datepicker) echo '<link rel="stylesheet" href="css/jquery.ui.datepicker.mobile.css" />'; <link rel="dns-prefetch" href="//code.jquery.com">
if (isDebugServer()) { <link rel="dns-prefetch" href="//ajax.googleapis.com">
echo '<link rel="stylesheet" href="css/jquery.mobile-1.0a4.css" /> <link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />';
  $jqmVersion = "1.0";
<script type="text/javascript" src="js/jquery-1.5.js"></script> if (isDebugServer()) {
<script>$(document).bind("mobileinit", function(){ $jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css";
  $jqjs = $basePath . "js/jquery-1.6.4.min.js";
  $jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js";
   
  $jqmcss = $basePath . "css/jquery.mobile-b90eab4935.css";
  $jqmjs = $basePath . "js/jquery.mobile-b90eab4935.js";
  } else {
  $jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css";
  $jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js";
  $jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js";
   
  }
  echo '<link rel="stylesheet" href="' . $jqmcss . '" />
  <script src="' . $jqjs . '"></script>
  <script>$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false; $.mobile.ajaxEnabled = false;
}); });
</script> </script>
<script type="text/javascript" src="js/jquery.mobile-1.0a4.js"></script>'; <script src="' . $jqmjs . '"></script>
}  
else { <script src="' . $basePath . 'js/jquery.ui.core.min.js"></script>
echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" /> <script src="' . $basePath . 'js/jquery.ui.position.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script>
<script>$(document).bind("mobileinit", function(){ <script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script>
$.mobile.ajaxEnabled = false; <script>
}); $(function() {
</script> $( "#geolocate" ).autocomplete({
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>'; source: "lib/autocomplete.php",
} minLength: 2
if ($datepicker) { });
echo '<script> $( "#from" ).autocomplete({
//reset type=date inputs to text source: "lib/autocomplete.php",
$( document ).bind( "mobileinit", function(){ minLength: 2
$.mobile.page.prototype.options.degradeInputs.date = true; });
}); $( "#to" ).autocomplete({
</script> source: "lib/autocomplete.php",
<script src="js/jQuery.ui.datepicker.js"></script>'; minLength: 2
} });
echo '<style type="text/css"> });
.ui-navbar { </script>';
width: 100%; echo '<style type="text/css">';
} if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android'))
.ui-btn-inner { echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b,
white-space: normal !important; .ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d,
} .ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e,
.ui-li-heading { .ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a {
white-space: normal !important; text-shadow: none;
} box-shadow: none;
.ui-listview-filter { -webkit-box-shadow: none;
margin: 0 !important; }';
} echo '</style>';
.ui-icon-navigation { echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />';
background-image: url(css/images/113-navigation.png); if (isIOSDevice()){
background-position: 1px 0; echo '<meta name="apple-mobile-web-app-capable" content="yes" />
}  
#footer {  
text-size: 0.75em;  
text-align: center;  
}  
body {  
background-color: #F0F0F0;  
}  
#jqm-homeheader {  
text-align: center;  
}  
.viaPoints {  
display: none;  
text-size: 0.2em;  
}  
.min-width-480px .viaPoints {  
display: inline;  
}  
#extrainfo {  
visibility: hidden;  
display: none;  
}  
// source http://webaim.org/techniques/skipnav/  
#skip a, #skip a:hover, #skip a:visited  
{  
position:absolute;  
left:0px;  
top:-500px;  
width:1px;  
height:1px;  
overflow:hidden;  
}  
   
#skip a:active, #skip a:focus  
{  
position:static;  
width:auto;  
height:auto;  
}  
</style>';  
if (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod')) {  
echo '<meta name="apple-mobile-web-app-capable" content="yes" />  
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-startup-image" href="startup.png" /> <link rel="apple-touch-startup-image" href="startup.png" />
<link rel="apple-touch-icon" href="apple-touch-icon.png" />'; <link rel="apple-touch-icon" href="apple-touch-icon.png" />';
} }
if ($geolocate) { if ($geolocate) {
echo "<script> echo "<script>
   
function success(position) { function success(position) {
$('#error').val('Location now detected. Please wait for data to load.'); $('#error').val('Location now detected. Please wait for data to load.');
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude); $('#geolocate').val(position.coords.latitude+','+position.coords.longitude);
$.ajax({ url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); $.ajax({ async: false,
location.reload(true); success: function(){
  location.reload(true);
  },
  url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude });
} }
function error(msg) { function error(msg) {
$('#error').val('Error: '+msg); $('#error').val('Error: '+msg);
} }
   
function geolocate() { function geolocate() {
if (navigator.geolocation) { if (navigator.geolocation) {
var options = { var options = {
enableHighAccuracy: true, enableHighAccuracy: true,
timeout: 60000, timeout: 60000,
maximumAge: 10000 maximumAge: 10000
} }
navigator.geolocation.getCurrentPosition(success, error, options); navigator.geolocation.getCurrentPosition(success, error, options);
} }
} }
$(document).ready(function() { $(document).ready(function() {
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;}); $('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;});
$('#here').show(); $('#here').show();
}); });
"; ";
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") echo "geolocate();"; if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "")
echo "</script> "; echo "geolocate();";
} echo "</script> ";
if (isAnalyticsOn()) echo ' }
  if (isAnalyticsOn())
  echo '
<script type="text/javascript">' . " <script type="text/javascript">' . "
   
var _gaq = _gaq || []; var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-22173039-1']); _gaq.push(['_setAccount', 'UA-22173039-1']);
_gaq.push(['_trackPageview']); _gaq.push(['_trackPageview']);
  _gaq.push(['_trackPageLoadTime']);
</script>"; </script>";
echo '</head> echo '</head>
<body> <body>
<div id="skip"> <div id="skip">
<a href="#maincontent">Skip to content</a> <a href="#maincontent">Skip to content</a>
</div> </div>
'; ';
if ($opendiv) { if ($opendiv) {
echo '<div data-role="page"> echo '<div data-role="page">
<script>  
$(document).ready(function ()  
{  
document.title = "' . $pageTitle . '";  
});  
</script>  
<div data-role="header" data-position="inline"> <div data-role="header" data-position="inline">
<a href="' . $_SERVER["HTTP_REFERER"] . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a> <a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a>
<h1>' . $pageTitle . '</h1> <h1>' . $pageTitle . '</h1>
<a href="/index.php" data-icon="home" class="ui-btn-right">Home</a> <a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a>
</div><!-- /header --> </div><!-- /header -->
<a name="maincontent" id="maincontent"></a> <a name="maincontent" id="maincontent"></a>
<div data-role="content"> '; <div data-role="content"> ';
} if ($GTFSREnabled) {
} $overrides = getServiceOverride();
function include_footer() if (isset($overrides['service_id'])) {
{ if ($overrides['service_id'] == "noservice") {
echo '<div id="footer"><a href="about.php">About/Contact Us</a>&nbsp;<a href="feedback.php">Feedback/Bug Report</a></a>'; echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a
echo '</div>'; href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>';
if (isAnalyticsOn()) { } else {
echo "<script> (function() { echo '<div id="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>';
  }
  }
  $serviceAlerts = getServiceAlertsAsArray("agency", "0");
  if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) {
  foreach ($serviceAlerts['entity'] as $entity) {
  echo "<div id='servicewarning'>" . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['start'])) . " to " . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['end'])) . "{$entity['alert']['header_text']['translation'][0]['text']}<br>Warning: {$entity['alert']['description_text']['translation'][0]['text']}
  <br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>";
  }
  }
  }
  }
  }
   
  function include_footer() {
  global $basePath;
  echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a>&nbsp;<a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a>&nbsp;<a href="' . $basePath . 'privacy.php">Privacy Policy</a>';
  echo '</div>';
  if (isAnalyticsOn()) {
  echo "<script> (function() {
var ga = document.createElement('script'); ga.type = var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true; 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s); s.parentNode.insertBefore(ga, s);
})();</script>"; })();</script>";
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(); $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>'; echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>';
} }
} echo "\n</div></div></body></html>";
function timePlaceSettings($geolocate = false) }
{ function timeSettings() {
global $service_periods; global $service_periods;
$geoerror = false; echo '<div id="settings" data-role="collapsible" data-collapsed="true">
if ($geolocate == true) { <h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3>
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == ""; <form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET">
} <input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/>
if ($geoerror) {  
echo '<div id="error">Sorry, but your location could not currently be detected. <input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/>
  <input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/>
  <div class="ui-body">
  <div data-role="fieldcontain">
  <label for="time"> Time: </label>
  <input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/>
  <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a>
  </div>
  <div data-role="fieldcontain">
  <label for="service_period"> Service Period: </label>
  <select name="service_period" id="service_period">';
  foreach ($service_periods as $service_period) {
  echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>';
  }
  echo '</select>
  <a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a>
  </div>
   
  <input type="submit" value="Update"/>
  </div></form>
  </div>';
  }
  function placeSettings() {
   
  $geoerror = false;
  $geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
   
  echo '<div id="error">';
  if ($geoerror) {
  echo 'Sorry, but your location could not currently be detected.
Please allow location permission, wait for your location to be detected, Please allow location permission, wait for your location to be detected,
or enter an address/co-ordinates in the box below.</div>'; or enter an address/co-ordinates in the box below.';
} }
echo '<div data-role="collapsible" data-collapsed="' . !$geoerror . '"> echo '</div>';
<h3>Change Time/Place (' . (isset($_SESSION['time']) ? $_SESSION['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> echo '<div id="settings" data-role="collapsible" data-collapsed="' . !$geoerror . '">
  <h3>Change Location...</h3>
<form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post"> <form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post">
<div class="ui-body"> <div class="ui-body">
<div data-role="fieldcontain"> <div data-role="fieldcontain">
<label for="geolocate"> Current Location: </label> <label for="geolocate"> Current Location: </label>
<input type="text" id="geolocate" name="geolocate" value="' . (isset($_SESSION['lat']) && isset($_SESSION['lon']) ? $_SESSION['lat'] . "," . $_SESSION['lon'] : "Enter co-ordinates or address here") . '"/> <a href="#" style="display:none" name="here" id="here">Here?</a>