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

$sleept=" exec('sleep 85'); ";
$complextext=false;
$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')) {
  $sleept="";
  $immogpath='/usr/local/Cellar/imagemagick/7.1.0-10_1/bin/';
}

$initim="";  // ImageMagick interfacings
$sinitim="";  
$cssinitim="";  
$inextis='jpg';
$imvgn=""; 
$imafn="";
$imqty="";
$imgds="";
$iappliedto="";
if (isset($_GET['appliedto'])) {
  $iappliedto=str_replace('+',' ',urldecode($_GET['appliedto']));
} else if (isset($_POST['appliedto'])) {
  $iappliedto=str_replace('+',' ',urldecode($_POST['appliedto']));
}
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']));
}
if (isset($_GET['outpdf'])) {
  $imgds.=' -format pdf ';
  if (file_exists('./animegif.pdf') && $sleept != '') {  unlink('./animegif.pdf');  }
    foreach (glob('/tmp/imtmp*.*') as $imfilename) {
       unlink($imfilename);  
    }
} else if (isset($_POST['outpdf'])) {
  $imgds.=' -format pdf ';
  if (file_exists('./animegif.pdf') && $sleept != '') {  unlink('./animegif.pdf');  }
    foreach (glob('/tmp/imtmp*.*') as $imfilename) {
       unlink($imfilename);  
    }
}

$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=' -format pdf '>Convert to PDF</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 -strip '>Rotate 180</option>
<option value=' -rotate 90 -strip '>Rotate 90</option>
<option value=' -rotate 270 -strip '>Rotate 270</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 title="' . $iappliedto . '" 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);
      }
     }
    }
 }

$agcount=1;

$afterif1="";
$afterif2="";
if (isset($_POST['outpdf']) || isset($_GET['outpdf'])) {
  $afterif1="\n  copy(\$sofarout,'/tmp/imtmp' . substr(('0000' . \$agcount),-3,3) . '.' . \$extis); \n";
  $afterif2="\n  if ('preview' == 'preview') { exec('rm -f /tmp/imtmp0*.pdf');  \n";
  if ($sleept == "") { $afterif2.="\n  exec('rm -f " . dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif.pdf');  \n"; }
  $afterif2.="\n  exec('" . $immogpath . "convert /tmp/imtmp0*.' . str_replace('jpeg','jp*',\$extis) . ' /tmp/imtmp000.pdf'); \n " . $sleept . " \n if (file_exists('/tmp/imtmp000.pdf')) { copy('/tmp/imtmp000.pdf','" . dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif.pdf'); }  \n if (file_exists('/tmp/imtmp000.pdf')) { exec('rm -f /tmp/imtmp0*.*[gGmMiI]*'); } } \n";
}

$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 
 \$extis='*[GgMmIi]*';

 \$iappliedto='" . $iappliedto . "'; /" . "/ Applied to list
 \$agcount=" . $agcount . "; /" . "/ Current slide number, starting with 1

 // 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, \$agcount, \$extis;
  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); " . $afterif1 . "
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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]; " . $afterif1 . "  
       }
    }
    \$agcount++;
    \$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); " . $afterif1 . "
    if (strpos(strtolower((\$imvgn . \$imafn . \$imqty . \$imgds)), '-format ') === false) { \$imvgn.=' -format " . str_replace('jpg','jpeg',$inextis) . " ';  }
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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];" . $afterif1 . "  
       }
    }
    \$agcount++;
    \$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, \$agcount, \$extis;
  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, file_get_contents(\$inidis));
    \$fzis=filesize(\$sofarout); " . $afterif1 . "
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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];  " . $afterif1 . " 
       }
    }
    \$agcount++;
    \$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, \$agcount, \$extis;
  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, file_get_contents(\$inidis));
    \$fzis=filesize(\$sofarout); " . $afterif1 . "
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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];  " . $afterif1 . " 
       }
    }
    \$agcount++;
    \$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, \$agcount, \$extis;
  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, file_get_contents(\$inidis));
    \$fzis=filesize(\$sofarout); " . $afterif1 . "
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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];   " . $afterif1 . "
       }
    }
    \$agcount++;
    \$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, \$agcount;
  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, file_get_contents(\$inidis));
    \$fzis=filesize(\$sofarout); " . $afterif1 . "
    if (trim(explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0]) != '') {
    //file_put_contents('last.cmd','" . $immogpath . "mogrify ' . explode('|', \$imvgn . \$imafn . \$imqty . \$imgds)[0] . ' /tmp/imtmp.' . \$extis);
    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];  " . $afterif1 . " 
       }
    }
    \$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..
\$agcount++;
}
";

$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=$afterif2 . "
// 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();";
$qww=" || 1 == 2";
if (isset($_GET['outpdf']) || isset($_POST['outpdf'])) { $qww=" || 1 == 1";  }
$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'); 
if (file_exists('animegif.pdf') || file_exists('/tmp/imtmp000.pdf')" . $qww . ") {
fwrite(\$fp, '<!doctype html><html><head><script type=text/javascript> function checkp(iois) { if (iois.src.indexOf(\".pdf\") != -1) { if (iois != null) { var aconto = (iois.contentWindow || iois.contentDocument); if (aconto != null) { if (aconto.document) { aconto = aconto.document; } if (aconto.body != null) { if (aconto.body.innerHTML.indexOf(\">Not found\") == -1) { document.getElementById(\"dsrci\").innerHTML=\"<object style=width:100%;height:900px; type=application/pdf data=./animegif.pdf></object>/\"; } else { iois.src=iois.src.split(\"?\")[0] + \"?r=\" + Math.floor(Math.random() * 19875643); } } } } } } </script></head><body><h1>PDF version below</h1><br><div id=dsrci style=\"width:100%;height:900px;\"><iframe id=srci onload=checkp(this); style=\"width:100%;height:900px;\" data-type=\"application/pdf\" src=\"animegif.pdf\"></iframe></div><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>'); 
if (file_exists('/tmp/imtmp000.pdf')) { unlink('/tmp/imtmp000.pdf'); }
} else {
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, $complextext;
  $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 == " " || $complextext) {
    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 ourcomplicated($inio, $iappl) {
  $ideasl=explode(",", str_replace(' ','',$iappl));
  $xour="our";
  for ($iqa=0; $iqa<sizeof($ideasl); $iqa++) {
    if (trim($ideasl[$iqa]) != '') {
      $xour="";
      if (('-' . $inio) == trim($ideasl[$iqa])) { return "";  }
      $ideasr=explode("-", str_replace(' ','',trim($ideasl[$iqa])));
      for ($iqb=0; $iqb<sizeof($ideasr); $iqb++) {
        if (('' . $inio) == trim($ideasr[$iqb])) { 
          return "our";  
        }
        if ($iqb == 1) {
          if (trim($ideasr[1]) == "") { $ideasr[1]="99999999"; }
          if ($inio >= $ideasr[0] && $inio <= $ideasr[1]) { return "our";  }
        }
      }
    }
  }
  return $xour;
}

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";
 
 $prevatext="";
 $prevbtext="";
 
 //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;
   $ours="our";
   for ($io=1; $io<sizeof($photos); $io++) {
    $ours=ourcomplicated($io, $iappliedto);
    if (strpos(explode('"', $photos[$io])[0], "#") !== false) {
      if ($io == 1) {
      if ($atext != "") {  $atext.=" ... ";  }
      $prevatext=$atext;
      $atext.=str_replace("}","') . \"",str_replace("{","\" . retemoji('U+' . '",str_replace("~","\\n",str_replace('"','`',str_replace('_',' ',explode("#", explode('"', str_replace("+"," ",urldecode($photos[$io])) )[0])[1])))));
      $prevbtext=$atext;
      
      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 {
      if ($prevatext != "") {  $atext=$prevatext;   }
      //if ($prevatext != "") {  file_put_contents('qpqp.qpqp', $agtext . "\n\n" . $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 ($prevatext != "" && $prevbtext == $atext) { if (!$complextext) { $complextext=false; }  } else if ($prevatext != "" && $prevbtext != $atext) {  $complextext=true;   }
      //if ($prevatext != "") {  file_put_contents('qp.qp', $agtext . "\n\n" . $atext); }
      }
    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');", $ours . "imagecreatefromstring(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');", $ours . "imagecreatefromstring(@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);
      }
      //file_put_contents('qpqp.qpqp', $eachone . "\n\n" . $atext . "\n\n" . str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
      $gifphp.=str_replace("imagecreatefromjpeg('source01.jpg');", $ours . "imagecreatefromjpeg('" . $prefix . $aphoto[0] . "');", str_replace("\$text='';", "\$text=\"" . str_replace("+"," ",urldecode($atext)) . "\";", $eachone));
      //file_put_contents('qpqpqp.qpqpqp', $gifphp);
    } 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');", $ours . "imagecreatefrompng('" . $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');", $ours . "imagecreatefromgif('" . $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');", $ours . "imagecreatefrombmp('" . $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('qpqpqpqp.qpqpqpqp', $gifphp);
   }
   if (1 == 1 || (!isset($_GET['outpdf']) && !isset($_POST['outpdf']))) {
   file_put_contents(server_remote_addr() . "_preview.php", ingif($gifphp) . $rltsuffix . $lastbit);
   }
   //$gifphp=str_replace("'preview' == 'preview'", "1 == 2", $gifphp);
   file_put_contents(server_remote_addr() . ".php", str_replace("'preview' == 'preview'", "1 == 1", 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 ginduri='';
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 id=smyim title=Application onclick=applyto(); style=cursor:pointer;text-decoration:underline;>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) {
 var ate='';
 if (oselo.value != '') {
  var oselovalue=oselo.value;
  if (document.getElementById('inextis')) {  
    if (oselo.value.indexOf('-format pdf') != -1) {
      document.getElementById('myim').innerHTML+='<input type=hidden name=outpdf id=outpdf value=></input>';
  if (document.getElementById('gdopt')) {
    document.getElementById('gdopt').innerHTML+='&nbsp;&nbsp;' + oselovalue.replace('~',',');
  }
      oselovalue=' ';
    }
    document.getElementById('inextis').value+=oselovalue; 
    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')) { 
    if (oselo.value.indexOf('-format pdf') != -1) {
      document.getElementById('myim').innerHTML+='<input type=hidden name=outpdf id=outpdf value=></input>';
  if (document.getElementById('gdopt')) {
    document.getElementById('gdopt').innerHTML+='&nbsp;&nbsp;' + oselovalue.replace('~',',');
  }
      oselovalue=' ';
    }
    document.getElementById('imqty').value+=oselovalue; 
    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')) {
    if (oselo.value.indexOf('-format pdf') != -1) {
      ate='<input type=hidden name=outpdf id=outpdf value=></input>';
  if (document.getElementById('gdopt')) {
    document.getElementById('gdopt').innerHTML+='&nbsp;&nbsp;' + oselovalue.replace('~',',');
  }
      oselovalue=' ';
    }
    document.getElementById('myim').innerHTML='<span id=smyim title=Application onclick=applyto(); style=cursor:pointer;text-decoration:underline;>ImageMagick switches: </span><input id=imqty name=imqty type=text style=display:inline-block; value=\"' + oselovalue + '\"></input>' + ate;
    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 (tis.id == 'slideshow') {
    if (tval != '') { document.getElementById('dvif').innerHTML='<iframe style=display:none; src=./exif_rotation_check.php?imagetocheck=' + encodeURIComponent(tval.split('#')[0]) + '></iframe>';    }
  }
  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 checkpdfproposed(iois) {
  if (iois.src.indexOf('.pdf') != -1) {
  if (iois != null) {
    var aconto = (iois.contentWindow || iois.contentDocument);
    if (aconto != null) {
     if (aconto.document) { aconto = aconto.document; }
     if (aconto.body != null) {
       if (aconto.body.innerHTML.indexOf('>Not found') == -1) {
         //ginduri=aconto.body.innerHTML;
         setTimeout(preemailhtmlit, 8000); //alert(aconto.body.innerHTML);
       }
     }
    }
  }
  }
}

function preemailhtmlit() {
  ginduri=' '; // 'found';
}

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);
   }
}
function applyto() {
  var huhto='';
  if (document.getElementById('gdopt').innerHTML.indexOf('-format pdf') != -1) {
  huhto=prompt('Apply ImageMagick and/or GD to which slides, in comma separated list, counting starting with 1, or enter email address to attach PDF for?  Defaults to applying to all slides.  Comma delimit.  Negatives mean all but.  Ranges can be specified.  For example ... 2,4-7,9', document.getElementById('appliedto').value);
  } else {
  huhto=prompt('Apply ImageMagick and/or GD to which slides, in comma separated list, counting starting with 1, or enter PDF for that output as well?  Defaults to applying to all slides.  Comma delimit.  Negatives mean all but.  Ranges can be specified.  For example ... 2,4-7,9', document.getElementById('appliedto').value);
  }
  if (huhto == null) { huhto=''; }
  if (huhto.indexOf('@') != -1 && document.getElementById('outpdf')) {
    document.getElementById('outpdf').value=huhto;
  } else if (huhto.trim().toLowerCase() == 'pdf') {
    document.getElementById('myim').innerHTML+='<input type=hidden name=outpdf id=outpdf value=></input>';
  } else if (huhto.trim() == '') {
    document.getElementById('appliedto').value='';
    document.getElementById('smyim').title='Application';
  } else {
    document.getElementById('appliedto').value=huhto.trim();
    document.getElementById('smyim').title=huhto.trim();
  }
}

function emailhtmlit() {
 var induri=ginduri;
 var pemail='" . urldecode($_GET['outpdf']) . urldecode($_POST['outpdf']) . "';
 if (pemail != null) {
   if (pemail.indexOf('@') != -1) {
   if (induri.trim() == '') {
   if (induri == '') {
   document.getElementById('pdfproposed').src='./animegif.pdf?rand=' + Math.floor(Math.random() * 19854654);
   } else {
   ginduri='found';
   }
   setTimeout(emailhtmlit, 15000);
   } else {
   ginduri='';
  var zhr = new XMLHttpRequest();
  var zform=new FormData();
  zform.append('to', pemail);
  zform.append('inline', '" . dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif.pdf" . "');
  zform.append('subj', 'My PDF version of Animated GIF via RJM Programming ... ');
  zform.append('tdhuhta', ('<body><object style=\"width:100%;height:900px;\" type=\"application/pdf\" data=\"" . dirname(__FILE__) . DIRECTORY_SEPARATOR . 'animegif.pdf' . "\"></object></body>'));
  zhr.open('post', '//www.rjmprogramming.com.au/HTMLCSS/emailhtml.php', true);
  zhr.send(zform);
  }
   }
 }
}
setTimeout(startmonitoringwh, 3000);
setTimeout(emailhtmlit, 5000);
</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><input type=hidden value='' id=appliedto name=appliedto></input><div id=myim" . $cssinitim . "><span id=smyim title=Application onclick=applyto(); style=cursor:pointer;text-decoration:underline;>" . $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-->
<div id=dvif style=display:none;></div>
<iframe id=pdfproposed style='display:none;' onload='checkpdfproposed(this);' src=></iframe>
</body>
</html>";

//}

if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . "animeJUNKgif.pdf")) {
  $xxx=rand(0, 178654356);
  rename(dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif.pdf", dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif" . $xxx . ".pdf");
  sleep(30);
  if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif" . $xxx . ".pdf")) {
    unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . "animegif" . $xxx . ".pdf");
  }
}

?>
