<?php
// Pascal Triangle - RJM Programming - May, 2014
$numlines = 0;
if (isset($_GET['numlines'])) {
  $numlines = $_GET['numlines'];
}
?>
<html>
<head>
<title>Pascal Triangle</title>
<script type='text/javascript'>
var numlines = <?php echo $numlines; ?>;

function display(isnow) {
numlines = isnow;
var snum = 1, fcolspan = 0, lcolspan = 1, i = 0, j = 0, tbih = "", sadd = 0, mone = -1, k = 0, ii=0, iii=0, ki=0;
var spower = 0, tb = document.getElementById('bresults');
var prefixtd = "<td></td>";
var suffixtd = "<td></td>";
if (numlines > 0) {
   var prev = new Array(eval(numlines * 2 + 4));
   for (i=eval(-2 - numlines); i<eval(numlines + 2); i++) {
     prev[i] = 1;
   }
   fcolspan = numlines;
   lcolspan = eval((numlines * 2) - fcolspan);
   for (i=1; i<=numlines; i++) {
   if ((i % 2) == 1) {
     ii = eval((i - 1) / 2);
     iii = eval((i - 1) / 2 + 1);
   } else {
     ii = eval(i / 2);
     iii = eval(i / 2 + 1);
   }
     prefixtd = "<td></td>";
     snum = 0;
     sadd = eval(i - 1);
     spower = sadd;
     mone = -1;
     if (i == numlines) {
       tbih = tbih.replace("<td></td><td></td>", "<td></td>") + "<tr><td colspan=" + fcolspan + ">" + "" + "</td><td>1</td>" + prefixtd;
       prefixtd = "";
       for (j=2; j<=ii; j++) {
         if (prev[k] == undefined) prev[k] = i;
         k = eval(j - 1);
         snum = eval(prev[k] + prev[k - 1]); //  eval(snum + sadd);
         tbih = tbih.replace("<td></td><td></td>", "<td></td>") + prefixtd + "<td>" + snum + "</td>" + suffixtd;
         prefixtd = "<td></td>";
         mone = 1;
         sadd = eval(sadd + 1);
         prev[-k] = snum;
       }
       prefixtd = "";
       for (j=iii; j<i; j++) {
         k = eval(j - 1);
         if (prev[k] == undefined) prev[k] = i;
         snum = eval(prev[k] + prev[k - 1]); //eval(snum + spower);
         prev[-k] = snum;
         spower = 0;
         tbih = tbih.replace("<td></td><td></td>", "<td></td>") + prefixtd + "<td>" + snum + "</td>" + suffixtd;
         prefixtd = "<td></td>";
         mone = 1;
         sadd = eval(sadd - 1);
       }
       tbih = tbih.replace("<td></td><td></td>", "<td></td>") + "<td>1</td></tr>";       
     } else if (i == 1) {
       tbih = tbih + "<tr><td colspan=" + fcolspan + ">" + "" + "</td><td>1</td><td colspan=" + lcolspan + ">" + "" + "</td></tr>";
       prev[0] = 1;
     } else {
       tbih = tbih + "<tr><td colspan=" + fcolspan + ">" + "" + "</td><td>1</td>" + prefixtd;
       prefixtd = "";
       for (j=2; j<=eval(0 + ii); j++) {
         k = eval(j - 1);
         if (prev[k] == undefined) prev[k] = i;
         snum = eval(prev[k] + prev[k - 1]); // eval(snum + sadd);
         tbih = tbih.replace("<td></td><td></td>", "<td></td>") + prefixtd + "<td>" + snum + "</td>" + suffixtd;
         prefixtd = "<td></td>";
         mone = 1;
         sadd = eval(sadd + 1);
         prev[-k] = snum;
       }
       prefixtd = "";
       for (j=iii; j<i; j++) {
         k = eval(j - 1);
         if (prev[k] == undefined) prev[k] = i;
         snum = eval(prev[k] + prev[k - 1]); // eval(snum + spower);
         prev[-k] = snum;
         spower = 0;
         tbih = tbih.replace("<td></td><td></td>", "<td></td>") + prefixtd + "<td>" + snum + "</td>" + suffixtd;
         prefixtd = "<td></td>";
         mone = 1;
         sadd = eval(sadd - 1);
       }
       tbih = tbih.replace("<td></td><td></td>", "<td></td>") + "<td>1</td><td colspan=" + lcolspan + ">" + "" + "</td></tr>";       
     }
     fcolspan = eval(fcolspan - 1);
     lcolspan = eval((numlines * 2) - (i * 2) - fcolspan);
     for (ki=eval(-2 - numlines); ki<=0; ki++) {
      prev[Math.abs(ki)] = prev[ki];
     }


   }
   tb.innerHTML = tbih;
   document.getElementById('mylines').innerHTML = numlines + ' rows';
   document.getElementById('mylines').style.display = 'block';
}
}
</script>
</head>
<body onload="display(<?php echo $numlines; ?>);" align='center' style='background-color: silver;'>
<h1 align='center'>Pascal Triangle</h1>
<h3 id='mylines' align='center' style='display: none;'><?php echo $numlines; ?> rows</h3>
<table align='center'><tr><td>How many rows? <input type='number' id='howmay' name='howmany' onchange='display(this.value);' value='<?php echo $numlines; ?>'></input></td></tr></table>
<table id='results' align='center' style='background-color: yellow;'>
<tbody id='bresults' align='center'>
</tbody>
</table>
</body>
</html>

