{"id":66802,"date":"2025-02-05T03:01:00","date_gmt":"2025-02-04T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=66802"},"modified":"2025-02-04T19:51:22","modified_gmt":"2025-02-04T09:51:22","slug":"google-chart-generic-background-image-modes-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-modes-tutorial\/","title":{"rendered":"Google Chart Generic Background Image Modes Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Modes Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/non_extension_image_modes.gif\" title=\"Google Chart Generic Background Image Modes Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Modes Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Google Chart Generic Background Image Outliers Tutorial' href='#gcgbiot'>Google Chart Generic Background Image Outliers Tutorial<\/a> shored up the relationships among four modes of use we consider relevant to our <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> interfacing PHP web applications &#8230;<\/p>\n<ul>\n<li>mobile app <i>webview<\/i> mode of use &#8230; always also &#8230;<\/li>\n<li>is mobile (platform) mode of use &#8230; the window.prompt overriding results in an HTML form element means of inputting user inputs &#8230;<\/li>\n<li>is non-mobile (platform) mode of use &#8230; the window.prompt overriding still calls on the Javascript native window.prompt means of inputting user inputs &#8230;<\/li>\n<li>is non-mobile &#8220;hybrid&#8221; (platform) mode of use &#8230; simulates <i>is mobile<\/i> so that the window.prompt overriding results in an HTML form element means of inputting user inputs<\/li>\n<\/ul>\n<p>That last mode definitely needed a bit of attention, and it&#8217;s talents have come in handy with an extra non-mobile piece of functionality we&#8217;ve worked on today.  We noticed with the <i>is mobile<\/i> mode of use if the user shapes to share or collaborate via email or SMS before all the input is entered the PHP web application would sent a communication to allow a recipient to &#8220;pick up, midstream&#8221; a user inputting sequence, and we thought &#8230;<\/p>\n<ol>\n<li>this was cute<\/li>\n<li>we&#8217;d like to make this possible for <i>is non-mobile<\/i> (platform) users &#8230; but the modal nature of native <i>window.prompt<\/i> is a limiting factor here<\/li>\n<\/ol>\n<p>For this <i>is non-mobile<\/i> native <i>window.prompt<\/i> scenario, rather than fight it&#8217;s modal talents we set up a <font color=blue>user tip<\/font> &#8230;<\/p>\n<p><code><br \/>\nvar midwayucon='';<br \/>\nvar midwayublurb='  <font color=blue>Suffix ? (email) or ?? (SMS) possible at any prompt<\/font> and ';<br \/>\nvar midwayuval='1';<br \/>\nvar bibits='';<br \/>\nvar firstdefwords='';<br \/>\nvar cmy=false;<br \/>\nvar duisa='';<br \/>\nvar lwo=null;<br \/>\n<\/code><\/p>\n<p> &#8230; and should the user take up this offer <font color=magenta>midair email<\/font> or <font color=purple>SMS<\/font> &#8230;<\/p>\n<p><code><br \/>\n  var colmode=0;<br \/>\n  var thisansis=originalWindowPrompt(zwords, defwords);<br \/>\n  if (thisansis != null) {<br \/>\n    if (thisansis.replace(\/\\?\\?$\/g,'') != thisansis) { \/\/ SMS<br \/>\n      colmode=2;<br \/>\n      if (midwayucon == '') {<br \/>\n        midwayucon='?nojwin=Q&OK=OK'<br \/>\n      }<br \/>\n      if (thisansis.replace(\/\\?\\?$\/g,'').trim() != '') { \/\/ SMS<br \/>\n        midwayucon=midwayucon.replace('&OK=OK', '&val' + midwayuval + '=' + encodeURIComponent(thisansis.replace(\/\\?\\?$\/g,'')) + '&OK=OK');<br \/>\n      }<br \/>\n      <font color=purple>var xais=document.createElement('a');<br \/>\n      xais.href='sms:&body=' + encodeURIComponent(document.URL.split('?')[0].split('#')[0] + '#nojwin=' + dummyencodeURIComponent(dummyencodeURIComponent(midwayucon.split('?nojwin=')[1] + bibits))).replace('bi=%20','bi=+');<br \/>\n      xais.innerHTML='';<br \/>\n      xais.style.display='none';<br \/>\n      xais.id='a' + midwayuval;<br \/>\n      xais.target='_top';<br \/>\n      if (thisansis.replace(\/\\?\\?$\/g,'').trim() == '') { \/\/ SMS<br \/>\n        if (midwayucon.indexOf('val1=') != -1) {<br \/>\n        if (firstdefwords != '' && decodeURIComponent(midwayucon.split('val1=')[1].split('&')[0].split('#')[0]) != firstdefwords) {<br \/>\n          xais.onclick=function(event){ lwo=window.open(document.URL.split('?')[0].split('#')[0] + '#nojwin=' + dummyencodeURIComponent(dummyencodeURIComponent(midwayucon.split('?nojwin=')[1] + bibits)).replace('bi=%20','bi=+'), '_blank'); };<br \/>\n        }<br \/>\n        }<br \/>\n        document.body.appendChild(xais);<br \/>\n        document.getElementById('a' + midwayuval).click();<\/font><br \/>\n        colmode=0;<br \/>\n        thisansis=originalWindowPrompt(zwords, '');<br \/>\n      } else {<br \/>\n        thisansis=thisansis.replace(\/\\?\\?$\/g,'');<br \/>\n      }<br \/>\n    } else if (thisansis.replace(\/\\?$\/g,'') != thisansis) { \/\/ email<br \/>\n      colmode=1;<br \/>\n      if (midwayucon == '') {<br \/>\n        midwayucon='?nojwin=Q&OK=OK'<br \/>\n      }<br \/>\n      if (thisansis.replace(\/\\?$\/g,'').trim() != '') { \/\/ email<br \/>\n        midwayucon=midwayucon.replace('&OK=OK', '&val' + midwayuval + '=' + encodeURIComponent(thisansis.replace(\/\\?$\/g,'')) + '&OK=OK');<br \/>\n      }<br \/>\n      <font color=magenta>var zais=document.createElement('a');<br \/>\n      zais.href='mailto:?subject=' + encodeURIComponent('Google Chart Entry Progress ...') + '&body=' + encodeURIComponent(document.URL.split('?')[0].split('#')[0] + '#nojwin=' + dummyencodeURIComponent(dummyencodeURIComponent(midwayucon.split('?nojwin=')[1] + bibits))).replace('bi=%20','bi=+');<br \/>\n      zais.innerHTML='';<br \/>\n      zais.style.display='none';<br \/>\n      zais.id='a' + midwayuval;<br \/>\n      zais.target='_top';<br \/>\n      if (thisansis.replace(\/\\?$\/g,'').trim() == '') { \/\/ email<br \/>\n        if (midwayucon.indexOf('val1=') != -1) {<br \/>\n        if (firstdefwords != '' && decodeURIComponent(midwayucon.split('val1=')[1].split('&')[0].split('#')[0]) != firstdefwords) {<br \/>\n          zais.onclick=function(event){ lwo=window.open(document.URL.split('?')[0].split('#')[0] + '#nojwin=' + dummyencodeURIComponent(dummyencodeURIComponent(midwayucon.split('?nojwin=')[1] + bibits)).replace('bi=%20','bi=+'), '_blank');  };<br \/>\n        }<br \/>\n        }<br \/>\n        document.body.appendChild(zais);<br \/>\n        document.getElementById('a' + midwayuval).click();<\/font><br \/>\n        colmode=0;<br \/>\n        thisansis=originalWindowPrompt(zwords, '');<br \/>\n      } else {<br \/>\n        thisansis=thisansis.replace(\/\\?$\/g,'');<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; squeezes in the communication (possibilities) before the next prompt, and, in true &#8220;collaboration style&#8221; &#8230;<\/p>\n<ul>\n<li>a recipient clicking the link of the communication message would see what &#8230;<\/li>\n<li>the sender&#8217;s user window is changed into &#8230; an <i>is non-mobile &#8220;hybrid&#8221; (platform) mode of use<\/i> window<\/li>\n<\/ul>\n<p> &#8230; allowing ideas to flow, we&#8217;re hoping!<\/p>\n<p>Codewise &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js------------------------------GETME\" rel=\"noopener\">the changed<\/a> generic <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js------------------------------GETME\" rel=\"noopener\">gchartgen.js<\/a><\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/gchartgen.js-------------GETME\" rel=\"noopener\">specific to Pie Charts, changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/gchartgen.js-------------GETME\" rel=\"noopener\">gchartgen.js<\/a><\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php---------------------------------------------------------GETME\" rel=\"noopener\">changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php---------------------------------------------------------GETME\" rel=\"noopener\">map.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\">Map Chart interfacing web application<\/a><\/li>\n<\/ul>\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\/google-chart-generic-background-image-modes-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Modes Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcgbiot'>Previous relevant <a target=\"_blank\" title='Google Chart Generic Background Image Outliers Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-outliers-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Outliers Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Outliers Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/non_extension_image_outliers.gif\" title=\"Google Chart Generic Background Image Outliers Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Outliers Tutorial<\/p><\/div>\n<p>Further to yesterday&#8217;s <a title='Google Chart Generic Background Image Mobile Tutorial' href='#gcgbimt'>Google Chart Generic Background Image Mobile Tutorial<\/a>&#8216;s background image functionality for our inhouse <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Charts<\/a> interfacing PHP web applications, it&#8217;s the non-generic <i>outliers<\/i> &#8230;<\/p>\n<ul>\n<li>Pie Chart <font size=1>&#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php----------------------------GETME\" rel=\"noopener\">changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php----------------------------GETME\" rel=\"noopener\">pie_chart.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" rel=\"noopener\">Pie Chart interfacing web application<\/a><\/font><\/li>\n<li>Map Chart <font size=1>&#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php--------------------------------------------------------GETME\" rel=\"noopener\">changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php--------------------------------------------------------GETME\" rel=\"noopener\">map.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\">Map Chart interfacing web application<\/a><\/font><\/li>\n<\/ul>\n<p> &#8230; we needed to merge in the relevant smarts of <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js-----------------------------GETME\" rel=\"noopener\">the changed<\/a> generic <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js-----------------------------GETME\" rel=\"noopener\">Javascript<\/a> into &#8230;<\/p>\n<ul>\n<li>Pie Chart&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/gchartgen.js------------GETME\" rel=\"noopener\">specific, changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/gchartgen.js------------GETME\" rel=\"noopener\">gchartgen.js<\/a><\/li>\n<li>Map Chart&#8217;s PHP writes Javascript code<\/li>\n<\/ul>\n<p>As well, before that, into the generic code, we made some styling improvements to hide some unnecessary elements for mobile platform usage, and improved form sizing to reduce the need for scrolling, as well as email and SMS conduit logic improvements.  We hope you enjoy trying out some of these PHP web applications with background images of your choosing.<\/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\/google-chart-generic-background-image-outliers-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Outliers Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcgbimt'>Previous relevant <a target=\"_blank\" title='Google Chart Generic Background Image Mobile Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-mobile-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Mobile Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/LineChart\/line_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Mobile Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/non_extension_image_mobile.jpg\" title=\"Google Chart Generic Background Image Mobile Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Mobile Tutorial<\/p><\/div>\n<p>We&#8217;re almost there amalgamating the new <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> interfacing web application background imaging functionality further to the day before yesterday&#8217;s <a title='Google Chart Generic Background Image Collaboration Tutorial' href='#gcgbict'>Google Chart Generic Background Image Collaboration Tutorial<\/a>.  Today&#8217;s part of the puzzle was dealing with &#8230;<\/p>\n<ul>\n<li>mobile platform window.prompt overridings for non Pie Chart Google Chart participants &#8230; to join &#8230;<\/li>\n<li>non-mobile platform window.prompt overridings for non Pie Chart Google Chart participants<\/li>\n<\/ul>\n<p> &#8230; that we&#8217;d been limiting our scope to up until today.  On mobile platforms we arrange for an overlaying HTML form to override the window.prompt, meaning webpage calls differ for each question asked of the user.  This asks for quite a difference architecture to our coding requirements.<\/p>\n<p>For this work, then <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js---------------------------GETME\" rel=\"noopener\">it involves changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js---------------------------GETME\" rel=\"noopener\">Javascript<\/a> &#8230;<\/p>\n<p><code><br \/>\nfunction postlhway() {<br \/>\n  var foundu='';<br \/>\n  var prefoundu='';<br \/>\n  if (bimode == -1) {<br \/>\n    if (document.getElementById('bkcol')) {<br \/>\n      if (('' + document.getElementById('bkcol').style.backgroundImage).toLowerCase().indexOf('url(') != -1) {<br \/>\n         foundu='' + ('' + document.getElementById('bkcol').style.backgroundImage).split('(')[eval(-1 + ('' + document.getElementById('bkcol').style.backgroundImage).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=2;<br \/>\n         prefoundu='+';<br \/>\n      }<br \/>\n    }<br \/>\n    if (bimode == -1) {<br \/>\n      if (('' + document.body.style.backgroundImage).toLowerCase().indexOf('url(') != -1) {<br \/>\n         foundu='' + ('' + document.body.style.backgroundImage).split('(')[eval(-1 + ('' + document.body.style.backgroundImage).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=1;<br \/>\n    if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n    } else {<br \/>\n      setInterval(function(){<br \/>\n      if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n      }<br \/>\n      }, 2000);<br \/>\n    }<br \/>\n      } else if (document.body.innerHTML.indexOf('&lt;style> body { background-image:') != -1) {<br \/>\n         foundu='' + ('' + document.body.innerHTML.split('&lt;style> body { background-image:')[1].split('}')[0]).split('(')[eval(-1 + ('' + document.body.innerHTML.split('&lt;style> body { background-image:')[1].split('}')[0]).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=1;<br \/>\n    if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n    } else {<br \/>\n      setInterval(function(){<br \/>\n      if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n      }<br \/>\n      }, 2000);<br \/>\n    }<br \/>\n       } else if (document.getElementById('bitsatend').innerHTML.indexOf('&lt;style> body { background-image:') != -1) {<br \/>\n         foundu='' + ('' + document.getElementById('bitsatend').innerHTML.split('&lt;style> body { background-image:')[1].split('}')[0]).split('(')[eval(-1 + ('' + document.getElementById('bitsatend').innerHTML.split('&lt;style> body { background-image:')[1].split('}')[0]).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=1;<br \/>\n    if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n    } else {<br \/>\n      setInterval(function(){<br \/>\n      if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n      }<br \/>\n      }, 2000);<br \/>\n    }<br \/>\n       } else if (document.getElementById('bitsatend').innerHTML.indexOf('&lt;style> #bkcol { background-image:') != -1) {<br \/>\n         foundu='' + ('' + document.getElementById('bitsatend').innerHTML.split('&lt;style> #bkcol { background-image:')[1].split('}')[0]).split('(')[eval(-1 + ('' + document.getElementById('bitsatend').innerHTML.split('&lt;style> #bkcol { background-image:')[1].split('}')[0]).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=2;<br \/>\n         prefoundu='+';<br \/>\n    if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n    } else {<br \/>\n      setInterval(function(){<br \/>\n      if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n      }<br \/>\n      }, 2000);<br \/>\n    }<br \/>\n     }<br \/>\n    }<br \/>\n  }<br \/>\n  if (foundu != '') {<br \/>\n    if (document.getElementById('remail')) {<br \/>\n    if (document.getElementById('remail').href.indexOf(encodeURIComponent('bi=')) == -1) {<br \/>\n      if (document.getElementById('remail').href.indexOf(encodeURIComponent('#')) != -1 && document.getElementById('remail').href.indexOf(encodeURIComponent('&')) != -1) {<br \/>\n      if (3 == 3) {<br \/>\n      document.getElementById('remail').href+='' + encodeURIComponent('&#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href+='' + encodeURIComponent('&#bi=') + prefoundu + encodeURIComponent(foundu);<br \/>\n      }<br \/>\n      } else {<br \/>\n      document.getElementById('remail').href=document.getElementById('remail').href.replace(encodeURIComponent('&'), encodeURIComponent('&bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href=document.getElementById('rsms').href.replace(encodeURIComponent('&'), encodeURIComponent('&bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      }<br \/>\n      }<br \/>\n      } else if (document.getElementById('remail').href.indexOf(encodeURIComponent('#')) != -1) {<br \/>\n      document.getElementById('remail').href=document.getElementById('remail').href.replace(encodeURIComponent('#'), encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href=document.getElementById('rsms').href.replace(encodeURIComponent('#'), encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      }<br \/>\n      } else {<br \/>\n      document.getElementById('remail').href+='' + encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href+='' + encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      }<br \/>\n      }<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction saveprompt() {<br \/>\n  if (document.getElementById('prompt')) {<br \/>\n  titlezwords=document.getElementById('prompt').value;<br \/>\n  titleywords=document.getElementById(titleid).value;<br \/>\n  setTimeout(function(){<br \/>\n    if (document.getElementById('prompt').value.trim() == '' && titlezwords.trim() != '') {<br \/>\n      document.getElementById('prompt').value=titlezwords;<br \/>\n      if (document.getElementById(titleid)) {<br \/>\n      if (document.getElementById(titleid).value.trim() == '') {<br \/>\n      document.getElementById(titleid).value=titleywords;<br \/>\n      }<br \/>\n      }<br \/>\n    }<br \/>\n  }, 2000);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction whiletitlethere() {<br \/>\n   if (document.getElementById('prompt')) {<br \/>\n    if (document.getElementById('prompt').value.trim() == '' && titlezwords.trim() != '') {<br \/>\n      document.getElementById('prompt').value=titlezwords;<br \/>\n      if (document.getElementById(titleid)) {<br \/>\n      if (document.getElementById(titleid).value.trim() == '') {<br \/>\n      document.getElementById(titleid).value=titleywords;<br \/>\n      }<br \/>\n      }<br \/>\n      titlezwords=' ';<br \/>\n    }<br \/>\n   }<br \/>\n   if (titlezwords != '') {<br \/>\n     setTimeout(whiletitlethere, 2000);<br \/>\n   }<br \/>\n}<br \/>\n<br \/>\n function wtitlethere() {<br \/>\n    if (document.getElementById('prompt')) {<br \/>\n     if (document.getElementById('prompt').value.trim() == '' && titlezwords.trim() != '') {<br \/>\n       document.getElementById('prompt').value=titlezwords;<br \/>\n       if (document.getElementById(titleid)) {<br \/>\n       if (document.getElementById(titleid).value.trim() == '') {<br \/>\n       document.getElementById(titleid).value=titleywords;<br \/>\n       }<br \/>\n       }<br \/>\n       titlezwords=' ';<br \/>\n     }<br \/>\n    }<br \/>\n    if (titlezwords != '') {<br \/>\n      setTimeout(wtitlethere, 2000);<br \/>\n    }<br \/>\n }<br \/>\n<br \/>\nfunction lhway() {<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var dotis='.';<br \/>\n  var thisansis='';<br \/>\n  if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= ') != -1) {<br \/>\n     thisansis=' ' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').split('bi= ')[1].split('#')[0].split('&')[0];<br \/>\n  } else if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi=') != -1) {<br \/>\n     thisansis='' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').split('bi=')[1].split('#')[0].split('&')[0];<br \/>\n  }<br \/>\n  \/\/alert('thisansis=' + thisansis);<br \/>\n  if (thisansis.replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1) {<br \/>\n    if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n    } else {<br \/>\n      setInterval(function(){<br \/>\n      if (document.getElementById('iagc')) {<br \/>\n      document.getElementById('iagc').style.width='1px';<br \/>\n      document.getElementById('iagc').style.height='1px';<br \/>\n      }<br \/>\n      }, 2000);<br \/>\n    }<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) >= 5) {<br \/>\n       if (outofansgoes == '' && thisansis.replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd].replace(\/\\%3F\/g,'?').replace(\/\\%26\/g,'&');<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n         setTimeout(function(){ document.getElementById('chart_div').style.opacity='0.8';  }, 4000);<br \/>\n       } else if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg>') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (thisansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     \/\/alert('modespace=#' + modespace + '# and thisansis=#' + thisansis + '# and outofansgoes=#' + outofansgoes + '#' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= '));<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  setInterval(postlhway, 3000);<br \/>\n}<br \/>\n<br \/>\nif (document.URL.indexOf('nojwin') == -1 && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n       zgxhr = new XMLHttpRequest();<br \/>\n       zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n       zgxhr.send(null);<br \/>\n}<br \/>\n<br \/>\nif (document.URL.indexOf('nojwin') == -1) { \/\/ || navigator.userAgent.match(\/iPhone|iPad\/i)) {<br \/>\nif (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\nconst originalWindowPrompt = window.prompt;  \/\/ thanks to https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality<br \/>\n<br \/>\nwindow.prompt = function(zwords, defwords){<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var fauxv='';<br \/>\n  var dotis='youllneverfindthis';<br \/>\n  var datetosubfor='youllneverfindthis';<br \/>\n  var zwis=eval('' + zwords.toLowerCase().indexOf(' data ur'));<br \/>\n  var ztis=eval('' + zwords.toLowerCase().indexOf(' title '));<br \/>\n  if (ztis != -1) {<br \/>\n     dotis='.';<br \/>\n     moneis=zwis;<br \/>\n     zgxhr = new XMLHttpRequest();<br \/>\n     zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n     zgxhr.send(null);<br \/>\n  } else {<br \/>\n     fauxv='stopregex';<br \/>\n  }<br \/>\n  if (zwords.indexOf('Enter ') == 0 && zwords.toLowerCase().indexOf(' title ') != -1 && zwords.replace('background image URL or background image data URI ; separated (followed by ;) before title are available options, and ','').toLowerCase().indexOf(' data ur') == -1) {<br \/>\n    zwords=zwords.replace('background image URL or background image data URI ; separated (followed by ;) before title are available options, and ','');<br \/>\n    zwords+='  ... body background image data URIs, delimited by space or &lt;\/svg>, or image URL plus space, will be recognized, prefixed by a space to apply on repeat to chart background (just YYYYMMDD uses this blog tutorial image that day, if first Y is 1 we randomize via Lorem Picsum at https:\/\/picsum.photos\/ thanks) ';<br \/>\n  }<br \/>\n  var thisansis=originalWindowPrompt(zwords, defwords);<br \/>\n  if (thisansis == null) { return null;  }<br \/>\n  if (ztis != -1) {<br \/>\n    if (thisansis.replace(\/^[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(0,8);<br \/>\n    } else if (thisansis.replace(\/^\\ [2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      if (eval('' + datetosubfor) &lt; 20110314) {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n      } else {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=' + datetosubfor + '&random=' + Math.floor(Math.random() * 19896754));<br \/>\n      }<br \/>\n    } else {<br \/>\n    if (thisansis.replace(\/^[0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(0,8);<br \/>\n    } else if (thisansis.replace(\/^\\ [0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  if ((fauxv + thisansis).replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) >= 5) {<br \/>\n       if (outofansgoes == '' && (fauxv + thisansis).replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       } else {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg>') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (thisansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  return thisansis;<br \/>\n};<br \/>\n}<br \/>\n} else if (document.URL.indexOf('nojwin') != -1) { \/\/ || navigator.userAgent.match(\/iPhone|iPad\/i)) {<br \/>\n<br \/>\n   if (('' + location.search).indexOf('&val1=') != -1) {<br \/>\n    console.log('document.URL=' + document.URL);<br \/>\n    try {<br \/>\n     if (window.parent) {<br \/>\n     parent.title=decodeURIComponent(decodeURIComponent(location.search.split('val1=')[1].split('&')[0]).replace(\/\\+\/g,' '));<br \/>\n     console.log('parent.title=' + parent.title);<br \/>\n     if (parent.title.indexOf('\/\/picsum.photos\/600\/400\/?random=') != -1) {  \/\/ ?random=yyyymmdd<br \/>\n       parent.title=parent.title.replace('\/\/picsum.photos\/600\/400\/?random=','');<br \/>\n     console.log('Parent.title=' + parent.title);<br \/>\n       parent.location.href=document.URL.replace(encodeURIComponent(encodeURIComponent('\/\/picsum.photos\/600\/400\/?random=')),'');<br \/>\n     }<br \/>\n     }<br \/>\n     title=decodeURIComponent(decodeURIComponent(location.search.split('val1=')[1].split('&')[0]).replace(\/\\+\/g,' '));<br \/>\n     console.log('title=' + title);<br \/>\n     if (title.indexOf('\/\/picsum.photos\/600\/400\/?random=') != -1) {  \/\/ ?random=yyyymmdd<br \/>\n       \/\/title=title.split('\/\/picsum.photos\/600\/400\/?random=')[1].substring(8);<br \/>\n       title=title.replace('\/\/picsum.photos\/600\/400\/?random=','');<br \/>\n     console.log('Title=' + title);<br \/>\n     }<br \/>\n    } catch(hgrh) {  }<br \/>\n   }<br \/>\n   <br \/>\n  var prompt = function(zwords, defwords){<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var fauxv='';<br \/>\n  var dotis='youllneverfindthis';<br \/>\n  var datetosubfor='youllneverfindthis';<br \/>\n  var zwis=eval('' + zwords.toLowerCase().indexOf(' data ur'));<br \/>\n  var ztis=eval('' + zwords.toLowerCase().indexOf(' title '));<br \/>\n       if (document.getElementById('val1')) {<br \/>\n          document.getElementById('val1').onblur=function(evt){<br \/>\n          \/\/document.getElementById('OK').disable=true;<br \/>\n          console.log('at onblur');<br \/>\n          ansis='' + evt.target.value;<br \/>\n          console.log('at onblur ansis=' + ansis + ' ztis=' + ztis);<br \/>\n          oansis=ansis;<br \/>\n          console.log('aT onblur ansis=' + ansis + ' ztis=' + ztis);<br \/>\n  \/\/ Start of new mobile ...<br \/>\n  if (ztis != -1 || 1 == 1) {<br \/>\n          console.log('AT onblur ansis=' + ansis + ' ztis=' + ztis);<br \/>\n    if (ansis.replace(\/^[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n          console.log('at onblur ansis=' + ansis + ' datetosubfor=' + datetosubfor);<br \/>\n    } else if (ansis.replace(\/^\\ [2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n          console.log('at onBlur ansis=' + ansis + ' datetosubfor=' + datetosubfor);<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n          console.log('at onBLur ansis=' + ansis + ' datetosubfor=' + datetosubfor);<br \/>\n      if (eval('' + datetosubfor) &lt; 20110314) {<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n      } else {<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=' + datetosubfor + '&random=' + Math.floor(Math.random() * 19896754));<br \/>\n      }<br \/>\n          console.log('at onbluR ansis=' + ansis + ' ztis=' + ztis);<br \/>\n    } else {<br \/>\n    if (ansis.replace(\/^[0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n          console.log('at onblur ansis=' + ansis + ' datetosubFor=' + datetosubfor);<br \/>\n    } else if (ansis.replace(\/^\\ [0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n          console.log('at onblur ansis=' + ansis + ' datetosubfoR=' + datetosubfor);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n          console.log('at onblur ansIs=' + ansis + ' datetosubfoR=' + datetosubfor);<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n          console.log('at onblur ansIS=' + ansis + ' datetosubfoR=' + datetosubfor);<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  if ((fauxv + ansis).replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n          console.log('at onblur Ansis=' + ansis + ' Ztis=' + ztis);<br \/>\n    if (ansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=ansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) >= 5) {<br \/>\n       if (outofansgoes == '' && (fauxv + ansis).replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       } else {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (ansis.indexOf(';utf8,') != -1 && ansis.indexOf('&lt;\/svg>') != -1) {<br \/>\n     outofansgoes='data' + ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>';<br \/>\n     if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + ansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n          console.log('at onblur Ansis=' + ansis + ' ZTis=' + ztis + ' outofansgoes=' + outofansgoes);<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (ansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n          console.log('at onblur again ansis=' + ansis);<br \/>\n     ansis=ansis.replace(outofansgoes, '');<br \/>\n          console.log('at onblur again after replace ansis=' + ansis);<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n          console.log('at onblur again after replace new');<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      if (newoutofansgoes.indexOf('\/\/') != -1 && newoutofansgoes.indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes.split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes)) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      console.log('Here ' + newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n          console.log('at onblur again after replace not new');<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      if (outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('\/\/') != -1 && outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'))) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      console.log('here ' + outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n          console.log('at onblur open');<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n          console.log('at onblur send');<br \/>\n     gxhr.send(gform);<br \/>\n          console.log('at onblur sent');<br \/>\n    }<br \/>\n  }<br \/>\n  if (ansis != oansis) { gansis=ansis; console.log('gansis=' + gansis); evt.target.value=ansis; document.getElementById('hval1').value=encodeURIComponent(ansis); console.log('safariform is ' + document.getElementById('safariform').outerHTML);  setTimeout(function(){ document.getElementById('val1').value=gansis;  if (1 == 2) { document.getElementById('OK').disable=false; document.getElementById('OK').click(); } }, 5000); return true; }<br \/>\n  \/\/ End of new mobile ...<br \/>\n            return true;<br \/>\n          };<br \/>\n       }<br \/>\n  if (ztis != -1) {<br \/>\n     dotis='.';<br \/>\n     moneis=zwis;<br \/>\n     if (document.URL.indexOf('&') == -1) {<br \/>\n     \/\/setTimeout(function() {<br \/>\n       zgxhr = new XMLHttpRequest();<br \/>\n       zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n       zgxhr.send(null);<br \/>\n     \/\/}, 5000);<br \/>\n     }<br \/>\n  } else {<br \/>\n     fauxv='stopregex';<br \/>\n  }<br \/>\n  if (zwords.indexOf('Enter ') == 0 && zwords.toLowerCase().indexOf(' title ') != -1 && zwords.replace('background image URL or background image data URI ; separated (followed by ;) before title are available options, and ','').toLowerCase().indexOf(' data ur') == -1) {<br \/>\n    zwords=zwords.replace('background image URL or background image data URI ; separated (followed by ;) before title are available options, and ','');<br \/>\n    zwords+='  ... body background image data URIs, delimited by space or &lt;\/svg>, or image URL plus space, will be recognized, prefixed by a space to apply on repeat to chart background (just YYYYMMDD uses this blog tutorial image that day, if first Y is 1 we randomize via Lorem Picsum at https:\/\/picsum.photos\/ thanks) ';<br \/>\n  }<br \/>\n<br \/>\n   var vcancel='';<br \/>\n   var vok='';<br \/>\n   var ansis=location.search.split('val' + pnum + '=')[1] ? decodeURIComponent(decodeURIComponent(location.search.split('val' + pnum + '=')[1].split('&')[0]).replace(\/\\+\/g,' ')) : '';<br \/>\n   if (('' + location.search).indexOf('&val1=') != -1) {<br \/>\n    try {<br \/>\n     if (window.parent) {<br \/>\n     parent.title=decodeURIComponent(decodeURIComponent(location.search.split('val1=')[1].split('&')[0]).replace(\/\\+\/g,' '));<br \/>\n     if (parent.title.indexOf('\/\/picsum.photos\/600\/400\/?random=') != -1) {  \/\/ ?random=yyyymmdd<br \/>\n       parent.title=parent.title.split('\/\/picsum.photos\/600\/400\/?random=')[1].substring(8);<br \/>\n     }<br \/>\n     }<br \/>\n     title=decodeURIComponent(decodeURIComponent(location.search.split('val1=')[1].split('&')[0]).replace(\/\\+\/g,' '));<br \/>\n     if (title.indexOf('\/\/picsum.photos\/600\/400\/?random=') != -1) {  \/\/ ?random=yyyymmdd<br \/>\n       title=title.split('\/\/picsum.photos\/600\/400\/?random=')[1].substring(8);<br \/>\n     }<br \/>\n    } catch(hgrh) {  }<br \/>\n   }<br \/>\n<br \/>\n   titlezwords=zwords;<br \/>\n   titleywords=defwords;<br \/>\n   titleid='val' + pnum;<br \/>\n\/\/if (!navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n\/\/setTimeout(wtitlethere, 1000);<br \/>\n\/\/}<br \/>\n   if (45 == 67) {<br \/>\n   \/\/if (4 == 44) {<br \/>\n   \/\/setTimeout(wtitlethere, 1000);<br \/>\n   \/\/} else {<br \/>\n   if (zwords.toLowerCase().indexOf(' title ') != -999 && titlezwords.replace('  ',' ') == ' ') {<br \/>\n        if (titlezwords.replace('  ',' ') == ' ') { setTimeout(whiletitlethere, 1000); }<br \/>\n        titlezwords=zwords;<br \/>\n        titleywords=defwords;<br \/>\n        titleid='val' + pnum;<br \/>\n   } else { \/\/if (zwords.toLowerCase().indexOf(' title ') == -1) {<br \/>\n        titlezwords=' ';<br \/>\n        titleywords='';<br \/>\n   }<br \/>\n   \/\/}<br \/>\n   }<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') == -1) ansis=null;<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') != -1 && pnum == eval(-1 + xpnum)) {<br \/>\n     vcancel=location.search.split('Cancel=')[1] ? location.search.split('Cancel=')[1].split('&')[0] : '';<br \/>\n     vok=location.search.split('OK=')[1] ? location.search.split('OK=')[1].split('&')[0] : '';<br \/>\n   }<br \/>\n   if (vcancel != '') {<br \/>\n     pnum++;<br \/>\n     return null;<br \/>\n   } else if (vok != '') {<br \/>\n   \/\/document.title='' + vok;<br \/>\n    \/\/ansis=document.getElementById('val' + pnum).value;<br \/>\n   \/\/document.title='Ztis=' + ztis + ' and ansis=' + ansis;<br \/>\n  \/\/ Start of new mobile ...<br \/>\n  if (ztis != -1 || pnum &lt;= 2) {<br \/>\n    if (ansis.replace(\/^[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n    } else if (ansis.replace(\/^\\ [2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      if (eval('' + datetosubfor) &lt; 20110314) {<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n      } else {<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=' + datetosubfor + '&random=' + Math.floor(Math.random() * 19896754));<br \/>\n      }<br \/>\n    } else {<br \/>\n    if (ansis.replace(\/^[0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n    } else if (ansis.replace(\/^\\ [0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  if ((fauxv + ansis).replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n    if (ansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=ansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) >= 5) {<br \/>\n       if (outofansgoes == '' && (fauxv + ansis).replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       } else {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (ansis.indexOf(';utf8,') != -1 && ansis.indexOf('&lt;\/svg>') != -1) {<br \/>\n     outofansgoes='data' + ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>';<br \/>\n     if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + ansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (ansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     ansis=ansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      if (newoutofansgoes.indexOf('\/\/') != -1 && newoutofansgoes.indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes.split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes)) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      if (outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('\/\/') != -1 && outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'))) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  \/\/ End of new mobile ...<br \/>\n     pnum++;<br \/>\n     return ansis;<br \/>\n   } else if (document.getElementById('val' + pnum)) {<br \/>\n     allowed=false;<br \/>\n     lastfi=true;<br \/>\n     document.getElementById('safariform').style.display='block';<br \/>\n     document.getElementById('prompt').value=zwords;<br \/>\n     document.getElementById('val' + pnum).value=defwords;<br \/>\n     document.getElementById('hval' + pnum).value=encodeURIComponent(defwords);<br \/>\n     if (zwords.split(String.fromCharCode(10)).length > eval('0' + document.getElementById('prompt').rows)) {<br \/>\n       document.getElementById('prompt').rows=zwords.split(String.fromCharCode(10)).length;<br \/>\n     } else if (zwords.split('&lt;br>').length > eval('0' + document.getElementById('prompt').rows)) {<br \/>\n       document.getElementById('prompt').rows=zwords.split('&lt;br>').length;<br \/>\n     }<br \/>\n     document.getElementById('val' + pnum).focus();<br \/>\n     ansis='';<br \/>\n     if (document.URL.indexOf('val' + eval(-1 + pnum) + '=') != -1) {<br \/>\n     ansis=decodeURIComponent(decodeURIComponent(document.URL.split('val' + eval(-1 + pnum) + '=')[1].split('&')[0]));<br \/>\n     }<br \/>\n   \/\/document.title='ztis=' + ztis + ' and ansis=' + ansis;<br \/>\n  \/\/ Start of new mobile ...<br \/>\n  if (ztis != -1 || pnum == 2) {<br \/>\n    if (ansis.replace(\/^[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n    } else if (ansis.replace(\/^\\ [2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      \/\/oneway=ansis;<br \/>\n      if (eval('' + datetosubfor) &lt; 20110314) {<br \/>\n      document.getElementById('val' + eval(-1 + pnum)).value=document.getElementById('val' + eval(-1 + pnum)).value.replace(datetosubfor, '').replace(\/^\\ \/g,'').replace(\/^\\ \/g,'');<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n      } else {<br \/>\n      document.getElementById('val' + eval(-1 + pnum)).value=document.getElementById('val' + eval(-1 + pnum)).value.replace(datetosubfor, '').replace(\/^\\ \/g,'').replace(\/^\\ \/g,'');<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=' + datetosubfor + '&random=' + Math.floor(Math.random() * 19896754));<br \/>\n      }<br \/>\n      twoway=ansis;<br \/>\n      if (document.getElementById('safariform')) {<br \/>\n      document.title='no';<br \/>\n      } else {<br \/>\n      document.title='' + document.getElementById('safariform').innerHTML.length;<br \/>\n      }<br \/>\n    } else {<br \/>\n    if (ansis.replace(\/^[0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(0,8);<br \/>\n    } else if (ansis.replace(\/^\\ [0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != ansis) {<br \/>\n      datetosubfor=ansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      \/\/oneway=ansis;<br \/>\n      document.getElementById('val' + eval(-1 + pnum)).value=document.getElementById('val' + eval(-1 + pnum)).value.replace(datetosubfor, '').replace(\/^\\ \/g,'').replace(\/^\\ \/g,'');<br \/>\n      ansis=ansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + datetosubfor);<br \/>\n      twoway=ansis;<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n   \/\/document.title='ztIs=' + ztis + ' and ansis=' + ansis;<br \/>\n  if ((fauxv + ansis).replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n   \/\/document.title='ztIS=' + ztis + ' and ansis=' + ansis;<br \/>\n    if (ansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=ansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) >= 5) {<br \/>\n       if (outofansgoes == '' && (fauxv + ansis).replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       } else {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (ansis.indexOf(';utf8,') != -1 && ansis.indexOf('&lt;\/svg>') != -1) {<br \/>\n     outofansgoes='data' + ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>';<br \/>\n     if (ansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(ansis.substring(4).split('&lt;\/svg>')[0] + '&lt;\/svg>');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + ansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (ansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     \/\/oneway=ansis;<br \/>\n     ansis=ansis.replace(outofansgoes, '');<br \/>\n     twoway=ansis;<br \/>\n     document.getElementById('val' + eval(-1 + pnum)).value=document.getElementById('val' + eval(-1 + pnum)).value.replace(outofansgoes, '').replace(\/^\\ \/g,'').replace(\/^\\ \/g,'');<br \/>\n     if (document.getElementById('val' + pnum))<br \/>\n  \/\/ document.title+=' zTIS=' + ztis + ' and ansis=' + ansis + ' outofansgoes=' + outofansgoes;<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      if (newoutofansgoes.indexOf('\/\/') != -1 && newoutofansgoes.indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes.split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(newoutofansgoes)) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      if (outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('\/\/') != -1 && outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').indexOf('=') != -1) {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/').split('=')[1].split('&')[0])) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      } else {<br \/>\n      gform.append('insafarioh', '\/\/' + document.URL.split('&')[0].split('\/\/')[1] + '&val1=' + modespace.replace(' ',encodeURIComponent(encodeURIComponent(' '))) + encodeURIComponent(encodeURIComponent(outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'))) + encodeURIComponent(encodeURIComponent(' ')));<br \/>\n      }<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  \/\/ End of new mobile ...<br \/>\n     pnum++;<br \/>\n       return ansis;<br \/>\n   } else if (lastfi) {<br \/>\n     pnum++;<br \/>\n     lastfi=false;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   } else {<br \/>\n     pnum++;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   }<br \/>\n};<br \/>\nif (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\nvar alert = function(zwords){<br \/>\n   var defwords='';<br \/>\n   var vcancel='';<br \/>\n   var vok='';<br \/>\n   var ansis=location.search.split('val' + pnum + '=')[1] ? decodeURIComponent(decodeURIComponent(location.search.split('val' + pnum + '=')[1].split('&')[0]).replace(\/\\+\/g,' ')) : '';<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') == -1) ansis=null;<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') != -1 && pnum == eval(-1 + xpnum)) {<br \/>\n     vcancel=location.search.split('Cancel=')[1] ? location.search.split('Cancel=')[1].split('&')[0] : '';<br \/>\n     vok=location.search.split('OK=')[1] ? location.search.split('OK=')[1].split('&')[0] : '';<br \/>\n   }<br \/>\n   if (vcancel != '') {<br \/>\n     pnum++;<br \/>\n     return null;<br \/>\n   } else if (vok != '') {<br \/>\n     pnum++;<br \/>\n     return '';<br \/>\n   } else if (document.getElementById('val' + pnum)) {<br \/>\n     allowed=false;<br \/>\n     lastfi=true;<br \/>\n     document.getElementById('safariform').style.display='block';<br \/>\n     document.getElementById('prompt').value=zwords;<br \/>\n     document.getElementById('val' + pnum).value=defwords;<br \/>\n     document.getElementById('hval' + pnum).value=encodeURIComponent(defwords);<br \/>\n     document.getElementById('Cancel').style.display='none';<br \/>\n     document.getElementById('bCancel').style.display='none';<br \/>\n     document.getElementById('val' + pnum).style.display='none';<br \/>\n     document.getElementById('OK').focus();<br \/>\n     pnum++;<br \/>\n     return ansis;<br \/>\n   } else if (lastfi) {<br \/>\n     pnum++;<br \/>\n     lastfi=false;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   } else {<br \/>\n     pnum++;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   }<br \/>\n};<br \/>\n}<br \/>\nvar confirm = function(zwords){<br \/>\n   \/\/alert('val' + pnum + '=? ' + ' pnum=' + pnum + ' xpnum=' + xpnum + ' ' + document.URL);<br \/>\n   var defwords='1trueYesOK';<br \/>\n   var vcancel='';<br \/>\n   var vok='';<br \/>\n   var ansis=location.search.split('val' + pnum + '=')[1] ? decodeURIComponent(decodeURIComponent(location.search.split('val' + pnum + '=')[1].split('&')[0]).replace(\/\\+\/g,' ')) : '';<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') == -1) ansis=null;<br \/>\n   if (document.URL.indexOf('val' + pnum + '=') != -1 && pnum == eval(-1 + xpnum)) {<br \/>\n     vcancel=location.search.split('Cancel=')[1] ? location.search.split('Cancel=')[1].split('&')[0] : '';<br \/>\n     vok=location.search.split('OK=')[1] ? location.search.split('OK=')[1].split('&')[0] : '';<br \/>\n   }<br \/>\n   \/\/alert('vok=' + vok);<br \/>\n   if (vcancel != '') {<br \/>\n     pnum++;<br \/>\n     return null;<br \/>\n   } else if (vok != '') {<br \/>\n     pnum++;<br \/>\n     return '1trueYesOK';<br \/>\n   } else if (document.getElementById('val' + pnum)) {<br \/>\n     allowed=false;<br \/>\n     lastfi=true;<br \/>\n     document.getElementById('safariform').style.display='block';<br \/>\n     document.getElementById('prompt').value=zwords;<br \/>\n     document.getElementById('val' + pnum).value=defwords;<br \/>\n     document.getElementById('hval' + pnum).value=encodeURIComponent(defwords);<br \/>\n     document.getElementById('val' + pnum).style.display='none';<br \/>\n     document.getElementById('OK').focus();<br \/>\n     pnum++;<br \/>\n     return ansis;<br \/>\n   } else if (lastfi) {<br \/>\n     pnum++;<br \/>\n     lastfi=false;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   } else {<br \/>\n     pnum++;<br \/>\n     if (ansis == 'null') return null;<br \/>\n     return ansis;<br \/>\n   }<br \/>\n};<br \/>\n}<br \/>\n<br \/>\nfunction bicheck() {<br \/>\n  if (document.URL.indexOf('nojwin=') != -1) {<br \/>\n    document.getElementById('bitsatend').innerHTML+='&lt;iframe style=display:none; src=\"\/gctidy.html\"&gt;&lt;\/iframe&gt;';<br \/>\n  }<br \/>\n  if (('' + document.URL + decodeURIComponent('' + location.hash)).indexOf('title=') != -1 || 1 == 1) {<br \/>\n   setTimeout(function(){<br \/>\n    var prebits='';<br \/>\n    if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n      prebits='ammb=y&';<br \/>\n      if (document.getElementById('bitsatend')) {<br \/>\n        if (!document.getElementById('remail')) {<br \/>\n          \/\/document.getElementById('bitsatend').innerHTML+='&lt;a id=\"remail\" target=\"ijkemail\" href=\"mailto:?subject=Google%20Chart%20Snapshot&body=' + encodeURIComponent(document.URL) + '\"&gt;Email &#128231;&lt;\/a&gt;&nbsp;&lt;a id=\"rsms\" target=\"ijkemail\" href=\"sms:&body=' + encodeURIComponent(document.URL) + '\"&gt;SMS &#128223;&lt;\/a&gt;&lt;br&gt;';<br \/>\n          document.getElementById('bitsatend').innerHTML+='&lt;a id=\"remail\" target=\"ijkemail\" href=\"mailto:?subject=Google%20Chart%20Snapshot&body=' + encodeURIComponent(document.URL) + '\"&gt;Email&lt;\/a&gt;&lt;br&gt;'; \/\/'&nbsp;&lt;a id=\"rsms\" target=\"ijkemail\" href=\"sms:&body=' + encodeURIComponent(document.URL) + '\"&gt;SMS&lt;\/a&gt;&lt;br&gt;';<br \/>\n        }<br \/>\n      }<br \/>\n    }<br \/>\n    \/\/document.body.innerHTML+='&lt;iframe style=display:none; src=\"\/PHP\/csv.php?outread=' + encodeURIComponent(document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]) + '\"&gt;&lt;\/iframe&gt;';<br \/>\n    document.getElementById('bitsatend').innerHTML+='&lt;iframe style=display:none; src=\"\/PHP\/csv.php?' + prebits + 'outread=' + encodeURIComponent(document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]) + '\"&gt;&lt;\/iframe&gt;';<br \/>\n   }, 2000);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nsetTimeout(ggmuchlater, 7000);<br \/>\n<br \/>\nsetTimeout(gmuchlater, 1000);<br \/>\nsetTimeout(gcinit, 2000);<br \/>\nif ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= ') != -1) {<br \/>\n     lhway();<br \/>\n     bicheck();<br \/>\n} else if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi=') != -1) {<br \/>\n     lhway();<br \/>\n     bicheck();<br \/>\n} else {<br \/>\nsetTimeout(bicheck, 5000);<br \/>\nsetTimeout(lhway, 5000);<br \/>\n}<br \/>\nsetInterval(postlhway, 3000);<br \/>\n<\/code><\/p>\n<p> &#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php-----------------GETME\" rel=\"noopener\">and changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php-----------------GETME\" rel=\"noopener\">PHP<\/a> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nfunction ifspacy($dus, $squotethere, $iflenabovezerorepeat) {<br \/>\n  global $hdrstuff, $shortbody, $longbody, $rearrangejs, $rearrangestp, $rearrangests, $rearrangesize, $rearrangecover;<br \/>\n  $shortbody=\"body\";<br \/>\n  $longbody=\"document.body\";<br \/>\n  $rearrangejs=\"\";<br \/>\n  $rearrangestp=\"\";<br \/>\n  $rearrangests=\"\";<br \/>\n  $rearrangesize=\"Size\";<br \/>\n  $rearrangecover=\"cover\";<br \/>\n  $opcd=\"\";<br \/>\n  if (strlen($iflenabovezerorepeat) &gt; 0) {<br \/>\n    $rearrangejs=\" setTimeout(function(){ var ohis=parent.document.getElementById('chart_div').outerHTML; if (!parent.document.getElementById('bkcol')) { parent.document.body.innerHTML=parent.document.body.innerHTML.replace(ohis, '&lt;div id=bkcol&gt;' + ohis + '&lt;\/div&gt;');  } }, 2000); \";<br \/>\n    $shortbody=\"#bkcol\";<br \/>\n    $longbody='document.getElementById(\"bkcol\")';<br \/>\n    $opcd=\" #chart_div { opacity: 0.8; } \";<br \/>\n    $rearrangestp=' setTimeout(function(){ if (!parent.document.getElementById(\"bkcol\")) {  var xohis=parent.document.getElementById(\"chart_div\").outerHTML; parent.document.body.innerHTML=parent.document.body.innerHTML.replace(xohis, \"&lt;div id=bkcol&gt;\" + xohis.replace(\" style=\" + String.fromCharCode(34),\" style=\" + String.fromCharCode(34) + \"opacity:0.8 !important;\") + \"&lt;\/div&gt;\");   } ';<br \/>\n    $rearrangests=' }, 3000); ';<br \/>\n    $rearrangesize=\"Repeat\";<br \/>\n    $rearrangecover=\"repeat\";<br \/>\n  } else {<br \/>\n    $opcd=\" #chart_div { opacity: 0.8 !important; } \";<br \/>\n  }<br \/>\n  <br \/>\n  file_put_contents('xaz.xaz', $dus);<br \/>\n  if (strpos(str_replace('~http','~data',str_replace('~\/\/','~data',('~' . $dus))), '~data') !== false) {<br \/>\n    if (strpos(('~' . $dus), '~http') !== false) {<br \/>\n      $newdus=trim(str_replace('https:','',str_replace('http:','',$dus)));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;   } \" . $opcd . \"  &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos(('~' . $dus), '~\/\/') !== false) {<br \/>\n      $newdus=$dus;<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",trim($newdus)) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xza.xza', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",trim($newdus)) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzza.xzza', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos($dus, base64_encode(';utf8,')) !== false || strpos(('~' . $dus), '~data:') === false) {<br \/>\n      $newdus='data' . base64_decode(substr($dus,4));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";   }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";     }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n      } else {<br \/>\n        $dus=$newdus;<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($dus, ' ') !== false) {<br \/>\n    if (!$squotethere) {<br \/>\n      return \"'\" . $dus . \"'\";<br \/>\n    }<br \/>\n  }<br \/>\n  return $dus;<br \/>\n}<br \/>\n<br \/>\nif (isset($_POST['inwrite'])) {<br \/>\n  $prefixisin='';<br \/>\n  if (isset($_POST['inmode'])) {<br \/>\n    if (strlen($_POST['inmode']) &gt; 0) {<br \/>\n      $prefixisin=' ';<br \/>\n    }<br \/>\n  }<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['inurl'])) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['inurl']));<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection.txt') . $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  } else {<br \/>\n    file_put_contents('.\/bicollection.txt', $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n    file_put_contents('.\/bicollection_backup.txt', file_get_contents('.\/bicollection.txt'));<br \/>\n  }<br \/>\n  echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  exit;<br \/>\n}<br \/>\n<br \/>\nif (isset($_GET['outread']) && isset($_GET['cleanup'])) {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    exit;<br \/>\n} else if (isset($_POST['outread']) || isset($_GET['outread'])) {<br \/>\n  $prefixis='';<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['outread'])) {<br \/>\n   if (strlen($_POST['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['outread']));<br \/>\n   }<br \/>\n  } else if (isset($_GET['outread'])) {<br \/>\n   if (strlen($_GET['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_GET['outread']));<br \/>\n   }<br \/>\n  }<br \/>\n  $secidea='';<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    $filebicont=file_get_contents('.\/bicollection.txt');<br \/>\n    $origf=$filebicont;<br \/>\n    if (strpos($filebicont, csv_server_remote_addr() . ' --- ' . $exidea . ' ... ') !== false) {<br \/>\n      $relbi=explode(\"\\n\", explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont)[-1 + sizeof(explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont))])[0];<br \/>\n      if (strpos($filebicont, ' ' . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\") !== false) {<br \/>\n        $prefixis=' ';<br \/>\n      }<br \/>\n      $filebicont=str_replace($prefixis . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\",\"\",$filebicont);<br \/>\n      if ($origf != $filebicont) {<br \/>\n        file_put_contents('.\/bicollection_backup.txt', $filebicont);<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 10000); \";<br \/>\n      } else if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 9999); \";<br \/>\n      }<br \/>\n      if (strpos(('~' . $relbi), '~data') !== false) {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), true, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  \" . $rearrangests . \"  '&gt;&lt;p&gt; done &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . $ify . \"')\\\";   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes &lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       }<br \/>\n      } else {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace('+',' ',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . str_replace('+',' ',urldecode($relbi)) . \"')\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes again&lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n       }<br \/>\n      }<br \/>\n    } else {<br \/>\n      if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n      }<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    }<br \/>\n  } else {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  }<br \/>\n  exit;<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Cute<sup>ere<a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/playlist?list=PLNtJQ2eJVoAMFocY7LOANvPH3cLyUonin' rel=\"noopener\">r<\/a><\/sup>, huh?!<\/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\/google-chart-generic-background-image-mobile-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Mobile Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcgbict'>Previous relevant <a target=\"_blank\" title='Google Chart Generic Background Image Collaboration Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-collaboration-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Collaboration Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/HistogramChart\/histogram_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Context Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/non_extension_image_urls.gif\" title=\"Google Chart Generic Background Image Context Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Collaboration Tutorial<\/p><\/div>\n<p>We&#8217;ve fallen into an obsession with &#8220;c&#8221; words, and we apologize.  Today&#8217;s &#8220;collaboration&#8221; came after yesterday&#8217;s <a title='Google Chart Generic Background Image Context Tutorial' href='#gcgbicp'>Google Chart Generic Background Image Context Tutorial<\/a>&#8216;s &#8220;context&#8221; and before that &#8220;code&#8221;.  What do we make of it?<\/p>\n<blockquote><p>\nWell?!\n<\/p><\/blockquote>\n<p> &#8230; <\/p>\n<p><code><br \/>\nThanks for the insights!<br \/>\n<\/code><\/p>\n<table style=width:100%;>\n<tr style=width:100%;>\n<td id=xdivnala style=\"width:100%;height:600px;background-size:contain;display:none;background-image:URL('\/PHP\/nala_superpower.jpg');background-repeat:no-repeat;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/td>\n<\/tr>\n<\/table>\n<p>We are not robots here at RJM Programming, but believe it or not, having three acrostically identical tutorial titles in a row causes us more consternation than usual (<a style=cursor:pointer;text-decoration:underline; onmouseover=\"document.getElementById('xdivnala').style.display='table-cell';\" onclick=\"document.getElementById('xdivnala').style.display='table-cell';\" ontouchdown=\"document.getElementById('xdivnala').style.display='table-cell';\" ontouchstart=\"document.getElementById('xdivnala').style.display='table-cell';\">Nala&#8217;s<\/a> practically apoplectic), even beyond those butterflies in Brazil crossing the equator and affected by the Coriolis Effect.  Anyway &#8230;<\/p>\n<p>We have spent a day on email and SMS (conduit) sharing and collaboration means by which our non-mobile (only, so far) web users of the unaccounted for <font size=1>(after that <a title='Google Chart Pie Chart Background Image Tutorial' href='#gcpcbit'>Google Chart Pie Chart Background Image Tutorial<\/a> inspiration from some time ago)<\/font> <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> interfacing web applications can communicate.  That work wasn&#8217;t as hard as we thought it would be, given the relief of location.hash hashtag URL methodologies whereby there is less worry about URL lengths regarding &#8220;a&#8221; link href &#8220;mailto:&#8221; and\/or &#8220;sms:&#8221; sharing functionalities, so the mind must have wandered into the realms of &#8230;<\/p>\n<blockquote><p>\nWhat can an image &#8220;reference&#8221; <font size=1>(easily be)<\/font>?\n<\/p><\/blockquote>\n<p>The usual suspects came to mind &#8230;<\/p>\n<ul>\n<li>relative URL that ends with the extension of the image file &#8230; eg. \/PHP\/seven.jpg<\/li>\n<li>absolute URL that ends with the extension of the image file &#8230; eg. https:\/\/www.rjmprogramming.com.au\/PHP\/six.jpg<\/li>\n<li>\n<p style='overflow-x:visible;word-break:break-all;text-wrap:wrap;width:600px;'>data URI &#8230; base64 &#8230; eg. data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAEX0lEQVQ4jUWUyW6cVRCFv7r3\/kO3u912nNgZgESAAgGBCJgFgxhW7FkgxAbxMLwBEmIRITbsQAgxCEUiSIBAYIY4g1EmYjuDp457+Lv7n+4tFjbwAHVOnVPnlLz75ht67OhhZg\/M0p6d5tD9C8SNBBs5XBJhI4uNLC4SREA0UI9yJr2c4e6QO+v3WF27w+rmNrv9Pm7hxDyHFg5yYGEOYxytuRY2SYiSCIwgRgBQIxgjEAKuZWg6R9S0SCS4qKLZElY3HC5tp7QPtmlMN7HOETUTXBJjrEGsAfgPFECsQbBIbDGJZUYgGE8ugQyPm+o0STtTuGZMnKZEjRjjLIgAirEOEQEBDQFBEFFEBWLFtVJmpENRl6hUuFanTRAlbTeZarcx0R6YNZagAdD\/t5N9+QgCYAw2jrAhpjM3zaSY4OJGTDrVwEYOYw2qioigoviq5MqF31m9fg1V5fCx+zn11CLNVnufRhBrsVFE1Ihpthu4KDYYwz5YQIxFBG7duMZnH31IqHL6wwnGCLFd4pez3\/DaG2\/x4GNPgBhEZG\/GGlxkMVFkiNMYay3Inqxed4eP33uf7Y0uu90xWkGolFAru7sZn5w5w921m3u+su8vinEO02hEWLN\/ANnL2rkvv2an2yd4SCKLM0JVBsCgAYZZzrnPP0eDRzXgfaCuPHXwuEYjRgmIBlQVVLl8\/hKI4fRzz3L6uWe5+PMvnHz6aa4uX+D4yYe5vXaLH86eoyoLjLF476l9oKo9pi5HWONRX8E+YznOef7Vl1h86QWurlwjbc+QpikPPfoIcZLS39pmMikp8pzae6q6oqgriqrGqS+xeLScoMYSVJlfOMTl5RXW1+5w5fJVnFGWf1\/mxEMnWPppiclkTLM5RdJoUBYFZVlQ5DnZMMMV167gixKLoXXsKGqnOHnqOJ\/+\/CfZ+XUiZ0jTmFv5mAvf\/YjEliQ2vPD8Ir6qqEcZkzt38cMRo5WruFvfL9FqpyRxQhj0qLOax5I2S08+Tu\/lFiGUGOPormxwuyfMnjrGrJa88uIixeYWl776lmrzNjmw8vcG8sU7ixpHMXFsCUVg9tABjEvRgzP82j7AhbyiX5Qcv2+Bvy7dYGZ1k7efeQB\/Y4PBqGBtdYvb3SFzLcfqToZc\/OB1zYeBSpUwLBlvjZidmWaSB1yaYOfn6LqI\/r0hyU6P+cRSlhXjbEI2zvnt7y79oqQ3qeg4g6vKjCIXehtDmi6m0UnxVnCRkPUHVNt9qkLJxgXOCYNOg34v48raPaamU2o89\/KKsQ9sTSpc0JK7NwdcX8s43Ek5cnSOLC\/Z2R6Rj0ra0w2W1\/t0xyWn51uk2Ri1QtSO6OU5d7OSi72cQeWxKG7p\/Dp\/\/JXTy6C1Pcbc6DMpPRtjTxChEznWhwVZUCKrjCrPoPDczHLmnLBdBgZlRRWUEBR3ZKrme5TlrTGlV440Y1IrXM9qQGi6mkG5V6uza7tUIeCDElTZ1L26elX+fcH\/ACJBPYTJ4X8tAAAAAElFTkSuQmCC<\/p>\n<\/li>\n<li>data URI &#8230; utf8 &#8230; svg+xml &#8230; eg. data:image\/svg+xml;utf8,&lt;svg xmlns=&#8217;http:\/\/www.w3.org\/2000\/svg&#8217; width=&#8217;66&#8217; height=&#8217;48&#8217; viewport=&#8217;0 0 100 100&#8242; style=&#8217;border-radius:15px;background-color:rgba(0,0,255,0.3);fill:black;font-family:Verdana;font-size:17px;&#8217;&gt;&lt;text y=&#8217;80%&#8217;&gt;Alt\\\\01f3d5&lt;\/text&gt;&lt;\/svg&gt;<\/li>\n<\/ul>\n<p> &#8230; but then, when at the other end of a navigation the receiver is a serverside language like PHP, that webpage can establish via it&#8217;s <a target=\"_blank\" title='PHP header method' href='http:\/\/php.net\/manual\/en\/function.header.php' rel=\"noopener\">header<\/a> function an image (Content Type) outputting modus operandi, like &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nheader('Content-Type: image\/jpeg');<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; and output image data via URL calls that do not have to &#8220;end with the extension of any image file&#8221;.  Our WordPress blog&#8217;s TwentyTen theme&#8217;s 404.php is capable of this with URLs such as &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='https:\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=20221116&#038;random=4575657' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=20221116&#038;random=4575657' rel=\"noopener\">https:\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=20221116&random=4575657<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; and the other one we&#8217;ve had fun with in the past is the great random <a target=\"_blank\" title='Lorem Picsum' href='https:\/\/picsum.photos\/' rel=\"noopener\">Lorem Picsum<\/a> image creating resource accessible via URLs such as &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='https:\/\/picsum.photos\/600\/400\/' href='https:\/\/picsum.photos\/600\/400\/' rel=\"noopener\">https:\/\/picsum.photos\/600\/400\/<\/a><br \/>\n<\/code><\/p>\n<p>As you might imagine, we wanted to get these two ideas into the mix, especially as it was nagging away at us that the user interaction to make any of this work happen is asking a lot of the web user out there, but to involve more <font size=1>(potentially, later, mobile)<\/font> users to get interested we <font color=blue>can now<\/font> &#8230;<\/p>\n<p><code><br \/>\n    zwords+='  ... body background image data URIs, delimited by space or <\/svg>, or image URL plus space, will be recognized, prefixed by a space to apply on repeat to chart background <font color=blue>(just YYYYMMDD uses this blog tutorial image that day, if first Y is 1 we randomize via Lorem Picsum, thanks)<\/font> ';<br \/>\n<\/code><\/p>\n<p>For today&#8217;s work, though <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js--------------------------GETME\" rel=\"noopener\">it involves changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js--------------------------GETME\" rel=\"noopener\">Javascript<\/a> &#8230;<\/p>\n<p><code><br \/>\nfunction postlhway() {<br \/>\n  var foundu='';<br \/>\n  var prefoundu='';<br \/>\n  if (bimode == -1) {<br \/>\n    if (document.getElementById('bkcol')) {<br \/>\n      if (('' + document.getElementById('bkcol').style.backgroundImage).toLowerCase().indexOf('url(') != -1) {<br \/>\n         foundu='' + ('' + document.getElementById('bkcol').style.backgroundImage).split('(')[eval(-1 + ('' + document.getElementById('bkcol').style.backgroundImage).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=2;<br \/>\n         prefoundu='+';<br \/>\n      }<br \/>\n    }<br \/>\n    if (bimode == -1) {<br \/>\n      if (('' + document.body.style.backgroundImage).toLowerCase().indexOf('url(') != -1) {<br \/>\n         foundu='' + ('' + document.body.style.backgroundImage).split('(')[eval(-1 + ('' + document.body.style.backgroundImage).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=1;<br \/>\n      } else if (document.body.innerHTML.indexOf('&lt;style&gt; body { background-image:') != -1) {<br \/>\n         foundu='' + ('' + document.body.innerHTML.split('&lt;style&gt; body { background-image:')[1].split('}')[0]).split('(')[eval(-1 + ('' + document.body.innerHTML.split('&lt;style&gt; body { background-image:')[1].split('}')[0]).split('(').length)].split(')')[0].replace(\/^\\\"\/g,'').replace(\/\\\"$\/g,'').replace(\/^\\'\/g,'').replace(\/\\'$\/g,'');<br \/>\n         bimode=1;<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n  if (foundu != '') {<br \/>\n    if (document.getElementById('remail')) {<br \/>\n    if (document.getElementById('remail').href.indexOf(encodeURIComponent('bi=')) == -1) {<br \/>\n      if (document.getElementById('remail').href.indexOf(encodeURIComponent('#')) != -1 && document.getElementById('remail').href.indexOf(encodeURIComponent('&')) != -1) {<br \/>\n      if (3 == 3) {<br \/>\n      document.getElementById('remail').href+='' + encodeURIComponent('&#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href+='' + encodeURIComponent('&#bi=') + prefoundu + encodeURIComponent(foundu);<br \/>\n      }<br \/>\n      } else {<br \/>\n      document.getElementById('remail').href=document.getElementById('remail').href.replace(encodeURIComponent('&'), encodeURIComponent('&bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href=document.getElementById('rsms').href.replace(encodeURIComponent('&'), encodeURIComponent('&bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      }<br \/>\n      }<br \/>\n      } else if (document.getElementById('remail').href.indexOf(encodeURIComponent('#')) != -1) {<br \/>\n      document.getElementById('remail').href=document.getElementById('remail').href.replace(encodeURIComponent('#'), encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href=document.getElementById('rsms').href.replace(encodeURIComponent('#'), encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')) + '&'));<br \/>\n      }<br \/>\n      } else {<br \/>\n      document.getElementById('remail').href+='' + encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      if (document.getElementById('remail').href.indexOf('&body=') != -1) {<br \/>\n      document.getElementById('rsms').href='sms:&body=' + (document.getElementById('remail').href.split('&body=')[1]);<br \/>\n      } else {<br \/>\n      document.getElementById('rsms').href+='' + encodeURIComponent('#bi=') + prefoundu + encodeURIComponent(foundu.replace('?',encodeURIComponent('?')).replace('?',encodeURIComponent('&')));<br \/>\n      }<br \/>\n      }<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction lhway() {<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var dotis='.';<br \/>\n  var thisansis='';<br \/>\n  if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= ') != -1) {<br \/>\n     thisansis=' ' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').split('bi= ')[1].split('#')[0].split('&')[0];<br \/>\n  } else if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi=') != -1) {<br \/>\n     thisansis='' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').split('bi=')[1].split('#')[0].split('&')[0];<br \/>\n  }<br \/>\n  \/\/alert('thisansis=' + thisansis);<br \/>\n  if (thisansis.replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1) {<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) &gt;= 5) {<br \/>\n       if (outofansgoes == '' && thisansis.replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd].replace(\/\\%3F\/g,'?').replace(\/\\%26\/g,'&');<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n         setTimeout(function(){ document.getElementById('chart_div').style.opacity='0.8';  }, 4000);<br \/>\n       } else if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg&gt;') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (thisansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     \/\/alert('modespace=#' + modespace + '# and thisansis=#' + thisansis + '# and outofansgoes=#' + outofansgoes + '#' + (document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= '));<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  setInterval(postlhway, 3000);<br \/>\n}<br \/>\n<br \/>\nif (document.URL.indexOf('nojwin') == -1) { \/\/ || navigator.userAgent.match(\/iPhone|iPad\/i)) {<br \/>\nconst originalWindowPrompt = window.prompt;  \/\/ thanks to https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality<br \/>\n<br \/>\nwindow.prompt = function(zwords, defwords){<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var fauxv='';<br \/>\n  var dotis='youllneverfindthis';<br \/>\n  var datetosubfor='youllneverfindthis';<br \/>\n  var zwis=eval('' + zwords.toLowerCase().indexOf(' data ur'));<br \/>\n  var ztis=eval('' + zwords.toLowerCase().indexOf(' title '));<br \/>\n  if (ztis != -1) {<br \/>\n     dotis='.';<br \/>\n     moneis=zwis;<br \/>\n     zgxhr = new XMLHttpRequest();<br \/>\n     zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n     zgxhr.send(null);<br \/>\n  } else {<br \/>\n     fauxv='stopregex';<br \/>\n  }<br \/>\n  if (zwords.indexOf('Enter ') == 0 && zwords.toLowerCase().indexOf(' title ') != -1 && zwords.toLowerCase().indexOf(' data ur') == -1) {<br \/>\n    zwords+='  ... body background image data URIs, delimited by space or &lt;\/svg&gt;, or image URL plus space, will be recognized, prefixed by a space to apply on repeat to chart background (just YYYYMMDD uses this blog tutorial image that day, if first Y is 1 we randomize via Lorem Picsum, thanks) ';<br \/>\n  }<br \/>\n  var thisansis=originalWindowPrompt(zwords, defwords);<br \/>\n  if (thisansis == null) { return null;  }<br \/>\n  if (ztis != -1) {<br \/>\n    if (thisansis.replace(\/^[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(0,8);<br \/>\n    } else if (thisansis.replace(\/^\\ [2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      if (eval('' + datetosubfor) &lt; 20110314) {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + Math.floor(Math.random() * 19896754));<br \/>\n      } else {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/www.rjmprogramming.com.au\/ITblog\/500\/500\/?mustbedated=' + datetosubfor + '&random=' + Math.floor(Math.random() * 19896754));<br \/>\n      }<br \/>\n    } else {<br \/>\n    if (thisansis.replace(\/^[0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(0,8);<br \/>\n    } else if (thisansis.replace(\/^\\ [0-1][0-9][0-9][0-9][0-1][0-9][0-3][0-9]\\ \/g,'') != thisansis) {<br \/>\n      datetosubfor=thisansis.substring(1).substring(0,8);<br \/>\n    }<br \/>\n    if (datetosubfor != 'youllneverfindthis') {<br \/>\n      thisansis=thisansis.replace(datetosubfor, '\/\/picsum.photos\/600\/400\/?random=' + Math.floor(Math.random() * 19896754));<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n  if ((fauxv + thisansis).replace(\/^\\ http\/g,'data:').replace(\/^http\/g,'data:').replace(\/^\\ \\\/\\\/\/g,'data:').replace(\/^\\\/\\\/\/g,'data:').replace('rjmprogramming.com.au\/ITblog\/0','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/2','data:').replace('rjmprogramming.com.au\/ITblog\/3','data:').replace('rjmprogramming.com.au\/ITblog\/4','data:').replace('rjmprogramming.com.au\/ITblog\/5','data:').replace('rjmprogramming.com.au\/ITblog\/6','data:').replace('rjmprogramming.com.au\/ITblog\/7','data:').replace('rjmprogramming.com.au\/ITblog\/8','data:').replace('rjmprogramming.com.au\/ITblog\/9','data:').replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) &gt;= 5) {<br \/>\n       if (outofansgoes == '' && (fauxv + thisansis).replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') == -1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       } else {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg&gt;') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split('; ')[0].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (thisansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  return thisansis;<br \/>\n};<br \/>\n}<br \/>\n<br \/>\nfunction bicheck() {<br \/>\n  if (('' + document.URL + decodeURIComponent('' + location.hash)).indexOf('title=') != -1 || 1 == 1) {<br \/>\n   setTimeout(function(){<br \/>\n    if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n      if (document.getElementById('bitsatend')) {<br \/>\n        if (!document.getElementById('remail')) {<br \/>\n          \/\/document.getElementById('bitsatend').innerHTML+='&lt;a id=\"remail\" target=\"ijkemail\" href=\"mailto:?subject=Google%20Chart%20Snapshot&body=' + encodeURIComponent(document.URL) + '\"&gt;Email &#128231;&lt;\/a&gt;&nbsp;&lt;a id=\"rsms\" target=\"ijkemail\" href=\"sms:&body=' + encodeURIComponent(document.URL) + '\"&gt;SMS &#128223;&lt;\/a&gt;&lt;br&gt;';<br \/>\n          document.getElementById('bitsatend').innerHTML+='&lt;a id=\"remail\" target=\"ijkemail\" href=\"mailto:?subject=Google%20Chart%20Snapshot&body=' + encodeURIComponent(document.URL) + '\"&gt;Email&lt;\/a&gt;&lt;br&gt;'; \/\/'&nbsp;&lt;a id=\"rsms\" target=\"ijkemail\" href=\"sms:&body=' + encodeURIComponent(document.URL) + '\"&gt;SMS&lt;\/a&gt;&lt;br&gt;';<br \/>\n        }<br \/>\n      }<br \/>\n    }<br \/>\n    document.body.innerHTML+='&lt;iframe style=display:none; src=\"\/PHP\/csv.php?outread=' + encodeURIComponent(document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]) + '\"&gt;&lt;\/iframe&gt;';<br \/>\n   }, 2000);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nif ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi= ') != -1) {<br \/>\n     lhway();<br \/>\n     bicheck();<br \/>\n} else if ((document.URL + '#' + decodeURIComponent(('' + location.hash)) + '#').replace('bi=+', 'bi= ').indexOf('bi=') != -1) {<br \/>\n     lhway();<br \/>\n     bicheck();<br \/>\n} else {<br \/>\nsetTimeout(bicheck, 5000);<br \/>\nsetTimeout(lhway, 5000);<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php-----------------GETME\" rel=\"noopener\">and changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php-----------------GETME\" rel=\"noopener\">PHP<\/a> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nfunction ifspacy($dus, $squotethere, $iflenabovezerorepeat) {<br \/>\n  global $hdrstuff, $shortbody, $longbody, $rearrangejs, $rearrangestp, $rearrangests, $rearrangesize, $rearrangecover;<br \/>\n  $shortbody=\"body\";<br \/>\n  $longbody=\"document.body\";<br \/>\n  $rearrangejs=\"\";<br \/>\n  $rearrangestp=\"\";<br \/>\n  $rearrangests=\"\";<br \/>\n  $rearrangesize=\"Size\";<br \/>\n  $rearrangecover=\"cover\";<br \/>\n  $opcd=\"\";<br \/>\n  if (strlen($iflenabovezerorepeat) &gt; 0) {<br \/>\n    $rearrangejs=\" setTimeout(function(){ var ohis=parent.document.getElementById('chart_div').outerHTML; if (!parent.document.getElementById('bkcol')) { parent.document.body.innerHTML=parent.document.body.innerHTML.replace(ohis, '&lt;div id=bkcol&gt;' + ohis + '&lt;\/div&gt;');  } }, 2000); \";<br \/>\n    $shortbody=\"#bkcol\";<br \/>\n    $longbody='document.getElementById(\"bkcol\")';<br \/>\n    $opcd=\" #chart_div { opacity: 0.8; } \";<br \/>\n    $rearrangestp=' setTimeout(function(){ if (!parent.document.getElementById(\"bkcol\")) {  var xohis=parent.document.getElementById(\"chart_div\").outerHTML; parent.document.body.innerHTML=parent.document.body.innerHTML.replace(xohis, \"&lt;div id=bkcol&gt;\" + xohis.replace(\" style=\" + String.fromCharCode(34),\" style=\" + String.fromCharCode(34) + \"opacity:0.8 !important;\") + \"&lt;\/div&gt;\");   } ';<br \/>\n    $rearrangests=' }, 3000); ';<br \/>\n    $rearrangesize=\"Repeat\";<br \/>\n    $rearrangecover=\"repeat\";<br \/>\n  } else {<br \/>\n    $opcd=\" #chart_div { opacity: 0.8 !important; } \";<br \/>\n  }<br \/>\n  <br \/>\n  file_put_contents('xaz.xaz', $dus);<br \/>\n  if (strpos(str_replace('~http','~data',str_replace('~\/\/','~data',('~' . $dus))), '~data') !== false) {<br \/>\n    if (strpos(('~' . $dus), '~http') !== false) {<br \/>\n      $newdus=trim(str_replace('https:','',str_replace('http:','',$dus)));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;   } \" . $opcd . \"  &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos(('~' . $dus), '~\/\/') !== false) {<br \/>\n      $newdus=$dus;<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",trim($newdus)) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xza.xza', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",trim($newdus)) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzza.xzza', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos($dus, base64_encode(';utf8,')) !== false || strpos(('~' . $dus), '~data:') === false) {<br \/>\n      $newdus='data' . base64_decode(substr($dus,4));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";   }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } \" . $opcd . \"  &lt;\/style&gt;\\\";     }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n      } else {<br \/>\n        $dus=$newdus;<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($dus, ' ') !== false) {<br \/>\n    if (!$squotethere) {<br \/>\n      return \"'\" . $dus . \"'\";<br \/>\n    }<br \/>\n  }<br \/>\n  return $dus;<br \/>\n}<br \/>\n<br \/>\nif (isset($_POST['inwrite'])) {<br \/>\n  $prefixisin='';<br \/>\n  if (isset($_POST['inmode'])) {<br \/>\n    if (strlen($_POST['inmode']) &gt; 0) {<br \/>\n      $prefixisin=' ';<br \/>\n    }<br \/>\n  }<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['inurl'])) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['inurl']));<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection.txt') . $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  } else {<br \/>\n    file_put_contents('.\/bicollection.txt', $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n    file_put_contents('.\/bicollection_backup.txt', file_get_contents('.\/bicollection.txt'));<br \/>\n  }<br \/>\n  echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  exit;<br \/>\n}<br \/>\n<br \/>\nif (isset($_GET['outread']) && isset($_GET['cleanup'])) {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    exit;<br \/>\n} else if (isset($_POST['outread']) || isset($_GET['outread'])) {<br \/>\n  $prefixis='';<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['outread'])) {<br \/>\n   if (strlen($_POST['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['outread']));<br \/>\n   }<br \/>\n  } else if (isset($_GET['outread'])) {<br \/>\n   if (strlen($_GET['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_GET['outread']));<br \/>\n   }<br \/>\n  }<br \/>\n  $secidea='';<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    $filebicont=file_get_contents('.\/bicollection.txt');<br \/>\n    $origf=$filebicont;<br \/>\n    if (strpos($filebicont, csv_server_remote_addr() . ' --- ' . $exidea . ' ... ') !== false) {<br \/>\n      $relbi=explode(\"\\n\", explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont)[-1 + sizeof(explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont))])[0];<br \/>\n      if (strpos($filebicont, ' ' . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\") !== false) {<br \/>\n        $prefixis=' ';<br \/>\n      }<br \/>\n      $filebicont=str_replace($prefixis . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\",\"\",$filebicont);<br \/>\n      if ($origf != $filebicont) {<br \/>\n        file_put_contents('.\/bicollection_backup.txt', $filebicont);<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 10000); \";<br \/>\n      } else if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 9999); \";<br \/>\n      }<br \/>\n      if (strpos(('~' . $relbi), '~data') !== false) {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), true, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  \" . $rearrangests . \"  '&gt;&lt;p&gt; done &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . $ify . \"')\\\";   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes &lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       }<br \/>\n      } else {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace('+',' ',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . str_replace('+',' ',urldecode($relbi)) . \"')\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes again&lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n       }<br \/>\n      }<br \/>\n    } else {<br \/>\n      if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n      }<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    }<br \/>\n  } else {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  }<br \/>\n  exit;<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Cute<sup>e<a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/playlist?list=PLNtJQ2eJVoAMFocY7LOANvPH3cLyUonin' rel=\"noopener\">r<\/a><\/sup>, huh?!<\/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\/new-google-chart-generic-background-image-collaboration-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Collaboration Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcgbicp'>Previous relevant <a target=\"_blank\" title='Google Chart Generic Background Image Context Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-context-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Context Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/HistogramChart\/histogram_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Context Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/google_charts_generic_background_image_context.gif\" title=\"Google Chart Generic Background Image Context Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Context Tutorial<\/p><\/div>\n<p>Here, today, further to yesterday&#8217;s <a title='Google Chart Generic Background Image Code Tutorial' href='#gcgbicx'>Google Chart Generic Background Image Code Tutorial<\/a>, we are referring to &#8230;<\/p>\n<ul>\n<li>context &#8230; or &#8230;<\/li>\n<li>guise<\/li>\n<\/ul>\n<p> &#8230; <a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s' rel=\"noopener\">again<\/a>.  Well it could be &#8230;<\/p>\n<ul>\n<li>like when you buy a particular brand of something and then start seeing it everywhere &#8230; or &#8230;<\/li>\n<li>because we like the word &#8220;<a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s' rel=\"noopener\">again<\/a>&#8221; <a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s' rel=\"noopener\">again<\/a> &#8230; or &#8230;<\/li>\n<li>because whenever you revisit a piece of any code it doesn&#8217;t take long to appreciate where it could be improved &#8230; and we like this one &#8230; so &#8230;<\/li>\n<\/ul>\n<p> &#8230; we&#8217;ll leave it at that.  Actually, that last one makes sense, because we realized testing the workings of that <a title='Google Chart Pie Chart Background Image Tutorial' href='#gcpcbit'>Google Chart Pie Chart Background Image Tutorial<\/a> inspiration for this current project extension, it had a great feature that hadn&#8217;t occurred to us yesterday (and we want to allow for) &#8230;<\/p>\n<ul>\n<li>today, using the background imagery behind the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> and have it be background-repeat:repeat; &#8230; the user makes happen by prefixing their background image information by a space character, whereas &#8230;<\/li>\n<li>yesterday&#8217;s use of the background imagery behind the document body and have it be background-size:cover; is perfectly valid too<\/li>\n<\/ul>\n<p> &#8230; making for a better end <i>result set<\/i>. <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=iiATDMHU7gc' rel=\"noopener\">But there&#8217;s more.<\/a>  We&#8217;ll be easing out the previous modus operandi in favour of this recent modus operandi over time, we&#8217;re thinking, but not before we have a day<sup>?<\/sup> looking into sharing functionality that might allow the user to share that Google Chart and its background image arrangements with an email recipient.<\/p>\n<p>For today&#8217;s work, though <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js-------------------------GETME\" rel=\"noopener\">it involves changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js-------------------------GETME\" rel=\"noopener\">Javascript<\/a> &#8230;<\/p>\n<p><code><br \/>\nconst originalWindowPrompt = window.prompt;  \/\/ thanks to <a target=\"_blank\" href='https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality' title='https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality' rel=\"noopener\">https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality<\/a><br \/>\n<br \/>\nwindow.prompt = function(zwords, defwords){<br \/>\n  var modespace='';<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var dotis='youllneverfindthis';<br \/>\n  var zwis=eval('' + zwords.toLowerCase().indexOf(' data ur'));<br \/>\n  var ztis=eval('' + zwords.toLowerCase().indexOf(' title '));<br \/>\n  if (ztis != -1) {<br \/>\n     dotis='.';<br \/>\n     moneis=zwis;<br \/>\n     zgxhr = new XMLHttpRequest();<br \/>\n     zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n     zgxhr.send(null);<br \/>\n  }<br \/>\n  if (zwords.indexOf('Enter ') == 0 && zwords.toLowerCase().indexOf(' title ') != -1 && zwords.toLowerCase().indexOf(' data ur') == -1) {<br \/>\n    zwords+='  ... body background image data URIs, delimited by space or &lt;\/svg&gt;, or image URL plus space, will be recognized, prefixed by a space to apply on repeat to chart background ';<br \/>\n  }<br \/>\n  var thisansis=originalWindowPrompt(zwords, defwords);<br \/>\n  if (thisansis == null) { return null;  }<br \/>\n  if (thisansis.replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) &gt;= 5) {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg&gt;') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     if (thisansis.indexOf(' ' + outofansgoes) != -1) {<br \/>\n       modespace=' ';<br \/>\n     }<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('https:\/\/', '\/\/').replace('http:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n      gform.append('inmode', modespace);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  return thisansis;<br \/>\n};<br \/>\n}<br \/>\n<br \/>\nfunction bicheck() {<br \/>\n  if (('' + document.URL + location.hash).indexOf('title=') != -1) {<br \/>\n    document.body.innerHTML+='&lt;iframe style=display:none; src=\"\/PHP\/csv.php?outread=' + encodeURIComponent(document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]) + '\"&gt;&lt;\/iframe&gt;';<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nsetTimeout(bicheck, 5000);<br \/>\n<\/code><\/p>\n<p> &#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php----------------GETME\" rel=\"noopener\">and changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php----------------GETME\" rel=\"noopener\">PHP<\/a> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nfunction ifspacy($dus, $squotethere, $iflenabovezerorepeat) {<br \/>\n  global $hdrstuff, $shortbody, $longbody, $rearrangejs, $rearrangestp, $rearrangests, $rearrangesize, $rearrangecover;<br \/>\n  $shortbody=\"body\";<br \/>\n  $longbody=\"document.body\";<br \/>\n  $rearrangejs=\"\";<br \/>\n  $rearrangestp=\"\";<br \/>\n  $rearrangests=\"\";<br \/>\n  $rearrangesize=\"Size\";<br \/>\n  $rearrangecover=\"cover\";<br \/>\n  $opcd=\"\";<br \/>\n  if (strlen($iflenabovezerorepeat) &gt; 0) {<br \/>\n    $rearrangejs=\" setTimeout(function(){ var ohis=parent.document.getElementById('chart_div').outerHTML; if (!parent.document.getElementById('bkcol')) { parent.document.body.innerHTML=parent.document.body.innerHTML.replace(ohis, '&lt;div id=bkcol&gt;' + ohis + '&lt;\/div&gt;');  } }, 2000); \";<br \/>\n    $shortbody=\"#bkcol\";<br \/>\n    $longbody='document.getElementById(\"bkcol\")';<br \/>\n    $opcd=\" #chart_div { opacity: 0.8; } \";<br \/>\n    $rearrangestp=' setTimeout(function(){ if (!parent.document.getElementById(\"bkcol\")) {  var xohis=parent.document.getElementById(\"chart_div\").outerHTML; parent.document.body.innerHTML=parent.document.body.innerHTML.replace(xohis, \"&lt;div id=bkcol&gt;\" + xohis.replace(\" style=\" + String.fromCharCode(34),\" style=\" + String.fromCharCode(34) + \"opacity:0.8 !important;\") + \"&lt;\/div&gt;\");   } ';<br \/>\n    $rearrangests=' }, 3000); ';<br \/>\n    $rearrangesize=\"Repeat\";<br \/>\n    $rearrangecover=\"repeat\";<br \/>\n  }<br \/>\n  <br \/>\n  if (strpos(str_replace('~http','~data',str_replace('~\/\/','~data',('~' . $dus))), '~data') !== false) {<br \/>\n    if (strpos(('~' . $dus), '~http') !== false) {<br \/>\n      $newdus=trim(str_replace('https:','',str_replace('http:','',$dus)));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important; \" . $opcd . \"  } &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important; \" . $opcd . \"   } &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos(('~' . $dus), '~\/\/') !== false) {<br \/>\n      $newdus=trim($dus);<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important; \" . $opcd . \"   } &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xza.xza', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; \" . $shortbody . \" { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important; \" . $opcd . \"   } &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            file_put_contents('xzza.xzza', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos($dus, base64_encode(';utf8,')) !== false || strpos(('~' . $dus), '~data:') === false) {<br \/>\n      $newdus='data' . base64_decode(substr($dus,4));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\"; \" . $opcd . \"    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; \" . $rearrangejs . \" setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\";  \" . $opcd . \"    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n      } else {<br \/>\n        $dus=$newdus;<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($dus, ' ') !== false) {<br \/>\n    if (!$squotethere) {<br \/>\n      return \"'\" . $dus . \"'\";<br \/>\n    }<br \/>\n  }<br \/>\n  return $dus;<br \/>\n}<br \/>\n<br \/>\nif (isset($_POST['inwrite'])) {<br \/>\n  $prefixisin='';<br \/>\n  if (isset($_POST['inmode'])) {<br \/>\n    if (strlen($_POST['inmode']) &gt; 0) {<br \/>\n      $prefixisin=' ';<br \/>\n    }<br \/>\n  }<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['inurl'])) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['inurl']));<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection.txt') . $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  } else {<br \/>\n    file_put_contents('.\/bicollection.txt', $prefixisin . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n    file_put_contents('.\/bicollection_backup.txt', file_get_contents('.\/bicollection.txt'));<br \/>\n  }<br \/>\n  echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  exit;<br \/>\n}<br \/>\n<br \/>\nif (isset($_GET['outread']) && isset($_GET['cleanup'])) {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    exit;<br \/>\n} else if (isset($_POST['outread']) || isset($_GET['outread'])) {<br \/>\n  $prefixis='';<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['outread'])) {<br \/>\n   if (strlen($_POST['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['outread']));<br \/>\n   }<br \/>\n  } else if (isset($_GET['outread'])) {<br \/>\n   if (strlen($_GET['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_GET['outread']));<br \/>\n   }<br \/>\n  }<br \/>\n  $secidea='';<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    $filebicont=file_get_contents('.\/bicollection.txt');<br \/>\n    $origf=$filebicont;<br \/>\n    if (strpos($filebicont, csv_server_remote_addr() . ' --- ' . $exidea . ' ... ') !== false) {<br \/>\n      $relbi=explode(\"\\n\", explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont)[-1 + sizeof(explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont))])[0];<br \/>\n      if (strpos($filebicont, ' ' . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\") !== false) {<br \/>\n        $prefixis=' ';<br \/>\n      }<br \/>\n      $filebicont=str_replace($prefixis . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\",\"\",$filebicont);<br \/>\n      if ($origf != $filebicont) {<br \/>\n        file_put_contents('.\/bicollection_backup.txt', $filebicont);<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 10000); \";<br \/>\n      } else if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 9999); \";<br \/>\n      }<br \/>\n      if (strpos(('~' . $relbi), '~data') !== false) {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\"; \" . $secidea . \"   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), true, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  \" . $rearrangests . \"  '&gt;&lt;p&gt; done &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . $ify . \"')\\\";   \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes &lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       }<br \/>\n      } else {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace('+',' ',urldecode($relbi)), false, $prefixis);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL(\" . $ify . \")\\\";  parent.\" . $longbody . \".style.background\" . $rearrangesize . \"=\\\"\" . $rearrangecover . \"\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $rearrangestp . \" \" . $secidea . \"  parent.\" . $longbody . \".style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.4)),URL('\" . str_replace('+',' ',urldecode($relbi)) . \"')\\\";  \" . $rearrangests . \"  '&gt;&lt;\/body&gt;&lt;p&gt; yes again&lt;\/p&gt;&lt;\/html&gt;\";<br \/>\n       }<br \/>\n      }<br \/>\n    } else {<br \/>\n      if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n      }<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    }<br \/>\n  } else {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  }<br \/>\n  exit;<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Cute<sup><a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/playlist?list=PLNtJQ2eJVoAMFocY7LOANvPH3cLyUonin' rel=\"noopener\">r<\/a><\/sup>, huh?!<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>Can an animated GIF set as the background image still be animated?<\/p>\n<blockquote><p>\nYes.  <font size=1>But please do not make it too boring.  Can we suggest &#8230;<\/font>\n<\/p><\/blockquote>\n<div style=\"border-left:12px solid rgb(247,235,193);border-right:12px solid rgb(247,235,193);display:inline-block;width:80%;margin-left:8%;margin-top:-22px;background-color:transparent !important;opacity:1.0 !important;background-image:URL(\/\/www.rjmprogramming.com.au\/PHP\/animegif\/bondi_innerHTML.gif) !important;background-repeat:no-repeat;background-position:bottom left;background-size:cover;\"><img decoding=\"async\" style=\"visibility:hidden;\" src=\"\/\/www.rjmprogramming.com.au\/PHP\/animegif\/bondi_innerHTML.gif\"><\/img><\/div>\n<blockquote style=\"margin-top:-18px;\"><p>\n<font size=1><a id=awatg href='#awatg' title='Who wrote this script?'  onclick=\"document.getElementById('watg').style.display='block';\">?<\/a><\/font>\n<\/p><\/blockquote>\n<div id=watg style=display:none; title='Who wrote this script?'>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/-kbTbg00AJU?si=-CVTJGr_0nkw3Phc\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div>\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\/google-chart-generic-background-image-context-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Context Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcgbicx'>Previous relevant <a target=\"_blank\" title='Google Chart Generic Background Image Code Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-code-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Code Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/HistogramChart\/histogram_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Generic Background Image Code Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/google_charts_generic_background_image.gif\" title=\"Google Chart Generic Background Image Code Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Generic Background Image Code Tutorial<\/p><\/div>\n<p>We were interested in a URL we detected being accessed, via our cPanel Apache Status report linking us to <a title='Google Chart Pie Chart Background Image Tutorial' href='#gcpcbit'>Google Chart Pie Chart Background Image Tutorial<\/a>.  Investigating this <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Charts<\/a> interfacing PHP code means by which to allow for the user specification of background images, in the case of a Pie Chart, we realized some interfacings had been coded for this functionality, but not others.<\/p>\n<p>But don&#8217;t we &#8230;<\/p>\n<ol>\n<li>have an external Javascript gchartgen.js to turn to &#8230;<\/li>\n<li>and a require PHP csv.php we could lean on<\/li>\n<\/ol>\n<p>?  Yes, indeed, and we decided to &#8230;<\/p>\n<table>\n<tr>\n<td>\n<ol>\n<li>have an external Javascript gchartgen.js to turn to &#8230;<\/li>\n<li>and a require PHP csv.php we could lean on<\/li>\n<\/ol>\n<\/td>\n<td>\n<ol>\n<li>for non-mobile (so far) we could override the window.prompt and check and setup<\/li>\n<li>internal use only recording on user interest in a web server flat file<\/li>\n<\/ol>\n<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js------------------------GETME\" rel=\"noopener\">involving changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js------------------------GETME\" rel=\"noopener\">Javascript<\/a> &#8230;<\/p>\n<p><code><br \/>\nconst originalWindowPrompt = window.prompt;  \/\/ thanks to <a target=\"_blank\" href='https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality' title='https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality' rel=\"noopener\">https:\/\/stackoverflow.com\/questions\/9172505\/how-to-override-the-window-open-functionality<\/a><br \/>\n<br \/>\nwindow.prompt = function(zwords, defwords){<br \/>\n  var outofansgoes='', newoutofansgoes='';<br \/>\n  var moneis=-1, zgxhr=null;<br \/>\n  var dotis='youllneverfindthis';<br \/>\n  var zwis=eval('' + zwords.toLowerCase().indexOf(' data ur'));<br \/>\n  var ztis=eval('' + zwords.toLowerCase().indexOf(' title '));<br \/>\n  if (ztis != -1) {<br \/>\n     dotis='.';<br \/>\n     moneis=zwis;<br \/>\n     zgxhr = new XMLHttpRequest();<br \/>\n     zgxhr.open('post', '\/PHP\/csv.php?outread=y&cleanup=y', true);<br \/>\n     zgxhr.send(null);<br \/>\n  }<br \/>\n  if (zwords.indexOf('Enter ') == 0 && zwords.toLowerCase().indexOf(' title ') != -1 && zwords.toLowerCase().indexOf(' data ur') == -1) {<br \/>\n    zwords+='  ... background image data URIs, delimited by space or &lt;\/svg&gt;, or image URL plus space, will be recognized ';<br \/>\n  }<br \/>\n  var thisansis=originalWindowPrompt(zwords, defwords);<br \/>\n  if (thisansis == null) { return null;  }<br \/>\n  if (thisansis.replace(dotis + 'jp','data:').replace(dotis + 'JP','data:').replace(dotis + 'png','data:').replace(dotis + 'GIF','data:').replace(dotis + 'gif','data:').replace(dotis + 'PNG','data:').replace(dotis + 'svg','data:').replace(dotis + 'SVG','data:').replace(dotis + 'bmp','data:').replace(dotis + 'BMP','data:').replace(dotis + 'tif','data:').replace(dotis + 'TIF','data:').indexOf('data:') != -1 && zwis == moneis) {<br \/>\n    if (thisansis.indexOf('data:') == -1) {<br \/>\n     var wdsare=thisansis.split(' ');<br \/>\n     for (var iwd=0; iwd&lt;wdsare.length; iwd++) {<br \/>\n      if (eval('' + wdsare[iwd].length) &gt;= 5) {<br \/>\n       if (outofansgoes == '' && wdsare[iwd].slice(-5).indexOf('.') != -1 && wdsare[iwd].slice(-5).indexOf('.') &lt;= 1) {<br \/>\n         outofansgoes=wdsare[iwd];<br \/>\n         if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n           outofansgoes+=' ';<br \/>\n         }<br \/>\n       }<br \/>\n      }<br \/>\n     }<br \/>\n    } else if (thisansis.indexOf(';utf8,') != -1 && thisansis.indexOf('&lt;\/svg&gt;') != -1) {<br \/>\n     outofansgoes='data' + thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;';<br \/>\n     if (thisansis.indexOf(outofansgoes + ' ') != -1) {<br \/>\n       outofansgoes+=' ';<br \/>\n     }<br \/>\n     newoutofansgoes='data' + window.btoa(thisansis.substring(4).split('&lt;\/svg&gt;')[0] + '&lt;\/svg&gt;');<br \/>\n    } else {<br \/>\n     outofansgoes='data:' + thisansis.replace(';base64,',',base64,').replace(';utf8,',',utf8,').split('data:')[1].split(';')[0].split(' ')[0].replace(',base64,',';base64,').replace(',utf8,',';utf8,');<br \/>\n    }<br \/>\n    if (outofansgoes != '') {<br \/>\n     thisansis=thisansis.replace(outofansgoes, '');<br \/>\n     var gxhr = new XMLHttpRequest();<br \/>\n     var gform=new FormData();<br \/>\n     if (newoutofansgoes != '') {<br \/>\n      gform.append('inwrite', newoutofansgoes);<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n     } else {<br \/>\n      gform.append('inwrite', outofansgoes.replace('ht<font color=black>tp<\/font>s:\/\/', '\/\/').replace('ht<font color=black>tp<\/font>:\/\/', '\/\/'));<br \/>\n      gform.append('inurl', document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]);<br \/>\n     }<br \/>\n     gxhr.open('post', '\/PHP\/csv.php', true);<br \/>\n     gxhr.send(gform);<br \/>\n    }<br \/>\n  }<br \/>\n  return thisansis;<br \/>\n};<br \/>\n}<br \/>\n<br \/>\nfunction bicheck() {<br \/>\n  if (('' + document.URL + location.hash).indexOf('title=') != -1) {<br \/>\n    document.body.innerHTML+='&lt;iframe style=display:none; src=\"\/PHP\/csv.php?outread=' + encodeURIComponent(document.URL.split('rjmprogramming.com.au')[eval(-1 + document.URL.split('rjmprogramming.com.au').length)].split('?')[0].split('#')[0]) + '\"&gt;&lt;\/iframe&gt;';<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nsetTimeout(bicheck, 5000);<br \/>\n<\/code><\/p>\n<p> &#8230; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php---------------GETME\" rel=\"noopener\">and changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php---------------GETME\" rel=\"noopener\">PHP<\/a> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nfunction ifspacy($dus, $squotethere) {<br \/>\n  global $hdrstuff;<br \/>\n  if (strpos(str_replace('~http','~data',str_replace('~\/\/','~data',('~' . $dus))), '~data') !== false) {<br \/>\n    if (strpos(('~' . $dus), '~http') !== false) {<br \/>\n      $newdus=str_replace('ht<font color=black>tp<\/font>s:','',str_replace('ht<font color=black>tp<\/font>:','',$dus));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"';  setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\"; }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos(('~' . $dus), '~\/\/') !== false) {<br \/>\n      $newdus=$dus;<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"';  setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n     } else {<br \/>\n        $dus=$newdus;<br \/>\n     }<br \/>\n   } else if (strpos($dus, base64_encode(';utf8,')) !== false || strpos(('~' . $dus), '~data:') === false) {<br \/>\n      $newdus='data' . base64_decode(substr($dus,4));<br \/>\n      if (strpos($newdus, ' ') !== false) {<br \/>\n        if (!$squotethere) {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"'; setTimeout(function(){ parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39) + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\";   }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xz.xz', $hdrstuff);<br \/>\n            return ''; \/\/'\"'\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"'\";<br \/>\n        } else {<br \/>\n            $hdrstuff=\"&lt;head&gt;&lt;scr\" . \"ipt type=text\/javascript&gt; var newdus='\" . str_replace(\"'\", \"' + String.fromCharCode(39) + '\",$newdus) . \"';  setTimeout(function(){  parent.document.body.innerHTML+=\\\"&lt;style&gt; body { background-image: linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\\\" + String.fromCharCode(39)  + newdus + String.fromCharCode(39) + \\\") !important;  } &lt;\/style&gt;\\\";    }, 4000);  &lt;\/scr\" . \"ipt&gt;&lt;\/head&gt;\";<br \/>\n            \/\/file_put_contents('xzz.xzz', $hdrstuff);<br \/>\n            return ''; \/\/'\"\" . str_replace('\"', \"\\\\\" . '\"', $newdus) . \"\";<br \/>\n        }<br \/>\n      } else {<br \/>\n        $dus=$newdus;<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($dus, ' ') !== false) {<br \/>\n    if (!$squotethere) {<br \/>\n      return \"'\" . $dus . \"'\";<br \/>\n    }<br \/>\n  }<br \/>\n  return $dus;<br \/>\n}<br \/>\n<br \/>\nif (isset($_POST['inwrite'])) {<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['inurl'])) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['inurl']));<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection.txt') . csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  } else {<br \/>\n    file_put_contents('.\/bicollection.txt', csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $_POST['inwrite'] . \"\\n\");<br \/>\n  }<br \/>\n  if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n    file_put_contents('.\/bicollection_backup.txt', file_get_contents('.\/bicollection.txt'));<br \/>\n  }<br \/>\n  echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  exit;<br \/>\n}<br \/>\n<br \/>\nif (isset($_GET['outread']) && isset($_GET['cleanup'])) {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    exit;<br \/>\n} else if (isset($_POST['outread']) || isset($_GET['outread'])) {<br \/>\n  $exidea=explode('#', explode('?', $_SERVER['REQUEST_URI'])[0])[0];<br \/>\n  if (isset($_POST['outread'])) {<br \/>\n   if (strlen($_POST['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_POST['outread']));<br \/>\n   }<br \/>\n  } else if (isset($_GET['outread'])) {<br \/>\n   if (strlen($_GET['outread']) &gt; 1) {<br \/>\n    $exidea=str_replace('+', ' ', urldecode($_GET['outread']));<br \/>\n   }<br \/>\n  }<br \/>\n  $secidea='';<br \/>\n  if (file_exists('.\/bicollection.txt')) {<br \/>\n    $filebicont=file_get_contents('.\/bicollection.txt');<br \/>\n    $origf=$filebicont;<br \/>\n    if (strpos($filebicont, csv_server_remote_addr() . ' --- ' . $exidea . ' ... ') !== false) {<br \/>\n      $relbi=explode(\"\\n\", explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont)[-1 + sizeof(explode(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ', $filebicont))])[0];<br \/>\n      $filebicont=str_replace(csv_server_remote_addr() . ' --- ' . $exidea . ' ... ' . $relbi . \"\\n\",\"\",$filebicont);<br \/>\n      if ($origf != $filebicont) {<br \/>\n        file_put_contents('.\/bicollection_backup.txt', $filebicont);<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 10000); \";<br \/>\n      } else if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        $secidea=\" setTimeout(function(){ location.href=\\\"\/PHP\/csv.php?outread=y&cleanup=y\\\";   }, 9999); \";<br \/>\n      }<br \/>\n      if (strpos(('~' . $relbi), '~data') !== false) {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), false);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload='   parent.document.body.style.backgroundSize=\\\"cover\\\"; \" . $secidea . \" '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' parent.document.body.style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\" . $ify . \")\\\";  parent.document.body.style.backgroundSize=\\\"cover\\\"; \" . $secidea . \"  '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        $ify=ifspacy(str_replace(' ','+',urldecode($relbi)), true);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $secidea . \"  '&gt;&lt;p&gt; done &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $secidea . \"  &gt;&lt;p&gt; parent.document.body.style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL('\" . $ify . \"')\\\"; &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       }<br \/>\n      } else {<br \/>\n       if (isset($_GET['outread'])) {<br \/>\n        $ify=ifspacy(str_replace('+',' ',urldecode($relbi)), false);<br \/>\n        if ($ify == '') {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $secidea . \"  parent.document.body.style.backgroundSize=\\\"cover\\\"; '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body onload=' \" . $secidea . \"  parent.document.body.style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL(\" . $ify . \")\\\";  parent.document.body.style.backgroundSize=\\\"cover\\\"; '&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n        }<br \/>\n       } else {<br \/>\n        echo \"&lt;html&gt;\" . $hdrstuff . \"&lt;body&gt;&lt;p&gt; parent.document.body.style.backgroundImage=\\\"linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),URL('\" . str_replace('+',' ',urldecode($relbi)) . \"')\\\"; &lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n       }<br \/>\n      }<br \/>\n    } else {<br \/>\n      if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n      }<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    }<br \/>\n  } else {<br \/>\n    if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n        sleep(3);<br \/>\n        if (file_exists('.\/bicollection_backup.txt')) {<br \/>\n           file_put_contents('.\/bicollection.txt', file_get_contents('.\/bicollection_backup.txt'));<br \/>\n           unlink('.\/bicollection_backup.txt');<br \/>\n        }<br \/>\n    }<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n  }<br \/>\n  exit;<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Cute, huh?!<\/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\/google-chart-generic-background-image-code-tutorial\/' rel=\"noopener\">Google Chart Generic Background Image Code Tutorial<\/a>.<\/p-->\n<hr>\n<p id='gcpcbit'>Previous relevant <a target=\"_blank\" title='Google Chart Pie Chart Background Image Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-pie-chart-background-image-tutorial\/' rel=\"noopener\">Google Chart Pie Chart Background Image Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Chart Pie Chart Background Image Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart_bg.jpg\" title=\"Google Chart Pie Chart Background Image Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Chart Pie Chart Background Image Tutorial<\/p><\/div>\n<p>We have another potential use for the clipboard, adding onto the recent <a title='Google Pie Chart via Clipboard Co-ordinates Tutorial' href='#gpccc-t'>Google Pie Chart via Clipboard Co-ordinates Tutorial<\/a> data set usage, today.   We allow the user to change the default white background to the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/piechart' title='Google Pie Charts' rel=\"noopener\">Pie Chart<\/a> be tailored to be either &#8230;<\/p>\n<ul>\n<li>image URL &#8230; or &#8230;<\/li>\n<li>image data URI (most likely entered via the clipboard)<\/li>\n<\/ul>\n<p> &#8230; as a prefixing option when they enter in the Title of their Pie Chart.<\/p>\n<p>In order to achieve this, we were helped enormously by &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='Useful link' href='https:\/\/stackoverflow.com\/questions\/8828076\/how-can-i-hack-a-background-image-into-google-chart-tools-dynamic-javascript-s' rel=\"noopener\">this very useful link<\/a>,  thanks &#8230; the crux of it being to get to put &#8230;<br \/>\n<code><br \/>\n  backgroundColor: 'none'<br \/>\n<\/code><br \/>\n &#8230; into the Pie Chart options &#8230; and some previous help we got when we presented &#8230;<\/li>\n<li><a target=\"_blank\" title='Column Intelligence Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/column-intelligence-primer-tutorial\/' rel=\"noopener\">Column Intelligence Primer Tutorial<\/a>&#8216;s &#8220;Did you know?&#8221; section reference to <a target=\"_blank\" title='Useful link' href='https:\/\/stackoverflow.com\/questions\/7241341\/can-i-set-an-opacity-only-to-the-background-image-of-a-div' rel=\"noopener\">incredibly useful link<\/a>&#8216;s advice on our &#8230;<br \/>\n<blockquote cite='https:\/\/www.rjmprogramming.com.au\/ITblog\/column-intelligence-primer-tutorial\/'><p>\nwish to apply opacity just to background image, but not the corresponding textual data (or other types) that is the primary content of that HTML element\n<\/p><\/blockquote>\n<\/li>\n<\/ul>\n<p>You can see a video of some of the practicalities to usage on an iPad mobile app version in the <a title='YouTube' href='https:\/\/youtube.com'>YouTube<\/a> video below &#8230;<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/6N55NeUfoBw\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/p>\n<p>Because data URIs are an option here, too, you will see in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php------------GETME\" title=\"pie_chart.php\" rel=\"noopener\">code changes<\/a> to <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php------------GETME\" title=\"pie_chart.php\" rel=\"noopener\">pie_chart.php<\/a> the need, now, to cater for the switch of HTML form navigation from &#8230;<\/p>\n<ul>\n<li>method=GET (the default) &#8230; to &#8230;<\/li>\n<li>method=POST (when the URL becomes too long)<\/li>\n<\/ul>\n<p> &#8230; and that new bit of logic is slated home to the generic external Javascript we have set aside for Google Charts work called <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js--------GETME\" title=\"gchartgen.js\" rel=\"noopener\">gchartgen.js<\/a> which changed for this work, in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js--------GETME\" title=\"gchartgen.js\" rel=\"noopener\">this way<\/a>.<\/p>\n<p>Maybe you can see how to use this feature yourself, and if that is the case you can try this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link.<\/p>\n<hr>\n<p id='gpccc-t'>Previous relevant <a target=\"_blank\" title='Google Pie Chart via Clipboard Co-ordinates Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/google-pie-chart-via-clipboard-co-ordinates-tutorial\/' rel=\"noopener\">Google Pie Chart via Clipboard Co-ordinates Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Pie Chart via Clipboard Co-ordinates Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart_clipboard.jpg\" title=\"Google Pie Chart via Clipboard Co-ordinates Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Pie Chart via Clipboard Co-ordinates Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Google Map Chart via Clipboard Co-ordinates Tutorial' href='#gmccc-t'>Google Map Chart via Clipboard Co-ordinates Tutorial<\/a> was a good precursor to today&#8217;s work interfacing this time to the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/piechart' title='Google Pie Charts' rel=\"noopener\">Pie Chart<\/a>.<\/p>\n<p>With this work, we&#8217;ve started refining the clipboard &#8220;smarts&#8221; by looking for linefeeds &#8230; in Javascript thoughts &#8230;<\/p>\n<p><code><br \/>\nString.fromCharCode(10)<br \/>\n<\/code><\/p>\n<p> &#8230; and as the data exits the Javascript prompt window on its way, before navigating back to the PHP itself, we can check for too many fields to the right of the data, and truncate the clipboard data, as necessary.  Along the way, we may be able to reject any header records with this same approach.  We can check for no numerical fields here.  Business specific logic can be applied here too.  With a Pie Chart, the original data, or the user, may be tempted to place &#8220;%&#8221; after the numerical data, and we can take the opportunity to weed these out.  Also, with the character data, it may be delimited by a double quote (ie. within &#8220;&#8221;), and with this knowledge in mind, we may be able to weed out confusing additional commas that could confuse us with the clipboard comma separated value format of the data.<\/p>\n<p>The lesson here, is to &#8220;validate early&#8221; and it could be good to &#8220;validate often&#8221; as well.  Real data can be strange indeed.<\/p>\n<p><code><br \/>\n function dlp(thisris) {<br \/>\n      if (thisris != null) {<br \/>\n        var commacount=thisris.toLowerCase().replace(\/\\&lt;\\\/td\\&gt;\/g,'  ,  ').indexOf(',');<br \/>\n        if (thisris.toLowerCase().replace('https:','http:').indexOf('http:') == 0) {<br \/>\n             fti=true;<br \/>\n             allowed=true;<br \/>\n             datac=thisris;<br \/>\n        } else if (commacount &gt;= 0) {<br \/>\n             var thatris=thisris.replace(\/\\ \\\"\/g,String.fromCharCode(10) + '\"').replace(\/\\&lt;tr\\&gt;\/g,'').replace(\/\\&lt;\\\/td\\&gt;\\&lt;td\\&gt;\/g,',').replace(\/\\&lt;\\\/tr\\&gt;\/g,String.fromCharCode(10)).replace(\/\\&lt;\\\/td\\&gt;\/g,',').replace(\/\\,\\,\/g,',').replace(\/\\,\\,\/g,',').replace(',' + String.fromCharCode(10),String.fromCharCode(10));<br \/>\n             var zisok=true, fldq=thatris.split(',');<br \/>\n             var pielines=thatris.split(String.fromCharCode(10));<br \/>\n             if ((fldq[0].replace('\"','').trim() + ' ').substring(0,1) &lt; '0' || (fldq[0].replace('\"','').trim() + ' ').substring(0,1) &gt; '9') {<br \/>\n              if ((fldq[eval(-1 + fldq.length)].replace('\"','').trim() + ' ').substring(0,1) &lt; '0' || (fldq[eval(-1 + fldq.length)].replace('\"','').trim() + ' ').substring(0,1) &gt; '9') {<br \/>\n               zisok=false;<br \/>\n              }<br \/>\n             }<br \/>\n             if (!zisok && pielines.length &gt; 1) {<br \/>\n             fldq=pielines[1].split(',');<br \/>\n             zisok=true;<br \/>\n             if ((fldq[0].replace('\"','').trim() + ' ').substring(0,1) &lt; '0' || (fldq[0].replace('\"','').trim() + ' ').substring(0,1) &gt; '9') {<br \/>\n              if ((fldq[eval(-1 + fldq.length)].replace('\"','').trim() + ' ').substring(0,1) &lt; '0' || (fldq[eval(-1 + fldq.length)].replace('\"','').trim() + ' ').substring(0,1) &gt; '9') {<br \/>\n               zisok=false;<br \/>\n              }<br \/>\n             }<br \/>\n             }<br \/>\n             if (zisok) {<br \/>\n             while (thatris.indexOf(String.fromCharCode(10)) != -1) {<br \/>\n              var inpies, pied='';<br \/>\n              thatris='';<br \/>\n              var sthatris='';<br \/>\n              for (var ipie=0; ipie&lt;pielines.length; ipie++) {<br \/>\n               inpies=pielines[ipie].split(',');<br \/>\n               if (inpies.length &gt; 1) {<br \/>\n                if ((inpies[0].trim() + \" \").substring(0,1) == '\"' && (inpies[1].trim() + \" \").substring(0,1) == '\"') {<br \/>\n                sthatris=pied + inpies[0].trim().substring(1).split('\"')[0].trim().replace('%','').replace(',','').replace(',','') + ',' + inpies[1].trim().substring(1).split('\"')[0].trim().replace('%','').replace(',','').replace(',','');<br \/>\n                } else if ((inpies[0].trim() + \" \").substring(0,1) == '\"') {<br \/>\n                sthatris=pied + inpies[0].trim().substring(1).split('\"')[0].trim().replace('%','').replace(',','').replace(',','') + ',' + inpies[1].trim().replace('%','').replace('\"','');<br \/>\n                } else if ((inpies[1].trim() + \" \").substring(0,1) == '\"') {<br \/>\n                sthatris=pied + inpies[0].trim().replace('%','') + ',' + inpies[1].trim().substring(1).split('\"')[0].trim().replace('%','').replace(',','').replace(',','');<br \/>\n                } else {<br \/>\n                sthatris=pied + inpies[0].trim().replace('%','') + ',' + inpies[1].trim().replace('%','').replace('\"','');<br \/>\n                }<br \/>\n                inpies=sthatris.replace(pied,'').split(',');<br \/>\n                if (((inpies[0].trim() + \" \").substring(0,1) &gt;= '0' && (inpies[0].trim() + \" \").substring(0,1) &lt;= '9') || ((inpies[1].trim() + \" \").substring(0,1) &gt;= '0' && (inpies[1].trim() + \" \").substring(0,1) &lt;= '9')) {<br \/>\n                thatris+=sthatris;<br \/>\n                pied=',';<br \/>\n                }<br \/>\n               }<br \/>\n              }<br \/>\n             }<br \/>\n             thatris=thatris.replace(\/\\,\\,\/g,',');<br \/>\n             fti=true;<br \/>\n             allowed=true;<br \/>\n             datac='http;' + thatris;<br \/>\n             thisris='http;' + thatris;<br \/>\n             }<br \/>\n        }<br \/>\n      }<br \/>\n      return thisris;<br \/>\n }<br \/>\n<\/code><\/p>\n<p>Our PHP Google Chart Pie Chart interface is <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php-----------GETME\" rel=\"noopener\">pie_chart.php<\/a> changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php-----------GETME\" rel=\"noopener\">this way<\/a> for today&#8217;s work, that you can try yourself at this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link.<\/p>\n<p>Our PHP helper <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php----------GETME\" rel=\"noopener\">csv.php<\/a> changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php----------GETME\" rel=\"noopener\">this way<\/a> for today&#8217;s work.<\/p>\n<p>If you want to recreate the conditions as shown in today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart_clipboard.jpg\" title='Tutorial picture' rel=\"noopener\">tutorial picture<\/a> &#8230;<\/p>\n<ol>\n<li>copy the contents below &#8230;<br \/>\n<iframe style='width:100%;height:330px;' src='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/intensity_chart.csv_GETME' title='Copy this'><\/iframe><br \/>\n &#8230; <\/li>\n<li>and paste into the 4th prompt (window&#8217;s text) box of the Google Charts Pie Chart interfacing <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link<\/li>\n<li>click OK button &#8230; P.S.  On first prompt, appending <i>&amp;onclick=y<\/i> to what you want as a Pie Chart title will work the Pie Chart&#8217;s select event logic we harness with this interfacing<\/li>\n<li>&#8230; or, if you are feeling lazy &#8230;<br \/>\n<a target=\"_blank\" title=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php?title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php?title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Population&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\" rel=\"noopener\">https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php?title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]<\/a><\/li>\n<\/ol>\n<hr>\n<p id='gmccc-t'>Previous relevant <a target=\"_blank\" title='Google Map Chart via Clipboard Co-ordinates Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/google-map-chart-via-clipboard-co-ordinates-tutorial\/' rel=\"noopener\">Google Map Chart via Clipboard Co-ordinates Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Map Chart via Clipboard Co-ordinates Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/mapclipboard.jpg\" title=\"Google Map Chart via Clipboard Co-ordinates Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Map Chart via Clipboard Co-ordinates Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Google Map Chart via URL Co-ordinates Tutorial' href='#gmcurlc-t'>Google Map Chart via URL Co-ordinates Tutorial<\/a> added functionality directed towards a &#8230;<\/p>\n<ul>\n<li>secondary data source, that you access &#8230; but today we are going to extend that functionality to support a &#8230;<\/li>\n<li>primary data source that you enter a comma separated values list for the [place,lat,long] data sets (yourself, via the computer keyboard) &#8230; as well as a &#8230;<\/li>\n<li>&#8220;subset&#8221; of a secondary data source, that you access, more than likely, using you computer device&#8217;s <i>clipboard<\/i><\/li>\n<\/ul>\n<p>The invention of the <a target=\"_blank\" title='Clipboard information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Clipboard_%28computing%29' rel=\"noopener\"><i>clipboard<\/i><\/a> was a brilliant step.  Before it, we were so beholden to programmers to get tailored work done, and though it&#8217;s sad that so many of you get on without us (cough, cough) &#8230; well &#8230; we were being overworked anyway &#8230; and there was that project to &#8220;make the morning breakfast coffee before you even know you wanted it&#8221; to get onto &#8230; finally.<\/p>\n<p>Perhaps we all forget now what the <i>clipboard<\/i> has meant, for so many of us.  It is the freedom of &#8220;copy and paste&#8221;, the individualism tool of content creation.<\/p>\n<p>Yesterday&#8217;s functionality idea is a case in point.  &#8220;Secondary data sources&#8221; are, by definition, out of your control, as to what the content of a web page is.  Notice how, yesterday, we made some content that was (s)ftp transferred over to the rjmprogramming.com.au domain via &#8230; yes, you guessed it &#8230; <\/p>\n<ol>\n<li>me copying (off the <a target=\"_blank\" title='Co-ordinates, thanks' href='https:\/\/www.mapbox.com\/help\/troubleshoot-csv\/#example' rel=\"noopener\">mapbox.com<\/a> website, thanks, as <b>part<\/b> of the contents of a webpage) &#8230; then &#8230;<\/li>\n<li>pasting that content into a csv text file on the MacBook Pro computer we&#8217;re using (locally) &#8230; and then &#8230;<\/li>\n<li>(s)ftp transferred over to rjmprogramming.com.au domain to represent a &#8230;<\/li>\n<li>URL usable within the functionality of our <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> <a target=\"_blank\" title='Google Chart Map Chart information from Google' href='https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/map' rel=\"noopener\">Map Chart<\/a> interface we host here as the PHP <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php-------------------------GETME\" rel=\"noopener\">map.php<\/a>&#8216;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link<\/li>\n<\/ol>\n<p>But there you are, an intelligent human, able to determine for yourself the data you are interested in (quite often not the entire contents of a webpage, as yesterday&#8217;s work is ideally asking for), so that being the case, the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php-------------------------GETME\" title=\"map.php\" rel=\"noopener\">map.php<\/a> modifications to PHP code<\/a> we&#8217;ve made today, make it possible for (the much simpler) &#8230;<\/p>\n<ol>\n<li>me copying (off the <a target=\"_blank\" title='Co-ordinates, thanks' href='https:\/\/www.mapbox.com\/help\/troubleshoot-csv\/#example' rel=\"noopener\">mapbox.com<\/a> website, thanks, as <b>part<\/b> of the contents of a webpage) &#8230; then &#8230;<\/li>\n<li>pasting that content within the functionality of our <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> <a target=\"_blank\" title='Google Chart Map Chart information from Google' href='https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/map' rel=\"noopener\">Map Chart<\/a> interface we host here as the PHP <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php-------------------------GETME\" rel=\"noopener\">map.php<\/a>&#8216;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link<\/li>\n<\/ol>\n<p>If you have the <i>clipboard<\/i> as your friend, your time around computers becomes so much more enjoyable, and flexible, and within <i>your<\/i> control.  We, as programmers, need to think, on occasions, or encourage, on occasions, how the user is likely to use the clipboard, in conjunction with our applications.  As you might surmise, that can be a pretty unpredictable &#8220;artform&#8221;.<\/p>\n<p>Our PHP helper <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php---------GETME\" rel=\"noopener\">csv.php<\/a> changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php---------GETME\" rel=\"noopener\">this way<\/a> for today&#8217;s work.<\/p>\n<hr>\n<p id='gmcurlc-t'>Previous relevant <a target=\"_blank\" title='Google Map Chart via URL Co-ordinates Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/google-map-chart-via-url-co-ordinates-tutorial\/' rel=\"noopener\">Google Map Chart via URL Co-ordinates Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Google Map Chart via URL Co-ordinates Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/mapmore.jpg\" title=\"Google Map Chart via URL Co-ordinates Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Map Chart via URL Co-ordinates Tutorial<\/p><\/div>\n<p>The last blog posting referring to the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Chart<\/a> <a target=\"_blank\" title='Google Chart Map Chart information from Google' href='https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/map' rel=\"noopener\">Map Chart<\/a> interface we host here was with <a title='Emoji Name Search Map Chart Weather Tutorial' href='#ensmcwt'>Emoji Name Search Map Chart Weather Tutorial<\/a>, but today we are presenting a major functionality addition with implications for other Google Chart interfacing PHP codesets here.  We are allowing the user at the second prompt to take the data from a URL data source containing CSV (comma separated values) place,latitude,longitude data or those three fields in an HTML table element contents perhaps.<\/p>\n<p>We&#8217;ve added the ability to &#8220;map&#8221; (tee hee) &#8230;<\/p>\n<p><code><br \/>\nHTTP:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php?title=Where%20We%20Are&onclick=y&label=['Lat',&value='Lon',%20'Name']&data=<b>,%20[-33.90743410270099,151.17646964910696,~Parent1~]%20,%20[-33.907440603083124,151.1764659419197,~Parent2~]<\/b><br \/>\n<\/code><\/p>\n<p> &#8230; from a CSV data URL look with contents &#8230;<\/p>\n<p><code><br \/>\n-33.907434102700991,151.17646964910696,Parent1<br \/>\n-33.907440603083124,151.17646594191973,Parent2<br \/>\n<\/code><\/p>\n<p> &#8230; that if placed at rjmprogramming.com.au&#8217;s Document Root and called parent.csv then a URL of &#8230;<\/p>\n<p><code><br \/>\nHTTP:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php?title=Where%20We%20Are&onclick=y&label=['Lat',&value='Lon',%20'Name']&data=<b>,%20[0.00000001,0.0000000,~HTTP:\/\/rjmprogramming.com.au\/parent.csv~]<\/b><br \/>\n<\/code><\/p>\n<p> &#8230; could be a shortcut to that first URL same look.  You can see another example using data from <a target=\"_blank\" title='Co-ordinates, thanks' href='https:\/\/www.mapbox.com\/help\/troubleshoot-csv\/#example' rel=\"noopener\">mapbox.com<\/a>, thanks, show the scenario our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/mapmore.jpg\" title=\"Tutorial picture\" rel=\"noopener\">tutorial picture<\/a> illustrates.<\/p>\n<p>The way this &#8220;mapping&#8221; (tee hee, tee hee) of URLs can happen is that the PHP supervisor <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php------------------------GETME\" rel=\"noopener\">map.php<\/a> (changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php------------------------GETME\" rel=\"noopener\">this way<\/a> and which you can try with this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link) &#8220;includes&#8221; (ie. calls) &#8230;<\/p>\n<p><code><br \/>\n    include \"..\/csv.php\";<br \/>\n<\/code><\/p>\n<p> &#8230; a (now bigger, and more functional) <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php--------GETME\" rel=\"noopener\">csv.php<\/a> (changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/csv.php--------GETME\" rel=\"noopener\">this way<\/a>) does its best to handle a few looks to the CSV or tabular data, with code to allow for &#8230;<\/p>\n<ul>\n<li>CSV data ordered place,latitude(decimal),longitude(decimal) or latitude(decimal),longitude(decimal),place or place,longitude(decimal),latitude(decimal) or longitude(decimal),latitude(decimal),place<\/li>\n<li>CSV data ordered place,latitude(W\/S\/E\/N_deg_min_secs),longitude(W\/S\/E\/N_deg_min_secs) or latitude(W\/S\/E\/N_deg_min_secs),longitude(W\/S\/E\/N_deg_min_secs),place or place,longitude(W\/S\/E\/N_deg_min_secs),latitude(W\/S\/E\/N_deg_min_secs) or longitude(W\/S\/E\/N_deg_min_secs),latitude(W\/S\/E\/N_deg_min_secs),place<\/li>\n<li>HTML tabular data ordered place,latitude(decimal),longitude(decimal) or latitude(decimal),longitude(decimal),place or place,longitude(decimal),latitude(decimal) or longitude(decimal),latitude(decimal),place<\/li>\n<li>HTML tabular data ordered place,latitude(W\/S\/E\/N_deg_min_secs),longitude(W\/S\/E\/N_deg_min_secs) or latitude(W\/S\/E\/N_deg_min_secs),longitude(W\/S\/E\/N_deg_min_secs),place or place,longitude(W\/S\/E\/N_deg_min_secs),latitude(W\/S\/E\/N_deg_min_secs) or longitude(W\/S\/E\/N_deg_min_secs),latitude(W\/S\/E\/N_deg_min_secs),place<\/li>\n<\/ul>\n<hr>\n<p id='ensmcwt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Map Chart Weather Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-map-chart-weather-tutorial\/' rel=\"noopener\">Emoji Name Search Map Chart Weather Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Map Chart Weather Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/worldflagw.jpg\" title=\"Emoji Name Search Map Chart Weather Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Map Chart Weather Tutorial<\/p><\/div>\n<p>If you&#8217;ve been studying the code of our hierarchy for our Emoji Flags of the World web application &#8230;<\/p>\n<ul>\n<li>grandparent <a target=\"_blank\" title='World Flags live run' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html' rel=\"noopener\">Emoji Flags of the World live run<\/a>, with this HTML and Javascript <a target=\"_blank\" title='world_flags.html' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html-GETME' rel=\"noopener\">world_flags.html<\/a> HTML and Javascript, unchanged from yesterday&#8217;s <a title='Emoji Name Search Timezone Tutorial' href='#enstt'>Emoji Name Search Timezone Tutorial<\/a> &#8230; supervising &#8230;<\/li>\n<li>parent <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php----GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> PHP partner, also unchanged from yesterday, because, today, our focus is on what this supervises &#8230;<\/li>\n<li><b>child <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php---------------------GETME\" title=\"map.php\" rel=\"noopener\">map.php<\/a> PHP that changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php---------------------GETME\" title=\"map.php\" rel=\"noopener\">this way<\/a> (and which is an independent <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\">Google Chart Map Chart interfacing live run<\/a> in its own right)<\/b><\/li>\n<\/ul>\n<p> &#8230; am sure you&#8217;ll have noticed how bottom heavy it is on the &#8220;child&#8221; as far as functionality goes.  What we like to call &#8220;the hard working duck syndrome&#8221;.  Partly, that is because we see the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Charts<\/a> <a target=\"_blank\" title='Google Chart Map Chart' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=4832' rel=\"noopener\">Map Chart<\/a> interface we have as being a very useful &#8220;meeting point&#8221; with interfacing web applications tending towards the &#8220;where&#8221; of life.<\/p>\n<p>Today&#8217;s job, extending yesterday&#8217;s <a title='Emoji Name Search Map Chart Tutorial' href='#ensmct'>Emoji Name Search Map Chart Tutorial<\/a> is to add Map Chart interfacing to the great <a target=\"_blank\" title='Weather Underground' href='http:\/\/www.wunderground.com' rel=\"noopener\">Weather Underground<\/a> and its great API service for autocomplete name searches for weather (and hurricane) information &#8230; thanks.<\/p>\n<p>The changes are again just to that &#8220;hard working duck&#8221; Map Chart interface &#8220;child&#8221; web application, as for yesterday&#8217;s work.  We were very keen to do this, especially because &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='Weather Underground' href='http:\/\/www.wunderground.com' rel=\"noopener\">Weather Underground<\/a> database works most succinctly with <i>Placename, Country<\/i> identification pairs, better than for the &#8230;<\/li>\n<li><i>Continent\/Placename<\/i> setup of (PHP) Timezones<\/li>\n<\/ul>\n<p> &#8230; and so, while we are going to so much trouble scouring Timezone places for their associated Countries, it is a really good opportunity to slot in some Weather API interfacing to our Emoji World Flags web application, which is starting to be looking better and better as a trip planning aid.<\/p>\n<hr>\n<p id='ensmct'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Map Chart Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-map-chart-tutorial\/' rel=\"noopener\">Emoji Name Search Map Chart Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Map Chart Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/worldflagtz.jpg\" title=\"Emoji Name Search Map Chart Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Map Chart Tutorial<\/p><\/div>\n<p>We now have a three tier functionality hierarchy for our Emoji Flags of the World web application &#8230;<\/p>\n<ul>\n<li>grandparent <a target=\"_blank\" title='World Flags live run' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html' rel=\"noopener\">Emoji Flags of the World live run<\/a>, with this HTML and Javascript <a target=\"_blank\" title='world_flags.html' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html-GETME' rel=\"noopener\">world_flags.html<\/a> HTML and Javascript, unchanged from yesterday&#8217;s <a title='Emoji Name Search Timezone Tutorial' href='#enstt'>Emoji Name Search Timezone Tutorial<\/a> &#8230; supervising &#8230;<\/li>\n<li>parent <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php----GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> PHP partner, also unchanged from yesterday, because, today, our focus is on what this supervises &#8230;<\/li>\n<li><b>child <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php--------------------GETME\" title=\"map.php\" rel=\"noopener\">map.php<\/a> PHP that changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php--------------------GETME\" title=\"map.php\" rel=\"noopener\">this way<\/a> (and which is an independent <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Map\/map.php\" rel=\"noopener\">Google Chart Map Chart interfacing live run<\/a> in its own right)<\/b><\/li>\n<\/ul>\n<p> &#8230; all made so very possible when web applications sit in the same domain and you utilize the HTML <a target=\"_blank\" title='HTML iframe element information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_iframe.asp' rel=\"noopener\">iframe<\/a> element.<\/p>\n<p>We wanted to enhance its integration by &#8230;<\/p>\n<ul>\n<li>adding in &#8220;locality pins&#8221; for all PHP Timezone places in the country of interest<\/li>\n<li>involving Emoji flags in the Map Chart title (rather than as a pin) because Emojis, after all, are like textual data, not HTML (but can use HTML Entity representations in both)<\/li>\n<\/ul>\n<p>To work the latter of these we called on recent experience with the &#8220;Fifth Beatle&#8221; discussion in <a target=\"_blank\" title='Emoji Name Search Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-primer-tutorial\/' rel=\"noopener\">Emoji Name Search Primer Tutorial<\/a> &#8230;<\/p>\n<blockquote cite='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-primer-tutorial\/'><p>\nWe got quite excited recently with <a title='Rainbow Games PHP Emoji Tutorial' href='#rgphpet'>Rainbow Games PHP Emoji Tutorial<\/a> when we added a (fourth Beatle) <i>emoji helper<\/i>, called <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a>, into the mix of tools to gather emoji information.  Today, we&#8217;ve got a new Emoji Search web application that introduces a new (<a target=\"_blank\" title='Pete Best information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Fifth_Beatle' rel=\"noopener\">fifth Beatle(?)<\/a>) <b>emoji helper tool<\/b> to add into the &#8220;how we see it&#8221; mix &#8230;\n<\/p><\/blockquote>\n<p>We found that <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> could be used in our map Chart interfacing PHP to look up the HTML Decimal Entity for a flag of a country via the URL pattern &#8230;<\/p>\n<p><code><br \/>\nHTTP:\/\/www.emojiterra.com\/flag-for-[CountryNameSpacesMakeMinusSignsLowerCase]<br \/>\n<\/code><\/p>\n<p>So even though Google Chart Map Charts do not allow HTML in their titles there is nothing stopping you putting in an HTML Entity Emoji coding.<\/p>\n<p>As far as the former goes, we again called on the PHP <a target=\"_blank\" title='DateTimeZone class' href='http:\/\/php.net\/manual\/en\/class.datetimezone.php' rel=\"noopener\">DateTimeZone<\/a> class to scrutinize the first Timezone in the Map Chart title, derive its ISO 2 letter Country Code, and look through the array list of (PHP) Timezones to garner latitude and longitude, time now, and GMT offset information necessary to improve the &#8220;where&#8221; and &#8220;when&#8221; aspects of our Google Chart Map Chart interfacing.<\/p>\n<hr>\n<p id='enstt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Timezone Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-timezone-tutorial\/' rel=\"noopener\">Emoji Name Search Timezone Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Timezone Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/worldflag.jpg\" title=\"Emoji Name Search Timezone Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Timezone Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Emoji Name Search Map Tutorial' href='#ensmt'>Emoji Name Search Map Tutorial<\/a> was a step in the direction of &#8220;where&#8221; functionality, but because PHP teams up with the supervisory HTML &#8220;Emoji World Flags&#8221; web application, to make all this happen, there is the opportunity to add interest by adding a &#8220;when&#8221; aspect to how it works.<\/p>\n<p>As we&#8217;ve said many times now, should you have access to PHP, you also have access to its <a target=\"_blank\" title='DateTimeZone class' href='http:\/\/php.net\/manual\/en\/class.datetimezone.php' rel=\"noopener\">DateTimeZone<\/a> class where Timezones can be linked to ISO 2 letter Country Codes, useful as an integration point as of recent times when we introduced ISO 2 letter Country Codes to today&#8217;s (supervisory) <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" title=\"Click picture\" rel=\"noopener\">live run<\/a>&#8216;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html-GETME\" title=\"world_flags.html\" rel=\"noopener\">world_flags.html<\/a> HTML and Javascript code.<\/p>\n<p>But it is not HTML code that changes today.  It is its PHP partner <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php----GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php----GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">this way<\/a>, that arranges that its call of <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Charts<\/a> <a target=\"_blank\" title='Google Chart Map Chart' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=4832' rel=\"noopener\">Map Chart<\/a> passes across a new URL &#8230;<\/p>\n<p><code><br \/>\n&amp;ccode=[ISO 2 letter Country Code]<br \/>\n<\/code><\/p>\n<p> &#8230; argument that uses a new PHP function as below (arrays shortened for practicality purposes) &#8230;<\/p>\n<p><code><br \/>\n&lt;?php<br \/>\n function inctycodecheck($incd, $sofar) {<br \/>\n    $nearname=[\"Africa\/Abidjan\",\"Africa\/Accra\", ... ]; \/\/ array of Timezone names<br \/>\n    $retv=\"\";<br \/>\n    $retd=\"\";<br \/>\n    $otz = new DateTimeZone(\"UTC\");<br \/>\n    $jj=0;<br \/>\n    $origin_dt = new DateTime(\"now\", $otz);<br \/>\n    for ($best1=0; $best1&lt;sizeof($nearname); $best1++) {<br \/>\n        try {<br \/>\n        $tz = new DateTimeZone($nearname[$best1]);<br \/>\n        $cloc = $tz-&gt;getLocation();<br \/>\n        $ctrycode = $cloc['country_code'];<br \/>\n        if (strtoupper($incd) == strtoupper($ctrycode)) {<br \/>\n         $remote_dt = new DateTime(\"now\", $tz);<br \/>\n         $offset = ($tz-&gt;getOffset($remote_dt) - $otz-&gt;getOffset($origin_dt)) \/ 3600;<br \/>\n         $newp=$retd . $nearname[$best1] . \"\/\" . $remote_dt-&gt;format('Y-m-d_H:i:s') . \" (GMT\" . $offset . \")\";<br \/>\n         $huhs=explode(\" (GMT\" . $offset . \")\", $retv);<br \/>\n         if (sizeof($huhs) == 2) {<br \/>\n           if (explode(\"\/\", $newp)[0] != explode(\"\/\", explode(\",\", $huhs[0])[-1 + sizeof(explode(\",\", $huhs[0]))])[0]) {<br \/>\n             $huhs=explode(\"youwillneverfindthis\", $retv);<br \/>\n           }<br \/>\n         }<br \/>\n         if (($sofar + strlen(urlencode(($retv . $newp)))) &lt; 950 && $jj &lt; 10 && sizeof($huhs) == 1) {<br \/>\n          $retv.=$newp;<br \/>\n          $retd=\",\";<br \/>\n          $jj++;<br \/>\n         }<br \/>\n        }<br \/>\n        } catch (Exception $exc) { }<br \/>\n    }<br \/>\n    return $retv;<br \/>\n }<br \/>\n?&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; called later in the code with the <b>new block of code<\/b> as per &#8230;<\/p>\n<p><code><br \/>\n&lt;?php<br \/>\n       $urlis=urldecode($_GET['gmc']); \/\/ URL to point at template Google Chart Map Chart call for Country of interest<br \/>\n       if (strpos($urlis, ',,') !== false) {<br \/>\n       $urlis=str_replace(\",,\", urlencode($latis . \",\" . $longis . \",\"), $urlis);<br \/>\n       } else {<br \/>\n       $urlis=str_replace(urlencode(\",,\"), urlencode($latis . \",\" . $longis . \",\"), $urlis);<br \/>\n       }<br \/>\n       <b>if (isset($_GET['ccode'])) {<br \/>\n        $urlis=str_replace(\"&onclick=\", \"%20\" . urlencode(inctycodecheck(urldecode($_GET['ccode']), (strlen($urlis) + 3))) . \"&onclick=\", $urlis);  \/\/ appends to the title argument<br \/>\n       }<\/b><br \/>\nif (isset($_SERVER['HTTPS'])) {<br \/>\n    if ($_SERVER['HTTPS'] == \"on\") {<br \/>\n       header(\"Location: https:\" . $urlis);<br \/>\n    } else {<br \/>\n       header(\"Location: http:\" . $urlis);<br \/>\n    }<br \/>\n} else {<br \/>\n       header(\"Location: http:\" . $urlis);<br \/>\n}<br \/>\n       exit;<br \/>\n?&gt;<br \/>\n<\/code><\/p>\n<hr>\n<p id='ensmt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Map Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-map-tutorial\/' rel=\"noopener\">Emoji Name Search Map Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Map Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/worldflags.jpg\" title=\"Emoji Name Search Map Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Map Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s posted data <a title='Emoji Name Search Posting Tutorial' href='#enspt'>Emoji Name Search Posting Tutorial<\/a> functionality opened the door to &#8220;where&#8221; web application (software) integration, because the wonderful <a target=\"_blank\" title='Wikipedia' href='http:\/\/www.wikipedia.org' rel=\"noopener\">Wikipedia<\/a> has compiled Latitude,Longitude co-ordinate pairs for those countries, and that is our foot in the door to place an HTML <i>a<\/i> link under the Emoji flags, that points to our favourite &#8220;where&#8221; interfacing tool, the <a target=\"_blank\" href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.' rel=\"noopener\">Google Charts<\/a> <a target=\"_blank\" title='Google Chart Map Chart' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=4832' rel=\"noopener\">Map Chart<\/a>.<\/p>\n<p>Because the Map Chart and Emoji Flag web application share the same domain we can keep this functionality on this same Emoji Flag webpage in an &#8230;<\/p>\n<ul>\n<li>HTML iframe element <i>name=gcmi<\/i> <i>id=gcmi<\/i> initially invisible &#8230; &#8220;populated by&#8221; &#8230;<\/li>\n<li>HTML <i>a<\/i> element <i>target=gcmi<\/i> <i>href=[URL to Map Chart for Country of Interest]<\/i> <i>onclick=aoc();<\/i> &#8230;<br \/>\n<code><br \/>\nfunction aoc() {<br \/>\n   document.getElementById('gmci').style.width='450px';<br \/>\n   document.getElementById('gmci').style.height='450px';<br \/>\n   document.getElementById('gmci').style.display='inline-block';<br \/>\n}<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p>Another way to zoom around the world online!<\/p>\n<p>You can try the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html\" rel=\"noopener\">Emoji Flags live run<\/a> (with underlying <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html-GETME\" rel=\"noopener\">world_flags.html<\/a> changed <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html-GETME\" rel=\"noopener\">this way<\/a>) or the other Emoji functionalities that have this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> and\/or its PHP source code <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php---GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php---GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">this way<\/a> to extend its software integration capabilities.<\/p>\n<hr>\n<p id='enspt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Posting Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-posting-tutorial\/' rel=\"noopener\">Emoji Name Search Posting Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Posting Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.jpg\" title=\"Emoji Name Search Posting Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Posting Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Emoji Name Search Tailoring Tutorial' href='#enstt'>Emoji Name Search Tailoring Tutorial<\/a> was suitable for data sets of that smaller size able to be handled by the web server limit of URL length.  But what if there are too many data items in your data set to be handled by PHP&#8217;s $_GET[] array URL ? and &#038; delimited URLs?  We, having PHP serverside code at our disposal, can turn to $_POST[] (HTML) method=POST form action=[here&#8217;sLookingAtYouKid] scenarios, to get around this issue.  The unfortunate side effect of this is that the HTML <a target=\"_blank\" title='mailto information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tryit.asp?filename=tryhtml_link_mailto' rel=\"noopener\"><i>mailto:<\/i><\/a> <i>a<\/i> link (email client) method of sharing your Emoji web application relies on that $_GET[] approach, that is, unless you wrote a whole &#8220;bespoke&#8221; web application to help out, like we do today for our new Emoji &#8220;World Flags&#8221; web application with this <a target=\"_blank\" title='World Flags live run' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html' rel=\"noopener\">live run<\/a>, with this HTML and Javascript <a target=\"_blank\" title='World Flags live run' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/world_flags.html_GETME' rel=\"noopener\">world_flags.html<\/a> source code.<\/p>\n<p>That new &#8220;supervisor&#8221; being a guinea pig idea into the $_POST[] thinking, we add some HTML form element input type=text <i>additions<\/i> to allow for, out of &#8230;<\/p>\n<ul>\n<li>Emoji look class &#8230; and &#8230;<\/li>\n<li><i>Wording next to Emoji<\/i> &#8230; and &#8230;<\/li>\n<li><i>URL of Wording&#8217;s link, be that substituted or appended<\/i><\/li>\n<\/ul>\n<p> &#8230; <i>mapped values<\/i>, optionally, off a newly offered HTML form element input type=text for this mapped comma or blank separated word list.<\/p>\n<p>Perhaps, now, you &#8220;long data set thinkers&#8221; want to try the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> and\/or its PHP source code <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php--GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php--GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">this way<\/a> to extend its data set size capabilities.<\/p>\n<hr>\n<p id='enstt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Tailoring Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-tailoring-tutorial\/' rel=\"noopener\">Emoji Name Search Tailoring Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Tailoring Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts_more.jpg\" title=\"Emoji Name Search Tailoring Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Tailoring Tutorial<\/p><\/div>\n<p>Information Technology is full of &#8220;buzz words&#8221;, and am sure you wince at some to all of them yourselves.  That&#8217;s a bit why am using &#8220;Tailoring&#8221; rather than &#8230;<\/p>\n<p><strike><\/p>\n<ul>\n<li>sharing<\/i>\n<li>personalization<\/li>\n<\/ul>\n<p><\/strike><\/p>\n<p> &#8230; to give you a <strike>slumber<\/strike>rest from having to look under <strike>struck through<\/strike>deleted wording to look for hidden <strike>&#8220;buzz words&#8221;<\/strike>terminology that makes your <strike>hare<\/strike>hair <strike>sit up<\/strike>stand <strike>watching<\/strike>on <strike>Bugs Bunny<\/strike>end.<\/p>\n<p>We think, perhaps, that emojis can be important for young &#8220;would be&#8221; programmers to launch into.  Personally wonder how many &#8220;would be&#8221; programmers give the game up far too soon just because they don&#8217;t have those graphics skills, well, with emojis, a lot of that hard work, in miniature, has been done for you by some pretty creative people, so why not enjoy the fruits (chortle, in context, chortle) of their labour and start developing your own web applications to use them.  Daily, their use is increasing, as are the sharing of access methods.<\/p>\n<p>In today&#8217;s extension to the functionality started with yesterday&#8217;s <a title='Emoji Name Search Primer Tutorial' href='#enspt'>Emoji Name Search Primer Tutorial<\/a> we separate the <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> aspects to how it works and allow the user to &#8230;<\/p>\n<ul>\n<li>supply an Emoji Word List of interest<\/li>\n<li>perhaps supply a heading and subheading to describe the &#8220;concept&#8221; of that list<\/li>\n<li>supply either a &#8230;\n<ol>\n<li>URL prefix &#8230; or &#8230;<\/li>\n<li>URL with the ~ (tilde) character where you want, substituted, your emoji name<\/li>\n<\/ol>\n<p> &#8230; to be a navigation destination in that similar new window navigation we used to access <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> &#8230;\n<\/li>\n<li>presenting all this in an HTML form action=[here&#8217;sLookingAtYouKid] method=GET &#8230; <\/li>\n<li>that method=GET opening the door to be able to offer an email client engine method to <strike>&#8220;share&#8221;<\/strike>email somebody the link to a screen that looks like the one you&#8217;re seeing<\/li>\n<\/ul>\n<p>Of course, we&#8217;d like you to find some of your own such Emoji Display Dynamically Created Web Applications yourself, but to encourage, we, in the web application, today, identified two ideas, namely &#8230;<\/p>\n<ul>\n<li>Fruit and Vegetables via Wikipedia at <a target=\"_blank\" title='Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/' rel=\"noopener\">https:\/\/en.wikipedia.org\/wiki\/<\/a> as a prefix &#8230; and &#8230;<\/li>\n<li>Astrology via Cafe Astrology at <u>https:\/\/cafeastrology.com\/~dailyhoroscope.html<\/u> via ~ (tilde) character substitution<\/li>\n<\/ul>\n<p> &#8230; each of which (and any you make will also) feature a link to the HTML <a target=\"_blank\" title='mailto information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tryit.asp?filename=tryhtml_link_mailto' rel=\"noopener\"><i>mailto:<\/i><\/a> <i>a<\/i> link out through the email client and to your recipient who can click the email link to <strike>&#8220;share&#8221;<\/strike><a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=civzfZ_3uVc' rel=\"noopener\">compare notes<\/a>.<\/p>\n<p>Perhaps, now, you want to try the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> and\/or its PHP source code <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php-GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php-GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">this way<\/a> to extend its functionality, involving a <a target=\"_blank\" title='Reveal blog postings at this blog' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/reveal' rel=\"noopener\">reveal<\/a> favourite of ours, the use of HTML(5)&#8217;s <a target=\"_blank\" title='HTML details tag information from w3schools' href='https:\/\/www.w3schools.com\/tags\/tag_details.asp' rel=\"noopener\">details<\/a> (and summary) element.<\/p>\n<p>You can also see this play out at WordPress 4.1.1&#8217;s <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-tailoring-tutorial\/' rel=\"noopener\">Emoji Name Search Tailoring Tutorial<\/a>.<\/p>\n<hr>\n<p id='enspt'>Previous relevant <a target=\"_blank\" title='Emoji Name Search Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/emoji-name-search-primer-tutorial\/' rel=\"noopener\">Emoji Name Search Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emoji Name Search Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.jpg\" title=\"Emoji Name Search Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Emoji Name Search Primer Tutorial<\/p><\/div>\n<p>We got quite excited recently with <a title='Rainbow Games PHP Emoji Tutorial' href='#rgphpet'>Rainbow Games PHP Emoji Tutorial<\/a> when we added a (fourth Beatle) <i>emoji helper<\/i>, called <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a>, into the mix of tools to gather emoji information.  Today, we&#8217;ve got a new Emoji Search web application that introduces a new (<a target=\"_blank\" title='Pete Best information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Fifth_Beatle' rel=\"noopener\">fifth Beatle(?)<\/a>) <b>emoji helper tool<\/b> to add into the &#8220;how we see it&#8221; mix below &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='Emojipedia' href='http:\/\/www.emojipedia.org' rel=\"noopener\">Emojipedia<\/a> is good for looking up Emoji names or concepts in words<\/li>\n<li><a target=\"_blank\" title='FileFormation Information website' href='http:\/\/www.fileformat.info' rel=\"noopener\">FileFormat Information<\/a> is great for HTML Entity determinations for your less complex Emojis<\/li>\n<li><a target=\"_blank\" title='Iemoji website' href='http:\/\/www.iemoji.com' rel=\"noopener\">Iemoji<\/a> is great for HTML Entity determinations for Emojis of all complexities<\/li>\n<li><i><a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> performs similar functionality as Iemoji but has a permalink organization more friendly to an &#8220;emoji search via emoji title&#8221; query, and that has suited our purposes today, and before, so, thanks a lot<\/i><\/li>\n<li><b><a target=\"_blank\" title='Iemoji website' href='https:\/\/afeld.github.io\/emoji-css\/' rel=\"noopener\">Emoji CSS<\/a> performs similar functionality to Emojipedia, but has a pictorial view of Emoji names as well, right from the word go, thanks<\/b><\/li>\n<\/ul>\n<p>With these emoji tools in mind we wrote a new PHP web application combining those last two to show Emojis pictorially (with their short name) initially and allow the user to search for an Emoji (match) list via their HTML input type=text (textbox) entry, which results in &#8230;<\/p>\n<ul>\n<li>the Emoji (match) list look (as an Emoji &#8220;display&#8221;) &#8230; and &#8230;<\/li>\n<li>an HTML <i>a<\/i> link which is that Emoji&#8217;s short name &#8230; linking to &#8230;<\/li>\n<li>an <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> webpage with more detail, including HTML Entity information if &#8220;short name&#8221; is unique, or one extra click away, if not<\/li>\n<\/ul>\n<p>Maybe you need to try the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php\" title=\"Click picture\" rel=\"noopener\">live run<\/a> and\/or its PHP source code <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/emoticon_keyboard_shortcuts.php_GETME\" title=\"emoticon_keyboard_shortcuts.php\" rel=\"noopener\">emoticon_keyboard_shortcuts.php<\/a> to download, perhaps?<\/p>\n<hr>\n<p id='rgphpet'>Previous relevant <a target=\"_blank\" title='Rainbow Games PHP Emoji Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/rainbow-games-php-emoji-tutorial\/' rel=\"noopener\">Rainbow Games PHP Emoji Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.htm\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Rainbow Games PHP Emoji Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation_php.jpg\" title=\"Rainbow Games PHP Emoji Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Rainbow Games PHP Emoji Tutorial<\/p><\/div>\n<p>In order to take that further genericization step onto the achievements of yesterday&#8217;s <a title='Rainbow Games Genericization Tutorial' href='#rggt'>Rainbow Games Genericization Tutorial<\/a> to <b>get onto<\/b> (the mathematics Induction principle inspired) &#8230;<\/p>\n<ul>\n<li>prove for the first case<\/li>\n<li>prove for the second case<\/li>\n<li><b>prove for the n<sup>th<\/sup> case<\/b><\/li>\n<\/ul>\n<p> &#8230; we had a choice of &#8230;<\/p>\n<ul>\n<li>continue on (with) the HTML code creation of new &#8220;hardcoded&#8221; arrays (managed by Javascript eval abstractional approach) &#8230; or &#8220;bite the bullet&#8221; and &#8230;<\/li>\n<li>try to work out a generic &#8220;emoji look<font size=1>erer<\/font> up<font size=1>perer<\/font>&#8221; arrangement<\/li>\n<\/ul>\n<p>Guess you can tell we opted for the latter, huh?!  We started the investigation of this by examining our three favourite emoji informational websites, namely &#8230;<\/p>\n<ol>\n<li><a target=\"_blank\" title='Emojipedia' href='http:\/\/www.emojipedia.org' rel=\"noopener\">Emojipedia<\/a><\/li>\n<li><a target=\"_blank\" title='FileFormation Information website' href='http:\/\/www.fileformat.info' rel=\"noopener\">FileFormat Information<\/a><\/li>\n<li><a target=\"_blank\" title='Iemoji website' href='http:\/\/www.iemoji.com' rel=\"noopener\">Iemoji<\/a><\/li>\n<\/ol>\n<p> &#8230; and were a bit surprised that we could not quite swing a generic method to glean the information, so don&#8217;t know whether our new &#8220;player&#8221; is &#8220;Ringo Starr&#8221; or not, but can tell you this, &#8220;its beat is much better than its bite&#8221; &#8230; <font size=1>chortle, chortle<\/font> &#8230;<\/p>\n<p><a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a> performs similar functionality as Iemoji but has a permalink organization more friendly to an &#8220;emoji search via emoji title&#8221; query, and that suits our purposes today, so, thanks a lot.  Without this query by &#8220;emoji title&#8221; possibility we&#8217;d have been forced to adopt more of those &#8220;hardcoded&#8221; arrays, which would have been alright, but this second approach opens the door to &#8220;sport&#8221; events in &#8220;The Rainbow Games&#8221; web application using emojis of the future (ie. they haven&#8217;t been invented yet).<\/p>\n<p>How to work the interfacing to <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com' rel=\"noopener\">Emoji Terra<\/a>?<\/p>\n<ul>\n<li>good ol&#8217; PHP serverside language<\/li>\n<li>good ol&#8217; PHP&#8217;s <a target=\"_blank\" title='file_get_contents' href='http:\/\/us1.php.net\/file_get_contents' rel=\"noopener\">file_get_contents<\/a> (supplemented by)<\/li>\n<li>good newish &#8220;PHP Source File as the Database Source&#8221; we&#8217;ve talked about in the past with <a target=\"_blank\" title='PHP Require Database Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/php-require-database-primer-tutorial\/' rel=\"noopener\">PHP Require Database Primer Tutorial<\/a> and <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/signature-signature-php-tutorial\/' title='Signature Signature PHP Tutorial' rel=\"noopener\">Signature Signature PHP Tutorial<\/a> whereby the PHP Source File updates itself with web application data<\/li>\n<\/ul>\n<p>This new PHP <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_lookup.php_GETME\" title=\"emoji_lookup.php\" rel=\"noopener\">emoji_lookup.php<\/a> treats the &#8220;<b>prove for the n<sup>th<\/sup> case<\/b>&#8221; sports as ones to &#8230;<\/p>\n<ul>\n<li>look up the emoji information for (in the order &#8220;PHP Source File as the Database Source&#8221; then try <a target=\"_blank\" title='file_get_contents' href='http:\/\/us1.php.net\/file_get_contents' rel=\"noopener\">file_get_contents<\/a> of Emoji Terra lookup), and &#8230;<\/li>\n<li>read the HTML partner source code <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.htm\" title=\"Click picture\" rel=\"noopener\">live run<\/a>&#8216;s underlying HTML and Javascript and CSS <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html---GETME\" title=\"emoji_walk_animation.htm\" rel=\"noopener\">emoji_walk_animation.htm<\/a> (which changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html---GETME\" title=\"emoji_walk_animation.html\" rel=\"noopener\">this way<\/a>)<\/li>\n<li>amend that HTML source to supplant the &#8220;Sprint&#8221; default sport for this new nominated sport <font size=1>&#8230; trying not to fall over laughing at some of the new sports we present (inspired by a visit to <a target=\"_blank\" title='Emoji Terra' href='http:\/\/www.emojiterra.com\/search\/woman' rel=\"noopener\">Emoji Terra search<\/a>)<\/font><\/li>\n<li>write out that amended HTML code as the web page (the beauty of a serverside language like PHP)<\/li>\n<\/ul>\n<p>The more detailed specifics of the <i><a target=\"_blank\" title='file_get_contents' href='http:\/\/us1.php.net\/file_get_contents' rel=\"noopener\">file_get_contents<\/a> of Emoji Terra lookup<\/i> above are &#8230;<\/p>\n<ul>\n<li>build up a URL starting with <i>HTTP:\/\/emojiterra.com\/<\/i> &#8230; then &#8230;<\/li>\n<li>in emoji<i>land<\/i> arrangements there are two genders (as our prefixes if you will) &#8230; <i>woman-<\/i> and <i>man-<\/i><\/li>\n<li>then add on a &#8220;middle&#8221; sport descriptor (eg. <i>biking<\/i>)<\/li>\n<li>in emoji<i>land<\/i> emoticon<i>land<\/i> arrangements there are five descriptors (as our suffixes if you will) &#8230; <i>-dark-skin-tone<\/i>, <i>-medium-dark-skin-tone<\/i>, <i>-medium-skin-tone<\/i>, <i>-medium-light-skin-tone<\/i>, <i>-light-skin-tone<\/i><\/li>\n<li>for that set of 2x1x5=10 URLs glean what &#8220;HTML dec&#8221; (HTML Entity) information you can glean via the <a target=\"_blank\" title='file_get_contents' href='http:\/\/us1.php.net\/file_get_contents' rel=\"noopener\">file_get_contents<\/a> call of the Emoji Terra URLs described above (eg. <a target=\"_blank\" title='' href='http:\/\/emojiterra.com\/woman-biking-dark-skin-tone' rel=\"noopener\">Emoji: Woman Biking: Dark Skin Tone<\/a>) &#8230; built into a <i>Javascript array<\/i> string to &#8220;plug into&#8221; the previously read HTML partner source code, and amended to output as the web page the user sees<\/li>\n<\/ul>\n<p>Sports of the future in emoji<i>land<\/i>?  Just ask for the equivalent of <i>biking<\/i> (above) off the user via a Javascript prompt window (on the proviso you read <a target=\"_blank\" title='Conditional Alternative to Javascript Popup Windows in iOS Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/conditional-alternative-to-javascript-popup-windows-in-ios-tutorial\/' rel=\"noopener\">Conditional Alternative to Javascript Popup Windows in iOS Tutorial<\/a> first please).<\/p>\n<hr>\n<p id='rggt'>Previous relevant <a target=\"_blank\" title='Rainbow Games Genericization Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/rainbow-games-genericization-tutorial\/' rel=\"noopener\">Rainbow Games Genericization Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.htm\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Rainbow Games Genericization Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation_row.jpg\" title=\"Rainbow Games Genericization Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Rainbow Games Genericization Tutorial<\/p><\/div>\n<p>What would help genericize the recent <a title='Rainbow Games Double Transformation Tutorial' href='#rgdtt'>Rainbow Games Double Transformation Tutorial<\/a> &#8220;Rainbow Games&#8221; web application?   How about introducing another sport?<\/p>\n<p>Again, in honour of &#8220;onions of the 4th dimension&#8221; approaches, we mainly, turn to the power of Javascript&#8217;s <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/jsref_eval.asp' title='Javascript eval' rel=\"noopener\">eval<\/a> methodology to achieve this <a target=\"_blank\" title='Abstraction information from Wikipedia, thanks.' href='https:\/\/en.wikipedia.org\/wiki\/Abstraction' rel=\"noopener\">abstracted<\/a> feeling to our web application.  Today, with this, we go <b>two thirds<\/b> of the way along the &#8220;Mathematical Induction&#8221; approach &#8230;<\/p>\n<ul>\n<li><b>prove for the first case<\/b><\/li>\n<li><b>prove for the second case<\/b><\/li>\n<li>prove for the n<sup>th<\/sup> case<\/li>\n<\/ul>\n<p>How does this use of Javascript eval manifest itself in this way?<\/p>\n<ul>\n<li>there are two arrays that work with the &#8220;content&#8221; of our &#8220;Rainbow Games&#8221; sport(s) (<font size=1>well, at least, the first &#8220;sprint running&#8221; sport<\/font>) called <i>emoticons[]<\/i> and <i>choices[]<\/i><\/li>\n<li>wherever we find references in the code to either of these two arrays we start to <b>involve<\/b> the global var<font size=1>iable<\/font> <b>verbsuffix<\/b> &#8230;<br \/>\n<code><br \/>\nvar verb='Sprint';<br \/>\nvar verbs=['Sprint','Row'];<br \/>\nvar anotherverb='run';<br \/>\n<b>var verbsuffix='';<\/b><br \/>\n<\/code><br \/>\n &#8230; in <b>altered<\/b> ways like &#8230;<br \/>\n<code><br \/>\nfunction plus(ih,ihep) {<br \/>\n  var outihep=ihep;<br \/>\n  if (<b>eval(\"<\/b>emoticons<b>\" + verbsuffix + \"<\/b>[<b>\" + <\/b>ih<b> + \"<\/b>]<b>\")<\/b>.indexOf('&lt;p&gt;') != -1) {<br \/>\n    outihep += ' (' + <b>eval(\"<\/b>emoticons<b>\" + verbsuffix + \"<\/b>[<b>\" + <\/b>ih<b> + \"<\/b>]<b>\")<\/b>.split('&lt;p&gt;')[1].split('&lt;')[0] + ')';<br \/>\n  }<br \/>\n  return outihep;<br \/>\n}<br \/>\n<\/code><br \/>\n &#8230; in that <i>abstracted<\/i> way &#8230; noting that sometimes you don&#8217;t need the &#8220;eval()&#8221; encasings &#8230;\n<\/li>\n<li>and so, working through the code this way it just falls to the coder to define new members for all the arrays for all the new sports (ours is &#8220;rowing&#8221; today), some of those new arrays (like for rowing are <i>emoticonsrowing[]<\/i> and <i>choicesrowing[]<\/i>) to involve &#8230;<\/li>\n<li>looking up emoji definitions from &#8230;\n<ol>\n<li><a target=\"_blank\" title='Emojipedia' href='http:\/\/www.emojipedia.org' rel=\"noopener\">Emojipedia<\/a><\/li>\n<li><a target=\"_blank\" title='FileFormation Information website' href='http:\/\/www.fileformat.info' rel=\"noopener\">FileFormat Information<\/a><\/li>\n<li><a target=\"_blank\" title='Iemoji website' href='http:\/\/www.iemoji.com' rel=\"noopener\">Iemoji<\/a><\/li>\n<\/ol>\n<p>&#8230; not forgetting to &#8230;\n<\/li>\n<li>make sure the event logics work for multiple sport scenarios &#8230; but mostly they do by sticking to the principles above &#8230; especially for the &#8230;<\/li>\n<li>new HTML select (dropdown) element allows the user to pick a sport<\/li>\n<\/ul>\n<p>Remaining a work in progress, you can try out our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.htm\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link that has underlying HTML and Javascript and CSS <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html--GETME\" title=\"emoji_walk_animation.htm\" rel=\"noopener\">emoji_walk_animation.htm<\/a>, and which changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html--GETME\" title=\"emoji_walk_animation.html\" rel=\"noopener\">this way<\/a> regarding today&#8217;s genericization work.  We hope it gives you food for thought.<\/p>\n<hr>\n<p id='rgdtt'>Previous relevant <a target=\"_blank\" title='Rainbow Games Double Transformation Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/rainbow-games-double-transformation-tutorial\/' rel=\"noopener\">Rainbow Games Double Transformation Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Rainbow Games Double Transformation Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation_dt.jpg\" title=\"Rainbow Games Double Transformation Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Rainbow Games Double Transformation Tutorial<\/p><\/div>\n<p>We were on the &#8220;road to personalization&#8221; for the web application game we started with yesterday&#8217;s <a title='Rainbow Games Primer Tutorial' href='#rgpt'>Rainbow Games Primer Tutorial<\/a> when &#8220;an old chestnut&#8221; came up again.  It&#8217;s happened before, the desire to &#8220;double transform&#8221; in CSS came about from our emoji &#8230; <\/p>\n<table>\n<tr>\n<td style='font-size:36px;'>&#127939;&#127998;&#8205;&#9792;&#65039;<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; table cell <i>mirroring<\/i> styling as per &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n* { overflow-x: visible; }<br \/>\n<br \/>\nselect { font-size: 36px; }<br \/>\n<br \/>\ntd.runner { width: 50px; word-wrap: break-word; font-size: 36px;<br \/>\n     <i>transform: scale(-1, 1); -o-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -webkit-transform:  scale(-1, 1);<\/i><br \/>\n        }   \/\/ <\/p>\n<table>\n<tr>\n<td style='font-size:36px;transform: scale(-1, 1); -o-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -webkit-transform:  scale(-1, 1);'>&#127939;&#127998;&#8205;&#9792;&#65039;<\/td>\n<\/tr>\n<\/table>\n<p>tr { max-height: 40px; }<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; necessary to make our running emojis run from left to right (that, alas, also transformed any accompanying &#8230; <\/p>\n<table>\n<tr>\n<td style='font-size:36px;transform: scale(-1, 1); -o-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -webkit-transform:  scale(-1, 1);'>&#127939;&#127998;&#8205;&#9792;&#65039; <\/p>\n<p style=\"display: block; font-size: 12px;-\">Florence<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; name), was added to in <b>this double transformational clause<\/b> to prove what this <a target=\"_blank\" title='Great link, thanks' href='https:\/\/stackoverflow.com\/questions\/5406368\/can-you-use-css-to-mirror-flip-text' rel=\"noopener\">wonderful web page<\/a> advice had to say.  In other words, a &#8220;double transform&#8221; CSS styling scenario like the one below &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n* { overflow-x: visible; }<br \/>\n<br \/>\nselect { font-size: 36px; }<br \/>\n<br \/>\ntd.runner { width: 50px; word-wrap: break-word; font-size: 36px;<br \/>\n     <i>transform: scale(-1, 1); -o-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -webkit-transform:  scale(-1, 1);<\/i><br \/>\n        }<br \/>\ntr { max-height: 40px; }<br \/>\n<br \/>\n<b>p {<br \/>\n    display: block;<br \/>\n    font-size: 12px;<br \/>\n    -webkit-transform: matrix(-1, 0, 0, 1, 0, 0);<br \/>\n    -moz-transform: matrix(-1, 0, 0, 1, 0, 0);<br \/>\n    -o-transform: matrix(-1, 0, 0, 1, 0, 0);<br \/>\n    transform: matrix(-1, 0, 0, 1, 0, 0);<br \/>\n}  <\/b>  \/\/ <\/p>\n<table style='width:50px;'>\n<tr style='width:50px;'>\n<td style='width:50px;font-size:36px;transform: scale(-1, 1); -o-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -webkit-transform:  scale(-1, 1);'>&#127939;&#127998;&#8205;&#9792;&#65039; <\/p>\n<p style=\"display: block; font-size: 12px;-webkit-transform: matrix(-1, 0, 0, 1, 0, 0);-moz-transform: matrix(-1, 0, 0, 1, 0, 0);-o-transform: matrix(-1, 0, 0, 1, 0, 0);transform: matrix(-1, 0, 0, 1, 0, 0);\">Florence<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p>&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; works as a &#8220;double transform&#8221; to first &#8230;<\/p>\n<ul>\n<li>mirror (image) flip the table cell (td) emoji data &#8230; but us appending some &#8220;Runner Name&#8221; textual data underneath also, annoyingly, got flipped  until &#8230;<\/li>\n<li>within that (same) table cell (td) element and after the emoji data we append an HTML <a target=\"_blank\" title='HTML p tag information from w3schools' href='https:\/\/www.w3schools.com\/tags\/tag_p.asp' rel=\"noopener\">p<\/a>(aragraph) element to both &#8230;\n<ol>\n<li>introduce a new HTML element type into the (CSS styling) mix &#8230; and to &#8230;<\/li>\n<li>introduce a new CSS transformation type, the matrix &#8230; perhaps either or both new parts to the problem critical to its success when, believe me, lots of other approaches don&#8217;t work<\/li>\n<\/ol>\n<\/ul>\n<p> &#8230; to personalize the &#8220;runners&#8221; and &#8220;users&#8221;, optionally, &#8220;into the game&#8221;, by allowing the &#8220;user&#8221; to name their &#8220;runners&#8221; and allow for a &#8220;runner energy&#8221; setting be a bit randomized, to add for some other interest &#8220;variety&#8221; to the game&#8217;s workings.  So, still a work in progress that you can try out at our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html\" title=\"Click picture\" rel=\"noopener\">live run<\/a> link that has underlying HTML and Javascript and CSS <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html-GETME\" title=\"emoji_walk_animation.html\" rel=\"noopener\">emoji_walk_animation.html<\/a>, and which changed in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html-GETME\" title=\"emoji_walk_animation.html\" rel=\"noopener\">this way<\/a> regarding today&#8217;s work.<\/p>\n<hr>\n<p id='rgpt'>Previous relevant <a target=\"_blank\" title='Rainbow Games Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/rainbow-games-primer-tutorial\/' rel=\"noopener\">Rainbow Games Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Interesting Places Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.jpg\" title=\"Rainbow Games Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Rainbow Games Primer Tutorial<\/p><\/div>\n<p>It&#8217;s been a while since we&#8217;ve written any conventional HTML and Javascript and CSS game.  Today&#8217;s game uses the &#8220;emoticon&#8221; section of the Emoji character set, defaulting so far, to the &#8220;running woman&#8221; emoji featuring in <a target=\"_blank\" title='Compound Emoji WordPress Usage Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/compound-emoji-wordpress-usage-tutorial\/' rel=\"noopener\">Compound Emoji WordPress Usage Tutorial<\/a>.<\/p>\n<p>It&#8217;s the early days of our &#8220;Rainbow Games&#8221; web application, and we&#8217;re starting with the animation featuring horizontal hashtag navigation techniques for a running race start to our game.  Where it finishes?  Hard to say! Today, we&#8217;ve looked at &#8220;splits&#8221; and a finish line.<\/p>\n<p>You can try out our burgeoning <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html\" title=\"Click picture\" rel=\"noopener\">live run game concept<\/a> link that has underlying HTML and Javascript and CSS <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/emoji_walk_animation.html_GETME\" title=\"emoji_walk_animation.html\" rel=\"noopener\">emoji_walk_animation.html<\/a>.<\/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='#d35745' onclick='var dv=document.getElementById(\"d35745\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/game\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d35745' 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='#d35768' onclick='var dv=document.getElementById(\"d35768\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/transformation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d35768' 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='#d35879' onclick='var dv=document.getElementById(\"d35879\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/eval\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d35879' 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='#d35937' onclick='var dv=document.getElementById(\"d35937\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/file_get_contents\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d35937' 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='#d36261' onclick='var dv=document.getElementById(\"d36261\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/emoji\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36261' 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='#d36272' onclick='var dv=document.getElementById(\"d36272\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/email\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36272' 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='#d36311' onclick='var dv=document.getElementById(\"d36311\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/post\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36311' 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='#d36342' onclick='var dv=document.getElementById(\"d36342\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/iframe\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36342' 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='#d36381' onclick='var dv=document.getElementById(\"d36381\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/timezone\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36381' 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='#d36392' onclick='var dv=document.getElementById(\"d36392\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/software\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36392' 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='#d36404' onclick='var dv=document.getElementById(\"d36404\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/weather\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36404' 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='#d37462' onclick='var dv=document.getElementById(\"d37462\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/geographicals\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d37462' 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='#d37486' onclick='var dv=document.getElementById(\"d37486\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/clipboard\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d37486' 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='#d37507' onclick='var dv=document.getElementById(\"d37507\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/csv\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d37507' 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='#d37729' onclick='var dv=document.getElementById(\"d37729\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/background\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d37729' 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='#d66730' onclick='var dv=document.getElementById(\"d66730\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/external-Javascript\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66730' 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='#d66742' onclick='var dv=document.getElementById(\"d66742\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/context\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66742' 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='#d66774' onclick='var dv=document.getElementById(\"d66774\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/header\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66774' 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='#d66792' onclick='var dv=document.getElementById(\"d66792\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/mobile\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66792' 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='#d66797' onclick='var dv=document.getElementById(\"d66797\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/map\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66797' 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='#d66802' onclick='var dv=document.getElementById(\"d66802\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/form\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66802' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday&#8217;s Google Chart Generic Background Image Outliers Tutorial shored up the relationships among four modes of use we consider relevant to our Google Chart interfacing PHP web applications &#8230; mobile app webview mode of use &#8230; always also &#8230; is &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-generic-background-image-modes-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":[2,12,14,37],"tags":[52,69,4855,83,84,4120,2472,2379,181,5086,2105,270,1654,327,409,418,2137,452,471,519,5083,557,3961,1996,3554,2882,630,631,652,2169,3982,745,2126,795,2080,5068,1836,932,944,950,967,997,1761,1045,1054,2241,1133,1137,1319,1345,1411,1583],"class_list":["post-66802","post","type-post","status-publish","format-standard","hentry","category-ajax","category-elearning","category-event-driven-programming","category-tutorials","tag-absolute-url","tag-ajax","tag-almalinux","tag-animated-gif","tag-animation-2","tag-apache-status","tag-background-repeat","tag-background-size","tag-call","tag-collaboratipn","tag-context","tag-cpanel","tag-data-uri","tag-did-you-know","tag-external-javascript","tag-file","tag-flat-file","tag-form","tag-function","tag-google-charts","tag-guise","tag-hashtag","tag-hashtagging","tag-header","tag-image-url","tag-intervention","tag-ipad","tag-iphone","tag-javascript","tag-location-hash","tag-lorem-picsum","tag-map","tag-map-chart","tag-mobile","tag-modal","tag-overridden","tag-override","tag-php","tag-pie-chart","tag-platform","tag-popup","tag-programming","tag-prompt","tag-relative-url","tag-report","tag-require","tag-share","tag-sharing","tag-tutorial","tag-url","tag-web-server","tag-window"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/66802"}],"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=66802"}],"version-history":[{"count":3,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/66802\/revisions"}],"predecessor-version":[{"id":66806,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/66802\/revisions\/66806"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=66802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=66802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=66802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}