<?php
 // wordtree_chart.php
 // Using Google Wordtree Chart as of https://developers.google.com/chart/interactive/docs/gallery/wordtree
 $done = false;
 $adata = "";
 $predata = "xxx";
 $isxml = false;
 $bextras = "<div id='pextras' style='display:none;background-color:white;'> </div> ";
 $docb = false;
 $word = "cats";
 if (isset($_GET['word'])) $word = urldecode($_GET['word']);
 if (isset($_POST['word'])) $word = urldecode($_POST['word']);
 $data = "  ['cats are better than dogs'],
            ['cats eat kibble'],
            ['cats are better than hamsters'],
            ['cats are awesome'],
            ['cats are people too'],
            ['cats eat mice'],
            ['cats meowing'],
            ['cats in the cradle'],
            ['cats eat mice'],
            ['cats in the cradle lyrics'],
            ['cats eat kibble'],
            ['cats for adoption'],
            ['cats are family'],
            ['cats eat mice'],
            ['cats are better than kittens'],
            ['cats are evil'],
            ['cats are weird'],
            ['cats eat mice'],
";
 $url = "";
 if ((isset($_GET['url']) || isset($_POST['url'])) && !isset($_GET['data']) && !isset($_POST['data'])) {
  if (isset($_GET['url'])) $url = urldecode($_GET['url']);
  if (isset($_POST['url'])) $url = urldecode($_POST['url']);
  if (strpos(("*" . $url), "*file:") !== false) {
       $data = file_get_contents(dirname(__FILE__) . "/" . str_replace("file://", "", str_replace("file:///", "/", str_replace("/../../../", "/", urldecode($_GET['url'])))));   // eg. file://c/windows/proxy.pac
  } else {
       $data = file_get_contents($url);
  }
 }
 if (isset($_GET['data'])) {
  if (isset($_GET['url'])) $url = urldecode($_GET['url']);
  if (isset($_POST['url'])) $url = urldecode($_POST['url']);
   $data = urldecode($_GET['data']);
 } else if (isset($_POST['data'])) {
  if (isset($_GET['url'])) $url = urldecode($_GET['url']);
  if (isset($_POST['url'])) $url = urldecode($_POST['url']);
   $data = urldecode($_POST['data']);
 } // else {
 if (1 == 1) {
 $adata = $data;
 if ((isset($_GET['url']) || isset($_POST['url'])) && (($data != "") || strpos((strtolower($url) . "*"), ".html*") !== false || strpos((strtolower($url) . "*"), ".htm*") !== false || strpos((strtolower($url) . "*"), ".xml*") !== false    )) {
  if (1 == 11) {
  $data = "  ['test three'], ";
  } else {
  try {
  $doc = new DOMDocument();
  $doc->preserveWhiteSpace = FALSE;
  $before = libxml_use_internal_errors(true);
  if (strpos(strtolower($url) . "?", ".xml?") !== false) {
  $isxml = true;
  $doc->loadXML($data);
  $predata = "";
  $data = $doc->textContent;
  $suffix = ".";
  $phrases = explode(".", $data);
  $data = ""; //$predata;
  for ($i=0; $i<sizeof($phrases); $i++) {
    if (($i + 1) >= sizeof($phrases)) $suffix = "";
    $predata .= "  ['";
    $predata .= $phrases[$i] . $suffix . "'], \n";
  }
  $data = $predata;
  $done = true;
  $adata = "";
  } else {
  $parts = explode("head>", $data);
  if (sizeof($parts) > 1) {
    $data = substr($parts[0], 0, (strlen($parts[0]) - 1)) . $parts[2];
  }
  $doc->loadHTML($data);
  $data = $doc->textContent;
  $predata = "";
  $suffix = ".";
  $lines = explode("\n", $data);
  $data = ""; //$predata;
  for ($l=0; $l<sizeof($lines); $l++) {
  if (str_replace(" ","",str_replace("\r","",$lines[$l])) != "") {
  $phrases = explode(".", str_replace("\r","",$lines[$l]));
  for ($i=0; $i<sizeof($phrases); $i++) {
    if (($i + 1) >= sizeof($phrases)) $suffix = "";
    $semic = explode(";", $phrases[$i]);
    for ($ii=0; $ii<sizeof($semic); $ii++) {
    $predata .= "  ['";
    $predata .= str_replace("  ", " ", str_replace("  ", " ", str_replace("  ", " ", str_replace("  ", " ", str_replace("\n", " ", str_replace("[", " ", str_replace("]", " ", str_replace("'", " ", $semic[$ii])))))))) . "'], \n";
    }
  }
  }
  }
  $data = $predata;
  $done = true;
  $adata = "";
  }
  libxml_use_internal_errors($before);  
  $docb = true;
  } catch (Exception $e) {
  throw new Exception( 'Something really wrong', 0, $e);
  }

 }
 } 
 if (!$done && $adata != "" && (isset($_GET['url']) || isset($_POST['url']))) {
  $lines = explode("\n", $adata);
  $data = ""; //$predata;
  for ($l=0; $l<sizeof($lines); $l++) {
  if (str_replace(" ","",str_replace("\r","",$lines[$l])) != "") {
  $phrases = explode(".", str_replace("\r","",$lines[$l]));
  for ($i=0; $i<sizeof($phrases); $i++) {
    if (($i + 1) >= sizeof($phrases)) $suffix = "";
    $semic = explode(";", $phrases[$i]);
    for ($ii=0; $ii<sizeof($semic); $ii++) {
    $predata .= "  ['";
    $predata .= str_replace("  ", " ", str_replace("  ", " ", str_replace("  ", " ", str_replace("  ", " ", str_replace("\n", " ", str_replace("[", " ", str_replace("]", " ", str_replace("'", " ", $semic[$ii])))))))) . "'], \n";
    }
  }
  }
  }
  $data = $predata;
 }
 }

?>
<!doctype html><html>
  <head> <script type="text/javascript" src="http://www.rjmprogramming.com.au/gchartgen.js"></script>
    <title>Google Wordtree Chart - RJM Programming - December, 2014 <?php if ($url != "") echo " ... " . $url; ?></title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=0.5, maximum-scale=4, user-scalable=yes" />
    <link href='//www.rjmprogramming.com.au/PHP/emboss_h1.css' rel='stylesheet' type='text/css'>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      var done=0;
      var doask=1;
      
      google.load("visualization", "1.1", {packages:["wordtree"]});
      google.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable(
          [ ['Phrases'],
            <?php echo $data; ?>
          ]
        );

        var options = {
          wordtree: {
            format: 'implicit',
            word: '<?php echo $word; ?>'
          }
        };

        var chart = new google.visualization.WordTree(document.getElementById('wordtree_basic'));
        chart.draw(data, options);
      }
      
  
function process(infilecontents) {
    if (infilecontents != null) {
        document.getElementById("submit").click();
    }
}

function readBlob(opt_startByte, opt_stopByte) {

    var files = document.getElementById("file").files;
    if (!files.length) {
      if (document.getElementById("url").value == "") {
        alert("Please select a file!");
      } else {
        url = document.getElementById("url").value;
        word = document.getElementById("word").value;
        while (word == "") {
            word=prompt("Please Theme Word to look for within " + url + " ... Cancel exits", "");
        }
        //alert("./wordtree_chart.php?word=" + encodeURIComponent(word) + "&url=" + encodeURIComponent(url));
        alert("Show Results now ...");
		location.href = "./wordtree_chart.php?word=" + encodeURIComponent(word) + "&url=" + encodeURIComponent(url);
      }
      return;
    } else {
      document.getElementById("url").value = files[0].name;
      w = files[0].name;
      //document.getElementById("fil").value = w;
    }

    var file = files[0];
    var start = parseInt(opt_startByte) || 0;
    var stop = parseInt(opt_stopByte) || file.size - 1;

    var reader = new FileReader();
        alert("Show Results now ...");

    // If we use onloadend, we need to check the readyState.
    reader.onloadend = function(evt) {
      if (evt.target.readyState == FileReader.DONE) { // DONE == 2
        //cis = window.open("", "_blank", "top=20,left=20,width=200,height=200");
        //ww = cis;
        //cis.document.write(evt.target.result);
        //alert(999);
        document.getElementById("data").value = evt.target.result;
        //document.getElementById("submit").click();
        //alert(997);
        //cis.document.write(evt.target.result.replace(/</g, "&lt;").replace(/>/g, "&gt;"));
        //document.body.innerHTML = document.body.innerHTML + relative_to_absolute("<div id=be style=display:block;>" + evt.target.result.replace(/</g, "&lt;").replace(/>/g, "&gt;") + "</div>");
        document.getElementById("byte_content").textContent = evt.target.result;
        document.getElementById("byte_range").textContent = 
            ["Read bytes: ", start + 1, " - ", stop + 1,
             " of ", file.size, " byte file"].join("");
        process(evt.target.result);
      }
    };

    var blob = file.slice(start, stop + 1);
    reader.readAsBinaryString(blob);
}

      
function doonload() {
if (done == 0) {
  <?php if ($isxml) { echo "\n   document.getElementById('pextras').style.display = 'block'; \n"; } ?> 

done = 1;
if (window.File && window.FileReader && window.FileList && window.Blob) {
  done = done;
} else {
  document.getElementById("file").style.display = "none";
  if (1 == 2) { alert("The File APIs are not fully supported in this browser."); }
}

  document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {
    doask = 0;
    if (evt.target.tagName.toLowerCase() == "button") {
      var startByte = evt.target.getAttribute("data-startbyte");
      var endByte = evt.target.getAttribute("data-endbyte");
      readBlob(startByte, endByte);
    }
  }, false);
}
   <?php if (!isset($_GET['urlinput'])) { echo "\n setTimeout(ask, 7000); \n"; } ?>
}


      
      function ask() {
        //doonload();
        if (doask != 0) {
        var word = "";
        var url=prompt("Please enter a URL that we will search through for your Theme Word ... Cancel exits or would allow for Local file Browsing instead", "");
        if (url != null) {
          if (url != "") {
            word=prompt("Please Theme Word to look for within " + url + " ... Cancel exits", "");
			if (word != null) {
			  if (word != "") {
			    location.href = "./wordtree_chart.php?word=" + encodeURIComponent(word) + "&url=" + encodeURIComponent(url);
			  }
			}
          }
        }
        }
      }
    </script>
  </head>
  <body style='background-color:fffff0;' <?php if ($url == "") { echo " onload='doonload();' ";  } ?>>
    <h1 align='center' <?php if (isset($_GET['urlinput'])) { echo " style='display:none;' ";  }  ?>>Google <a target=_blank title='Google Wordtree Chart' href='https://developers.google.com/chart/interactive/docs/gallery/wordtree'>Wordtree</a> Chart - RJM Programming - December, 2014 <?php if ($url != "") echo " ... " . $url; ?></h1>
    <div align='center' <?php if (isset($_GET['urlinput'])) { echo " style='display:none;' ";  }  ?>>
    <div id="wordtree_basic" style="width: 900px; height: 500px;"></div>
    <?php if ($url != "") { echo "<br><a href='./wordtree_chart.php' title='Another go?'>Another go?</a>";  } ?>
    </div>    
    
  <div align="center" style="display:block;background-color:yellow; padding-left:20px; padding-top: 20px;"> 
  <form style="display:block;" action="./wordtree_chart.php" method="POST">
  <input type="hidden" name="data" id="data" value=""></input>
  <input type="file" name="file" id="file" onmouseover=doask=0;<?php if ($url != '') { echo "location.href='./wordtree_chart.php';";  } ?>><span name="mode" id="mode"><?php if ($url == '' && isset($_GET['urlinput'])) { echo " ... or URL: ";  }  ?><input type="<?php if ($url != '' || !isset($_GET['urlinput'])) { echo "hidden";  } else { echo "text";   } ?>" name="url" id="url" size=80 value=""></input>&nbsp;&nbsp;Theme word <input type="text" name="word" id="word" value="" onclick="doask=0;"></input> in file<?php if ($url == '' && isset($_GET['urlinput'])) { echo "/URL";  }  ?> </span>:<span class="readBytesButtons"><button data-startbyte="0" data-endbyte="4" style="display:none;">1-5</button><button data-startbyte="5" data-endbyte="14" style="display:none;">6-15</button><button data-startbyte="6" data-endbyte="7" style="display:none;">7-8</button><button onclick="doask=0; if (document.getElementById('word').value != '') { readBlob(0,0); } else { while (document.getElementById('word').value == '') { document.getElementById('word').value=prompt('Please enter a Theme Word',''); } readBlob(0,0); }">Process</button></span><br><br><div style="display:none;" id="byte_range"></div><div style="display:none;" id="byte_content"></div>
  <input type="submit" name="submit" id="submit" value="Submit" style="display:none;"></input>
  </form>
  </div>
<?php echo $bextras; ?>
  </body>
</html>
