Added service periods to route names
Added service periods to route names

--- a/busui/common.inc.php
+++ b/busui/common.inc.php
@@ -8,6 +8,9 @@
     return true;
 }
 
+function debug($msg) {
+    if (isDebug()) echo "<!-- $msg -->";
+}
 function isFastDevice() {
     return true;
 }
@@ -26,13 +29,55 @@
      width: 100%;
      }
 </style>
-	<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script type="text/javascript" 
-src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script> 
- <meta name="apple-mobile-web-app-capable" content="yes" />
+	<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
+        <script type="text/javascript" src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script>
+    <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
  <link rel="apple-touch-startup-image" href="startup.png" />
- <link rel="apple-touch-icon" href="apple-touch-icon.png" />
-</head> 
+ <link rel="apple-touch-icon" href="apple-touch-icon.png" />';
+ if ($geolocate) {
+echo "<script>
+
+function setCookie(c_name,value,expiredays)
+{
+var exdate=new Date();
+exdate.setDate(exdate.getDate()+expiredays);
+document.cookie=c_name+ \"=\" +escape(value)+
+((expiredays==null) ? \"\" : \";expires=\"+exdate.toUTCString());
+}
+
+function getCookie(c_name)
+{
+if (document.cookie.length>0)
+  {
+  c_start=document.cookie.indexOf(c_name + \"=\");
+  if (c_start!=-1)
+    {
+    c_start=c_start + c_name.length+1;
+    c_end=document.cookie.indexOf(\";\",c_start);
+    if (c_end==-1) c_end=document.cookie.length;
+    return unescape(document.cookie.substring(c_start,c_end));
+    }
+  }
+return \"\";
+}
+
+function success(position) {
+$('#geolocate').val(position.coords.latitude+','+position.coords.longitude);
+setCookie('geolocate',position.coords.latitude+','+position.coords.longitude,1);
+}
+
+function error(msg) {
+ console.log(msg);
+}
+
+if (navigator.geolocation) {
+  navigator.geolocation.getCurrentPosition(success, error);
+}
+
+</script> ";
+ }
+echo '</head> 
 <body> 
  ';
 if ($opendiv) echo '<div data-role="page"> 

--- a/busui/index.php
+++ b/busui/index.php
@@ -1,29 +1,29 @@
 <?php 
 include('common.inc.php');
-include_header("bus.lambdacomplex.org",false)
+include_header("bus.lambdacomplex.org",false, true)
 ?>
 <div data-role="page" data-theme="b" id="jqm-home" class="ui-page ui-body-b ui-page-active">
 	<div id="jqm-homeheader">
-	    	<center><h1 id="jqm-logo"><img src="apple-touch-icon.png" alt="jQuery Mobile Framework" width="64" height="64" />
+	    	<center><h1 id="jqm-logo"><img src="apple-touch-icon.png" alt="logo" width="64" height="64" /><br>
 		bus.lambdacomplex.org</h1></center>
 	</div> 
-	<div data-role="content"> 
+	<div data-role="content">
+	    <a href="tripPlanner.php" data-role="button">Launch Trip Planner...</a>
             <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
-                <li data-role="list-divider">Stops</li>
-                <li><a href="stopList.php">All stops List</a></li>
-		<li class="nearby"><a href="stopList.php?nearby=yes">Nearby List</a></li>
-                <li><a href="stopList.php?favourites=yes">Favourites List</a></li>
+                <li data-role="list-divider">Timetables - Stops</li>
+                <li><a href="stopList.php">Major (Timing Point) Stops</a></li>
+		<li><a href="stopList.php">All Stops</a></li>
+		<li><a href="stopList.php?nearbyfavs=yes">Nearby/Favourite Stops</a></li>
             </ul>
 	    <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
-                <li data-role="list-divider">Routes</li>
-                <li><a href="routeList.php">All Routes List</a></li>
-		<li class="nearby"><a href="routeList.php?nearby=yes">Nearby List</a></li>
-                <li><a href="routeList.php?favourites=yes">Favourites List</a></li>
+                <li data-role="list-divider">Timetables - Routes</li>
+                <li><a href="routeList.php">All Routes</a></li>
+		<li><a href="routeList.php?nearbyfavs=yes">Nearby/Favourites Routes</a></li>
             </ul>
-            <div class="ui-body ui-body-c info">
-		<p class="latlng"></p>
+            <div class="ui-body ui-body-c">
+		Current Location: <input type="text" id="geolocate" name="geolocate"/> Search? Update to Here?<br>
 		Time: <?php echo date("H:m"); ?> <br>
-		Service Period: <?php echo ucwords(service_period()); ?> 
+		Service Period: <?php echo ucwords(service_period()); ?><br> 
             </div>
         </div>
    </div>

--- a/busui/routeList.php
+++ b/busui/routeList.php
@@ -1,12 +1,27 @@
 <?php
 include('common.inc.php');
 include_header("Routes");
-/* data-filter="true">';
-echo "<script> $('#routeList').listnav({prefixes: ['to'] }); </script>";*/
+echo'
+		<div data-role="navbar"> 
+			<ul> 
+				<li><a href="routeList.php" class="ui-btn-active">By Final Destination...</a></li> 
+				<li><a href="routeList.php?bynumber=yes">By Number... </a></li>
+				<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li> 
+			</ul>
+                </div>
+	';
 echo '  <ul data-role="listview">';
 $url = $APIurl."/json/routes";
 
 $contents = json_decode(getPage($url));
+debug(print_r($contents,true));
+
+function printRoutes($routes){
+	foreach($routes as $row) {
+				echo  '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]." (".ucwords($row[3]).")</a></li>\n";
+			}
+}
+
 if ($_REQUEST['bynumber']) {
 	$routeSeries = Array();
 	foreach ($contents as $key => $row) {
@@ -22,9 +37,7 @@
 	foreach ($routeSeries as $series => $routes)
 	{
 		echo '<li>'.$series."... <ul>\n";
-			foreach($routes as $row) {
-				echo  '<li>'.$row[1].' <a href="route.php?routeid='.$row[0].'">'.$row[2]."</a></li>\n";
-			}
+			printRoutes($routes);
 		echo "</ul></li>\n";
 	}
 } else {
@@ -34,22 +47,12 @@
 	foreach ($routeDestinations as $destination => $routes)
 	{
 		echo '<li>'.$destination."... <ul>\n";
-			foreach($routes as $row) {
-				echo  '<li>'.$row[1].' <a href="trip.php?routeid='.$row[0].'">'.$row[2]."</a></li>\n";
-			}
+		printRoutes($routes);
 		echo "</ul></li>\n";
 	}
 }
 echo "</ul>\n";
-echo'
- <div data-role="footer" data-id="foo1" data-position="fixed"> 
-		<div data-role="navbar"> 
-			<ul> 
-				<li><a href="routeList.php" class="ui-btn-active">By Final Destination...</a></li> 
-				<li><a href="routeList.php?bynumber=yes">By Number... </a></li>
-				<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li> 
-			</ul> 
-	';
+
 include_footer();
 ?>
 

--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -256,7 +256,12 @@
     schedule = self.server.schedule
     result = []
     for r in schedule.GetRouteList():
-      result.append( (r.route_id, r.route_short_name, r.route_long_name) )
+      servicep = None
+      for t in schedule.GetTripList():
+        if t.route_id == r.route_id:
+          servicep = t.service_period
+          break
+      result.append( (r.route_id, r.route_short_name, r.route_long_name, servicep.service_id) )
     result.sort(key = lambda x: x[1:3])
     return result
 
@@ -273,8 +278,6 @@
     for t in schedule.GetTripList():
       if t.route_id == query:
         result.append ( (t.GetStartTime(), t.trip_id) )
-        """ UGH fails for 300s """
-    """return result"""
     return sorted(result, key=lambda trip: trip[0])
   
   def handle_json_GET_triprows(self, params):

--- a/busui/stop.php
+++ b/busui/stop.php
@@ -8,6 +8,7 @@
 echo '  <ul data-role="listview" >';
 $url = $APIurl."/json/stoptrips?stop=".$_REQUEST['stopid']."&time=".midnight_seconds()."&service_period=".service_period();
 $trips = json_decode(getPage($url));
+debug(print_r($trips,true));
 foreach ($trips as $row)
 {
 echo  '<li>';

--- a/busui/stopList.php
+++ b/busui/stopList.php
@@ -14,6 +14,7 @@
 if ($_REQUEST['allstops']) $url = $APIurl."/json/stops";
 if ($_REQUEST['lat'] && $_REQUEST['lon']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['lat']}&lon={$_REQUEST['lon']}&limit=15";
 $contents = json_decode(getPage($url));
+debug(print_r($contents,true));
 foreach ($contents as $key => $row) {
     $stopName[$key]  = $row[1];
 }

--- a/busui/trip.php
+++ b/busui/trip.php
@@ -4,6 +4,7 @@
 if ($_REQUEST['routeid']) {
     $url = $APIurl."/json/routetrips?route_id=".$_REQUEST['routeid'];
     $trips = json_decode(getPage($url));
+debug(print_r($trips,true));
 foreach ($trips as $trip)
          {
             if ($trip[0] < midnight_seconds()) {
@@ -15,7 +16,7 @@
 }
 $url = $APIurl."/json/triprows?trip=".$tripid;
 $trips = array_flatten(json_decode(getPage($url)));
-
+debug(print_r($trips,true));
 include_header("Stops on ". $trips[1]->route_short_name . ' '. $trips[1]->route_long_name);
 echo '  <ul data-role="listview" >';
 
@@ -23,6 +24,7 @@
 $url = $APIurl."/json/tripstoptimes?trip=".$tripid;
 
 $json = json_decode(getPage($url));
+debug(print_r($json,true));
 $stops = $json[0];
 $times = $json[1];
 foreach ($stops as $key => $row)

--- a/busui/tripPlanner.php
+++ b/busui/tripPlanner.php
@@ -1,6 +1,6 @@
 <?php
   include('common.inc.php');
-  include_header("Trip Planner");
+  include_header("Trip Planner", true, true);
   function tripPlanForm($errorMessage = "")
   {
       $from = (isset($_REQUEST['from']) ? $_REQUEST['from'] : "Brigalow");
@@ -12,20 +12,29 @@
     <div data-role="fieldcontain">
         <label for="from">I would like to go from</label>
         <input type="text" name="from" id="from" value="' . $from . '"  />
+        <a href="#" style="display:none" name="fromHere" id="fromHere"/>Here?</a>
     </div>
         <div data-role="fieldcontain">
         <label for="to"> to </label>
         <input type="text" name="to" id="to" value="' . $to . '"  />
+        <a href="#" style="display:none" name="toHere" id="toHere"/>Here?</a>
     </div>
     <div data-role="fieldcontain">
         <label for="date"> on </label>
-        <input type="text" name="date" id="date" value="' . $date . '"  />
+        <input type="date" name="date" id="date" value="' . $date . '"  />
     </div>
         <div data-role="fieldcontain">
         <label for="time"> at </label>
-        <input type="text" name="time" id="time" value="' . $time . '"  />
+        <input type="time" name="time" id="time" value="' . $time . '"  />
     </div>
         <input type="submit" value="Go!"></form>';
+        echo "<script>
+$('#toHere').click(function(event) { $('#to').val(getCookie('geolocate')); return false;});
+$('#toHere').show();
+$('#fromHere').click(function(event) { $('#from').val(getCookie('geolocate')); return false;});
+$('#fromHere').show();
+
+        </script>";
   }
   
   function processItinerary($itineraryNumber, $itinerary)
@@ -94,6 +103,7 @@
           $page = curl_exec($ch);
           curl_close($ch);
           $tripplan = json_decode($page);
+          debug(print_r($triplan,true));
           echo "<h1> From: {$tripplan->plan->from->name} To: {$tripplan->plan->to->name} </h1>";
           echo "<h1> At: {$tripplan->plan->date} </h1>";
          

--- a/maxious-canberra-transit-feed/01-extracttimes.rb
+++ b/maxious-canberra-transit-feed/01-extracttimes.rb
@@ -14,7 +14,7 @@
 	timetable = {"between_stops" => [], "short_name" => short_name}
 	time_points = table.xpath('tr[1]//th').map do |tp|
 		if tp.content != "\302\240" && tp.content != "" && tp.content != "<br/>"
-			timing_point = tp.content.squeeze(" ").gsub("Bus Station"," Bus Station ").gsub(" Platform"," (Platform").gsub("  - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(","," ").gsub("\302\240","").squeeze(" ").strip
+			timing_point = tp.content.squeeze(" ").gsub("Shops"," ").gsub("Bus Station"," Bus Station ").gsub(" Platform"," (Platform").gsub("  - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(","," ").gsub("\302\240","").squeeze(" ").strip
 			if (tp.content.match('Platform'))
 			  timing_point.concat(")")
 			end;

--- a/maxious-canberra-transit-feed/02-tidytimepoints.rb
+++ b/maxious-canberra-transit-feed/02-tidytimepoints.rb
@@ -34,7 +34,7 @@
  "NarrabundahTerminus"=>"Narrabundah Terminus",
  "Railway StationKingston"=>"Railway Station Kingston",
  "Saint AndrewsVillage Hughes"=>"Saint Andrews Village Hughes",
- "Dickson ShopsAntill Street"=>"Dickson Shops",
+ "DicksonAntill Street"=>"Dickson",
  "Cohen St Bus Station (Platform 3)" => "Cohen Street Bus Station (Platform 3)",
  "Cohen St Bus Station (Platform 6)" => "Cohen Street Bus Station (Platform 6)",
  "Newcastle Streetafter Isa Street" => "Newcastle Street after Isa Street",
@@ -52,8 +52,8 @@
  "Flemington Road / Nullabor Ave"=>"Flemington Rd / Nullabor Ave",
  "Flemington Road / Sandford St"=>"Flemington Rd / Sandford St",
  "Heagney Cres Clift Cres Richardson"=>  "Heagney / Clift Richardson",
- "Charnwood Shops (Tillyard Drive)"=> "Charnwood Shops",
- "charnwood Shops"=> "Charnwood Shops",
+ "Charnwood (Tillyard Drive)"=> "Charnwood",
+ "charnwood"=> "Charnwood",
  "Black Moutain- Telstra Tower"=>"Black Mountain Telstra Tower",
  "Bonython Primary"=> "Bonython Primary School",
  "Athllon Drive / Sulwood Dr Kambah"=>"Athllon / Sulwood Kambah",
@@ -61,31 +61,37 @@
  "Alexander Maconochie Centre Hume"=>"Alexander Maconochie Centre",
  "Anthony Rolfe Ave / Moonight Ave" =>"Anthony Rolfe Av / Moonlight Av",
  "Australian National Botanic Gardens"=>"Botanic Gardens",
- "Calwell shops"=> "Calwell Shops", 
+ "Calwell shops"=> "Calwell", 
  "Chuculba / William Slim Drive"=>"Chuculba / William Slim Dr",
  "Fyshwick direct Factory Outlet"=>"Fyshwick Direct Factory Outlet",
  "Kaleen Village / Maibrynong"=>"Kaleen Village / Marybrynong",
  "Kaleen Village / Marybrynong Ave"=>"Kaleen Village / Marybrynong",
  "National Aquarium"=>"National Zoo and Aquarium",
- "chisholm Shops"=>"Chisholm Shops",
- "O'connor Shops"=>"O'Connor Shops",
- "Mckellar Shops"=>"McKellar Shops",
- "Melba shops"=> "Melba Shops",
+ "chisholm"=>"Chisholm",
+ "O'connor"=>"O'Connor",
+ "Mckellar"=>"McKellar",
  "William Web / Ginninderra Drive"=>"William Webb / Ginninderra Drive",
  "Procor / Mead"=>"Proctor / Mead",
  "Fyshwick DirectFactory Outlet"=>"Fyshwick Direct Factory Outlet",
- "Yarrulumla Shops"=>"Yarralumla Shops",
+ "Yarrulumla"=>"Yarralumla",
  "Tharwa Dr / Pocket Ave"=>"Tharwa Dr / Pockett Ave",
  "Paul Coe / Mirrebei Dr"=>"Paul Coe / Mirrabei Dr",
  "Mirrebei Drive / Dam Wall"=>"Mirrabei Drive / Dam Wall",
  "Tharwa / Knoke" => "Tharwa Drive / Knoke Ave",
- "Tharwa / Pocket" => "Tharwa Dr / Pockett Ave",
+ "Tharwa / Pocket" => "Tharwa Drive / Pockett Ave",
+ 'Tharwa Dr / Pockett Ave' => "Tharwa Drive / Pockett Ave",
  "Outrim / Duggan" => "Outtrim / Duggan",
  "ANU Burton and Garran Hall Daley Rd" => "Burton and Garran Hall Daley Road",
  "Farrer Primary"=>"Farrer Primary School",
  "St Thomas More Campbell"=>"St Thomas More's Campbell",
- "Lyneham Shops"=>"Lyneham Shops Wattle Street",
- 
+ "Lyneham Wattle Street"=>"Lyneham / Wattle St",
+ "Dickson" => "Dickson / Antill St",
+ 'Dickson Antill Street' => 'Dickson / Antill St',
+ "Livingston / Kambah" => "Kambah / Livingston St",
+ 'Melba shops' => 'Melba',
+ 'St Clare of Assisi' => 'St Clare of Assisi Primary',
+ 'War Memorial Limestone Ave' => 'War Memorial / Limestone Ave'
+
  
 }
 	time_point_corrections.each do |wrong, right|

--- a/maxious-canberra-transit-feed/03-locatetimepoints.rb
+++ b/maxious-canberra-transit-feed/03-locatetimepoints.rb
@@ -38,6 +38,7 @@
         $time_points = []
         $time_points_sources = Hash.new([])
         Dir.glob("*.yml") { |file|
+	       pp file
                 timetable = YAML::load_file(file)
                 $time_points = $time_points | timetable["time_points"]
                 timetable["time_points"].each do |timepoint|

--- a/maxious-canberra-transit-feed/cbrtable.yml
+++ b/maxious-canberra-transit-feed/cbrtable.yml
@@ -11,12 +11,10 @@
   - { name: ACTEW AGL House,stop_code: ACTEW AGL House, lat: -35.282374, lng: 149.132047}
   - { name: ADFA,stop_code: ADFA, lat: -35.2937972, lng: 149.1643403}
   - { name: Ainslie,stop_code: Ainslie, lat: -35.2620105, lng: 149.1443302}
-  - { name: Ainslie Shops,stop_code: Ainslie Shops, lat: -35.26198, lng: 149.14535}
   - { name: Alexander Maconochie Centre,stop_code: Alexander Maconochie Centre, lat: -35.3720651, lng: 149.1696618}
   - { name: Alpen & Clifford St,stop_code: Alpen & Clifford St, lat: -35.20562, lng: 149.06259}
   - { name: Anthony Rolfe Av / Moonlight Av,stop_code: Anthony Rolfe Av / Moonlight Av, lat: -35.1856021, lng: 149.1543639}
   - { name: Aranda,stop_code: Aranda, lat: -35.257534, lng: 149.0762963}
-  - { name: Aranda Shops,stop_code: Aranda Shops, lat: -35.25753, lng: 149.0763}
   - { name: Athllon / Sulwood Kambah,stop_code: Athllon / Sulwood Kambah, lat: -35.38442, lng: 149.09328}
   - { name: Australian Institute of Sport,stop_code: Australian Institute of Sport, lat: -35.246351, lng: 149.101478}
   - { name: Belconnen Community Bus Station,stop_code: Belconnen Community Bus Station, lat: -35.23987, lng: 149.0619}
@@ -37,7 +35,7 @@
   - { name: Bugden Sternberg,stop_code: Bugden Sternberg, lat: -35.4017223, lng: 149.0992172}
   - { name: Burton and Garran Hall Daley Road,stop_code: Burton and Garran Hall Daley Road, lat: -35.2753671, lng: 149.1172822}
   - { name: Calvary Hospital,stop_code: Calvary Hospital, lat: -35.25212, lng: 149.09088}
-  - { name: Calwell Shops,stop_code: Calwell Shops, lat: -35.43524, lng: 149.113942}
+  - { name: Calwell,stop_code: Calwell, lat: -35.43524, lng: 149.113942}
   - { name: Cameron Ave Bus Station,stop_code: Cameron Ave Bus Station, lat: -35.2410195, lng: 149.0722506}
   - { name: Cameron Ave Bus Station (Platform 1),stop_code: Cameron Ave Bus Station (Platform 1), lat: -35.2410195, lng: 149.0722506}
   - { name: Cameron Ave Bus Station (Platform 2),stop_code: Cameron Ave Bus Station (Platform 2), lat: -35.2410108, lng: 149.0717142}
@@ -52,13 +50,10 @@
   - { name: Causeway,stop_code: Causeway, lat: -35.31615, lng: 149.15058}
   - { name: Centrelink Tuggeranong,stop_code: Centrelink Tuggeranong, lat: -35.4207496, lng: 149.0700973}
   - { name: Chapman,stop_code: Chapman, lat: -35.3557877, lng: 149.0408111}
-  - { name: Chapman Shops,stop_code: Chapman Shops, lat: -35.35579, lng: 149.04082}
   - { name: Charnwood,stop_code: Charnwood, lat: -35.2052138, lng: 149.0337266}
-  - { name: Charnwood Shops,stop_code: Charnwood Shops, lat: -35.20472, lng: 149.03336}
   - { name: Charnwood Tillyard Dr,stop_code: Charnwood Tillyard Dr, lat: -35.20295, lng: 149.04027}
   - { name: Chifley,stop_code: Chifley, lat: -35.350985, lng: 149.077319}
-  - { name: Chifley Shops,stop_code: Chifley Shops, lat: -35.35099, lng: 149.07732}
-  - { name: Chisholm Shops,stop_code: Chisholm Shops, lat: -35.41341, lng: 149.12833}
+  - { name: Chisholm,stop_code: Chisholm, lat: -35.41341, lng: 149.12833}
   - { name: Chuculba / William Slim Dr,stop_code: Chuculba / William Slim Dr, lat: -35.208931, lng: 149.088499}
   - { name: CIT Weston,stop_code: CIT Weston, lat: -35.330234, lng: 149.058632}
   - { name: City Bus Station,stop_code: City Bus Station, lat: -35.2794346, lng: 149.1305879}
@@ -84,19 +79,14 @@
   - { name: Cohen Street Bus Station (Platform 6),stop_code: Cohen Street Bus Station (Platform 6), lat: -35.2400028, lng: 149.060315}
   - { name: Conder Primary,stop_code: Conder Primary, lat: -35.4643475, lng: 149.0986908}
   - { name: Cook,stop_code: Cook, lat: -35.2596, lng: 149.0638}
-  - { name: Cook Shops,stop_code: Cook Shops, lat: -35.25898, lng: 149.06343}
   - { name: Cooleman Court,stop_code: Cooleman Court, lat: -35.34147, lng: 149.05338}
   - { name: Copland College,stop_code: Copland College, lat: -35.2127018, lng: 149.0596387}
   - { name: Curtin,stop_code: Curtin, lat: -35.3248779, lng: 149.081441}
-  - { name: Curtin Shops,stop_code: Curtin Shops, lat: -35.32515, lng: 149.08224}
   - { name: Deakin,stop_code: Deakin, lat: -35.3158608, lng: 149.1084563}
-  - { name: Deakin Shops,stop_code: Deakin Shops, lat: -35.31473, lng: 149.10771}
   - { name: Deamer / Clift Richardson,stop_code: Deamer / Clift Richardson, lat: -35.4319597, lng: 149.1187876}
-  - { name: Dickson,stop_code: Dickson, lat: -35.2498434, lng: 149.1391218}
+  - { name: Dickson / Antill St,stop_code: Dickson / Antill St, lat: -35.2489, lng: 149.14012}
   - { name: Dickson College,stop_code: Dickson College, lat: -35.24923, lng: 149.15315}
-  - { name: Dickson Cowper St,stop_code: Dickson Cowper St, lat: -35.250297, lng: 149.141336}
-  - { name: Dickson Shops,stop_code: Dickson Shops, lat: -35.25045, lng: 149.14044}
-  - { name: Dickson Shops/Antill St,stop_code: Dickson Shops/Antill St, lat: -35.2251335, lng: 149.1658895}
+  - { name: Dickson / Cowper St,stop_code: Dickson / Cowper St, lat: -35.250297, lng: 149.141336}
   - { name: Duffy,stop_code: Duffy, lat: -35.3366908, lng: 149.0324311}
   - { name: Duffy Primary,stop_code: Duffy Primary, lat: -35.334219, lng: 149.033656}
   - { name: Dunlop,stop_code: Dunlop, lat: -35.1942693, lng: 149.0206702}
@@ -104,59 +94,47 @@
   - { name: Erindale Dr / Charleston St Monash,stop_code: Erindale Dr / Charleston St Monash, lat: -35.414616, lng: 149.07888}
   - { name: Erindale / Sternberg Cres,stop_code: Erindale / Sternberg Cres, lat: -35.4014472, lng: 149.0956545}
   - { name: Evatt,stop_code: Evatt, lat: -35.2091093, lng: 149.0735343}
-  - { name: Evatt Shops,stop_code: Evatt Shops, lat: -35.21203, lng: 149.06505}
   - { name: Eye Hospital,stop_code: Eye Hospital, lat: -35.3341884, lng: 149.1656213}
   - { name: Fairbairn Park,stop_code: Fairbairn Park, lat: -35.3001773, lng: 149.2041185}
   - { name: Farrer Primary School,stop_code: Farrer Primary School, lat: -35.37887, lng: 149.10641}
   - { name: Farrer Terminus,stop_code: Farrer Terminus, lat: -35.3771794, lng: 149.1046948}
   - { name: Federation Square,stop_code: Federation Square, lat: -35.1908726, lng: 149.0848153}
   - { name: Fisher,stop_code: Fisher, lat: -35.3605627, lng: 149.0576481}
-  - { name: Fisher Shops,stop_code: Fisher Shops, lat: -35.36056, lng: 149.05765}
   - { name: Flemington Rd,stop_code: Flemington Rd, lat: -35.20756, lng: 149.14778}
   - { name: Flemington Rd / Nullabor Ave,stop_code: Flemington Rd / Nullabor Ave, lat: -35.2008585, lng: 149.1493407}
   - { name: Flemington Rd / Sandford St,stop_code: Flemington Rd / Sandford St, lat: -35.221231, lng: 149.144645}
-  - { name: Florey Shops,stop_code: Florey Shops, lat: -35.2258544, lng: 149.0546214}
+  - { name: Florey,stop_code: Florey, lat: -35.2258544, lng: 149.0546214}
   - { name: Flynn,stop_code: Flynn, lat: -35.2019283, lng: 149.0478356}
   - { name: Fraser,stop_code: Fraser, lat: -35.1896539, lng: 149.0435012}
   - { name: Fraser East Terminus,stop_code: Fraser East Terminus, lat: -35.1896539, lng: 149.0435012}
-  - { name: Fraser Shops,stop_code: Fraser Shops, lat: -35.18966, lng: 149.0435}
   - { name: Fraser West Terminus,stop_code: Fraser West Terminus, lat: -35.191513, lng: 149.038006}
   - { name: Fyshwick Direct Factory Outlet,stop_code: Fyshwick Direct Factory Outlet, lat: -35.3359862, lng: 149.1796322}
   - { name: Fyshwick Terminus,stop_code: Fyshwick Terminus, lat: -35.3285202, lng: 149.1785592}
   - { name: Garran,stop_code: Garran, lat: -35.3423286, lng: 149.10811}
-  - { name: Garran Shops,stop_code: Garran Shops, lat: -35.34236, lng: 149.1082}
   - { name: Geoscience Australia,stop_code: Geoscience Australia, lat: -35.3429702, lng: 149.1583893}
   - { name: Giralang,stop_code: Giralang, lat: -35.2115608, lng: 149.0960692}
-  - { name: Giralang Shops,stop_code: Giralang Shops, lat: -35.2115608, lng: 149.0960692}
   - { name: Gordon Primary,stop_code: Gordon Primary, lat: -35.455517, lng: 149.086978}
   - { name: Gowrie,stop_code: Gowrie, lat: -35.4120264, lng: 149.1110804}
-  - { name: Gowrie Shops,stop_code: Gowrie Shops, lat: -35.4120264, lng: 149.1110804}
   - { name: Gungahlin Marketplace,stop_code: Gungahlin Marketplace, lat: -35.1769532, lng: 149.1319017}
   - { name: Gwydir Square Kaleen,stop_code: Gwydir Square Kaleen, lat: -35.2338677, lng: 149.1031998}
   - { name: Hackett,stop_code: Hackett, lat: -35.2481617, lng: 149.1626094}
-  - { name: Hackett Shops,stop_code: Hackett Shops, lat: -35.24825, lng: 149.16271}
   - { name: Hawker,stop_code: Hawker, lat: -35.2437386, lng: 149.0432804}
   - { name: Hawker College,stop_code: Hawker College, lat: -35.2454598, lng: 149.0324251}
-  - { name: Hawker Shops,stop_code: Hawker Shops, lat: -35.24398, lng: 149.04361}
   - { name: Heagney / Clift Richardson,stop_code: Heagney / Clift Richardson, lat: -35.4251299, lng: 149.11375}
   - { name: Hibberson / Kate Crace,stop_code: Hibberson / Kate Crace, lat: -35.1861642, lng: 149.1391756}
   - { name: Higgins,stop_code: Higgins, lat: -35.2313901, lng: 149.0271811}
-  - { name: Higgins Shops,stop_code: Higgins Shops, lat: -35.23136, lng: 149.02611}
   - { name: Holder,stop_code: Holder, lat: -35.3378123, lng: 149.0449433}
-  - { name: Holder Shops,stop_code: Holder Shops, lat: -35.33781, lng: 149.04494}
   - { name: Holt,stop_code: Holt, lat: -35.223099, lng: 149.0126269}
-  - { name: Holt Shops,stop_code: Holt Shops, lat: -35.2231, lng: 149.01263}
   - { name: Hoskins Street / Oodgeroo Ave,stop_code: Hoskins Street / Oodgeroo Ave, lat: -35.201095, lng: 149.139941}
   - { name: Hospice / Menindee Dr,stop_code: Hospice / Menindee Dr, lat: -35.303557, lng: 149.151627}
   - { name: Hughes,stop_code: Hughes, lat: -35.3339223, lng: 149.093854}
-  - { name: Hughes Shops,stop_code: Hughes Shops, lat: -35.3335, lng: 149.09392}
   - { name: Isaacs,stop_code: Isaacs, lat: -35.3669823, lng: 149.1119217}
-  - { name: Isaacs Shops,stop_code: Isaacs Shops, lat: -35.36698, lng: 149.11192}
-  - { name: Isabella Shops,stop_code: Isabella Shops, lat: -35.4285703, lng: 149.0916837}
+  - { name: Isabella,stop_code: Isabella, lat: -35.4285703, lng: 149.0916837}
   - { name: Jamison Centre,stop_code: Jamison Centre, lat: -35.2527268, lng: 149.0713712}
   - { name: John James Hospital,stop_code: John James Hospital, lat: -35.3200295, lng: 149.0955996}
   - { name: Kaleen Village / Marybrynong,stop_code: Kaleen Village / Marybrynong, lat: -35.2274031, lng: 149.1075421}
   - { name: Kambah High,stop_code: Kambah High, lat: -35.3847749, lng: 149.0720245}
+  - { name: Kambah / Livingston St,stop_code: Kambah / Livingston St, lat: -35.3883359, lng: 149.0811471}
   - { name: Kambah Village,stop_code: Kambah Village, lat: -35.3800314, lng: 149.0576581}
   - { name: Katherine Ave / Horse Park Drive,stop_code: Katherine Ave / Horse Park Drive, lat: -35.1680901, lng: 149.1321801}
   - { name: Kerrigan / Lhotsky,stop_code: Kerrigan / Lhotsky, lat: -35.193801, lng: 149.035689}
@@ -166,8 +144,8 @@
   - { name: Kippax Centre,stop_code: Kippax Centre, lat: -35.22172, lng: 149.01995}
   - { name: Kosciuszko / Everard,stop_code: Kosciuszko / Everard, lat: -35.188901, lng: 149.1216937}
   - { name: Lanyon Market Place,stop_code: Lanyon Market Place, lat: -35.4573, lng: 149.09199}
+  - { name: Latham,stop_code: Latham, lat: -35.21848, lng: 149.03214}
   - { name: Latham Post Office,stop_code: Latham Post Office, lat: -35.21906, lng: 149.03223}
-  - { name: Latham Shops,stop_code: Latham Shops, lat: -35.21848, lng: 149.03214}
   - { name: Lathlain St Bus Station,stop_code: Lathlain St Bus Station, lat: -35.2396657, lng: 149.0633993}
   - { name: Lathlain St Bus Station (Platform 1),stop_code: Lathlain St Bus Station (Platform 1), lat: -35.2408973, lng: 149.0639887}
   - { name: Lathlain St Bus Station (Platform 2),stop_code: Lathlain St Bus Station (Platform 2), lat: -35.2406038, lng: 149.0638922}
@@ -177,17 +155,13 @@
   - { name: Lathlain St Bus Station (Platform 6),stop_code: Lathlain St Bus Station (Platform 6), lat: -35.2410486, lng: 149.0638326}
   - { name: Lewis Luxton/Woodcock Dr,stop_code: Lewis Luxton/Woodcock Dr, lat: -35.4422566, lng: 149.0854375}
   - { name: Lithgow St Terminus Fyshwick,stop_code: Lithgow St Terminus Fyshwick, lat: -35.3296912, lng: 149.1668153}
-  - { name: Livingston Shops Kambah,stop_code: Livingston Shops Kambah, lat: -35.3883359, lng: 149.0811471}
-  - { name: Livingston Shops / Kambah,stop_code: Livingston Shops / Kambah, lat: -35.390246, lng: 149.07822}
   - { name: Lyneham,stop_code: Lyneham, lat: -35.2523304, lng: 149.1246184}
   - { name: Lyneham High,stop_code: Lyneham High, lat: -35.2524016, lng: 149.130254}
-  - { name: Lyneham Shops Wattle Street,stop_code: Lyneham Shops Wattle Street, lat: -35.25205, lng: 149.12524}
+  - { name: Lyneham / Wattle St,stop_code: Lyneham / Wattle St, lat: -35.25205, lng: 149.12524}
   - { name: Lyons,stop_code: Lyons, lat: -35.3415779, lng: 149.0765703}
-  - { name: Lyons Shops,stop_code: Lyons Shops, lat: -35.34019, lng: 149.0771}
   - { name: Macarthur / Miller O'Connor,stop_code: Macarthur / Miller O'Connor, lat: -35.2587584, lng: 149.1153561}
   - { name: Macarthur / Northbourne Ave,stop_code: Macarthur / Northbourne Ave, lat: -35.26051, lng: 149.13224}
   - { name: Macgregor,stop_code: Macgregor, lat: -35.2100645, lng: 149.0122952}
-  - { name: Macgregor Shops,stop_code: Macgregor Shops, lat: -35.2100645, lng: 149.0122952}
   - { name: MacKillop College Isabella Campus,stop_code: MacKillop College Isabella Campus, lat: -35.42597, lng: 149.09172}
   - { name: MacKillop College Wanniassa Campus,stop_code: MacKillop College Wanniassa Campus, lat: -35.4056, lng: 149.089774}
   - { name: Macquarie,stop_code: Macquarie, lat: -35.2483414, lng: 149.0600666}
@@ -196,9 +170,7 @@
   - { name: Manuka,stop_code: Manuka, lat: -35.3200096, lng: 149.1341344}
   - { name: Manuka / Captain Cook Cres,stop_code: Manuka / Captain Cook Cres, lat: -35.3217, lng: 149.13445}
   - { name: McKellar,stop_code: McKellar, lat: -35.2174267, lng: 149.0742108}
-  - { name: McKellar Shops,stop_code: McKellar Shops, lat: -35.2182, lng: 149.07555}
   - { name: Melba,stop_code: Melba, lat: -35.2083104, lng: 149.0485366}
-  - { name: Melba Shops,stop_code: Melba Shops, lat: -35.21004, lng: 149.05302}
   - { name: Mentone View / Tharwa Drive,stop_code: Mentone View / Tharwa Drive, lat: -35.45144, lng: 149.0919}
   - { name: Merici College,stop_code: Merici College, lat: -35.266525, lng: 149.137037}
   - { name: Mirrabei Drive / Dam Wall,stop_code: Mirrabei Drive / Dam Wall, lat: -35.177453, lng: 149.124291}
@@ -219,32 +191,26 @@
   - { name: Northbourne Avenue / Antill St,stop_code: Northbourne Avenue / Antill St, lat: -35.248287, lng: 149.134241}
   - { name: North Lyneham,stop_code: North Lyneham, lat: -35.2385618, lng: 149.1221188}
   - { name: O'Connor,stop_code: O'Connor, lat: -35.2640376, lng: 149.1226107}
-  - { name: O'Connor Shops,stop_code: O'Connor Shops, lat: -35.2640376, lng: 149.1226107}
   - { name: Olims Hotel,stop_code: Olims Hotel, lat: -35.27597, lng: 149.1428}
   - { name: Outtrim / Duggan,stop_code: Outtrim / Duggan, lat: -35.435871, lng: 149.097692}
-  - { name: Page Shops,stop_code: Page Shops, lat: -35.2360695, lng: 149.0536554}
+  - { name: Page,stop_code: Page, lat: -35.2360695, lng: 149.0536554}
   - { name: Parliament House,stop_code: Parliament House, lat: -35.3081571, lng: 149.1244592}
   - { name: Paul Coe / Mirrabei Dr,stop_code: Paul Coe / Mirrabei Dr, lat: -35.17467, lng: 149.12005}
   - { name: Pearce,stop_code: Pearce, lat: -35.3625413, lng: 149.0815935}
-  - { name: Pearce Shops,stop_code: Pearce Shops, lat: -35.3625413, lng: 149.0815935}
   - { name: Police College Weston,stop_code: Police College Weston, lat: -35.33018, lng: 149.05458}
   - { name: Proctor / Mead,stop_code: Proctor / Mead, lat: -35.415305, lng: 149.127204}
   - { name: Railway Station Kingston,stop_code: Railway Station Kingston, lat: -35.319602, lng: 149.149083}
   - { name: Red Hill,stop_code: Red Hill, lat: -35.336505, lng: 149.131645}
-  - { name: Red Hill Shops,stop_code: Red Hill Shops, lat: -35.336505, lng: 149.131645}
   - { name: Rivett,stop_code: Rivett, lat: -35.3473758, lng: 149.0365438}
-  - { name: Rivett Shops,stop_code: Rivett Shops, lat: -35.34737, lng: 149.03654}
   - { name: Russell Offices,stop_code: Russell Offices, lat: -35.2973294, lng: 149.1508803}
   - { name: Sainsbury Street,stop_code: Sainsbury Street, lat: -35.3885, lng: 149.09643}
   - { name: Saint Andrews Village Hughes,stop_code: Saint Andrews Village Hughes, lat: -35.328097, lng: 149.088685}
-  - { name: Scullin Shops,stop_code: Scullin Shops, lat: -35.23356, lng: 149.04056}
+  - { name: Scullin,stop_code: Scullin, lat: -35.23356, lng: 149.04056}
   - { name: Shoalhaven / Katherine Ave,stop_code: Shoalhaven / Katherine Ave, lat: -35.16823, lng: 149.12791}
   - { name: Southlands Mawson,stop_code: Southlands Mawson, lat: -35.3650685, lng: 149.0945962}
   - { name: Southwell Park,stop_code: Southwell Park, lat: -35.24573, lng: 149.1321}
   - { name: Spence,stop_code: Spence, lat: -35.194735, lng: 149.062352}
-  - { name: Spence Shops,stop_code: Spence Shops, lat: -35.19968, lng: 149.06763}
   - { name: Spence Terminus,stop_code: Spence Terminus, lat: -35.199684, lng: 149.0676196}
-  - { name: St Clare of Assisi,stop_code: St Clare of Assisi, lat: -35.46063, lng: 149.09627}
   - { name: St Clare of Assisi Primary,stop_code: St Clare of Assisi Primary, lat: -35.4606284, lng: 149.0962704}
   - { name: St Francis Xavier Florey,stop_code: St Francis Xavier Florey, lat: -35.22