<?php
// tutorial_to_animated_gif.php
// RJM Programming
// September, 2015
// Thanks to http://www.jeroenvanwissen.nl/weblog/php/howto-generate-animated-gif-with-php

$justfa="<form method=GET action=./tutorial_to_animated_gif.php style=display:inline-block;><input name=allowaudio value=y type=hidden></input><input type=submit value=Audio></input></form>";
$justfav="<form method=GET action=./tutorial_to_animated_gif.php style=display:inline-block;><input name=allowaudio value=y type=hidden></input><input name=allowvideo value=y type=hidden></input><input title='Both, in addition to Images, always' type=submit value='/'></input></form>";
$justfv="<form method=GET action=./tutorial_to_animated_gif.php style=display:inline-block;><input name=allowvideo value=y type=hidden></input><input type=submit value=Video></input></form>";
$seventypc="70%";
$filteretc="";
$fhc="Image";
if (isset($_GET['filteretc'])) {
  $filteretc=str_replace("+"," ",urldecode($_GET['filteretc']));
  $fhc=str_replace(explode("IMG_",$filteretc)[1] . '"',explode("IMG_",$filteretc)[1] . '" selected',('<select title="Image" onchange="filteretcit(this);" id="sfilteris"><option value="">Image</option><option value=" imagefilter($image, IMG_FILTER_EMBOSS); ">Embossed Image(s)</option><option value=" imagefilter($image, IMG_FILTER_NEGATE); ">Negated Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 255, 0, 0); ">Red Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 0, 255, 0); ">Green Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, -127.12, -127.98, 127); ">Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 0, 0, 255);  ">Blue Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_PIXELATE, 3); ">Pixellated Image(s)</option><option value=" imagefilter($image, IMG_FILTER_SMOOTH, -1924.124); ">Smoothed Image(s)</option><option value=" imagefilter($image, IMG_FILTER_CONTRAST, -90); ">Contrasted Image(s)</option><option value=" imagefilter($image, IMG_FILTER_BRIGHTNESS, 98); ">Brightened Image(s)</option><option value=" imagefilter($image, IMG_FILTER_MEAN_REMOVAL); ">Mean Removal Image(s)</option></select>'));
} else if (isset($_POST['filteretc'])) {
  $filteretc=str_replace("+"," ",urldecode($_POST['filteretc']));
  $fhc=str_replace(explode("IMG_",$filteretc)[1] . '"',explode("IMG_",$filteretc)[1] . '" selected',('<select title="Image" onchange="filteretcit(this);" id="sfilteris"><option value="">Image</option><option value=" imagefilter($image, IMG_FILTER_EMBOSS); ">Embossed Image(s)</option><option value=" imagefilter($image, IMG_FILTER_NEGATE); ">Negated Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 255, 0, 0); ">Red Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 0, 255, 0); ">Green Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, -127.12, -127.98, 127); ">Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_COLORIZE, 0, 0, 255);  ">Blue Colourized Image(s)</option><option value=" imagefilter($image, IMG_FILTER_PIXELATE, 3); ">Pixellated Image(s)</option><option value=" imagefilter($image, IMG_FILTER_SMOOTH, -1924.124); ">Smoothed Image(s)</option><option value=" imagefilter($image, IMG_FILTER_CONTRAST, -90); ">Contrasted Image(s)</option><option value=" imagefilter($image, IMG_FILTER_BRIGHTNESS, 98); ">Brightened Image(s)</option><option value=" imagefilter($image, IMG_FILTER_MEAN_REMOVAL); ">Mean Removal Image(s)</option></select>'));
}

$immogpath='/usr/local/Cellar/imagemagick/7.1.0-10_1/bin/';
if (file_exists('/home/virtfs/rjmprogr/usr/local/cpanel/3rdparty/bin/mogrify')) {
  $immogpath='/home/virtfs/rjmprogr/usr/local/cpanel/3rdparty/bin/';
} else if (file_exists('/usr/local/Cellar/imagemagick/7.1.0-10_1/bin/mogrify')) {
  $immogpath='/usr/local/Cellar/imagemagick/7.1.0-10_1/bin/';
}

$initim="";  // ImageMagick interfacings
$sinitim="";  
$cssinitim="";  
$inextis='jpg';
$imvgn=""; 
$imafn="";
$imqty="";
$imgds="";
if (isset($_GET['imvgn'])) {
  $imvgn=str_replace('+',' ',urldecode($_GET['imvgn']));
} else if (isset($_POST['imvgn'])) {
  $imvgn=str_replace('+',' ',urldecode($_POST['imvgn']));
}
if (isset($_GET['imafn'])) {
  $imafn=str_replace('+',' ',urldecode($_GET['imafn']));
} else if (isset($_POST['imafn'])) {
  $imafn=str_replace('+',' ',urldecode($_POST['imafn']));
}
if (isset($_GET['imqty'])) {
  $imqty=str_replace('+',' ',urldecode($_GET['imqty']));
} else if (isset($_POST['imqty'])) {
  $imqty=str_replace('+',' ',urldecode($_POST['imqty']));
}
if (isset($_GET['imgds'])) {
  $imgds=str_replace('+',' ',urldecode($_GET['imgds']));
} else if (isset($_POST['imgds'])) {
  $imgds=str_replace('+',' ',urldecode($_POST['imgds']));
}

$selz="&nbsp;<select onchange=imadd(this);>
<option value=''>Optional ImageMagick switches ...</option>
<option value=' -format jpg '>Convert to JPEG</option>
<option value=' -format png '>Convert to PNG</option>
<option value=' -format gif '>Convert to GIF</option>
<option value=' -format bmp '>Convert to BMP</option>
<option value=' -vignette 50 '>Vignette 50%</option>
<option value=' -vignette 60 '>Vignette 60%</option>
<option value=' -vignette 70 '>Vignette 70%</option>
<option value=' -vignette 80 '>Vignette 80%</option>
<option value=' -vignette 90 '>Vignette 90%</option>
<option value=' -affine -1,0,0,1,0,0 -transform +repage '>Flop</option>
<option value=' -affine 1,0,0,-1,0,0 -transform +repage '>Flip</option>
<option value=' -affine -1,0,0,-1,0,0 -transform +repage '>Rotate 180</option>
<option value=' -affine 1,.3,0,1,0,0 -transform +repage '>Shear</option>
<option value=' -format jpg -quality 90% '>Convert to JPEG Quality 90%</option>
<option value=' -format jpg -quality 80% '>Convert to JPEG Quality 80%</option>
<option value=' -format jpg -quality 70% '>Convert to JPEG Quality 70%</option>
<option value=' -format jpg -quality 60% '>Convert to JPEG Quality 60%</option>
<option value=' -format jpg -quality 50% '>Convert to JPEG Quality 50%</option>
<option value=' -format jpg -quality 40% '>Convert to JPEG Quality 40%</option>
<option value=' -format jpg -quality 30% '>Convert to JPEG Quality 30%</option>
<option value=' -format jpg -quality 20% '>Convert to JPEG Quality 20%</option>
<option value=' -format jpg -quality 10% '>Convert to JPEG Quality 10%</option>
</select>&nbsp;<select onchange=gdadd(this);>
<option value='' id=gdopt>Optional GD filters++ ... " . str_replace('|','',$imgds) . "</option>
<option value='grayscale'>Grayscale</option>
<option value='negate'>Negate</option>
<option value='emboss'>Emboss</option>
<option value='edgedetect'>Edge Detect</option>
<option value='brightness,'>Brightness</option>
<option value='contrast,'>Contrast</option>
<option value='smooth,'>Smooth</option>
<option value='colorize,,,'>Colourize</option>
<option value='pixelate,'>Pixelate</option>
<option value='scatter,,'>Scatter</option>
<option value='mean_removal'>Mean Removal</option>
<option value='selective_blur'>Selective Blur</option>
<option value='gaussian_blur'>Gaussian Blur</option>
<option value='CROPAUTO CROP DEFAULT'>Crop Default</option>
<option value='CROPAUTO CROP TRANSPARENT'>Crop Transparent</option>
<option value='CROPAUTO CROP BLACK'>Crop Black</option>
<option value='CROPAUTO CROP WHITE'>Crop White</option>
<option value='CROPAUTO CROP SIDES'>Crop Sides</option>
<option value='CROPAUTO CROP THRESHOLD'>Crop Threshold</option>
<option value='Scale,width to scale the image to,height to scale the image to'>Scale</option>
<option value='Rotate,anticlockwise angle in degrees,colour of the uncovered zone after the rotation'>Rotate</option>
<option value='Copymerge," . "$" . "oimo,x-coordinate of destination point,y-coordinate of destination point,x-coordinate of source point,y-coordinate of source point,source width,source height,percentage application'>Copy Merge</option>
<option value='Copyresized," . "$" . "oimo,x-coordinate of destination point,y-coordinate of destination point,x-coordinate of source point,y-coordinate of source point,destination width,destination height,source width,source height'>Copy Resized</option>
<option value='Fill,x-coordinate of start point,y-coordinate of start point,colour to fill with'>Fill</option>
</select>";


if (($imvgn . $imafn . $imqty . $imgds) == '') {
if (isset($_GET['imgen'])) {
  $imqty=str_replace('+',' ',urldecode($_GET['imgen']));
} else if (isset($_POST['imgen'])) {
  $imqty=str_replace('+',' ',urldecode($_POST['imgen']));
}
} else {
if (isset($_GET['imgen'])) {
  $imqty.=' ' . str_replace('+',' ',urldecode($_GET['imgen']));
} else if (isset($_POST['imgen'])) {
  $imqty.=' ' . str_replace('+',' ',urldecode($_POST['imgen']));
}
}

if (($imvgn . $imafn . $imqty . $imgds) != '') {
  $initim='<input id=imqty name=imqty type=text style=display:inline-block;width:300px; value=" ' . ($imvgn . $imafn . $imqty) . ' "></input><input id=imgds name=imgds type=hidden style=display:none; value=" ' . $imgds . ' "></input>';
  $sinitim='ImageMagick switches: ';
  $cssinitim=' style="margin-left:-500px;" ';
}
if (isset($_GET['inextis'])) {
  $inextis=str_replace('+',' ',urldecode($_GET['inextis']));
  $initim.='<input id=inextis name=inextis type=text style=display:inline-block;width:300px; value="' . $inextis . '"></input>';
  $sinitim='ImageMagick switches: ';
  $cssinitim=' style="margin-top:-500px;" ';
} else if (isset($_POST['inextis'])) {
  $inextis=str_replace('+',' ',urldecode($_POST['inextis']));
  $initim.='<input id=inextis name=inextis type=text style=display:inline-block;width:300px; value="' . $inextis . '"></input>';
  $sinitim='ImageMagick switches: ';
  $cssinitim=' style="margin-left:-500px;" ';
}
if ($initm != '') { $initim.='<br><br><br>';  }

$foundtitle=" ";
$wtsuffix="";
$setwm="";
$setwh="";
$setwhtwo="\$old_width, \$old_height";
$ow=-1;
$oh=-1;
$setwhd="none";
$setwhihs="";
if (isset($_GET['ow']) && isset($_GET['oh'])) {
  if (strlen(urldecode($_GET['ow'])) != 0 && strpos(urldecode($_GET['ow']), "-") === false) {
   $ow=trim(str_replace("+"," ",urldecode($_GET['ow'])));
   if (strlen(urldecode($_GET['oh'])) != 0 && strpos(urldecode($_GET['oh']), "-") === false) {
    $oh=trim(str_replace("+"," ",urldecode($_GET['oh'])));
   }
   if (strpos($_SERVER['SERVER_NAME'], "rjmprogramming.com.au") !== false) {
   $setwh="\n \$old_width  = imagesx(\$image); \n \$old_height  = imagesx(\$image); \n imagecopyresampled(\$underimage, \$image, 0, 0, 0, 0, \$old_width, \$old_height, \$old_width, \$old_height); \n imagecopyresampled(\$image, \$underimage, 0, 0, 0, 0, " . $setwhtwo . ", \$old_width, \$old_height); \n image_destroy(\$underimage); \n";
   } else {
   $setwh="\n \$image=imagescale(\$image, " . $ow . ", " . $oh . "); \n";
   }
   $setwhtwo=$ow . ", " . $oh;
   $setwhd="inline-block";
   if (isset($_GET['fow']) && isset($_GET['foh'])) {
   $setwhihs="<option value='" . trim(str_replace("+"," ",urldecode($_GET['fow']))) . "," . trim(str_replace("+"," ",urldecode($_GET['foh']))) . "'>" . trim(str_replace("+"," ",urldecode($_GET['fow']))) . " x " . trim(str_replace("+"," ",urldecode($_GET['foh']))) . "</option><option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option><option value=?>You Enter Width,Height</option>";
   } else {
   $setwhihs="<option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option>";
   }
  } else if (strlen(urldecode($_GET['oh'])) != 0 && strpos(urldecode($_GET['oh']), "-") === false) {
   $oh=trim(str_replace("+"," ",urldecode($_GET['oh'])));
   if (strpos($_SERVER['SERVER_NAME'], "rjmprogramming.com.au") !== false) {
   $setwh="\n \$old_width  = imagesx(\$image); \n \$old_height  = imagesx(\$image); \n imagecopyresampled(\$underimage, \$image, 0, 0, 0, 0, \$old_width, \$old_height, \$old_width, \$old_height); \n imagecopyresampled(\$image, \$underimage, 0, 0, 0, 0, " . $setwhtwo . ", \$old_width, \$old_height); \n image_destroy(\$underimage); \n";
   } else {
   $setwh="\n \$image=imagescale(\$image, " . $ow . ", " . $oh . "); \n";
   }
   $setwhtwo=$ow . ", " . $oh;
   $setwhd="inline-block";
   if (isset($_GET['fow']) && isset($_GET['foh'])) {
   $setwhihs="<option value='" . trim(str_replace("+"," ",urldecode($_GET['fow']))) . "," . trim(str_replace("+"," ",urldecode($_GET['foh']))) . "'>" . trim(str_replace("+"," ",urldecode($_GET['fow']))) . " x " . trim(str_replace("+"," ",urldecode($_GET['foh']))) . "</option><option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option><option value=?>You Enter Width,Height</option>";
   } else {
   $setwhihs="<option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option>";
   }
  }
} else if (isset($_POST['ow']) && isset($_POST['oh'])) {
  if (strlen(urldecode($_POST['ow'])) != 0 && strpos(urldecode($_POST['ow']), "-") === false) {
   $ow=trim(str_replace("+"," ",urldecode($_POST['ow'])));
   if (strlen(urldecode($_POST['oh'])) != 0 && strpos(urldecode($_POST['oh']), "-") === false) {
    $oh=trim(str_replace("+"," ",urldecode($_POST['oh'])));
   }
   if (strpos($_SERVER['SERVER_NAME'], "rjmprogramming.com.au") !== false) {
   $setwh="\n \$old_width  = imagesx(\$image); \n \$old_height  = imagesx(\$image); \n imagecopyresampled(\$underimage, \$image, 0, 0, 0, 0, \$old_width, \$old_height, \$old_width, \$old_height); \n imagecopyresampled(\$image, \$underimage, 0, 0, 0, 0, " . $setwhtwo . ", \$old_width, \$old_height); \n image_destroy(\$underimage); \n";
   } else {
   $setwh="\n \$image=imagescale(\$image, " . $ow . ", " . $oh . "); \n";
   }
   $setwhtwo=$ow . ", " . $oh;
   $setwhd="inline-block";
   if (isset($_POST['fow']) && isset($_POST['foh'])) {
   $setwhihs="<option value='" . trim(str_replace("+"," ",urldecode($_POST['fow']))) . "," . trim(str_replace("+"," ",urldecode($_POST['foh']))) . "'>" . trim(str_replace("+"," ",urldecode($_POST['fow']))) . " x " . trim(str_replace("+"," ",urldecode($_POST['foh']))) . "</option><option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option><option value=?>You Enter Width,Height</option>";
   } else {
   $setwhihs="<option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option>";
   }
  } else if (strlen(urldecode($_POST['oh'])) != 0 && strpos(urldecode($_POST['oh']), "-") === false) {
   $oh=trim(str_replace("+"," ",urldecode($_POST['oh'])));
   if (strpos($_SERVER['SERVER_NAME'], "rjmprogramming.com.au") !== false) {
   $setwh="\n \$old_width  = imagesx(\$image); \n \$old_height  = imagesx(\$image); \n imagecopyresampled(\$underimage, \$image, 0, 0, 0, 0, \$old_width, \$old_height, \$old_width, \$old_height); \n imagecopyresampled(\$image, \$underimage, 0, 0, 0, 0, " . $setwhtwo . ", \$old_width, \$old_height); \n image_destroy(\$underimage); \n";
   } else {
   $setwh="\n \$image=imagescale(\$image, " . $ow . ", " . $oh . "); \n";
   }
   $setwhtwo=$ow . ", " . $oh;
   $setwhd="inline-block";
   if (isset($_POST['fow']) && isset($_POST['foh'])) {
   $setwhihs="<option value='" . trim(str_replace("+"," ",urldecode($_POST['fow']))) . "," . trim(str_replace("+"," ",urldecode($_POST['foh']))) . "'>" . trim(str_replace("+"," ",urldecode($_POST['fow']))) . " x " . trim(str_replace("+"," ",urldecode($_POST['foh']))) . "</option><option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option><option value=?>You Enter Width,Height</option>";
   } else {
   $setwhihs="<option value='" . $ow . "," . $oh . "' selected>" . $ow . " x " . $oh . "</option>";
   }
  }
}
$diffow=0.0;
$diffoh=0.0;
$owend=-1;
$ohend=-1;
$enumber="";
if (isset($_GET['endnumber'])) {
  $enumber=str_replace("+"," ",urldecode($_GET['endnumber']));
  if (isset($_GET['owend']) && isset($_GET['ohend'])) {
   $owend=trim(str_replace("+"," ",urldecode($_GET['owend'])));
   $ohend=trim(str_replace("+"," ",urldecode($_GET['ohend'])));
   $diffow=($owend - $ow) / ($enumber - 1);
   $diffoh=($ohend - $oh) / ($enumber - 1);
  }
} else if (isset($_POST['endnumber'])) {
  $enumber=str_replace("+"," ",urldecode($_POST['endnumber']));
  if (isset($_POST['owend']) && isset($_POST['ohend'])) {
   $owend=trim(str_replace("+"," ",urldecode($_POST['owend'])));
   $ohend=trim(str_replace("+"," ",urldecode($_POST['ohend'])));
   $diffow=($owend - $ow) / ($enumber - 1);
   $diffoh=($ohend - $oh) / ($enumber - 1);
  }
}
if (isset($_GET['watermarkmode'])) {
  $wtsuffix=str_replace("+"," ",urldecode($_GET['watermarkmode']));
  if ($wtsuffix == '  ') {
   $setwm="\n document.getElementById('watermarkmode').value='  '; \n";
  } else if ($wtsuffix == ' ') {
   $setwm="\n document.getElementById('watermarkmode').value=' '; \n";
  } else if ($wtsuffix != '') {
   $setwm="\n document.getElementById('watermarkmode').value=document.getElementById('optnow').value; \n";
  }
} else if (isset($_POST['watermarkmode'])) {
  $wtsuffix=str_replace("+"," ",urldecode($_POST['watermarkmode']));
  if ($wtsuffix == '  ') {
   $setwm="\n document.getElementById('watermarkmode').value='  '; \n";
  } else if ($wtsuffix == ' ') {
   $setwm="\n document.getElementById('watermarkmode').value=' '; \n";
  } else if ($wtsuffix != '') {
   $setwm="\n document.getElementById('watermarkmode').value=document.getElementById('optnow').value; \n";
  }
}
$r200="200";
$g200="200";
$b200="200";
$c8r="c8";
$c8g="c8";
$c8b="c8";
if (isset($_GET['textred'])) {
  $r200=$_GET['textred'];
  if (strlen(('' . dechex($r200))) == 1) {
  $c8r='0' . dechex($r200);
  } else {
  $c8r='' . dechex($r200);
  }
} else if (isset($_POST['textred'])) {
  $r200=$_POST['textred'];
  if (strlen(('' . dechex($r200))) == 1) {
  $c8r='0' . dechex($r200);
  } else {
  $c8r='' . dechex($r200);
  }
}
if (isset($_GET['textgreen'])) {
  $g200=$_GET['textgreen'];
  if (strlen(('' . dechex($g200))) == 1) {
  $c8g='0' . dechex($g200);
  } else {
  $c8g='' . dechex($g200);
  }
} else if (isset($_POST['textgreen'])) {
  $g200=$_POST['textgreen'];
  if (strlen(('' . dechex($g200))) == 1) {
  $c8g='0' . dechex($g200);
  } else {
  $c8g='' . dechex($g200);
  }
}
if (isset($_GET['textblue'])) {
  $b200=$_GET['textblue'];
  if (strlen(('' . dechex($b200))) == 1) {
  $c8b='0' . dechex($b200);
  } else {
  $c8b='' . dechex($b200);
  }
} else if (isset($_POST['textblue'])) {
  $b200=$_POST['textblue'];
  if (strlen(('' . dechex($b200))) == 1) {
  $c8b='0' . dechex($b200);
  } else {
  $c8b='' . dechex($b200);
  }
}
 
$types = ["audio/x-m4r","audio/wav","audio/x-wav","audio/x-pn-realaudio","audio/x-mpegurl","audio/x-aiff","audio/mpeg","audio/mid",
      "audio/basic","audio/ogg","video/x-sgi-movie","video/x-msvideo","video/quicktime","audio/mp3","video/mp4","video/mpeg",
      "video/x-la-asf","video/ogg","video/webm","audio/mp4", "image/jpeg", "image/jpeg", "image/png", "image/gif", "image/bmp", "image/tif",
      "text/html", "text/html", "text/html", "text/javascript", "text/css", "text/plain", "text/xml", "text/csv",
      "application/vnd.ms-word", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/x-php", "application/pdf",
      "application/vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.ms-powerpoint",
      "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
$exts = [".m4r",".wav",".wav",".ram",".m3u",".aiff",".mp3",".rmi",
      ".snd",".ogg",".movie",".avi",".mov",".mp3",".m4v",".mpeg",
      ".lsx",".ogv",".webm",".m4a", ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tif",
      ".htm", ".html", ".htmls", ".js", ".css", ".txt", ".xml", ".csv",
      ".doc", ".docx", ".php", ".pdf",
      ".pptx", ".ppt",
      ".xls", ".xlsx"];
      
$durlis="http://" . $_SERVER['SERVER_NAME'] . str_replace("~","",str_replace(":443~","",str_replace(":80~","",(":" . $_SERVER['SERVER_PORT'] . "~")))) . str_replace("//","/",("/" . $_SERVER['REQUEST_URI'] . "/"));

      
$gfn="";
if (isset($_GET['gfn'])) {   $gfn=str_replace("+"," ",urldecode($_GET['gfn']));  } else if (isset($_POST['gfn'])) {   $gfn=str_replace("+"," ",urldecode($_POST['gfn']));  } 

$ihsh="document.getElementById('lhsh').innerHTML";
if (isset($_GET['ihash'])) {   $ihsh="('" . str_replace("+"," ",urldecode($_GET['ihash'])) . " ')";  } else if (isset($_POST['ihash'])) {   $ihsh="('" . str_replace("+"," ",urldecode($_POST['ihash'])) . " ')";   } 


function ourstr_replace($fromone, $toone, $instrg) {
    $cstrg="";
    $cdelim="";
    $outstrg=trim(str_replace($fromone, $toone, $instrg));
    for ($iuy=0; $iuy<strlen($outstrg); $iuy++) {
      $thisc=substr(substr($outstrg, $iuy), 0, 1);
      if ($thisc == '-' || ($thisc >= '0' && $thisc <= '9')) {
        $cstrg.=$cdelim . $thisc;
        $cdelim="";
      } else {
        $cdelim=",";
      }
    }
    if ($cstrg != "") { return $cstrg; } 
    return $outstrg;
}

$prefixretp="<img src='";
$suffixretp="'></img>";
$defvastyle="<style>
video {
   width:330px;
   height:330px;
   background:transparent url('solar_system.gif') no-repeat 0 0;
   -webkit-background-size:contain;
   -moz-background-size:contain;
   -o-background-size:contain;
   background-size:contain;
}

audio {
   width:333px;
   height:333px;
   background:transparent url('solar_system_mashed.gif') no-repeat 0 0;
   -webkit-background-size:cover;
   -moz-background-size:cover;
   -o-background-size:cover;
   background-size:cover;
}
</style>
";
$nondefvastyle="";

$xred="255";
$xgreen="0";
$xblue="0";
$fontname="";
$xangle="0.0";
$xleft="5";
$xtop="5";
$xsize="14px";
$xttfprefix="";
$opac="";
$midway="";

$zris=0;
$zrtot=1;
$zristwo=0;

$huhis="";

   $preextras="";
   $ala="false";
   $alv="false";
if (isset($_GET['allowaudio'])) {
 $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowaudio id=\"mysa\" type=\"submit\" title='Tutorial Slideshow to Audio' value='Tutorial Slideshow to Audio'></input><div id=resultav style=display:none;></div>";
 $ala="true";
 $seventypc="60%";
 $justfa=str_replace(" na" . (isset($_GET['allowvideo']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfa));
}
if (isset($_GET['allowvideo'])) {
 $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowvideo id=\"mysv\" type=\"submit\" title='Tutorial Slideshow to Video' value='Tutorial Slideshow to Video'></input><div id=resultav style=display:none;></div>";
 $alv="true";
 $seventypc="60%";
 $justfv=str_replace(" na" . (isset($_GET['allowaudio']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfv));
}
if (isset($_POST['allowaudio'])) {
 $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowaudio id=\"mysa\" type=\"submit\" title='Tutorial Slideshow to Audio' value='Tutorial Slideshow to Audio'></input><div id=resultav style=display:none;></div>";
 $ala="true";
 $seventypc="60%";
 $justfa=str_replace(" na" . (isset($_POST['allowvideo']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfa));
}
if (isset($_POST['allowvideo'])) {
 $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowvideo id=\"mysv\" type=\"submit\" title='Tutorial Slideshow to Video' value='Tutorial Slideshow to Video'></input><div id=resultav style=display:none;></div>";
 $alv="true";
 $seventypc="60%";
 $justfv=str_replace(" na" . (isset($_POST['allowaudio']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfv));
}
if ((isset($_POST['allowaudio']) && isset($_POST['allowvideo'])) || (isset($_GET['allowaudio']) && isset($_GET['allowvideo']))) {
$justfav="<form method=GET action=./tutorial_to_animated_gif.php style=display:inline-block;><input title='Neither, but Images, always' type=submit value='-'></input></form>";
}
$varmodes="&nbsp;<table style=display:inline-block;><tr><td>" . $justfa . "</td><td>" . $justfav . "</td><td>" . $justfv . "</td></tr></table>";

$newrbut="&nbsp;<input onclick=\"usualclick=0;\" name=\"randomize\" id=\"rcmysubmit\" type=\"submit\" title='Tutorial Slideshow to Randomized Content Order Animated GIF' value='Tutorial Slideshow to Randomized Content Order Animated GIF'></input>" . $preextras;

$grltsuffix="";
$rlt="0";
$rltminus="-";
$rltprefix="";
$rltsuffix="";
if (isset($_POST['numslides'])) {
  $newrbut="&nbsp;<input type=button onclick=\"reorderifs();\" value=\"Reorder Slides Below\"></input>&nbsp;<input style=\"display:none;\" onclick=\"usualclick=0;\" name=\"randomize\" id=\"rcmysubmit\" type=\"submit\" title='Tutorial Slideshow to Randomized Content Order Animated GIF' value='Tutorial Slideshow to Randomized Content Order Animated GIF'></input>";
  if (strpos(urldecode($_POST['numslides']), '-') === false && substr((urldecode($_POST['numslides']) . "0"),0,1) != "0") {
  $rlt=urldecode($_POST['numslides']);
  $grltsuffix="&numslides=" . $_POST['numslides'];
  $rltminus="";
  $rltprefix=" for (\$islide=0; \$islide<" . $rlt . "; \$islide++) { \$randomizematch=getnext(); ";
  $rltsuffix=" } ";
  }
} else if (isset($_GET['numslides'])) {
  $newrbut="&nbsp;<input type=button onclick=\"reorderifs();\" value=\"Reorder Slides Below\"></input>&nbsp;<input style=\"display:none;\" onclick=\"usualclick=0;\" name=\"randomize\" id=\"rcmysubmit\" type=\"submit\" title='Tutorial Slideshow to Randomized Content Order Animated GIF' value='Tutorial Slideshow to Randomized Content Order Animated GIF'></input>";
  if (strpos(urldecode($_GET['numslides']), '-') === false && substr((urldecode($_POST['numslides']) . "0"),0,1) != "0") {
  $rlt=urldecode($_GET['numslides']);
  $grltsuffix="&numslides=" . $_GET['numslides'];
  $rltminus="";
  $rltprefix=" for (\$islide=0; \$islide<" . $rlt . "; \$islide++) { \$randomizematch=getnext(); ";
  $rltsuffix=" } ";
  }
}



  if (isset($_GET['fred'])) {
    $xred=urldecode($_GET['fred']);
    $huhis.=" red=" . $xred;
  }
  if (isset($_GET['fgreen'])) {
    $xgreen=urldecode($_GET['fgreen']);
    $huhis.=" green=" . $xgreen;
  }
  if (isset($_GET['fblue'])) {
    $xblue=urldecode($_GET['fblue']);
    $huhis.=" blue=" . $xblue;
  }
  if (isset($_GET['fontname'])) {
    $fontname=str_replace("+"," ",urldecode($_GET['fontname']));
    $midway=" location.href='#midway'; ";
    if ($fontname != "" && strpos(strtolower($fontname), ".ttf") === false) { 
      if (strpos(("~" . $fontname), "~/") === false) {
       // Set the environment variable for GD ... thanks to https://www.php.net/manual/en/function.imagettftext.php
       putenv('GDFONTPATH=' . realpath('.'));
       if (!file_exists(str_replace(".ttf","",$fontname) . ".ttf")) {
         foreach (glob(dirname(__FILE__) . "/*.ttf") as $filename) {
           if (strpos(strtolower("/" . $filename), strtolower("/" . str_replace(".ttf","",$fontname) . ".ttf")) !== false) {
             $fontname=str_replace(".ttf","",str_replace(dirname(__FILE__) . "/","",str_replace(dirname(__FILE__) . "","",$filename)));
           }
         }
       }
      } 
      //$fontname.=".ttf"; 
    } 
    $huhis.=" fontname=" . $fontname;
    $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
    $huhis.=" xttfprefix=" . $xttfprefix;
  }
  if (isset($_GET['fangle'])) {
    $xangle=str_replace("+"," ",urldecode($_GET['fangle']));
    if ($xangle > 1.0 && strpos(('' . $xangle), '.') !== false) {
      $opac="0." . explode('.', ('' . $xangle))[1];
      $xangle=explode('.', ('' . $xangle))[0];
    }
    $huhis.=" angle=" . $xangle;
  }
  if (isset($_GET['fleft'])) {
    $xleft=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['fleft']))));
    if (strpos($xleft, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xleft="round(\$thisw * " . str_replace("%","",$xleft) . " / 100.0)";
    }
    $huhis.=" left=" . $xleft;
  }
  if (isset($_GET['ftop'])) {
    $xtop=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['ftop']))));
    if (strpos($xtop, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xtop="round(\$thish * " . str_replace("%","",$xtop) . " / 100.0)";
    }
    $huhis.=" top=" . $xtop;
  }
  if (isset($_GET['fsize'])) {
    $xsize=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['fsize']))));
    $huhis.=" size=" . $xsize;
  }


  if (isset($_POST['fred'])) {
    $xred=urldecode($_POST['fred']);
    $huhis.=" red=" . $xred;
  }
  if (isset($_POST['fgreen'])) {
    $xgreen=urldecode($_POST['fgreen']);
    $huhis.=" green=" . $xgreen;
  }
  if (isset($_POST['fblue'])) {
    $xblue=urldecode($_POST['fblue']);
    $huhis.=" blue=" . $xblue;
  }
  if (isset($_POST['fontname'])) {
    $fontname=str_replace("+"," ",urldecode($_POST['fontname']));
    if ($fontname != "" && strpos(strtolower($fontname), ".ttf") === false) { 
      if (strpos(("~" . $fontname), "~/") === false) {
       // Set the environment variable for GD ... thanks to https://www.php.net/manual/en/function.imagettftext.php
       putenv('GDFONTPATH=' . realpath('.'));
       if (!file_exists(str_replace(".ttf","",$fontname) . ".ttf")) {
         foreach (glob(dirname(__FILE__) . "/*.ttf") as $filename) {
           if (strpos(strtolower("/" . $filename), strtolower("/" . str_replace(".ttf","",$fontname) . ".ttf")) !== false) {
             $fontname=str_replace(".ttf","",str_replace(dirname(__FILE__) . "/","",str_replace(dirname(__FILE__) . "","",$filename)));
           }
         }
       }
      } 
      //$fontname.=".ttf"; 
    } 
    $huhis.=" fontname=" . $fontname;
    $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
    $huhis.=" xttfprefix=" . $xttfprefix;
  }
  if (isset($_POST['fangle'])) {
    $xangle=str_replace("+"," ",urldecode($_POST['fangle']));
    if ($xangle > 1.0 && strpos(('' . $xangle), '.') !== false) {
      $opac="0." . explode('.', ('' . $xangle))[1];
      $xangle=explode('.', ('' . $xangle))[0];
    }
    $huhis.=" angle=" . $xangle;
  }
  if (isset($_POST['fleft'])) {
    $xleft=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_POST['fleft']))));
    if (strpos($xleft, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xleft="round(\$thisw * " . str_replace("%","",$xleft) . " / 100.0)";
    }
    $huhis.=" left=" . $xleft;
  }
  if (isset($_POST['ftop'])) {
    $xtop=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_POST['ftop']))));
    if (strpos($xtop, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xtop="round(\$thish * " . str_replace("%","",$xtop) . " / 100.0)";
    }
    $huhis.=" top=" . $xtop;
  }
  if (isset($_POST['fsize'])) {
    $xsize=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_POST['fsize']))));
    $huhis.=" size=" . $xsize;
  }


  //if ($huhis != "") { echo $huhis; exit; }

if (isset($_GET['urlminus']) && isset($_GET['icnt']) && isset($_GET['lastioid']) && isset($_GET['incis']) && isset($_GET['upprefix']) && isset($_GET['upsuffix']) && isset($_GET['upto']) && isset($_GET['thisto'])) {
  if (isset($_GET['fred'])) {
    $xred=urldecode($_GET['fred']);
  }
  if (isset($_GET['fgreen'])) {
    $xgreen=urldecode($_GET['fgreen']);
  }
  if (isset($_GET['fblue'])) {
    $xblue=urldecode($_GET['fblue']);
  }
  if (isset($_GET['fontname'])) {
    $fontname=str_replace("+"," ",urldecode($_GET['fontname']));
    if (strpos(("~" . $fontname), "~/") === false) {
       // Set the environment variable for GD
       putenv('GDFONTPATH=' . realpath('.'));
       if (!file_exists(str_replace(".ttf","",$fontname) . ".ttf")) {
         foreach (glob(dirname(__FILE__) . "/*.ttf") as $filename) {
           if (strpos(strtolower("/" . $filename), strtolower("/" . str_replace(".ttf","",$fontname) . ".ttf")) !== false) {
             $fontname=str_replace(".ttf","",str_replace(dirname(__FILE__) . "/","",str_replace(dirname(__FILE__) . "","",$filename)));
           }
         }
       }
    } 
    //$fontname.=".ttf"; 
    $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
  }
  if (isset($_GET['fangle'])) {
    $xangle=str_replace("+"," ",urldecode($_GET['fangle']));
    if ($xangle > 1.0 && strpos(('' . $xangle), '.') !== false) {
      $opac="0." . explode('.', ('' . $xangle))[1];
      $xangle=explode('.', ('' . $xangle))[0];
    }
  }
  if (isset($_GET['fleft'])) {
    $xleft=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['fleft']))));
    if (strpos($xleft, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xleft="round(\$thisw * " . str_replace("%","",$xleft) . " / 100.0)";
    }
  }
  if (isset($_GET['ftop'])) {
    $xtop=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['ftop']))));
    if (strpos($xleft, "%") !== false) {
      $xttfprefix=" \$thisw=imagesx(\$image);  \$thish=imagesy(\$image); ";
      $xtop="round(\$thish * " . str_replace("%","",$xtop) . " / 100.0)";
    }
  }
  if (isset($_GET['fsize'])) {
    $xsize=str_replace("px","",strtolower(str_replace("+"," ",urldecode($_GET['fsize']))));
  }
  $it=0;
  $upit=0;
  $upsuffix=str_replace("+"," ",urldecode($_GET['upsuffix']));
  $thisto=str_replace("+"," ",urldecode($_GET['thisto']));
  $upto=str_replace("+"," ",urldecode($_GET['upto']));
  if (substr(($upto . " "), 0, 1) == ",") {
    $spare=$upto;
    $upto=$thisto . $spare;
  }
  $upsuffixes=explode(",",$upsuffix);
  $uptoes=explode(",",$upto);
  $urlminus=str_replace("+"," ",urldecode($_GET['urlminus']));
  $upprefix=str_replace("+"," ",urldecode($_GET['upprefix']));
  $lastioid=str_replace("+"," ",urldecode($_GET['lastioid']));
  $incis=str_replace("+"," ",urldecode($_GET['incis']));
  $icnt=str_replace("+"," ",urldecode($_GET['icnt']));
  $scris="";
  $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
  if ($cis != "") {
  $scris.="\n<scr" . "ipt type='text/javascript'>\n";
  $scris.="\n var icnt=eval(-1 + " . $icnt . "), lastio='" . $lastioid . "', fo=null, newi=null; \n function dothis() { \n";
  for ($iit=2; $iit<=(sizeof($upsuffixes) + sizeof($uptoes)); $iit++) {
  //if (file_exists('a.aa')) {
  // file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' here with iit=' . $iit . ' ' . strlen($cis) . ' ... ' . $urlminus . ' ... iit=' . $iit . ' vs ' . (sizeof($upsuffixes) + sizeof($uptoes)));
  //}
  $scris.="\n if (icnt == 1) { \n";
  $scris.="\n   parent.document.getElementById('slideshow').value='" . $urlminus . "'; \n } else if (lastio != '') {  parent.document.getElementById(lastio).value='" . $urlminus . "'; \n   }   \n";
  if (("$icnt" == "2" || "$lastioid" != "") && $iit == 2) { $urlminus="";    }
  while ($cis != "") {
  $sc=strlen($cis);
  $scris.="\n if ('" . $sc . "' != '1') { \n"; 
  $scris.="\n fo=parent.document.getElementById('fdiv' + icnt); \n";
  $scris.="\n icnt++; \n";
  $scris.="\n newi=parent.document.getElementById('slideshow' + icnt); \n";
  $scris.="\n if (newi) { if (newi.innerHTML.length == 0) {  newi=null; } } \n";
  
  $scris.="\n if (fo != null && newi == null) { \n";
  $scris.="\n  if (fo.id == 'slideshow') { fo.value='" . $urlminus . "'; } else { fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value='" . $urlminus . "'></input><br><br><div id='fdiv\" + icnt + \"'></div>\"; } \n";
  $scris.="\n  }   \n";
  $scris.="\n  }   \n";
  if ("$thisto" == explode(",",$upto)[0] || ((-1 + $thisto) < explode(",",$upto)[0] && "$incis" == "-1") || ((1 + $thisto) > explode(",",$upto)[0] && "$incis" != "-1")) {
    $cis="";
  } else {
  if ("$incis" == "-1") {
    $thisto--;
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
    if (explode(",",$upto)[0] != "" && $cis == "") { $cis=" "; }
  } else {
    $thisto++;
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
    if (explode(",",$upto)[0] != "" && $cis == "") { $cis=" "; }
  }
  }
  
  } //?
  
  //if ($cis == "") {
  
  if (6 == 6) {
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' again ' . ($iit - 2 + 1) . '<' . sizeof($uptoes) . '? '  . ($iit + 2) . '<' . (sizeof($uptoes) + sizeof($upsuffixes)) . ' ');
  if (($iit - 2 + 1) < sizeof($uptoes)) { 
    $scris.="\n lastio=''; \n"; //   parent.document.getElementById('slideshow').value=''; \n";
    $it++;  
    $lastio=''; 
    $icnt++; 
    $xx=$uptoes[$iit - 2 + 1];
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' whyxx=' . $xx . ' ');
    if (strpos($xx, "-") !== false) {
    $thisto=explode("-", $xx)[0];
    $upto=explode("-", $xx)[1];
    if ($thisto != $upto) {
      if ("$incis" == "-1") {
        if ($upto > $thisto) { $incis=1; }
      } else {
        if ($upto < $thisto) { $incis=-1; }
      }
    }
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' tHiSTo=' . $thisto . ' urlminus=' . $urlminus . ' ');
    //file_put_contents('a.aa', ' ' . strlen($cis) . ' ... ' . $urlminus . ' ... iit=' . $iit . ' vs ' . (sizeof($upsuffixes) + sizeof($uptoes)));
    if (explode(",",$upto)[0] != "" && $cis == "" && $iit < (sizeof($upsuffixes) + sizeof($uptoes))) { $cis=" "; }

    } else {
    $thisto=$xx;
    $upto=$xx;
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' thiSTo=' . $thisto . ' urlminus=' . $urlminus . ' ');
    //file_put_contents('a.aa', file_get_contents('a.aa') . ' ' . strlen($cis) . ' ... ' . $urlminus . ' ... iit=' . $iit . ' vs ' . (sizeof($upsuffixes) + sizeof($uptoes)));
    if (explode(",",$upto)[0] != "" && $cis == "" && $iit < (sizeof($upsuffixes) + sizeof($uptoes))) { $cis=" "; }
    }
  //} elseif (($iit + 2) < (sizeof($uptoes) + sizeof($upsuffixes))) { 
  } elseif (($iit - 2 + 1) < (sizeof($uptoes) + sizeof($upsuffixes))) { 
    $scris.="\n lastio=''; \n"; //    parent.document.getElementById('slideshow').value=''; \n";
    $lastio=''; 
    $icnt++; 
    //$upit++;  
    $xx=$upsuffixes[$iit - sizeof($uptoes)];
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' xx=' . $xx . ' ');
    if (strpos($xx, "-") !== false) {
    $thisto=explode("-", $xx)[0];
    $upto=explode("-", $xx)[1];
    if ($thisto != $upto) {
      if ("$incis" == "-1") {
        if ($upto > $thisto) { $incis=1; }
      } else {
        if ($upto < $thisto) { $incis=-1; }
      }
    }
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' thisTo=' . $thisto . ' urlminus=' . $urlminus . ' ');
    } else {
    $thisto=$xx;
    $upto=$xx;
    $urlminus=$upprefix . $thisto . explode(",",$upsuffix)[0];
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
   //file_put_contents('a.aa', '' . file_get_contents('a.aa') . ' thisto=' . $thisto . ' urlminus=' . $urlminus . ' ');
    $cis=file_get_contents(str_replace('https:','http:',str_replace('Https:','http:',$urlminus)));
    //file_put_contents('a.aa', file_get_contents('a.aa') . ' ' . strlen($cis) . ' ... ' . $urlminus . ' ... iit=' . $iit . ' vs ' . (sizeof($upsuffixes) + sizeof($uptoes)));
    if (explode(",",$upto)[0] != "" && $cis == "" && $iit < (sizeof($upsuffixes) + sizeof($uptoes))) { $cis=" "; }
    }
  }
  
  }
  //}
  
  // }   // ?
  
  
  //}
  }
  $scris.="\n } \n </scr" . "ipt>\n";
    //file_put_contents('a.aa', $scris);
  }
  if ($scris != "") {
    //file_put_contents('a.aa', $scris);
    echo "<!doctype html><html><head><meta charset='utf-8'/>" . $scris . "</head><body onload=dothis();>&nbsp;</body></html>";
  }
  exit;
}

$ris=0;
$gis=0;
$bis=0;
$zzz=",0,0,0,";
$stfle="";
$prestfle="";

$extras="";
$ismulti=[];
$ismultidatauri=[];
$icnt=1;
$moreh1="";
$imagegif="";
$imagegifandthen="";
$delay=40;  // 1000 / 40
$videopath="/opt/local/bin/";
//$aret=[];
//$videopaths=exec("which ffmpeg 2>&1",$aret,$retv);
//$videopath=explode("ffmpeg",explode("\n",$videopaths)[-1 + sizeof(explode("\n",$videopaths))])[0]; //      $videopaths[-1 + sizeof($videopaths)]; //$aret[0];
//echo $retv . "~" . $videopaths . "*" . $videopath . "^" . $aret[0];
//exit;
$videocmd=$videopath . "ffmpeg -r " . (1000 / $delay) . " -i " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "%03d.jpg " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "video.mp4 2> " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "video.bad";
$svideocmd="ffmpeg -r " . (1000 / $delay) . " -i " . "%03d.jpg " . "video.mp4";
$videohtml="<video controls id=ivideo type='video/mp4'><source src='video.mp4'></source></video>";
$videosuffix="";
$ipis="";

// imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
// imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )

 $gfcds='';
 $gdfs=[];
 if (strpos(($imvgn . $imafn . $imqty . $imgds), '|') !== false) {
    $gdfs=explode(';', trim(explode('|', $imvgn . $imafn . $imqty . $imgds)[1]));
    for ($itf=0; $itf<sizeof($gdfs); $itf++) {
     if (trim($gdfs[$itf]) != '') {
      if (trim($gdfs[$itf]) == strtolower(trim($gdfs[$itf]))) {
      $gfcds.=chr(10) . " imagefilter(" . "$" . "oimo, IMG_FILTER_" . strtoupper(trim($gdfs[$itf])) . "); " . chr(10);
      } else if (trim($gdfs[$itf]) == strtoupper(trim($gdfs[$itf]))) {
      $gfcds.=chr(10) . " image" . explode(',',explode(" ",strtolower(trim($gdfs[$itf])))[0])[0] . "(" . "$" . "oimo, IMG_" . str_replace(" ","_",strtoupper(trim(  str_replace(explode(' ',$gdfs[$itf])[0] . ' ','',$gdfs[$itf])   ))) . "); " . chr(10);
      } else if (strpos(strtoupper(trim($gdfs[$itf])), "SCALE") !== false) {
      $gfcds.=chr(10) . " $" . "oimo=image" . explode(',',explode(" ",strtolower(trim($gdfs[$itf])))[0])[0] . "(" . "$" . "oimo" . str_replace(" ","_",(trim(  str_replace(explode(',',explode(" ",(trim($gdfs[$itf])))[0])[0],'',$gdfs[$itf])   ))) . "); " . chr(10);
      } else if (strpos(strtoupper(trim($gdfs[$itf])), "COPY") === false) {
      $gfcds.=chr(10) . " image" . explode(',',explode(" ",strtolower(trim($gdfs[$itf])))[0])[0] . "(" . "$" . "oimo" . str_replace(" ","_",(trim(  str_replace(explode(',',explode(" ",(trim($gdfs[$itf])))[0])[0],'',$gdfs[$itf])   ))) . "); " . chr(10);
      } else {
      $gfcds.=chr(10) . " image" . explode(',',explode(" ",strtolower(trim($gdfs[$itf])))[0])[0] . "(" . "$" . "oimo" . "," . "$" . "oimo" . explode("," . "$" . "oimo", $gdfs[$itf])[1] . "); " . chr(10);
      }
     }
    }
 }


$agifphp="<?php

header ('Content-type:image/gif');
include('GIFEncoder.class.php');


 \$randomizesofar='';
 \$randomizematch='';
 \$randomizeloopcnt=0;
 \$randomizelooptotal=" . $rlt . ";
 
 \$imvgn='" . $imvgn . "'; /" . "/ vignette factor 
 \$imafn='" . $imafn . "'; /" . "/ affine transformation 
 \$imqty='" . $imqty . "'; /" . "/ image conversion and/or quality RE jpeg 
 \$imgds='" . $imgds . "'; /" . "/ GD filters 
  
 // seed with microseconds ... thanks to https://www.php.net/manual/en/function.srand.php
function make_seed() {
  list(\$usec, \$sec) = explode(' ', microtime());
  return \$sec + \$usec * 1000000;
}

function ourimagecreatefromstring(\$inidis) {
global \$imvgn, \$imafn, \$imqty, \$imgds, \$gfcds;
  if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '' && strpos(\$inidis, ';base64,') !== false) {
    \$extis=str_replace('jpeg','jpg',explode('/', explode(';base64,', \$inidis)[0])[1]);
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, base64_encode(explode(';base64,', \$inidis)[1]));
    \$fzis=filesize(\$sofarout);
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false || 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } else if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '') {
    \$extis=str_replace('jpeg','jpg','" . $inextis . "');
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, \$inidis);
    \$fzis=filesize(\$sofarout);
    if (strpos(strtolower((\$imvgn . \$imafn . \$imqty . \$imgds)), '-format ') === false) { \$imvgn.=' -format " . str_replace('jpg','jpeg',$inextis) . " ';  }
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false) { 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } 
  return imagecreatefromstring(\$inidis);
}

function ourimagecreatefromjpeg(\$inidis) {
global \$imvgn, \$imafn, \$imqty, \$imgds, \$gfcds;
  if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '') {
    \$extis='jpg';
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, \$inidis);
    \$fzis=filesize(\$sofarout);
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false) { 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } 
  return imagecreatefromjpeg(\$inidis);
}

function ourimagecreatefrompng(\$inidis) {
global \$imvgn, \$imafn, \$imqty, \$imgds, \$gfcds;
  if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '') {
    \$extis='png';
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, \$inidis);
    \$fzis=filesize(\$sofarout);
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false) { 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } 
  return imagecreatefrompng(\$inidis);
}

function ourimagecreatefromgif(\$inidis) {
global \$imvgn, \$imafn, \$imqty, \$imgds, \$gfcds;
  if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '') {
    \$extis='gif';
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, \$inidis);
    \$fzis=filesize(\$sofarout);
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false) { 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } 
  return imagecreatefromgif(\$inidis);
}

function ourimagecreatefrombmp(\$inidis) {
global \$imvgn, \$imafn, \$imqty, \$imgds, \$gfcds;
  if ((\$imvgn . \$imafn . \$imqty . \$imgds) != '') {
    \$extis='bmp';
    \$inextis=\$extis;
    \$sofarout='/tmp/imtmp.' . \$extis;
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       unlink(\$imfilename);  
    }
    file_put_contents(\$sofarout, \$inidis);
    \$fzis=filesize(\$sofarout);
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    exec('" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    }
    foreach (glob('/tmp/imtmp.*') as \$imfilename) {
       if (filesize(\$imfilename) != \$fzis) {  // strpos(\$imfilename, '.' . \$extis) === false) { 
         \$sofarout=\$imfilename; 
         \$extis=explode('.', \$imfilename)[1];  
       }
    }
    \$oimo=null;
    if (strtolower(\$extis) == 'png') {
      \$oimo=imagecreatefrompng('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'bmp') {
      \$oimo=imagecreatefrombmp('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strtolower(\$extis) == 'gif') {
      \$oimo=imagecreatefromgif('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } else if (strpos(strtolower(\$extis), 'jp') !== false) {
      \$oimo=imagecreatefromjpeg('/tmp/imtmp.' . \$extis); " . $gfcds . "
    } 
    if (\$oimo) { return \$oimo; }
  } 
  return imagecreatefrombmp(\$inidis);
}

function getnext() {
   global \$randomizesofar, \$randomizematch, \$randomizeloopcnt, \$randomizelooptotal;
   \$proposed=\$randomizelooptotal;
   while (\$proposed >= \$randomizelooptotal || strpos(\$randomizesofar, ',' . \$proposed . ',') !== false) {
    \$proposed=rand(0, \$randomizelooptotal);
   }
   \$randomizesofar.=',' . \$proposed . ',';
   return \$proposed;
}

function utf8(\$num) {
    if(\$num<=0x7F)       return chr(\$num);
    if(\$num<=0x7FF)      return chr((\$num>>6)+192).chr((\$num&63)+128);
    if(\$num<=0xFFFF)     return chr((\$num>>12)+224).chr(((\$num>>6)&63)+128).chr((\$num&63)+128);
    if(\$num<=0x1FFFFF)   return chr((\$num>>18)+240).chr(((\$num>>12)&63)+128).chr(((\$num>>6)&63)+128).chr((\$num&63)+128);
    return '';
}

function uniord(\$c) {
    \$ord0 = ord(\$c{0}); if (\$ord0>=0   && \$ord0<=127) return \$ord0;
    \$ord1 = ord(\$c{1}); if (\$ord0>=192 && \$ord0<=223) return (\$ord0-192)*64 + (\$ord1-128);
    \$ord2 = ord(\$c{2}); if (\$ord0>=224 && \$ord0<=239) return (\$ord0-224)*4096 + (\$ord1-128)*64 + (\$ord2-128);
    \$ord3 = ord(\$c{3}); if (\$ord0>=240 && \$ord0<=247) return (\$ord0-240)*262144 + (\$ord1-128)*4096 + (\$ord2-128)*64 + (\$ord3-128);
    return false;
}

 function retemoji(\$stringin) {
   return utf8(hexdec(str_replace(\"U+\",\"\", \$stringin))); //html_entity_decode(preg_replace(\"/U\+([0-9A-F]{4})/\", \"&#x\\\\1;\", \$stringin), ENT_NOQUOTES, 'UTF-8');
 }

 srand(make_seed());
 
" . $rltprefix;

$eachone=" if (\$randomizematch == '' || \$randomizematch == \"\$randomizeloopcnt\") {

\$progtext='';
\$text='';

// Open the first source image and add the text.
\$image = imagecreatefromjpeg('source01.jpg');
" . $setwh . "
\$text_color = imagecolorallocate(\$image, " . $r200 . ", " . $g200 . ", " . $b200 . ");
\$white = imagecolorallocatealpha(\$image, 255, 255, 255, 0);
\$black = imagecolorallocatealpha(\$image, 254, 254, 254, 0);
 if (98 == 97) { \$progtext=\$progtext; } 
imagestring(\$image, 5, 5, 5,  \$text, \$text_color);
if (\$progtext != '') {
  if (strpos(\$progtext, '  ') !== false) {
  imagettftext(\$image, 6, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  } else if (strpos(\$progtext, ' ') !== false) {
  imagettftext(\$image, 10, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  } else {
  imagettftext(\$image, 20, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  }
}

// Generate GIF from the $image
// We want to put the binary GIF data into an array to be used later,
//  so we use the output buffer.
ob_start();
imagegif(\$image);
\$frames[]=ob_get_contents();
\$framed[]=40; // Delay in the animation.
ob_end_clean();
// And again..
}
";

$eachonestring=" if (\$randomizematch == '' || \$randomizematch == \"\$randomizeloopcnt\") {

\$progtext='';
\$text='';

// Open the first source image and add the text.
\$underimage = imagecreatefromjpeg('source01.jpg');
\$old_width  = imagesx(\$underimage);
\$old_height = imagesy(\$underimage);
\$image = imagecreatetruecolor(" . $setwhtwo . ");
\$white = imagecolorallocatealpha(\$image, 255, 255, 255, 0);
\$black = imagecolorallocatealpha(\$image, 254, 254, 254, 0);
imagefill(\$image, 0, 0, \$black);
imagecopyresampled(\$image, \$underimage, 0, 0, 0, 0, " . $setwhtwo . ", \$old_width, \$old_height); 
imagedestroy(\$underimage);
imagecolortransparent(\$image, \$black);
\$text_color = imagecolorallocate(\$image, " . $r200 . ", " . $g200 . ", " . $b200 . ");
 if (98 == 97) { \$progtext=\$progtext; } 
imagestring(\$image, 5, 5, 5,  \$text, \$text_color);
if (\$progtext != '') {
  if (strpos(\$progtext, '  ') !== false) {
  imagettftext(\$image, 6, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  } else if (strpos(\$progtext, ' ') !== false) {
  imagettftext(\$image, 10, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  } else {
  imagettftext(\$image, 20, 0, (strlen(\$text) * 12), 21, \$text_color, realpath('DejaVuSansMono.ttf'), \$progtext);
  }
}

// Generate GIF from the $image
// We want to put the binary GIF data into an array to be used later,
//  so we use the output buffer.
ob_start();
imagegif(\$image);
\$frames[]=ob_get_contents();
\$framed[]=40; // Delay in the animation.
ob_end_clean();

// And again..
}
";

if (isset($_GET['red']) && isset($_GET['green']) && isset($_GET['blue'])) {
$prestfle="<input type=hidden name=red value='" . $_GET['red'] . "'></input><input type=hidden name=green value='" . $_GET['green'] . "'></input><input type=hidden name=blue value='" . $_GET['blue'] . "'></input>";
$zzz="," . $_GET['red'] . "," . $_GET['green'] . "," . $_GET['blue'] . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else if (isset($_POST['red']) && isset($_POST['green']) && isset($_POST['blue'])) {
$prestfle="<input type=hidden name=red value='" . $_POST['red'] . "'></input><input type=hidden name=green value='" . $_POST['green'] . "'></input><input type=hidden name=blue value='" . $_POST['blue'] . "'></input>";
$zzz="," . $_POST['red'] . "," . $_POST['green'] . "," . $_POST['blue'] . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else if (isset($_GET['background-color'])) {
$colis=str_replace('#','',urldecode($_GET['background-color']));
if ($colis != "") {
$cn=color_name_to_hex($colis);
if ((strcmp(substr($colis,0,1),'0') < 0 || strcmp(substr($colis,0,1),'9') > 0) && $cn != $colis) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_GET['background-color']) . "'></input>";
$zzz="," . $ris . "," . $gis . "," . $bis . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else if (strlen($colis) == 6) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_GET['background-color']) . "'></input>";
$zzz="," . hexdec(substr($colis,0,2)) . "," . hexdec(substr($colis,2,2)) . "," . hexdec(substr($colis,4,2)) . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else if (strpos(strtolower($colis),'rgb') !== false) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_GET['background-color']) . "'></input>";
$zzz="," . explode(",",str_replace(")",",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis)))))[0] . "," . explode(",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis))))[1] . "," . explode(",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis))))[2] . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else {
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2,0,0,0,'bin');
echo \$gif->GetAnimation();

?>
"; 
}
}

} else if (isset($_POST['background-color'])) {
$colis=str_replace('#','',urldecode($_POST['background-color']));
if ($colis != "") {
$cn=color_name_to_hex($colis);
if ((strcmp(substr($colis,0,1),'0') < 0 || strcmp(substr($colis,0,1),'9') > 0) && $cn != $colis) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_POST['background-color']) . "'></input>";
$zzz="," . $ris . "," . $gis . "," . $bis . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 
} else if (strlen($colis) == 6) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_POST['background-color']) . "'></input>";
$zzz="," . hexdec(substr($colis,0,2)) . "," . hexdec(substr($colis,2,2)) . "," . hexdec(substr($colis,4,2)) . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 


} else if (strpos(strtolower($colis),'rgb') !== false) {
$prestfle="<input type=hidden name=background-color value='" . urldecode($_POST['background-color']) . "'></input>";
$zzz="," . explode(",",str_replace(")",",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis)))))[0] . "," . explode(",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis))))[1] . "," . explode(",",str_replace("rgb(","",str_replace("rgba(","",strtolower($colis))))[2] . ",";
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2" . $zzz . "'bin');
echo \$gif->GetAnimation();

?>
"; 



} else {
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2,0,0,0,'bin');
echo \$gif->GetAnimation();

?>
"; 
}
}
} else {
$lastbit="
// Generate the animated gif and output to screen.
\$gif = new GIFEncoder(\$frames,\$framed,0,2,0,0,0,'bin');
echo \$gif->GetAnimation();

?>
"; 
}

$lastbitfrom="echo \$gif->GetAnimation();";
$lastbitto="\$fp = fopen('animegif.gif', 'w'); 
\$data = \$gif->GetAnimation(); 
\$dataUri = 'data:image/gif;base64,' . base64_encode(\$data);
fwrite(\$fp, \$data); 
fclose(\$fp);
\$fp = fopen('animegif.html', 'w'); 
fwrite(\$fp, '<!doctype html><html><body><h1>Data URI version below<h1><br><h4> ... via web browser (Windows right click, Mac OS X two finger gesture) ...</h4><br><img src=' . \"\\n\" . \$dataUri . \"\\n\" . ' title=DataURI></img></body></html>'); 
fclose(\$fp);";
$agtext="";
$url="";

// converts an html color name to a hex color value
// if the input is not a color name, the original value is returned
// http://wpCodeSnippets.info

function color_name_to_hex($color_name) { // thanks to https://stackoverflow.com/questions/2553566/how-to-convert-a-string-color-to-its-hex-code-or-rgb-value
    global $ris, $gis, $bis;
    // standard 147 HTML color names
    $colors  =  array(
        'aliceblue'=>'F0F8FF',
        'antiquewhite'=>'FAEBD7',
        'aqua'=>'00FFFF',
        'aquamarine'=>'7FFFD4',
        'azure'=>'F0FFFF',
        'beige'=>'F5F5DC',
        'bisque'=>'FFE4C4',
        'black'=>'000000',
        'blanchedalmond '=>'FFEBCD',
        'blue'=>'0000FF',
        'blueviolet'=>'8A2BE2',
        'brown'=>'A52A2A',
        'burlywood'=>'DEB887',
        'cadetblue'=>'5F9EA0',
        'chartreuse'=>'7FFF00',
        'chocolate'=>'D2691E',
        'coral'=>'FF7F50',
        'cornflowerblue'=>'6495ED',
        'cornsilk'=>'FFF8DC',
        'crimson'=>'DC143C',
        'cyan'=>'00FFFF',
        'darkblue'=>'00008B',
        'darkcyan'=>'008B8B',
        'darkgoldenrod'=>'B8860B',
        'darkgray'=>'A9A9A9',
        'darkgreen'=>'006400',
        'darkgrey'=>'A9A9A9',
        'darkkhaki'=>'BDB76B',
        'darkmagenta'=>'8B008B',
        'darkolivegreen'=>'556B2F',
        'darkorange'=>'FF8C00',
        'darkorchid'=>'9932CC',
        'darkred'=>'8B0000',
        'darksalmon'=>'E9967A',
        'darkseagreen'=>'8FBC8F',
        'darkslateblue'=>'483D8B',
        'darkslategray'=>'2F4F4F',
        'darkslategrey'=>'2F4F4F',
        'darkturquoise'=>'00CED1',
        'darkviolet'=>'9400D3',
        'deeppink'=>'FF1493',
        'deepskyblue'=>'00BFFF',
        'dimgray'=>'696969',
        'dimgrey'=>'696969',
        'dodgerblue'=>'1E90FF',
        'firebrick'=>'B22222',
        'floralwhite'=>'FFFAF0',
        'forestgreen'=>'228B22',
        'fuchsia'=>'FF00FF',
        'gainsboro'=>'DCDCDC',
        'ghostwhite'=>'F8F8FF',
        'gold'=>'FFD700',
        'goldenrod'=>'DAA520',
        'gray'=>'808080',
        'green'=>'008000',
        'greenyellow'=>'ADFF2F',
        'grey'=>'808080',
        'honeydew'=>'F0FFF0',
        'hotpink'=>'FF69B4',
        'indianred'=>'CD5C5C',
        'indigo'=>'4B0082',
        'ivory'=>'FFFFF0',
        'khaki'=>'F0E68C',
        'lavender'=>'E6E6FA',
        'lavenderblush'=>'FFF0F5',
        'lawngreen'=>'7CFC00',
        'lemonchiffon'=>'FFFACD',
        'lightblue'=>'ADD8E6',
        'lightcoral'=>'F08080',
        'lightcyan'=>'E0FFFF',
        'lightgoldenrodyellow'=>'FAFAD2',
        'lightgray'=>'D3D3D3',
        'lightgreen'=>'90EE90',
        'lightgrey'=>'D3D3D3',
        'lightpink'=>'FFB6C1',
        'lightsalmon'=>'FFA07A',
        'lightseagreen'=>'20B2AA',
        'lightskyblue'=>'87CEFA',
        'lightslategray'=>'778899',
        'lightslategrey'=>'778899',
        'lightsteelblue'=>'B0C4DE',
        'lightyellow'=>'FFFFE0',
        'lime'=>'00FF00',
        'limegreen'=>'32CD32',
        'linen'=>'FAF0E6',
        'magenta'=>'FF00FF',
        'maroon'=>'800000',
        'mediumaquamarine'=>'66CDAA',
        'mediumblue'=>'0000CD',
        'mediumorchid'=>'BA55D3',
        'mediumpurple'=>'9370D0',
        'mediumseagreen'=>'3CB371',
        'mediumslateblue'=>'7B68EE',
        'mediumspringgreen'=>'00FA9A',
        'mediumturquoise'=>'48D1CC',
        'mediumvioletred'=>'C71585',
        'midnightblue'=>'191970',
        'mintcream'=>'F5FFFA',
        'mistyrose'=>'FFE4E1',
        'moccasin'=>'FFE4B5',
        'navajowhite'=>'FFDEAD',
        'navy'=>'000080',
        'oldlace'=>'FDF5E6',
        'olive'=>'808000',
        'olivedrab'=>'6B8E23',
        'orange'=>'FFA500',
        'orangered'=>'FF4500',
        'orchid'=>'DA70D6',
        'palegoldenrod'=>'EEE8AA',
        'palegreen'=>'98FB98',
        'paleturquoise'=>'AFEEEE',
        'palevioletred'=>'DB7093',
        'papayawhip'=>'FFEFD5',
        'peachpuff'=>'FFDAB9',
        'peru'=>'CD853F',
        'pink'=>'FFC0CB',
        'plum'=>'DDA0DD',
        'powderblue'=>'B0E0E6',
        'purple'=>'800080',
        'red'=>'FF0000',
        'rosybrown'=>'BC8F8F',
        'royalblue'=>'4169E1',
        'saddlebrown'=>'8B4513',
        'salmon'=>'FA8072',
        'sandybrown'=>'F4A460',
        'seagreen'=>'2E8B57',
        'seashell'=>'FFF5EE',
        'sienna'=>'A0522D',
        'silver'=>'C0C0C0',
        'skyblue'=>'87CEEB',
        'slateblue'=>'6A5ACD',
        'slategray'=>'708090',
        'slategrey'=>'708090',
        'snow'=>'FFFAFA',
        'springgreen'=>'00FF7F',
        'steelblue'=>'4682B4',
        'tan'=>'D2B48C',
        'teal'=>'008080',
        'thistle'=>'D8BFD8',
        'tomato'=>'FF6347',
        'turquoise'=>'40E0D0',
        'violet'=>'EE82EE',
        'wheat'=>'F5DEB3',
        'white'=>'FFFFFF',
        'whitesmoke'=>'F5F5F5',
        'yellow'=>'FFFF00',
        'yellowgreen'=>'9ACD32');

    $color_name = strtolower($color_name);
    if (isset($colors[$color_name])) {
        $ris = hexdec(substr($colors[$color_name],0,2));
        $gis = hexdec(substr($colors[$color_name],2,2));
        $bis = hexdec(substr($colors[$color_name],4,2));
        return ('#' . $colors[$color_name]);
    } else {
        return ($color_name);
    }
}

function inhouseslideshow($uarray,$uarraydatauri) {
  global $agtext, $videocmd, $videopath;
  if (sizeof($uarray) == 0) return "";
  if (file_exists($videopath . "ffmpeg")) {
   exec($videocmd); // exec("`which ffmpeg` " . explode("ffmpeg",$videocmd)[1]);
  }
  //echo $videocmd;
  //exit;
  $sofar="<html> \n"; 
  $sofar.="<head><meta charset='utf-8'/> \n";
  $sofar.="<title>" . $agtext . " - via RJM Programming Slideshow Presentation</title> \n";
  $sofar.="<script type=\"text/javascript\"> \n";
  $sofar.="var smode = location.search.split('smode=')[1] ? location.search.split('smode=')[1].split('&')[0] : '1'; \n ";
  $sofar.="var ttl = ' ... click to have this slide stay longer'; \n";
  $sofar.="var nextone=0, inextone=1, jnextone=0; \n";
  $sofar.="var lastone=" . (-1 + sizeof($uarray)) . "; \n ";
  $sofar.="var haveseen=0; \n ";
  $sofar.="var aminterested=0, dt=''; \n ";
  $sofar.="var doit=1, uarraydatauri=[]; \n ";
  for ($ipo=0; $ipo<sizeof($uarraydatauri); $ipo++) {
  $sofar.=" uarraydatauri.push('" . $uarraydatauri[$ipo] . "'); \n ";
  }
  $sofar.="function onck(that) { \n ";
  $sofar.="  doit = 0; \n ";
  $sofar.="} \n ";
  $sofar.="function havealook(backto) { \n ";
  $sofar.="  if (smode == '0') { \n ";
  $sofar.="  if (backto == 0) location.href=document.URL.replace('smode=0','smode=1'); \n ";
  $sofar.="  document.getElementById('i' + nextone).src=uarraydatauri[jnextone]; \n";
  $sofar.="  document.title=dt + \" Slide \" + inextone + \" of \" + eval(lastone + 1); \n ";
  $sofar.="  if (dt == '') {  document.getElementById('myh1').innerHTML='Slideshow Data URI version below';  document.getElementById('som').innerHTML='Start of Movie'; dt=document.getElementById('i' + nextone).title; } else if (inextone == 1) { document.getElementById('som').innerHTML='Start of Movie';  } else { document.getElementById('som').innerHTML='';  }  \n ";
  $sofar.="  inextone=eval(eval(inextone % eval(1 + lastone)) + 1); jnextone=eval(-1 + inextone); \n ";
  $sofar.="  } else { \n ";
  $sofar.="  var thissrc=''; \n ";
  $sofar.="  var prefix=''; \n ";
  $sofar.="  if (doit == 0) { \n ";
  $sofar.="  doit = 1; \n ";
  $sofar.="  } else { \n ";
  $sofar.="  if (aminterested != 0 || backto == 0) { \n ";
  $sofar.="  var cit = document.getElementById('s0'); \n ";
  $sofar.="  if (nextone == lastone) { \n ";
  $sofar.="    thissrc = document.getElementById('i' + nextone).src; \n ";
  $sofar.="    cit.innerHTML = prefix + \"<img onclick='onck(this);' id='j\" + nextone + \"' src='\" + thissrc + \"' title='\" + document.getElementById('i' + nextone).title + ttl + \"' />\"; \n ";
  $sofar.="    nextone = 0; \n ";
  $sofar.="  } else { \n ";
  $sofar.="    thissrc = document.getElementById('i' + nextone).src; \n ";
  $sofar.="    if (backto != 0 && nextone == 0) { \n ";
  $sofar.="       prefix = 'Start of Movie: '; \n ";
  $sofar.="    } \n ";
  $sofar.="    cit.innerHTML = prefix + \"<img onclick='onck(this);' id='j\" + nextone + \"' src='\" + thissrc + \"' title='\" + document.getElementById('i' + nextone).title + ttl + \"' />\"; \n ";
  $sofar.="    nextone = nextone + 1; \n ";
  $sofar.="    if (nextone > 1) haveseen = 1; \n ";
  $sofar.="  } \n ";
  $sofar.="  if (backto == 0) { \n ";
  $sofar.="    nextone = backto; \n ";
  $sofar.="    aminterested = 1; \n ";
  $sofar.="  } \n ";
  $sofar.="  } \n ";
  $sofar.="  var nnext = eval(nextone + 0); \n ";
  $sofar.="  var llast = eval(lastone + 1); \n ";
  $sofar.="  if (nnext >= 1 && nnext <= llast) { \n ";
  $sofar.="    nnext = nnext; \n ";
  $sofar.="  } else if (prefix != '') { \n ";
  $sofar.="    nnext = 1;   \n ";
  $sofar.="  } else if (aminterested != 0 && haveseen == 1) { \n ";
  $sofar.="    nnext = llast; \n ";
  $sofar.="  } else if (aminterested != 0) { \n ";
  $sofar.="    nnext = 1; \n ";
  $sofar.="  } else if (nnext == 0) { \n ";
  $sofar.="    nnext = 1; \n ";
  $sofar.="  } \n ";
  $sofar.="  document.title=document.getElementById('i' + nextone).title + \" Slide \" + nnext + \" of \" + llast; \n ";
  $sofar.="  } \n ";
  $sofar.="  } \n ";
  $sofar.="} \n ";
  $sofar.="function ol() { \n ";

for ($iqw=1; $iqw<sizeof($uarray); $iqw++) {
    $sofar.=" if (smode != '0') document.getElementById('row').innerHTML+='<td><span style=\"color:red;font-size:14px;\"><b>--&gt;</b></span></td><td><img onclick=\"onck(this);\" id=\"i" . $iqw . "\" src=\"" . $uarray[$iqw] . "\" title=\"" . $agtext . "\" /></td>'; \n ";
}

  $sofar.="} \n ";
  $sofar.="window.setInterval(function(){havealook(1)},2000);  \n ";
  $sofar.="</script> \n ";
  $sofar.="<title>" . $agtext . "</title> \n ";
  $sofar.="</head> \n ";
  $sofar.="<body onload=\"document.title=document.title + ' ' + lastone; ol(); \"> \n ";
  $sofar.="<h1 id=myh1>Slideshow version below<h1><br><h4> ... optionally get content via web browser (Windows right click, Mac OS X two finger gesture) ... <span id=som></span></h4><br> \n ";
  $sofar.="<table> \n ";
  $sofar.="<tr id=row> \n ";
  $sofar.="<td><span id='s0'><a href='#' title=\"Movie'ize Here vs Follow Red Right Arrows with Bottom Scrollbar\" onclick='havealook(0);'>@</a></span><span style=\"color:red;font-size:14px;\"><b>--&gt;</b></span></td><td><img onclick=\"onck(this);\" id=\"i0\" src=\"" . $uarray[0] . "\" title=\"" . $agtext . "\" /></td> \n ";

//for ($iqw=1; $iqw<sizeof($uarray); $iqw++) {
//    $sofar.="<td><span style=\"color:red;font-size:14px;\"><b>--&gt;</b></span></td><td><img onclick=\"onck(this);\" id=\"i" . $iqw . "\" src=\"" . $uarray[$iqw] . "\" title=\"" . $agtext . "\" /></td> \n ";
//}

return $sofar . "</table>\n</body>\n</html>";
}

function jserver_remote_addr() {
    global $stfle;
    $rma = $_SERVER['REMOTE_ADDR'];
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    // you can add different browsers with the same way ..
    if(preg_match('/(chromium)[ \/]([\w.]+)/', $ua))
            $rma = '000000'.$rma;
    elseif(preg_match('/(chrome)[ \/]([\w.]+)/', $ua))
            $rma = '00000'.$rma;
    elseif(preg_match('/(safari)[ \/]([\w.]+)/', $ua))
            $rma = '0000'.$rma;
    elseif(preg_match('/(opera)[ \/]([\w.]+)/', $ua))
            $rma = '000'.$rma;
    elseif(preg_match('/(msie)[ \/]([\w.]+)/', $ua))
            $rma = '00'.$rma;
    elseif(preg_match('/(mozilla)[ \/]([\w.]+)/', $ua))
            $rma = '0'.$rma;
    return str_replace(":", "_", $rma);
}

function server_remote_addr() {
    global $stfle;
    $rma = $_SERVER['REMOTE_ADDR'];
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    // you can add different browsers with the same way ..
    if(preg_match('/(chromium)[ \/]([\w.]+)/', $ua))
            $rma = '000000'.$rma;
    elseif(preg_match('/(chrome)[ \/]([\w.]+)/', $ua))
            $rma = '00000'.$rma;
    elseif(preg_match('/(safari)[ \/]([\w.]+)/', $ua))
            $rma = '0000'.$rma;
    elseif(preg_match('/(opera)[ \/]([\w.]+)/', $ua))
            $rma = '000'.$rma;
    elseif(preg_match('/(msie)[ \/]([\w.]+)/', $ua))
            $rma = '00'.$rma;
    elseif(preg_match('/(mozilla)[ \/]([\w.]+)/', $ua))
            $rma = '0'.$rma;
    if (isset($_GET['outfile'])) {
      if (urldecode($_GET['outfile']) != "") {
        $stfle='<input type=hidden name=outfile id=outfile value="' . urldecode($_GET['outfile']) . '"></input> ';
        return urldecode($_GET['outfile']);
      }
    } else if (isset($_POST['outfile'])) {
      if (urldecode($_POST['outfile']) != "") {
        $stfle='<input type=hidden name=outfile id=outfile value="' . urldecode($_POST['outfile']) . '"></input> ';
        return urldecode($_POST['outfile']);
      }
    }
    return str_replace(":", "_", $rma);
}

function str_replace_first($from, $to, $content) { // thanks to https://stackoverflow.com/questions/1252693/using-str-replace-so-that-it-only-acts-on-the-first-match
    $from = '/'.preg_quote($from, '/').'/';
    return preg_replace($from, $to, $content, 1);
}

function ingif($gp) {
  global $foundtitle, $wtsuffix, $atext, $filteretc, $enumber, $ow, $oh, $owend, $ohend, $diffow, $diffoh, $delay, $vdy;
  $indelay=$delay;
  if (isset($_GET['delay'])) { $indelay=str_replace(" ","+",urldecode($_GET['delay'])); }
  if (isset($_POST['delay'])) { $indelay=str_replace(" ","+",urldecode($_POST['delay'])); }
  if (strpos($indelay, ",") !== false) {
   if (strpos($gp, ("framed" . "[" . "]=" . $vdy . ";")) !== false) {
     $gpf=explode("framed" . "[" . "]=" . $vdy . ";", $gp)[0];
     $gp=str_replace($gpf . "framed" . "[" . "]=" . $vdy . ";", $gpf . "framed" . "[" . "] = " . $vdy . ";", $gp); //, 1);
     $delaysare=explode(",", $indelay);
     for ($iuy=1; $iuy<sizeof($delaysare); $iuy++) {
      if (strpos($gp, ("framed" . "[" . "]=" . $vdy . ";")) !== false) {
       $gpf=explode("framed" . "[" . "]=" . $vdy . ";", $gp)[0];
       if (trim($delaysare[$iuy]) == '') {
       $gp=str_replace($gpf . "framed" . "[" . "]=" . $vdy . ";", $gpf . "framed" . "[" . "] = " . $vdy . ";", $gp); //, 1);
       } else if (strpos($delaysare[$iuy], "+") !== false) {
       $delaysare[$iuy]='' . ($delaysare[-1 + $iuy] + substr($delaysare[$iuy],1));
       $gp=str_replace($gpf . "framed" . "[" . "]=" . $vdy . ";", $gpf . "framed" . "[" . "] = " . $delaysare[$iuy] . ";", $gp); //, 1);
       } else if (strpos($delaysare[$iuy], "-") !== false) {
       $delaysare[$iuy]='' . ($delaysare[-1 + $iuy] - substr($delaysare[$iuy],1));
       $gp=str_replace($gpf . "framed" . "[" . "]=" . $vdy . ";", $gpf . "framed" . "[" . "] = " . $delaysare[$iuy] . ";", $gp); //, 1);
       } else {
       $gp=str_replace($gpf . "framed" . "[" . "]=" . $vdy . ";", $gpf . "framed" . "[" . "] = " . $delaysare[$iuy] . ";", $gp); //, 1);
       }
      }
     }
   }
  } 
  $enbit="";
  $outgp=$gp;
  if ($wtsuffix != '' || $filteretc != '' || $enumber != '') {
  if ($enumber != '') {
    $enbit="\n
 \$oldwidth=imagesx(\$image); 
 \$oldheight=imagesy(\$image); 
 \$newwidth=(" . $diffow . " + \$oldwidth);  
 \$newheight=(" . $diffoh . " + \$oldheight);  
 \$uimage=imagecreatetruecolor(\$newwidth, \$newheight); 
 imagefill(\$uimage, 0, 0, \$white);
 imagecopyresampled(\$uimage, \$image, 0, 0, 0, 0, \$newwidth, \$newheight, \$oldwidth, \$oldheight); 
 imagefill(\$image, 0, 0, \$white);
 imagecopyresampled(\$image, \$uimage, 0, 0, 0, 0, \$newwidth, \$newheight, \$newwidth, \$newheight); 
 imagedestroy(\$uimage); 
    \n";
  }
  //$bits=explode("\$image = ", $gp);
  $bits=explode("if (98 == 97)", $gp);
  if (sizeof($bits) > 1) {
  $outgp="";
  for ($ii=0; $ii<(-1 + sizeof($bits)); $ii++) {
    $outgp.=lastcountidea($ii, (-1 + sizeof($bits)), $wtsuffix, $bits[$ii] . "\n " . $filteretc . $enbit . "\n if (98 == 97)");
  }
  $outgp.=$bits[-1 + sizeof($bits)];
  }
  }
  return $outgp;
}

function appemoji($tcnt, $thcnt) {
  // &#11036; white &#11035; black 9703 half
  $onex=1;
  $retvl='' . $tcnt . '"' . "; \n \$progtext=" . '"';
  if ($tcnt > 20) { $onex=2; }
  for ($ilk=1; $ilk<=$tcnt; $ilk+=$onex) {
    if ($tcnt > 20) {
    if ((0 + $ilk) <= $thcnt) {
      if ((1 + $ilk) <= $thcnt) {
      $retvl.=html_entity_decode("&#9632;");
      } else {
      $retvl.=html_entity_decode("&#9703;");
      }
    } else {
      $retvl.=html_entity_decode("&#9633;");
    }
    } else {
    if ($ilk <= $thcnt) {
      $retvl.=html_entity_decode("&#9632;");
    } else {
      $retvl.=html_entity_decode("&#9633;");
    }
    }
  }
  if ($tcnt > 80) {
    $retvl.="  ";
  } else if ($tcnt > 40) {
    $retvl.=" ";
  }
  return $retvl;
}

function lastcountidea($thiscounter,$totalcount,$suffixwatermarkmode,$sofarphp) {
  global $foundtitle, $wtsuffix, $atext;
  $ft="";
  $ourdelim="'";
  if (strpos($sofarphp, "\$text=") !== false) {
    $sofars=explode("\$text=", $sofarphp);
    $ourdelim=substr($sofars[1],0,1);
    $ft=explode($ourdelim,substr($sofars[1],1))[0];
  }
  if ($foundtitle == " ") {
    if (strpos($sofarphp, "\$text=") !== false) {
      $sofars=explode("\$text=", $sofarphp);
      $foundtitle=$ft;
    }
  }
  if ($suffixwatermarkmode == ' ') {
  if ($thiscounter == 0) {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . $foundtitle . " ... 1 of " . appemoji($totalcount,1) . $ourdelim, $sofarphp);
  } else {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . "" . (1 + $thiscounter) . " of " . appemoji($totalcount,(1 + $thiscounter)) . $ourdelim, $sofarphp);
  }
  } else if ($suffixwatermarkmode == '  ') {
  if ($thiscounter == 0) {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . $foundtitle . " ... 1 of " . appemoji($totalcount,1) . $ourdelim, $sofarphp);
  } else {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . $foundtitle . " ... " . (1 + $thiscounter) . " of " . appemoji($totalcount,(1 + $thiscounter)) . $ourdelim, $sofarphp);
  }
  } else if (strlen($suffixwatermarkmode) != 0) {
  if ($thiscounter == 0) {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . $ourdelim, $sofarphp);
  } else {
    $sofarphp=str_replace_first("\$text=" . $ourdelim . $ft . $ourdelim, "\$text=" . $ourdelim . $ourdelim, $sofarphp);
  }
  }
  return $sofarphp;
}

function analyze($url) {
global $durlis,$ihsh,$types,$exts,$prefixretp,$suffixretp,$defvastyle,$nondefvastyle,$midway,$newrbut, $xred,$xgreen,$xblue,$fontname,$xangle,$xleft,$xtop,$xsize,$xttfprefix,$opac,$zris,$zristwo,$zrtot, $rlt, $grltsuffix, $rltminus, $rltprefix, $rltsuffix;
 //$aprefix="../";
 $aprefix="";
 if (strpos($url, "//") === false && strpos($_SERVER['SERVER_NAME'], "rjmprogramming.com.au") !== false) return $aprefix;
 if (strpos($url, "//") === false && strpos($_SERVER['SERVER_NAME'], "localhost") !== false) return $aprefix;
 $aub=$_SERVER['REQUEST_URI'];
 $xubf=explode("?", $aub);
 $xubf[0]=str_replace("tutorial_to_animated_gif.php", "", str_replace("@!@","", str_replace("@!@/","", "@!@" . $xubf[0])));
 $xubff=explode("/", $xubf[0]);
 for ($ih=1; $ih<sizeof($xubff); $ih++) $aprefix .= "../";
 //echo $aprefix;
 if (strpos($xubff[sizeof($xubff) - 1], ".") !== false && (sizeof($xubff) - 1) > 2) {
       $xub=str_replace("/" . $xubff[sizeof($xubff) - 1], "/", $xubf[0]);
 } else {
       $xub=str_replace("@$@", "", str_replace("/@$@", "/", ($xubf[0] . "@$@")));
 }
 $ubf=explode("?", $url);
 
 $ubff=explode("/", $ubf[0]);
 if (strpos($ubff[sizeof($ubff) - 1], ".") !== false && (sizeof($ubff) - 1) > 2) {
       $ub=str_replace("/" . $ubff[sizeof($ubff) - 1], "/", $ubf[0]);
 } else {
       $ub=str_replace("@$@", "", str_replace("/@$@", "/", ($ubf[0] . "@$@")));
 }
 $preubff=explode("rjmprogramming.com.au:80/", $ub);
 if (sizeof($preubff) > 1) {
  $aprefix.=$preubff[1];
 } else {
 $preubff=explode("rjmprogramming.com.au/", $ub);
 if (sizeof($preubff) > 1) {
  $aprefix.=$preubff[1];
 } else {
 $preubff=explode("localhost:8888/", $ub);
 if (sizeof($preubff) == 1) {
 $preubff=explode("localhost:80/", $ub);
 }
 if (sizeof($preubff) == 1) {
 $preubff=explode("localhost/", $ub);
 }
 if (sizeof($preubff) > 1) {
  $aprefix.=$preubff[1];
 }
 }
 }
 return $aprefix;
}

if (isset($_GET['slideshow']) || isset($_POST['slideshow'])) {
 if (isset($_GET['slideshow'])) $url=($_GET['slideshow']);
 if (isset($_POST['slideshow'])) $url=($_POST['slideshow']);
 if (strpos(('~' . $url), ('~' . $_SERVER['DOCUMENT_ROOT'])) !== false) {
   $url=str_replace(($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR), explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0] . "/", $url);
 } else if (strpos(('~' . $url), ('~' . urlencode($_SERVER['DOCUMENT_ROOT'])) ) !== false) {
   $url=str_replace(urlencode($_SERVER['DOCUMENT_ROOT']), urlencode(explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0]), $url);
 } 
//  echo "prehere";
//  exit;
 if (strpos($url, ' src="') !== false) {
 $shtml=$url;
 file_put_contents(server_remote_addr() . "_huh.html", $url);
 $moreh1=" ... you have 10 seconds to change delay value as necessary";
 //$imagegifandthen.="document.getElementById('slideshow').value='http://www.rjmprogramming.com.au/PHP/animegif/" . server_remote_addr() . "_huh.html'; setTimeout(and_then,10000); ";
 $imagegifandthen.="document.getElementById('slideshow').value=document.URL.split('/')[0] + '//www.rjmprogramming.com.au/PHP/animegif/" . server_remote_addr() . "_huh.html'; setTimeout(and_then,10000); ";
 $shtml="";
 } else {
//  echo "here";
//  exit;
 if (isset($_GET['slideshow'])) $shtml=@file_get_contents($_GET['slideshow']);
 if (isset($_POST['slideshow'])) $shtml=@file_get_contents($_POST['slideshow']);
 }
 $prefix=analyze($url);
 if (isset($_GET['delay'])) $delay=ourstr_replace("+","",urldecode($_GET['delay']));
 if (isset($_POST['delay'])) $delay=ourstr_replace("+","",urldecode($_POST['delay']));
 $vdy=explode(".",str_replace("+","",explode(",",$delay)[0]))[0];
 if ("$vdy" == "0") { $vdy="1"; } 
 $videocmd=$videopath . "ffmpeg -r " . (1000 / $vdy) . " -i " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "%03d.jpg " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "video.mp4 2> " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "video.bad";
 $svideocmd="ffmpeg -r " . (1000 / $vdy) . " -i " . "%03d.jpg " . "video.mp4";
 if (!file_exists($videopath . "ffmpeg")) {
 $videohtml="<h4 id=hvideo>No ffmpeg installed, so ... if you have in your local system ... at command line (in download directory, first removing any existant %03d.jpg files such as 001.jpg to 999.jpg) type (to end up with a video.mp4 video) <br><br><b><i>" . $svideocmd . "</i></b><br><br> ... after downloading ... <br><br><br><br><b><i>open video.mp4</i></b><br><br>";
 $videosuffix=" creation advice";
 }
 $eachone=str_replace("[]=40;", "[]=" . explode(",",$delay)[$zris] . ";", $eachone);
 $eachonestring=str_replace("[]=40;", "[]=" . explode(",",$delay)[$zris] . ";", $eachonestring);
 if (strpos($delay, ",") !== false) {
   //$zris++;
   $zrtot=sizeof(explode(",",$delay));
 }
 $gifphp=$agifphp;
 if (isset($_GET['stitle'])) $agtext=(str_replace("+"," ",urldecode($_GET['stitle'])));
 if (isset($_POST['stitle'])) $agtext=(str_replace("+"," ",urldecode($_POST['stitle'])));
 if (strpos($shtml, ' src="') === false) {
  $shtml=' src="' . $url . '" ';
  $icnt++;
  $jfilep="00";
  $ijf=1;
  $jf=1;
  while (isset($_GET['slideshow' . $icnt]) || isset($_POST['slideshow' . $icnt])) {
   if (sizeof($ismulti) == 0) { 
    if (strpos($url,".") !== false) {
      $ismulti[sizeof($ismulti)]=$url;
      if (file_exists('video.mp4')) unlink('video.mp4');
      if (1 == 1) {
        if (file_exists('001.jpg')) {
          while (file_exists(substr(($jfilep . $jf),-3) . '.jpg')) {
            unlink(substr(($jfilep . $jf),-3) . '.jpg');
            $jf++;
          }
        }
        if (file_exists($videopath . "ffmpeg")) {
        file_put_contents(substr(($jfilep . $ijf),-3) . '.jpg', file_get_contents($url));
        } else {
        $videohtml=str_replace("<br><br><br><b><i>open", "<br><a download='001.jpg' title='001.jpg' href='" . $url . "'>" . $url . "</a>&nbsp;<br><br><br><b><i>open", $videohtml);
        }
        $ijf++;
      }
      $ismultidatauri[sizeof($ismultidatauri)]='data:image/' . explode('#',str_replace('jpg','jpeg',strtolower(explode('.',$url)[-1 + sizeof(explode('.',$url))])))[0] . ';base64,' . base64_encode(file_get_contents(explode('#',$url)[0]));
    }
   }
   if (isset($_GET['slideshow' . $icnt])) {
     $url=($_GET['slideshow' . $icnt]);
 if (strpos(('~' . $url), ('~' . $_SERVER['DOCUMENT_ROOT'])) !== false) {
   $url=str_replace(($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR), explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0] . "/", $url);
 } else if (strpos(('~' . $url), ('~' . urlencode($_SERVER['DOCUMENT_ROOT'])) ) !== false) {
   $url=str_replace(urlencode($_SERVER['DOCUMENT_ROOT']), urlencode(explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0]), $url);
 } 
     if (strpos($url,".") !== false) {
      $ismulti[sizeof($ismulti)]=$url;
      if (file_exists($videopath . "ffmpeg")) {
        file_put_contents(substr(($jfilep . $ijf),-3) . '.jpg', file_get_contents($url));
      } else {
        $videohtml=str_replace("<br><br><br><b><i>open", "<br><a download='" . substr(($jfilep . $ijf),-3) . ".jpg' title='" . substr(($jfilep . $ijf),-3) . ".jpg' href='" . $url . "'>" . $url . "</a>&nbsp;<br><br><br><b><i>open", $videohtml);
      }
      $ijf++;
      $ismultidatauri[sizeof($ismultidatauri)]='data:image/' . explode('#',str_replace('jpg','jpeg',strtolower(explode('.',$url)[-1 + sizeof(explode('.',$url))])))[0] . ';base64,' . base64_encode(file_get_contents(explode('#',$url)[0]));
     }
   }
   if (isset($_POST['slideshow' . $icnt])) {
     $url=($_POST['slideshow' . $icnt]);
 if (strpos(('~' . $url), ('~' . $_SERVER['DOCUMENT_ROOT'])) !== false) {
   $url=str_replace(($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR), explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0] . "/", $url);
 } else if (strpos(('~' . $url), ('~' . urlencode($_SERVER['DOCUMENT_ROOT'])) ) !== false) {
   $url=str_replace(urlencode($_SERVER['DOCUMENT_ROOT']), urlencode(explode("//", $durlis)[0] . "//" . explode("/",explode("//", $durlis)[1])[0]), $url);
 } 
     if (strpos($url,".") !== false) {
      $ismulti[sizeof($ismulti)]=$url;
      if (file_exists($videopath . "ffmpeg")) {
        file_put_contents(substr(($jfilep . $ijf),-3) . '.jpg', file_get_contents($url));
      } else {
        $videohtml=str_replace("<br><br><br><b><i>open", "<br><a download='" . substr(($jfilep . $ijf),-3) . ".jpg' title='" . substr(($jfilep . $ijf),-3) . ".jpg' href='" . $url . "'>" . $url . "</a>&nbsp;<br><br><br><b><i>open", $videohtml);
      }
      $ijf++;
      $ismultidatauri[sizeof($ismultidatauri)]='data:image/' . explode('#',str_replace('jpg','jpeg',strtolower(explode('.',$url)[-1 + sizeof(explode('.',$url))])))[0] . ';base64,' . base64_encode(file_get_contents(explode('#',$url)[0]));
     }
   }
   $shtml.=' src="' . $url . '" ';
   $icnt++;
  }
if (sizeof($ismulti) > 0) {
$ofp = fopen('slideshow.html', 'w'); 
fwrite($ofp, inhouseslideshow($ismulti,$ismultidatauri));
fclose($ofp);
  $extras="&nbsp;<a href=#iag title=AnimatedGIF>Animated GIF</a>&nbsp;<a href=#hvideo title=Video>Video</a>&nbsp;<a href=#idatauri title=DataURI>Data URI version</a>&nbsp;<a href=#preislideshow title=Slideshow>Slideshow versions</a>";
} else {
  $extras="&nbsp;<a href=#iag title=AnimatedGIF>Animated GIF</a>&nbsp;<a href=#idatauri title=DataURI>Data URI version</a>";
}
 } 

 $vaw="300";
 $vah="300";
 
 //file_put_contents("qw.qw", $shtml);   
    
 $photos=explode(' src="', $shtml);
 if (sizeof($photos) > 1) {
   //$vaw=imagesx(explode('"', $photos[1])[0]);
   //$vah=imagesy(explode('"', $photos[1])[0]);
   $aa_to="\" . retemoji('U+' . '";
   $aato="') . \"";
   $atext=str_replace("}",$aato,str_replace("{",$aa_to,$agtext));
   $wasprefix=$prefix;
   $bplus="";
   $yangle=$xangle;
   for ($io=1; $io<sizeof($photos); $io++) {
    if (strpos(explode('"', $photos[$io])[0], "#") !== false) {
      if ($io == 1) {
      if ($atext != "") {  $atext.=" ... ";  }
      $atext.=str_replace("}","') . \"",str_replace("{","\" . retemoji('U+' . '",str_replace("~","\\n",str_replace('"','`',str_replace('_',' ',explode("#", explode('"', str_replace("+"," ",urldecode($photos[$io])) )[0])[1])))));
      
      if ("$xangle" != "0.0" && $xangle >= 0.0 && $xangle <= 1.0) {
       $bplus=", " . round((1.0 - $xangle) * 127.0);
       $eachone=str_replace("imagecolorallocate(", "imagecolorallocatealpha(", $eachone); 
       $eachonestring=str_replace("imagecolorallocate(", "imagecolorallocatealpha(", $eachonestring); 
       $yangle="0.0";
      } else if ("$opac" != "") {
       $bplus=", " . round((1.0 - $opac) * 127.0);
       $eachone=str_replace("imagecolorallocate(", "imagecolorallocatealpha(", $eachone); 
       $eachonestring=str_replace("imagecolorallocate(", "imagecolorallocatealpha(", $eachonestring); 
      }

      $eachone=str_replace(", " . $r200 . ", " . $g200 . ", " . $b200 . ")", ", " . $xred . ", " . $xgreen . ", " . $xblue . $bplus . ")", $eachone); 
      $eachonestring=str_replace(", " . $r200 . ", " . $g200 . ", " . $b200 . ")", ", " . $xred . ", " . $xgreen . ", " . $xblue . $bplus . ")", $eachonestring); 
      
      if ($fontname != '') {
      
       $eachone=str_replace(", 5, 5, 5,", ", " . str_replace("px","",$xsize) . ", " . $yangle . ", " . $xleft . ", " . $xtop . ",", $eachone);
       $eachonestring=str_replace(", 5, 5, 5,", ", " . str_replace("px","",$xsize) . ", " . $yangle . ", " . $xleft . ", " . $xtop . ",", $eachonestring);
       $eachone=str_replace("text_colour","text_color",str_replace("text_color)","text)",str_replace("text, ", "text_colour, '" . $fontname . "',", $eachone)));
       $eachonestring=str_replace("text_colour","text_color",str_replace("text_color)","text)",str_replace("text, ", "text_colour, '" . $fontname . "',", $eachonestring)));
       $eachone=str_replace("imagestring", $xttfprefix . " imagettftext", $eachone);
       $eachonestring=str_replace("imagestring", $xttfprefix . " imagettftext", $eachonestring);
       
       //echo $eachone . "\n\n" . $eachonestring;
       //exit;
      
// imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
// imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
       } else if ($xleft != "5" || $xtop != "5") {
       $eachone=str_replace("imagestring", $xttfprefix . " imagestring", $eachone);
       $eachonestring=str_replace("imagestring", $xttfprefix . " imagestring", $eachonestring);
       $eachone=str_replace(", 5, 5, 5,", ", 5, " . $xleft . ", " . $xtop . ",", $eachone);
       $eachonestring=str_replace(", 5, 5, 5,", ", 5, " . $xleft . ", " . $xtop . ",", $eachonestring);
       //echo $eachone . "\n\n" . $eachonestring;
       //exit;
       }
      
      } else {
      $atext.=str_replace("}","') . \"",str_replace("{","\" . retemoji('U+' . '",str_replace("~","\\n",str_replace('"','`',str_replace('_',' ',explode("#", explode('"',   str_replace("+"," ",urldecode($photos[$io]))  )[0])[1])))));
      }
    if ($zrtot > 1) {
     if ($zris >= sizeof(explode(",", $delay))) {
       $delay.="," . explode(",",$delay)[$zristwo];
       $zristwo++;
       if ($zristwo >= $zrtot) {
         $zristwo=0;
       }
     }
     if ($zris > 0) {
     $eachone=str_replace("[]=" . explode(",",$delay)[-1 + $zris] . ";", "[]=" . explode(",",$delay)[$zris] . ";", $eachone);
     $eachonestring=str_replace("[]=" . explode(",",$delay)[-1 + $zris] . ";", "[]=" . explode(",",$delay)[$zris] . ";", $eachonestring);
     }
     $zris++;
    }
    }
    $aphoto=explode("#", explode('"', $photos[$io])[0]);
    $prefix=analyze($aphoto[0]);
    if (strpos($aphoto[0], "rjmprogramming.com.au/") !== false) {
      $bts=explode("rjmprogramming.com.au/", $aphoto[0]);
      $aphoto[0]=$bts[1];
    //echo "aphoto[0]=" . $aphoto[0] . " and wasprefix=" . $wasprefix . " and prefix=" . $prefix;
    //exit;
      if (strpos($aphoto[0], "/") === false && strpos($aphoto[0], substr("\\",0,1)) === false && str_replace("../","",$prefix) == "" && $wasprefix != "") {
        $prefix.=$wasprefix;
      }
    } else if (strpos($aphoto[0], "rjmprogramming.com.au:80/") !== false) {
      $bts=explode("rjmprogramming.com.au:80/", $aphoto[0]);
      $aphoto[0]=$bts[1];
    //echo "aphoto[0]=" . $aphoto[0] . " and wasprefix=" . $wasprefix . " and prefix=" . $prefix;
    //exit;
      if (strpos($aphoto[0], "/") === false && strpos($aphoto[0], substr("\\",0,1)) === false && str_replace("../","",$prefix) == "" && $wasprefix != "") {
        $huhp=$prefix;
        $prefix.=$wasprefix;
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      } else if (!file_exists($prefix . $aphoto[0])) {
        $prefix=$huhp;
      }
      }
    } else if (strpos($aphoto[0], "/") === false && strpos($aphoto[0], substr("\\",0,1)) === false && strpos($url, "rjmprogramming.com.au") !== false) {
      if (strpos($aphoto[0], "/") === false && strpos($aphoto[0], substr("\\",0,1)) === false && str_replace("../","",$prefix) == "" && $wasprefix != "") {
        $huhp=$prefix;
        $prefix.=$wasprefix;
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      } else if (!file_exists($prefix . $aphoto[0])) {
        $prefix=$huhp;
      }
      }
    //echo "Aphoto[0]=" . $aphoto[0] . " and wasprefix=" . $wasprefix . " and prefix=" . $prefix;
    //exit;
    }
    $dbits=explode("/", $aphoto[0]);    
    
    
    
    for ($itr=0; $itr<(sizeof($dbits) - 1); $itr++) {
      $dtib=$dbits[$itr] . "/";
      $oy=1;
      if (strpos($prefix, $dtib) !== false) $prefix=str_replace($dtib, "", $prefix, $oy);
    }
    if (strpos(strtolower($aphoto[0]), "//") !== false) $prefix="";
    if (strpos($aphoto[0], ";base64,") !== false) {
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefromstring(base64_decode('" . explode(";base64,",$aphoto[0])[1] . "'));", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachonestring));
    } else if (strpos(strtolower($aphoto[0]), "//") !== false) {
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefromstring(@file_get_contents('" . $prefix . $aphoto[0] . "'));", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
    } else if (strpos(strtolower($aphoto[0]), ".jp") !== false) {
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      }
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefromjpeg('" . $prefix . $aphoto[0] . "');", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
    } else if (strpos(strtolower($aphoto[0]), ".png") !== false) {
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      }
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefrompng('" . $prefix . $aphoto[0] . "');", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
    } else if (strpos(strtolower($aphoto[0]), ".gif") !== false) {
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      }
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefromgif('" . $prefix . $aphoto[0] . "');", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
    } else if (strpos(strtolower($aphoto[0]), ".bmp") !== false) {
      if (strpos($prefix, "../../") !== false && !file_exists($prefix . $aphoto[0]) && file_exists(str_replace("../../","../",$prefix) . $aphoto[0])) {
        $prefix=str_replace("../../","../",$prefix);
      }
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", "ourimagecreatefrombmp('" . $prefix . $aphoto[0] . "');", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
    } 
    $atext="";
   }
   if ($agtext == "") $agtext="slideshow";
   $lastbit=str_replace("framed,0,2" . $zzz, "framed,0," . (sizeof($photos) - 1) . $zzz, $lastbit);
   //file_put_contents(str_replace(" ", "_", $agtext) . "_preview.php", $gifphp . $lastbit);
   //file_put_contents(str_replace(" ", "_", $agtext) . ".php", $gifphp . str_replace($lastbitfrom, str_replace("'animegif.gif'", "'" . server_remote_addr() . ".gif" . "'", $lastbitto), $lastbit));
   //@file_get_contents(str_replace(" ", "_", $agtext) . ".php");
   $ig=0;
   while (strpos($gifphp, ' == "$randomizeloopcnt"') !== false) {
     $gifphp=str_replace_first(' == "$randomizeloopcnt"', ' == "' . $ig . '"', $gifphp, 1);
     $ig++;
   }
   file_put_contents(server_remote_addr() . "_preview.php", ingif($gifphp) . $rltsuffix . $lastbit);
   file_put_contents(server_remote_addr() . ".php", ingif($gifphp) . str_replace($lastbitfrom, str_replace("'animegif.gif'", "'" . server_remote_addr() . ".gif" . "'", $lastbitto), ($rltsuffix . $lastbit)));
   //@file_get_contents(server_remote_addr() . ".php?x=" . rand (2,450456));
   //header("Location: " . str_replace(" ", "_", $agtext) . "_preview.php");


//$prefixretp="<img src='";
//$suffixretp="'></img>";
  
   $ourmime="";
   $xxx="x";
   $agifx="?randomize=" . rand(0, 1987654);

  if (isset($_GET['fvideo'])) {
    if (strlen(trim($_GET['fvideo'])) > 0) {
      if (strpos(urldecode($_GET['fvideo']), "data:") !== false) {
      $ourmime=explode(";", explode("ata:", urldecode($_GET['fvideo']))[1])[0]; 
      } else {
      $ourext=explode(".",urldecode($_GET['fvideo']))[-1 + sizeof(explode(".",urldecode($_GET['fvideo'])))];
      for ($ib=0; $ib<sizeof($exts); $ib++) {
       if (strtolower("." . $ourext) == strtolower($exts[$ib])) $ourmime=$types[$ib];
      }
      }
      $imgis=imagecreatefromgif(server_remote_addr() . ".gif");
      $vaw=imagesx($imgis);
      $vah=imagesy($imgis);
      $prefixretp="<style> video { width:" . $vaw . "px; height:" . $vah . "px; background:transparent url(";
      $prefixretp="<style> video { width:" . $vaw . "px; height:" . (55 + $vah) . "px; background:transparent url(";
      $suffixretp=$agifx . ") no-repeat 0 0; -webkit-background-size:contain; -moz-background-size:contain; -o-background-size:contain; background-size:contain; } </style><video id=myvideo controls poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_GET['fvideo'])) . " type=" . $ourmime . "></source></video>";
      $suffixretp=$agifx . ") no-repeat 0 0;  } </style><video id=myvideo controls loop poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_GET['fvideo'])) . " type=" . $ourmime . "></source></video>";
    }
  } else if (isset($_POST['fvideo'])) {
    if (strlen(trim($_POST['fvideo'])) > 0) {
      if (strpos(urldecode($_POST['fvideo']), "data:") !== false) {
      $ourmime=explode(";", explode("ata:", urldecode($_POST['fvideo']))[1])[0]; 
      } else {
      $ourext=explode(".",urldecode($_POST['fvideo']))[-1 + sizeof(explode(".",urldecode($_POST['fvideo'])))];
      for ($ib=0; $ib<sizeof($exts); $ib++) {
       if (strtolower("." . $ourext) == strtolower($exts[$ib])) $ourmime=$types[$ib];
      }
      }
      $imgis=imagecreatefromgif(server_remote_addr() . ".gif");
      $vaw=imagesx($imgis);
      $vah=imagesy($imgis);
      $prefixretp="<style> video { width:" . $vaw . "px; height:" . $vah . "px; background:transparent url(";
      $prefixretp="<style> video { width:" . $vaw . "px; height:" . (55 + $vah) . "px; background:transparent url(";
      $suffixretp=$agifx . ") no-repeat 0 0; -webkit-background-size:contain; -moz-background-size:contain; -o-background-size:contain; background-size:contain; } </style><video id=myvideo controls poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_POST['fvideo'])) . " type=" . $ourmime . "></source></video>";
      $suffixretp=$agifx . ") no-repeat 0 0;  } </style><video id=myvideo controls loop poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_POST['fvideo'])) . " type=" . $ourmime . "></source></video>";
    }
  } 
  if ($prefixretp == "<img src='") {
  if (isset($_GET['faudio'])) {
    if (strlen(trim($_GET['faudio'])) > 0) {
      if (strpos(urldecode($_GET['faudio']), "data:") !== false) {
      $ourmime=explode(";", explode("ata:", urldecode($_GET['faudio']))[1])[0]; 
      } else {
      $ourext=explode(".",urldecode($_GET['faudio']))[-1 + sizeof(explode(".",urldecode($_GET['faudio'])))];
      for ($ib=0; $ib<sizeof($exts); $ib++) {
       if (strtolower("." . $ourext) == strtolower($exts[$ib])) $ourmime=$types[$ib];
      }
      }
      $imgis=imagecreatefromgif(server_remote_addr() . ".gif");
      $vaw=imagesx($imgis);
      $vah=imagesy($imgis);
      $prefixretp="<style> audio {  width:" . $vaw . "px; height:" . $vah . "px; background:transparent url(";
      $prefixretp="<style> audio {  width:" . $vaw . "px; height:" . (55  + $vah) . "px; background:transparent url(";
      $suffixretp=$agifx . ") no-repeat 0 0; -webkit-background-size:contain; -moz-background-size:contain; -o-background-size:contain; background-size:contain; } </style><audio id=myaudio controls loop autoplay poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_GET['faudio'])) . " type=" . $ourmime . "></source></audio>";
      $suffixretp=$agifx . ") no-repeat 0 0;  } </style><audio id=myaudio controls loop autoplay poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_GET['faudio'])) . " type=" . $ourmime . "></source></audio>";
    }
  } else if (isset($_POST['faudio'])) {
    if (strlen(trim($_POST['faudio'])) > 0) {
      if (strpos(urldecode($_POST['faudio']), "data:") !== false) {
      $ourmime=explode(";", explode("ata:", urldecode($_POST['faudio']))[1])[0]; 
      } else {
      $ourext=explode(".",urldecode($_POST['faudio']))[-1 + sizeof(explode(".",urldecode($_POST['faudio'])))];
      for ($ib=0; $ib<sizeof($exts); $ib++) {
       if (strtolower("." . $ourext) == strtolower($exts[$ib])) $ourmime=$types[$ib];
      }
      }
      $imgis=imagecreatefromgif(server_remote_addr() . ".gif");
      $vaw=imagesx($imgis);
      $vah=imagesy($imgis);
      $prefixretp="<style> audio {  width:" . $vaw . "px; height:" . $vah . "px; background:transparent url(";
      $prefixretp="<style> audio {  width:" . $vaw . "px; height:" . (55  + $vah) . "px; background:transparent url(";
      $suffixretp=$agifx . ") no-repeat 0 0; -webkit-background-size:contain; -moz-background-size:contain; -o-background-size:contain; background-size:contain; } </style><audio id=myaudio controls loop autoplay poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_POST['faudio'])) . " type=" . $ourmime . "></source></audio>";
      $suffixretp=$agifx . ") no-repeat 0 0;  } </style><audio id=myaudio controls loop autoplay poster=transparent.png><source src=" . str_replace(" ","+",urldecode($_POST['faudio'])) . " type=" . $ourmime . "></source></audio>";
    }
  } 
  }
  
   if ($prefixretp == "<img src='") {
    $suffixretp=$agifx . "' title='" . $agtext . "'></img>"; 
   } //else {
   // echo str_replace('<','&lt;',str_replace('>','&gt;',$prefixretp . server_remote_addr() . ".gif" . $suffixretp));
   // exit;
   //}

   if (isset($_POST['randomize']) || isset($_GET['randomize'])) {  $xxx="randomize";  $agifx="?randomize=" . rand(0, 1987654); } 
   $imagegif="<br><h1 align='center'>Preview Below ... Animated GIF (Later) (Way) Below</h1><br><iframe id=iag frameborder=0 style='width:100%;height:100%;' src='" . server_remote_addr() . "_preview.php?" . $xxx . "=" . rand(2,450456) . $grltsuffix . "' title='" . $agtext . "'></iframe>";
   $imagegif.="<br><br><iframe frameborder=0 style='display:none;' src='" . server_remote_addr() . ".php?" . $xxx . "=" . rand(2,450456) . $grltsuffix . "' title='" . $agtext . "'></iframe>";
   $qwp="";
   $qws="";
   if (sizeof($ismulti) > 0) {
   if ($prefixretp == "<img src='") {
    $qwp="<a title='Download via click' download='my_rjm_gif.gif' href='" . server_remote_addr() . ".gif" . "'>";
    $qws="</a>";
   }
   $imagegifandthen.="document.getElementById('idiv').innerHTML+=\"<br><h1 id=midway align='center'>Preview Above ... Animated GIF then Video" . $videosuffix . " Below</h1><br>" . $qwp . $prefixretp . server_remote_addr() . ".gif" . $suffixretp . $qws . "<br><h1 id=hvideo>Video" . $videosuffix . " below ...</h1><br>" . $videohtml . "<br><iframe id=idatauri src='animegif.html?x=" . rand (2,450456) . "' title=DataURI style=width:100%;height:800px;background-color:lightblue;></iframe><br>&nbsp;<a id=preislideshow href=#idatauri title=DataURI>Data URI version</a>&nbsp;<a href=#myh1 title=Top>Top</a>&nbsp;<a href=#iag title=AnimatedGIF>Animated GIF</a>&nbsp;<a href=#prejslideshow title=SlideshowDataURI>Slideshow Data URI</a><br><iframe id=islideshow src='slideshow.html?x=" . rand (2,450456) . "' title=SlideShow style=width:100%;height:800px;;background-color:lightgreen;></iframe><br><a id=prejslideshow href=#preislideshow title=Slideshow>Slideshow</a><br><iframe id=jslideshow src='slideshow.html?smode=0&x=" . rand (2,450456) . "' title=SlideShowDataURI style=width:100%;height:800px;;background-color:lightgreen;></iframe>" . "\";";
   } else {
   if ($prefixretp == "<img src='") {
    $qwp="<a title='Download via click' download='my_rjm_gif.gif' href='" . server_remote_addr() . ".gif" . "'>";
    $qws="</a>";
   }
   $imagegifandthen.="document.getElementById('idiv').innerHTML+=\"<br><h1 id=midway align='center'>Preview Above ... Animated GIF Below</h1><br>" . $qwp . $prefixretp . server_remote_addr() . ".gif" . $suffixretp . $qws . "<br>&nbsp;<a href=#myh1 title=Top>Top</a>&nbsp;<a href=#iag title=AnimatedGIF>Animated GIF</a><br><iframe id=idatauri src='animegif.html?x=" . rand (2,450456) . "' title=DataURI style=width:100%;height:800px;;background-color:lightblue;></iframe>" . "\";";
   }
   if (isset($_GET['iurl']) || isset($_POST['iurl'])) {
   $imagegifandthen.=" \n parent.document.getElementById('iurl').value='data:image/gif;base64," . base64_encode(file_get_contents(server_remote_addr() . ".gif")) . "'; ";
   }
   //if (isset($_GET['tiurl']) || isset($_POST['tiurl'])) {
   //$imagegifandthen.=" \n top.document.getElementById('result').innerHTML='data:image/gif;base64," . base64_encode(file_get_contents(server_remote_addr() . ".gif")) . "'; ";
   //}
   if (isset($_GET['gfn']) || isset($_POST['gfn']) || isset($_GET['tiurl']) || isset($_POST['tiurl'])) {
   sleep(20);
   //file_put_contents("z6.z6"," \n top.document.getElementById('result').innerHTML='data:image/gif;base64," . base64_encode(file_get_contents("http://" . $_SERVER['SERVER_NAME'] . str_replace("~","",str_replace(":443~","",str_replace(":80~","",(":" . $_SERVER['SERVER_PORT'] . "~")))) . str_replace("//","/",("/" . $_SERVER['REQUEST_URI'] . "/")) . server_remote_addr() . ".gif?rand=" . rand(0,1987654))) . "'; ");
   //$imagegifandthen.=" \n top.document.getElementById('result').innerHTML='data:image/gif;base64," . base64_encode(file_get_contents(server_remote_addr() . ".gif?rand=" . rand(0,1987654) . ")) . "'; ";
   $imagegifandthen.=" \n top.document.getElementById('iturl').innerHTML=('http://" . $_SERVER['SERVER_NAME'] . str_replace("~","",str_replace(":443~","",str_replace(":80~","",(":" . $_SERVER['SERVER_PORT'] . "~")))) . str_replace("//","/",("/" . $_SERVER['REQUEST_URI'] . "/")) . server_remote_addr() . ".gif?rand=" . rand(0,1987654) . "').replace('/tutorial_to_animated_gif.php/','/'); \n";
   $imagegifandthen.=" \n top.document.getElementById('result').innerHTML='data:image/gif;base64," . base64_encode(file_get_contents(    str_replace("/tutorial_to_animated_gif.php/","/","http://" . $_SERVER['SERVER_NAME'] . str_replace("~","",str_replace(":443~","",str_replace(":80~","",(":" . $_SERVER['SERVER_PORT'] . "~")))) . str_replace("//","/",("/" . $_SERVER['REQUEST_URI'] . "/")) . server_remote_addr() . "_preview.gif?rand=" . rand(0,1987654))   )) . "'; ";
   }
 }
} //else {
   //if (isset($_GET['gfn']) || isset($_POST['gfn'])) {
   //file_put_contents("zz6.zz6","");
   //$imagegifandthen.=" \n top.document.getElementById('result').innerHTML='data:image/gif;base64," . base64_encode(file_get_contents(server_remote_addr() . ".gif")) . "'; ";
   //}
   $preextras="";
   $ala="false";
   $alv="false";
if (isset($_GET['allowaudio'])) {
 if (strpos($newrbut, "mysa") === false) { $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowaudio id=\"mysa\" type=\"submit\" title='Tutorial Slideshow to Audio' value='Tutorial Slideshow to Audio'></input><div id=resultav style=display:none;></div>"; }
 $ala="true";
 $seventypc="60%";
 $justfa=str_replace(" na" . (isset($_GET['allowvideo']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfa));
}
if (isset($_GET['allowvideo'])) {
 if (strpos($newrbut, "mysv") === false) { $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowvideo id=\"mysv\" type=\"submit\" title='Tutorial Slideshow to Video' value='Tutorial Slideshow to Video'></input><div id=resultav style=display:none;></div>"; }
 $alv="true";
 $seventypc="60%";
 $justfv=str_replace(" na" . (isset($_GET['allowaudio']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfv));
}
if (isset($_POST['allowaudio'])) {
 if (strpos($newrbut, "mysa") === false) { $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowaudio id=\"mysa\" type=\"submit\" title='Tutorial Slideshow to Audio' value='Tutorial Slideshow to Audio'></input><div id=resultav style=display:none;></div>"; }
 $ala="true";
 $seventypc="60%";
 $justfa=str_replace(" na" . (isset($_POST['allowvideo']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfa));
}
if (isset($_POST['allowvideo'])) {
 if (strpos($newrbut, "mysv") === false) { $preextras.="<input onclick=\"usualclick=1;\" style=\"display:none;\" name=allowvideo id=\"mysv\" type=\"submit\" title='Tutorial Slideshow to Video' value='Tutorial Slideshow to Video'></input><div id=resultav style=display:none;></div>"; }
 $alv="true";
 $seventypc="60%";
 $justfv=str_replace(" na" . (isset($_POST['allowaudio']) ? "OOPS" : "") . "me="," data-name=",str_replace("submit","SUBMIT style='border:1px solid yellow;' ",$justfv));
}
if ((isset($_POST['allowaudio']) && isset($_POST['allowvideo'])) || (isset($_GET['allowaudio']) && isset($_GET['allowvideo']))) {
$justfav="<form method=GET action=./tutorial_to_animated_gif.php style=display:inline-block;><input title='Neither, but Images, always' type=submit value='-'></input></form>";
}
$varmodes="&nbsp;<table style=display:inline-block;><tr><td>" . $justfa . "</td><td>" . $justfav . "</td><td>" . $justfv . "</td></tr></table>";

  echo "<!doctype html>
<html>
<head><meta charset='utf-8'/>
<link href='//www.rjmprogramming.com.au/PHP/emboss_h1.css' rel='stylesheet' type='text/css'>
<title>Tutorial Slideshow to Animated GIF</title>
<script type='text/javascript'>
var icnt=1, upforgrabs=false, upfor='', origupfor='', upto='', upprefix='', upsuffix='', incis=0, thisto='', lastioid='';
var usualclick=-1;
var droot='" . $_SERVER['DOCUMENT_ROOT'] . "'; 

var viams=[];
var viamsd=[];
var vst=0, vsti=0, vsta=0, vstv=0, vcur=0;

var def_ext='';

var allowaudio=" . $ala . ";
var allowvideo=" . $alv . ";
var lastnav='';
var tusl='Tutorial Slideshow';

var bcols=['red','#ff0000',
'black','#000000',
'white','#ffffff',
'yellow','#ffff00',
'green','#00ff00',
'blue','#0000ff',
'cyan','#00ffff',
'magenta','#ff00ff',
'pink','#ffc0cb',
'lightblue','#add8e6',
'lightgreen','#90ee90',
'pink','#ffc0cb',
'lightpink','#ffb6c1'
,'hotpink','#ff69b4'
,'deeppink','#ff1493'
,'palevioletred','#db7093'
,'mediumvioletred','#c71585'
,'lightsalmon','#ffa07a'
,'salmon','#fa8072'
,'darksalmon','#e9967a'
,'lightcoral','#f08080'
,'indianred','#cd5c5c'
,'crimson','#dc143c'
,'firebrick','#b22222'
,'darkred','#8b0000'
,'red','#ff0000'
,'orangered','#ff4500'
,'tomato','#ff6347'
,'coral','#ff7f50'
,'darkorange','#ff8c00'
,'orange','#ffa500'
,'yellow','#ffff00'
,'lightyellow','#ffffe0'
,'lemonchiffon','#fffacd'
,'lightgoldenrodyellow','#fafad2'
,'papayawhip','#ffefd5'
,'moccasin','#ffe4b5'
,'peachpuff','#ffdab9'
,'palegoldenrod','#eee8aa'
,'khaki','#f0e68c'
,'darkkhaki','#bdb76b'
,'gold','#ffd700'
,'cornsilk','#fff8dc'
,'blanchedalmond','#ffebcd'
,'bisque','#ffe4c4'
,'navajowhite','#ffdead'
,'wheat','#f5deb3'
,'burlywood','#deb887'
,'tan','#d2b48c'
,'rosybrown','#bc8f8f'
,'sandybrown','#f4a460'
,'goldenrod','#daa520'
,'darkgoldenrod','#b8860b'
,'peru','#cd853f'
,'chocolate','#d2691e'
,'saddlebrown','#8b4513'
,'sienna','#a0522d'
,'brown','#a52a2a'
,'maroon','#800000'
,'olive','#808000'
,'olivedrab','#6b8e23'
,'yellowgreen','#9acd32'
,'limegreen','#32cd32'
,'lime','#00ff00'
,'lawngreen','#7cfc00'
,'chartreuse','#7fff00'
,'greenyellow','#adff2f'
,'springgreen','#00ff7f'
,'mediumspringgreen','#00fa9a'
,'lightgreen','#90ee90'
,'palegreen','#98fb98'
,'darkseagreen','#8fbc8f'
,'mediumseagreen','#3cb371'
,'seagreen','#2e8b57'
,'forestgreen','#228b22'
,'green','#008000'
,'darkgreen','#006400'
,'mediumaquamarine','#66cdaa'
,'aqua','#00ffff'
,'cyan','#00ffff'
,'lightcyan','#e0ffff'
,'paleturquoise','#afeeee'
,'aquamarine','#7fffd4'
,'turquoise','#40e0d0'
,'mediumturquoise','#48d1cc'
,'darkturquoise','#00ced1'
,'lightseagreen','#20b2aa'
,'cadetblue','#5f9ea0'
,'darkcyan','#008b8b'
,'teal','#008080'
,'lightsteelblue','#b0c4de'
,'powderblue','#b0e0e6'
,'lightblue','#add8e6'
,'skyblue','#87ceeb'
,'lightskyblue','#87cefa'
,'deepskyblue','#00bfff'
,'dodgerblue','#1e90ff'
,'cornflowerblue','#6495ed'
,'steelblue','#4682b4'
,'royalblue','#4169e1'
,'blue','#0000ff'
,'mediumblue','#0000cd'
,'darkblue','#00008b'
,'navy','#000080'
,'midnightblue','#191970'
,'thistle','#d8bfd8'
,'plum','#dda0dd'
,'violet','#ee82ee'
,'orchid','#da70d6'
,'fuchsia','#ff00ff'
,'magenta','#ff00ff'
,'mediumorchid','#ba55d3'
,'mediumpurple','#9370db'
,'blueviolet','#8a2be2'
,'darkviolet','#9400d3'
,'darkorchid','#9932cc'
,'darkmagenta','#8b008b'
,'purple','#800080'
,'indigo','#4b0082'
,'darkslateblue','#483d8b'
,'rebeccapurple','#663399'
,'slateblue','#6a5acd'
,'mediumslateblue','#7b68ee'
,'snow','#fffafa'
,'honeydew','#f0fff0'
,'mintcream','#f5fffa'
,'azure','#f0ffff'
,'aliceblue','#f0f8ff'
,'ghostwhite','#f8f8ff'
,'whitesmoke','#f5f5f5'
,'seashell','#fff5ee'
,'beige','#f5f5dc'
,'oldlace','#fdf5e6'
,'floralwhite','#fffaf0'
,'ivory','#fffff0'
,'antiquewhite','#faebd7'
,'linen','#faf0e6'
,'lavenderblush','#fff0f5'
,'mistyrose','#ffe4e1'
,'gainsboro','#dcdcdc'
,'lightgrey','#d3d3d3'
,'silver','#c0c0c0'
,'darkgray','#a9a9a9'
,'gray','#808080'
,'dimgray','#696969'
,'lightslategray','#778899'
,'slategray','#708090'
,'darkslategray','#2f4f4f'];

 var iwidths=[], iheights=[];
 var iready=true;

 var ifsa=[], ifsi=[];
 var types = ['audio/x-m4r','audio/wav','audio/x-wav','audio/x-pn-realaudio','audio/x-mpegurl','audio/x-aiff','audio/mpeg','audio/mid',
      'audio/basic','audio/ogg','video/x-sgi-movie','video/x-msvideo','video/quicktime','audio/mp3','video/mp4','video/mpeg',
      'video/x-la-asf','video/ogg','video/webm','audio/mp4', 'image/jpeg', 'image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/tif'];
 var exts = ['.m4r','.wav','.wav','.ram','.m3u','.aiff','.mp3','.rmi',
      '.snd','.ogg','.movie','.avi','.mov','.mp3','.m4v','.mpeg',
      '.lsx','.ogv','.webm','.m4a', '.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tif'];
 var ourmime='';
 

function hexdec (hexString) {  // thanks to https://locutus.io/php/math/hexdec/
  //  discuss at: https://locutus.io/php/hexdec/
  // original by: Philippe Baumann
  //   example 1: hexdec('that')
  //   returns 1: 10
  //   example 2: hexdec('a0')
  //   returns 2: 160

  hexString = (hexString + '').replace(/[^a-f0-9]/gi, '');
  return parseInt(hexString, 16);
}

function hex2dec(couleur, inopac) {  // thanks to http://wikkawiki.org/FpdfIntegration/raw
    var dolR = couleur.toLowerCase().replace('#','').substring(0,2);
    var dolrouge = hexdec(dolR);
    var dolV = couleur.toLowerCase().replace('#','').replace(dolR,'').substring(0,2);
    var dolvert = hexdec(dolV);
    var dolB = couleur.toLowerCase().replace('#','').replace(dolR,'').replace(dolV,'').substring(0,2);
    var dolbleu = hexdec(dolB);
    document.getElementById('fred').value='' + dolrouge;
    document.getElementById('fgreen').value='' + dolvert;
    document.getElementById('fblue').value='' + dolbleu;
    if (inopac != '') {
      return 'rgba(' + dolrouge + ',' + dolvert + ',' + dolbleu + ',' + inopac + ')';
    } else {
      return couleur.toLowerCase();
    }
}

function opacitymaybe(incvalo) {
  var incval=incvalo.value;
  var ttfstuff=incval.split('#');
  if (ttfstuff.length == 1) { return incval; }
  incval=incval.replace(ttfstuff[0] + '#', '');
  var origincval=incval.toLowerCase();
  var opac='';
  var colwords=incval.split(' ');
  if (colwords.length >= 1) {
  for (var idf=0; idf<colwords.length; idf++) {
    if ((colwords[idf] + ' ').toLowerCase().indexOf('px') == -1 && ((colwords[idf] + ' ').substring(0,1) == '.' || ((colwords[idf] + ' ').substring(0,1) >= '0' && (colwords[idf] + ' ').substring(0,1) <= '9'))) {
     document.getElementById('fangle').value=colwords[idf];
    } else if ((colwords[idf] + ' ').substring(0,1) == '#') {
     hex2dec(colwords[idf], '');
    } else if ((colwords[idf] + ' ').substring(0,1) == '(') {
     document.getElementById('fleft').value=colwords[idf].substring(1).split(',')[0].split(')')[0];
     document.getElementById('ftop').value=colwords[idf].substring(1).split(',')[1].split(',')[0].split(')')[0];
     //alert(document.getElementById('fleft').value + ',' + document.getElementById('ftop').value);
    } else if (bcols.indexOf((colwords[idf] + ' ').toLowerCase().replace(/\ /g,'')) != -1) {
     hex2dec(bcols[eval(1 + bcols.indexOf((colwords[idf] + ' ').toLowerCase().replace(/\ /g,'')))], '');
    } else if ((colwords[idf] + ' ').indexOf('_') != -1) {
     document.getElementById('fontname').value=colwords[idf].replace(/\_/g,' ');
    } else if ((colwords[idf] + ' ').toLowerCase().indexOf('px') != -1) {
     document.getElementById('fsize').value=colwords[idf];
    } else {
     document.getElementById('fontname').value=colwords[idf].replace(/\_/g,' ');
    }
  }
  }
  incvalo.value=ttfstuff[0];
  totalit();
  return ttfstuff[0];
}

function postreorderifs() {
  var jk=0;
  var oifs=document.getElementsByTagName('iframe');
  for (var jifso=0; jifso<ifsi.length; jifso++) {
        oifs[ifsi[jifso]].src=ifsa[jk];
        jk++;
  }
  ifsi=[];
  ifsa=[];
}

function gdadd(oselo) {
 var pari=1, thispari='0';
 if (oselo.value != '') {
  //alert(oselo.value);
  var oselovalue=oselo.value.replace(',' + '$' + 'oimo','~' + '$' + 'oimo').split(',')[0];
  //alert(oselovalue);
  var oseloval=oselo.value;
  if (document.getElementById('imgds')) { if (document.getElementById('imgds').value == '') { document.getElementById('imgds').value='|';  } else { document.getElementById('imgds').value+=';'; } }  
  oseloval=oseloval.replace(',' + '$' + 'oimo','~' + '$' + 'oimo');
  oseloval=oseloval.replace(oseloval.split(',')[0], '');
  while (oseloval.indexOf(',') != -1) { 
  //alert(oseloval);
      if ((oseloval + ' ').substring(1).split(',')[0].trim() != '') {
      if ((' ' + (oseloval + ' ').substring(1).split(',')[0].trim() + ' ').toLowerCase().indexOf(' colour ') != -1) {
      thispari=prompt('Enter' + (' ' + (oseloval + ' ').substring(1).split(',')[0].trim() + ' ').toLowerCase().replace(' colour ', ' red,green,blue colour ') + 'parameter for GD ' + oselo.value.split(',')[0] + ' ' + pari + ' of ' + eval(-1 + oselo.value.replace(',' + '$' + 'oimo','').split(',').length)  + '?', '0');
      if (thispari == null) { 
        thispari='0';   
      } else if (thispari.trim() == '') {
        thispari='0';   
      } else if (thispari.indexOf(',') == -1) {
        oselovalue+=',' + thispari + '';
      } else {
        oselovalue+=',imagecolorallocate(' + '$' + 'oimo,' + thispari + ')';
      }
      } else {
      thispari=prompt('Enter ' + (oseloval + ' ').substring(1).split(',')[0].trim() + ' parameter for GD ' + oselo.value.split(',')[0] + ' ' + pari + ' of ' + eval(-1 + oselo.value.replace(',' + '$' + 'oimo','').split(',').length)  + '?', '0');
      if (thispari == null) { 
        thispari='0';   
      } else {
        oselovalue+=',' + thispari;
      }
      }
      oseloval=oseloval.replace(',' + (oseloval + ' ').substring(1).split(',')[0].trim(),'').trim();
      } else {     
      thispari=prompt('Enter numerical parameter for GD ' + oselo.value.split(',')[0] + ' ' + pari + ' of ' + eval(-1 + oselo.value.replace(',' + '$' + 'oimo','').split(',').length)  + '?', '0');
      oseloval=oseloval.replace(',','');
      if (thispari == null) { 
        thispari='0';   
      } else {
        oselovalue+=',' + thispari;
      }
      }
      //oseloval=oseloval.replace(oseloval.split(',')[0] + ',', '');
      //oseloval=oseloval.replace(',','');
      pari++;
  }
  if (document.getElementById('gdopt')) {
    document.getElementById('gdopt').innerHTML+='&nbsp;&nbsp;' + oselovalue.replace('~',',');
  }
  if (document.getElementById('imgds')) {
    document.getElementById('imgds').value+=oselovalue.replace('~',','); 
    //document.getElementById('imgds').style.display='inline-block';
    //document.getElementById('imgds').style.width='300px';
    if (document.getElementById('smyim').innerHTML == '') {  document.getElementById('smyim').innerHTML='ImageMagick switches: '; }
  } else if (document.getElementById('myim')) {
    document.getElementById('myim').innerHTML='<span is=smyim>ImageMagick switches: </span><input id=imqty name=imqty type=text style=display:inline-block; value=\"\"></input><input id=imgds name=imgds type=hidden style=display:inline-block; value=\"|' + oselovalue.replace('~',',') + '\"></input>';
    document.getElementById('imqty').style.width='300px';
  }
  oselo.value='';
 }
}

function imadd(oselo) {
 if (oselo.value != '') {
  if (document.getElementById('inextis')) {  
    document.getElementById('inextis').value+=oselo.value; 
    document.getElementById('inextis').style.display='inline-block';
    document.getElementById('inextis').style.width='300px';
    if (document.getElementById('smyim').innerHTML == '') {  document.getElementById('smyim').innerHTML='ImageMagick switches: '; }
  } else if (document.getElementById('imqty')) { 
    document.getElementById('imqty').value+=oselo.value; 
    document.getElementById('imqty').style.display='inline-block';
    document.getElementById('imqty').style.width='300px';
    if (document.getElementById('smyim').innerHTML == '') {  document.getElementById('smyim').innerHTML='ImageMagick switches: '; }
  } else if (document.getElementById('myim')) {
    document.getElementById('myim').innerHTML='<span is=smyim>ImageMagick switches: </span><input id=imqty name=imqty type=text style=display:inline-block; value=\"' + oselo.value + '\"></input>';
    document.getElementById('imqty').style.width='300px';
  }
  oselo.value='';
 }
}

function reorderifs() {
  var doloateri=false;
  var oifs=document.getElementsByTagName('iframe');
  for (var jifso=0; jifso<oifs.length; jifso++) {
    if (('' + oifs[jifso].src).indexOf('?') != -1) {
    if (('' + oifs[jifso].src).indexOf('.php') != -1) {
      if (('' + oifs[jifso].src).indexOf('&ran=') != -1) {
        if (1 == 2) {
        doloateri=true;
        ifsi.push(jifso);
        ifsa.push(oifs[jifso].src.split('&ran=')[0] + '&ran=' + Math.floor(Math.random() * 1986754));
        oifs[jifso].src='//www.rjmprogramming.com.au/About_Us.html'; //oifs[jifso].src.split('&ran=')[0] + '&ran=' + Math.floor(Math.random() * 1986754);
        } else {
        oifs[jifso].src=oifs[jifso].src.split('&ran=')[0] + '&ran=' + Math.floor(Math.random() * 1986754);
        }
     } else {
        if (1 == 2) {
        doloateri=true;
        ifsi.push(jifso);
        ifsa.push(oifs[jifso].src+'&ran=' + Math.floor(Math.random() * 1986754));
        oifs[jifso].src='//www.rjmprogramming.com.au/About_Us.html'; //'&ran=' + Math.floor(Math.random() * 1986754);
        } else {
        oifs[jifso].src+='&ran=' + Math.floor(Math.random() * 1986754);
        }
      }
    }
    }
  }
  if (doloateri) {
    setTimeout(postreorderifs, 2000);
  }
}

function isimage(tvl) {
  var retval=false, look=true, alin=0, cae='', parts=[], it=0;
  ourmime=''; 
  if (tvl != tvl.trim() && tvl.trim().length < 20 && tvl.trim() != '' && (tvl + ' ').substring(0,1) >= '0' && (tvl + ' ').substring(0,1) <= '9' && ('x' + tvl).trim().slice(-1) >= '0' && ('x' + tvl).trim().slice(-1) <= '9') {
  tvl=tvl;
  } else {
  if (tvl.indexOf('data:') == 0) {
     ourmime=tvl.split('ata:')[1].split(String.fromCharCode(34))[0];
     //alert(ourmime);
  } else {   
     parts=tvl.split('#')[0].split('.');
     for (it=0; it<exts.length; it++) {
             if ('.' + parts[eval(-1 + parts.length)].toLowerCase() == exts[it].toLowerCase()) { ourmime=types[it]; if (def_ext == '') { def_ext=exts[it].toLowerCase().substring(1); if (document.getElementById('inextis')) { document.getElementById('inextis').value=def_ext; } else if (document.getElementById('myim')) { document.getElementById('myim').innerHTML+='<input type=hidden name=inextis id=inextis value=' + def_ext + '></input>';  }   } }
     }
  }
  if (ourmime.indexOf('audio/') == 0) {
       document.getElementById('faudio').value=tvl;
       if (document.getElementById('mysubmit').value.indexOf('background to') == -1) {
       document.getElementById('mysubmit').value+=' (background to Audio)';
       if (document.getElementById('rcmysubmit')) {
       document.getElementById('rcmysubmit').value+=' (background to Audio)';
       }
       }
       if (!allowaudio) { return false; } else { retval=true; }
  } else if (ourmime.indexOf('video/') == 0) {
       document.getElementById('fvideo').value=tvl;
       if (document.getElementById('mysubmit').value.indexOf('background to Audio') != -1) {
       document.getElementById('mysubmit').value=document.getElementById('mysubmit').value.replace(' (background to Audio)',' (background to Video)');
       if (document.getElementById('rcmysubmit')) {
       document.getElementById('rcmysubmit').value=document.getElementById('rcmysubmit').value.split(' (')[0] + ' (background to Video)';
       }
       } else if (document.getElementById('mysubmit').value.indexOf('background to') == -1) {
       document.getElementById('mysubmit').value+=' (background to Video)';
       if (document.getElementById('rcmysubmit')) {
       document.getElementById('rcmysubmit').value+=' (background to Video)';
       }
       }
       if (!allowvideo) { return false; } else { retval=true; }
  }
  }
  if (tvl != tvl.trim() && tvl.trim().length < 20 && tvl.trim() != '' && (tvl + ' ').substring(0,1) >= '0' && (tvl + ' ').substring(0,1) <= '9' && ('x' + tvl).trim().slice(-1) >= '0' && ('x' + tvl).trim().slice(-1) <= '9') {
    if (tvl.indexOf('.') != -1 && 1 == 5) { document.getElementById('myimghere').src=tvl; }
    return true;
  }
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.jpeg,') != -1) cae='.jpeg';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.jpg,') != -1) cae='.jpg';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.gif,') != -1) cae='.gif';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.png,') != -1) cae='.png';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.bmp,') != -1) cae='.bmp';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.tiff,') != -1) cae='.tiff';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.tif,') != -1) cae='.tif';
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.jp') != -1) retval=true;
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.gif') != -1) retval=true;
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.png') != -1) retval=true;
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.bmp') != -1) retval=true;
  if (tvl.replace('data:image/','.').toLowerCase().indexOf('.tif') != -1) retval=true;
  if (retval && 1 == 5) {      document.getElementById('myimghere').src=tvl; }
  if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) {
    cae=cae;
  } else if (retval && (tvl.indexOf('-') != -1 || tvl.indexOf(',') != -1)) {
    upforgrabs=true;
    if (tvl.indexOf('-') == -1 && tvl.indexOf(',') != -1) {
     upprefix=tvl.split(',')[0];
     if (cae != '') {  cae=tvl.toLowerCase().split(cae)[0];  upprefix=tvl.substring(0, cae.length);   }
     //alert(upprefix);
     thisto='';
     for (var ijh=eval(-1 + upprefix.length); ijh>=0; ijh--) {
       if (look) {
         if (upprefix.substring(ijh, eval(1 + ijh)) >= '0' && upprefix.substring(ijh, eval(1 + ijh)) <= '9') {
           thisto=upprefix.substring(ijh, eval(1 + ijh)) + thisto;
         } else {
           look=false;
         }
       }
     }
     tvl=tvl.replace(upprefix, upprefix + '-' + thisto);
     alin=upprefix.length;
     alin-=thisto.length;
     upprefix=upprefix.substring(0, alin);
     //alert(upprefix);
    } else if (tvl.indexOf('-') != -1 && tvl.indexOf(',') != -1) {
     if (tvl.indexOf(',') < tvl.indexOf('-')) {
     upprefix=tvl.split(',')[0];
     if (cae != '') {  cae=tvl.toLowerCase().split(cae)[0];  upprefix=tvl.substring(0, cae.length);   }
     //alert(upprefix);
     thisto='';
     for (var ijh=eval(-1 + upprefix.length); ijh>=0; ijh--) {
       if (look) {
         if (upprefix.substring(ijh, eval(1 + ijh)) >= '0' && upprefix.substring(ijh, eval(1 + ijh)) <= '9') {
           thisto=upprefix.substring(ijh, eval(1 + ijh)) + thisto;
         } else {
           look=false;
         }
       }
     }
     tvl=tvl.replace(upprefix, upprefix + '-' + thisto);
     alin=upprefix.length;
     alin-=thisto.length;
     upprefix=upprefix.substring(0, alin);
     }
    }  
    if (tvl.split('-').length > 2) {
    var preupfor=tvl.split('-')[0] + '-';
    upfor=preupfor + tvl.replace(preupfor,'').replace(/-/g,'%2d');
    //upfor=tvl;
    //alert(upfor);
    } else {
    upfor=tvl;
    }
    //alert('upfor=' + upfor);
    try {
    document.getElementById('iproposed').src=tvl;
    } catch(ee) {
    }
  }
  if (!retval) { 
  if (tvl.trim() != '') {
  //alert(tvl);
  //document.title='1=' + tvl;
  upforgrabs=false;
  upfor='';
  }
  return retval; 
  }
  return retval;
}
function and_then() {
  if (document.getElementById('mysv')) {
  document.getElementById('mysv').click();
  } else if (document.getElementById('mysa')) {
  document.getElementById('mysa').click();
  } else {
  document.getElementById('mysubmit').click();
  }
}
function latermaybemore() {
  var tval='', xval='';
  var newi=null, fo=null;
  var newsuffix='';
  //alert('prethere');
  if (upforgrabs) {
   //alert('there');
   if (origupfor == '') { 
     //alert('upfor=' + upfor);
     origupfor=decodeURIComponent(upfor); 
     xval='-' + decodeURIComponent(upfor.split('-')[eval(-1 + upfor.split('-').length)]);
     if (xval.indexOf('.') != -1) {
     upto=xval.substring(1).split('.')[0];
     if (upto.indexOf('*') != -1 || upto.indexOf('?') != -1 || upto.indexOf('%') != -1) { upto=''; }
     upsuffix='.' + decodeURIComponent(xval.split('.')[eval(-1 + xval.split('.').length)]);
     upprefix=decodeURIComponent(upfor).replace(xval, '');
     var look=true;
     thisto='';
     for (var ijh=eval(-1 + upprefix.length); ijh>=0; ijh--) {
       if (look) {
         if (upprefix.substring(ijh, eval(1 + ijh)) >= '0' && upprefix.substring(ijh, eval(1 + ijh)) <= '9') {
           thisto=upprefix.substring(ijh, eval(1 + ijh)) + thisto;
         } else {
           look=false;
         }
       }
     }
     if (thisto == '') {
  //document.title='2';
     upforgrabs=false;
   tval=upfor;
   origupfor='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
     } else {
     upprefix=decodeURIComponent(upprefix.substring(0, eval(eval('' + upprefix.length) - eval('' + thisto.length))));
     upfor=decodeURIComponent(upfor).replace(xval, '') + upsuffix;
     if (upto == '') {
       incis=0;
     } else if (('' + upto + ' ').substring(0,1) >= 'A' && ('' + upto + ' ').substring(0,1) <= 'Z') {
       incis=0;
     } else if (('' + upto + ' ').substring(0,1) >= 'a' && ('' + upto + ' ').substring(0,1) <= 'z') {
       incis=0;
     } else if (('' + thisto + ' ').substring(0,1) >= 'A' && ('' + thisto + ' ').substring(0,1) <= 'Z') {
       incis=0;
     } else if (('' + thisto + ' ').substring(0,1) >= 'a' && ('' + thisto + ' ').substring(0,1) <= 'z') {
       incis=0;
     } else if (eval('' + upto) > eval('' + thisto)) {
       incis=1;
     } else {
       incis=-1;
     }
  var jkh=\"<iframe id=jproposed\" + icnt + \" style=display:none; onerror='upforgrabs=false;' onload=checkproposedj(this); src='\" + upfor + \"'></iframe>\";
   jkh=\"<iframe id=jproposed\" + icnt + \" style=display:none; onerror='upforgrabs=false;' src='\" + more(upfor) + \"'></iframe>\";
   //alert('About to try ' + jkh);
     document.getElementById('jdiv').innerHTML=jkh;
  //document.title='55';
     upforgrabs=false; // new idea
     //alert('prejtry');
     //setTimeout(jtry, 1000); // document.getElementById('jproposed').src=upfor;
     }
     } else {
  //document.title='3';
     upforgrabs=false;
   tval=upfor;
   origupfor='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
     }
   }
   while (upforgrabs) {
     setTimeout(latermaybemore, 2000);
   }
   origupfor='';
   return;
  } else {
   tval=upfor;
   origupfor='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
  }
}

function more(what) {
  var purl='', look=true;
  if (what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0]).indexOf(',') != -1) {
  var xxx=''; //what.replace(what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0]),'').split('.')[0];
  xxx=(',' + what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0]).split(',')[1]).split('.')[0];
  upprefix=what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0]).split(',')[0];
  if (decodeURIComponent(upsuffix).indexOf(',') != -1) {
    upsuffix=decodeURIComponent(upsuffix).replace(',', xxx + ','); 
  } else {
    upsuffix=decodeURIComponent(upsuffix) + xxx;
  }
  thisto='';
  for (var ijh=eval(-1 + upprefix.length); ijh>=0; ijh--) {
       if (look) {
         if (upprefix.substring(ijh, eval(1 + ijh)) >= '0' && upprefix.substring(ijh, eval(1 + ijh)) <= '9') {
           thisto=upprefix.substring(ijh, eval(1 + ijh)) + thisto;
         } else {
           look=false;
         }
       }
  }
  upprefix=upprefix.substring(0, eval(eval('' + upprefix.length) - eval('' + thisto.length)));
  purl=document.URL.split('#')[0].split('?')[0] + '?urlminus=' + encodeURIComponent(what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0]).split(',')[0] + decodeURIComponent(upsuffix).split(',')[0]) + '&lastioid=' + encodeURIComponent(lastioid) + '&upprefix=' + encodeURIComponent(upprefix) + '&upsuffix=' + encodeURIComponent(upsuffix) + '&icnt=' + encodeURIComponent(icnt) + '&incis=' + encodeURIComponent(incis) + '&upto=' + encodeURIComponent(upto) + '&thisto=' + encodeURIComponent(thisto);
  } else {
  purl=document.URL.split('#')[0].split('?')[0] + '?urlminus=' + encodeURIComponent(what.replace(decodeURIComponent(upsuffix),decodeURIComponent(upsuffix).split(',')[0])) + '&lastioid=' + encodeURIComponent(lastioid) + '&upprefix=' + encodeURIComponent(upprefix) + '&upsuffix=' + encodeURIComponent(upsuffix) + '&icnt=' + encodeURIComponent(icnt) + '&incis=' + encodeURIComponent(incis) + '&upto=' + encodeURIComponent(upto) + '&thisto=' + encodeURIComponent(thisto);
  }
  
  //alert(purl);
  return purl; 
}

function jtry() {
     //alert('about to try ' + upfor);
   var jkh=\"<iframe id=jproposed\" + icnt + \" style=display:none; onerror='upforgrabs=false;' onload=checkproposedj(this); src='\" + upfor + \"'></iframe>\";
   jkh=\"<iframe id=jproposed\" + icnt + \" style=display:none; onerror='upforgrabs=false;' src='\" + more(upfor) + \"'></iframe>\";
   //alert('AboUt to try ' + jkh);
     document.getElementById('jdiv').innerHTML=jkh;
  //document.getElementById('jdiv').innerHTML=\"<iframe id=jproposed style=display:none; onerror='upforgrabs=false;' onload=checkproposedj(this); src='\" + upfor + \"'></iframe>\";
  //document.getElementById('jproposed').src=upfor;
}

function playseq() {
  if (document.getElementById('asong' + vcur)) {
    if (document.getElementById('asong' + vcur).title != '') {
      console.log('sleep ' + Math.floor(eval(eval(document.getElementById('asong' + vcur).title) * 1000)));
      setTimeout(playseq, Math.floor(eval(eval(document.getElementById('asong' + vcur).title) * 1000)));
      if (eval('' + vcur) != 2) {  document.getElementById('asong' + vcur).play();  }
      vcur++;
    }
  } else {
    vcur=2;
  }
}

function maybemore(tval, tid, tis) {
  console.log('tval=' + tval);
  console.log('tid=' + tid);
  console.log('tis=' + tis);
  var newi=null, fo=null;
  var inmb=0;
  tval=tval.replace('#song','');
  if (('' + tval).length <= 9) { 
    viams.push(tid + '@#@' + tval); 
    viamsd.push(0);
  } else if (('' + tval).indexOf('ata:') != -1) {
    var sps=null, isps=0, inps=null, isps=0;
    for (inmb=0; inmb<viams.length; inmb++) {
      if (viams[inmb].indexOf(('' + tid + '@#@')) == 0) {
        viams[inmb]=('' + tid).replace('slideshow','') + '#@#' + tval;
        vst++;
        if (('' + tval).indexOf('ata:image/') != -1) {
          vsti++;
          lastnav=tval;
          //alert(lastnav);
        } else if (('' + tval).indexOf('ata:audio/') != -1) {
          vsta++;
          tusl='Background';
          sps=document.getElementsByTagName('span');
          for (isps=0; isps<sps.length; isps++) {
            if (sps[isps].innerHTML.indexOf('Tutorial Slideshow') != -1) {
              sps[isps].innerHTML=sps[isps].innerHTML.replace('Tutorial Slideshow', 'Background');
            }
          }
          inps=document.getElementsByTagName('input');
          for (isps=0; isps<inps.length; isps++) {
            if (('' + inps[isps].value).indexOf('Tutorial Slideshow to ') == 0) {
              if (('' + inps[isps].value).indexOf('Randomized Content Order') != -1) {
              inps[isps].value=inps[isps].value='Email and/or Play and/or Synchronize Media';
              } else {
              inps[isps].value=inps[isps].value='Play and/or Synchronize Media';
              }
            }
          }
          if (document.getElementById('ours' + eval(-1 + eval('' + ('' + tid).replace('slideshow',''))))) {
            document.getElementById('ours' + eval(-1 + eval('' + ('' + tid).replace('slideshow','')))).innerHTML='Audio';
          }
          //alert('audio');
          var ais=document.createElement('audio');
          ais.type='audio/' + ('' + tval).split('ata:audio/')[1].split(':')[0].split(';')[0];
          ais.src=tval.replace('#song','');
          ais.style.verticalAlign='top';
          ais.title='';
          ais.controls='controls';
          ais.id='asong' + ('' + tid).replace('slideshow','');
          if (document.getElementById('song').innerHTML == '') { document.getElementById('song').innerHTML='<br><br>Play Audio/Video Sequentially below if Start of Play is first bit of media ...<br>'; vcur=eval(('' + tid).replace('slideshow','')); ais.onplay=function (event){ playseq(); }; setTimeout(asongit, 3000); }
          document.getElementById('song').appendChild(ais);
          //document.getElementById('song').innerHTML+='<br>';
        } else if (('' + tval).indexOf('ata:video/') != -1) {
          vstv++;
          tusl='Background';
          sps=document.getElementsByTagName('span');
          for (isps=0; isps<sps.length; isps++) {
            if (sps[isps].innerHTML.indexOf('Tutorial Slideshow') != -1) {
              sps[isps].innerHTML=sps[isps].innerHTML.replace('Tutorial Slideshow', 'Background');
            }
          }
          inps=document.getElementsByTagName('input');
          for (isps=0; isps<inps.length; isps++) {
            if (('' + inps[isps].value).indexOf('Tutorial Slideshow to ') == 0) {
              if (('' + inps[isps].value).indexOf('Randomized Content Order') != -1) {
              inps[isps].value=inps[isps].value='Email and/or Play and/or Synchronize Media';
              } else {
              inps[isps].value=inps[isps].value='Play and/or Synchronize Media';
              }
            }
          }
          //alert('video');
          if (document.getElementById('ours' + eval(-1 + eval('' + ('' + tid).replace('slideshow',''))))) {
            document.getElementById('ours' + eval(-1 + eval('' + ('' + tid).replace('slideshow','')))).innerHTML='Video';
          }
          var vis=document.createElement('video');
          vis.type='video/' + ('' + tval).split('ata:video/')[1].split(':')[0].split(';')[0];
          //alert(vis.type + ' ' + tval.replace('#song','').substring(0,120));
          vis.title='';
          vis.style.verticalAlign='top';
          vis.src=tval.replace('#song','');
          vis.controls='controls';
          vis.id='asong' + ('' + tid).replace('slideshow','');
          if (document.getElementById('song').innerHTML == '') { document.getElementById('song').innerHTML='<br><br>Play Audio/Video Sequentially below if Start of Play is first bit of media ...<br>';  vcur=eval(('' + tid).replace('slideshow','')); vis.onplay=function (event){ playseq(); }; setTimeout(asongit, 3000); }
          document.getElementById('song').appendChild(vis);
          //document.getElementById('song').innerHTML+='<br>';
        }
      }
    }
  }
  lastioid=tis.id;
  if (tval != '' && tval.indexOf(droot) != 0) {
    console.log('tval=' + tval + ' and droot=' + droot);
  }
  if (tval != '' && tval.indexOf(droot) == 0) {
    if ((' ' + droot).slice(-1) == ('" . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . "').substring(0,1)) {
    tval=tval.replace(droot, document.URL.split('//')[0].replace('https:','http:') + '//' + document.URL.split('//')[1].split('/')[0] + '/');
    } else {
    tval=tval.replace(droot + ('" . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . "').substring(0,1), document.URL.split('//')[0].replace('https:','http:') + '//' + document.URL.split('//')[1].split('/')[0] + '/');
    }
    tis.value=tval.replace('#song','');
  }
  if (isimage(tval)) {
   if (upforgrabs) {
   console.log('Here isimage upforgrabs');
   setTimeout(latermaybemore, 3000);
   return;
   } else {
   console.log('Here isimage not upforgrabs');
   origupfor='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
   }
  } else {
   tis.value='';
   origupfor='';
  }
  totalit();
}

function asongit() {
  var fsng=2, isng=0;
  while (document.getElementById('asong' + fsng)) {
    //alert('slideshow' + fsng + ' - 1 duration=' + document.getElementById('asong' + fsng).duration);
    if (document.getElementById('asong' + fsng).title == '') {
    if (('' + document.getElementById('asong' + fsng).duration).replace('undefined','').length > 0) {
      for (isng=0; isng<viams.length; isng++) {
        if (viams[isng].indexOf('' + fsng + '#@#') == 0) {  
          viams[isng]=viams[isng].replace('' + fsng + '#@#','');  
          viamsd[isng]=eval(('' + document.getElementById('asong' + fsng).duration)); 
          document.getElementById('asong' + fsng).title='' + document.getElementById('asong' + fsng).duration; 
        }
      }
      }
    }
    fsng++;
  }
  setTimeout(asongit, 2000);
}

function checkproposed(iois) {
  //var cont='';
  if (iois.src != '') {
    //if (iois.id.indexOf('jproposed') != -1) { alert(0); }
  if (iois != null) {
    //if (iois.id.indexOf('jproposed') != -1) { alert(1); }
    var aconto = (iois.contentWindow || iois.contentDocument);
    //if (iois.id.indexOf('jproposed') != -1) { alert(2); }
    if (aconto != null) {
    //if (iois.id.indexOf('jproposed') != -1) { alert(3); }
     if (aconto.document) { aconto = aconto.document; }
    //if (iois.id.indexOf('jproposed') != -1) { alert(4); }
     if (aconto.body != null) {
    //if (iois.id.indexOf('jproposed') != -1) { alert(5); }
      //cont=aconto.body.innerHTML.replace('<pre>','').replace('</pre>','');
      if (iois.id == 'iproposed') {
        if (aconto.body.innerHTML.toLowerCase().indexOf('not found') != -1) {
  //document.title='huh';
        upforgrabs=true;
        } else if (1 == 6) {
  //document.title='4=' + aconto.body.innerHTML;
        upforgrabs=false;
        }
      } else if (iois.id.indexOf('jproposed') != -1) {
        if (aconto.body.innerHTML.toLowerCase().indexOf('not found') != -1) {
  //document.title='66';
     upforgrabs=false;
        } else {
  var newi=null, fo=null;
  var newsuffix='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
      if (('' + thisto) == ('' + upto)) {
        if (('' + thisto) != '') {
  //document.title='5=' + thisto + ' and upto=' + upto;
        upforgrabs=false;
        }
      } else {
      thisto='' + eval(incis + eval('' + thisto))
     upfor=upprefix + thisto + upsuffix;
     document.getElementById('jproposed').src=upfor;
      }
      }
      }
     }
    } else if (iois.id.indexOf('jproposed') != -1) {
  //document.title='6';
     upforgrabs=false;
    }
  } else if (iois.id.indexOf('jproposed') != -1) {
  //document.title='7';
    upforgrabs=false;
  }
  }
}

function checkproposedj(iois) {
  //var cont='';
  if (iois.src != '') {
  if (iois != null) {
    var aconto = (iois.contentWindow || iois.contentDocument);
    if (aconto != null) {
     if (aconto.document) { aconto = aconto.document; }
     if (aconto.body != null) {
      //cont=aconto.body.innerHTML.replace('<pre>','').replace('</pre>','');
      if (iois.id == 'iproposed') {
        if (aconto.body.innerHTML.toLowerCase().indexOf('not found') != -1) {
        upforgrabs=true;
        } else if (1 == 6) {
  //document.title='4=' + aconto.body.innerHTML;
        upforgrabs=false;
        }
      } else if (iois.id.indexOf('jproposed') != -1) {
        if (aconto.body.innerHTML.toLowerCase().indexOf('not found') != -1) {
  //document.title='66';
     upforgrabs=false;
        } else {
  var newi=null, fo=null;
  var newsuffix='';
   fo=document.getElementById('fdiv' + icnt);
   icnt++;
   newi=document.getElementById('slideshow' + icnt);
   if (fo != null && newi == null) {
    fo.innerHTML+=\"<span id=ours\" + icnt + \">\" + tusl + \" Image</span> \" + icnt + \" <input title='Please note a minus between numericals can define a URL range of image URLs' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis' onblur='maybemore(this.value, this.id, this);' style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow\" + icnt + \"' name='slideshow\" + icnt + \"' value=''></input><br><br><div id='fdiv\" + icnt + \"'></div>\";
   } 
      if (('' + thisto) == ('' + upto)) {
        if (('' + thisto) != '') {
  //document.title='5=' + thisto + ' and upto=' + upto;
        upforgrabs=false;
        }
      } else {
      thisto='' + eval(incis + eval('' + thisto))
     upfor=upprefix + thisto + upsuffix;
     document.getElementById('jproposed').src=upfor;
      }
      }
      }
     }
    } else if (iois.id.indexOf('jproposed') != -1) {
  //document.title='6';
     upforgrabs=false;
    }
  } else if (iois.id.indexOf('jproposed') != -1) {
  //document.title='7';
    upforgrabs=false;
  }
  }
}

function ewell() {
       var etois='';
       if (usualclick == 0) {
         etois=prompt('Please enter email address to send this to', '');
         if (etois == null) { etois=''; }
         if (etois.indexOf('@') != -1) {
           //alert('Email this');
  var scrst='<head><script type=\"text/javascript\"> var vcur=2, imn=-1;  ';
  scrst+=\" function playseq() { var ass='asong';  ass=ass.concat(vcur.toString()); \";
  scrst+=\"   if (document.getElementById(ass)) { \";
  scrst+=\"   if (document.getElementById(ass).title != '') {  \"
    scrst+=\"    setTimeout(playseq, Math.floor(eval(eval(document.getElementById(ass).title) * 1000)));  \";
      scrst+=\"  if (eval(vcur.toString()) != 2) {  document.getElementById(ass).play();  }   \";
        scrst+=' vcur-=imn; ';
      scrst+=' } ';
    scrst+=' } else {  ';
      scrst+=' vcur=2; ';
    scrst+=' } ';
  scrst+=' } ';
  scrst+='</scri' + 'pt></head>'; 
  var zbigstr='<html>' + '<body>' + scrst + document.getElementById('song').outerHTML.replace(/\&quot\;/g,\"'\").replace('<audio ','<audio onplay=\" vcur=2; playseq(); \" ') + '</body>' + '</html>';
//           alert('email ' + zbigstr);
//  var woiso=window.open('','_blank', 'top=50,left=50,width=500,height=500');
//  woiso.document.write(zbigstr);
//           alert('Email ' + zbigstr);
  var zzhr = new XMLHttpRequest();
  var zzform=new FormData();
  zzform.append('to', etois);
  zzform.append('subj', 'My Audio/Video Presentation');
  if (etois == etois.toUpperCase()) {
  zzform.append('inline', '');
  }
  //zbigstr='<html>' + '<body>' + \"document.getElementById('song').outerHTML\" + '</body>' + '</html>';
  zzform.append('tdhuhta', encodeURIComponent(zbigstr));
  zzhr.open('post', '//www.rjmprogramming.com.au/PHP/emailhtml.php', true);
  zzhr.send(zzform);
         }
       }
}

function totalit() {
   var tret=true;
   var itotal=0, jhin=0, enumb=-1, lstval='', lstnam='', ilst=1, fillout=false;
   var jhins=" . $ihsh . ".trim().split('#');
   if (vst != 0) {
     if (vsta == vst) {
       document.getElementById('song').style.display='inline-block';
       //location.href='#song';
       // alert('all audio');
       //alert('Vst=' + vst + ' and vsta=' + vsta + ' and vstv=' + vstv + ' and vsti=' + vsti);
       setTimeout(ewell, 2000);
       return false;
     } else if (vstv == vst) {
       document.getElementById('song').style.display='inline-block';
       //location.href='#song';
       // alert('all video');
       //alert('vst=' + vst + ' and Vsta=' + vsta + ' and vstv=' + vstv + ' and vsti=' + vsti);
       setTimeout(ewell, 2000);
       return false;
     } else if (eval(vstv + vsta) == vst) {
       document.getElementById('song').style.display='inline-block';
       //location.href='#song';
       // alert('all audio/video');
       //alert('vst=' + vst + ' and vsta=' + vsta + ' and Vstv=' + vstv + ' and vsti=' + vsti);
       setTimeout(ewell, 2000);
       return false;
     } else if (eval(vstv + vsta) != 0) {
       document.getElementById('song').style.display='inline-block';
       document.getElementById('song').style.backgroundImage='linear-gradient(rgba(255,255,255,0.7),rgba(255,255,255,0.7)),URL(' + lastnav + ')';
       //document.getElementById('song').style.backgroundImage='URL(' + lastnav + ')';
       document.getElementById('song').style.backgroundSize='contain';
       document.getElementById('song').style.backgroundRepeat='no-repeat';
       //location.href='#song';
       //alert('some audio/video ' + lastname);
       //alert('vst=' + vst + ' and vsta=' + vsta + ' and vstv=' + vstv + ' and Vsti=' + vsti);
       setTimeout(ewell, 2000);
       return false;
     //} else {
       //alert('vst=' + vst + ' and vsta=' + vsta + ' and vstv=' + vstv + ' and vsti=' + vsti);
     }
   }
   if (document.getElementById('endnumber').value != '') {
     enumb=eval('' + document.getElementById('endnumber').value);
   } else if (('' + document.getElementById('owend').value) != '' && ('' + document.getElementById('ohend').value) && (('' + document.getElementById('ow').value).replace('-1','') != ('' + document.getElementById('owend').value) || ('' + document.getElementById('oh').value).replace('-1','') != ('' + document.getElementById('ohend').value))) {
     fillout=true;
   }
   var inps=document.getElementsByTagName('input');
   for (var jnps=0; jnps<inps.length; jnps++) {
     if (('' + inps[jnps].name).indexOf('slideshow') == 0) {
       if (('' + inps[jnps].value).trim() != '') { 
         enumb-=1; 
         lstnam=('' + inps[jnps].name); 
         if (('' + inps[jnps].name) != 'slideshow') { 
           ilst=eval(('' + inps[jnps].name).split('slideshow')[1]); 
         } 
         lstval=('' + inps[jnps].value); 
         itotal++; 
         if (eval('' + jhins.length) >= eval('' + jhin)) { 
           if (jhins[jhin] != '') { 
             if (inps[jnps].value.indexOf('#') == -1) { 
               inps[jnps].value=inps[jnps].value + ('#' + jhins[jhin]).replace('#undefined','');  
             } else if (inps[jnps].value.indexOf('#undefined') != -1) { 
               inps[jnps].value=inps[jnps].value.split('#')[0];  
             }  
           }  
         } 
         jhin++; 
       }
     }
   }
   if (enumb > 0) {
     while (enumb > 0) {
       enumb--;
       ilst++;
       lastnam='slideshow' + ilst;
       itotal++;
       if (document.getElementById(lastnam)) {
         document.getElementById(lastnam).value=lstval;
       } else {
         document.getElementById('dhash').innerHTML+='<input type=hidden value=\"' + lstval + '\" id=\"' + lastnam + '\" name=\"' + lastnam + '\"></input>';
       }
     }
   }
   if (fillout) {
     document.getElementById('endnumber').value='' + itotal;
     alert('endnumber becomes ' + itotal);
   }
   if (usualclick == 0) {
   document.getElementById('numslides').value='' + itotal;
   } else if (usualclick == 1) {
   document.getElementById('numslides').value='-' + itotal;
   } else {
   document.getElementById('numslides').value='" . $rltminus . "' + itotal;
   }
   if (1 == 2) { alert('" . $rltminus . "' + itotal);  }
   if (document.getElementById('rcmysubmit')) {
   document.getElementById('rcmysubmit').style.display='inline-block';
   }
   return tret;
}

function andthen() {
" . $imagegifandthen . " 
" . $midway . " 
}

function dolhsh() {
  " . $setwm . "
  if (('' + window.location.hash).replace('#','') != '') {
  //alert(45);
    document.getElementById('lhsh').innerHTML=window.location.hash.substring(1);
    document.getElementById('dhash').innerHTML='<input type=hidden name=ihash value=\"' + window.location.hash.substring(1) + '\"></input>';
    document.getElementById('cbi').src=document.getElementById('cbi').src + '0' + window.location.hash.replace(/\ /g,'%20');
  //alert(document.getElementById('lhsh').innerHTML);
    var gsu='" . $gfn . "';  
  //alert(gsu);
    document.getElementById('dgfn').innerHTML='<input type=hidden name=gfn value=\"' + document.URL.split('tutorial_to_animated_gif.')[0] + gsu + '\"></input>';
    if (window.parent) {
      if (parent.document.getElementById('agifn')) {
       // alert(gsu);
        parent.document.getElementById('agifn').value=document.URL.split('tutorial_to_animated_gif.')[0] + gsu;
      }
    }
  } else if (parent.window) {
    if (parent.document.URL.indexOf('client_browsing.htm') != -1) {
    if (parent.document.getElementById('lhsh')) {
      if (parent.document.getElementById('lhsh').innerHTML != '') {
    document.getElementById('lhsh').innerHTML=parent.document.getElementById('lhsh').innerHTML;
  //alert('000:' + document.getElementById('lhsh').innerHTML);
    document.getElementById('dhash').innerHTML='<input type=hidden name=ihash value=\"' + parent.document.getElementById('lhsh').innerHTML + '\"></input>';
    document.getElementById('cbi').src=document.getElementById('cbi').src + '0#' + parent.document.getElementById('lhsh').innerHTML.replace(/\ /g,'%20');
    var gsux='" . $gfn . "';  
  //alert(gsu);
    document.getElementById('dgfn').innerHTML='<input type=hidden name=gfn value=\"' + document.URL.split('tutorial_to_animated_gif.')[0] + gsux + '\"></input>';
      }
    }
    }
  }
 //else {
    //alert(65);
  //}
}

function hextextdec(couleur) {  // thanks to http://wikkawiki.org/FpdfIntegration/raw
    var dolR = couleur.toLowerCase().replace('#','').substring(0,2);
    var dolrouge = hexdec(dolR);
    var dolV = couleur.toLowerCase().replace('#','').replace(dolR,'').substring(0,2);
    var dolvert = hexdec(dolV);
    var dolB = couleur.toLowerCase().replace('#','').replace(dolR,'').replace(dolV,'').substring(0,2);
    var dolbleu = hexdec(dolB);
    document.getElementById('textred').value='' + dolrouge;
    document.getElementById('textgreen').value='' + dolvert;
    document.getElementById('textblue').value='' + dolbleu;
    return couleur;
}

function fixtcol(ocolo) {
  document.getElementById('stitle').style.color=hextextdec(ocolo.value);
  document.getElementById('stitle').style.fontColor=hextextdec(ocolo.value);
}

function watermarkchange(oselwater) {
 var ovalis=oselwater.value
 if (ovalis == ' ') {
  document.getElementById('watermarkoption').innerHTML='Title on First and Count on Others'; 
  document.getElementById('watermarkoption').value=ovalis;  
 } else if (ovalis == '  ') {
  document.getElementById('watermarkoption').innerHTML='Title With a Count on All';
  document.getElementById('watermarkoption').value=ovalis;  
 } else if (ovalis.length == 0) {
  document.getElementById('watermarkoption').innerHTML='Title Just on First'; 
  document.getElementById('watermarkoption').value=ovalis;  
 } else {
  document.getElementById('watermarkoption').innerHTML='No Watermark'; 
  document.getElementById('watermarkoption').value=ovalis;  
 }
}
function startmonitoringwh() {
  var suffto='', suffnum=1, doneone=false;
  while (document.getElementById('slideshow' + suffto)) {
    if (!doneone && document.getElementById('slideshow' + suffto).getAttribute('data-wh') == '') {
     if (document.getElementById('slideshow' + suffto).value.indexOf('data:') == 0 || document.getElementById('slideshow' + suffto).value.toLowerCase().indexOf('http') == 0) {
     if (iready) {
      doneone=true;
      iready=false;
      document.getElementById('slideshow' + suffto).setAttribute('data-wh', ' ');
      document.getElementById('myimghere').title='slideshow' + suffto;
      document.getElementById('myimghere').src=document.getElementById('slideshow' + suffto).value;
     }
     }
    }
    suffnum++;
    suffto='' + suffnum;
  }
  setTimeout(startmonitoringwh, 3000);
}

function filteretcit(oself) {
  var xsuffis='';
  if (oself.value.indexOf('imagefilter(') != -1) {
    document.getElementById('filteretc').value=oself.value;
  for (var i=0; i<oself.options.length; i++) {
    if (oself.options[i].selected) {
      if (oself.options[i].value != '') {
        xsuffis=' ... ' + oself.options[i].innerText;
      }
    }
  }
    oself.title=oself.value + xsuffis;
  } else {
    document.getElementById('filteretc').value=oself.value;
    document.getElementById('filteretc').title='Image';
  }
  //oself.value='';
}

function selitize(thiswh) {
  if (thiswh.trim() != '') {
   if (document.getElementById('selwhs').outerHTML.indexOf(thiswh) == -1) {
     document.getElementById('selwhs').style.display='inline-block';
     document.getElementById('selwhs').innerHTML+='<option value=\"' + thiswh + '\">' + thiswh.replace(',',' x ') + '</option>';
     if (document.getElementById('selwhs').outerHTML.indexOf('?') == -1) {
     if (thiswh.indexOf(',') != -1) {
     document.getElementById('fow').value=thiswh.split(',')[0];
     document.getElementById('foh').value=thiswh.split(',')[1];
     }
     document.getElementById('selwhs').innerHTML+='<option value=\"?\">You Enter Width,Height</option>';
     document.getElementById('ifilter').innerHTML='<select title=\"Image\" onchange=filteretcit(this); id=sfilteris><option value=\"\">Image</option></select>';     
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_EMBOSS); \">Embossed Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_NEGATE); \">Negated Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_COLORIZE, 255, 0, 0); \">Red Colourized Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_COLORIZE, 0, 255, 0); \">Green Colourized Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_COLORIZE, -127.12, -127.98, 127); \">Colourized Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_COLORIZE, 0, 0, 255);  \">Blue Colourized Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_PIXELATE, 3); \">Pixellated Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_SMOOTH, -1924.124); \">Smoothed Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_CONTRAST, -90); \">Contrasted Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_BRIGHTNESS, 98); \">Brightened Image(s)</option>';
     document.getElementById('sfilteris').innerHTML+='<option value=\" imagefilter(\$image, IMG_FILTER_MEAN_REMOVAL); \">Mean Removal Image(s)</option>';     
     }
   }
  }
  return thiswh;
}
function owoh(thisselis) {
  var askwh='', askend=',[numSlides]', atwo=2;
  if (thisselis.value.indexOf(',') != -1) {
    document.getElementById('ow').value='' + thisselis.value.split(',')[0];
    document.getElementById('oh').value='' + thisselis.value.split(',')[1];
  } else if (thisselis.value='?') {
    if (document.getElementById('slideshow2')) {
      if (document.getElementById('slideshow2').value != '') {
      atwo=1;
      while (document.getElementById('slideshow' + eval(1 + atwo)) && ('' + document.getElementById('slideshow' + eval(1 + atwo)).value) != '') {
        atwo++;
        askend=',[numSlides=' + atwo + ']';
      }
      }
    }
    askwh=prompt('Please comma separate width,height[,widthEnd,heightEnd' + askend + '] (eg. 750,1334) where a -1 for one lets it be proportional', '');
    if (askwh == null) { askwh=''; } else { askwh=askwh.replace(/\ /g,''); }
    if (askwh.indexOf(',') != -1 && eval('' + askwh.split('-').length) <= 2) {
    if (eval('' + askwh.split(',').length) >= 4) {
    document.getElementById('owend').value='' + askwh.split(',')[2];
    document.getElementById('ohend').value='' + askwh.split(',')[3];
    //alert('yes');
    } else {
    document.getElementById('owend').value='';
    document.getElementById('ohend').value='';
    //alert('no');
    }
    if (eval('' + askwh.split(',').length) >= 5) {
    document.getElementById('endnumber').value='' + askwh.split(',')[4];
    } else {
    document.getElementById('endnumber').value='';
    }
    if (askwh.indexOf('-1,') == 0) {
    document.getElementById('ow').value='' + Math.round(eval('' + thisselis.outerHTML.split(' x ')[0].split('>')[eval(-1 + thisselis.outerHTML.split(' x ')[0].split('>').length)]) * eval('' + askwh.split(',')[1]) / eval('' + thisselis.outerHTML.split(',')[1].split('\"')[0].split(\"'\")[0]));
    askwh=askwh.replace('-1,', document.getElementById('ow').value + ',');
    document.getElementById('oh').value='' + askwh.split(',')[1];
    if (eval('' + askwh.split(',').length) >= 4) {
      if (askwh.split(',')[2] == '-1') {
    document.getElementById('owend').value='' + Math.round(eval(document.getElementById('ow').value) * eval('' + askwh.split(',')[3]) / eval('' + askwh.split(',')[1]));
    askwh=askwh.replace(',-1', ',' + document.getElementById('owend').value);
      }
    }
    } else if ((askwh + '~').indexOf(',-1~') != -1 || (askwh + '~').indexOf(askwh.split(',')[0] + ',-1,') != -1) {
    document.getElementById('ow').value='' + askwh.split(',')[0];
    document.getElementById('oh').value='' + Math.round(eval('' + thisselis.outerHTML.split(' x ')[1].split('<')[0]) * eval('' + askwh.split(',')[0]) / eval('' + thisselis.outerHTML.split(',')[0].split('>')[eval(-1 + thisselis.outerHTML.split(',')[0].split('>').length)]));
    askwh=askwh.replace(askwh.split(',')[0] + ',-1', askwh.split(',')[0] + ',' + document.getElementById('oh').value);
    if (eval('' + askwh.split(',').length) >= 4) {
      if (askwh.split(',')[3] == '-1') {
    document.getElementById('ohend').value='' + Math.round(eval(document.getElementById('oh').value) * eval('' + askwh.split(',')[2]) / eval('' + askwh.split(',')[0]));
    askwh=askwh.replace(',-1', ',' + document.getElementById('ohend').value);
      }
    }
    } else {
    document.getElementById('ow').value='' + askwh.split(',')[0];
    document.getElementById('oh').value='' + askwh.split(',')[1];
    }
    if (thisselis.outerHTML.indexOf(askwh) == -1) {
     thisselis.style.display='inline-block';
     thisselis.innerHTML+='<option value=\"' + askwh + '\">' + askwh.replace(',',' x ') + '</option>';
    }
    } else {
    askwh='';
    document.getElementById('ow').value='-1';
    document.getElementById('oh').value='-1';
    }
    thisselis.value=askwh;
  } else {
    document.getElementById('ow').value='-1';
    document.getElementById('oh').value='-1';
  }
}
function dotval(tval) {
   if (('' + tval).indexOf('ata:image/') != -1) {
          vst++;
          vsti++;
          lastnav=tval;
          //alert(lastnav);
   }
}
setTimeout(startmonitoringwh, 3000);
</script>
<style>
a { padding: 5px 5px 5px 5px; margin: 5px 5px 5px 5px; border: 1px solid red; background-color: #f0f0f0; } 
</style>
</head>
<body style='background-color:yellow;' onload='  dolhsh();  if (top.document.getElementById(\"thegifnamegoeshere\")) { top.document.getElementById(\"thegifnamegoeshere\").value=\"//www.rjmprogramming.com.au/PHP/animegif/" . jserver_remote_addr() . ".gif\";  } setTimeout(andthen, 8000);  '>
<h1 id='myh1' align='center'>Tutorial Slideshow to Animated GIF <select onchange=owoh(this); style='display:" . $setwhd . ";' id=selwhs><option value=''>Size of First Slide (as below)</option>" . $setwhihs . "</select>" . $moreh1 . " ... or ... <div style='display:inline-block;width:95px;height:30px;overflow:hidden;border-top:1px solid black;border-bottom:1px solid black;border-left:2px solid yellow;border-right:1px solid yellow;'><iframe id=cbi frameborder=0 style='width:173px;height:228px;margin-top:-194px;' src='../../HTMLCSS/client_browsing.htm?d=" . rand(0,18765432) . "'></iframe></div>" . $varmodes . $selz . "</h1>
<div align='center'>
<form onsubmit='return totalit();' id='myform' action='./tutorial_to_animated_gif.php' method='POST'>" . $prestfle . $stfle . "
<div id=dhash style=display:none;></div><div id=dgfn style=display:none;></div><input name=faudio id=faudio value='' type=hidden></input><input name=fvideo id=fvideo value='' type=hidden></input>
<input name=fred id=fred value='" . $xred . "' type=hidden></input><input name=fgreen id=fgreen value='" . $xgreen . "' type=hidden></input><input name=fblue id=fblue value='" . $xblue . "' type=hidden></input>
<input name=fontname id=fontname value='' type=hidden></input><input name=fangle id=fangle value='0' type=hidden></input>
<input name=fleft id=fleft value='5' type=hidden></input><input name=ftop id=ftop value='5' type=hidden></input>
<input name=filteretc id=filteretc value=\"" . $filteretc . "\" type=hidden></input>
<input name=fow id=fow value='-1' type=hidden></input><input name=foh id=foh value='-1' type=hidden></input>
<input name=ow id=ow value='-1' type=hidden></input><input name=oh id=oh value='-1' type=hidden></input>
<input name=owend id=owend value='' type=hidden></input><input name=ohend id=ohend value='' type=hidden></input><input name=endnumber id=endnumber value='' type=hidden></input>
<input name=textred id=textred value='" . $r200 . "' type=hidden></input><input name=textgreen id=textgreen value='" . $g200 . "' type=hidden></input><input name=textblue id=textblue value='" . $b200 . "' type=hidden></input>
<input name=fsize id=fsize value='" . str_replace('px','',$xsize) . "px' type=hidden></input>
Tutorial Slideshow <select style='display:inline-block;width:80px;' onchange='watermarkchange(this);' id='watermarkmode' name='watermarkmode'><option id=watermarkoption value=''>Title</option><option value=''>Title Just on First</option><option value=' '>Title on First and Count on Others</option><option value='  '>Title With a Count on All</option><option id=optnow value=\"\\n\">No Watermark</option></select> <input onchange=fixtcol(this); title='Watermark colour' style=display:inline-block; type=color value=#" . $c8r . $c8g . $c8b . "></input> <input onblur='opacitymaybe(this);' style='width:" . $seventypc . ";color:#" . $c8r . $c8g . $c8b . ";font-color:#" . $c8r . $c8g . $c8b . ";' type='text' title='To supplement # delimited comments below you can append to the title # delimited (left,top) or FontColour or Font_name or FontSize_px or AngleDegrees[.Opacity] configurations allowed here' placeholder='To supplement # delimited comments below you can append to the title # delimited (left,top) or FontColour or Font_name or FontSize_px or AngleDegrees[.Opacity] configurations allowed here' id='stitle' name='stitle' value='" . $agtext . "'></input><br><br>
Tutorial Slideshow Delay(s) <input title='Comma separated list noticed, with first value being default for undefined ones.  Plus and minus values do delays relative to previous delay.' style='width:" . $seventypc . ";' type='text' id='delay' name='delay' value='" . $delay . "'></input><br><br>
<span id=ours1>Tutorial Slideshow</span> <a style='cursor:pointer;text-decoration:none;' onclick=\" if (document.getElementById('slideshow').value.toLowerCase().indexOf('.htm') != -1) { window.open(document.getElementById('slideshow').value,'_blank'); } \">HTML</a> or <span id=ifilter>" . $fhc . "</span> <input title='Please note a minus between numericals can define a URL range of image URLs and that an Audio URL or Video URL (or browsed for above) causes the resultant Animated GIF to be its background image' placeholder='Append #comment[~second line] for animated GIF watermarks (that are red if first slide has such a comment) ... {[unicode]} for some emojis and an Audio URL or Video URL (or browsed for above) causes the resultant Animated GIF to be its background image' onblur=\"maybemore(this.value, 'slideshow1', this);\" style='width:" . $seventypc . ";' data-wh='' type='text' id='slideshow' name='slideshow' value='" . $url . "'></input><br><br>
<div id='fdiv1'></div><input type=hidden name=numslides id=numslides value='0'></input><table><tr><td style=vertical-align:top;><div id=song style='display:none;vertical-align:top;'></div></td></tr></table><div id=myim" . $cssinitim . "><span id=smyim>" . $sinitim . "</span>" . $initim . "</div><input onclick=\"usualclick=1;\" id=\"mysubmit\" type=\"submit\" title='Tutorial Slideshow to Animated GIF' value='Tutorial Slideshow to Animated GIF'></input>" . $newrbut . $preextras . $extras . "
</form><div id='idiv' align='center' style='background-color:pink;'>" . $imagegif . "</div>
</div>
<input style='position:absolute;top:-200px;left:-200px;' type='text' value=''></input>
<iframe id=iproposed style='display:none;' onerror='upforgrabs=true;' onload='checkproposed(this);' src=></iframe>
<div id=jdiv><iframe id=jproposed style='display:none;' onerror='upforgrabs=false;' onload='checkproposedj(this);' src=></iframe></div>
<div id=lhsh style=display:none;></div>
<img style='display:none;' title='slideshow' id='myimghere' src='' onerror=\"iready=true;\" onload=\" if (this.src.length > 0) {  iwidths.push(this.width);   iheights.push(this.height);  document.getElementById(this.title).setAttribute('data-wh',selitize('' + this.width + ',' + this.height)); iready=true; dotval(this.src); } \"></img>
<!--div id=videoag style=display:none;></div><div id=thewords style=display:none;></div><div id=sin style=display:none;></div><input type=hidden id=outputname value=''></input><input type=hidden id=path value=''></input><input type=hidden id=cto value=''></input-->
</body>
</html>";

//}


?>
