Fix html validation errors on trip view
Fix html validation errors on trip view

--- a/css/local.css.php
+++ b/css/local.css.php
@@ -55,7 +55,7 @@
     visibility: hidden;
     display: none;
     }
-    #servicewarning {
+    .servicewarning {
     padding: 1em;
     margin-bottom: 0.5em;
     text-size: 0.2em;

--- a/include/common-geo.inc.php
+++ b/include/common-geo.inc.php
@@ -58,8 +58,8 @@
     $output = "";
     if ($collapsible)
         $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';
-   if (isIOSDevice()) $output.= '<img class="hiresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&amp;' . $markers . '&amp;scale=2&amp;sensor=true" width=' . $width . ' height=' . $height . '>';
- else $output.= '<img class="lowresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&amp;' . $markers . '&amp;scale=1&amp;format=jpg&amp;sensor=true" width=' . $width . ' height=' . $height . '>';
+   if (isIOSDevice()) $output.= '<img class="hiresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&amp;' . $markers . '&amp;scale=2&amp;sensor=true" width=' . $width . ' height=' . $height . ' alt="map of stop location">';
+ else $output.= '<img class="lowresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&amp;' . $markers . '&amp;scale=1&amp;format=jpg&amp;sensor=true" width=' . $width . ' height=' . $height . ' alt="map of stop location">';
    
     if ($collapsible)
         $output.= '</div>';

--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -176,35 +176,35 @@
             $overrides = getServiceOverride();
             if (isset($overrides['service_id'])) {
                 if ($overrides['service_id'] == "noservice") {
-                    echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a 
+                    echo '<div class="servicewarning">Buses are <strong>not running today</strong> 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>';
                 } else {
-                    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>';
+                    echo '<div class="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 = Array();
             $globalAlerts = getServiceAlertsAsArray("agency", "0");
-            if ($globalAlerts != nullarray) {
+            if ($globalAlerts != null) {
                 // echo "getting alerts due to network wide";
                 $serviceAlerts = array_merge($serviceAlerts, $globalAlerts);
             }
             if (isset($stopid)) {
                 $stopAlerts = getServiceAlertsAsArray("stop", $stopid);
-                if ($stopAlerts != nullarray) {
+                if ($stopAlerts != null) {
                     // echo "getting alerts due to stop $stopid";
                     $serviceAlerts = array_merge($serviceAlerts, $stopAlerts);
                 }
             }
             if (isset($routeid)) {
                 $routeAlerts = getServiceAlertsAsArray("route", $routeid);
-                if ($routeAlerts != nullarray) {
+                if ($routeAlerts != null) {
                     //    echo "getting alerts due to route $routeid";
                     $serviceAlerts = array_merge($serviceAlerts, $routeAlerts);
                 }
             }
             if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) {
                 foreach ($serviceAlerts['entity'] as $entity) {
-                    echo "<div id='servicewarning'><b>{$entity['alert']['header_text']['translation'][0]['text']}</b>&nbsp;<small>"
+                    echo "<div class='servicewarning'><b>{$entity['alert']['header_text']['translation'][0]['text']}</b>&nbsp;<small>"
                     . date("F jS Y, g:i a", $entity['alert']['active_period'][0]['start']) . " to "
                     . date("F jS Y, g:i a", $entity['alert']['active_period'][0]['end']) . "</small>
                             <br>Warning: {$entity['alert']['description_text']['translation'][0]['text']} 
@@ -229,7 +229,7 @@
 s.parentNode.insertBefore(ga, s);
   })();</script>";
         $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
-        echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>';
+        echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" alt=""/></noscript>';
     }
     echo "\n</div></div></body></html>";
 }

--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -245,7 +245,7 @@
 
             return $codec->encode($alerts);
         } else {
-            return nullarray;
+            return null;
         }
     }
 

--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -59,7 +59,12 @@
         databaseError($conn->errorInfo());
         return Array();
     }
-    return $query->fetchAll();
+    $results = $query->fetchAll();
+    if (is_array($results)) {
+        return $results;
+    } else {
+        return Array($results);
+    }
 }
 function getRouteDescription($routeID, $directionID) {
     $trip = getRouteNextTrip($routeID, $directionID);
@@ -120,7 +125,7 @@
 function getRouteNextTrip($routeID, $directionID) {
     global $conn;
    
-    $query = "select routes.route_id,direction_id,trips.trip_id,trip_headsign,departure_time from routes join trips on trips.route_id = routes.route_id
+    $query = "select routes.route_id,routes.route_url,direction_id,trips.trip_id,trip_headsign,departure_time,service_id from routes join trips on trips.route_id = routes.route_id
 join stop_times on stop_times.trip_id = trips.trip_id where  arrival_time between :currentTime and :futureTime 
 and routes.route_id = :routeID and trips.direction_id = :directionID order by
 arrival_time limit 1";

--- a/routeList.php
+++ b/routeList.php
@@ -50,17 +50,17 @@
     echo '  <ul data-role="listview" data-filter="true" data-inset="true" >';
     foreach ($routes as $route) {
         $time = getRouteAtStop($route['route_id'], $route['direction_id'], $route['stop_id']);
- $start = getTripStartingPoint($time['trip_id']); 
-    $end = getTripDestination($time['trip_id']);
+        $start = getTripStartingPoint($time['trip_id']);
+        $end = getTripDestination($time['trip_id']);
         //print_r($route);
         echo '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $route['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
                    
-                <p>" . $time['trip_headsign'] . (strstr($time['trip_headsign'], "bound") === false ? "bound" : "") . " from ".$start['stop_name']." to ".$end['stop_name'] . " (" . ucwords($time['service_id']) . ")</p>";
+                <p>" . $time['trip_headsign'] . (strstr($time['trip_headsign'], "bound") === false ? "bound" : "") . " from " . $start['stop_name'] . " to " . $end['stop_name'] . " (" . ucwords($time['service_id']) . ")</p>";
         $stop = getStop($route['stop_id']);
-echo "<p>Board at ".$stop['stop_name']."</p>";
+        echo "<p>Board at " . $stop['stop_name'] . "</p>";
         echo '<span class="ui-li-count">' . ($time['arrival_time'] ? $time['arrival_time'] : "No more trips today") . "<br>" . floor($route['distance']) . 'm away</span>';
-        
-    echo"       </a></li>\n";
+
+        echo"       </a></li>\n";
     }
 }
 
@@ -92,7 +92,8 @@
 } else if (isset($nearby)) {
     $routes = Array();
     include_header("Routes Nearby", "routeList", true, true);
-    if (isset($_SESSION['lat'])) trackEvent("Route Lists", "Routes Nearby", $_SESSION['lat'] . "," . $_SESSION['lon']);
+    if (isset($_SESSION['lat']))
+        trackEvent("Route Lists", "Routes Nearby", $_SESSION['lat'] . "," . $_SESSION['lon']);
     navbar();
     placeSettings();
     if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") {
@@ -132,7 +133,7 @@
                     $seriesRange[$seriesNum]['max'] = $routeNumber;
                     $seriesRange[$seriesNum]['min'] = $routeNumber;
                 }
-                $routeSeries[$seriesNum][$seriesNum . "-" . $row[1] . "-" . $row[0]] = $row;
+                $routeSeries[$seriesNum][] = null;
             }
         }
         ksort($routeSeries);
@@ -157,7 +158,8 @@
         displayRoutes(getRoutesByDestination($routeDestination));
     } else {
         foreach (getRoutesByDestination() as $destination) {
-            echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination=' . urlencode($destination['stop_name']) . '">' . $destination['stop_name'] . "... </a></li>\n";
+            echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination='
+            . urlencode($destination['stop_name']) . '">' . $destination['stop_name'] . "... </a></li>\n";
         }
     }
 }

file:a/stop.php -> file:b/stop.php
--- a/stop.php
+++ b/stop.php
@@ -16,8 +16,9 @@
   limitations under the License.
  */
 include ('include/common.inc.php');
-if ($stopid)
+if (isset($stopid)) {
     $stop = getStop($stopid);
+}
 /* if ($stopcode != "" && $stop[5] != $stopcode) {
   $url = $APIurl . "/json/stopcodesearch?q=" . $stopcode;
   $stopsearch = json_decode(getPage($url));
@@ -85,7 +86,7 @@
   echo '<div id="servicewarning">'.$serviceAlert['alert']['description']['translation'].'</div>';
   } */
 
-echo '<span class="content-secondary">';
+echo '<div class="content-secondary">';
 echo $stopLinks;
 if (sizeof($stops) > 0) {
     trackEvent("View Stops", "View Combined Stops", $stop["stop_name"], $stop["stop_id"]);
@@ -102,7 +103,7 @@
 
 timeSettings();
 
-echo '</span><span class="content-primary">';
+echo '</div><div class="content-primary">';
 echo '  <ul data-role="listview"  data-inset="true">';
 if (sizeof($allStopsTrips) > 0) {
     sktimesort($allStopsTrips, "arrival_time", true);
@@ -173,7 +174,7 @@
     }
 }
 echo '</ul>';
-echo '</span>';
+echo '</div>';
 include_footer();
 ?>
 

--- a/stopList.php
+++ b/stopList.php
@@ -60,7 +60,7 @@
             die();
         }
         $stops = getNearbyStops($_SESSION['lat'], $_SESSION['lon'], 15);
-        echo '<span class="content-secondary">';
+        echo '<div class="content-secondary">';
         $stopPositions[] = Array(
             $_SESSION['lat'],
             $_SESSION['lon']
@@ -73,7 +73,7 @@
         }
         echo staticmap($stopPositions, true, true);
         placeSettings();
-        echo '</span><span class="content-primary">';
+        echo '</div><div class="content-primary">';
     } else if (isset($suburb)) {
         $stops = getStopsBySuburb($suburb);
         include_header("Stops in " . ucwords($suburb), "stopList");
@@ -144,8 +144,9 @@
         }
     }
     echo '</ul>';
-    if (isset($nearby))
-        echo '</span>';
+    if (isset($nearby)) {
+        echo '</div>';
+}
 }
 include_footer();
 ?>

file:a/trip.php -> file:b/trip.php
--- a/trip.php
+++ b/trip.php
@@ -32,8 +32,8 @@
 $service_period = strtolower($trip["service_id"]);
 $destination = getTripDestination($trip['trip_id']);
 include_header("Route " . $trip['route_id'] . ' to ' . $destination['stop_name'], "trip");
-trackEvent("Route/Trip View", "View Route", $trip['route_short_name'] . ' ' . $destination['stop_name'], $routeid);
-echo '<span class="content-secondary">';
+trackEvent("Route/Trip View", "View Route", $trip['route_id'] . ' ' . $destination['stop_name'], $routeid);
+echo '<div class="content-secondary">';
 echo '<a href="' . $trip['route_url'] . '">View Original Timetable/Map</a> ';
 echo '<a href="geo/trip.kml.php?tripid='.$tripid.'">View Trip in Google Earth</a> ';
 echo '<a href="geo/route.kml.php?routeid='.$routeid.'">View Route in Google Earth</a>';
@@ -59,7 +59,7 @@
     foreach (getRouteHeadsigns($routeid) as $headsign) {
         if ($headsign['direction_id'] != $directionid || strtolower($headsign['service_id']) != $service_period) {
 
-            echo '<a href="trip.php?routeid=' . $routeid . '&directionid=' . $headsign['direction_id'] . '&service_period=' . $headsign['service_id'] . '"> Starting at ' . $headsign['stop_name'] . ' (' . $headsign['service_id'] . ')</a> ';
+            echo '<a href="trip.php?routeid=' . $routeid . '&amp;directionid=' . $headsign['direction_id'] . '&amp;service_period=' . $headsign['service_id'] . '"> Starting at ' . $headsign['stop_name'] . ' (' . $headsign['service_id'] . ')</a> ';
             $otherDir++;
         }
     }
@@ -67,21 +67,23 @@
 if ($otherDir == 0) {
     echo "None";
 }
-echo '</span><span class="content-primary">';
+echo '</div><div class="content-primary">';
 flush();
 @ob_flush();
 echo "<div class='ui-header' style='overflow: visible; height: 1.5em'>";
-if ($nextTrip)
+if (isset($nextTrip)) {
     echo '<a href="trip.php?tripid=' . $nextTrip . "&amp;routeid=" . $routeid . '" data-icon="arrow-r" class="ui-btn-right">Next Trip</a>';
-if ($prevTrip)
+}
+if (isset($prevTrip)) {
     echo '<a href="trip.php?tripid=' . $prevTrip . "&amp;routeid=" . $routeid . '" data-icon="arrow-l" class="ui-btn-left">Previous Trip</a>';
+}
 echo "</div>";
 echo '  <ul data-role="listview"  data-inset="true">';
 $stopsGrouped = Array();
 $tripStopTimes = getTripStopTimes($tripid);
 echo '<li data-role="list-divider">' . $tripStopTimes[0]['arrival_time'] . ' to ' . $tripStopTimes[sizeof($tripStopTimes) - 1]['arrival_time'] . ' towards ' . $destination['stop_name'] . ' (' . ucwords(strtolower($tripStopTimes[0]['service_id'])) . ')</li>';
 foreach ($tripStopTimes as $key => $tripStopTime) {
-    if ($key + 1 > sizeof($tripStopTimes) || stopCompare($tripStopTimes[$key]["stop_name"]) != stopCompare($tripStopTimes[$key + 1]["stop_name"])) {
+    if ($key + 1 >= sizeof($tripStopTimes) || stopCompare($tripStopTimes[$key]["stop_name"]) != stopCompare($tripStopTimes[$key + 1]["stop_name"])) {
         echo '<li>';
 
         if (sizeof($stopsGrouped) > 0) {
@@ -119,7 +121,6 @@
         if ($key - 1 <= 0 || stopCompare($tripStopTimes[$key]['stop_name']) != stopCompare($tripStopTimes[$key - 1]['stop_name'])) {
             // first duplicate
             $stopsGrouped = Array(
-                "name" => trim(preg_replace("/\(Platform.*/", "", $stop['stop_name'])),
                 "startTime" => $tripStopTime['arrival_time'],
                 "stop_ids" => Array(
                     $tripStopTime['stop_id']
@@ -133,7 +134,7 @@
     }
 }
 echo '</ul>';
-echo '</span>';
+echo '</div>';
 include_footer();
 ?>