{"id":62848,"date":"2024-03-05T03:01:00","date_gmt":"2024-03-04T17:01:00","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=62848"},"modified":"2024-03-04T10:07:05","modified_gmt":"2024-03-04T00:07:05","slug":"earth-scanner-map-image-margin-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-map-image-margin-tutorial\/","title":{"rendered":"Earth Scanner Map Image Margin Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Map Image Margin Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_margin.jpg\" title=\"Earth Scanner Map Image Margin Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Map Image Margin Tutorial<\/p><\/div>\n<p>We finally got around to addressing a bugbear we&#8217;ve had with our Earth Scanner web application, of recent times, right from its inception, regarding the small mismatch of overlayed HTML elements with the world map (image) underneath, improving on yesterday&#8217;s <a title='Earth Scanner Wikipedia Images Tutorial' href='#eswit'>Earth Scanner Wikipedia Images Tutorial<\/a>.<\/p>\n<p>So, is it the chicken or the egg that should change?  Neither, because the marmalade just crossed the road at the zebra crossing.  And you don&#8217;t want to make the zebra mad, now &#8230; huh?!<\/p>\n<p>Well, we figured, even just from a laziness perspective, it was easier to tinker with CSS <i>margin-left<\/i> and <i>margin-top<\/i> properties of the world map (image) element, and so <font color=blue>got to<\/font>, tweaking &#8230;<\/p>\n<p><code><br \/>\n  document.write(\"&lt;img src='\/HTMLCSS\/HYP_50M_SR_W.jpg' id=myimg<font color=blue> width=10800 height=5400 style='margin:0 0 0 0;margin-left:10px;margin-top:10px;'<\/font>&gt;&lt;\/img&gt;&lt;div id=dstyle&gt;&lt;\/div&gt;&lt;input id=sdtitle type=hidden value='Earth Scanner'&gt;&lt;\/input&gt;&lt;input id=sdtext type=hidden value='Earth Scanner - RJM Programming'&gt;&lt;\/input&gt;&lt;input id=sdurl type=hidden value='\" + document.URL.split('#')[0] + ('' + location.hash).replace(\/^null\/g,'').replace(\/^undefined\/g,'') + \"'&gt;&lt;\/input&gt;&lt;iframe scrolling=no farmeborder=0 style='z-index:3456;position:fixed;top:55px;left:15px;width:30px;height:24px;' src='\/HTMLCSS\/web_share_api_test.html?emojize=128231'&gt;&lt;\/iframe&gt;&lt;input type=hidden id=itworked value=''&gt;&lt;\/input&gt;&lt;iframe onload=coordit(this); id=wif style=display:none;margin-left:50px; src='\/\/wikipedia.org\/wiki\/Saint_George,_Antigua_and_Barbuda'&gt;&lt;\/iframe&gt;&lt;iframe onload=coordittwo(this); id=wiftwo style=display:none; src=&gt;&lt;\/iframe&gt;&lt;input type=hidden id=placegeo title='' value=''&gt;&lt;\/input&gt;\" + atend);<br \/>\n  document.body.title='' + document.title + String.fromCharCode(10) + ' ... at prompt ++ can make delay between snapshots slower and -- can make delay faster ' + String.fromCharCode(10) + ' ... at prompt &gt; can hide time related information else &lt; reveals again ' + String.fromCharCode(10) + ' ... comma lists of TimeZone places (suffix ? for Wikipedia ! forced), Country Codes, Country Names can be plotted via click or via hashtag use at address bar ' + String.fromCharCode(10) + ' ... suffix with space to show meridians and\/or prefix to not show meridians ' + String.fromCharCode(10) + ' ... multiple place plotting is faster via comma separated {} annotated list (where, instead of comma, a minus - constructs Trip Leg between those places) ';<br \/>\n  <font color=blue>document.body.style.backgroundColor='rgba(0,0,255,0.5)';<\/font><br \/>\n<\/code> <\/p>\n<p> &#8230; that last codeline trying to ameloriate that kludgy feeling change we felt compelled to make &#8230; though we all want to participate in the Sydney to Hobart Yacht Race, don&#8217;t we?!<\/p>\n<p>And then further to yesterday&#8217;s <a title='Earth Scanner Wikipedia Images Tutorial' href='#eswit'>Earth Scanner Wikipedia Images Tutorial<\/a>, and continuing its theme, instead of Wikipedia images only for &#8220;TimeZone places&#8221; we extended the thinking to other places, where possible.<\/p>\n<p>And then there was the checking of a couple of matters regarding sharing and collaboration code.  It occurred to us the way we were starting to build up how long that &#8220;nontz&#8221; get argument might get to with all these non-timezone places, it occurred to us that it could start getting mapped back into the &#8220;purely clientside&#8221; location.hash mode of thinking, <font color=blue>as per<\/font> &#8230;<\/p>\n<p><code><br \/>\n  var nontz=<font color=blue>('' + <\/font>location.search<font color=blue> + ('' + location.hash).replace(\/^\\#\/g,''))<\/font>.split('nontz=')[1] ? decodeURIComponent(<font color=blue>('' + <\/font>location.search<font color=blue> + ('' + location.hash).replace(\/^\\#\/g,''))<\/font>.split('nontz=')[1].split('&')[0].split('#')[0]) : '';<br \/>\n<\/code>  <\/p>\n<p> &#8230; so that we could rest easier.  In amongst that initial &#8220;nontz&#8221; coding <font color=blue>we added<\/font> &#8230;<\/p>\n<p><code><br \/>\n            plotplacepush=(locans.split('|')[0].replace(\/\\_\/g,' '));<br \/>\n<br \/>\n        <font color=blue>if (bigback.indexOf(plotplacepush + ':') == -1 && bigback.indexOf(plotplacepush.replace(\/\\ \/g,'_') + ':') == -1 && nextwiftwo.indexOf(encodeURIComponent(plotplacepush)) == -1) {<br \/>\n        if (wiftwoavailable) {<br \/>\n        wiftwoavailable=false;<br \/>\n        document.getElementById('wiftwo').src='\/PHP\/fgc\/index.php?tzexact=&tznickname=' + encodeURIComponent(plotplacepush.replace(\/\\ \/g,'_'));<br \/>\n        } else {<br \/>\n        nextwiftwo+='\/PHP\/fgc\/index.php?tzexact=&tznickname=' + encodeURIComponent(plotplacepush.replace(\/\\ \/g,'_')) + '#';<br \/>\n        }<br \/>\n        }<\/font><br \/>\n<br \/>\n            plotlongpush=(locans.split('|')[1].replace('_','-'));<br \/>\n            plotlatpush=(locans.split('|')[2].replace('_','-'));<br \/>\n<\/code><\/p>\n<p> &#8230; so that our <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=civzfZ_3uVc'>Hunters and Collectors<\/a> &#8220;Do You See What I See?&#8221; <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=5Qk9o_ZeR7s'>can be more often in the affirmative<\/a> in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-----------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----------------GETME\">seventeenth <strike>doll<\/strike>draft<\/a> of the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application for you to retry, <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s'>again<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-map-image-margin-tutorial\/'>Earth Scanner Map Image Margin Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eswit'>Previous relevant <a target=_blank title='Earth Scanner Wikipedia Images Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-wikipedia-images-tutorial\/'>Earth Scanner Wikipedia Images 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Wikipedia Images Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_or.jpg\" title=\"Earth Scanner Wikipedia Images Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Wikipedia Images Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Earth Scanner Linear Gradient Leg Tutorial' href='#eslglt'>Earth Scanner Linear Gradient Leg Tutorial<\/a>&#8216;s use of <a target=_blank title='Wikipedia ... thanks' href='\/\/wikipedia.org'>Wikipedia<\/a> geodata reminded us, <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=e9_7GcQeiqw&#038;t=2m37s'>again<\/a>, of the incredible resource Wikipedia can be for the online world.<\/p>\n<p>Wikipedia is a great resource for images of places too, and today, we add to the functionality of &#8230;<\/p>\n<ul>\n<li>&#128205;<\/li>\n<li>TimeZone place<\/li>\n<li>onclick event<\/li>\n<\/ul>\n<p> &#8230; &#8220;when ready&#8221; way we open a popup window displaying some of these images in a sort of collage relevant to the place &#128205; pin you clicked, the main Javascript function &#8220;players&#8221; being &#8230;<\/p>\n<p><code><br \/>\n  var bigback='', nextwiftwo='', wiftwoavailable=true, wobi=null;<br \/>\n  <br \/>\n  function woit(what) { \/\/ pin onclick event<br \/>\n    if (what.trim() != '') {<br \/>\n    if (bigback.indexOf(what + ':') != -1) {<br \/>\n          if (wobi) {<br \/>\n             if (!wobi.closed) { wobi.close(); }<br \/>\n          }<br \/>\n          wobi=window.open('', '_blank', 'top=50,left=50,width=900,height=800');<br \/>\n          wobi.document.write(bigback.split(what + ':')[1].split('&lt;\/div&gt;')[0] + '&lt;\/div&gt;');<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n<br \/>\n  function coordittwo(xiois) {  \/\/ Wikipedia image URLs gathered via iframe onload event<br \/>\n       var xxaconto = (xiois.contentWindow || xiois.contentDocument);<br \/>\n       if (xxaconto != null) {<br \/>\n       if (xxaconto.document) { xxaconto = xxaconto.document; }<br \/>\n       var xxacontobodyouterHTML=xxaconto.body.outerHTML.replace(\/\\&quot\\;\/g,'\"');<br \/>\n       if (xxacontobodyouterHTML.indexOf('.style.background=\"URL(') != -1) {<br \/>\n          if (bigback.indexOf(xiois.src.split('tznickname=')[1].split('&')[0].split('#')[0] + ':') == -1) {<br \/>\n             if (document.getElementById('span' + xiois.src.split('tznickname=')[1].split('&')[0].split('#')[0])) {<br \/>\n               document.getElementById('span' + xiois.src.split('tznickname=')[1].split('&')[0].split('#')[0]).style.cursor='pointer';<br \/>\n             }<br \/>\n             bigback+=xiois.src.split('tznickname=')[1].split('&')[0].split('#')[0] + ':' + document.getElementById('ourcanvas').outerHTML.replace('&lt;canvas','&lt;div title=\"Images thanks to Wikipedia at https:\/\/wikipedia.org\" ').replace('&lt;\/canvas&gt;','&lt;\/div&gt;').replace(':none;',':block;background:' + 'URL(' + xxacontobodyouterHTML.split('.style.background=\"URL(')[1].split('\"')[0] + ';background-repeat:no-repeat;background-position:' + xxacontobodyouterHTML.split('.style.backgroundPosition=\"')[1].split('\"')[0]);<br \/>\n          }<br \/>\n       }<br \/>\n       wiftwoavailable=true;<br \/>\n       if (nextwiftwo.split('#')[0] != '') {<br \/>\n       xiois.src=nextwiftwo.split('#')[0];<br \/>\n       nextwiftwo=nextwiftwo.replace(nextwiftwo.split('#')[0] + '#', '');<br \/>\n       wiftwoavailable=false;<br \/>\n       }<br \/>\n       }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------------GETME\">sixteenth draft<\/a> of the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application for you to retry.<\/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\/earth-scanner-wikipedia-images-tutorial\/'>Earth Scanner Wikipedia Images Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eslglt'>Previous relevant <a target=_blank title='Earth Scanner Linear Gradient Leg Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-linear-gradient-leg-tutorial\/'>Earth Scanner Linear Gradient Leg 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Linear Gradient Leg Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_exclamation.gif\" title=\"Earth Scanner Linear Gradient Leg Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Linear Gradient Leg Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Earth Scanner Question Delimiter Tutorial' href='#esqdt'>Earth Scanner Question Delimiter Tutorial<\/a>&#8216;s progress, today, we have &#8230;<\/p>\n<ul>\n<li>a linear gradient applied to the trip leg plotting &#8230; for &#8230;\n<ol>\n<li>colour<\/li>\n<li>direction<\/li>\n<\/ol>\n<p> &#8230; purposes &#8230;<br \/>\n&lt;style&gt;<br \/>\n<code><br \/>\nhr.hrright {<br \/>\n  background-image: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);<br \/>\n}<br \/>\n<br \/>\nhr.hrleft {<br \/>\n  background-image: linear-gradient(to left, red, orange, yellow, green, blue, indigo, violet);<br \/>\n}<br \/>\n<\/code><br \/>\n&lt;\/style&gt;<br \/>\n &#8230; and &#8230;<\/li>\n<li>code for a new placename suffix delimiter &#8230;<br \/>\n<blockquote><p>\n!\n<\/p><\/blockquote>\n<p> &#8230; (in addition to &#8220;?&#8221;) to force the Wikipedia interpretation of geodata for a placename entered by the user &#8230; the orgainizing Javascript function now looking like &#8230;<br \/>\n<code><br \/>\n  function dountilnoquestion() {<br \/>\n      var ibap=0, bap=[];<br \/>\n      caret='^';<br \/>\n      \/\/document.title=gdefv;<br \/>\n    console.log('gdefv=' + gdefv);<br \/>\n      if (gdefv.trim() != gdefv.trim().replace(\/\\?$\/g,'') || gdefv.indexOf('!?') != -1 || gdefv.indexOf('?!') != -1 || gdefv.indexOf('?{') != -1 || gdefv.indexOf('?,') != -1 || gdefv.indexOf('?-') != -1) {<br \/>\n        bap=gdefv.split('{');<br \/>\n        for (ibap=1; ibap&lt;bap.length; ibap++) {<br \/>\n           if (bap[ibap].split('}')[0].indexOf('?') != -1) {<br \/>\n              gdefv=gdefv.replace(bap[ibap], bap[ibap].replace(\/\\?\/g, '%3f'));<br \/>\n           }<br \/>\n        }<br \/>\n    \/\/alert('gdefv=' + gdefv);<br \/>\n    \/\/ Alice Springs|133.87000|_23.70000^-Sydney?!<br \/>\n        curgdefv=gdefv.split('?')[0].split(',')[eval(-1 + gdefv.split('?')[0].split(',').length)].trim().replace(\/^\\[\/g,'');<br \/>\n      \/\/alert('Curgdefv=' + curgdefv);<br \/>\n        curgdefv=curgdefv.split('^')[eval(-1 + curgdefv.split('^').length)].replace(\/^\\-\/g,'');<br \/>\n      \/\/alert('curGdefv=' + curgdefv);<br \/>\n        if (curgdefv != curgdefv.replace(\/\\!$\/g,'')) {<br \/>\n          caret='^ ';<br \/>\n          gdefv=gdefv.replace(curgdefv, curgdefv.replace(\/\\!$\/g,''));<br \/>\n      \/\/alert('1:' + gdefv);<br \/>\n          curgdefv=curgdefv.replace(\/\\!$\/g,'');<br \/>\n        } else if (gdefv.indexOf(curgdefv + '?!') != -1) {<br \/>\n          caret='^ ';<br \/>\n          gdefv=gdefv.replace(curgdefv + '?!', curgdefv + '?');<br \/>\n      \/\/alert('2:' + gdefv);<br \/>\n          curgdefv=curgdefv;<br \/>\n        }<br \/>\n        if (caret == '^ ' && yourtzlist.toLowerCase().indexOf('\/' + curgdefv.toLowerCase().replace(\/\\ \/g,'_') + '&lt;') == -1) {<br \/>\n          caret='^';<br \/>\n        }<br \/>\n      }<br \/>\n<br \/>\n      \/\/alert('*' + caret + '*');<br \/>\n    <br \/> <br \/>\n      if (caret == '^') {<br \/>\n<br \/>\n      if (yourtzlist.toLowerCase().indexOf('\/' + curgdefv.toLowerCase().replace(\/\\ \/g,'_') + '&lt;') != -1) {<br \/>\n      gdefv=gdefv.replace(curgdefv + '?', curgdefv + '^');<br \/>\n      if (gdefv.indexOf('?') == -1) {<br \/>\n      gdefv=gdefv.replace(\/\\^\/g, '').replace(\/\\%3f\/g, '?');<br \/>\n        \/\/alert('gdefv=' + gdefv);<br \/>\n      scmok=true;<br \/>\n       movesallowed=true;<br \/>\n       gmovesallowed=true;<br \/>\n       five=5;<br \/>\n       gfive=5;<br \/>\n      document.getElementById('myimg').click(); \/\/scmove();<br \/>\n      } else {<br \/>\n      setTimeout(dountilnoquestion, 1000);<br \/>\n      }<br \/>\n      } else {<br \/>\n      \/\/alert('curgdefv=' + curgdefv);<br \/>\n      document.getElementById('placegeo').value=' ';<br \/>\n      document.getElementById('wif').src='\/PHP\/fgc\/index.php?placegeo=' + encodeURIComponent(curgdefv.replace(\/\\ \\(\/g,', ').replace(\/\\)$\/g,'')).replace(\/\\%20\/g,'_');<br \/>\n      }<br \/>\n<br \/>\n      } else if (caret == '^ ') {<br \/>\n    <br \/> <br \/>\n      if (caret == '^' && yourtzlist.toLowerCase().indexOf('\/' + curgdefv.toLowerCase().replace(\/\\ \/g,'_') + '&lt;') != -1) {<br \/>\n      gdefv=gdefv.replace(curgdefv + '?', curgdefv + '^');<br \/>\n      if (gdefv.indexOf('?') == -1) {<br \/>\n      gdefv=gdefv.replace(\/\\^\/g, '').replace(\/\\%3f\/g, '?');<br \/>\n        \/\/alert('gdefv=' + gdefv);<br \/>\n      scmok=true;<br \/>\n       movesallowed=true;<br \/>\n       gmovesallowed=true;<br \/>\n       five=5;<br \/>\n       gfive=5;<br \/>\n      document.getElementById('myimg').click(); \/\/scmove();<br \/>\n      } else {<br \/>\n      setTimeout(dountilnoquestion, 1000);<br \/>\n      }<br \/>\n      } else {<br \/>\n      \/\/alert('curgdefv=' + curgdefv);<br \/>\n      document.getElementById('placegeo').value=' ';<br \/>\n      document.getElementById('wif').src='\/PHP\/fgc\/index.php?placegeo=' + encodeURIComponent(curgdefv.replace(\/\\ \\(\/g,', ').replace(\/\\)$\/g,'')).replace(\/\\%20\/g,'_');<br \/>\n      }<br \/>\n<br \/>\n      }<br \/>\n  }<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--------------GETME\">fifteenth draft<\/a> of the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application for you to retry.<\/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\/earth-scanner-linear-gradient-leg-tutorial\/'>Earth Scanner Linear Gradient Leg Tutorial<\/a>.<\/p-->\n<hr>\n<p id='esqdt'>Previous relevant <a target=_blank title='Earth Scanner Question Delimiter Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-question-delimiter-tutorial\/'>Earth Scanner Question Delimiter 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Question Delimiter Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_question.jpg\" title=\"Earth Scanner Question Delimiter Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Question Delimiter Tutorial<\/p><\/div>\n<p>We&#8217;re adding another delimiter to those discussed in yesterday&#8217;s <a title='Earth Scanner Delimitation Tutorial' href='#esdt'>Earth Scanner Delimitation Tutorial<\/a>, and it&#8217;s a doozy &#8230;<\/p>\n<blockquote><p>\n?\n<\/p><\/blockquote>\n<p> <font size=1>&#8230; (just quietly for now while we test for another day) &#8230;<\/font> placed after a placename will &#8230;<\/p>\n<ul>\n<li>first check if a TimeZone placename, and use that PHP timezone longitude and latitude should it find that to be the case &#8230; else &#8230;<\/li>\n<li>will look to <a target=_blank title='Wikipedia ... thanks' href='\/\/wikipedia.org'>Wikipedia<\/a>, thanks, for help, as available &#8230;<\/li>\n<\/ul>\n<p> &#8230; for improvements on two fronts &#8230;<\/p>\n<ol>\n<li>a lot of us don&#8217;t know every timezone placename <font size=1>(but we expect you to know from tomorrow about 3?)<\/font> &#8230;<\/li>\n<li>Wikipedia has tons of useful geodata on lots of places brought into the Earth Scanner realms via this change &#8230;<br \/>\n<code><br \/>\n function coordit(xiois) {<br \/>\n       var xaconto = (xiois.contentWindow || xiois.contentDocument);<br \/>\n       if (xaconto != null) {<br \/>\n       try {<br \/>\n       if (xaconto.document) { xaconto = xaconto.document; }<br \/>\n       if (xaconto.body.innerHTML.indexOf('&gt;Coordinates') != -1) {<br \/>\n        var subpart=xaconto.body.innerHTML.split('&gt;Coordinates')[1];<br \/>\n        latdeg=-999;<br \/>\n        longdeg=-999;<br \/>\n        latmin=0;<br \/>\n        longmin=0;<br \/>\n        latsec=0;<br \/>\n        longsec=0;<br \/>\n        sparelat='';<br \/>\n        sparelong='';<br \/>\n        if (subpart.indexOf('\"latitude\"') != -1 && subpart.indexOf('\"longitude\"') != -1) {<br \/>\n          latdeg=subpart.split('\"latitude\"')[1].split('&gt;')[1].split(\"\u00b0\")[0].split('&lt;')[0];<br \/>\n          sparelat=subpart.split('\"latitude\"')[1].split('&gt;')[1].split('&lt;')[0].slice(-1);<br \/>\n          latmin=subpart.split('\"latitude\"')[1].split('&gt;')[1].split('&lt;')[0].substring(eval(1 + eval('' + latdeg.length))).split(\"\u2032\")[0].split(sparelat)[0].split('&lt;')[0];<br \/>\n          if (sparelat == 'S') {  latdeg=eval(eval(eval(-1 * latmin) \/ 60) - latdeg); } else { latdeg+=eval(eval('' + latmin) \/ 60) }<br \/>\n<br \/>\n          longdeg=subpart.split('\"longitude\"')[1].split('&gt;')[1].split(\"\u00b0\")[0].split('&lt;')[0];<br \/>\n          sparelong=subpart.split('\"longitude\"')[1].split('&gt;')[1].split('&lt;')[0].slice(-1);<br \/>\n          longmin=subpart.split('\"longitude\"')[1].split('&gt;')[1].split('&lt;')[0].substring(eval(1 + eval('' + longdeg.length))).split(\"\u2032\")[0].split(sparelong)[0].split('&lt;')[0];<br \/>\n          if (sparelong == 'W') {  longdeg=eval(eval(eval(-1 * longmin) \/ 60) - longdeg); } else { longdeg+=eval(eval('' + longmin) \/ 60) }<br \/>\n<br \/>\n      if (gdefv.indexOf(curgdefv + '?') != -1) {<br \/>\n        gdefv=gdefv.replace(curgdefv + '?', curgdefv + ('|' + longdeg).replace('|-','|_') +  + ('|' + latdeg).replace('|-','|_') + '^');<br \/>\n        dountilnoquestion();<br \/>\n      }<br \/>\n<br \/>\n         return true;<br \/>\n          <br \/>\n        } else if (('' + document.getElementById('placegeo').value).trim().indexOf(',') != -1) {<br \/>\n          latdeg=document.getElementById('placegeo').value.split(',')[eval(-2 + document.getElementById('placegeo').value.split(',').length)];<br \/>\n          longdeg=document.getElementById('placegeo').value.split(',')[eval(-1 + document.getElementById('placegeo').value.split(',').length)];<br \/>\n<br \/>\n      if (gdefv.indexOf(curgdefv + '?') != -1) {<br \/>\n        gdefv=gdefv.replace(curgdefv + '?', curgdefv + ('|' + longdeg).replace('|-','|_') + ('|' + latdeg).replace('|-','|_') + '^');<br \/>\n        dountilnoquestion();<br \/>\n      }<br \/>\n<br \/>\n         return true;<br \/>\n        }<br \/>\n    <br \/> <br \/>\n       } else {<br \/>\n<br \/>\n       if (('' + document.getElementById('placegeo').value).trim().indexOf(',') != -1) {<br \/>\n         latdeg=document.getElementById('placegeo').value.split(',')[eval(-2 + document.getElementById('placegeo').value.split(',').length)];<br \/>\n         longdeg=document.getElementById('placegeo').value.split(',')[eval(-1 + document.getElementById('placegeo').value.split(',').length)];<br \/>\n <br \/>\n      if (gdefv.indexOf(curgdefv + '?') != -1) {<br \/>\n        gdefv=gdefv.replace(curgdefv + '?', curgdefv + ('|' + longdeg).replace('|-','|_') + ('|' + latdeg).replace('|-','|_') + '^');<br \/>\n        dountilnoquestion();<br \/>\n      }<br \/>\n      } else {<br \/>\n      if (gdefv.indexOf(curgdefv + '?') != -1) {<br \/>\n        gdefv=gdefv.replace(curgdefv + '?', curgdefv + '^');<br \/>\n        dountilnoquestion();<br \/>\n      }<br \/>\n      }<br \/>\n<br \/>\n       }<br \/>\n       } catch(hgjg) {  }<br \/>\n       }<br \/>\n         return true;<br \/>\n  }<br \/>\n<\/code>\n<\/li>\n<\/ol>\n<p> &#8230; in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--------------GETME\">a changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--------------GETME\">fourteenth draft<\/a> of the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application for you to retry.<\/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-earth-scanner-delimitation-tutorial\/'>New Earth Scanner Delimitation Tutorial<\/a>.<\/p-->\n<hr>\n<p id='esdt'>Previous relevant <a target=_blank title='Earth Scanner Delimitation Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-delimitation-tutorial\/'>Earth Scanner Delimitation 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Delimitation Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_delimitation.jpg\" title=\"Earth Scanner Delimitation Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Delimitation Tutorial<\/p><\/div>\n<p>A lot of the data aspects to our latest Earth Scanner web application have relied on &#8230;<\/p>\n<ul>\n<li>user reliability &#8230; and &#8230;<\/li>\n<li>delimitation rules &#8230; less stringent for &#8230;<\/li>\n<li>timezone places\n<\/ul>\n<p>Of course, we&#8217;d really like to automate more, but because we are not the repository of place geographicals data regarding placenames, except via PHP <a target=_blank title='PHP TimeZone list' href='http:\/\/php.net\/manual\/en\/timezones.php'>TimeZone<\/a> derived ones, thanks, we don&#8217;t envisage a time with this web application, where for most places (which are not timezone places) that the user wants to specify and plot and perhaps form part of an itinerary schedule, they will be specifying longitude and latitude data.  That is asking a bit of the user, as a lot of us will forget the order of these, and so of the two new data format syntaxes accepted, as of today, for examples regarding Alice Springs &#8230;<\/p>\n<ol>\n<li>Alice Springs <a target=_blank title='Google search' href='https:\/\/www.google.com\/search?q=alice+springs+latitude&#038;rlz=1C5CHFA_enAU973AU973&#038;oq=alice+springs+latitude&#038;gs_lcrp=EgZjaHJvbWUyCQgAEEUYORiABDIKCAEQABgKGBYYHjIICAIQABgWGB4yCAgDEAAYFhgeMgoIBBAAGA8YFhgeMggIBRAAGBYYHjIKCAYQABgPGBYYHjIKCAcQABgPGBYYHjIICAgQABgWGB7SAQg2NTEwajBqNKgCALACAA&#038;sourceid=chrome&#038;ie=UTF-8'>23.6980\u00b0 S, 133.8807\u00b0 E<\/a><br \/>\n &#8230; as with <a target=_blank title='Alice Springs' href='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs_%7C133.8807%7C_23.6980%7CAU#Alice_Springs_'>this link<\/a><\/li>\n<li>Alice Springs|133.8807|-23.6980<br \/>\n &#8230; as with <a target=_blank title='Alice Springs' href='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs'>this link<\/a><\/li>\n<\/ol>\n<p> &#8230; the former of which, can have latitude and longitude order flexible, and determined via those N or S and W or E directionals, and we just copy off the Google webpage their presented syntax after the placename, optionally followed by a space.<\/p>\n<p>We mention the second syntax above as the basis for our hashtagging inhouse logic, helping as a conduit towards communications for other parties.<\/p>\n<p>Believe it or not with these nuances, at least for us, with the architecture of this Earth Scanner, is far from trivial, and it represents a salutary lesson regarding delimitation.  It is best to have only one role for particular delimiter usage within your web application.  It was overcomable for us, via context, to have in the Earth Scanner &#8230;<\/p>\n<ul>\n<li>a minus &#8220;-&#8221; delimiter can be\n<ol>\n<li>a negative aspect to latitude or longitude<\/li>\n<li>be a <sub>trip<\/sub> leg delimiter<\/li>\n<li>can be a character in a place name &#8230; and we hope we&#8217;ve covered off that it &#8230;<\/li>\n<li>can be a character in a country name<\/li>\n<\/ol>\n<\/li>\n<li>a comma &#8220;,&#8221; delimiter can be\n<ol>\n<li>a separator of latitude or longitude or placename in some syntaxes<\/li>\n<li>a separator between placename and country name or country code<\/li>\n<li>a separator between some <i>place plus geographicals<\/i> syntaxes<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p> &#8230; but life would have been easier with a one to one relationship between delimiter and role.<\/p>\n<p>And so, further to yesterday&#8217;s <a title='Earth Scanner Placements Tutorial' href='#espt'>Earth Scanner Placements Tutorial<\/a> we have <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-------------GETME\">a changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-------------GETME\">thirteenth draft<\/a> of the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application for you to retry.<\/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\/earth-scanner-delimitation-tutorial\/'>Earth Scanner Delimitation Tutorial<\/a>.<\/p-->\n<hr>\n<p id='espt'>Previous relevant <a target=_blank title='Earth Scanner Placements Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-placements-tutorial\/'>Earth Scanner Placements 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Placements Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_nontz.jpg\" title=\"Earth Scanner Placements Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Placements Tutorial<\/p><\/div>\n<p>You see that little play on words in today&#8217;s title, using &#8230;<\/p>\n<blockquote><p>\nPlace<font color=blue>ment<\/font>s\n<\/p><\/blockquote>\n<p>?  Where we <font color=blue>me<\/font>a<font color=blue>nt<\/font> &#8220;the specification, by placename, of latitude and longitude for a user defined place&#8221;?  And so we decided not to give this blog posting the title &#8230;<\/p>\n<blockquote><p>\nEarth Scanner the specification, by placename, of latitude and longitude for a user defined place Tutorial\n<\/p><\/blockquote>\n<p> &#8230; because <font size=1>&#8230; cough, cough &#8230;<\/font> that&#8217;s us &#8230;<\/p>\n<ul>\n<li>succinct &#8230;<\/li>\n<li>unable to find the <i>place<\/i> mats <font size=1>&#8230; tee hee<\/font> &#8230; but &#8230;<\/li>\n<li>ready to be &#8220;agile in <i>place<\/i>&#8220;<\/li>\n<\/ul>\n<p>Let&#8217;s go over the backstory.  With our current Earth Scanner project, as far as placenames go, without a latitude or longitude specification, it&#8217;s best worked, so far, ever since <a title='Earth Scanner TimeZone Tutorial' href='#estzt'>Earth Scanner TimeZone Tutorial<\/a>, with those placenames being TimeZone placenames, because &#8230;<\/p>\n<blockquote cite='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-places-tutorial\/'><p>\nPHP inspired <a target=_blank title='PHP TimeZone list' href='http:\/\/php.net\/manual\/en\/timezones.php'>TimeZone<\/a> place lookup logic within the Javascript code\n<\/p><\/blockquote>\n<p> &#8230; were a freely available resource for us.  But the users using our Earth Scanner are also a resource, and <a target=_blank title='Google search' href='https:\/\/www.google.com\/search?q=alice+springs+latitude&#038;rlz=1C5CHFA_enAU973AU973&#038;oq=alice+springs+latitude&#038;gs_lcrp=EgZjaHJvbWUyCQgAEEUYORiABDIKCAEQABgKGBYYHjIICAIQABgWGB4yCAgDEAAYFhgeMgoIBBAAGA8YFhgeMggIBRAAGBYYHjIKCAYQABgPGBYYHjIKCAcQABgPGBYYHjIICAgQABgWGB7SAQg2NTEwajBqNKgCALACAA&#038;sourceid=chrome&#038;ie=UTF-8'>can supply<\/a> prompt window entries such as &#8230;<\/p>\n<table>\n<tr>\n<td>\n<code><br \/>\n[133.8807,-23.6980,Alice Springs]<br \/>\n<\/code><\/td>\n<td> &#8230; or &#8230;<br \/> &#8230; equivalent <br \/>in this case <\/br>regarding real mantissa &#8230;<br \/><a href='#ulrules'>remember rules<\/a>?<\/td>\n<\/tr>\n<tr>\n<td><code><br \/>\n133.8807,-23.6980,Alice Springs<br \/>\n<\/code><\/td>\n<\/tr>\n<\/table>\n<p> &#8230; which now, further to yesterday&#8217;s <a title='Earth Scanner Itinerary Collaboration Tutorial' href='#esict'>Earth Scanner Itinerary Collaboration Tutorial<\/a>, has the effect of &#8230;<\/p>\n<ul>\n<li>plotting Alice Springs position on world map and scroll to see it, for a while &#8230; as well as &#8230;<\/li>\n<li>prime any underlying sharing and collaboration logic &#8230; now using &#8230;<\/li>\n<li>get ? and &#038; arguments <font size=1>(hopefully not too many)<\/font> &#8230; passed on to &#8230;<\/li>\n<li>recipients, in communications, via the user clicking that top left relatively new &#128231; sharing and collaboration button &#8230; to send a communication containing the URL &#8230;<\/li>\n<li>\n<table>\n<tr>\n<td><code><br \/>\n<a target=_blank title='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs' href='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs'>https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs<\/a><br \/>\n<\/code><\/td>\n<\/tr>\n<tr>\n<td> &#8230; or equivalent in this case regarding real mantissa &#8230; <a href='#ulrules'>remember rules<\/a>?<\/td>\n<\/tr>\n<tr>\n<td><code><br \/>\n<a target=_blank title='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs' href='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs'>https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?nontz=Alice_Springs%7C133.8807%7C_23.6980%7CAU#Alice_Springs<\/a><\/code><\/td>\n<\/tr>\n<\/table>\n<p> &#8230; to a recipient &#8230;<\/li>\n<li>who should see what you see if you and they have clicked these appropriate links<\/li>\n<\/ul>\n<p>This allows places other than TimeZone places be fully functional components in the logic for plotting and annotations and trip planning and itinerary construction purposes in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------------GETME\">our latest<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------------GETME\">twelfth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/p>\n<p><i><b>Did you know?<\/b><\/i><\/p>\n<p>As well as <i>mantissa &#8220;kludge&#8221;<\/i> we enjoy a good <i>anti-dot <strike style=color:blue;>.<\/strike> &#8220;kludge&#8221;<\/i> every now and then.  In a couple of &#8220;if&#8221; statements <font color=blue>we now have<\/font> &#8230;<\/p>\n<p><code><br \/>\nif (eval('' + ('' + locans.trim()).length) >= 3 && ('' + locans).indexOf(',') == -1 && yourtzlist<strike style=color:blue;>.<\/strike>indexOf('\/' + ('' + locans.trim()).replace(\/\\ \/g,'_') + '<') != -1) {\n \/\/ code logic here\n}\n<\/code><\/p>\n<p> ... modifications, so that ...<\/p>\n<p><code><br \/>\n  var yourtzlist=\"&lt;option value=\\\"GMT\\\" data-geo=\\\"51.4934,0.0098,GMT,GB,+0\\\"&gt;GMT&lt;\/option&gt;&lt;option value=\\\"Africa\/Abidjan\\\" data-geo=\\\"5.31666,-4.03334,GMT,CI,+0\\\"&gt;Africa\/Abidjan&lt;\/option&gt; ... blah blah blah ...\";<br \/>\n <font color=blue>var eventualyourtzlist=yourtzlist; \/\/ is appended with non TimeZone entries found, that follow ...<br \/>\n var realtz=true;<br \/>\n <br \/>\n  function retyour(propis) {<br \/>\n    if (!realtz) {<br \/>\n      return eventualyourtzlist;<br \/>\n    }<br \/>\n    return yourtzlist;<br \/>\n  }<br \/>\n <br \/>\n  function yourtzlistindexOf(proposedplace) {<br \/>\n    if (yourtzlist.indexOf(proposedplace) != -1) {<br \/>\n      realtz=true;<br \/>\n      return yourtzlist.indexOf(proposedplace);<br \/>\n    } else if (eventualyourtzlist.indexOf(proposedplace) != -1) {<br \/>\n      realtz=false;<br \/>\n      return eventualyourtzlist.indexOf(proposedplace);<br \/>\n    } else {<br \/>\n      realtz=true;<br \/>\n    }<br \/>\n    return yourtzlist.indexOf(proposedplace);<br \/>\n  }<\/font><br \/>\n<\/code> <\/p>\n<p> ... can help out.<\/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\/earth-scanner-placements-tutorial\/'>Earth Scanner Placements Tutorial<\/a>.<\/p-->\n<hr>\n<p id='esict'>Previous relevant <a target=_blank title='Earth Scanner Itinerary Collaboration Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-itinerary-collaboration-tutorial\/'>Earth Scanner Itinerary 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\/HTMLCSS\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Itinerary Collaboration Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_textarea.jpg\" title=\"Earth Scanner Itinerary Collaboration Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Itinerary Collaboration Tutorial<\/p><\/div>\n<p>It might be just us, but around here, we give ourselves a \"leave pass\", talking about ...<\/p>\n<ul>\n<li>sharing ... much more than ...<\/li>\n<li>collaborating<\/li>\n<\/ul>\n<p> ... because we see <i>collaboration<\/i>, as much to do with at least two parties being able to adjust a \"th<strike>a<\/strike>ing\", whatever that may be, and we see <i>sharing<\/i> as maybe that, but also could be just edicts from above, broadcast out, with no meaningful active input from the people being sent the communication.  And you see, this all comes about, because, as programmers, it's much easier to code for sharing ... it makes us look good?!<\/p>\n<p>Up to yesterday, we would have to classify our efforts with our latest Earth Scanner project, in the realms of \"Trip Itinerary\" communications, as just being <i>sharing<\/i>, but <font color=blue>where we said<\/font>, yesterday ...<\/p>\n<blockquote><p>\nWell, it means a person travelling, could share their itinerary with someone, <font color=blue>or have a collaborator fill in the gaps<\/font> perhaps, and the context of it all can be shown on an interactive map.\n<\/p><\/blockquote>\n<p> ... that \"perhaps\" was all there was, really, yesterday.  But, today, we've had time to think of ways forward, and realized ...<\/p>\n<ul>\n<li>off plotted (perhaps TimeZone) places ... we could add ...<\/li>\n<li><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/reveal\" title='WordPress reveal posts'>reveal<\/a>ed (ie.  <a target=_blank title='HTML details tag information from w3schools' href='https:\/\/www.w3schools.com\/tags\/tag_details.asp'>details<\/a>\/<a target=_blank title='HTML summary tag information from w3schools' href='https:\/\/www.w3schools.com\/tags\/tag_details.asp'>summary<\/a> based) ...\n<ol>\n<li>trip leg from annotation<\/li>\n<li>this place annotation<\/li>\n<li>trip leg to annotation<\/li>\n<\/ol>\n<p> ... textarea element(s) at which a <i>collaborator<\/i> <font color=blue>becomes capable<\/font> of adding itinerary detail and\/or changing itinerary detail ...<br \/>\n<code><br \/>\n  function panno(bec, idx) {<br \/>\n   if (plotanno[idx] != bec.replace(\/\\`\/g, '\"')) {<br \/>\n    plotanno[idx]=bec.replace(\/\\`\/g, '\"')<font color=purple>.replace(\/\\{\/g, '[').replace(\/\\}\/g, ']')<\/font>;<br \/>\n    newhashit();<br \/>\n   }<br \/>\n  }<br \/>\n  <br \/>\n  function lganno(bec, idx) {<br \/>\n   if (legsanno[idx] != bec.replace(\/\\`\/g, '\"')) {<br \/>\n    legsanno[idx]=bec.replace(\/\\`\/g, '\"')<font color=purple>.replace(\/\\{\/g, '[').replace(\/\\}\/g, ']')<\/font>;<br \/>\n    newhashit();<br \/>\n   }<br \/>\n  }<br \/>\n  <br \/>\n  function doplotplace(ipl, maybeg) {<br \/>\n    var jpl=0, detbegin='', detend=''<font color=blue>, nearend='', textras='', legend='', prelegend=''<\/font>, ileg=0;<br \/>\n    var thisclock='', nonclock='', aclocl='', thatplace='', utzdate=null, tzDate=null, xdiff=0, xdate1=null;<br \/>\n    if (!reveal) {<br \/>\n      detbegin='&lt;details onclick=\"reveal=!reveal;\"&gt;&lt;summary&gt;&lt;\/summary&gt;';<br \/>\n      detend='&lt;\/details&gt;';<br \/>\n    } else {<br \/>\n      detbegin='&lt;details open onclick=\"reveal=!reveal;\"&gt;&lt;summary&gt;';<br \/>\n      detend='&lt;\/summary&gt;&lt;\/details&gt;';<br \/>\n    }<br \/>\n    if (plotcc[ipl].trim() && plottz[ipl].trim() != '') { \/\/ && plotplace[ipl].indexOf(':') == -1) {<br \/>\n    \/\/alert(plotplace[ipl]);<br \/>\n    \/\/alert(plotct[ipl]);<br \/>\n    \/\/alert(plotemj[ipl]);<br \/>\n      if (maybeg == 'g') {<br \/>\n           <font color=blue>for (ileg=0; ileg&lt;legs.length; ileg++) {<br \/>\n              if (('~' + legs[ileg] + '~').indexOf('~' + ipl + '.') != -1) {<br \/>\n                jpl=eval(('~' + legs[ileg] + '~').split('~' + ipl + '.')[1].split('~')[0]);<br \/>\n                legend+='&lt;details onclick=\"event.stopPropagation();\" title=\"Annotations for Leg from ' + plotplace[ipl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[ipl]) + ' to ' + plotplace[jpl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[jpl]) + ' ...\"&gt;&lt;summary class=lanno&gt; --&gt; ' + plotplace[jpl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[jpl]) + '&lt;\/summary&gt;&lt;textarea class=txleg onclick=\"event.stopPropagation();\" rows=9 cols=40 onblur=\"lganno(this.value,' + ileg + ');\"&gt;' + legsanno[ileg].replace(\/\\\"\/g,'`') + '&lt;\/textarea&gt;&lt;\/details&gt;';<br \/>\n              }<br \/>\n              if (('~' + legs[ileg] + '~').indexOf('.' + ipl + '~') != -1) {<br \/>\n                jpl=eval(('~' + legs[ileg] + '~').split('.' + ipl + '~')[0].split('~')[1]);<br \/>\n                prelegend+='&lt;details onclick=\"event.stopPropagation();\" title=\"Annotations for Leg from ' + plotplace[jpl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[jpl]) + ' to ' + plotplace[ipl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[ipl]) + ' ...\"&gt;&lt;summary class=lanno&gt;' + plotplace[jpl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[jpl]) + ' --&gt;&lt;\/summary&gt;&lt;textarea class=txleg onclick=\"event.stopPropagation();\" rows=9 cols=40 onblur=\"lganno(this.value,' + ileg + ');\"&gt;' + legsanno[ileg].replace(\/\\\"\/g,'`') + '&lt;\/textarea&gt;&lt;\/details&gt;';<br \/>\n              }<br \/>\n           }<br \/>\n           if (bmeridian.indexOf(' id=\"div' + plotlong[ipl] + plotlat[ipl] + '\"') != -1) {<br \/>\n              textras=bmeridian.split(' id=\"div' + plotlong[ipl] + plotlat[ipl] + '\"')[1].split('&gt;')[0].replace(\/\\\"$\/g, String.fromCharCode(10) + plotanno[ipl].replace(\/\\\"\/g,'`') + '\"');<br \/>\n           } else {<br \/>\n              textras=' title=\"' + plotanno[ipl].replace(\/\\\"\/g,'`') + '\"';<br \/>\n           }<br \/>\n           nearend='&lt;div id=\"div' + plotlong[ipl] + plotlat[ipl] + '\"' + textras + '&gt;' + prelegend + '&lt;details onclick=\"event.stopPropagation();\" title=\"Annotations for ' + plotplace[ipl].replace(\/\\_\/g,' ') + ' ' + orflag(plotcc[ipl]) + ' ...\"&gt;&lt;summary class=panno&gt;&amp;#128395;&lt;\/summary&gt;&lt;textarea class=txplc onclick=\"event.stopPropagation();\" rows=9 cols=40 onblur=\"panno(this.value,' + ipl + ');\"&gt;' + plotanno[ipl].replace(\/\\\"\/g,'`') + '&lt;\/textarea&gt;&lt;\/details&gt;' + legend + '&lt;\/div&gt;';<\/font><br \/>\n           thatplace=plottz[ipl];<br \/>\n           utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           xdiff = Math.abs(tzDate.getTime() - gutcDate.getTime()) \/ 3600000;<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') });<br \/>\n           if (xdiff &gt; 0 && (eval('' + utzdate.getDay()) == 0 && eval('' + tzDate.getDay()) == 6 || eval('' + utzdate.getDay()) &gt; eval('' + tzDate.getDay()))) {<br \/>\n              xdiff=-xdiff;<br \/>\n           }<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct[ipl]=('' + xdate1);<br \/>\n           plotemj[ipl]=(clockit('' + xdiff));<br \/>\n      }<br \/>\n      if (plotemj[ipl].indexOf('pm') != -1) {<br \/>\n      aclock=plotemj[ipl].split('pm')[0];<br \/>\n      nonclock=plotemj[ipl].split(aclock)[1];<br \/>\n      thisclock='&lt;span class=pm&gt;' + aclock + '&lt;\/span&gt;';<br \/>\n      return plotplace[ipl] + ' ' + orflag(plotcc[ipl]) + detbegin + '&lt;br&gt;' + plotct[ipl] + '&lt;br&gt;' + thisclock + nonclock<font color=blue> + nearend<\/font> + detend;<br \/>\n      }<br \/>\n      return plotplace[ipl] + ' ' + orflag(plotcc[ipl]) + detbegin + '&lt;br&gt;' + plotct[ipl] + '&lt;br&gt;' + plotemj[ipl]<font color=blue> + nearend<\/font> + detend;<br \/>\n    }<br \/>\n    return plotplace[ipl];<br \/>\n  }<br \/>\n<\/code><br \/>\n ... <font size=1>(happily now not needing to know the \"behind the scenes\" delimitation is {} ... <\/font><font color=purple size=1>in fact we map to [] here<\/font><font size=1> if a user uses these characters in a textarea element)<\/font> ... then ...\n<\/li>\n<li>resend to other <i>collaborator<\/i> the ideas for further collaborations the other way around ... purrrrrrrrrhaps?<\/li>\n<\/ul>\n<p> ... improving on yesterday's <a title='Earth Scanner Sharing Itinerary Detail Tutorial' href='#essidt'>Earth Scanner Sharing Itinerary Detail Tutorial<\/a> with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----------GETME\">our latest<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----------GETME\">eleventh draft<\/a> <font size=1>(dedicated to <i>\"Legs XI\"<\/i>)<\/font> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application, we hope.<\/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-earth-scanner-sharing-itinerary-detail-tutorial\/'>New Earth Scanner Sharing Itinerary Detail Tutorial<\/a> ...<\/p>\n\n\n\n\n\n<hr>\n\n\n\n\n\n\n<p id='essidt'>Previous relevant <a target=_blank title='Earth Scanner Sharing Itinerary Detail Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-sharing-itinerary-detail-tutorial\/'>Earth Scanner Sharing Itinerary Detail Tutorial<\/a> is shown below.<\/p>\n\n\n\n[caption id=\"\" align=\"alignnone\" width=\"220\" caption=\"Earth Scanner Sharing Itinerary Detail Tutorial\"]<a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Sharing Itinerary Detail Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\" title=\"Earth Scanner Sharing Itinerary Detail Tutorial\"  style=\"float:left;\" \/><\/a>[\/caption]\n\n\n\n<p>Further to yesterday's <a title='Earth Scanner Sharing Tutorial' href='#esst'>Earth Scanner Sharing Tutorial<\/a>, today, we were ...<\/p>\n\n\n\n\n\n<ul>\n\n\n<li>more than half expecting that for web browsers where <i>navigator.canShare<\/i> comes up with true (eg. Safari), supporting the <a target=_blank title='Web Share API information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Web_Share_API'>Web Share API<\/a> on a https:\/\/ protocol, we'd be saying for our tests involving faux itineraries (with much more than a thousand characters) being processed via a ...\n\n\n<blockquote>\nHave most of the data be stored in the hash part of the \"URL\"\n<\/blockquote>\n\n\n ... approach, that it worked back with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------GETME\">our latest<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------GETME\">tenth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application incarnation, but ...<\/li>\n\n\n\n\n<li>we weren't expecting to be saying that web browsers where <i>navigator.canShare<\/i> comes up with false (eg. Google Chrome), not supporting the Web Share API, we'd be saying for our tests involving faux itineraries (with much more than a thousand characters) being processed via a ...\n\n\n<blockquote>\nHave most of the data be stored in the hash part of the \"URL\"\n<\/blockquote>\n\n\n ... approach, that it worked back with our latest Earth Scanner incarnation, <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\">but it did<\/a>!\n<\/li>\n\n\n<\/ul>\n\n\n\n\n\n<p>The thing to note is that the data should be hashtagged, rather than formed into ? and & \"get\" arguments which end up with a web server somewhere.  This also means a serverside language, such as PHP <font size=1>(where we'd often be involving HTML form method=POST scenarios by now)<\/font>, may never be needed with this Earth Scanner project we are currently engaged in, and we do prefer to talk just HTML and Javascript and CSS to be able to share code with more readers out there.  Hashtagging is purely client side work.  Guess we'd never tried any \"a\" \"mailto:\" URLs of huge length, mainly taken up by hashtagging data?!   Anyway, we are very pleased, and still think the Web Share API logic is worth keeping in, because of all the sharing options other than email presented, when this API is in full swing.<\/p>\n\n  \n\n\n\n<p>And what is the point here?   Well, it means a person travelling, could share their itinerary with someone, or have a collaborator fill in the gaps perhaps, and the context of it all can be shown on an interactive map.  They could base a trip leg on the paradigm (using the Earth Scanner click prompt window) ...\n\n\n\n<blockquote>\nTimezonePlaceFrom{eg. accomodation details, dates of stay, meeting details}-{eg. flight or road or rail or walking or sailing trip details, timezone issues}TimezonePlaceTo{eg. accomodation details, dates of stay, meeting details}\n<\/blockquote>\n\n\n\n\n\n<p> ... model, where {} are the Earth Scanner's annotation delimiters <font size=1>(we'd really like you to avoid within your annotations)<\/font>.  So far?!<\/p>\n\n\n\n\n\n<p><b><i>Stop Press<\/i><\/b><\/p>\n\n\n\n\n\n<p>As <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=civzfZ_3uVc'>Hunters and Collectors<\/a> asked ...<\/p>\n\n\n\n\n\n<blockquote>\nDo you see what I see?\n<\/blockquote>\n\n\n\n\n\n<p> ... well, this is what we saw making today's tutorial's <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\">animated GIF presentation<\/a> ... and so ... <a target=_new href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New_York%7B%0ANew%20York%0A%0ASun%2025%20Feb%0A%E2%80%94%0A%0AMon%2026%20Feb%0A%0A2%20adults%20%C2%B7%200%20children%20%C2%B7%201%20room%0A%0ASearch%0AHome%0AUnited%20States%0ANew%20York%20State%0ANew%20York%0ASearch%20results%0A%0AShow%20on%20map%0AFilter%20by%3A%0AYour%20budget%20(per%20night)%0AAUD%20110%20-%20AUD%20700%2B%0A%0A%0APopular%20filters%0A%0ANo%20prepayment%0A279%0A%0A5%20stars%0A53%0A%0AHotels%0A366%0A%0ASuperb%3A%209%2B%0A19%0ABased%20on%20guest%20reviews%0A%0AParking%0A260%0A%0ABreakfast%20included%0A167%0A%0AManhattan%0A383%0A%0ASwimming%20Pool%0A18%0AProperty%20type%0A%0AHotels%0A366%0A%0AEntire%20homes%20%26%20apartments%0A190%0A%0AApartments%0A16%0A%0AHostels%0A8%0A%0AHomestays%0A3%0A%0AGuest%20houses%0A1%0AFacilities%0A%0AParking%0A260%0A%0APets%20allowed%0A246%0A%0ARestaurant%0A217%0A%0ARoom%20service%0A144%0A%0ANon-smoking%20rooms%0A375%0A%0AShow%20all%2014%0AMeals%0A%0ASelf%20catering%0A70%0A%0ABreakfast%20included%0A167%0ABed%20preference%0A%0ATwin%20beds%0A38%0A%0ADouble%20bed%0A381%0A%0A2%20double%20beds%0A282%0AProperty%20rating%0AIncludes%20stars%20and%20other%20ratings%0A%0A1%20star%0A3%0A%0A2%20stars%0A8%0A%0A3%20stars%0A98%0A%0A4%20stars%0A216%0A%0A5%20stars%0A53%0A%0AUnrated%0A12%0ARoom%20facilities%0A%0APrivate%20bathroom%0A345%0A%0AKitchen%2Fkitchenette%0A70%0A%0ABath%0A156%0A%0ASpa%20bath%0A7%0A%0ABalcony%0A56%0A%0AShow%20all%2025%0ANeighbourhood%0A%0AGuests'%20favourite%20area%0A323%0A%0AManhattan%0A383%0A%0AMidtown%0A265%0A%0ACentral%20New%20York%20City%0A169%0A%0ABest%20areas%20outside%20centre%0A154%0A%0ASoHo%0A13%0A%0AMurray%20Hill%0A11%0A%0AWall%20Street%20-%20Financial%20District%0A33%0A%0AChelsea%0A30%0A%0AHell's%20Kitchen%0A43%0A%0AShow%20all%2025%0AReview%20score%0A%0ASuperb%3A%209%2B%0A19%0A%0AVery%20good%3A%208%2B%0A227%0A%0AGood%3A%207%2B%0A358%0A%0APleasant%3A%206%2B%0A378%0AReservation%20policy%0A%0AFree%20cancellation%0A1%0A%0ANo%20prepayment%0A279%0ADistance%20from%20centre%20of%20New%20York%0A%0ALess%20than%201%20km%0A61%0A%0ALess%20than%203%20km%0A276%0A%0ALess%20than%205%20km%0A303%0AFun%20things%20to%20do%0A%0AFitness%20centre%0A282%0A%0AFitness%0A195%0A%0AHappy%20hour%0A77%0A%0ABicycle%20rental%0A59%0A%0ALive%20music%2Fperformance%0A44%0ARooms%20and%20beds%0ABedrooms%0A%0A0%0A%0ABeds%0A%0A0%0A%0APrivate%20bathrooms%0A%0A0%0A%0ALandmarks%0A%0ATimes%20Square%0A152%0A%0ATop%20of%20the%20Rock%0A140%0A%0AEmpire%20State%20Building%0A135%0A%0ACentral%20Park%0A37%0A%0ABrooklyn%20Bridge%0A12%0ARoom%20accessibility%0A%0AEntire%20unit%20located%20on%20ground%20floor%0A5%0A%0AUpper%20floors%20accessible%20by%20elevator%0A169%0A%0AEntire%20unit%20wheelchair%20accessible%0A108%0A%0AToilet%20with%20grab%20rails%0A80%0A%0AAdapted%20bath%0A62%0A%0ARoll-in%20shower%0A104%0A%0AWalk-in%20shower%0A100%0A%0ARaised%20toilet%0A47%0A%0ALowered%20sink%0A47%0A%0AEmergency%20cord%20in%20bathroom%0A13%0A%0AShower%20chair%0A44%0ATravel%20Sustainable%0A%0ALevel%203%2B%0A58%0A%0ALevel%203%20and%20higher%0A84%0A%0ALevel%202%20and%20higher%0A174%0A%0ALevel%201%20and%20higher%0A256%0ABrands%0A%0ACourtyard%20by%20Marriott%0A11%0A%0AHilton%20Garden%20Inn%0A9%0A%0AHilton%20Hotels%20%26%20Resorts%0A8%0A%0AHampton%20Inn%0A8%0A%0AFairfield%20Inn%0A8%0A%0ADoubletree%20by%20Hilton%0A5%0A%0AHoliday%20Inn%20Express%0A5%0A%0AMoxy%20Hotels%0A5%0A%0ATrademark%0A5%0A%0ARenaissance%20Hotels%20%26%20Resorts%0A4%0A%0AShow%20all%2020%0AProperty%20accessibility%0A%0AToilet%20with%20grab%20rails%0A133%0A%0AHigher%20level%20toilet%0A91%0A%0ALower%20bathroom%20sink%0A91%0A%0AEmergency%20cord%20in%20bathroom%0A29%0A%0AVisual%20aids%3A%20Braille%0A84%0A%0AVisual%20aids%3A%20Tactile%20signs%0A67%0A%0AAuditory%20guidance%0A53%0ANew%20York%3A%20390%20properties%20found%0ABrowse%20the%20results%20for%20New%20York%0ADoubletree%20By%20Hilton%20New%20York%20Times%20Square%20West%0ADoubletree%20By%20Hilton%20New%20York%20Times%20Square%20WestOpens%20in%20new%20window%0AHell's%20Kitchen%2C%20New%20YorkShow%20on%20map1.6%20km%20from%20centreMetro%20access%0ATravel%20Sustainable%20Level%203%2B%0A7.0%0AGood%0A15%2C118%20reviews%7D-%7BAlaska%20Airlines%0AAS23%0A%24%20763%0A26%20Feb%2C%2011%3A45%0ANew%20York%20JFK%0A10%20h%0ASeattle%20SEA%20(15%3A15)%0A26%20Feb%2C%2018%3A45%0ALos%20Angeles%20LAX%7DLos_Angeles%7BHollywood%20Inn%20Suites%20HotelOpens%20in%20new%20window%0ASouth%20Los%20Angeles%2C%20Los%20AngelesShow%20on%20map15.8%20km%20from%20centre%0A7.8%0AGood%0A3%2C186%20reviews%0ADouble%20Room%20-%20Disability%20Access%0A2%20large%20double%20beds%7D\">Do you see what I see?<\/a><\/p>\n\n\n\n<!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-earth-scanner-sharing-tutorial\/'>Earth Scanner Sharing Itinerary Detail Tutorial<\/a>.<\/p-->\n<hr>\n<p id='essidt'>Previous relevant <a target=_blank title='Earth Scanner Sharing Itinerary Detail Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-sharing-itinerary-detail-tutorial\/'>Earth Scanner Sharing Itinerary Detail 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Sharing Itinerary Detail Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\" title=\"Earth Scanner Sharing Itinerary Detail Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Sharing Itinerary Detail Tutorial<\/p><\/div>\n<p>Further to yesterday's <a title='Earth Scanner Sharing Tutorial' href='#esst'>Earth Scanner Sharing Tutorial<\/a>, today, we were ...<\/p>\n<ul>\n<li>more than half expecting that for web browsers where <i>navigator.canShare<\/i> comes up with true (eg. Safari), supporting the <a target=_blank title='Web Share API information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Web_Share_API'>Web Share API<\/a> on a https:\/\/ protocol, we'd be saying for our tests involving faux itineraries (with much more than a thousand characters) being processed via a ...<br \/>\n<blockquote><p>\nHave most of the data be stored in the hash part of the \"URL\"\n<\/p><\/blockquote>\n<p> ... approach, that it worked back with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------GETME\">our latest<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---------GETME\">tenth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application incarnation, but ...<\/li>\n<li>we weren't expecting to be saying that web browsers where <i>navigator.canShare<\/i> comes up with false (eg. Google Chrome), not supporting the Web Share API, we'd be saying for our tests involving faux itineraries (with much more than a thousand characters) being processed via a ...<br \/>\n<blockquote><p>\nHave most of the data be stored in the hash part of the \"URL\"\n<\/p><\/blockquote>\n<p> ... approach, that it worked back with our latest Earth Scanner incarnation, <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\">but it did<\/a>!\n<\/li>\n<\/ul>\n<p>The thing to note is that the data should be hashtagged, rather than formed into ? and & \"get\" arguments which end up with a web server somewhere.  This also means a serverside language, such as PHP <font size=1>(where we'd often be involving HTML form method=POST scenarios by now)<\/font>, may never be needed with this Earth Scanner project we are currently engaged in, and we do prefer to talk just HTML and Javascript and CSS to be able to share code with more readers out there.  Hashtagging is purely client side work.  Guess we'd never tried any \"a\" \"mailto:\" URLs of huge length, mainly taken up by hashtagging data?!   Anyway, we are very pleased, and still think the Web Share API logic is worth keeping in, because of all the sharing options other than email presented, when this API is in full swing.<\/p>\n<p>And what is the point here?   Well, it means a person travelling, could share their itinerary with someone, or have a collaborator fill in the gaps perhaps, and the context of it all can be shown on an interactive map.  They could base a trip leg on the paradigm (using the Earth Scanner click prompt window) ...<\/p>\n<blockquote><p>\nTimezonePlaceFrom{eg. accomodation details, dates of stay, meeting details}-{eg. flight or road or rail or walking or sailing trip details, timezone issues}TimezonePlaceTo{eg. accomodation details, dates of stay, meeting details}\n<\/p><\/blockquote>\n<p> ... model, where {} are the Earth Scanner's annotation delimiters <font size=1>(we'd really like you to avoid within your annotations)<\/font>.  So far?!<\/p>\n<p><b><i>Stop Press<\/i><\/b><\/p>\n<p>As <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=civzfZ_3uVc'>Hunters and Collectors<\/a> asked ...<\/p>\n<blockquote><p>\nDo you see what I see?\n<\/p><\/blockquote>\n<p> ... well, this is what we saw making today's tutorial's <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_itinerary.gif\">animated GIF presentation<\/a> ... and so ... <a target=_new href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New_York%7B%0ANew%20York%0A%0ASun%2025%20Feb%0A%E2%80%94%0A%0AMon%2026%20Feb%0A%0A2%20adults%20%C2%B7%200%20children%20%C2%B7%201%20room%0A%0ASearch%0AHome%0AUnited%20States%0ANew%20York%20State%0ANew%20York%0ASearch%20results%0A%0AShow%20on%20map%0AFilter%20by%3A%0AYour%20budget%20(per%20night)%0AAUD%20110%20-%20AUD%20700%2B%0A%0A%0APopular%20filters%0A%0ANo%20prepayment%0A279%0A%0A5%20stars%0A53%0A%0AHotels%0A366%0A%0ASuperb%3A%209%2B%0A19%0ABased%20on%20guest%20reviews%0A%0AParking%0A260%0A%0ABreakfast%20included%0A167%0A%0AManhattan%0A383%0A%0ASwimming%20Pool%0A18%0AProperty%20type%0A%0AHotels%0A366%0A%0AEntire%20homes%20%26%20apartments%0A190%0A%0AApartments%0A16%0A%0AHostels%0A8%0A%0AHomestays%0A3%0A%0AGuest%20houses%0A1%0AFacilities%0A%0AParking%0A260%0A%0APets%20allowed%0A246%0A%0ARestaurant%0A217%0A%0ARoom%20service%0A144%0A%0ANon-smoking%20rooms%0A375%0A%0AShow%20all%2014%0AMeals%0A%0ASelf%20catering%0A70%0A%0ABreakfast%20included%0A167%0ABed%20preference%0A%0ATwin%20beds%0A38%0A%0ADouble%20bed%0A381%0A%0A2%20double%20beds%0A282%0AProperty%20rating%0AIncludes%20stars%20and%20other%20ratings%0A%0A1%20star%0A3%0A%0A2%20stars%0A8%0A%0A3%20stars%0A98%0A%0A4%20stars%0A216%0A%0A5%20stars%0A53%0A%0AUnrated%0A12%0ARoom%20facilities%0A%0APrivate%20bathroom%0A345%0A%0AKitchen%2Fkitchenette%0A70%0A%0ABath%0A156%0A%0ASpa%20bath%0A7%0A%0ABalcony%0A56%0A%0AShow%20all%2025%0ANeighbourhood%0A%0AGuests'%20favourite%20area%0A323%0A%0AManhattan%0A383%0A%0AMidtown%0A265%0A%0ACentral%20New%20York%20City%0A169%0A%0ABest%20areas%20outside%20centre%0A154%0A%0ASoHo%0A13%0A%0AMurray%20Hill%0A11%0A%0AWall%20Street%20-%20Financial%20District%0A33%0A%0AChelsea%0A30%0A%0AHell's%20Kitchen%0A43%0A%0AShow%20all%2025%0AReview%20score%0A%0ASuperb%3A%209%2B%0A19%0A%0AVery%20good%3A%208%2B%0A227%0A%0AGood%3A%207%2B%0A358%0A%0APleasant%3A%206%2B%0A378%0AReservation%20policy%0A%0AFree%20cancellation%0A1%0A%0ANo%20prepayment%0A279%0ADistance%20from%20centre%20of%20New%20York%0A%0ALess%20than%201%20km%0A61%0A%0ALess%20than%203%20km%0A276%0A%0ALess%20than%205%20km%0A303%0AFun%20things%20to%20do%0A%0AFitness%20centre%0A282%0A%0AFitness%0A195%0A%0AHappy%20hour%0A77%0A%0ABicycle%20rental%0A59%0A%0ALive%20music%2Fperformance%0A44%0ARooms%20and%20beds%0ABedrooms%0A%0A0%0A%0ABeds%0A%0A0%0A%0APrivate%20bathrooms%0A%0A0%0A%0ALandmarks%0A%0ATimes%20Square%0A152%0A%0ATop%20of%20the%20Rock%0A140%0A%0AEmpire%20State%20Building%0A135%0A%0ACentral%20Park%0A37%0A%0ABrooklyn%20Bridge%0A12%0ARoom%20accessibility%0A%0AEntire%20unit%20located%20on%20ground%20floor%0A5%0A%0AUpper%20floors%20accessible%20by%20elevator%0A169%0A%0AEntire%20unit%20wheelchair%20accessible%0A108%0A%0AToilet%20with%20grab%20rails%0A80%0A%0AAdapted%20bath%0A62%0A%0ARoll-in%20shower%0A104%0A%0AWalk-in%20shower%0A100%0A%0ARaised%20toilet%0A47%0A%0ALowered%20sink%0A47%0A%0AEmergency%20cord%20in%20bathroom%0A13%0A%0AShower%20chair%0A44%0ATravel%20Sustainable%0A%0ALevel%203%2B%0A58%0A%0ALevel%203%20and%20higher%0A84%0A%0ALevel%202%20and%20higher%0A174%0A%0ALevel%201%20and%20higher%0A256%0ABrands%0A%0ACourtyard%20by%20Marriott%0A11%0A%0AHilton%20Garden%20Inn%0A9%0A%0AHilton%20Hotels%20%26%20Resorts%0A8%0A%0AHampton%20Inn%0A8%0A%0AFairfield%20Inn%0A8%0A%0ADoubletree%20by%20Hilton%0A5%0A%0AHoliday%20Inn%20Express%0A5%0A%0AMoxy%20Hotels%0A5%0A%0ATrademark%0A5%0A%0ARenaissance%20Hotels%20%26%20Resorts%0A4%0A%0AShow%20all%2020%0AProperty%20accessibility%0A%0AToilet%20with%20grab%20rails%0A133%0A%0AHigher%20level%20toilet%0A91%0A%0ALower%20bathroom%20sink%0A91%0A%0AEmergency%20cord%20in%20bathroom%0A29%0A%0AVisual%20aids%3A%20Braille%0A84%0A%0AVisual%20aids%3A%20Tactile%20signs%0A67%0A%0AAuditory%20guidance%0A53%0ANew%20York%3A%20390%20properties%20found%0ABrowse%20the%20results%20for%20New%20York%0ADoubletree%20By%20Hilton%20New%20York%20Times%20Square%20West%0ADoubletree%20By%20Hilton%20New%20York%20Times%20Square%20WestOpens%20in%20new%20window%0AHell's%20Kitchen%2C%20New%20YorkShow%20on%20map1.6%20km%20from%20centreMetro%20access%0ATravel%20Sustainable%20Level%203%2B%0A7.0%0AGood%0A15%2C118%20reviews%7D-%7BAlaska%20Airlines%0AAS23%0A%24%20763%0A26%20Feb%2C%2011%3A45%0ANew%20York%20JFK%0A10%20h%0ASeattle%20SEA%20(15%3A15)%0A26%20Feb%2C%2018%3A45%0ALos%20Angeles%20LAX%7DLos_Angeles%7BHollywood%20Inn%20Suites%20HotelOpens%20in%20new%20window%0ASouth%20Los%20Angeles%2C%20Los%20AngelesShow%20on%20map15.8%20km%20from%20centre%0A7.8%0AGood%0A3%2C186%20reviews%0ADouble%20Room%20-%20Disability%20Access%0A2%20large%20double%20beds%7D\">Do you see what I see?<\/a><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-earth-scanner-sharing-tutorial\/'>Earth Scanner Sharing Itinerary Detail Tutorial<\/a>.<\/p-->\n<hr>\n<p id='esst'>Previous relevant <a target=_blank title='Earth Scanner Sharing Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-sharing-tutorial\/'>Earth Scanner Sharing 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Sharing Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_email.gif\" title=\"Earth Scanner Sharing Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Sharing Tutorial<\/p><\/div>\n<p>Another day, another API interfacing with our Earth Scanner web application from yesterday's <a title='Earth Scanner Window Focus Tutorial' href='#eswft'>Earth Scanner Window Focus Tutorial<\/a>.<\/p>\n<p>This time around, it is the turn of <a target=_blank title='Web Share API information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Web_Share_API'>Web Share API<\/a> to help us with our aim to introduce some ...<\/p>\n<ul>\n<li>email ... and\/or ...<\/li>\n<li>SMS<\/li>\n<\/ul>\n<p> ... sharing logic into play.  When \"sharing\" is talked about at this blog, we do not always resort to interfacing to the Web Share API.  Even so, when it works, this Web Share API works very usefully, but does not work everywhere.  So why the interest today, even so?  Well, we have more testing to know for sure, so that answer will be for tomorrow.<\/p>\n<p>Where <i>navigator.canShare<\/i> comes up with false we fall through to the usual ...<\/p>\n<ul>\n<li>email via \"a\" \"mailto:\" link usage ... and\/or ...<\/li>\n<li>SMS via \"a\" \"sms:\" link usage<\/li>\n<\/ul>\n<p> ... methodologies, feeding off the {} delimited annotations the user can now apply behind ...<\/p>\n<ul>\n<li>placenames (best with timezone places)<\/li>\n<li>leg delimiters ... to <sub>or<\/sub> - <sub>or<\/sub> from<\/li>\n<\/ul>\n<p> ... you can see us using in today's <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_annotation_email.gif\">animated GIF presentation<\/a>.  Why not just use this methodology everywhere?   Well, we have more testing to know for sure, so that answer will be for tomorrow.<\/p>\n<p>Reading this, feel free to try <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--------GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--------GETME\">ninth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application, it now having a new \"create a hashtag part to the email\/SMS URL\" <font size=1>(taking into account the newly populated plotanno[] and legsanno[] arrays)<\/font> function, as per ...<\/p>\n<p><code><br \/>\n  function newhashit() {<br \/>\n    var newh='#', legi=0, interim='';<br \/>\n    if (document.getElementById('sdurl')) {<br \/>\n      var washash='';<br \/>\n      if (document.getElementById('sdurl').value.indexOf('#') != -1) {<br \/>\n        washash='#' + document.getElementById('sdurl').value.split('#')[1];<br \/>\n      }<br \/>\n      for (var ii=0; ii&lt;plotplace.length; ii++) {<br \/>\n        if ((plotplace[ii] + ' ').toUpperCase().substring(0,1) &gt;= 'A' && (plotplace[ii] + ' ').toUpperCase().substring(0,1) &lt;= 'Z') {<br \/>\n           if (newh == '#') {<br \/>\n             if (plotanno[ii].trim() != '') {<br \/>\n               newh+=encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0] + '{' + plotanno[ii] + '}');<br \/>\n             } else if (legc.indexOf(',' + eval(-1 + ii) + '.' + eval(0 + ii) + ',') != -1) {<br \/>\n               legi=legs.indexOf('' + eval(-1 + ii) + '.' + eval(0 + ii) + '');<br \/>\n               if (legi == -1) {<br \/>\n               newh+=encodeURIComponent('-') + encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0]);<br \/>\n               } else if (legsanno[legi].trim() != '') {<br \/>\n               newh+=encodeURIComponent('-{' + legsanno[legi] + '}') + encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0]);<br \/>\n               } else {<br \/>\n               newh+=encodeURIComponent('-') + encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0]);<br \/>\n               }<br \/>\n             } else {<br \/>\n               newh+=encodeURIComponent(',') + encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0]);<br \/>\n             }<br \/>\n           } else if (plotplace[ii].trim() != '') {<br \/>\n             interim=encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0]);<br \/>\n             if (plotanno[ii].trim() != '') {<br \/>\n               interim=encodeURIComponent(plotplace[ii].replace(\/\\ \/g,'_').split(',_')[0] + '{' + plotanno[ii] + '}');<br \/>\n             }<br \/>\n             if (legc.indexOf(',' + eval(-1 + ii) + '.' + eval(0 + ii) + ',') != -1) {<br \/>\n               legi=legs.indexOf('' + eval(-1 + ii) + '.' + eval(0 + ii) + '');<br \/>\n               if (legi == -1) {<br \/>\n               newh+=encodeURIComponent('-') + interim;<br \/>\n               } else if (legsanno[legi].trim() != '') {<br \/>\n               newh+=encodeURIComponent('-{' + legsanno[legi] + '}') + interim;<br \/>\n               } else {<br \/>\n               newh+=encodeURIComponent('-') + interim;<br \/>\n               }<br \/>\n             } else {<br \/>\n               newh+=encodeURIComponent(',') + interim;<br \/>\n             }<br \/>\n           }<br \/>\n        }<br \/>\n      }<br \/>\n      if (newh != lasthcalc && newh != '#' && newh != washash) {<br \/>\n        document.getElementById('sdurl').value=document.getElementById('sdurl').value.split('#')[0] + '#' + newh.substring(1).replace(\/^\\%2C\/g,'');<br \/>\n        lasthcalc=newh;<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> ... and helped out by ...<\/p>\n<ul>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html----------GETME \">the changed HTML and Javascript<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html----------GETME\">web_share_api_test.html<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html\">Web Share API supervisor<\/a> web application ... helped out by ...<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/web_share_api_test.js------GETME\">today's changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/web_share_api_test.js------GETME\">web_share_api_test.js<\/a> external Javascript<\/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\/earth-scanner-sharing-tutorial\/'>Earth Scanner Sharing Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eswft'>Previous relevant <a target=_blank title='Earth Scanner Window Focus Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-window-focus-tutorial\/'>Earth Scanner Window Focus 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Window Focus Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_focus.gif\" title=\"Earth Scanner Window Focus Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Window Focus Tutorial<\/p><\/div>\n<p>The <a target=_blank title='Page Visibility API information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Page_Visibility_API'>Page Visibility API<\/a> has opened up possibilities from within Javascript, to monitor the to<sub>ing<\/sub> and fro<sub>ing<\/sub> to and\/or from your web applications in the modern web browsers.  We think the Earth Scanner web application of yesterday's <a title='Making of Earth Scanner Legs Tutorial' href='#meslt'>Making of Earth Scanner Legs Tutorial<\/a> could benefit from some Page Visibility API Javascript logic, and where we tend to inform the user is with ...<\/p>\n<ul>\n<li>document.title (as displayed on the web browser tab, of relevance) ... showing ...<\/li>\n<li>Page Visibility API findings ... perhaps involving ...<\/li>\n<li>date timestamps<\/li>\n<\/ul>\n<p>And how, practically, in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------GETME\">eighth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application, did we act should we make the discovery, with this Page Visibility API code ...<\/p>\n<p><code><br \/>\n var firstopn=true;<br \/>\n var gmovesallowed=movesallowed, gfive=five;<br \/>\n var playing=false, restart=false;<br \/>\n  <br \/>\n  function myFunction(opening) {<br \/>\n    if (opening) {<br \/>\n      document.body.style.backgroundColor='lightgreen';<br \/>\n      if (!playing && restart) {<br \/>\n        \/\/document.title='Restarting video play at ' + document.URL + ' at ' + ('' + new Date()) + '.';<br \/>\n        if (firstopn && eval('' + plotplace.length) > 0) {<br \/>\n          if (plotplace[eval(-1 + plotplace.length)].trim() != '') {<br \/>\n           lastdtplace='' + plotplace[eval(-1 + plotplace.length)];<br \/>\n           document.title='' + plotplace[eval(-1 + plotplace.length)] + ' ... ';<br \/>\n          }<br \/>\n        }<br \/>\n        movesallowed=gmovesallowed; five=gfive; \/\/document.getElementById('main-video').play();<br \/>\n        playing=true;<br \/>\n      } else {<br \/>\n        \/\/alert('2:' + document.title);<br \/>\n        movesallowed=gmovesallowed; five=gfive; \/\/document.getElementById('main-video').play();<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'Welcome back to Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      }<br \/>\n      restart=false;<br \/>\n    } else {<br \/>\n      document.body.style.backgroundColor='yellow';<br \/>\n      if (playing) {<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        playing=false;<br \/>\n        restart=true;<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'Paused Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      } else {<br \/>\n        \/\/alert('0:' + document.title);<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'You left Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      }<br \/>\n    }<br \/>\n    \/\/alert(0);<br \/>\n    firstopn=false;<br \/>\n  }<br \/>\n  <br \/>\n  function myCloseFunction() {<br \/>\n    if (document.visibilityState === \"hidden\") {<br \/>\n      if (playing) {<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        playing=false;<br \/>\n        restart=true;<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'Paused Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      } else {<br \/>\n        \/\/alert('1:' + document.title);<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'You Left Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      }<br \/>\n      document.body.style.backgroundColor='yellow';<br \/>\n    } else {<br \/>\n      myFunction(true);<br \/>\n    }<br \/>\n  }<br \/>\n   <br \/> <br \/>\n  \/\/<br \/>\n  \/\/ and down after the document.write() ... remember \"no body\" ... sort of \"just javascript\" ...<br \/>\n  \/\/<br \/>\n  document.onvisibilitychange = function() {<br \/>\n    if (document.visibilityState === \"hidden\") {<br \/>\n      document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'You Left ' + document.URL + ' At ' + ('' + new Date()) + '.'<br \/>\n      document.body.style.backgroundColor='yellow';<br \/>\n      if (playing) {<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        playing=false;<br \/>\n        restart=true;<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'Paused URL at ' + document.URL + ' at ' + ('' + new Date()) + '.';<br \/>\n      } else {<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'You Left ' + document.URL + ' At ' + ('' + new Date()) + '.';<br \/>\n      }<br \/>\n    } else {<br \/>\n      myFunction(true);<br \/>\n    }<br \/>\n  };<br \/>\n<br \/>\n  document.onpagehide = function() {<br \/>\n    if (document.visibilityState === \"hidden\") {<br \/>\n      document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'You Left Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      document.body.style.backgroundColor='yellow';<br \/>\n      if (playing) {<br \/>\n        movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n        playing=false;<br \/>\n        restart=true;<br \/>\n        document.title=(document.title + ' ... ').split(' ... ')[0] + ' ... ' + 'Paused Earth Scanner at ' + ('' + new Date()) + '.';<br \/>\n      }<br \/>\n      movesallowed=false; five=0; \/\/ document.getElementById('main-video').pause();<br \/>\n    } else {<br \/>\n      myFunction(true);<br \/>\n    }<br \/>\n  };<br \/>\n  <br \/>\n  document.body.onvisibilityChange=function() { myCloseFunction(); };<br \/>\n  document.body.onpageHide=function() { myFunction(false); };<br \/>\n  document.body.onpageShow=function() { myFunction(true); };<br \/>\n<\/code><\/p>\n<p> ... that a user has been distracted from the unmissable moments of Earth Scanner usage <font size=1>, heaven forbid<\/font>?  We try to slow it down, so that when they come back <font size=1>, praise be,<\/font> things have not moved on to irrelevance, as often.<\/p>\n<p>If all this sounds familiar, perhaps you were reading <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/applying-onpageshow-and-onpagehide-and-onvisibilitychange-events-tutorial\/' title='Applying Onpageshow and Onpagehide and Onvisibilitychange Events Tutorial'>Applying Onpageshow and Onpagehide and Onvisibilitychange Events Tutorial<\/a> when we were last talking about this excellent feature, when we were applying it to the playing or pausing of videos.  Of particular relevance might be ...<\/p>\n<blockquote cite='https:\/\/www.rjmprogramming.com.au\/ITblog\/applying-onpageshow-and-onpagehide-and-onvisibilitychange-events-tutorial\/'>\n<ol>\n<li><a target=\"_blank\" title=\"Onpageshow event\" href=\"https:\/\/www.w3schools.com\/jsref\/event_onpageshow.asp\">onpageshow<\/a> (at same time as document.body onload event) \u2026 opening \u2026 versus \u2026 closing \u2026<\/li>\n<li><a target=\"_blank\" title=\"Onpagehide event\" href=\"https:\/\/www.w3schools.com\/jsref\/event_onpagehide.asp\">onpagehide<\/a> (we had little success with this event) \u2026 and we had more success with \u2026<\/li>\n<li><a target=\"_blank\" title=\"Onvisibilitychanged event\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\/visibilitychange_event\">onvisibilitychange<\/a> (in conjunction with <i>document.visibilityState === \u201chidden\u201d<\/i> we succeeded)<\/li>\n<\/ol>\n<\/blockquote>\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\/earth-scanner-window-focus-tutorial\/'>Earth Scanner Window Focus Tutorial<\/a>.<\/p-->\n<hr>\n<p id='meslt'>Previous relevant <a target=_blank title='Making of Earth Scanner Legs Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/making-of-earth-scanner-legs-tutorial\/'>Making of Earth Scanner Legs 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Making of Earth Scanner Legs Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/making_of_earth_scanner_legs.gif\" title=\"Making of Earth Scanner Legs Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Making of Earth Scanner Legs Tutorial<\/p><\/div>\n<p>Quite often within the I.T. wooooorrrrrllllddd it is when we have an idea that is ...<\/p>\n<blockquote><p>\nJust a Bit of Fun\n<\/p><\/blockquote>\n<p> ... more than likely ...<\/p>\n<ol>\n<li>this is code for ... it will end up being difficult to achieve ... and in that same way ...<\/li>\n<li>often you'll learn a lot trying to make it happen<\/li>\n<\/ol>\n<p>What we wanted regarding yesterday's <a title='Earth Scanner Legs Tutorial' href='#eslt'>Earth Scanner Legs Tutorial<\/a> blog posting initial draft, where we had ...<\/p>\n<p><code><br \/>\n<a target=_blank data-id=ahash style='display:inline-block;'  href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New%20York-Los%20Angeles\">New York-Los Angeles<\/a><br \/>\n<\/code><\/p>\n<p> ... in HTML code ...<\/p>\n<p><code><br \/>\n&lt;code&gt;&lt;a target=_blank id=ahash style='display:inline-block;'  href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New%20York-Los%20Angeles\"&gt;New York-Los Angeles&lt;\/a&gt;&lt;\/code&gt;<br \/>\n<\/code><\/p>\n<p> ... we really wanted to prefix some content that ...<\/li>\n<ul>\n<li>showed as ... #<\/li>\n<li>on hover showed ... &#127926; ... for the heads up that a click might play ...<\/li>\n<li>Patsy Gallant's <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=kUI_P5eMVLo'>From New York to LA<\/a> via <a target=_blank title=YouTube href='\/\/youtube.com'>YouTube<\/a> ... initially envisaging just audio ... but the <a target=_blank title='Google Chrome' href='https:\/\/www.google.com\/chrome\/'>Google Chrome<\/a> web browser, at least (while others are good too) is far better than this ...<\/li>\n<\/ul>\n<p>We expected mobile might be different, and yes, we achieved less here, but we could open a popup the user can click a play button regarding.  With non-mobile, if your browser allows the \"autoplay\" feature for the \"rjmprogramming.com.au\" domain, you only need to click the \"#\" link to hear Patsy sing the song once over.  But <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?reload=9&#038;v=iiATDMHU7gc'>there's more<\/a> with Google Chrome, at least, supplying a \"right of address bar\" up the top \"musical notes\" button leading to ...<\/p>\n<ul>\n<li>usual video and\/or audio media controls ... <\/li>\n<li>\"In Picture\" playing of the YouTube video behind the audio ... and\/or ...<\/li>\n<li>\"Live Captions\" for that \"Karaoke Feel\"<\/li>\n<\/ul>\n<p> ... and so, that was all a pleasant surprise for us, because, of course, there were \"Internal Use Only\" issues.  We'd not noticed a \"Mixed Content\" call we were making in amongst our \"YouTube Video Interfacing Karaoke Style Play\" web application code in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html---------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/stop_start_youtube.html---------------GETME\">stop_start_youtube.html<\/a> helper of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-------------------------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.html-------------------------------GETME\">karaoke_youtube_api.htm<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm\">inhouse YouTube video interfacer<\/a>, and we needed to add in logic for the use of a new \"justaudio\" argument.<\/p>\n<p>That's one part of the equation, and the other was back at the blog posting \"code\" element coding, <a href='#shash'>as below<\/a>, where its HTML innards became ...<\/p>\n<p><code><br \/>\n&lt;code&gt;&lt;span id=shash data-cp=127926 onmouseover=\"if (this.title == 'Might play music ...') { this.title=String.fromCodePoint(127926); setInterval(function() { if (document.getElementById('shash').innerHTML.indexOf('&lt;') == -1) {  if (eval('' + event.target.getAttribute('data-cp')) == 35) { document.getElementById('shash').innerHTML=String.fromCharCode(eval('' + document.getElementById('shash').getAttribute('data-cp'))); document.getElementById('shash').setAttribute('data-cp','127926'); } else { document.getElementById('shash').innerHTML=String.fromCodePoint(eval('' + document.getElementById('shash').getAttribute('data-cp')));  document.getElementById('shash').setAttribute('data-cp','35');  } } }, 5000); }\" title='Might play music ...' style=display:inline-block;cursor:pointer;text-decoration:underline; onclick=\"this.innerHTML+='&lt;iframe style=display:inline-block;width:50px;height:50px;display:none; src=\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?justaudio=%23&youtubeid=kUI_P5eMVLo&youtube_duration=&email=&emoji=on&gt;#&lt;\/iframe&gt;'; if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) { document.getElementById('ahash').click(); window.open('\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=kUI_P5eMVLo&youtube_duration=202.221&email=&email=&emoji=on&c0=on&i0=0&j0=202.221&i1=&j1=&i2=&j2=&i3=&j3=&i4=&j4=&i5=&j5=&i6=&j6=&i7=&j7=&i8=&j8=&i9=&j9=&i10=&j10=&i11=&j11=&i12=&j12=&i13=&j13=&i14=&j14=&i15=&j15=&i16=&j16=&i17=&j17=&i18=&j18=&i19=&j19=&i20=&j20=&i21=&j21=&i22=&j22=&i23=&j23=&i24=&j24=&i25=&j25=&i26=&j26=&i27=&j27=&i28=&j28=&i29=&j29=','_blank','top=50,left=50,width=800,height=800'); } \"&gt;#&lt;\/span&gt;&lt;a target=_blank id=ahash style='display:inline-block;'  href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New%20York-Los%20Angeles\"&gt;New York-Los Angeles&lt;\/a&gt;<br \/>\n&lt;\/code&gt;<br \/>\n<\/code><\/p>\n<p><a onclick=\"document.getElementById('shash').click();\" style=cursor:pointer;text-decoration:underline;>Happy listening<\/a> ... etcetera, etcetera, etcetera!<\/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\/making-of-earth-scanner-legs-tutorial\/'>Making of Earth Scanner Legs Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eslt'>Previous relevant <a target=_blank title='Earth Scanner Legs Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-legs-tutorial\/'>Earth Scanner Legs 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Legs Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_legs.gif\" title=\"Earth Scanner Legs Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Legs Tutorial<\/p><\/div>\n<p>Of course, yes, there's a part of me that hoped today's tutorial in its thread of related blog postings, would line up with the 11th draft of our Earth Scanner web application of yesterday's <a title='Earth Scanner Hashtag Lists Tutorial' href='#eshlt'>Earth Scanner Hashtag Lists Tutorial<\/a>, and then we could have made some lame joke about \"Legs 11\", but we've grown up a lot since then, and even some reference to \"Legs XI\" can't quite bring us around.  Enjoy the sobriety <font size=1>(until the 11th draft, <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg'>that is<\/a>)<\/font>?!<\/p>\n<p>So, the \"legs\" we're referring to today are like a ...<\/p>\n<blockquote><p>\nTrip Leg\n<\/p><\/blockquote>\n<p> ... a concept of interest to lots of people.  Most of us make trips every day, and in our Earth Scanning web application we harness the great <a target=_blank href='https:\/\/www.google.com\/search?q=google+directions&#038;rlz=1C5CHFA_enAU973AU973&#038;oq=google+directions&#038;aqs=chrome.0.69i59j0i512l6j69i60.4254j0j4&#038;sourceid=chrome&#038;ie=UTF-8' title='Google Directions'>Google Directions<\/a> link to make suggestions about how you might undertake your trip leg.  It's a simple case of replacing any commas in your (perhaps timezone) list with minus sign(s) to start seeing trip legs, such as ...<\/p>\n<p><code><span id=shash data-cp=127926 onmouseover=\"if (this.title == 'Might play music ...') { this.title=String.fromCodePoint(127926); setInterval(function() { if (document.getElementById('shash').innerHTML.indexOf('<') == -1) {  if (eval('' + event.target.getAttribute('data-cp')) == 35) { document.getElementById('shash').innerHTML=String.fromCharCode(eval('' + document.getElementById('shash').getAttribute('data-cp'))); document.getElementById('shash').setAttribute('data-cp','127926'); } else { document.getElementById('shash').innerHTML=String.fromCodePoint(eval('' + document.getElementById('shash').getAttribute('data-cp')));  document.getElementById('shash').setAttribute('data-cp','35');  } } }, 5000); }\" title='Might play music ...' style=display:inline-block;cursor:pointer;text-decoration:underline; onclick=\"this.innerHTML+='<iframe style=display:inline-block;width:50px;height:50px;display:none; src=\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?justaudio=%23&#038;youtubeid=kUI_P5eMVLo&#038;youtube_duration=&#038;email=&#038;emoji=on>#<\/iframe>'; if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) { document.getElementById('ahash').click(); window.open('\/\/www.rjmprogramming.com.au\/HTMLCSS\/karaoke_youtube_api.htm?youtubeid=kUI_P5eMVLo&youtube_duration=202.221&email=&email=&emoji=on&c0=on&i0=0&j0=202.221&i1=&j1=&i2=&j2=&i3=&j3=&i4=&j4=&i5=&j5=&i6=&j6=&i7=&j7=&i8=&j8=&i9=&j9=&i10=&j10=&i11=&j11=&i12=&j12=&i13=&j13=&i14=&j14=&i15=&j15=&i16=&j16=&i17=&j17=&i18=&j18=&i19=&j19=&i20=&j20=&i21=&j21=&i22=&j22=&i23=&j23=&i24=&j24=&i25=&j25=&i26=&j26=&i27=&j27=&i28=&j28=&i29=&j29=','_blank','top=50,left=50,width=800,height=800'); } \">#<\/span><a target=_blank id=ahash style='display:inline-block;'  href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html#New%20York-Los%20Angeles\">New York-Los Angeles<\/a><br \/>\n<\/code><\/p>\n<p> ... either at the Javascript prompt window or with the address bar hashtag arrangements, which might end up calling ...<\/p>\n<p><code><br \/>\n  function plotleg(thisleg, smlong, lglat, lglong, smlat) {<br \/>\n     var brgtoset=0.0, disttoset=0.0, gbrgtoset=0.0, gdisttoset=0.0;<br \/>\n     if (1 == 1) {<br \/>\n     disttoset=Math.sqrt((eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[0])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth)) - eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[1])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth))) * (eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[0])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth)) - eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[1])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth))) + (eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[0])])) \/ eval(lglat - smlat) * eval(screenheight))) - eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[1])])) \/ eval(lglat - smlat) * eval(screenheight)))) * (eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[0])])) \/ eval(lglat - smlat) * eval(screenheight))) - eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[1])])) \/ eval(lglat - smlat) * eval(screenheight)))));<br \/>\n     }<br \/>\n     gdisttoset=great_circle_distance(plotlat[eval(thisleg.split('.')[0])],  plotlong[eval(thisleg.split('.')[0])], plotlat[eval(thisleg.split('.')[1])], plotlong[eval(thisleg.split('.')[1])]);<br \/>\n     gdisttoset=great_circle_distance(plotlat[eval(thisleg.split('.')[0])],  plotlong[eval(thisleg.split('.')[0])], plotlat[eval(thisleg.split('.')[1])], plotlong[eval(thisleg.split('.')[1])]);<br \/>\n     var meanlong=eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[0])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth));<br \/>\n     var meanlat=eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[0])])) \/ eval(lglat - smlat) * eval(screenheight)));<br \/>\n     brgtoset=Math.atan2(eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[1])])) \/ eval(lglat - smlat) * eval(screenheight))) - meanlat, eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[1])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth)) - meanlong) * 180 \/ Math.PI;<br \/>\n     meanlong+=eval(0 + eval(eval('' + plotlong[eval(thisleg.split('.')[1])]) - smlong) \/ eval(lglong - smlong) * eval(screenwidth))<br \/>\n     meanlong\/=2.0;<br \/>\n     meanlat+=eval(0 + eval(eval(lglat - eval('' + plotlat[eval(thisleg.split('.')[1])])) \/ eval(lglat - smlat) * eval(screenheight)));<br \/>\n     meanlat\/=2.0;<br \/>\n     console.log(thisleg + ' ' + brgtoset + ' ' + thisleg + ' ... ' + plotlat[eval(thisleg.split('.')[0])] + ',' + plotlong[eval(thisleg.split('.')[0])] + ' to ' + plotlat[eval(thisleg.split('.')[1])] + ',' + plotlong[eval(thisleg.split('.')[1])]);<br \/>\n     bmeridian+='&lt;hr onclick=\"event.stopPropagation(); canlooknow=false; clearwo(); wo=window.open(' + \"'\/\/www.google.com\/maps\/dir\/\" + encodeURIComponent(plotplace[eval(thisleg.split('.')[0])]) + '\/' + encodeURIComponent(plotplace[eval(thisleg.split('.')[1])]) + \"#In a minute we will start moving the map again','_blank','top=50,left=50,width=1000,height=900')\" + '; canlooknow=true; \" ondblclick=\"event.stopPropagation(); canlooknow=false; clearwo(); wo=window.open(' + \"'\/\/www.google.com\/maps\/dir\/\" + plotlat[eval(thisleg.split('.')[0])] + ',' + plotlong[eval(thisleg.split('.')[0])] + '\/' + plotlat[eval(thisleg.split('.')[1])] + ',' + plotlong[eval(thisleg.split('.')[1])] + \"#In a minute we will start moving the map again','_blank','top=50,left=50,width=1000,height=900')\" + '; canlooknow=true; \" title=\"' + plotplace[eval(thisleg.split('.')[0])] + ' to ' + plotplace[eval(thisleg.split('.')[1])] + ' has the crow flying (' + gbrgtoset + ' degrees setting off at versus on Mercator Projection ...) ' + eval(eval(brgtoset + 450) % 360) + ' degrees for ' + eval(gdisttoset \/ 1000.0) + ' kilometers.  Click (for placename) or double click (for geographicals) to open a Google Directions window.\" class=leg style=\"transform:rotate(' + eval(eval('' + brgtoset) - 0) + 'deg);z-index:975;opacity:0.3;position:fixed;top:' +<br \/>\n     meanlat +<br \/>\n     'px;left:' +<br \/>\n     eval(meanlong - disttoset \/ 2) +<br \/>\n     'px;background-color:rgba(255,0,0,0.5);width:' + disttoset + 'px;height:6px;\"&gt;&lt;\/hr&gt;&lt;span onclick=\"event.stopPropagation(); canlooknow=false; clearwo(); wo=window.open(' + \"'\/\/www.google.com\/maps\/dir\/\" + encodeURIComponent(plotplace[eval(thisleg.split('.')[0])]) + '\/' + encodeURIComponent(plotplace[eval(thisleg.split('.')[1])]) + \"#In a minute we will start moving the map again','_blank','top=50,left=50,width=1000,height=900')\" + '; canlooknow=true; \" ondblclick=\"event.stopPropagation(); canlooknow=false; clearwo(); wo=window.open(' + \"'\/\/www.google.com\/maps\/dir\/\" + plotlat[eval(thisleg.split('.')[0])] + ',' + plotlong[eval(thisleg.split('.')[0])] + '\/' + plotlat[eval(thisleg.split('.')[1])] + ',' + plotlong[eval(thisleg.split('.')[1])] + \"#In a minute we will start moving the map again','_blank','top=50,left=50,width=1000,height=900')\" + '; canlooknow=true; \" title=\"' + plotplace[eval(thisleg.split('.')[0])] + ' to ' + plotplace[eval(thisleg.split('.')[1])] + ' has the crow flying (' + gbrgtoset + ' degrees setting off at versus on Mercator Projection ...) ' + eval(eval(360 - brgtoset) % 360) + ' degrees for ' + eval(gdisttoset \/ 1000.0) + ' kilometers.  Click (for placename) or double click (for geographicals) to open a Google Directions window.\" class=leg style=\"cursor:pointer;font-size:6px;z-index:976;margin-top:6px;margin-left:-6px;position:fixed;top:' + meanlat + 'px;left:' + meanlong + 'px;\"&gt;&amp;#129517;&lt;\/span&gt;';<br \/>\n     <font color=blue>if (ofive == fivethousand) {<br \/>\n        fivethousand*=10;<br \/>\n        setTimeout(callintoplay, 5000);<br \/>\n     }<\/font><br \/>\n  }<br \/>\n<\/code><\/p>\n<p> ... and putting this into play we realized we should <font color=blue>slow down animations<\/font> to give users a chance to consider whether they want to \"drill down\" into finding out more about the \"trip legs\" as user defined.<\/p>\n<p>This happens in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html------GETME\">seventh <font size=1>(boo hoo)<\/font> draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/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\/earth-scanner-legs-tutorial\/'>Earth Scanner Legs Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eshlt'>Previous relevant <a target=_blank title='Earth Scanner Hashtag Lists Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-hashtag-lists-tutorial\/'>Earth Scanner Hashtag Lists 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Hashtag Lists Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_hashtag.gif\" title=\"Earth Scanner Hashtag Lists Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Hashtag Lists Tutorial<\/p><\/div>\n<p>Before yesterday's <a title='Earth Scanner TimeZone Tutorial' href='#estzt'>Earth Scanner TimeZone Tutorial<\/a>, when we presented <a title='Earth Scanner Places Tutorial' href='#espt'>Earth Scanner Places Tutorial<\/a> we intimated with ...<\/p>\n<blockquote cite='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-places-tutorial\/'><p>\n ... and into the future we have another idea regarding how this operates.\n<\/p><\/blockquote>\n<p> ... that we might offer another way for the driver of our latest Earth Scanner web application ...<\/p>\n<ul>\n<li>not only depend on a webpage click event Javascript prompt window means by which to control proceedings, including newly coded for comma separated list logic support ... but, also, as of today, after proving it could work <font size=1>(because we can't remember ever depending this much on a \"hashtag on the address bar\" arrangement, in the past, before)<\/font> ...<\/li>\n<li>but also allow similar functionality using hashtags on the address bar of the web browser, and able to be changed dynamically (ie. in real time) by the user, as required ...<br \/>\n<code><br \/>\n    if (prevhash != decodeURIComponent(('' + location.hash).replace(\/^null$\/g,'').replace(\/^undefined$\/g,'').replace(\/^\\#\/g,''))) {<br \/>\n       thishash=decodeURIComponent(('' + location.hash).replace(\/^null$\/g,'').replace(\/^undefined$\/g,'').replace(\/^\\#\/g,'')); \/\/.trim();<br \/>\n       for (var iop=0; iop&lt;plotplace.length; iop++) {<br \/>\n          thishash=thishash.replace(plotplace[iop], '');<br \/>\n       }<br \/>\n       var thishs=thishash.replace(\/\\ to\\ \/g,',').trim().split(',');<br \/>\n       if (thishs[0].trim() != '') {<br \/>\n          for (var ipo=0; ipo&lt;thishs.length; ipo++) {<br \/>\n             if (newlist == '') {<br \/>\n               nlist=thishs[ipo].replace(\/\\+\/g,'').trim(); \/\/.trim();<br \/>\n               newlist=thishs[ipo].replace(\/\\+\/g,''); \/\/.trim();<br \/>\n               prefnew=thishs[ipo].replace(\/\\+\/g,' ').split(nlist)[0];<br \/>\n               if (eval(1 + ipo) == eval('' + thishs.length) && thishs[ipo].replace(\/\\+\/g,' ') != (prefnew + newlist)) {<br \/>\n               \/\/alert(98);<br \/>\n                suffnew=thishs[ipo].replace(\/\\+\/g,' ').split(newlist)[1];<br \/>\n               }<br \/>\n             } else {<br \/>\n               nlist=thishs[ipo].replace(\/\\+\/g,'').trim(); \/\/.trim();<br \/>\n               newlist+=',' + nlist; \/\/.trim();<br \/>\n               if (eval(1 + ipo) == eval('' + thishs.length) && thishs[ipo].replace(\/\\+\/g,' ') != nlist) {<br \/>\n                suffnew=thishs[ipo].replace(\/\\+\/g,' ').split(nlist)[1];<br \/>\n               }<br \/>\n             }<br \/>\n          }<br \/>\n       }<br \/>\n       prevhash=decodeURIComponent(('' + location.hash).replace(\/^null$\/g,'').replace(\/^undefined$\/g,'').replace(\/^\\#\/g,'')); \/\/.trim();<br \/>\n       if (newlist != '') {<br \/>\n         \/\/alert('newlist=' + newlist + '|');<br \/>\n         gdefv=prefnew + newlist + suffnew;<br \/>\n         \/\/alert(gdefv + '!');<br \/>\n         if (1 == 1) {<br \/>\n         askfor=gdefv;<br \/>\n         if (1 == 7 && ('' + askfor).replace('(','').replace(')','').replace('[','').replace(']','').indexOf(',') != -1) {<br \/>\n         ameridian='';<br \/>\n         acircleoflatitude='';<br \/>\n         enforcedlong=false;<br \/>\n         enforcedxp=-999;<br \/>\n         }<br \/>\n         document.getElementById('myimg').click();<br \/>\n         gdefv='';<br \/>\n         setTimeout(scmove, fivethousand);<br \/>\n         return null;<br \/>\n         } else {<br \/>\n         ourprompt(null,'Earth Scanner - RJM Programming - February, 2024 ... ' + String.fromCharCode(10) + 'Thanks to https:\/\/github.com\/nvkelso\/natural-earth-raster\/blob\/master\/50m_rasters\/HYP_50M_SR_W\/HYP_50M_SR_W.README.html ... ' + String.fromCharCode(10) + 'Currently top left of screen is (Longitude,Latitude) ' + '(' + eval(-180 + xp * 360 \/ 100) + ',' + eval(90 - yp * 180 \/ 100) + ') and bottom right is (' + eval(-180 + screenlong + xp * 360 \/ 100) + ',' + eval(90 - screenlat - yp * 180 \/ 100) + ') and around the middle is (' + eval(-180 + eval(screenlong \/ 2) + xp * 360 \/ 100) + ',' + eval(90 - eval(screenlat \/ 2) - yp * 180 \/ 100) + ').' + String.fromCharCode(10) + 'Where do you want middle of screen to be in terms of Longitude,Latitude?  Suffix with space to show meridians and\/or prefix with space to not show meridians.', newlist);<br \/>\n         }<br \/>\n       }<br \/>\n    }<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p>And we did find this an easy way to build up a sizeable number of plotted places, in quick time, entered as ...<\/p>\n<ul id=ulrules>\n<li>the \"P\" and \"N' and \"A\" and \"C\" shortcuts (near to where the user clicked) ways<\/li>\n<li>timezone place name(s)<\/li>\n<li>country name(s)<\/li>\n<li>country code(s)<\/li>\n<li>[longitude,latitude,placename]<\/li>\n<li>[longitude,latitude]<\/li>\n<li>longitude,latitude,placename<\/font><\/li>\n<li>longitude,latitude <font size=1>(with some form of mantissa)<\/font><\/li>\n<\/ul>\n<p> ... methodologies to end up with at least a pin (&#128205;) emoji plotted, as well as the \"longitude,latitude <font size=1>(with no form of mantissa)<\/font>\" way to just move the map to that position with no plotting taking place.<\/p>\n<p>But now that we have a few \"data players\" in the mix, there'll be users out there that do not want to see it all, perhaps ... and so, now \"the blurb\" goes, for user entries, in either of these modes of use ...<\/p>\n<blockquote><p>\n ... at prompt ++ can make delay between snapshots slower and -- can  make delay between snapshots faster <br \/> ... at prompt &gt; can hide any time related information else &lt; reveals it again <br \/> ... comma lists of TimeZone places and\/or Country Codes (2 letter) and\/or Country Names can be plotted via click or via hashtag usage up at address bar <br \/> ... suffix with space to show meridians and\/or prefix with space to not show meridians\n<\/p><\/blockquote>\n<p> ... in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-----GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-----GETME\">sixth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/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\/earth-scanner-hashtag-lists-tutorial\/'>Earth Scanner Hashtag Lists Tutorial<\/a>.<\/p-->\n<hr>\n<p id='estzt'>Previous relevant <a target=_blank title='Earth Scanner TimeZone Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-timezone-tutorial\/'>Earth Scanner 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner TimeZone Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_datetime.jpg\" title=\"Earth Scanner TimeZone Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner TimeZone Tutorial<\/p><\/div>\n<p>Take a look at the word ...<\/p>\n<blockquote><p>\nTimeZone\n<\/p><\/blockquote>\n<p> ... as a concept newly introduced into the Earth Scanner web application workings, as explained in yesterday's <a title='Earth Scanner Places Tutorial' href='#espt'>Earth Scanner Places Tutorial<\/a>.<\/p>\n<p>It's got a \"where\" word part \"Zone\" fitting in with our \"where of life\" ideas up to now, but it also has got \"Time\" as a new \"when of life\" word part of the whole idea of TimeZones we'd like to start exploring today.  Yes, TimeZones are very useful to have \"where\" meet \"when\" <font size=1>... the Opera Bar would be nice, we think<\/font>.<\/p>\n<p>We <font color=blue>now have<\/font> ...<\/p>\n<p><code><br \/>\n  function ourprompt(e, blurb, defv) {<br \/>\n       var locans=null, ijk=0, extras=''<font color=blue>,thatplace='', utzdate, tzDate, xdate1, xextratztime, xextraemj, xdiff<\/font>;<br \/>\n       if (eval(uc_iso_country_codes.length) == 0) {<br \/>\n          for (ijk=0; ijk&lt;iso_country_codes.length; ijk++) {<br \/>\n            uc_iso_country_codes.push(iso_country_codes[ijk].toUpperCase());<br \/>\n          }<br \/>\n       }<br \/>\n       e = e || window.event;<br \/>\n       e.preventDefault();<br \/>\n       if (e.touches) {<br \/>\n       if (e.touches[0].pageX) {<br \/>\n       xinxy.push(eval(e.touches[0].pageX + document.body.scrollLeft * 0) * 1);<br \/>\n       yinxy.push(eval(e.touches[0].pageY + document.body.scrollTop * 0) * 1);<br \/>\n       } else {<br \/>\n       xinxy.push(eval(e.touches[0].clientX + document.body.scrollLeft * 0) * 1);<br \/>\n       yinxy.push(eval(e.touches[0].clientY + document.body.scrollTop * 0) * 1);<br \/>\n       }<br \/>\n       } else if (e.clientX || e.clientY) {<br \/>\n        xinxy.push(e.clientX + document.body.scrollLeft * 0);<br \/>\n        yinxy.push(e.clientY + document.body.scrollTop * 0);<br \/>\n       } else {<br \/>\n        xinxy.push(e.pageX + document.body.scrollLeft * 0);<br \/>\n        yinxy.push(e.pageY + document.body.scrollTop * 0);<br \/>\n       }<br \/>\n       var llsa=blurb.split(') (')[1];<br \/>\n       \/\/alert(blurb + ' ... ' + llsa);<br \/>\n       tllg=eval(llsa.split(',')[0]);<br \/>\n       tlla=eval(llsa.split(',')[1].split(')')[0]);<br \/>\n       brlg=eval(llsa.split('(')[1].split(',')[0]);<br \/>\n       brla=eval(llsa.split('(')[1].split(',')[1].split(')')[0]);<br \/>\n       thislong=eval(tllg + eval(eval(xinxy[eval(-1 + xinxy.length)] \/ screenwidth) * eval(screenlong)));<br \/>\n       thislat=eval(tlla - eval(eval(yinxy[eval(-1 + yinxy.length)] \/ screenheight) * eval(screenlat)));<br \/>\n       var nearbyfour=retnearest(thislong, thislat);<br \/>\n       var aatm='youllneverfindthis';<br \/>\n       var bbtm=String.fromCharCode(9);<br \/>\n       if (blurb.indexOf('Thanks to ') != -1) {<br \/>\n         if (blurb.split('Thanks to ')[1].indexOf(' ...') != -1) {<br \/>\n           bbtm='Thanks to ' + blurb.split('Thanks to ')[1].split(' ...')[0] + ' ...';<br \/>\n         }<br \/>\n       }<br \/>\n       if (blurb.indexOf(' and around the middle ') != -1) {<br \/>\n         aatm=' and around the middle ' + blurb.split(' and around the middle ')[1].split(')')[0] + ')';<br \/>\n       }<br \/>\n       var ourblurb=(blurb.replace(bbtm,'').replace('Currently top ','Top ').replace(' in terms of ',' as ').replace(aatm, '').replace(\/\\ and\\ \/g,' & ').replace('? ', '? ' + ' Nearest timezone place (via N) is ' + nearbyfour.split('|')[3] + ' at [' + nearbyfour.split('|')[0] + ',' + nearbyfour.split('|')[1] + '] to your clicked (via C) [' + thislong + ',' + thislat + '] ') + bbtm.replace(String.fromCharCode(9),'')).replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n       if (prevf.indexOf(',') != -1) {<br \/>\n         if (Math.abs(eval(prevf.split(',')[0]) - tllg) &lt;= 0.5) {<br \/>\n         prevf='' + prevone + ',' + prevtwo + ',' + prevthree + ',' + prevfour;<br \/>\n         }<br \/>\n         if (Math.abs(eval(prevf.split(',')[0]) - tllg) &gt; 0.5) {<br \/>\n       tllg=eval(prevf.split(',')[0]);<br \/>\n       tlla=eval(prevf.split(',')[1]);<br \/>\n       brlg=eval(prevf.split(',')[2]);<br \/>\n       brla=eval(prevf.split(',')[3]);<br \/>\n       var sthislong=eval(tllg + eval(eval(xinxy[eval(-1 + xinxy.length)] \/ screenwidth) * eval(screenlong)));<br \/>\n       var sthislat=eval(tlla - eval(eval(yinxy[eval(-1 + yinxy.length)] \/ screenheight) * eval(screenlat)));<br \/>\n       var snearbyfour=retnearest(sthislong, sthislat);<br \/>\n          \/\/alert(ourblurb + ' ' + prevf + ' vs ' + tllg + ' ... ' + Math.abs(eval(prevf.split(',')[0]) - tllg));<br \/>\n       ourblurb=ourblurb.replace('? ', '? ' + ' Nearest timezone place (via P) is ' + snearbyfour.split('|')[3] + ' at [' + snearbyfour.split('|')[0] + ',' + snearbyfour.split('|')[1] + '] to your clicked (via A) [' + sthislong + ',' + sthislat + '] ');<br \/>\n         }<br \/>\n        locans=prompt(ourblurb, defv);<br \/>\n       }<br \/>\n       if (locans != null) {<br \/>\n         if (locans.toUpperCase().trim() == 'N') {<br \/>\n           locans=locans.toUpperCase().replace('N', '[' + nearbyfour.split('|')[0] + ',' + nearbyfour.split('|')[1] + ']');<br \/>\n           plotplace.push(nearbyfour.split('|')[3]);<br \/>\n           plotcc.push(nearbyfour.split('|')[2]);<br \/>\n           plotlong.push(nearbyfour.split('|')[0]);<br \/>\n           plotlat.push(nearbyfour.split('|')[1]);<br \/>\n           <font color=blue>if (eval('' + nearbyfour.length) &gt; 4) {<br \/>\n           <br \/>\n           plottz.push(nearbyfour.split('|')[4]);<br \/>\n           plotct.push(nearbyfour.split('|')[5]);<br \/>\n           plotemj.push(nearbyfour.split('|')[6]);<br \/>\n<br \/>\n           } else {<br \/>\n           plottz.push('');<br \/>\n           plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           }<\/font><br \/>\n         } else if (locans.toUpperCase().trim() == 'C') {<br \/>\n           thisplace=' ';<br \/>\n           locans=locans.toUpperCase().replace('C', '[' + thislong + ',' + thislat + ']');<br \/>\n           plotplace.push('');<br \/>\n           plotcc.push(nearbyfour.split('|')[2]);<br \/>\n           plotlong.push(thislong);<br \/>\n           plotlat.push(thislat);<br \/>\n           <font color=blue>plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           plottz.push('');<\/font><br \/>\n         } else if (locans.toUpperCase().trim() == 'P') {<br \/>\n           locans=locans.toUpperCase().replace('P', '[' + snearbyfour.split('|')[0] + ',' + snearbyfour.split('|')[1] + ']');<br \/>\n           plotplace.push(snearbyfour.split('|')[3]);<br \/>\n           plotcc.push(snearbyfour.split('|')[2]);<br \/>\n           plotlong.push(snearbyfour.split('|')[0]);<br \/>\n           plotlat.push(snearbyfour.split('|')[1]);<br \/>\n           <font color=blue>if (eval('' + nearbyfour.length) &gt; 4) {<br \/>\n           <br \/>\n           plottz.push(nearbyfour.split('|')[4]);<br \/>\n           plotct.push(nearbyfour.split('|')[5]);<br \/>\n           plotemj.push(nearbyfour.split('|')[6]);<br \/>\n<br \/>\n           } else {<br \/>\n           plottz.push('');<br \/>\n           plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           }<\/font><br \/>\n         } else if (locans.toUpperCase().trim() == 'A') {<br \/>\n           thisplace='   ';<br \/>\n           locans=locans.toUpperCase().replace('A', '[' + sthislong + ',' + sthislat + ']');<br \/>\n           plotplace.push('');<br \/>\n           plotcc.push(snearbyfour.split('|')[2]);<br \/>\n           plotlong.push(sthislong);<br \/>\n           plotlat.push(sthislat);<br \/>\n           <font color=blue>plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           plottz.push('');<\/font><br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && yourtzlist.indexOf('\/' + ('' + locans.trim()).replace(\/\\ \/g,'_') + '&lt;') != -1) {<br \/>\n           thisplace=yourtzlist.split('\/' + ('' + locans.trim()).replace(\/\\ \/g,'_') + '&lt;')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split('\/' + ('' + locans.trim()).replace(\/\\ \/g,'_') + '&lt;')[0].split(' data-geo=\"').length)];<br \/>\n   \/\/alert(thisplace);<br \/>\n   <font color=blue><br \/>\n           udate=new Date();<br \/>\n           utcDate = new Date(udate.toLocaleString('en-US', { timeZone: 'UTC' }));<br \/>\n<br \/>\n           thatplace=thisplace.split('&gt;')[1].split('&lt;')[0].replace('GMT','UTC') + '\/' + locans;<br \/>\n    \/\/alert(thatplace);<br \/>\n          utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           extratz=',' + thatplace; \/\/.split('\/')[eval(-1 + iplacesarr[jk].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') });<br \/>\n           xextratztime=(',' + xdate1);<br \/>\n           plottz.push(thatplace);<br \/>\n           thatplace=thatplace.replace('GMT','Europe\/London').split('\/')[eval(-1 + thatplace.replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdiff = Math.abs(tzDate.getTime() - utcDate.getTime()) \/ 3600000;<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct.push('' + xdate1);<br \/>\n           plotemj.push(clockit('' + xdiff));<br \/>\n<\/font><br \/>\n           plotplace.push(yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(thisplace.split(',')[3]);<br \/>\n     if (thisplace.split(',')[3] != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == thisplace.split(',')[3].toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n     \/\/alert(extras + ' ... ' + locans);<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n     \/\/alert(locans);<br \/>\n           thisplace='   ';<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && yourtzlist.toUpperCase().indexOf('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;') != -1) {<br \/>\n           thisplace=yourtzlist.toUpperCase().split('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;')[0].split(' DATA-GEO=\"')[eval(-1 + yourtzlist.toUpperCase().split('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;')[0].split(' DATA-GEO=\"').length)];<br \/>\n   \/\/alert(thisplace);<br \/>\n           <font color=blue>udate=new Date();<br \/>\n           utcDate = new Date(udate.toLocaleString('en-US', { timeZone: 'UTC' }));<br \/>\n<br \/>\n           thatplace=thisplace.split('&gt;')[1].split('&lt;')[0].replace('GMT','UTC') + '\/' + locans;<br \/>\n           utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           extratz=',' + thatplace; \/\/.split('\/')[eval(-1 + iplacesarr[jk].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC') });<br \/>\n           xextratztime=(',' + xdate1);<br \/>\n           plottz.push(thatplace);<br \/>\n           thatplace=thatplace.replace('GMT','Europe\/London').split('\/')[eval(-1 + thatplace.replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdiff = Math.abs(tzDate.getTime() - utcDate.getTime()) \/ 3600000;<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct.push('' + xdate1);<br \/>\n           plotemj.push(clockit('' + xdiff));<br \/>\n<\/font><br \/>\n           plotplace.push(yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(thisplace.split(',')[3]);<br \/>\n     if (thisplace.split(',')[3] != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == thisplace.split(',')[3].toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n     \/\/alert(extras + ' ... ' + locans);<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n     \/\/alert(locans);<br \/>\n           thisplace='   ';<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) == 2 && ('' + locans).indexOf(',') == -1 && yourtzlist.indexOf(',' + ('' + locans.trim()).toUpperCase() + ',') != -1) {<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n<font color=blue><br \/>\n           thatplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','UTC');<br \/>\n           utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           extratz=',' + thatplace; \/\/.split('\/')[eval(-1 + iplacesarr[jk].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') });<br \/>\n           xextratztime=(',' + xdate1);<br \/>\n           plottz.push(thatplace);<br \/>\n           thatplace=thatplace.replace('GMT','Europe\/London').split('\/')[eval(-1 + thatplace.replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdiff = Math.abs(tzDate.getTime() - utzdate.getTime()) \/ 3600000;<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct.push('' + xdate1);<br \/>\n           plotemj.push(clockit('' + xdiff));<br \/>\n<\/font><br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && iso_country_codes.indexOf(locans.trim()) != -1) {<br \/>\n   \/\/alert(iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))].toUpperCase());<br \/>\n           if (yourtzlist.indexOf(',' + ('' + iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))].toUpperCase()) + ',') != -1) {<br \/>\n           locans=locans.replace(locans.trim(), '' + iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))]);<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n<font color=blue><br \/>\n           \/\/alert('thisplace=' + thisplace + ' and thatplace=' + thatplace);<br \/>\n           thatplace=yourtzlist.split(thisplace)[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','UTC');<br \/>\n           \/\/alert('thisplace=' + thisplace + ' and thatplace=' + thatplace);<br \/>\n           utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           extratz=',' + thatplace; \/\/.split('\/')[eval(-1 + iplacesarr[jk].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') });<br \/>\n           xextratztime=(',' + xdate1);<br \/>\n           plottz.push(thatplace);<br \/>\n           thatplace=thatplace.replace('GMT','Europe\/London').split('\/')[eval(-1 + thatplace.replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdiff = Math.abs(tzDate.getTime() - utzdate.getTime()) \/ 3600000;<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct.push('' + xdate1);<br \/>\n           plotemj.push(clockit('' + xdiff));<br \/>\n<\/font><br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n           } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && uc_iso_country_codes.indexOf(locans.trim().toUpperCase()) != -1) {<br \/>\n   \/\/alert(iso_country_codes[eval(-1 + eval('' + uc_iso_country_codes.indexOf(locans.trim())))].toUpperCase());<br \/>\n           if (yourtzlist.indexOf(',' + iso_country_codes[eval(-1 + uc_iso_country_codes.indexOf(locans.trim().toUpperCase()))].toUpperCase() + ',') != -1) {<br \/>\n           locans=locans.replace(locans.trim(), '' + iso_country_codes[eval(-1 + eval('' + uc_iso_country_codes.indexOf(locans.trim().toUpperCase())))]);<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n<font color=blue><br \/>\n           thatplace=thisplace.split('&gt;')[1].split('&lt;')[0].replace('GMT','UTC');<br \/>\n           utzdate=new Date();<br \/>\n           tzDate = new Date(utzdate.toLocaleString('en-US', { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') }));<br \/>\n           extratz=',' + thatplace; \/\/.split('\/')[eval(-1 + iplacesarr[jk].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdate1=new Date().toLocaleString(\"en-US\", { timeZone: thatplace.replace('GMT','UTC').replace(\/\\ \/g,'_') });<br \/>\n           xextratztime=(',' + xdate1);<br \/>\n           plottz.push(thatplace);<br \/>\n           thatplace=thatplace.replace('GMT','Europe\/London').split('\/')[eval(-1 + thatplace.replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' ');<br \/>\n           xdiff = Math.abs(tzDate.getTime() - utzdate.getTime()) \/ 3600000;<br \/>\n           xextraemj=',' + clockit('' + xdiff);<br \/>\n           plotct.push('' + xdate1);<br \/>\n           plotemj.push(clockit('' + xdiff));<br \/>\n<\/font><br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n           } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n         } else if (('' + locans).indexOf(',') != -1 && ('' + locans).indexOf('[') != -1) {<br \/>\n           thisplace='  ';<br \/>\n           if (eval('' + locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',').length) &gt; 2) {<br \/>\n           plotplace.push(locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']',''));<br \/>\n           thisplace=locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']','') + ' ';<br \/>\n           } else {<br \/>\n           plotplace.push('');<br \/>\n           }<br \/>\n           plotcc.push('');<br \/>\n           plotlong.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[0]);<br \/>\n           plotlat.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[1]);<br \/>\n           <font color=blue>plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           plottz.push('');<\/font><br \/>\n         } else if (('' + locans).indexOf(',') != -1 && ('' + locans).indexOf('.') != -1) {<br \/>\n           thisplace='   ';<br \/>\n           if (eval('' + locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',').length) &gt; 2) {<br \/>\n           plotplace.push(locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']',''));<br \/>\n           thisplace=locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']','') + '  ';<br \/>\n           } else {<br \/>\n           plotplace.push('');<br \/>\n           }<br \/>\n           plotcc.push('');<br \/>\n           plotlong.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[0]);<br \/>\n           plotlat.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[1]);<br \/>\n           <font color=blue>plotct.push('');<br \/>\n           plotemj.push('');<br \/>\n           plottz.push('');<\/font><br \/>\n         } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n       }<br \/>\n       <br \/>\n       movesallowed=true;<br \/>\n       return locans;<br \/>\n  }<br \/>\n  <br \/>\n  function orflag(thiscc) {<br \/>\n      var ccchar='', ccsuff='';<br \/>\n      var lri='ABCDEFGHIJKLMNOPQRSTUVWXYZ';<br \/>\n      var dri=['127462','127463','127464','127465','127466','127467','127468','127469','127470','127471','127472','127473','127474','127475','127476','127477','127478','127479','127480','127481','127482','127483','127484','127485','127486','127487'];<br \/>\n      for (var iccsuff=0; iccsuff&lt;thiscc.length; iccsuff++) {<br \/>\n        ccchar=thiscc.substring(iccsuff, eval(1 + eval('' + iccsuff))).toUpperCase();<br \/>\n        ccsuff+=String.fromCodePoint(eval('' + dri[eval('' + lri.indexOf(ccchar))])); \/\/'&#' + dri[eval('' + lri.indexOf(ccchar))] + ';';<br \/>\n      }<br \/>\n      return ccsuff;<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> ... referencing three new <i>when<\/i> \"collectables\" ...<\/p>\n<ol>\n<li>var plottz=[];  \/\/ contains a TimeZone name<\/li>\n<li>var plotct=[];  \/\/ contains a current datetime timestamp<\/li>\n<li>var plotemj=[]; \/\/ contains a current datetime clockemoji of nearest relevance<\/li>\n<\/ol>\n<p> ... <font color=blue>now used<\/font> in an amended plotting span element innerHTML (used to be <i>plotplace[iplot]<\/i>) \"wrapper\" (now using <font color=blue>doplotplace(iplot)<\/font>) ...<\/p>\n<p><code><br \/>\n  function doplotplace(ipl) {<br \/>\n    <font color=blue>if (plotcc[ipl].trim() && plottz[ipl].trim() != '') {<br \/>\n      return plotplace[ipl] + ' ' + orflag(plotcc[ipl]) + '<br \/>' + plotct[ipl] + '<br \/>' + plotemj[ipl];<br \/>\n    }<\/font><br \/>\n    return plotplace[ipl];<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> ... in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html----GETME\">fifth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/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\/earth-scanner-timezone-tutorial\/'>Earth Scanner TimeZone Tutorial<\/a>.<\/p-->\n<hr>\n<p id='espt'>Previous relevant <a target=_blank title='Earth Scanner Places Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-places-tutorial\/'>Earth Scanner Places 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Places Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_places.gif\" title=\"Earth Scanner Places Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Places Tutorial<\/p><\/div>\n<p>So far, with our Earth Scanner web application from the day before yesterday's <a title='Earth Scanner Lines Tutorial' href='#eslt'>Earth Scanner Lines Tutorial<\/a>, it had a pretty passive modus operandi.   On a plane or on television or some other \"just watching\" scenario that suits, but we'd like to offer more regarding value adding ...<\/p>\n<ul>\n<li>new Place plotting functionality that the user has real-time control over via onclick logic reaching a ...<\/li>\n<li>Javascript prompt window<\/li>\n<\/ul>\n<p data-idea='hashtagging'> ... and into the future we have another idea regarding how this operates.<\/p>\n<p>So today, though, we change how that Javascript prompt window's \"blurb\" is constructed, and how the user answer is analyzed, because, today, we've added in ...<\/p>\n<p><code><br \/>\nPHP inspired <a target=_blank title='PHP TimeZone list' href='http:\/\/php.net\/manual\/en\/timezones.php'>TimeZone<\/a> place lookup logic within the Javascript code<br \/>\n<\/code><\/p>\n<p>Of course not all places are TimeZone places, and we'll see how that goes into the future?!<\/p>\n<p>We funnelled the Javascript prompt window logic into a new \"wrapper style\" Javascript inhouse function ...<\/p>\n<p><code><br \/>\n  function ourprompt(e, blurb, defv) {<br \/>\n       var locans=null, ijk=0, extras='';<br \/>\n       if (eval(uc_iso_country_codes.length) == 0) {<br \/>\n          for (ijk=0; ijk&lt;iso_country_codes.length; ijk++) {<br \/>\n            uc_iso_country_codes.push(iso_country_codes[ijk].toUpperCase());<br \/>\n          }<br \/>\n       }<br \/>\n       e = e || window.event;<br \/>\n       e.preventDefault();<br \/>\n       if (e.touches) {<br \/>\n       if (e.touches[0].pageX) {<br \/>\n       xinxy.push(eval(e.touches[0].pageX + document.body.scrollLeft * 0) * 1);<br \/>\n       yinxy.push(eval(e.touches[0].pageY + document.body.scrollTop * 0) * 1);<br \/>\n       } else {<br \/>\n       xinxy.push(eval(e.touches[0].clientX + document.body.scrollLeft * 0) * 1);<br \/>\n       yinxy.push(eval(e.touches[0].clientY + document.body.scrollTop * 0) * 1);<br \/>\n       }<br \/>\n       } else if (e.clientX || e.clientY) {<br \/>\n        xinxy.push(e.clientX + document.body.scrollLeft * 0);<br \/>\n        yinxy.push(e.clientY + document.body.scrollTop * 0);<br \/>\n       } else {<br \/>\n        xinxy.push(e.pageX + document.body.scrollLeft * 0);<br \/>\n        yinxy.push(e.pageY + document.body.scrollTop * 0);<br \/>\n       }<br \/>\n       var llsa=blurb.split(') (')[1];<br \/>\n       \/\/alert(blurb + ' ... ' + llsa);<br \/>\n       tllg=eval(llsa.split(',')[0]);<br \/>\n       tlla=eval(llsa.split(',')[1].split(')')[0]);<br \/>\n       brlg=eval(llsa.split('(')[1].split(',')[0]);<br \/>\n       brla=eval(llsa.split('(')[1].split(',')[1].split(')')[0]);<br \/>\n       thislong=eval(tllg + eval(eval(xinxy[eval(-1 + xinxy.length)] \/ screenwidth) * eval(screenlong)));<br \/>\n       thislat=eval(tlla - eval(eval(yinxy[eval(-1 + yinxy.length)] \/ screenheight) * eval(screenlat)));<br \/>\n       var nearbyfour=retnearest(thislong, thislat);<br \/>\n       var aatm='youllneverfindthis';<br \/>\n       var bbtm=String.fromCharCode(9);<br \/>\n       if (blurb.indexOf('Thanks to ') != -1) {<br \/>\n         if (blurb.split('Thanks to ')[1].indexOf(' ...') != -1) {<br \/>\n           bbtm='Thanks to ' + blurb.split('Thanks to ')[1].split(' ...')[0] + ' ...';<br \/>\n         }<br \/>\n       }<br \/>\n       if (blurb.indexOf(' and around the middle ') != -1) {<br \/>\n         aatm=' and around the middle ' + blurb.split(' and around the middle ')[1].split(')')[0] + ')';<br \/>\n       }<br \/>\n       var ourblurb=(blurb.replace(bbtm,'').replace('Currently top ','Top ').replace(' in terms of ',' as ').replace(aatm, '').replace(\/\\ and\\ \/g,' & ').replace('? ', '? ' + ' Nearest timezone place (via N) is ' + nearbyfour.split('|')[3] + ' at [' + nearbyfour.split('|')[0] + ',' + nearbyfour.split('|')[1] + '] to your clicked (via C) [' + thislong + ',' + thislat + '] ') + bbtm.replace(String.fromCharCode(9),'')).replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n       if (prevf.indexOf(',') != -1) {<br \/>\n         if (Math.abs(eval(prevf.split(',')[0]) - tllg) &lt;= 0.5) {<br \/>\n         prevf='' + prevone + ',' + prevtwo + ',' + prevthree + ',' + prevfour;<br \/>\n         }<br \/>\n         if (Math.abs(eval(prevf.split(',')[0]) - tllg) &gt; 0.5) {<br \/>\n       tllg=eval(prevf.split(',')[0]);<br \/>\n       tlla=eval(prevf.split(',')[1]);<br \/>\n       brlg=eval(prevf.split(',')[2]);<br \/>\n       brla=eval(prevf.split(',')[3]);<br \/>\n       var sthislong=eval(tllg + eval(eval(xinxy[eval(-1 + xinxy.length)] \/ screenwidth) * eval(screenlong)));<br \/>\n       var sthislat=eval(tlla - eval(eval(yinxy[eval(-1 + yinxy.length)] \/ screenheight) * eval(screenlat)));<br \/>\n       var snearbyfour=retnearest(sthislong, sthislat);<br \/>\n          \/\/alert(ourblurb + ' ' + prevf + ' vs ' + tllg + ' ... ' + Math.abs(eval(prevf.split(',')[0]) - tllg));<br \/>\n       ourblurb=ourblurb.replace('? ', '? ' + ' Nearest timezone place (via P) is ' + snearbyfour.split('|')[3] + ' at [' + snearbyfour.split('|')[0] + ',' + snearbyfour.split('|')[1] + '] to your clicked (via A) [' + sthislong + ',' + sthislat + '] ');<br \/>\n         }<br \/>\n        locans=prompt(ourblurb, defv);<br \/>\n       }<br \/>\n       if (locans != null) {<br \/>\n         if (locans.toUpperCase().trim() == 'N') {<br \/>\n           locans=locans.toUpperCase().replace('N', '[' + nearbyfour.split('|')[0] + ',' + nearbyfour.split('|')[1] + ']');<br \/>\n           plotplace.push(nearbyfour.split('|')[3]);<br \/>\n           plotcc.push(nearbyfour.split('|')[2]);<br \/>\n           plotlong.push(nearbyfour.split('|')[0]);<br \/>\n           plotlat.push(nearbyfour.split('|')[1]);<br \/>\n         } else if (locans.toUpperCase().trim() == 'C') {<br \/>\n           thisplace=' ';<br \/>\n           locans=locans.toUpperCase().replace('C', '[' + thislong + ',' + thislat + ']');<br \/>\n           plotplace.push('');<br \/>\n           plotcc.push(nearbyfour.split('|')[2]);<br \/>\n           plotlong.push(thislong);<br \/>\n           plotlat.push(thislat);<br \/>\n         } else if (locans.toUpperCase().trim() == 'P') {<br \/>\n           locans=locans.toUpperCase().replace('P', '[' + snearbyfour.split('|')[0] + ',' + snearbyfour.split('|')[1] + ']');<br \/>\n           plotplace.push(snearbyfour.split('|')[3]);<br \/>\n           plotcc.push(snearbyfour.split('|')[2]);<br \/>\n           plotlong.push(snearbyfour.split('|')[0]);<br \/>\n           plotlat.push(snearbyfour.split('|')[1]);<br \/>\n         } else if (locans.toUpperCase().trim() == 'A') {<br \/>\n           thisplace='   ';<br \/>\n           locans=locans.toUpperCase().replace('A', '[' + sthislong + ',' + sthislat + ']');<br \/>\n           plotplace.push('');<br \/>\n           plotcc.push(snearbyfour.split('|')[2]);<br \/>\n           plotlong.push(sthislong);<br \/>\n           plotlat.push(sthislat);<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && yourtzlist.toUpperCase().indexOf('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;') != -1) {<br \/>\n           thisplace=yourtzlist.toUpperCase().split('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;')[0].split(' DATA-GEO=\"')[eval(-1 + yourtzlist.toUpperCase().split('\/' + ('' + locans.trim()).toUpperCase().replace(\/\\ \/g,'_') + '&lt;')[0].split(' DATA-GEO=\"').length)];<br \/>\n   \/\/alert(thisplace);<br \/>\n           plotplace.push(yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(thisplace.split('&gt;')[0] + '&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(thisplace.split(',')[3]);<br \/>\n     if (thisplace.split(',')[3] != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == thisplace.split(',')[3].toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n     \/\/alert(extras + ' ... ' + locans);<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n     \/\/alert(locans);<br \/>\n           thisplace='   ';<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) == 2 && ('' + locans).indexOf(',') == -1 && yourtzlist.indexOf(',' + ('' + locans.trim()).toUpperCase() + ',') != -1) {<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && iso_country_codes.indexOf(locans.trim()) != -1) {<br \/>\n   \/\/alert(iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))].toUpperCase());<br \/>\n           if (yourtzlist.indexOf(',' + ('' + iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))].toUpperCase()) + ',') != -1) {<br \/>\n           locans=locans.replace(locans.trim(), '' + iso_country_codes[eval(-1 + eval('' + iso_country_codes.indexOf(locans.trim())))]);<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n           } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n         } else if (eval('' + ('' + locans.trim()).length) &gt;= 3 && ('' + locans).indexOf(',') == -1 && uc_iso_country_codes.indexOf(locans.trim().toUpperCase()) != -1) {<br \/>\n   \/\/alert(iso_country_codes[eval(-1 + eval('' + uc_iso_country_codes.indexOf(locans.trim())))].toUpperCase());<br \/>\n           if (yourtzlist.indexOf(',' + iso_country_codes[eval(-1 + uc_iso_country_codes.indexOf(locans.trim().toUpperCase()))].toUpperCase() + ',') != -1) {<br \/>\n           locans=locans.replace(locans.trim(), '' + iso_country_codes[eval(-1 + eval('' + uc_iso_country_codes.indexOf(locans.trim().toUpperCase())))]);<br \/>\n           thisplace=yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[0].split(' data-geo=\"').length)];<br \/>\n           plotplace.push(yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/')[eval(-1 + yourtzlist.split(',' + ('' + locans.trim()).toUpperCase() + ',')[1].split('&gt;')[1].split('&lt;')[0].replace('GMT','Europe\/London').split('\/').length)].replace(\/\\_\/g,' '));<br \/>\n           plotlong.push((thisplace.split(',')[1]));<br \/>\n           plotlat.push((thisplace.split(',')[0]));<br \/>\n           plotcc.push(locans.trim());<br \/>\n     if (locans != '') {<br \/>\n         for (ijk=0; ijk&lt;iso_country_codes.length; ijk+=2) {<br \/>\n           if (iso_country_codes[ijk].toUpperCase() == locans.trim().toUpperCase()) {<br \/>\n             extras=', ' + iso_country_codes[eval(1 + ijk)];<br \/>\n             plotplace[eval(-1 + plotplace.length)]+=extras;<br \/>\n             extras='';<br \/>\n           }<br \/>\n         }<br \/>\n     }<br \/>\n           locans=locans.replace(locans.trim(), '[' + thisplace.split(',')[1] + ',' + thisplace.split(',')[0] + ',' + plotplace[eval(-1 + plotplace.length)] + extras + ']');<br \/>\n           thisplace='   ';<br \/>\n           } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n         } else if (('' + locans).indexOf(',') != -1 && ('' + locans).indexOf('[') != -1) {<br \/>\n           thisplace='  ';<br \/>\n           if (eval('' + locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',').length) &gt; 2) {<br \/>\n           plotplace.push(locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']',''));<br \/>\n           thisplace=locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']','') + ' ';<br \/>\n           } else {<br \/>\n           plotplace.push('');<br \/>\n           }<br \/>\n           plotcc.push('');<br \/>\n           plotlong.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[0]);<br \/>\n           plotlat.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[1]);<br \/>\n         } else if (('' + locans).indexOf(',') != -1 && ('' + locans).indexOf('.') != -1) {<br \/>\n           thisplace='   ';<br \/>\n           if (eval('' + locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',').length) &gt; 2) {<br \/>\n           plotplace.push(locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']',''));<br \/>\n           thisplace=locans.replace(locans.split(',')[0] + ',' + locans.split(',')[1] + ',', '').replace('(','').replace(')','').replace('[','').replace(']','') + '  ';<br \/>\n           } else {<br \/>\n           plotplace.push('');<br \/>\n           }<br \/>\n           plotcc.push('');<br \/>\n           plotlong.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[0]);<br \/>\n           plotlat.push(locans.replace('(','').replace(')','').replace('[','').replace(']','').split(',')[1]);<br \/>\n         } else if (locans.trim() != '' && locans.trim() != locans) {<br \/>\n           locans=locans.replace(locans.trim(), '');<br \/>\n         } else {<br \/>\n           locans=null;<br \/>\n         }<br \/>\n       }<br \/>\n     <br \/> <br \/>\n       movesallowed=true;<br \/>\n       return locans;<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> ... as the best way to get into how this happens in <a title='Earth Scanner Primer Tutorial' href='#espt'>Earth Scanner Primer Tutorial<\/a>, in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html---GETME\">fourth draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/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\/earth-scanner-places-tutorial\/'>Earth Scanner Places Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eslt'>Previous relevant <a target=_blank title='Earth Scanner Lines Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-lines-tutorial\/'>Earth Scanner Lines 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Lines Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner_lines.jpg\" title=\"Earth Scanner Lines Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Lines Tutorial<\/p><\/div>\n<p>Not everybody is a geography buff.  But I'd say more people attended primary school than are geography buffs.  And those people may have seen World Maps on the wall, and they were often Mercator Projection maps featuring the usual country and sea boundaries, as well as useful reference lines ...<\/p>\n<ul>\n<li>lines of latitude, including, in between top \"North Pole\" 90&deg; N and \"South Pole\" 90&deg; S bottom ...\n<ol>\n<li>Arctic Circle 66&deg; 34' N<\/li>\n<li>Tropic of Cancer 23&deg; 26' N<\/li>\n<li>Equator 0&deg;<\/li>\n<li>Tropic of Capricorn 23&deg; 26' S<\/li>\n<li>Antarctic Circle 66&deg; 34' S<\/li>\n<\/ol>\n<\/li>\n<li>meridians of longitude (only the Equator above, is as long as <font size=1>... and in the \"Go Figure, Mercator\" realms, the North Pole and South Pole are each of zero length, in \"non-projection land\"<\/font>), including ...\n<ol>\n<li>Greenwich Meridian 0&deg;<\/li>\n<li>International Date Line 180&deg; (but in practice, broken up so as not to confuse regarding timezones for some Pacific island countries)<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p> ... that become useful as you scan your way around Earth, further to yesterday's <a title='Earth Scanner Primer Tutorial' href='#espt'>Earth Scanner Primer Tutorial<\/a>, in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html-GETME\">second draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/p>\n<p><b><i>Stop Press<\/i><\/b><\/p>\n<p>Couple of points to note ...<\/p>\n<ol>\n<li>the linework is just hr (Horizontal rule) elements, which are not the challenge either horizontally or vertically, regarding linework, that any diagon<a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=PjgJZCKaVdI'>ali<\/a>ty brings ...<\/p>\n<li>the matter of screen width and screen height, which we need to know precisely for the work above, can be more involved to calculate on mobile platforms ... we ended up, with great help from <a target=_blank title='Useful link' href='https:\/\/stackoverflow.com\/questions\/50690191\/window-innerheight-returning-wrong-value-in-ios-11'>this useful link<\/a>, with this Javascript code ...<br \/>\n<code><br \/>\n  var screenwidth=screen.width, screenheight=screen.height;<br \/>\n  <br \/>\n  var wasthisso='';<br \/>\n  if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n  try {<br \/>\n  wasthisso=('' + window.orientation).replace(\/^0$\/g, 'portrait'); \/\/\"portrait\";<br \/>\n  } catch (ehgfg) {<br \/>\n  wasthisso='';<br \/>\n  }<br \/>\n  if (wasthisso == '') {<br \/>\n  try {<br \/>\n  wasthisso='' + screen.orientation.type; \/\/\"portrait\";<br \/>\n  } catch (hgfg) {<br \/>\n  wasthisso=('' + window.orientation).replace(\/^0$\/g, 'portrait'); \/\/\"portrait\";<br \/>\n  }<br \/>\n  }<br \/>\n  \/\/alert(wasthisso);<br \/>\n  var hdone=false;<br \/>\n  if (wasthisso.indexOf('ortrait') != -1) { \/\/ thanks to https:\/\/stackoverflow.com\/questions\/50690191\/window-innerheight-returning-wrong-value-in-ios-11<br \/>\n    if (eval('0' + document.documentElement.clientWidth) &gt;= eval('0' + window.innerWidth)) {<br \/>\n    screenwidth=eval('' + document.documentElement.clientWidth);<br \/>\n    screenheight=eval('' + document.documentElement.clientHeight);<br \/>\n    hdone=true;<br \/>\n    } else {<br \/>\n    screenwidth=window.innerWidth;<br \/>\n    }<br \/>\n    if (!hdone) {<br \/>\n    if (eval('0' + document.documentElement.clientHeight) &gt; eval('0' + window.innerHeight)) {<br \/>\n    screenheight=eval('' + document.documentElement.clientHeight);<br \/>\n    } else {<br \/>\n    screenheight=window.innerHeight;<br \/>\n    }<br \/>\n    }<br \/>\n  } else {<br \/>\n    if (eval('0' + document.documentElement.clientWidth) &gt;= eval('0' + window.innerHeight)) {<br \/>\n    screenwidth=eval('' + document.documentElement.clientWidth);<br \/>\n    screenheight=eval('' + document.documentElement.clientHeight);<br \/>\n    hdone=true;<br \/>\n    } else {<br \/>\n    screenwidth=window.innerHeight;<br \/>\n    }<br \/>\n    if (!hdone) {<br \/>\n    if (eval('0' + document.documentElement.clientHeight) &gt; eval('0' + window.innerWidth)) {<br \/>\n    screenheight=eval('' + document.documentElement.clientHeight);<br \/>\n    } else {<br \/>\n    screenheight=window.innerWidth;<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n \/\/ alert(wasthisso + ' ' + screenwidth + 'x' + screenheight);<br \/>\n            if (1 == 6) {<br \/>\n            documentURL=documentURL + '&nolines=y';<br \/>\n            if (documentURL.indexOf('.html') != -1) {<br \/>\n              location.href=document.URL.replace('.html','.htm');<br \/>\n            }<br \/>\n            }<br \/>\n  }<br \/>\n<\/code><br \/>\n ... in <a title='Earth Scanner Primer Tutorial' href='#espt'>Earth Scanner Primer Tutorial<\/a>, in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html--GETME\">third draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application\n<\/li>\n<\/ol>\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\/earth-scanner-lines-tutorial\/'>Earth Scanner Lines Tutorial<\/a>.<\/p-->\n<hr>\n<p id='espt'>Previous relevant <a target=_blank title='Earth Scanner Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-primer-tutorial\/'>Earth Scanner 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\/earth_scanner.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Earth Scanner Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.gif\" title=\"Earth Scanner Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Earth Scanner Primer Tutorial<\/p><\/div>\n<p>Today we've got for you a tutorial that takes bits and pieces from ...<\/p>\n<ul>\n<li>\"Just Javascript\" (ie. no body element to speak of as you begin) ... ref: <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/just-javascript-card-game-iphone-debugging-tutorial\/' title='Just Javascript Card Game iPhone Debugging Tutorial'>Just Javascript Card Game iPhone Debugging Tutorial<\/a><\/li>\n<li>\"CSS Property clip-path\" ... ref: <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/region-picker-area-of-interest-tutorial\/' title='Region Picker Area of Interest'>Region Picker Area of Interest<\/a><\/li>\n<li>\"GeoJson\" especially regarding reverse engineering on the Mercator projection ... ref: <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/google-chart-image-chart-map-chart-geojson-onclick-tutorial\/' title='Google Chart Image Chart Map Chart GeoJson Onclick Tutorial'>Google Chart Image Chart Map Chart GeoJson Onclick Tutorial<\/a><\/li>\n<li>\"One Image Website\" regarding scrolling and images bigger than screen ... ref: <a target=_blank title='One Image Website Scrolling Position Fix Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/one-image-website-scrolling-position-fix-tutorial\/' title='One Image Website Scrolling Position Fix Tutorial '>One Image Website Scrolling Position Fix Tutorial <\/a><\/li>\n<li>\"CSS keyframes Animation\" ... ref: <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/css-grid-column-animation-tutorial\/' title='CSS Grid Column Animation Tutorial'>CSS Grid Column Animation Tutorial<\/a><\/li>\n<\/ul>\n<p> ... so as to create a new \"Earth Scanner\" web application in what we like to think of as \"the <i>where<\/i> of life\" realms.<\/p>\n<p>In essence this Earth Scanner is pretty simple, so below you can see a first draft, \"holus bolus\" ...<\/p>\n<p><code><br \/>\n&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;title&gt;Earth Scanner - RJM Programming - February, 2024 ... Thanks to https:\/\/github.com\/nvkelso\/natural-earth-raster\/blob\/master\/50m_rasters\/HYP_50M_SR_W\/HYP_50M_SR_W.README.html&lt;\/title&gt;<br \/>\n&lt;style&gt;<br \/>\n #myimg {<br \/>\n   clip-path: circle(2% at 800px 700px);<br \/>\n   animation:mymove 5s infinite;<br \/>\n   -webkit-animation:mymove 5s infinite; \/* Safari and Chrome *\/<br \/>\n}<br \/>\n<br \/>\n@keyframes mymove<br \/>\n{<br \/>\n  0%   { clip-path: circle(2% at 0px 0px) }<br \/>\n  100% { clip-path: circle(16% at 140px 140px) }<br \/>\n}<br \/>\n<br \/>\n@-webkit-keyframes mymove \/* Safari and Chrome *\/<br \/>\n{<br \/>\n  0%   { clip-path: circle(2% at 0px 0px) }<br \/>\n  100% { clip-path: circle(16% at 140px 140px) }<br \/>\n}<br \/>\n&lt;\/style&gt;<br \/>\n&lt;script type=text\/javascript&gt;<br \/>\n\/\/ Deemed unnecessary is ...<br \/>\n\/\/  7%   { clip-path: circle(3% at 10px 10px) }<br \/>\n\/\/  14%  { clip-path: circle(4% at 20px 20px) }<br \/>\n\/\/  21%  { clip-path: circle(5% at 30px 30px) }<br \/>\n\/\/  28%  { clip-path: circle(6% at 40px 40px) }<br \/>\n\/\/  35%  { clip-path: circle(7% at 50px 50px) }<br \/>\n\/\/  42%  { clip-path: circle(8% at 60px 60px) }<br \/>\n\/\/  50%  { clip-path: circle(9% at 70px 70px) }<br \/>\n\/\/  57%  { clip-path: circle(10% at 80px 80px) }<br \/>\n\/\/  64%  { clip-path: circle(11% at 90px 90px) }<br \/>\n\/\/  71%  { clip-path: circle(12% at 100px 100px) }<br \/>\n\/\/  78%  { clip-path: circle(13% at 110px 110px) }<br \/>\n\/\/  85%  { clip-path: circle(14% at 120px 120px) }<br \/>\n\/\/  93%  { clip-path: circle(15% at 130px 130px) }<br \/>\n<br \/>\n  var xp=0, yp=0, num=0;<br \/>\n  var fixkeys='&lt;style&gt; #myimg {  animation:mymove 5s infinite; -webkit-animation:mymove 5s infinite; } @keyframes mymove' + document.head.innerHTML.split('@keyframes mymove')[1].split('&lt;\/style&gt;')[0] + ' &lt;\/style&gt;';<br \/>\n  var screenlong=-9, screenlat=-9, askfor=null, enforcedlong=false, enforcedxp=-999;<br \/>\n  <br \/>\n  function scmove() {<br \/>\n    var longforce='-999', latforce='-999';<br \/>\n    if (screenlong &lt; 0) {<br \/>\n      screenlong=eval(360 * screen.width \/ document.getElementById('myimg').width);<br \/>\n      screenlat=eval(180 * screen.height \/ document.getElementById('myimg').height);<br \/>\n      document.getElementById('myimg').onclick=function() {  askfor=prompt('Earth Scanner - RJM Programming - February, 2024 ... ' + String.fromCharCode(10) + 'Thanks to https:\/\/github.com\/nvkelso\/natural-earth-raster\/blob\/master\/50m_rasters\/HYP_50M_SR_W\/HYP_50M_SR_W.README.html ... ' + String.fromCharCode(10) + 'Currently top left of screen is (Longitude,Latitude) ' + '(' + eval(-180 + xp * 360 \/ 100) + ',' + eval(90 - yp * 180 \/ 100) + ') and bottom right is (' + eval(-180 + screenlong + xp * 360 \/ 100) + ',' + eval(90 - screenlat - yp * 180 \/ 100) + ') and in the middle is (' + eval(-180 + eval(screenlong \/ 2) + xp * 360 \/ 100) + ',' + eval(90 - eval(screenlat \/ 2) - yp * 180 \/ 100) + ').' + String.fromCharCode(10) + 'Where do you want middle of screen to be in terms of Longitude,Latitude?', ''); };<br \/>\n    }<br \/>\n    \/\/document.title=\"window.scrollTo(\" + eval(xp * eval('' + document.getElementById('myimg').width) \/ 100) + \",\" + eval(yp * eval('' + document.getElementById('myimg').height) \/ 100) + \")\";<br \/>\n    if (askfor != null) {<br \/>\n       if (askfor.replace('(','').replace(')','').indexOf(',') != -1) {<br \/>\n         longforce=askfor.replace('(','').replace(')','').split(',')[0];<br \/>\n         latforce=askfor.replace('(','').replace(')','').split(',')[1];<br \/>\n       } else if (askfor.replace('(','').replace(')','').indexOf(' ') != -1) {<br \/>\n         longforce=askfor.replace('(','').replace(')','').split(' ')[0];<br \/>\n         latforce=askfor.replace('(','').replace(')','').split(' ')[1];<br \/>\n       }<br \/>\n       \/\/xp = eval(((eval(eval('' + longforce) + 180) \/ 360) * eval('' + document.getElementById('myimg').width) \/ 100) - 0 * eval(eval(screenlong \/ 720) * eval('' + document.getElementById('myimg').width) \/ 100));<br \/>\n       \/\/yp = eval(((eval(90 - eval('' + latforce)) \/ 180) * eval('' + document.getElementById('myimg').height) \/ 100) + 0 * eval(eval(screenlat \/ 360) * eval('' + document.getElementById('myimg').height) \/ 100));<br \/>\n       xp = eval(eval(eval('' + longforce) - screenlong \/ 2 + 180) \/ 3.60); \/\/ * eval('' + document.getElementById('myimg').width) \/ 100) - 0 * eval(eval(screenlong \/ 720) * eval('' + document.getElementById('myimg').width) \/ 100));<br \/>\n       yp = eval(eval(90 - eval('' + latforce) - screenlat \/ 2) \/ 1.80); \/\/ * eval('' + document.getElementById('myimg').height) \/ 100) + 0 * eval(eval(screenlat \/ 360) * eval('' + document.getElementById('myimg').height) \/ 100));<br \/>\n       \/\/alert('' + xp + ',' + yp + ' ... ' + \"window.scrollTo(\" + eval(xp * eval('' + document.getElementById('myimg').width) \/ 100) + \",\" + eval(yp * eval('' + document.getElementById('myimg').height) \/ 100) + \")\");<br \/>\n       askfor=null;<br \/>\n       if (enforcedlong) {<br \/>\n          enforcedlong=false;<br \/>\n          enforcedxp=xp;<br \/>\n          \/\/alert(xp + ' or ' + enforcedxp);<br \/>\n       }<br \/>\n    }<br \/>\n    eval(\"window.scrollTo(\" + eval((enforcedxp &gt; -990 ? enforcedxp : xp) * eval('' + document.getElementById('myimg').width) \/ 100) + \",\" + eval(yp * eval('' + document.getElementById('myimg').height) \/ 100) + \")\");<br \/>\n    document.getElementById('myimg').title='Earth Scanner - RJM Programming - February, 2024 ... ' + 'Thanks to https:\/\/github.com\/nvkelso\/natural-earth-raster\/blob\/master\/50m_rasters\/HYP_50M_SR_W\/HYP_50M_SR_W.README.html ... ' + String.fromCharCode(10) + String.fromCharCode(10) + 'Top left of screen is (Longitude,Latitude) ' + '(' + eval(-180 + (enforcedxp &gt; -990 ? enforcedxp : xp) * 360 \/ 100) + ',' + eval(90 - yp * 180 \/ 100) + ') and bottom right is (' + eval(-180 + screenlong + (enforcedxp &gt; -990 ? enforcedxp : xp) * 360 \/ 100) + ',' + eval(90 - screenlat - yp * 180 \/ 100) + ') and in the middle is (' + eval(-180 + eval(screenlong \/ 2) + (enforcedxp &gt; -990 ? enforcedxp : xp) * 360 \/ 100) + ',' + eval(90 - eval(screenlat \/ 2) - yp * 180 \/ 100) + ')';<br \/>\n    document.title=document.getElementById('myimg').title; \/\/'Top left of screen is (Longitude,Latitude) ' + '(' + eval(-180 + xp * 360 \/ 100) + ',' + eval(90 - yp * 180 \/ 100) + ') and bottom right is (' + eval(-180 + screenlong + (enforcedxp &gt; -990 ? enforcedxp : xp) * 360 \/ 100) + ',' + eval(90 - screenlat - yp * 180 \/ 100) + ') and in the middle is (' + eval(-180 + eval(screenlong \/ 2) + (enforcedxp &gt; -990 ? enforcedxp : xp) * 360 \/ 100) + ',' + eval(90 - eval(screenlat \/ 2) - yp * 180 \/ 100) + ')';<br \/>\n    if (xp &lt; 95) {<br \/>\n      xp+=5;<br \/>\n    } else if (yp &gt;= 95 && xp &gt;= 95) {<br \/>\n      enforcedxp=-999;<br \/>\n      xp=0;<br \/>\n      yp=0;<br \/>\n    } else {<br \/>\n      yp+=5;<br \/>\n      xp=0;<br \/>\n    }<br \/>\n    var xdiff=eval((enforcedxp &gt; -990 ? enforcedxp : xp) * eval('' + document.getElementById('myimg').width) \/ 100);<br \/>\n    var ydiff=eval(yp * eval('' + document.getElementById('myimg').height) \/ 100);<br \/>\n    var startkeys=fixkeys;<br \/>\n    var coords=fixkeys.split('px');<br \/>\n    for (var ic=0; ic&lt;coords.length; ic+=2) {<br \/>\n      if (coords[ic].split(' ')[eval(-1 + coords[ic].split(' ').length)].indexOf('&lt;') == -1) {<br \/>\n      \/\/alert('' + xdiff + ',' + ydiff+ ',' + coords[ic].split(' ')[eval(-1 + coords[ic].split(' ').length)]);<br \/>\n      startkeys=startkeys.replace(' ' + coords[ic].split(' ')[eval(-1 + coords[ic].split(' ').length)] + 'px', ' ' + eval(xdiff + eval('' + coords[ic].split(' ')[eval(-1 + coords[ic].split(' ').length)])) + 'px');<br \/>\n      startkeys=startkeys.replace(' ' + coords[eval(1 + ic)].split(' ')[eval(-1 + coords[eval(1 + ic)].split(' ').length)] + 'px', ' ' + eval(ydiff + eval('' + coords[eval(1 + ic)].split(' ')[eval(-1 + coords[eval(1 + ic)].split(' ').length)])) + 'px');<br \/>\n      }<br \/>\n    }<br \/>\n    \/\/alert(startkeys);<br \/>\n    document.getElementById('dstyle').innerHTML=startkeys; \/\/.replace(\/mymove\/g, 'mymove' + num);<br \/>\n    num++;<br \/>\n  }<br \/>\n  <br \/>\n  setInterval(scmove, 5000);<br \/>\n  document.write(\"&lt;img src='\/HTMLCSS\/HYP_50M_SR_W.jpg' id=myimg&gt;&lt;\/img&gt;&lt;div id=dstyle&gt;&lt;\/div&gt;\");<br \/>\n  var latis=location.search.split('latitude=')[1] ? decodeURIComponent(location.search.split('latitude=')[1].split('&')[0]) : '';<br \/>\n  var longis=location.search.split('longitude=')[1] ? decodeURIComponent(location.search.split('longitude=')[1].split('&')[0]) : '';<br \/>\n  if (latis != '' && longis != '') {<br \/>\n    askfor='' + longis + ',' + latis;<br \/>\n  } else if (latis != '') {<br \/>\n    askfor='-168,' + latis;<br \/>\n  } else if (longis != '') {<br \/>\n    enforcedlong=true;<br \/>\n    askfor='' + longis + ',70';<br \/>\n  }<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n<\/code><\/p>\n<p> ... with great thanks to <a target=_blank title='Great link, thanks' href='https:\/\/github.com\/nvkelso\/natural-earth-raster\/blob\/master\/50m_rasters\/HYP_50M_SR_W\/HYP_50M_SR_W.README.html'>this great resource<\/a> as the crucial image in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html_GETME\">our first draft<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html\" title='Click picture'>Earth Scanner<\/a> web application.<\/p>\n<p>Please note using it, it does have <i>onclick<\/i> logic to specify ...<\/p>\n<ul>\n<li>your own (longitude, latitude) to send the middle of the screen's content to<\/li>\n<li>at the address bar ...<br \/>\n<code><br \/>\n<a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?latitude=-33&#038;longitude=151\">https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?latitude=-33&longitude=151# Can center you around Sydney Australia<\/a><br \/>\n<a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?latitude=0\">https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?latitude=0# Can take you, first up, on a tour around the equator in the middle of the screen<\/a><br \/>\n<a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?longitude=0\">https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/earth_scanner.html?longitude=0# Can take you, first up, on a tour down the zero meridian of longitude past London's Greenwich in the middle of the screen<\/a><br \/>\n<\/code><\/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='#d62639' onclick='var dv=document.getElementById(\"d62639\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/where\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62639' 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='#d62645' onclick='var dv=document.getElementById(\"d62645\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/meridian\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62645' 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='#d62679' onclick='var dv=document.getElementById(\"d62679\"); 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='d62679' 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='#d62685' onclick='var dv=document.getElementById(\"d62685\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/timestamp\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62685' 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='#d62691' onclick='var dv=document.getElementById(\"d62691\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtag\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62691' 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='#d62701' onclick='var dv=document.getElementById(\"d62701\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/leg\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62701' 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='#d62727' onclick='var dv=document.getElementById(\"d62727\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/audio\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62727' 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='#d62745' onclick='var dv=document.getElementById(\"d62745\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/focus\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62745' 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='#d62755' onclick='var dv=document.getElementById(\"d62755\"); 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='d62755' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\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='#d62764' onclick='var dv=document.getElementById(\"d62764\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtagging\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62764' 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='#d62774' onclick='var dv=document.getElementById(\"d62774\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/textarea\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62774' 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='#d62791' onclick='var dv=document.getElementById(\"d62791\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/delimitation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62791' 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='#d62815' onclick='var dv=document.getElementById(\"d62815\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/syntax\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62815' 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='#d62831' onclick='var dv=document.getElementById(\"d62831\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/wikipedia\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62831' 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='#d62838' onclick='var dv=document.getElementById(\"d62838\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/linear-gradient\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62838' 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='#d62843' onclick='var dv=document.getElementById(\"d62843\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/popup\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62843' 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='#d62848' onclick='var dv=document.getElementById(\"d62848\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/overlay\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d62848' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>We finally got around to addressing a bugbear we&#8217;ve had with our Earth Scanner web application, of recent times, right from its inception, regarding the small mismatch of overlayed HTML elements with the world map (image) underneath, improving on yesterday&#8217;s &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/earth-scanner-map-image-margin-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":[12,14,37],"tags":[1669,84,3456,3898,1832,4667,88,4666,103,113,1989,127,2471,3520,4658,218,1604,4690,3533,4367,281,2276,2147,4684,4681,322,327,1816,354,2447,380,385,3192,4665,448,480,481,482,4198,520,2969,4664,2229,557,3961,2770,576,587,590,599,4685,2072,652,2016,675,4689,4688,4672,3116,684,2795,4675,4682,2598,2020,4662,719,3337,3326,745,748,2673,1943,2371,760,772,4663,3226,795,4686,4282,861,864,2076,889,894,4044,4677,2134,4440,2918,2362,954,4656,967,3409,997,1029,1038,1083,4146,4147,3119,1917,1107,4671,1133,1137,1159,4668,1200,2386,2001,3043,1262,2834,1693,1311,4676,4683,1312,4669,4670,1319,1345,1369,1404,4679,4031,2579,2580,1431,1583,3098,1493],"class_list":["post-62848","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-address-bar","tag-animation-2","tag-annotate","tag-annotating","tag-annotation","tag-antarctic-circle","tag-api","tag-arctic-circle","tag-array","tag-audio","tag-autoplay","tag-background-image","tag-background-position","tag-blog-post","tag-clip-path","tag-code","tag-collaboration","tag-collage","tag-comma","tag-comma-separated-list","tag-css","tag-delimitation","tag-delimiter","tag-delimiters","tag-detail","tag-device","tag-did-you-know","tag-document-title","tag-dom","tag-earth","tag-email","tag-emoji","tag-emoji-flag","tag-equator","tag-focus","tag-geodata","tag-geographicals","tag-geography","tag-geojson","tag-google-chrome","tag-google-directions","tag-greenwich-meridian","tag-hash","tag-hashtag","tag-hashtagging","tag-horizontal-rule","tag-html","tag-iframe","tag-image","tag-img","tag-interactive-map","tag-itinerary","tag-javascript","tag-karaoke","tag-keyframes","tag-kinear-gradient","tag-kludge","tag-land","tag-landscape","tag-latitude","tag-leg","tag-legs","tag-lengthy","tag-line","tag-linear-gradient","tag-lines","tag-longitude","tag-making-of","tag-mantissa","tag-map","tag-mapping","tag-margin","tag-margin-left","tag-margin-top","tag-media","tag-mercator","tag-meridian","tag-mixed-content","tag-mobile","tag-navigator-canshare","tag-north-pole","tag-onclick","tag-one-image-website","tag-order","tag-orientation","tag-overlay","tag-page-visibility-api","tag-patsy-gallant","tag-place","tag-placement","tag-placename","tag-play","tag-plot","tag-pole","tag-popup","tag-portrait","tag-programming","tag-realtime","tag-reference","tag-safari","tag-screen-height","tag-screen-width","tag-screen-orientation","tag-scroll","tag-scrolling","tag-sea","tag-share","tag-sharing","tag-sms","tag-south-pole","tag-stop-press","tag-syntax","tag-tab","tag-terrestrial","tag-textarea","tag-timestamp","tag-timezone","tag-trip","tag-trip-leg","tag-trip-planning","tag-trips-2","tag-tropic-of-cancer","tag-tropic-of-capricorn","tag-tutorial","tag-url","tag-video","tag-web-browser","tag-web-browser-tab-title","tag-web-share-api","tag-when","tag-where","tag-wikipedia","tag-window","tag-wrapper","tag-youtube"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/62848"}],"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=62848"}],"version-history":[{"count":6,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/62848\/revisions"}],"predecessor-version":[{"id":62854,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/62848\/revisions\/62854"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=62848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=62848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=62848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}