<?php
// read_exif_off_image_rotate.php
// RJM Programming
// August, 2016
// Thanks to http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data

// http://localhost:8888/read_exif_off_image_rotate.php?image=HTTP://localhost:8888/mysterytrip/IMG_1125.JPG#myh1

set_time_limit(120);

$image="";
$ximage="";
$exifbit="Exif";

if (!isset($_GET['mystery'])) {
if (isset($_GET['image'])) {
  $image = str_replace("+", " ", urldecode($_GET['image']));
} else if (isset($_POST['image'])) {
  $image = urldecode($_POST['image']);
} else if (file_exists("/Applications/MAMP/htdocs/clouds.jpg")) {
  $image = "/Applications/MAMP/htdocs/clouds.jpg";
}
} 

if (strpos((strtolower($image) . "~"), ".zip~") !== false || isset($_GET['mystery'])) {
  $idata=[""];
  $isdata=[""];
  $htmlis="";
  $thisone="";
  $eachone="";
  $bimage=$image;
  if ($image == "") {
  $tablebits="<h1>Image Trip Start Finish Guessing Game<h1>
<h3>RJM Programming - October, 2018</h3><br><form id=myzform method=POST action='./read_exif_off_image_rotate.php'>
<input id=myzsubmit style='display:none;' type=submit value='Ready to Play'></input>
<input placeholder='Start address 1' type=text style=display:none; id=formsa1 name=sa1 value=\"" . str_replace("+"," ",$_GET['sa1']) . str_replace("+"," ",$_POST['sa1']) . "\"></input>
<input placeholder='Start address 2' type=text style=display:none; id=formsa2 name=sa2 value=\"" . str_replace("+"," ",$_GET['sa2']) . str_replace("+"," ",$_POST['sa2']) . "\"></input>
<input placeholder='Start town' type=text style=display:none; id=formstown name=stown value=\"" . str_replace("+"," ",$_GET['stown']) . str_replace("+"," ",$_POST['stown']) . "\"></input>
<input placeholder='Start state' type=text style=display:none; id=formsstate name=sstate value=\"" . str_replace("+"," ",$_GET['sstate']) . str_replace("+"," ",$_POST['sstate']) . "\"></input>
<input placeholder='Start country' type=text style=display:none; id=formscountry name=scountry value=\"" . str_replace("+"," ",$_GET['scountry']) . str_replace("+"," ",$_POST['scountry']) . "\"></input>
<input placeholder='Start planet' type=text style=display:none; id=formsplanet name=splanet value=\"" . str_replace("+"," ",$_GET['splanet']) . str_replace("+"," ",$_POST['splanet']) . "\"></input>
<input placeholder='Start elevation' type=text style=display:none; id=formselevation name=selevation value=\"" . str_replace("+"," ",$_GET['selevation']) . str_replace("+"," ",$_POST['selevation']) . "\"></input>
<input placeholder='Finish address 1' type=text style=display:none; id=formfa1 name=fa1 value=\"" . str_replace("+"," ",$_GET['fa1']) . str_replace("+"," ",$_POST['fa1']) . "\"></input>
<input placeholder='Finish address 2' type=text style=display:none; id=formfa2 name=fa2 value=\"" . str_replace("+"," ",$_GET['fa2']) . str_replace("+"," ",$_POST['fa2']) . "\"></input>
<input placeholder='Finish town' type=text style=display:none; id=formftown name=ftown value=\"" . str_replace("+"," ",$_GET['ftown']) . str_replace("+"," ",$_POST['ftown']) . "\"></input>
<input placeholder='Finish state' type=text style=display:none; id=formfstate name=fstate value=\"" . str_replace("+"," ",$_GET['fstate']) . str_replace("+"," ",$_POST['fstate']) . "\"></input>
<input placeholder='Finish country' type=text style=display:none; id=formfcountry name=fcountry value=\"" . str_replace("+"," ",$_GET['fcountry']) . str_replace("+"," ",$_POST['fcountry']) . "\"></input>
<input placeholder='Finish planet' type=text style=display:none; id=formfplanet name=fplanet value=\"" . str_replace("+"," ",$_GET['fplanet']) . str_replace("+"," ",$_POST['fplanet']) . "\"></input>
<input placeholder='Finish elevation' type=text style=display:none; id=formfelevation name=felevation value=\"" . str_replace("+"," ",$_GET['felevation']) . str_replace("+"," ",$_POST['felevation']) . "\"></input>
Zipfile of Images of Trip: <input onblur='scoreit(this);' style='width:30%;' id=ximage name=image type=text title='" . $image . "' placeholder='Enter zipfile containing image files' value='" . $bimage . "'></input>
</form>
<h4 id=score>Score: 0</h4>
<table style='width:100%;'><tbody>
<tr><th colspan=7>Start of Mystery Trip</th><th colspan=7>Finish of Mystery Trip</th></tr>
<tr><th id=xsa1 onclick='scoreit(this);'>Address 1</th><th id=xsa2 onclick='scoreit(this);'>Address 2</th><th id=xstown onclick='scoreit(this);'>Town/City/Suburb</th><th id=xsstate onclick='scoreit(this);'>State/Territory</th><th id=xselevation onclick='scoreit(this);'>Elevation</th><th id=xscountry onclick='scoreit(this);'>Country</th><th><select id='xsplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th><th id=xfa1 onclick='scoreit(this);'>Address 1</th><th id=xfa2 onclick='scoreit(this);'>Address 2</th><th id=xftown onclick='scoreit(this);'>Town/City/Suburb</th><th id=xfstate onclick='scoreit(this);'>State/Territory</th><th id=xfelevation onclick='scoreit(this);'>Elevation</th><th id=xfcountry onclick='scoreit(this);'>Country</th><th><select id='xfplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th></tr>
<tr><td colspan=6><textarea rows=10 style='width:100%;height:100%;' id=sd></textarea></td><td colspan=8>
<img SRC='" . $idata[0] . "'></img>
</td></tr>
<TR><td colspan=8 style='text-align:right;'>
<img src='" . "" . "'></img>
</td><td colspan=6><textarea rows=10 style='width:100%;height:100%;' id=ed></textarea></td></tr>
<tr><th id=sa1 onclick='scoreit(this);'>Address 1</th><th id=sa2 onclick='scoreit(this);'>Address 2</th><th id=stown onclick='scoreit(this);'>Town/City/Suburb</th><th id=sstate onclick='scoreit(this);'>State/Territory</th><th id=selevation onclick='scoreit(this);'>Elevation</th><th id=scountry onclick='scoreit(this);'>Country</th><th><select id='splanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th><th id=fa1 onclick='scoreit(this);'>Address 1</th><th id=fa2 onclick='scoreit(this);'>Address 2</th><th id=ftown onclick='scoreit(this);'>Town/City/Suburb</th><th id=fstate onclick='scoreit(this);'>State/Territory</th><th id=felevation onclick='scoreit(this);'>Elevation</th><th id=fcountry onclick='scoreit(this);'>Country</th><th><select id='fplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
<tr><th colspan=7>Start of Mystery Trip</th><th colspan=7>Finish of Mystery Trip</th></tr>
</select></th></tr>
</tbody></table>";
          } else {
  $contis=file_get_contents($image);
  $bz="";
  $zipfile="temp" . $bz . ".zip";
  while (file_exists("temp" . $bz . ".zip")) {
       if (("" . $bz) == "") {
         $bz=1;
       } else {
         $bz++;
       }
       $zipfile="temp" . $bz . ".zip";
  }
  file_put_contents($zipfile, $contis);
  $zip = zip_open($zipfile);
  $jj=0;
  $tablebits="";
  if ($zip) {
      while ($zip_entry = zip_read($zip)) {
       $ourfilename=zip_entry_name($zip_entry);
       if (strpos($ourfilename, "_MACOSX/") === false) {
         $finame=explode("/", $ourfilename)[-1 + sizeof(explode("/", $ourfilename))];
         $fname=explode(substr("\\",0,1), $finame)[-1 + sizeof(explode(substr("\\",0,1), $finame))];
         $bz="";
         while (file_exists(fname)) {
          if (("" . $bz) == "") {
            $fname=str_replace("" . $bz . ".", "1.", $fname);
            $bz=1;
          } else {
            $fname=str_replace("" . $bz . ".", "" . ($bz + 1) . ".", $fname);
            $bz++;
          }
         }
         $isc=zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
         if ($jj == 0) {
         $idata[$jj]='data:image/' . str_replace("jpg","jpeg",strtolower(explode(".", $ourfilename)[-1 + sizeof(explode(".", $ourfilename))])) . ';base64,' . base64_encode($isc);
  if (strpos($image, "//") === false) {
    $bimage=str_replace(":80/","/","http://" . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . str_replace("read_exif_off_image_rotate.php", $image, explode("?", explode("#", $_SERVER['REQUEST_URI'])[0])[0]));
  }
  $tablebits="<h1>Image Trip Start Finish Guessing Game<h1>
<h3>RJM Programming - October, 2018</h3><br><form id=myzform method=POST action='./read_exif_off_image_rotate.php'>
<input id=myzsubmit style='display:none;' type=submit value='Ready to Play'></input>
<input placeholder='Start address 1' type=text style=display:none; id=formsa1 name=sa1 value=\"" . str_replace("+"," ",$_GET['sa1']) . str_replace("+"," ",$_POST['sa1']) . "\"></input>
<input placeholder='Start address 2' type=text style=display:none; id=formsa2 name=sa2 value=\"" . str_replace("+"," ",$_GET['sa2']) . str_replace("+"," ",$_POST['sa2']) . "\"></input>
<input placeholder='Start town' type=text style=display:none; id=formstown name=stown value=\"" . str_replace("+"," ",$_GET['stown']) . str_replace("+"," ",$_POST['stown']) . "\"></input>
<input placeholder='Start state' type=text style=display:none; id=formsstate name=sstate value=\"" . str_replace("+"," ",$_GET['sstate']) . str_replace("+"," ",$_POST['sstate']) . "\"></input>
<input placeholder='Start country' type=text style=display:none; id=formscountry name=scountry value=\"" . str_replace("+"," ",$_GET['scountry']) . str_replace("+"," ",$_POST['scountry']) . "\"></input>
<input placeholder='Start planet' type=text style=display:none; id=formsplanet name=splanet value=\"" . str_replace("+"," ",$_GET['splanet']) . str_replace("+"," ",$_POST['splanet']) . "\"></input>
<input placeholder='Start elevation' type=text style=display:none; id=formselevation name=selevation value=\"" . str_replace("+"," ",$_GET['selevation']) . str_replace("+"," ",$_POST['selevation']) . "\"></input>
<input placeholder='Finish address 1' type=text style=display:none; id=formfa1 name=fa1 value=\"" . str_replace("+"," ",$_GET['fa1']) . str_replace("+"," ",$_POST['fa1']) . "\"></input>
<input placeholder='Finish address 2' type=text style=display:none; id=formfa2 name=fa2 value=\"" . str_replace("+"," ",$_GET['fa2']) . str_replace("+"," ",$_POST['fa2']) . "\"></input>
<input placeholder='Finish town' type=text style=display:none; id=formftown name=ftown value=\"" . str_replace("+"," ",$_GET['ftown']) . str_replace("+"," ",$_POST['ftown']) . "\"></input>
<input placeholder='Finish state' type=text style=display:none; id=formfstate name=fstate value=\"" . str_replace("+"," ",$_GET['fstate']) . str_replace("+"," ",$_POST['fstate']) . "\"></input>
<input placeholder='Finish country' type=text style=display:none; id=formfcountry name=fcountry value=\"" . str_replace("+"," ",$_GET['fcountry']) . str_replace("+"," ",$_POST['fcountry']) . "\"></input>
<input placeholder='Finish planet' type=text style=display:none; id=formfplanet name=fplanet value=\"" . str_replace("+"," ",$_GET['fplanet']) . str_replace("+"," ",$_POST['fplanet']) . "\"></input>
<input placeholder='Finish elevation' type=text style=display:none; id=formfelevation name=felevation value=\"" . str_replace("+"," ",$_GET['felevation']) . str_replace("+"," ",$_POST['felevation']) . "\"></input>
Zipfile of Images of Trip: <input onblur='scoreit(this);' style='width:30%;' id=ximage name=image type=text title='" . $image . "' placeholder='Enter zipfile containing image files' value='" . $bimage . "'></input>
</form>
<h4 id=score>Score: 0/0</h4>
<table style='width:100%;'><tbody>
<tr><th colspan=7>Start of Mystery Trip</th><th colspan=7>Finish of Mystery Trip</th></tr>
<tr><th id=xsa1 onclick='scoreit(this);'>Address 1</th><th id=xsa2 onclick='scoreit(this);'>Address 2</th><th id=xstown onclick='scoreit(this);'>Town/City/Suburb</th><th id=xsstate onclick='scoreit(this);'>State/Territory</th><th id=xselevation onclick='scoreit(this);'>Elevation</th><th id=xscountry onclick='scoreit(this);'>Country</th><th><select id='xsplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th><th id=xfa1 onclick='scoreit(this);'>Address 1</th><th id=xfa2 onclick='scoreit(this);'>Address 2</th><th id=xftown onclick='scoreit(this);'>Town/City/Suburb</th><th id=xfstate onclick='scoreit(this);'>State/Territory</th><th id=xfelevation onclick='scoreit(this);'>Elevation</th><th id=xfcountry onclick='scoreit(this);'>Country</th><th><select id='xfplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th></tr>
<tr><td colspan=6><textarea rows=10 style='width:100%;height:100%;' id=sd></textarea></td><td colspan=8>
<img SRC='" . $idata[0] . "'></img>
</td></tr>
<TR><td colspan=8 style='text-align:right;'>
<img src='" . "" . "'></img>
</td><td colspan=6><textarea rows=10 style='width:100%;height:100%;' id=ed></textarea></td></tr>
<tr><th id=sa1 onclick='scoreit(this);'>Address 1</th><th id=sa2 onclick='scoreit(this);'>Address 2</th><th id=stown onclick='scoreit(this);'>Town/City/Suburb</th><th id=sstate onclick='scoreit(this);'>State/Territory</th><th id=selevation onclick='scoreit(this);'>Elevation</th><th id=scountry onclick='scoreit(this);'>Country</th><th><select id='splanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
</select></th><th id=fa1 onclick='scoreit(this);'>Address 1</th><th id=fa2 onclick='scoreit(this);'>Address 2</th><th id=ftown onclick='scoreit(this);'>Town/City/Suburb</th><th id=fstate onclick='scoreit(this);'>State/Territory</th><th id=felevation onclick='scoreit(this);'>Elevation</th><th id=fcountry onclick='scoreit(this);'>Country</th><th><select id='fplanet' onchange='scoreit(this);'><option value=''>Planet</option>
<option value='Mercury'>Mercury</option>
<option value='Venus'>Venus</option>
<option value='Earth'>Earth</option>
<option value='Mars'>Mars</option>
<option value='Jupiter'>Jupiter</option>
<option value='Saturn'>Saturn</option>
<option value='Uranus'>Uranus</option>
<option value='Neptune'>Neptune</option>
<option value='Pluto'>Pluto</option>
<tr><th colspan=7>Start of Mystery Trip</th><th colspan=7>Finish of Mystery Trip</th></tr>
</select></th></tr>
</tbody></table>";
         } else {
         if ($jj > 1) {
         $tablebits=str_replace("<TR>", "\n<tr><td colspan=4></td><td colspan=6><img" . $isdata[-1 + $jj] . " src='" . $idata[-1 + $jj] . "'></td><td colspan=4></td></tr><TR>", $tablebits);
         }
         array_push($idata, 'data:image/' . str_replace("jpg","jpeg",strtolower(explode(".", $ourfilename)[-1 + sizeof(explode(".", $ourfilename))])) . ';base64,' . base64_encode($isc));
         }
         file_put_contents($fname, $isc);
         $thisone=@file_get_contents(str_replace(":80/","/","http://" . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . explode("?", explode("#", $_SERVER['REQUEST_URI'])[0])[0] . "?image=" . $fname));
         // <h1 id='myh1'>Exif for mysterytrip/IMG_1125.JPG</h1><h3>RJM Programming - August, 2016  <a id='ageolocation style='visibility:visible;' href='#mygeolocation'>Geolocation Context for Photograph  on 2018:10:28 10:30:52 with (5.06000017956,2.27500704769) at (-33.9073638889,151.176422222) up at 13.9740066515</a></h3><h4>Thanks to <a target=_blank title=Useful href=http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data>http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data</a></h4>
         $rots=explode(" rotate(", $thisone);
         if (sizeof($rots) > 1) {
         if ($jj == 0) {
         $isdata[0]=" style=' -webkit-transform: rotate(" . explode(")", $rots[1])[0] . "); -moz-transform: rotate(" . explode(")", $rots[1])[0] . "); -ms-transform: rotate(" . explode(")", $rots[1])[0] . "); -o-transform: rotate(" . explode(")", $rots[1])[0] . "); transform: rotate(" . explode(")", $rots[1])[0] . "); ' ";
         $tablebits=str_replace(" SRC=", " " . $isdata[0] . " SRC=", $tablebits);
         } else {
         array_push($isdata, " style=' -webkit-transform: rotate(" . explode(")", $rots[1])[0] . "); -moz-transform: rotate(" . explode(")", $rots[1])[0] . "); -ms-transform: rotate(" . explode(")", $rots[1])[0] . "); -o-transform: rotate(" . explode(")", $rots[1])[0] . "); transform: rotate(" . explode(")", $rots[1])[0] . "); ' ");
         }
         } else {
         if ($jj > 0) {
         array_push($isdata, "");
         }
         }
         $atitle='';
         if (strpos($thisone, " on ") !== false) {
           $atitle=explode("<", explode(">", explode("'", explode('"', explode(" on ", $thisone)[1])[0])[0])[0])[0];
           $eachone.="\n<span style='display:none;' id=span" . $jj . ">" . $atitle . "</span>";
         } else {
           $eachone.=str_replace("<div id='myh1'>", "", str_replace("<div style=' id","<div id", str_replace("</h", "\n</h", str_replace("</h3>", "</H3>", "<h1 id=hone" . $jj . " style='display:none;' title='" . $atitle . "'" . explode("<h1", str_replace("<h4", "<h4 style='display:none;'",explode("</h4>", $thisone)[0]) . "</h4>")[1]))));
         }
         unlink($fname);
         $jj++;
       }
      }
  }
  $tablebits=str_replace(" src=''", " " . $isdata[-1 + sizeof($isdata)] . " src='" . $idata[-1 + sizeof($idata)] . "'", $tablebits);
  zip_close($zip);
  unlink($zipfile);
  }
  echo "<html>
  <head>
  <title>Image Trip Start Finish Guessing Game - RJM Programming - October, 2018</title>
  <script type='text/javascript'>
  var score=0;
  var goes=0;
  var sa1=\"" . str_replace("+"," ",$_GET['sa1']) . str_replace("+"," ",$_POST['sa1']) . "\";
  var sa2=\"" . str_replace("+"," ",$_GET['sa2']) . str_replace("+"," ",$_POST['sa2']) . "\";
  var stown=\"" . str_replace("+"," ",$_GET['stown']) . str_replace("+"," ",$_POST['stown']) . "\";
  var sstate=\"" . str_replace("+"," ",$_GET['sstate']) . str_replace("+"," ",$_POST['sstate']) . "\";
  var scountry=\"" . str_replace("+"," ",$_GET['scountry']) . str_replace("+"," ",$_POST['scountry']) . "\";
  var splanet=\"" . str_replace("+"," ",$_GET['splanet']) . str_replace("+"," ",$_POST['splanet']) . "\";
  var selevation=\"" . str_replace("+"," ",$_GET['selevation']) . str_replace("+"," ",$_POST['selevation']) . "\";
  var fa1=\"" . str_replace("+"," ",$_GET['fa1']) . str_replace("+"," ",$_POST['fa1']) . "\";
  var fa2=\"" . str_replace("+"," ",$_GET['fa2']) . str_replace("+"," ",$_POST['fa2']) . "\";
  var ftown=\"" . str_replace("+"," ",$_GET['ftown']) . str_replace("+"," ",$_POST['ftown']) . "\";
  var fstate=\"" . str_replace("+"," ",$_GET['fstate']) . str_replace("+"," ",$_POST['fstate']) . "\";
  var fcountry=\"" . str_replace("+"," ",$_GET['fcountry']) . str_replace("+"," ",$_POST['fcountry']) . "\";
  var fplanet=\"" . str_replace("+"," ",$_GET['fplanet']) . str_replace("+"," ",$_POST['fplanet']) . "\";
  var felevation=\"" . str_replace("+"," ",$_GET['felevation']) . str_replace("+"," ",$_POST['felevation']) . "\";
  function scoreit(ho) {
    var versus='';
    eval('versus=' + ho.id.replace('x',''));
    if (ho.id.indexOf('lanet') != -1) {
      document.getElementById('form' + ho.id).value=ho.value;
      goes++;
      if (versus.toLowerCase() == ho.value.toLowerCase()) {
         score++;
      }
      document.getElementById('score').innerHTML='Score: ' + score + '/' + goes;
    } else {
      var vv='';
      if (ho.id.indexOf('image') == -1) {
      vv=prompt('Enter value', '');
      if (vv != null) {
        goes++;
        if (versus.toLowerCase() == vv.toLowerCase()) {
         score++;
        }
        document.getElementById('score').innerHTML='Score: ' + score + '/' + goes;
      }
      }
      if (vv != null || ho.id.indexOf('image') != -1) {
      if (ho.id.indexOf('image') == -1) {
      document.getElementById('form' + ho.id.replace('x','')).value=vv;
      }
      ";
      if (isset($_GET['mystery'])) {
    echo "
        if (document.getElementById('ximage').value != '') {
        document.getElementById('formsa1').style.display='block';
        document.getElementById('formsa2').style.display='block';
        document.getElementById('formstown').style.display='block';
        document.getElementById('formsstate').style.display='block';
        document.getElementById('formscountry').style.display='block';
        document.getElementById('formsplanet').style.display='block';
        document.getElementById('formselevation').style.display='block';
        document.getElementById('formfa1').style.display='block';
        document.getElementById('formfa2').style.display='block';
        document.getElementById('formftown').style.display='block';
        document.getElementById('formfstate').style.display='block';
        document.getElementById('formfcountry').style.display='block';
        document.getElementById('formfplanet').style.display='block';
        document.getElementById('formfelevation').style.display='block';
        document.getElementById('myzsubmit').style.display='block';
        }
        ";
      }
    echo "
      }
    }
  }
  </script>
  <style>
   th { border: 2px solid pink; }
   td { padding-top:50px; padding-bottom:50px; border: 2px solid pink; }
  </style>
  </head>
  <body>" . $eachone . $tablebits . "</body></html>";
  exit;
}


$lasts="";
if (isset($_GET['animg'])) {
  $ximage = urldecode($_GET['animg']);
  $exifbit = "Metadata";
  if (!isset($_GET['return'])) $lasts = " setTimeout(preob, 1000); ";
}


$javascript="<scr" . "ipt type='text/javascript'> 

  var image=encodeURIComponent('" . $image . $ximage . "'); 

  function preob() {
     ob(image);
  }

  function ob(tv) {
    if ((tv + '~').toLowerCase().indexOf('.png~') != -1) {
      image=encodeURIComponent(tv);
      document.getElementById('myform').target='itwo';
      document.getElementById('isub').value=document.getElementById('isub').value.replace('Exif ','Metadata ');
      setTimeout(anth, 65000);
    }
  }

  function anth() {
    var dis=new Date();
    top.document.location.href='//www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?return=' + dis.toGMTString() + '&animg=' + image;
  }

  function doalert() {
    alert('Please click OK in more than 60 seconds to receive report.');
    anth();
  }
  

  function doone() {
    var xdis=new Date();
    parent.document.getElementById('ione').src='//www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?return=' + xdis.toGMTString() + '&animg=' + image;
    parent.document.getElementById('ione').style.display='block';
  } 

 " . $lasts . " 
</sc" . "ript> ";

if (isset($_GET['donothing'])) {
 echo "<html></html>";
} else {
$nform="<br><iframe id='ione' src='//www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?donothing=y' style='display:none;'></iframe><iframe id='itwo' src='//www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?donothing=y' style='display:none;'></iframe><form target='_self' id='myform' action='./read_exif_off_image_rotate.php' method='POST'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image URL: <input name='image' id='image' onblur=' ob(this.value); ' type='text' value='" . $ximage . "' style='width:40%;'></input>&nbsp;&nbsp;<input id='isub' onclick=' setTimeout(doalert,1000); ' type='submit' value='" . $exifbit . " Information'></input></form>";
$rotbit="";

$htmlis="";
$indiv="";

$maptemplate="//www.rjmprogramming.com.au/PHP/Map/map.php?title=&onclick=y&label=[%27Lat%27,&value=%27Lon%27,%20%27Name%27]&data=,%20[-33.967,151.2422,~~]";
$factor=1.0;
$sbit="";
$various=" ";
$wasvarious="youl" . "lneverfin" . "dthis";

if (isset($_GET['image'])) {
  $image = urldecode($_GET['image']);
} else if (isset($_POST['image'])) {
  $image = urldecode($_POST['image']);
} else if (file_exists("/Applications/MAMP/htdocs/clouds.jpg")) {
  $image = "/Applications/MAMP/htdocs/clouds.jpg";
} else {
  $image="";
  if (file_exists("/tmp/pnginfo.txt") && isset($_GET['return'])) {
       $stuff=@file_get_contents("/tmp/pnginfo.txt");
       echo "<html><head>" . $javascript . "</head><body style=\" opacity:0.6; background: url('" . $image . $ximage . "'); \"><div style='opacity:0.8;'>" . str_replace("\n", "<br>", $stuff)  . "</div>" . $nform . "</body></html>";
       try {
       unlink("/tmp/pnginfo.txt");
       } catch (Exception $ex) { }
  } else {
       echo "<html><head>" . $javascript . "</head><body>" . $nform . "</body></html>";
  }
  exit;
}

$types = array(
1 => "GIF",
2 => "JPEG",
3 => "PNG",
4 => "SWF",
5 => "PSD",
6 => "BMP",
7 => "TIFF",
8 => "TIFF"
);


$imagetype = exif_imagetype($image);

if ($types[$imagetype] == "PNG") {
    if (file_exists("/tmp/pnginfo.txt")) {
      unlink("/tmp/pnginfo.txt");
    }
    exec('echo "identify -verbose ' . $image . ' > /tmp/pnginfo.txt ; chgrp rjmprogr /tmp/pnginfo.txt ; chown rjmprogr /tmp/pnginfo.txt" > /tmp/pnginfo.ksh');
    if (file_exists("/tmp/pnginfo.ksh")) {
    $bcnt=0;
    while (!file_exists("/tmp/pnginfo.txt") && $bcnt < 10) {
      if (file_exists("/tmp/pnginfo.txt")) {
        sleep(5);
        $stuff="";
        $stuff=@file_get_contents("/tmp/pnginfo.txt");
        if (trim($stuff) != "") {
        //unlink("/tmp/pnginfo.txt");
        //header("Location: http://www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?return=y");
        echo "<html><head>" . $javascript . "</head><body onload=' doone(); '><div>" . str_replace("\n", "<br>", $stuff)  . "</div></body></html>";
        try {
        unlink("/tmp/pnginfo.txt");
        } catch (Exception $ex2) { }

        } else {
        echo "<html><head>" . $javascript . "</head><body onload=' doone(); location.href=\"//www.rjmprogramming.com.au/PHP/read_exif_off_image_rotate.php?return=y\"; '><div></div></body></html>";
        }
        $bcnt=11;
        exit;
      } else {
        sleep(6);
      }
      $bcnt++;
    }
    } else {         

        // Imagick Type  // thanks to http://php.net/manual/en/imagick.getimageproperties.php
        // ---------------------------------------------

    $imagick_type = new Imagick($image);
   
        // Open File
        // ---------------------------------------------
       
    $file_to_grab = $image;
   
    $file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');
   
        // Grab File
        // ---------------------------------------------

    $imagick_type->readImageFile($file_handle_for_viewing_image_file);
   
        // Get Image Properties
        // ---------------------------------------------
       
    $imagick_type_properties = $imagick_type->getImageProperties('*', FALSE);
   
        // Print Image Properties
        // ---------------------------------------------
   
    print("<pre>");
       
    print_r($imagick_type_properties);
   
        // Print Each Individual, Image Property
        // ---------------------------------------------
   
    foreach($imagick_type_properties as $value)
    {
        print("$value --- ");
        print($imagick_type->getImageProperty("$value"));
        print("<br><br>");
    }
               
    print("</pre>");
    }
} else {

if (array_key_exists($imagetype, $types)) {
 $htmlis="<html><head>" . $javascript . "<style> div { font-size:9px; } </style><meta name='viewport' content='width=device-width, initial-scale=1, minimum-scale=0.25, maximum-scale=8, user-scalable=yes'><title>Exif for " . $image . "</title></head><body style='background-color:pink;'><h1 id='myh1'>Exif for " . $image . "</h1><h3>RJM Programming - August, 2016  <a id='ageolocation style='visibility:hidden;' href='#mygeolocation'>Geolocation Context for Photograph" . $various . "</a></h3><h4>Thanks to <a target=_blank title=Useful href=//www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data>http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data</a></h4><div style='background-color:yellow; background: url(" . str_replace("/Applications/MAMP/htdocs/","http://localhost:8888/",$image) . "); norepeat; '><br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image type of " . $image . " is: " . $types[$imagetype];
 $exif = exif_read_data($image, 0, true);
 foreach ($exif as $key => $section) {
  foreach ($section as $name => $val) {
   if (sizeof($val) > 1) {
   $indiv.="<br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key.$name: " . $val[0];
   $nthing=0.0;
   $vs=explode("/",$val[0]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
   if ($key == "GPS" && $name == "GPSAltitude") {
   $vs=explode("/",$val[0]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=" up at " . ($vs[0] / $vs1) / ($factor);
     $htmlis=str_replace($wasvarious, $wasvarious . " up at " . ($vs[0] / $vs1) / ($factor), $htmlis);
   }

   if ($key == "EXIF" && $name == "ShutterSpeedValue") {
   $vs=explode("/",$val[0]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=" with (" . ($vs[0] / $vs1) . ",";
   }

   if ($key == "EXIF" && $name == "ApertureValue") {
   $vs=explode("/",$val[0]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=($vs[0] / $vs1) . ")";
   }


   if ($key == "GPS" && $name == "GPSLatitude") {
     $nthing+=($vs[0] / $vs1) / ($factor);
     $factor*=60; 
   } else if ($key == "GPS" && $name == "GPSLongitude") {
     $nthing+=($vs[0] / $vs1) / ($factor);
     $factor*=60; 
   }
   for ($jj=1; $jj<sizeof($val); $jj++) {
   if ($key == "GPS" && $name == "GPSLatitude") {
   $vs=explode("/",$val[$jj]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $nthing+=($vs[0] / $vs1) / ($factor);
     $factor*=60; 
   } else if ($key == "GPS" && $name == "GPSLongitude") {
   $vs=explode("/",$val[$jj]);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $nthing+=($vs[0] / $vs1) / ($factor);
     $factor*=60; 
   }
    $indiv.=',' . $val[$jj];
   }
   if ($key == "GPS" && $name == "GPSLatitude") {
     $maptemplate=str_replace("-33.967", $nthing, $maptemplate);
     $various.=" at (" . $nthing . ",";
   } else if ($key == "GPS" && $name == "GPSLongitude") {
     $maptemplate=str_replace("151.2422", $nthing, $maptemplate);
     $various.=$nthing . ")";
     //$maptemplate=str_replace("&onclick=y", urlencode($various) . "&onclick=y", $maptemplate);
     //$sbit=" <scri" . "pt type='text/javascript'> window.open(\"" . $maptemplate . "\",\"_blank\",\"top=50,left=50,height=500,width=500\"); </sc" . "ript> ";
     $sbit=" <iframe onload=\" location.href='#myh1'; \" id=\"mygeolocation\" title=\"Geolocation context\" src=\"" . $maptemplate . "\"></iframe>";
     $wasvarious="Geolocation Context for Photograph" . $various;
     $htmlis=str_replace("Geolocation Context for Photograph ", "Geolocation Context for Photograph" . $various, str_replace("visibility:hidden", "visibility:visible", $htmlis));
   }
   } else {
   if ($key == "FILE" && $name == "FileName") {
     $maptemplate=str_replace("~~", "~" . urlencode($val) . "~", $maptemplate);
     $maptemplate=str_replace("title=&", "title=" . urlencode($val) . urlencode($various) . "&", $maptemplate);

   } else if ($key == "EXIF" && $name == "ShutterSpeedValue") {
   $vs=explode("/",$val);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=" with (" . ($vs[0] / $vs1) . ",";
   

   } else if ($key == "EXIF" && $name == "ApertureValue") {
   $vs=explode("/",$val);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=($vs[0] / $vs1) . ")";
   
   } else if ($key == "EXIF" && $name == "DateTimeOriginal") {
     $various.=" on " . $val;
   } else if ($key == "GPS" && $name == "GPSAltitude") {
   $vs=explode("/",$val);
   if (sizeof($vs) == 1) {
     $vs1=1.0;
   } else {
     $vs1=$vs[1];
   }
     $various.=" up at " . ($vs[0] / $vs1) / ($factor);
     $htmlis=str_replace($wasvarious, $wasvarious . " up at " . ($vs[0] / $vs1) / ($factor), $htmlis);
   } else if ($key == "GPS" && $name == "GPSAltitudeRef" && trim($val) != "") {
     $factor=-1.0; 
   } else if ($key == "GPS" && $name == "GPSAltitudeRef" && trim($val) == "") {
     $factor=1.0; 
   } else if ($key == "GPS" && $name == "GPSLatitudeRef" && $val == "S") {
     $factor=-1.0; 
   } else if ($key == "GPS" && $name == "GPSLongitudeRef" && $val == "W") {
     $factor=-1.0; 
   } else if ($key == "GPS" && $name == "GPSLatitudeRef" && $val == "N") {
     $factor=1.0; 
   } else if ($key == "GPS" && $name == "GPSLongitudeRef" && $val == "E") {
     $factor=1.0; 
   }
   $indiv.="<br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key.$name: $val";
   }
   if (($key.$name) == "IFD0Orientation") {
     if (str_replace(" ","","$val") == "8") {
       //$htmlis="<!doctype html><html><head>" . $javascript . "<meta name='viewport' content='width=device-width, initial-scale=1, minimum-scale=0.1, maximum-scale=8, user-scalable=yes'><title>Exif for " . $image . "</title></head><body style='background-color:yellow; background: url(" . str_replace("/Applications/MAMP/htdocs/","http://localhost:8888/",$image) . "); norepeat; " . $rotbit . "'><h1 id='myh1'>Exif for " . $image . "</h1><h3>RJM Programming - August, 2016</h3><h4>Thanks to <a target=_blank title=Useful href=http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data>http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data</a></h4><div><br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image type of " . $image . " is: " . $types[$imagetype];
       $htmlis=str_replace("; norepeat; ", "; opacity:0.6; norepeat; -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); -ms-transform: rotate(270deg); -o-transform: rotate(270deg); transform: rotate(270deg); ", $htmlis);
     } else if (str_replace(" ","","$val") == "6") {
       //$htmlis="<!doctype html><html><head>" . $javascript . "<title>Exif for " . $image . "</title></head><body style='background-color:yellow; background: url(" . str_replace("/Applications/MAMP/htdocs/","http://localhost:8888/",$image) . "); norepeat; " . $rotbit . "'><h1>Exif for " . $image . "</h1><h3>RJM Programming - August, 2016</h3><h4>Thanks to <a target=_blank title=Useful href=http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data>http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data</a></h4><div><br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image type of " . $image . " is: " . $types[$imagetype];
       $htmlis=str_replace("; norepeat; ", "; opacity:0.6;  norepeat; -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); ", $htmlis);
     } else if (str_replace(" ","","$val") == "3") {
       //$htmlis="<!doctype html><html><head>" . $javascript . "<title>Exif for " . $image . "</title></head><body style='background-color:yellow; background: url(" . str_replace("/Applications/MAMP/htdocs/","http://localhost:8888/",$image) . "); norepeat; " . $rotbit . "'><h1>Exif for " . $image . "</h1><h3>RJM Programming - August, 2016</h3><h4>Thanks to <a target=_blank title=Useful href=http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data>http://www.v-nessa.net/2010/08/02/using-php-to-extract-image-exif-data</a></h4><div><br>" . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image type of " . $image . " is: " . $types[$imagetype];
       $htmlis=str_replace("; norepeat; ", "; opacity:0.6;  norepeat; -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -ms-transform: rotate(180deg); -o-transform: rotate(180deg); transform: rotate(180deg); ", $htmlis);
     }
   }
  }
 }
 if (str_replace("transXXXform:","",$htmlis) != $htmlis) {
   echo str_replace("</h4><div", "</h4>" . $indiv . "<div", $htmlis) . "</div>" . $nform . $sbit . "</body></html>";
 } else {
   echo $htmlis . $indiv . "</div>" . $nform . $sbit . "</body></html>";
 }
} else {
 echo "<br>" . "Not a valid image type for " . $image . " or Exif functionality not enabled." . $nform;
}
}
}
?>
