<?php
   // ob_tester.php - Test ob_start and ob_end_flush - RJM Programming, August 2014
   date_default_timezone_set('Australia/Perth');
   $goes = 200;
   if (isset($_GET['goes'])) {
     if ($_GET['goes'] != "") $goes = $_GET['goes'];
   }
   $suffix = " without ob_start";
   $sru = str_replace("copy_", "", str_replace("teecopy_", "", str_replace("?" . $_SERVER['QUERY_STRING'], "", $_SERVER['REQUEST_URI']))); 
   $jf = explode("/", $sru);
   if ($jf[sizeof($jf) - 1] == "") $jf[sizeof($jf) - 1] = "ob_test.php";
   $asuff = "<a id='a1' target=_blank title='Back (using ob_start)' href='" . $sru . "?ob_start=y&goes=" . $goes . "'>Back (using ob_start)</a><br><a id='a2' target=_blank title='Back (using ob_start)' href='" . $sru . "?ob_start=Yes&goes=" . $goes . "'>Back (using ob_start and copy)</a><br><a id='a3' target=_blank title='Back (using command line tee copy)' href='" . $sru . "?ob_start=y&tee=y&goes=" . $goes . "'>Back (using command line tee copy)</a>&nbsp;<br>";
   $sdate = date('l jS \of F Y h:i:s A');
   
   if (isset($_GET['tee'])) {
     exec("cat " . dirname(__FILE__) . "/" . $jf[sizeof($jf) - 1] . " | tee " . dirname(__FILE__) . "/teecopy_" . $jf[sizeof($jf) - 1]);
     header("Location: " . str_replace("Yes", "y", str_replace($jf[sizeof($jf) - 1], "teecopy_" . $jf[sizeof($jf) - 1], $sru)));
   }
   
   if (isset($_GET['ob_start'])) {
     $suffix = " with ob_start";
     $asuff = "<a id='a1' target=_blank title='Back (not using ob_start)' href='" . $sru . "?goes=" . $goes . "'>Back (not using ob_start)</a><br><a id='a2' target=_blank title='Back (using ob_start)' href='" . $sru . "?ob_start=Yes&goes=" . $goes . "'>Back (using ob_start and copy)</a><br><a id='a3' target=_blank title='Back (using command line tee copy)' href='" . $sru . "?ob_start=y&tee=y&goes=" . $goes . "'>Back (using command line tee copy)</a>&nbsp;<br>";
     ob_start();
   }
   
   $htmlis = "<html><head>
<style>

table { border-collapse: collapse; }

tr.even { background-color: #C2C8D4; }

tr.over { background-color: #8797B7; }

td {
  border-bottom: 1px solid #C2C8D4;
  padding: 5px;
}

th {
  border-right: 2px solid #FFF;
  color: #FFF;
  padding-right: 40px;
  padding-left: 20px;
  background-color: #626975;

}

th.sortUp {
  background: #626975 url(http://www.rjmprogramming.com.au/Javascript/jQuery/SortableTable/jquery/images/asc.gif) no-repeat right center;
}

th.sortDown {
  background: #626975 url(http://www.rjmprogramming.com.au/Javascript/jQuery/SortableTable/jquery/images/desc.gif) no-repeat right center;
}

</style>

<script type='text/javascript' src='http://www.rjmprogramming.com.au/Javascript/jQuery/SortableTable/jquery/jquery-latest.js'></script>
<script type='text/javascript' src='http://www.rjmprogramming.com.au/Javascript/jQuery/SortableTable/jquery/jquery.tablesorter.js'></script>
<script type='text/javascript'>

var goes=" . $goes . ";

function showTime(intm, jtm) {
  var wasgoes = eval(goes % 6000);
  var d = new Date();
  var sexp = intm.split(':');
  var ssecs = sexp[sexp.length -1].split(' ');
  var eexp = d.toString().split(':');
  var esecs = eexp[eexp.length -1].split(' ');
  if (esecs[0] < ssecs[0]) {
    goes = prompt('The ' + goes + ' tables took ' + eval(((60 + esecs[0] - ssecs[0]) % 60)) + ' seconds" . $suffix . ".', 200);
  } else {
    goes = prompt('The ' + goes + ' tables took ' + eval(((esecs[0] - ssecs[0]) % 60)) + ' seconds" . $suffix . ".', 200);
  }
  if (eval(goes % 6000) != wasgoes) {
    goes = eval(goes % 6000);
    document.getElementById('a1').href = document.getElementById('a1').href.replace('goes=' + wasgoes, 'goes=' + goes); 
    document.getElementById('a2').href = document.getElementById('a2').href.replace('goes=' + wasgoes, 'goes=' + goes); 
    document.getElementById('a3').href = document.getElementById('a3').href.replace('goes=' + wasgoes, 'goes=' + goes); 
  }
}

\$(document).ready(function() {
  \$('tr').mouseover(function() {
    \$(this).addClass('over');
  });
  \$('tr').mouseout(function() {
    \$(this).removeClass('over');
  });
  \$('tr:even').addClass('even');
  \$('#myt0').tablesorter({
    sortList:[[1,0]],
    cssAcc: 'sortUp',
    cssDesc: 'sortDown',
    widgets: ['zebra']
  });
  showTime('" . $sdate  . "');
});
</script>
</head><body>" . $asuff;

  for ($i=0; $i<$goes; $i++) {
    $htmlis .= "<table title='A" . $i . "' id='myt" . $i . "' class='tablesorter' cellpadding=5 cellspacing=5 align='center' border=7><thead><th>Country</th><th>Population</th><th>Crude Birth Rate</th></thead><tr><td>China</td><td>1347000000</td><td>12</td><tr><td>India</td><td>1241000000</td><td>22</td><tr><td>United States</td><td>312000000</td><td>14</td><tr><td>Indonesia</td><td>238000000</td><td>18</td><tr><td>Brazil</td><td>197000000</td><td>15</td><tr><td>Pakistan</td><td>177000000</td><td>27</td><tr><td>Nigeria</td><td>162000000</td><td>40</td><tr><td>Bangladesh</td><td>151000000</td><td>20</td><tr><td>Russia</td><td>143000000</td><td>13</td><tr><td>Japan</td><td>128000000</td><td>8</td><tr><td>Mexico</td><td>115000000</td><td>19</td><tr><td>Philippines</td><td>96000000</td><td>25</td><tr><td>Vietnam</td><td>88000000</td><td>16</td><tr><td>Ethiopia</td><td>87000000</td><td>31</td><tr><td>Germany</td><td>81800000</td><td>8</td><tr><td>Egypt</td><td>82600000</td><td>23</td><tr><td>Iran</td><td>78000000</td><td>17</td><tr><td>Turkey</td><td>74000000</td><td>18</td><tr><td>Thailand</td><td>69500000</td><td>12</td><tr><td>Congo</td><td>67800000</td><td>43</td><tr><td>France</td><td>63300000</td><td>13</td><tr><td>United Kingdom</td><td>62700000</td><td>13</td><tr><td>Italy</td><td>60800000</td><td>9</td></table>";
  }
  $htmlis .= "<br><div align='center'><a title='Back' href='/PHP/JSON/ArrayData/json_array_post.php?ask=y'>Back</a></div></body></html>";
  echo $htmlis;
   
   
  if (isset($_GET['ob_start'])) {
     if ($_GET['ob_start'] == "Yes") {
       file_put_contents(dirname(__FILE__) . "/copy_" . $jf[sizeof($jf) - 1], ob_get_contents());
       ob_end_clean();
       header("Location: " . str_replace("Yes", "y", str_replace($jf[sizeof($jf) - 1], "copy_" . $jf[sizeof($jf) - 1], $sru)));
     } else {
       ob_end_flush();
     }
  }
   
?>