{"id":68630,"date":"2025-06-09T03:01:00","date_gmt":"2025-06-08T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=68630"},"modified":"2025-06-09T11:26:40","modified_gmt":"2025-06-09T01:26:40","slug":"image-flipping-or-flopping-at-speed-sharing-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-sharing-tutorial\/","title":{"rendered":"Image Flipping or Flopping at Speed Sharing Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image Flipping or Flopping at Speed Sharing Tutorial\" src=\"\/image_flipping_or_flopping_at_speed_share.gif\" title=\"Image Flipping or Flopping at Speed Sharing Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image Flipping or Flopping at Speed Sharing Tutorial<\/p><\/div>\n<p>To value add with a web application, further to yesterday&#8217;s <a title='Image Flipping or Flopping at Speed Browsing Tutorial' href='#iffsbt'>Image Flipping or Flopping at Speed Browsing Tutorial<\/a>, we see it as important to get to a point where you can broach that big philosophical question &#8230;<\/p>\n<blockquote><p>\nDo you see what I see?\n<\/p><\/blockquote>\n<p> &#8230; and the most approachable way we know to attempt this is to allow an &#8230;<\/p>\n<ul>\n<li>email &#8230; or &#8230;<\/li>\n<li>SMS<\/li>\n<\/ul>\n<p> &#8230; recipient be able to click a link within an email or SMS, and recreate a lot of what the originator is trying to convey, information wise.<\/p>\n<p>To do this, we use &#8230;<\/p>\n<ul>\n<li>&#8220;a&#8221; href=&#8221;mailto:[EmailAddress]?subject=<font size=2>Image%20Flip%20or%20Flop<\/font>&#038;body=<font size=1>encodeURIComponent<\/font>(<font size=1>originator<\/font>URL<font size=1>simulatingCurrentLook<\/font>)&#8221;<\/li>\n<li>&#8220;a&#8221; href=&#8221;sms:[SMSnumber]&#038;body=<font size=1>encodeURIComponent<\/font>(<font size=1>originator<\/font>URL<font size=1>simulatingCurrentLook<\/font>)&#8221; &#8230; or &#8230;<\/li>\n<\/ul>\n<p> &#8230; elements constructed on the fly via the user press of <font color=blue>two new buttons<\/font> presented (within the Javascript script element&#8217;s document.write clause) &#8230;<\/p>\n<p>&lt;script type=text\/javascript&gt;<br \/>\n<code><br \/>\n<font size=1> document.write(' blah blah blah <\/font>&lt;br&gt;&lt;br&gt;<font color=purple>Show Axis &lt;input id=axchk type=checkbox onchange=changeax(this); ' + (showax == true ? 'checked' : '') + '&gt;&lt;\/input&gt;<\/font>&nbsp;&nbsp;<font color=blue>&lt;button onclick=\" doemail(); \" id=\"butemail\"&gt;Email &amp;#128231;&lt;\/button&gt;&nbsp;&nbsp;&lt;button onclick=\" dosms(); \" id=\"butsms\"&gt;SMS &amp;#128223;&lt;\/button&gt;<\/font>&lt;br&gt;&lt;br&gt; <font size=1>blah blah blah ');<\/font><br \/>\n<\/code><br \/>\n&lt;\/script&gt;<\/p>\n<p> &#8230; via &#8230;<\/p>\n<p><code><br \/>\n  function constructahref() {<br \/>\n    var phrefis=document.URL.split('?')[0].split('#')[0];<br \/>\n    phrefis+='?radius=' + encodeURIComponent('' + brad) + '&rpm=' + encodeURIComponent('' + rpm) + '&transform=' + encodeURIComponent(document.getElementById('sforf').value) + '&axis=' + (showax == true ? 'y' : 'n') + '&#url=' + (theimgurl == 'http:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg' ? '' : encodeURIComponent(document.getElementById('myimg').src));<br \/>\n    return phrefis;<br \/>\n  }<br \/>\n<br \/> <br \/>\n  function doemail() {<br \/>\n    var anchor=null;<br \/>\n    var emis=prompt('Please enter email address to send to.', '');<br \/>\n    if (emis == null) { emis=''; }<br \/>\n    if (emis.indexOf('@') != -1) {<br \/>\n                anchor = document.createElement('a');<br \/>\n                anchor.href = 'mailto:' + emis.trim() + '?subject=My%20Flip%20or%20Flop&body=' + encodeURIComponent(constructahref());<br \/>\n                anchor.style.display='none';<br \/>\n                document.body.appendChild(anchor);<br \/>\n                anchor.innerHTML='Email';<br \/>\n                anchor.target='_top';<br \/>\n                anchor.click();<br \/>\n     <br \/> <br \/>\n    } else if (emis.trim() != '' && emis.trim().replace(\/0\/g,'').replace(\/1\/g,'').replace(\/2\/g,'').replace(\/3\/g,'').replace(\/4\/g,'').replace(\/5\/g,'').replace(\/6\/g,'').replace(\/7\/g,'').replace(\/8\/g,'').replace(\/9\/g,'') == '') {<br \/>\n                anchor = document.createElement('a');<br \/>\n                anchor.href = 'sms:' + emis.trim() + '&body=' + encodeURIComponent(constructahref());<br \/>\n                anchor.style.display='none';<br \/>\n                anchor.innerHTML='SMS';<br \/>\n                anchor.target='_top';<br \/>\n                anchor.click();<br \/>\n    }<br \/>\n  }<br \/>\n  <br \/>\n  function dosms(){<br \/>\n    var anchor=null;<br \/>\n    var emis=prompt('Please enter SMS number to send to.', '');<br \/>\n    if (emis == null) { emis=''; }<br \/>\n    if (emis.indexOf('@') != -1) {<br \/>\n                anchor = document.createElement('a');<br \/>\n                anchor.href = 'mailto:' + emis.trim() + '?subject=My%20Flip%20or%20Flop&body=' + encodeURIComponent(constructahref());<br \/>\n                anchor.style.display='none';<br \/>\n                document.body.appendChild(anchor);<br \/>\n                anchor.innerHTML='Email';<br \/>\n                anchor.target='_top';<br \/>\n                anchor.click();<br \/>\n     <br \/> <br \/>\n    } else if (emis.trim() != '' && emis.trim().replace(\/0\/g,'').replace(\/1\/g,'').replace(\/2\/g,'').replace(\/3\/g,'').replace(\/4\/g,'').replace(\/5\/g,'').replace(\/6\/g,'').replace(\/7\/g,'').replace(\/8\/g,'').replace(\/9\/g,'') == '') {<br \/>\n                anchor = document.createElement('a');<br \/>\n                anchor.href = 'sms:' + emis.trim() + '&body=' + encodeURIComponent(constructahref());<br \/>\n                anchor.style.display='none';<br \/>\n                anchor.innerHTML='SMS';<br \/>\n                anchor.target='_top';<br \/>\n                anchor.click();<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p>So what is the point of <font color=purple>the new checkbox<\/font>?  Well, that involves some aesthetic display work involving a <font color=blue>new horizontal rule ( ie. hr &lt;hr id=myhr style=display:none;z-index:-1;transform:rotate(90deg);overflow:visible;&gt;&lt;\/hr&gt; ) element we use to approximate<\/font> the axis around which the Flip or Flop (of the image) is taking place &#8230;<\/p>\n<p><code><br \/>\n  <font color=blue>var iw=0, ih=0;<br \/>\n  var showax=(location.search + ('' + location.hash).replace(\/^null\/g,'').replace(\/^undefined\/g,'').replace(\/^\\#\/g,'&')).split('axis=')[1] ? ((decodeURIComponent((location.search + ('' + location.hash).replace(\/^null\/g,'').replace(\/^undefined\/g,'').replace(\/^\\#\/g,'&')).split('axis=')[1].split('&')[0])).toLowerCase().indexOf('y') == 0 ? true : false) : true;<br \/>\n<\/font><br \/>\n<br \/> <br \/>\n  function changef(tbo) {<br \/>\n    if (tbo.value.toLowerCase() == 'flip') {<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     sxis=1.0,<br \/>\n     syis=0.0;<br \/>\n    <font color=blue>document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(90deg)';<\/font><br \/>\n    } else if (tbo.value.toLowerCase() == 'flop') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.0,<br \/>\n     syis=1.0;<br \/>\n    <font color=blue>document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(30 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + ih) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px'; \/\/ + eval(eval('' + eval(10 + eval('' + iw))) \/ 2) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(0deg)';<\/font><br \/>\n    } else if (tbo.value.toLowerCase() == 'flipflop') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.1,<br \/>\n     syis=0.0;<br \/>\n     ffnum=0;<br \/>\n    <font color=blue>document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(90deg)';<\/font><br \/>\n    } else if (tbo.value.toLowerCase() == 'flopflip') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.0,<br \/>\n     syis=0.1;<br \/>\n     ffnum=0;<br \/>\n    <font color=blue>document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(90deg)';<\/font><br \/>\n    }<br \/>\n  }<br \/>\n<br \/>\n  function doanim() {<br \/>\n    if (Math.abs(sxis) &gt; 0.5) {<br \/>\n      sxis=eval(-1.0 * sxis);<br \/>\n      imgo.style.transform='scaleX(' + sxis + ')';<br \/>\n    } else if (Math.abs(syis) &gt; 0.5) {<br \/>\n      syis=eval(-1.0 * syis);<br \/>\n      imgo.style.transform='scaleY(' + syis + ')';<br \/>\n    } else if (Math.abs(sxis) &gt; 0.0) {<br \/>\n      imgo.style.transform=flipflops[ffnum];<br \/>\n      <font color=blue>if (flipflops[ffnum].indexOf('X(-') != -1) {<br \/>\n    document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(90deg)';<br \/>\n      } else if (flipflops[ffnum].indexOf('Y(-') != -1) {<br \/>\n    document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(30 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + ih) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px'; \/\/ + eval(eval('' + eval(10 + eval('' + iw))) \/ 2) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(0deg)';<br \/>\n      }<\/font><br \/>\n      ffnum++;<br \/>\n      if (ffnum &gt;= eval('' + flipflops.length)) {  ffnum=0; }<br \/>\n<br \/>\n    } else if (Math.abs(syis) &gt; 0.0) {<br \/>\n      imgo.style.transform=flopflips[ffnum];<br \/>\n      <font color=blue>if (flopflips[ffnum].indexOf('X(-') != -1) {<br \/>\n    document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(90deg)';<br \/>\n      } else if (flopflips[ffnum].indexOf('Y(-') != -1) {<br \/>\n    document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(30 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + ih) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px'; \/\/ + eval(eval('' + eval(10 + eval('' + iw))) \/ 2) + 'px';<br \/>\n    \/\/document.getElementById('myhr').style.backgroundColor='black';<br \/>\n    document.getElementById('myhr').style.transform='rotate(0deg)';<br \/>\n      }<\/font><br \/>\n      ffnum++;<br \/>\n      if (ffnum &gt;= eval('' + flopflips.length)) {  ffnum=0; }<br \/>\n    }<br \/>\n    setTimeout(doanim, Math.round(isecs * 1000));<br \/>\n  }<br \/>\n<br \/> <br \/>\n  function startanim(isio) {<br \/>\n    imgo=isio;<br \/>\n    iw=imgo.width;<br \/>\n    ih=imgo.height;<br \/>\n    if (!started) {<br \/>\n    setTimeout(doanim, Math.round(isecs * 1000));<br \/>\n    }<br \/>\n    started=true;<br \/>\n    var rectone=document.getElementById('rpm').getBoundingClientRect();<br \/>\n    var recttwo=document.getElementById('imgurl').getBoundingClientRect();<br \/>\n    var rectthree=document.getElementById('radius').getBoundingClientRect();<br \/>\n    document.getElementById('imgurl').style.width='' + eval(eval('' + rectone.right) - eval('' + recttwo.left)) + 'px';<br \/>\n    document.getElementById('radius').style.width='' + eval(eval('' + rectone.right) - eval('' + rectthree.left)) + 'px';<br \/>\n    if (dcbi == '') { dcbi=document.getElementById('divcbi').innerHTML; }<br \/>\n    <font color=blue>if (showax) {<br \/>\n    document.getElementById('myhr').style.display='block';<br \/>\n    } else {<br \/>\n    document.getElementById('myhr').style.display='none';<br \/>\n    }<br \/>\n    document.getElementById('myhr').style.position='absolute';<br \/>\n    document.getElementById('myhr').style.left='0px';<br \/>\n    document.getElementById('myhr').style.width='' + eval(10 + eval('' + Math.max(ih,iw))) + 'px';<br \/>\n    document.getElementById('myhr').style.height='20px';<br \/>\n    document.getElementById('myhr').style.top='' + eval(eval('' + iw) \/ 2) + 'px';<br \/>\n    document.getElementById('myhr').style.transformOrigin='' + eval(eval('' + eval(10 + eval('' + Math.max(ih,iw)))) \/ 2) + 'px 0px';<br \/>\n    document.getElementById('myhr').style.backgroundColor='rgba(127,127,127,0.7)';<br \/>\n    document.getElementById('myimg').style.zIndex='2';<br \/>\n    document.getElementById('myimg').style.marginTop='5px';<br \/>\n    document.getElementById('myimg').style.marginLeft='5px';<br \/>\n    document.getElementById('tdleft').style.marginRight='5px';<\/font><br \/>\n    \/\/alert('' + iw + '.' + ih);<br \/>\n    if (tis != 'flip') { changef(document.getElementById('sforf'));  }<br \/>\n    if (brad != '0') { brad='-999'; changeradius(document.getElementById('radius'));  }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; in <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html--GETME\" rel=\"noopener\">the modified<\/a> <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html--GETME\" rel=\"noopener\">third draft<\/a> <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\">Image Flipping or Flopping at Speed<\/a> web application you can try, for yourself, also, <a href='#iffid'>below<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-sharing-tutorial\/' rel=\"noopener\">Image Flipping or Flopping at Speed Sharing Tutorial<\/a>.<\/p-->\n<hr>\n<p id='iffsbt'>Previous relevant <a target=\"_blank\" title='Image Flipping or Flopping at Speed Browsing Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-browsing-tutorial\/' rel=\"noopener\">Image Flipping or Flopping at Speed Browsing Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image Flipping or Flopping at Speed Browsing Tutorial\" src=\"\/image_flipping_or_flopping_at_speed_more.gif\" title=\"Image Flipping or Flopping at Speed Browsing Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image Flipping or Flopping at Speed Browsing Tutorial<\/p><\/div>\n<p>We&#8217;ve thought of a few ways to improve on the work of yesterday&#8217;s <a title='Image Flipping or Flopping at Speed Primer Tutorial' href='#iffspt'>Image Flipping or Flopping at Speed Primer Tutorial<\/a>, they being &#8230;<\/p>\n<ul>\n<li><font size=1>onto yesterday&#8217;s <i>Image URL<\/i> means of addressing your image <\/font>today we allow for local file browsing of your image file (and transferred into the web application&#8217;s image contents via Javascript &#8230;<br \/>\n<code><br \/>\n  var imgo=null;<br \/>\n  var sxis=1.0, syis=0.0;<br \/>\n  var rpm=eval(300 \/ 10);<br \/>\n  var isecs=eval(30 \/ rpm);     \/\/ 0.1;<br \/>\n  var imagedurl='', theimgurl='http:\/\/www.rjmprogramming.com.au\/Android\/NalaLuna.jpg';<br \/>\n  var theclass=theimgurl.slice(-96).replace(\/\\:\/g,'!').replace(\/\\.\/g,'|'); \/\/'http!\/\/www.rjmprogramming.com.au\/Android\/NalaLuna|jpg';<br \/>\n  var dcbi='', started=false;<br \/>\n<br \/> <br \/>\n  function resultlook() {<br \/>\n    if (document.getElementById('result').innerHTML != '') {<br \/>\n       imagedurl=document.getElementById('result').innerHTML;<br \/>\n       document.getElementById('result').innerHTML='';<br \/>\n       theimgurl=imagedurl;<br \/>\n       theclass=theimgurl.slice(-96).replace(\/\\:\/g,'!').replace(\/\\.\/g,'|');<br \/>\n       document.getElementById('myimg').src=imagedurl;<br \/>\n       imgo=document.getElementById('myimg');<br \/>\n       document.getElementById('myimg').className=theclass;<br \/>\n       document.getElementById('imgurl').placeholder=imagedurl;<br \/>\n       document.getElementById('imgurl').title=imagedurl;<br \/>\n       document.getElementById('imgurl').value='';<br \/>\n       imagedurl='';<br \/>\n       document.getElementById('divcbi').innerHTML=dcbi;<br \/>\n    }<br \/>\n  }<br \/>\n<br \/> <br \/>\n  setInterval(resultlook, 5000);<br \/>\n<\/code><br \/>\n &#8230; teaming up with the HTML access to our inhouse local file browser &#8230;<br \/>\n<code><br \/>\n&lt;div id=divcbi style=display:inline-block;&gt;&lt;iframe scrolling=no frameborder=0 id=cbi data-accept=\"image\/*\" style=\"width:163px;height:228px;margin-top:-204px;display:inline-block;background-color:transparent;\" src=\"\/HTMLCSS\/client_browsing.htm?d=3121605626826&amp;wording=Allimages%20images%2E%20\"&gt;&lt;\/iframe&gt;&lt;\/div&gt;<br \/>\n<\/code><br \/>\n &#8230; allowing for the data URI to be gleaned this way)<\/li>\n<li>allow for a CSS border-radius property be applied to your image via &#8230;<br \/>\n<code><br \/>\n  var brad=\"0\";<br \/>\n  <br \/>\n  function changeradius(tbo) {<br \/>\n    if (eval('' + tbo.value) != brad) {<br \/>\n      brad=('' + tbo.value);<br \/>\n      document.getElementById('myimg').style.borderRadius='' + brad.trim().replace(\/px$\/g,'') + (brad.replace(\/0\/g,'').replace(\/1\/g,'').replace(\/2\/g,'').replace(\/3\/g,'').replace(\/4\/g,'').replace(\/5\/g,'').replace(\/6\/g,'').replace(\/7\/g,'').replace(\/8\/g,'').replace(\/9\/g,'').replace(\/px\/g,'').trim() == '' ? 'px' : '');<br \/>\n    }<br \/>\n  }<br \/>\n<\/code>\n<\/li>\n<li><font size=1>onto yesterday&#8217;s Flip and Flop transform options <\/font>today we add FlipFlop and FlopFlip options <font color=blue>this way<\/font> &#8230;<br \/>\n<code><br \/>\n  var ffnum=0;<br \/>\n  var flipflops=['scaleX(1) scaleY(1)','scaleX(-1) scaleY(1)','scaleX(-1) scaleY(-1)','scaleX(1) scaleY(-1)'];<br \/>\n  var flopflips=['scaleX(1) scaleY(1)','scaleX(1) scaleY(-1)','scaleX(-1) scaleY(-1)','scaleX(-1) scaleY(1)'];<br \/>\n<br \/> <br \/>\n  function doanim() {<br \/>\n    if (Math.abs(sxis) &gt; 0.5) {<br \/>\n      sxis=eval(-1.0 * sxis);<br \/>\n      imgo.style.transform='scaleX(' + sxis + ')';<br \/>\n    } else if (Math.abs(syis) &gt; 0.5) {<br \/>\n      syis=eval(-1.0 * syis);<br \/>\n      imgo.style.transform='scaleY(' + syis + ')';<br \/>\n    }<font color=blue> else if (Math.abs(sxis) &gt; 0.0) {<br \/>\n      imgo.style.transform=flipflops[ffnum];<br \/>\n      ffnum++;<br \/>\n      if (ffnum >= eval('' + flipflops.length)) {  ffnum=0; }<br \/>\n    } else if (Math.abs(syis) &gt; 0.0) {<br \/>\n      imgo.style.transform=flopflips[ffnum];<br \/>\n      ffnum++;<br \/>\n      if (ffnum >= eval('' + flopflips.length)) {  ffnum=0; }<br \/>\n    }<\/font><br \/>\n    setTimeout(doanim, Math.round(isecs * 1000));<br \/>\n  }<br \/>\n  <br \/>\n  function changef(tbo) {<br \/>\n    if (tbo.value.toLowerCase() == 'flip') {<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     sxis=1.0,<br \/>\n     syis=0.0;<br \/>\n    } else if (tbo.value.toLowerCase() == 'flop') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.0,<br \/>\n     syis=1.0;<br \/>\n    }<font color=blue> else if (tbo.value.toLowerCase() == 'flipflop') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.1,<br \/>\n     syis=0.0;<br \/>\n     ffnum=0;<br \/>\n    } else if (tbo.value.toLowerCase() == 'flopflip') {<br \/>\n     imgo.style.transform='scaleX(1)';<br \/>\n     imgo.style.transform='scaleY(1)';<br \/>\n     \/\/alert('here');<br \/>\n     sxis=0.0,<br \/>\n     syis=0.1;<br \/>\n     ffnum=0;<br \/>\n    }<\/font><br \/>\n  }<br \/>\n<\/code><br \/>\n &#8230; to add to the variety of display possibilities\n<\/li>\n<\/ul>\n<p> &#8230; in <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html-GETME\" rel=\"noopener\">a modified<\/a> <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html-GETME\" rel=\"noopener\">second draft<\/a> <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\">Image Flipping or Flopping at Speed<\/a> web application you can try, for yourself, also, <a href='#iffid'>below<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-browsing-tutorial\/' rel=\"noopener\">Image Flipping or Flopping at Speed Browsing Tutorial<\/a>.<\/p-->\n<hr>\n<p id='iffspt'>Previous relevant <a target=\"_blank\" title='Image Flipping or Flopping at Speed Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-primer-tutorial\/' rel=\"noopener\">Image Flipping or Flopping at Speed Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image Flipping or Flopping at Speed Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.gif\" title=\"Image Flipping or Flopping at Speed Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image Flipping or Flopping at Speed Primer Tutorial<\/p><\/div>\n<p>The &#8220;making of&#8221; the recent <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/select-multiple-webpage-palette-speech-bubble-swipe-tutorial' title='Select Multiple Webpage Palette Speech Bubble Swipe Tutorial' rel=\"noopener\">Select Multiple Webpage Palette Speech Bubble Swipe Tutorial<\/a> inspired us to start down the road of a new &#8230;<\/p>\n<blockquote><p>\nImage Flipping or Flopping at Speed\n<\/p><\/blockquote>\n<p> &#8230; web application.  At first, with it, we wondered, regarding our animation, whether we could &#8230;<\/p>\n<ul>\n<li>create &#8220;smoothed out&#8221; flipping or flopping scenarios via CSS keyframes and transition animations &#8230; or &#8230;<\/li>\n<li>use Javascript DOM<\/li>\n<\/ul>\n<p> &#8230; and sadly the &#8220;CSS keyframes and transition animations&#8221; is a &#8220;no go&#8221; for this project (ie. not every CSS property can be animated this way, as we have alluded to in the past).<\/p>\n<p>Never mind, today we supplied the starting three controls the user has, over to the right of their image &#8230;<\/p>\n<ol>\n<li>image URL (in textbox, in first draft) &#8230;<\/li>\n<li>toggling between Flip and Flop ability &#8230;<\/li>\n<li>revolutions per minute<\/li>\n<\/ol>\n<p> &#8230; settings in this <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html_GETME\" rel=\"noopener\">first draft<\/a> <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/image_flipping_or_flopping_at_speed.html\" rel=\"noopener\">Image Flipping or Flopping at Speed<\/a> web application you can try, for yourself, also, below &#8230;<\/p>\n<p><iframe id=iffid src=\"\/image_flipping_or_flopping_at_speed.html\" style=\"width:100%;height:9090px;\"><\/iframe><\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68499' onclick='var dv=document.getElementById(\"d68499\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/transform\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68499' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68506' onclick='var dv=document.getElementById(\"d68506\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/browse\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68506' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68630' onclick='var dv=document.getElementById(\"d68630\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/browse\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68630' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>To value add with a web application, further to yesterday&#8217;s Image Flipping or Flopping at Speed Browsing Tutorial, we see it as important to get to a point where you can broach that big philosophical question &#8230; Do you see &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/image-flipping-or-flopping-at-speed-sharing-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12,14,37],"tags":[5211,84,1798,1993,3531,1604,354,380,2223,2224,2770,590,652,4772,5213,997,5212,1133,1137,1159,1298,1319],"class_list":["post-68630","post","type-post","status-publish","format-standard","hentry","category-animation","category-elearning","category-event-driven-programming","category-tutorials","tag-animate","tag-animation-2","tag-border-radius","tag-browse","tag-browsing","tag-collaboration","tag-dom","tag-email","tag-flip","tag-flop","tag-horizontal-rule","tag-image","tag-javascript","tag-local-file","tag-local-file-browsing","tag-programming","tag-rpm","tag-share","tag-sharing","tag-sms","tag-transform","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68630"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=68630"}],"version-history":[{"count":11,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68630\/revisions"}],"predecessor-version":[{"id":68650,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68630\/revisions\/68650"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=68630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=68630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=68630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}