Move open transit data experiments to labs
Move open transit data experiments to labs

--- /dev/null
+++ b/labs/myway_api.json.php
@@ -1,1 +1,125 @@
+<?php
+function cleanString($subject)
+{
+	$subject = str_replace("&nbsp;", " ", $subject);
+	$subject = str_replace("&", "&amp;", $subject);
+	$subject = preg_replace('/[^\r\n\t\x20-\x7E\xA0-\xFF]/', '', $subject);
+	$subject = str_replace("  ", " ", $subject);
+	return trim($subject);
+}
+$return = Array();
+/*if (file_exists("mywayresponse.txt")) {
+	@$fh = fopen("mywayresponse.txt", 'r');
+	if ($fh) {
+		$pageHTML = fread($fh, filesize("mywayresponse.txt"));
+		fclose($fh);
+	}
+}*/
+//set POST variables
+$url = 'https://www.action.act.gov.au/ARTS/use_Funcs.asp';
+$field_mapping = Array(
+	"card_number" => "SRNO",
+	"DOBmonth" => "month",
+	"DOBday" => "day",
+	"DOByear" => "year",
+	"secret_answer" => "pwrd",
+	"button" => "button"
+);
+foreach (Array(
+	"card_number",
+	"DOBday",
+	"DOBmonth",
+	"DOByear"
+) as $field_name) {
+	if (isset($_REQUEST[$field_name])) {
+		$fields[$field_name] = filter_var($_REQUEST[$field_name], FILTER_SANITIZE_NUMBER_INT);
+	}
+	else {
+		$return["error"][] = $field_name. " parameter invalid or unspecified";
+	}
+}
+if (isset($_REQUEST['secret_answer'])) {
+	$fields['secret_answer'] = filter_var($_REQUEST['secret_answer'], FILTER_SANITIZE_STRING, Array(
+		FILTER_FLAG_NO_ENCODE_QUOTES,
+		FILTER_FLAG_STRIP_HIGH,
+		FILTER_FLAG_STRIP_LOW
+	));
+}
+else {
+	$return["error"][] = "secret_answer parameter invalid or unspecified";
+}
+$fields['button'] = 'Submit';
+$fields_string = "";
+//url-ify the data for the POST
+foreach ($fields as $key => $value) {
+	if (sizeof($value) === 0) $return['error'][] = $key . " parameter invalid or unspecified";
+	$fields_string.= $field_mapping[$key] . '=' . $value . '&';
+}
+$fields_string = rtrim($fields_string, '&');
+if (!isset($return['error'])) {
+	//open connection
+	$ch = curl_init();
+	//set the url, number of POST vars, POST data
+	curl_setopt($ch, CURLOPT_URL, $url);
+	curl_setopt($ch, CURLOPT_POST, count($fields));
+	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
+	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+	curl_setopt($ch, CURLOPT_HEADER, 0);
+	curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+	//execute post
+	$pageHTML = curl_exec($ch);
+	if (curl_errno($ch)) $return["error"][] = "Network error " . curl_errno($ch) . " " . curl_error($ch) . " " . $url . $fields_string;
+	//close connection
+	curl_close($ch);
+}
 
+if (!isset($return['error'])) {
+	include_once ('simple_html_dom.php');
+	$page = str_get_html($pageHTML);
+	$pageAlerts = $page->find(".smartCardAlert");
+	if (sizeof($pageAlerts) > 0) {
+		$return['error'][] = $pageAlerts[0]->plaintext;
+	}
+	if (!isset($return['error'])) {
+		$tableNum = 0;
+		$tableName = Array(
+			1 => "myway_carddetails",
+			2 => "myway_transactions"
+		);
+		foreach ($page->find("table") as $table) {
+			$tableNum++;
+			$tableColumns = Array();
+			$tableColumnNum = 0;
+			foreach ($table->find("th") as $th) {
+				$tableColumns[$tableColumnNum] = cleanString($th->plaintext);
+				$tableColumnNum++;
+			}
+			$tableRowNum = 0;
+			foreach ($table->find("tr") as $tr) {
+				$tableColumnNum = 0;
+				foreach ($tr->find("td") as $td) {
+					if ($tableNum == 1) $return[$tableName[$tableNum]][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext);
+					else $return[$tableName[$tableNum]][$tableRowNum][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext);
+					$tableColumnNum++;
+				}
+				$tableRowNum++;
+			}
+		}
+	}
+}
+if (sizeof($return) == 0) {
+$return['error'][] = "No data extracted from MyWay website - API may be out of date";
+}
+
+header('Content-Type: text/javascript; charset=utf8');
+// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/');
+header('Access-Control-Max-Age: 3628800');
+header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
+if (isset($_GET['callback'])) {
+	$json = '(' . json_encode($return) . ');'; //must wrap in parens and end with semicolon
+	print_r($_GET['callback'] . $json); //callback is prepended for json-p
+	
+}
+else echo json_encode($return);
+?>
+

--- /dev/null
+++ b/labs/mywaybalance.php
@@ -1,1 +1,64 @@
+<?php
+include ('../include/common.inc.php');
+include_header("MyWay Balance", "mywayBalance", true, false, true);
+$return = Array();
+function printBalance($cardNumber, $date, $pwrd)
+{
+	global $return;
+	$return = json_decode(getPage(curPageURL() . "/myway_api.json.php?card_number=$cardNumber&DOBday={$date[0]}&DOBmonth={$date[1]}&DOByear={$date[2]}&secret_answer=$pwrd"), true);
+    
+        if (isset($return['error'])) {
+            echo "<font color=red>" . var_dump($return['error']) . "</font>";
+        } else {
+		echo "<h2>Balance: " . $return['myway_carddetails']['Card Balance'] . "</h2>";
+		echo '<ul data-role="listview" data-inset="true"><li data-role="list-divider"> Recent Transactions </li>';
+		foreach ($return['myway_transactions'] as $transaction) {
+			echo "<li><b>" . $transaction["Date / Time"] . "</b>";
+                        echo "<br><small>" . $transaction["TX Reference No / Type"]. "</small>";
+                        echo '<p class="ui-li-aside">'.$transaction["TX Amount"].'</p>';
+			echo "</li>";
+		}
+		echo "</ul>";
+	}
+}
+if (isset($_REQUEST['card_number']) && isset($_REQUEST['date']) && isset($_REQUEST['secret_answer'])) {
+	$cardNumber = $_REQUEST['card_number'];
+	$date = explode("/", $_REQUEST['date']);
+	$pwrd = $_REQUEST['secret_answer'];
+	if ($_REQUEST['remember'] == true) {
+		$_COOKIE['card_number'] = $cardNumber;
+		$_COOKIE['date'] = $date;
+		$_COOKIE['secret_answer'] = $pwrd;
+	}
+	printBalance($cardNumber, $date, $pwrd);
+}
+else if (isset($_COOKIE['card_number']) && isset($_COOKIE['date']) && isset($_COOKIE['secret_answer'])) {
+	$cardNumber = $_COOKIE['card_number'];
+	$date = explode("/", $_COOKIE['date']);
+	$pwrd = $_COOKIE['secret_answer'];
+	printBalance($cardNumber, $date, $pwrd);
+}
+else {
+	$date = (isset($_REQUEST['date']) ? filter_var($_REQUEST['date'], FILTER_SANITIZE_STRING) : date("m/d/Y"));
+	echo '<form action="" method="post">
+    <div data-role="fieldcontain">
+        <label for="card_number">Card number</label>
+        <input type="text" name="card_number" id="card_number" value="' . $card_number . '"  />
+    </div>
+    <div data-role="fieldcontain">
+        <label for="date"> Date of birth </label>
+        <input type="text" name="date" id="date" value="' . $date . '"  />
+    </div>
+        <div data-role="fieldcontain">
+        <label for="secret_answer"> Secret question answer </label>
+        <input type="text" name="secret_answer" id="secret_answer" value="' . $secret_answer . '"  />
+    </div>
+        <div data-role="fieldcontain">
+        <label for="remember"> Remember these details? </label>
+        <input type="checkbox" name="remember" id="remember"  checked="yes"  />
+    </div>
+        <input type="submit" value="Go!"></form>';
+}
+include_footer();
+?>
 

file:b/labs/stop.pdf.php (new)
--- /dev/null
+++ b/labs/stop.pdf.php
@@ -1,1 +1,196 @@
+<?php
+include ('../include/common.inc.php');
+$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
+$url = $APIurl . "/json/stop?stop_id=" . $stopid;
+$stop = json_decode(getPage($url));
+$html.= '<table><tr><td><br><br> ';
+$url = $APIurl . "/json/stoproutes?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
+$routes = json_decode(getPage($url));
+foreach ($routes as $route) {
+	$html.= '<br> <a href="trip.php?routeid=' . $route[0] . '&stopid=' . $stopid . '">' . $route[1] . ' - ' . $route[2] . '</a>';
+	$viaPoints = viaPointNames($route[3], $stopid);
+	if ($viaPoints != "") $html.= '<br><small>Via: ' . $viaPoints . '</small>';
+	$html.= "<br>";
+}
+$html.= '</td><td>' . staticmap(Array(
+	0 => Array(
+		$stop[2],
+		$stop[3]
+	)
+) , 0, "iconb", false) . "</td></tr>";
+$url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
+$trips = json_decode(getPage($url));
+$html.= "</table><br><br><table>";
+$html.= "<thead><tr><th>Route</th><th>Time</th></tr></thead>";
+debug(print_r($trips, true));
+foreach ($trips as $row) {
+	$html.= '<tr><td><a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '">' . $row[1][1] . "</a></td>";
+	$html.= '<td>' . midnight_seconds_to_time($row[0]) . '</td>';
+	$html.= '</tr>';
+}
+$html.= '</table>';
+if (sizeof($trips) == 0) $html.= "<center>No trips in the near future.</center>";
+require_once ('lib/tcpdf/config/lang/eng.php');
+require_once ('lib/tcpdf/tcpdf.php');
+// create new PDF document
+class Custom_TCPDF extends TCPDF
+{
+	var $QRCodeURL;
+	function set_QRCodeURL($url)
+	{
+		$this->QRCodeURL = $url;
+	}
+	/**
+	 * This method is used to render the page header.
+	 * It is automatically called by AddPage() and could be overwritten in your own inherited class.
+	 * @public
+	 */
+	public function Header()
+	{
+		if ($this->header_xobjid < 0) {
+			// start a new XObject Template
+			$this->header_xobjid = $this->startTemplate($this->w, $this->tMargin + 10);
+			$headerfont = $this->getHeaderFont();
+			$headerdata = $this->getHeaderData();
+			$this->y = $this->header_margin;
+			if ($this->rtl) {
+				$this->x = $this->w - $this->original_rMargin;
+			}
+			else {
+				$this->x = $this->original_lMargin - 10;
+			}
+			if (isset($this->QRCodeURL)) {
+				// QRCODE,H : QR-CODE Best error correction
+				$style = array(
+					'border' => 1,
+					'padding' => 0,
+					'fgcolor' => array(
+						0,
+						0,
+						0
+					) ,
+					'bgcolor' => false, //array(255,255,255)
+					'module_width' => 1, // width of a single module in points
+					'module_height' => 1
+					// height of a single module in points
+					
+				);
+				$this->write2DBarcode($this->QRCodeURL, 'QRCODE,H', '', '', 25, 25, $style, 'T');
+				$imgy = 50 + 20;
+			}
+			elseif (($headerdata['logo']) AND ($headerdata['logo'] != K_BLANK_IMAGE)) {
+				$imgtype = $this->getImageFileType(K_PATH_IMAGES . $headerdata['logo']);
+				if (($imgtype == 'eps') OR ($imgtype == 'ai')) {
+					$this->ImageEps(K_PATH_IMAGES . $headerdata['logo'], '', '', $headerdata['logo_width']);
+				}
+				elseif ($imgtype == 'svg') {
+					$this->ImageSVG(K_PATH_IMAGES . $headerdata['logo'], '', '', $headerdata['logo_width']);
+				}
+				else {
+					$this->Image(K_PATH_IMAGES . $headerdata['logo'], '', '', $headerdata['logo_width']);
+				}
+				$imgy = $this->getImageRBY();
+			}
+			else {
+				$imgy = $this->y;
+			}
+			$cell_height = round(($this->cell_height_ratio * $headerfont[2]) / $this->k, 2);
+			// set starting margin for text data cell
+			if ($this->getRTL()) {
+				$header_x = $this->original_rMargin + ($headerdata['logo_width'] * 1.1);
+			}
+			else {
+				$header_x = $this->original_lMargin + ($headerdata['logo_width'] * 1.1);
+			}
+			$cw = $this->w - $this->original_lMargin - $this->original_rMargin - ($headerdata['logo_width'] * 1.1);
+			$this->SetTextColor(0, 0, 0);
+			// header title
+			$this->SetFont($headerfont[0], 'B', $headerfont[2] + 1);
+			$this->SetX($header_x);
+			$this->Cell($cw, $cell_height, $headerdata['title'], 0, 1, '', 0, '', 0);
+			// header string
+			$this->SetFont($headerfont[0], $headerfont[1], $headerfont[2]);
+			$this->SetX($header_x);
+			$this->MultiCell($cw, $cell_height, $headerdata['string'], 0, '', 0, 1, '', '', true, 0, false);
+			// print an ending header line
+			//$this->SetLineStyle(array('width' => 0.85 / $this->k, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)));
+			//$this->SetY((2.835 / $this->k) + max($imgy, $this->y));
+			if ($this->rtl) {
+				$this->SetX($this->original_rMargin);
+			}
+			else {
+				$this->SetX($this->original_lMargin);
+			}
+			//$this->Cell(($this->w - $this->original_lMargin - $this->original_rMargin), 0, '', 'T', 0, 'C');
+			$this->endTemplate();
+		}
+		// print header template
+		$x = 0;
+		$dx = 0;
+		if ($this->booklet AND (($this->page % 2) == 0)) {
+			// adjust margins for booklet mode
+			$dx = ($this->original_lMargin - $this->original_rMargin);
+		}
+		if ($this->rtl) {
+			$x = $this->w + $dx;
+		}
+		else {
+			$x = 0 + $dx;
+		}
+		$this->printTemplate($this->header_xobjid, $x, 0, 0, 0, '', '', false);
+	}
+}
+$pdf = new Custom_TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
+// set document information
+$pdf->SetCreator(PDF_CREATOR);
+$pdf->SetAuthor('bus.lambdacomplex.org');
+$pdf->SetTitle($stop[1]);
+// set default header data
+$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $stop[1] . " Timetable", "Some description of customization like Weekdays, 9am-10am");
+$pdf->set_QRCodeURL(curPageURL() . "stop.php?stopid=" . $_REQUEST['stopid']);
+// set header and footer fonts
+$pdf->setHeaderFont(Array(
+	PDF_FONT_NAME_MAIN,
+	'',
+	PDF_FONT_SIZE_MAIN
+));
+$pdf->setFooterFont(Array(
+	PDF_FONT_NAME_DATA,
+	'',
+	PDF_FONT_SIZE_DATA
+));
+// set default monospaced font
+$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
+//set margins
+$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
+$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
+$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
+//set auto page breaks
+$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
+//set image scale factor
+$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
+//set some language-dependent strings
+$pdf->setLanguageArray($l);
+// ---------------------------------------------------------
+// set default font subsetting mode
+$pdf->setFontSubsetting(true);
+// Set font
+// dejavusans is a UTF-8 Unicode font, if you only need to
+// print standard ASCII chars, you can use core fonts like
+// helvetica or times to reduce file size.
+$pdf->SetFont('helvetica', '', 14, '', true);
+// Add a page
+// This method has several options, check the source code documentation for more information.
+$pdf->AddPage();
+// Print text using writeHTMLCell()
+$pdf->writeHTMLCell($w = 0, $h = 0, $x = '', $y = '', $html, $border = 0, $ln = 1, $fill = 0, $reseth = true, $align = '', $autopadding = true);
+// ---------------------------------------------------------
+// Close and output PDF document
+// This method has several options, check the source code documentation for more information.
+$pdf->Output('example_001.pdf', 'I');
+//============================================================+
+// END OF FILE
+//============================================================+
 
+?>
+

--- /dev/null
+++ b/labs/tripPlannerTester.php
@@ -1,1 +1,88 @@
+<?php
+include ('../include/common.inc.php');
+//Test code to grab transit times
+// make sure to sleep(10);
+$boundingBoxes = Array(
+	"belconnen" => Array(
+		"startlat" => - 35.1828,
+		"startlon" => 149.0295,
+		"finishlat" => - 35.2630,
+		"finishlon" => 149.1045,
+	) , 
+	"north gungahlin civic" => Array(
+		"startlat" => - 35.2652,
+		"startlon" => 149.1045,
+		"finishlat" => -35.2955,
+		"finishlon" => 149.1559, 
+	) ,
+	"west duffy" => Array(
+		"startlat" => - 35.3252,
+		"startlon" => 149.0240,
+		"finishlat" => - 35.3997,
+		"finishlon" => 149.0676,
+	) , 
+	"central south" => Array(
+		"startlat" => - 35.3042,
+		"startlon" => 149.0762,
+		"finishlat" => - 35.3370,
+		"finishlon" => 149.1806,
+	) , 
+	"south" => Array(
+		"startlat" => - 35.3403,
+		"startlon" => 149.0714,
+		"finishlat" => - 35.4607,
+		"finishlon" => 149.1243,
+	) 
+	
+);
+$latdeltasize = 0.025;
+$londeltasize = 0.025;
+$from = "Barry Drive";
+$fromPlace = (startsWith($from, "-") ? $from : geocode($from, false));
+$startTime = "9:00 am";
+$startDate = "21/03/2011";
+$counter = 0;
+$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
+echo "<pre>";
+echo "lat,lon,time,latdeltasize, londeltasize, region key name\n";
 
+foreach ($boundingBoxes as $key => $boundingBox) {
+	for ($i = $boundingBox['startlat']; $i >= $boundingBox['finishlat']; $i-= $latdeltasize) {
+		for ($j = $boundingBox['startlon']; $j <= $boundingBox['finishlon']; $j+= $londeltasize) {
+			$url = $otpAPIurl . "ws/plan?date=" . urlencode($startDate) . "&time=" . urlencode($startTime) . "&mode=TRANSIT%2CWALK&optimize=QUICK&maxWalkDistance=840&wheelchair=false&toPlace=" . $i . "," . $j . "&fromPlace=$fromPlace&intermediatePlaces=";
+			$ch = curl_init($url);
+			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+			curl_setopt($ch, CURLOPT_HEADER, 0);
+			curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+				"Accept: application/json"
+			));
+			curl_setopt($ch, CURLOPT_TIMEOUT, 5);
+			$page = curl_exec($ch);
+			if (curl_errno($ch)) {
+				echo "Trip planner temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch);
+			}
+			else {
+				$tripplan = json_decode($page);
+				if (isset($tripplan->error)) var_dump($tripplan->error);
+				$times = Array();
+				if (is_array($tripplan->plan->itineraries->itinerary)) {
+					
+					foreach ($tripplan->plan->itineraries->itinerary as $itineraryNumber => $itinerary) {
+						$times[] = floor($itinerary->duration / 60000);
+					}
+
+				}
+				else {
+					$times[] = floor($tripplan->plan->itineraries->itinerary->duration / 60000);
+				}
+				echo "$i,$j," . min($times) . ",$latdeltasize, $londeltasize,$key\n";
+			}
+			flush();
+			ob_flush();
+			curl_close($ch);
+		}
+	}
+}
+echo "</pre>";
+?>
+

file:a/myway_api.json.php (deleted)
--- a/myway_api.json.php
+++ /dev/null
@@ -1,125 +1,1 @@
-<?php
-function cleanString($subject)
-{
-	$subject = str_replace("&nbsp;", " ", $subject);
-	$subject = str_replace("&", "&amp;", $subject);
-	$subject = preg_replace('/[^\r\n\t\x20-\x7E\xA0-\xFF]/', '', $subject);
-	$subject = str_replace("  ", " ", $subject);
-	return trim($subject);
-}
-$return = Array();
-/*if (file_exists("mywayresponse.txt")) {
-	@$fh = fopen("mywayresponse.txt", 'r');
-	if ($fh) {
-		$pageHTML = fread($fh, filesize("mywayresponse.txt"));
-		fclose($fh);
-	}
-}*/
-//set POST variables
-$url = 'https://www.action.act.gov.au/ARTS/use_Funcs.asp';
-$field_mapping = Array(
-	"card_number" => "SRNO",
-	"DOBmonth" => "month",
-	"DOBday" => "day",
-	"DOByear" => "year",
-	"secret_answer" => "pwrd",
-	"button" => "button"
-);
-foreach (Array(
-	"card_number",
-	"DOBday",
-	"DOBmonth",
-	"DOByear"
-) as $field_name) {
-	if (isset($_REQUEST[$field_name])) {
-		$fields[$field_name] = filter_var($_REQUEST[$field_name], FILTER_SANITIZE_NUMBER_INT);
-	}
-	else {
-		$return["error"][] = $field_name. " parameter invalid or unspecified";
-	}
-}
-if (isset($_REQUEST['secret_answer'])) {
-	$fields['secret_answer'] = filter_var($_REQUEST['secret_answer'], FILTER_SANITIZE_STRING, Array(
-		FILTER_FLAG_NO_ENCODE_QUOTES,
-		FILTER_FLAG_STRIP_HIGH,
-		FILTER_FLAG_STRIP_LOW
-	));
-}
-else {
-	$return["error"][] = "secret_answer parameter invalid or unspecified";
-}
-$fields['button'] = 'Submit';
-$fields_string = "";
-//url-ify the data for the POST
-foreach ($fields as $key => $value) {
-	if (sizeof($value) === 0) $return['error'][] = $key . " parameter invalid or unspecified";
-	$fields_string.= $field_mapping[$key] . '=' . $value . '&';
-}
-$fields_string = rtrim($fields_string, '&');
-if (!isset($return['error'])) {
-	//open connection
-	$ch = curl_init();
-	//set the url, number of POST vars, POST data
-	curl_setopt($ch, CURLOPT_URL, $url);
-	curl_setopt($ch, CURLOPT_POST, count($fields));
-	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
-	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-	curl_setopt($ch, CURLOPT_HEADER, 0);
-	curl_setopt($ch, CURLOPT_TIMEOUT, 30);
-	//execute post
-	$pageHTML = curl_exec($ch);
-	if (curl_errno($ch)) $return["error"][] = "Network error " . curl_errno($ch) . " " . curl_error($ch) . " " . $url . $fields_string;
-	//close connection
-	curl_close($ch);
-}
 
-if (!isset($return['error'])) {
-	include_once ('simple_html_dom.php');
-	$page = str_get_html($pageHTML);
-	$pageAlerts = $page->find(".smartCardAlert");
-	if (sizeof($pageAlerts) > 0) {
-		$return['error'][] = $pageAlerts[0]->plaintext;
-	}
-	if (!isset($return['error'])) {
-		$tableNum = 0;
-		$tableName = Array(
-			1 => "myway_carddetails",
-			2 => "myway_transactions"
-		);
-		foreach ($page->find("table") as $table) {
-			$tableNum++;
-			$tableColumns = Array();
-			$tableColumnNum = 0;
-			foreach ($table->find("th") as $th) {
-				$tableColumns[$tableColumnNum] = cleanString($th->plaintext);
-				$tableColumnNum++;
-			}
-			$tableRowNum = 0;
-			foreach ($table->find("tr") as $tr) {
-				$tableColumnNum = 0;
-				foreach ($tr->find("td") as $td) {
-					if ($tableNum == 1) $return[$tableName[$tableNum]][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext);
-					else $return[$tableName[$tableNum]][$tableRowNum][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext);
-					$tableColumnNum++;
-				}
-				$tableRowNum++;
-			}
-		}
-	}
-}
-if (sizeof($return) == 0) {
-$return['error'][] = "No data extracted from MyWay website - API may be out of date";
-}
-
-header('Content-Type: text/javascript; charset=utf8');
-// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/');
-header('Access-Control-Max-Age: 3628800');
-header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
-if (isset($_GET['callback'])) {
-	$json = '(' . json_encode($return) . ');'; //must wrap in parens and end with semicolon
-	print_r($_GET['callback'] . $json); //callback is prepended for json-p
-	
-}
-else echo json_encode($return);
-?>
-

file:a/mywaybalance.php (deleted)
--- a/mywaybalance.php
+++ /dev/null
@@ -1,64 +1,1 @@
-<?php
-include ('include/common.inc.php');
-include_header("MyWay Balance", "mywayBalance", true, false, true);
-$return = Array();
-function printBalance($cardNumber, $date, $pwrd)
-{
-	global $return;
-	$return = json_decode(getPage(curPageURL() . "/myway_api.json.php?card_number=$cardNumber&DOBday={$date[0]}&DOBmonth={$date[1]}&DOByear={$date[2]}&secret_answer=$pwrd"), true);
-    
-        if (isset($return['error'])) {
-            echo "<font color=red>" . var_dump($return['error']) . "</font>";
-        } else {
-		echo "<h2>Balance: " . $return['myway_carddetails']['Card Balance'] . "</h2>";
-		echo '<ul data-role="listview" data-inset="true"><li data-role="list-divider"> Recent Transactions </li>';
-		foreach ($return['myway_transactions'] as $transaction) {
-			echo "<li><b>" . $transaction["Date / Time"] . "</b>";
-                        echo "<br><small>" . $transaction["TX Reference No / Type"]. "</small>";
-                        echo '<p class="ui-li-aside">'.$transaction["TX Amount"].'</p>';
-			echo "</li>";
-		}
-		echo "</ul>";
-	}
-}
-if (isset($_REQUEST['card_number']) && isset($_REQUEST['date']) && isset($_REQUEST['secret_answer'])) {
-	$cardNumber = $_REQUEST['card_number'];
-	$date = explode("/", $_REQUEST['date']);
-	$pwrd = $_REQUEST['secret_answer'];
-	if ($_REQUEST['remember'] == true) {
-		$_COOKIE['card_number'] = $cardNumber;
-		$_COOKIE['date'] = $date;
-		$_COOKIE['secret_answer'] = $pwrd;
-	}
-	printBalance($cardNumber, $date, $pwrd);
-}
-else if (isset($_COOKIE['card_number']) && isset($_COOKIE['date']) && isset($_COOKIE['secret_answer'])) {
-	$cardNumber = $_COOKIE['card_number'];
-	$date = explode("/", $_COOKIE['date']);
-	$pwrd = $_COOKIE['secret_answer'];
-	printBalance($cardNumber, $date, $pwrd);
-}
-else {
-	$date = (isset($_REQUEST['date']) ? filter_var($_REQUEST['date'], FILTER_SANITIZE_STRING) : date("m/d/Y"));
-	echo '<form action="" method="post">
-    <div data-role="fieldcontain">
-        <label for="card_number">Card number</label>
-        <input type="text" name="card_number" id="card_number" value="' . $card_number . '"  />
-    </div>
-    <div data-role="fieldcontain">
-        <label for="date"> Date of birth </label>
-        <input type="text" name="date" id="date" value="' . $date . '"  />
-    </div>
-        <div data-role="fieldcontain">
-        <label for="secret_answer"> Secret question answer </label>
-        <input type="text" name="secret_answer" id="secret_answer" value="' . $secret_answer . '"  />
-    </div>
-        <div data-role="fieldcontain">
-        <label for="remember"> Remember these details? </label>
-        <input type="checkbox" name="remember" id="remember"  checked="yes"  />
-    </div>
-        <input type="submit" value="Go!"></form>';
-}
-include_footer();
-?>
 

file:a/stop.pdf.php (deleted)
--- a/stop.pdf.php
+++ /dev/null
@@ -1,196 +1,1 @@
-<?php
-include ('include/common.inc.php');
-$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
-$url = $APIurl . "/json/stop?stop_id=" . $stopid;
-$stop = json_decode(getPage($url));
-$html.= '<table><tr><td><br><br> ';
-$url = $APIurl . "/json/stoproutes?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
-$routes = json_decode(getPage($url));
-foreach ($routes as $route) {
-	$html.= '<br> <a href="trip.php?routeid=' . $route[0] . '&stopid=' . $stopid . '">' . $route[1] . ' - ' . $route[2] . '</a>';
-	$viaPoints = viaPointNames($route[3], $stopid);
-	if ($viaPoints != "") $html.= '<br><small>Via: ' . $viaPoints . '</small>';
-	$html.= "<br>";
-}
-$html.= '</td><td>' . staticmap(Array(
-	0 => Array(
-		$stop[2],
-		$stop[3]
-	)
-) , 0, "iconb", false) . "</td></tr>";
-$url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
-$trips = json_decode(getPage($url));
-$html.= "</table><br><br><table>";
-$html.= "<thead><tr><th>Route</th><th>Time</th></tr></thead>";
-debug(print_r($trips, true));
-foreach ($trips as $row) {
-	$html.= '<tr><td><a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '">' . $row[1][1] . "</a></td>";
-	$html.= '<td>' . midnight_seconds_to_time($row[0]) . '</td>';
-	$html.= '</tr>';
-}
-$html.= '</table>';
-if (sizeof($trips) == 0) $html.= "<center>No trips in the near future.</center>";
-require_once ('lib/tcpdf/config/lang/eng.php');
-require_once ('lib/tcpdf/tcpdf.php');
-// create new PDF document
-class Custom_TCPDF extends TCPDF
-{
-	var $QRCodeURL;
-	function set_QRCodeURL($url)
-	{
-		$this->QRCodeURL = $url;
-	}
-	/**
-	 * This method is used to render the page header.
-	 * It is automatically called by AddPage() and could be overwritten in your own inherited class.
-	 * @public
-	 */
-	public function Header()
-	{
-		if ($this->header_xobjid < 0) {
-			// start a new XObject Template
-			$this->header_xobjid = $this->startTemplate($this->w, $this->tMargin + 10);
-			$headerfont = $this->getHeaderFont();
-			$headerdata = $this->getHeaderData();
-			$this->y = $this->header_margin;
-			if ($this->rtl) {
-				$this->x = $this->w - $this->original_rMargin;
-			}
-			else {
-				$this->x = $this->original_lMargin - 10;
-			}
-			if (isset($this->QRCodeURL)) {
-				// QRCODE,H : QR-CODE Best error correction
-				$style = array(
-					'border' => 1,
-					'padding' => 0,
-					'fgcolor' => array(
-						0,
-						0,
-						0
-					) ,
-					'bgcolor' => false, //array(255,255,255)
-					'module_width' => 1, // width of a single module in points
-					'module_height' => 1
-					// height of a single module in points
-					
-				);
-				$this->write2DBarcode($this->QRCodeURL, 'QRCODE,H', '', '', 25, 25, $style, 'T');
-				$imgy = 50 + 20;
-			}
-			elseif (($headerda