Tag Archives: programming

YouTube Style SubRip Subtitles Button Tutorial

We all hope the “latest button” will help out achieving something with online endeavours. So what about a “button” with a dual purpose according to need … well … quick … get thee to The Button Shop … post haste! Yes, our new collaboration endeavours have reached the “material button” phase, further to yesterday’s YouTube Style SubRip Subtitles Overlay Tutorial, with our new collaboration button wording being … “Collaboration” … ahead of a collaboration Originator creating a collaboration grouping associated with a particular YouTube video … and … “Feedback” … ahead of a collaborator (who has been contacted via email or SMS by the Originator) … presumably making changes (or just being sociable, or yanking your chain?!) … and recontacting the Originator and other collaboration group members with their “Feedback” … and using Javascript global variable anyhash as the determinant of this behaviour (but all behaviours, be warned, anyhash is not qualified?!). At document.body.onload event we have … var anyhash=”; var prefixer=”, suffixer=”; function mobissue() { if (decodeURIComponent(document.URL).indexOf(‘#’) != -1 && eval(” + decodeURIComponent(document.URL).split(‘#’).length) > 1) { var emis=decodeURIComponent(decodeURIComponent(document.URL).split(‘#’)[eval(-1 + decodeURIComponent(document.URL).split(‘#’).length)]).replace(/^group\=/g,”); if (emis.indexOf(‘[‘) > 0 && emis.indexOf(‘]’) > emis.indexOf(‘[‘)) { // && emis.indexOf(‘#’) > emis.indexOf(‘]’)) { anyhash=’#group=’ + encodeURIComponent(emis.split(‘#’)[eval(-1 + emis.split(‘#’).length)] + ‘,’ + emis.replace(/\ /g,’%20′).split(‘#’)[0]); prefixer='<font onclick=”parent.onl(event);” color=”blue”>’; suffixer='</font>’; } } if (anyhash != ”) { // am a collaborator setTimeout(function(){ document.getElementById(‘dcol’).innerHTML='<button id=bdcol style=display:inline-block; onclick=docollaborate(true); title=” … to collaboration group ‘ + decodeURIComponent(anyhash.replace(/\#group\=/g,”)).replace(‘#’,’,’) + ‘”>Feedback</button>’; }, 6000); } else { setTimeout(function(){ document.getElementById(‘dcol’).innerHTML='<button id=bdcol style=display:inline-block; onclick=docollaborate(false); title=”Invite a group to collaborate including a ‘ + “‘From'” + ‘ contact # hash separated from a comma separated collaboration group list in format Name[contactAllEmailsOrAllSMS]#Originator[contactAsPerListType]”>Collaborate</button>’; }, 6000); } if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) { document.getElementById(‘dfp’).innerHTML=document.getElementById(‘dfp’).innerHTML.replace(/\<\/textarea\>/g, ‘</input>’).replace(/\<textarea\ rows\=\”1\”\ data\-type\=/g, ‘<input type=’); } var sih=document.getElementById(‘sisterhood’).innerHTML.split(document.getElementById(‘sisterhood’).innerHTML.split(‘</option>’)[0] + ‘</option>’)[1]; document.getElementById(‘sisterhood’).innerHTML+=sih.replace(/option\ value/g, ‘option title=”Down below” value’).replace(/\<\/option\>/g, ‘ (down below)</option>’).replace(/\.html/g, ‘.html#below’); document.getElementById(‘sisterhood’).innerHTML+=sih.replace(/option\ value/g, ‘option title=”Popup window” value’).replace(/\<\/option\>/g, ‘ (popup window)</option>’).replace(/\.html/g, ‘.html#popup’); } … teaming with a new Javascript function docollaborate to be called on that button’s onclick event … function docollaborate(amcollaborator) { var colans=”, colarr=[]; if (!amcollaborator) { colans=prompt(‘To collaborate, as the collaboration group Originator please enter a (optionally if multiple comma separated) Name[contactAllEmailOrAllSMS] list to collaborate with then a hash # to separate a Originator[emailOrSMStoMatchNameType] … eg. RMet[rmetcalfe15@gmail.com],RMetcalfe[rmetcalfe15@gmail.com]#RM[rmetcalfe15@gmail.com]’, ”); if (colans == null) { colans=”; } if (colans.indexOf(‘[‘) > 0 && colans.indexOf(‘]’) > colans.indexOf(‘[‘) && colans.indexOf(‘#’) > colans.indexOf(‘]’) && colans.split(‘#’)[eval(-1 + colans.split(‘#’).length)].indexOf(‘[‘) > 0 && colans.split(‘#’)[eval(-1 + colans.split(‘#’).length)].indexOf(‘]’) > colans.split(‘#’)[eval(-1 … Continue reading →

Posted in Ajax, Animation, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

YouTube Style SubRip Subtitles Overlay Tutorial

Continuing the “road to collaboration” onto yesterday’s YouTube Style SubRip Subtitles Onkeydown Tutorial we had a couple of sidetracks to nuance … where we said … contenteditable=”true” ideas … only on the outermost such font element wrapper element … that works well with … … today we’d say (rather than “only on the outermost such font element wrapper element”) apply contenteditable=”true” thinking to all ” , ” delimited font element wrappers we create, initially, on recognizing a user as a collaborator where we said … overlay a collaborator’s left hand topmost textarea (for non-mobile) or third textbox (for mobile) hiding the HTML font element filled orange element HTML innerHTML innards with an overlayed HTML orange element HTML innerText version (just for show, but far less worriesome for the user, and we’ll show the orange element HTML innerHTML in that overlayed element title) … we realized we wanted both guises because the textarea one can be used by a user in a raw, yet effective way, to edit the wording via its underlying HTML and we should therefore animate via overlayed guises with toggling … z-index opacity … and from that we discovered … function fontcol(tbo) { var inht=tbo.value, iouts=0, prefw=”; var outht=inht; var outins=outht.split(”) != -1 && inht.indexOf(‘

Posted in Ajax, Animation, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

YouTube Style SubRip Subtitles Onkeydown Tutorial

Onto yesterday’s YouTube Style SubRip Subtitles Peer to Peer Tutorial‘s “crawl” progress regarding “collaboration ideas”, today we’ve had a day dominated by the integration of … onkeydown event logic … function okd(e) { if (beforek == ”) { beforek=document.getElementById(‘fauxpas’ + theone).value; beforekih=e.target.innerHTML; } var key; if (e) { key = e.keyCode; isShift = !!e.shiftKey; // typecast to boolean //if (isShift) { return ”; } } else { key = e.which; isShift = !!e.shiftKey; //if (isShift) { return ”; } } var charx = e.which || e.keyCode; //alert(” + charx); if (eval(” + e.keyCode) >= 32) { if (isShift) { kbd[ikbd]+=String.fromCharCode(eval((” + e.keyCode))).toUpperCase(); } else { kbd[ikbd]+=String.fromCharCode(eval((” + e.keyCode))).toLowerCase(); } awaitblur=true; document.title=’kbd[‘ + ikbd + ‘]=’ + kbd[ikbd]; } gthisih=e.target.innerHTML; return true; } that works well with … font element wrapping … only for collaborators … that works well with a reinstigated interest in … contenteditable=”true” ideas … only on the outermost such font element wrapper element … that works well with … IP address colour coding … function checkip(iniois) { var iois=document.getElementById(‘srcif’); if ((” + iois.src).indexOf(‘signature_signature.php’) != -1) { var aconto = (iois.contentWindow || iois.contentDocument); if (aconto != null) { //alert(‘111 ‘); if (aconto.document) { aconto = aconto.document; } //alert(‘1111 ‘ + aconto.body.innerHTML); if (aconto.body.innerHTML.indexOf(‘<p>’) == 0) { ipbit=aconto.body.innerHTML.split(‘<p>’)[1].split(‘<‘)[0]; document.getElementById(‘doverlay’).innerHTML=” + ipbit; setTimeout(function(){ if (prefixer.indexOf(‘blue’) != -1 || 12 == 12) { var ibps=document.getElementById(‘doverlay’).innerHTML.replace(/\_\_/g,’_’).split(‘_’); var numzeros=eval(eval(” + ibps[0].length) – eval(” + ibps[0].replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).replace(/^0/g,”).length)); if (numzeros > 0) { numzeros*=3; } prefixer=prefixer.replace(‘blue’,’rgb(‘ + eval(numzeros + eval(eval(” + ibps[0]) % 100)) + ‘,’ + eval(eval(numzeros + eval((eval(” + ibps[Math.max(0,eval(-3 + ibps.length))]) + eval(” + ibps[Math.max(0,eval(-2 + ibps.length))]) % 100))) % 100) + ‘,’ + eval(numzeros + eval(eval(” + ibps[eval(-1 + ibps.length)]) % 100)) + ‘)’); document.getElementById(‘doverlay’).title=” + ‘rgb(‘ + eval(numzeros + eval(eval(” + ibps[0]) % 100)) + ‘,’ + eval(eval(numzeros + eval((eval(” + ibps[Math.max(0,eval(-3 + ibps.length))]) + eval(” + ibps[Math.max(0,eval(-2 + ibps.length))]) % 100))) % 100) + ‘,’ + eval(numzeros + eval(eval(” + ibps[eval(-1 + ibps.length)]) % 100)) + ‘)’; } }, 4000); //setTimeout(cipb, 2000); } } } } … manifested in font wrappers for all new element parts Nuances to follow tomorrow involve … fixing unnecessary repetition in the work fix for “call it off” should the keyboard “onkeydown” event detect a backspace or delete key entered exporting the logic to all peer members introduce the new planned HTML button to direct users to “collaboration” rather than just email and/or SMS sharing … Continue reading →

Posted in Ajax, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

YouTube Style SubRip Subtitles Peer to Peer Tutorial

Onto yesterday’s Video Commentary YouTube Style SubRip Subtitles Collaboration Preparation Tutorial we’ve … crept along with our collaboration ideas … and programmatically … enhanced the initially very simple select “dropdown” element HTML arrangement via … <select style=”width:24px;display:inline-block;” id=sisterhood onchange=”selchange(this);”><option value=”>-</option><option value=’./song_lyric_faux_pas.html’>Song Lyric Faux Pas</option><option value=’./video_commentary.html’>Video Commentary</option></select> … combined with some new document.body “onload” snippet of Javascript … function mobissue() { if (decodeURIComponent(document.URL).indexOf(‘#’) != -1 && eval(” + decodeURIComponent(document.URL).split(‘#’).length) > 1) { var emis=decodeURIComponent(decodeURIComponent(document.URL).split(‘#’)[eval(-1 + decodeURIComponent(document.URL).split(‘#’).length)]).replace(/^group\=/g,”); if (emis.indexOf(‘[‘) > 0 && emis.indexOf(‘]’) > emis.indexOf(‘[‘)) { // && emis.indexOf(‘#’) > emis.indexOf(‘]’)) { anyhash=’#group=’ + encodeURIComponent(emis.split(‘#’)[eval(-1 + emis.split(‘#’).length)] + ‘,’ + emis.replace(/\ /g,’%20′).split(‘#’)[0]); prefixer='<font onclick=”parent.onl(event);” color=”blue”>’; suffixer='</font>’; } } if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) { document.getElementById(‘dfp’).innerHTML=document.getElementById(‘dfp’).innerHTML.replace(/\<\/textarea\>/g, ‘</input>’).replace(/\<textarea\ rows\=\”1\”\ data\-type\=/g, ‘<input type=’); } var sih=document.getElementById(‘sisterhood’).innerHTML.split(document.getElementById(‘sisterhood’).innerHTML.split(‘</option>’)[0] + ‘</option>’)[1]; document.getElementById(‘sisterhood’).innerHTML+=sih.replace(/option\ value/g, ‘option title=”Down below” value’).replace(/\<\/option\>/g, ‘ (down below)</option>’).replace(/\.html/g, ‘.html#below’); document.getElementById(‘sisterhood’).innerHTML+=sih.replace(/option\ value/g, ‘option title=”Popup window” value’).replace(/\<\/option\>/g, ‘ (popup window)</option>’).replace(/\.html/g, ‘.html#popup’); } … and it’s new “onchange” event Javascript … function selchange(sthis) { if (sthis.value.trim() != ”) { if (sthis.outerHTML.indexOf(‘option value=”‘ + sthis.value + ‘”‘) != -1) { location.href=” + sthis.value; sthis.value=”; } else if (sthis.outerHTML.indexOf(‘option title=”Down below” value=”‘ + sthis.value + ‘”‘) != -1) { document.getElementById(‘downbelow’).src=” + sthis.value; document.getElementById(‘downbelow’).style.display=’block’; sthis.value=”; } else if (sthis.outerHTML.indexOf(‘option title=”Popup window” value=”‘ + sthis.value + ‘”‘) != -1) { wowo=window.open(” + sthis.value, ‘_blank’,’top=100,left=300,width=960,height=800′); sthis.value=”; } } } … building on a default … navigate to a peer web application at the web browser address bar … with, today, options for … navigate to a peer in an HTML iframe element appearing below the presented one … or … navigate to a peer in a new popup window … for … the changed to video_commentary.html web application (you can try below) Video Commentary YouTube Style SubRip Subtitles web application could be useful for research purposes and/or presentations using YouTube as that ever useful starting point the changed song_lyric_faux_pas.html web application below Previous relevant Video Commentary YouTube Style SubRip Subtitles Collaboration Preparation Tutorial is shown below. We think “the new SubRip subtitle integrated YouTube API interfacing video play peerage” involved in yesterday’s Video Commentary YouTube Style SubRip Subtitles URL Tutorial‘s work had us thinking we might make more out of … sharing functionality … that can move on to … collaboration functionality … to our minds when the recipient of a communication can have a meaningful and “value adding” way to answer back, rather than it being “a broadcasting style” of communication that “just sharing even … Continue reading →

Posted in Ajax, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Video Commentary YouTube Style SubRip Subtitles Collaboration Preparation Tutorial

We think “the new SubRip subtitle integrated YouTube API interfacing video play peerage” involved in yesterday’s Video Commentary YouTube Style SubRip Subtitles URL Tutorial‘s work had us thinking we might make more out of … sharing functionality … that can move on to … collaboration functionality … to our minds when the recipient of a communication can have a meaningful and “value adding” way to answer back, rather than it being “a broadcasting style” of communication that “just sharing even with “caring”” can tend to be. With that in mind, we started the day thinking … orange “div” (captions and SubRip based subtitles) element … got to be … contenteditable=”true” … but we would think that (because we are so enamoured regarding it) … but luckily for us the “triple pikes” needed quickly got us pairing the thinking down to … click on the orange “div” element … Something happens … in the thinking that this is another alternative way a collaborator may use, down the track, rather than using that “Create” link video “pausing methodology” way At the click event we offer the user, within a Javascript prompt window environment two pieces of information … seconds into the video play that the user click happened the wording of the orange “div” element at the time of the click … because with all the hierarchical stuff going on, believe it or not, but the video keeps playing while a Javascript window prompt is being attended to by the user. We have catered for the user jumping around the “seek position” of the video to make all this more practical … function ouralert(inst, thist, thisih, thiscs) { //alert(‘here’); var iwhat=1, fptimethingos=[], fptimethingoends=[], cbefore=’0.000′, cafter=”, kfind=-1, ifg=0, sofarone=”, sofartwo=”; var fitsinbetween=”; var threemodes=’Regarding a , delimitation (2 spaces comma 2 spaces) can … ‘ + String.fromCharCode(10) + ‘ 1) amend matching blurb (can # delimit) with one changed string ‘; threemodes+=String.fromCharCode(10) + ‘ 2) accept one numerical as end seconds (accepting start one above) , changed (or not) string ‘; threemodes+=String.fromCharCode(10) + ‘ 3) accept two numerical as start seconds , end one , changed (or not) string ‘; if ((” + thiscs) == ‘null’ || (” + thiscs) == ‘undefined’) { thiscs=” + document.getElementById(‘curct’).innerHTML; } pdef=(” + (” + thisih).replace(/\&nbsp\;/g, ‘ ‘)).replace(/^undefined/g, ”).trim(); fptimethingos=document.getElementById(‘fauxpas’ + theone).value.split(‘ , ‘); var timethingos=document.getElementById(‘fauxpasstartsecs’ + theone).value.split(‘,’); while (eval(” + timethingos.length) < eval(” + fptimethingos.length)) { … Continue reading →

Posted in Ajax, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Video Commentary YouTube Style SubRip Subtitles URL Tutorial

Yesterday’s Video Commentary YouTube Style SubRip Subtitles Tutorial‘s cloned Video Commentary pointed us towards the idea of … Strings starting with “http” or “//” … link to a URL, suiting ones like Wikipedia uses (at this stage) … in amongst it’s new “summary” word mapping ideas. One reason we said “suiting ones” above was that there were issues with the … + … character as both a means by which URL can encode a space character to, as well as the start to an international SMS number, as well as a normal character, and with all these “guises” we needed more work to allow a URL such as … https://www.google.com/search?q=soninke+people+doorways&udm=2&fbs=AIIjpHxU7SXXniUZfeShr2fp4giZ1Y6MJ25_tmWITc7uy4KIeiAkWG4OlBE2zyCTMjPbGmMU8EWskMk2JSE__efdUJ3xRFvZ0M2vJLB0hUMk5HOE2OjlycQYRp9vQECfaBtuI77VBixuZT8Ikq7knPIraxtLcXUn-925YP4AZPohtCshEMzz_HYh-s2jy_GenEFZtSggFj5UruF1QvDnKbUPJW54S8V0hw&sa=X&ved=2ahUKEwimvqn7wKyOAxWVh1YBHdkLG7wQtKgLKAF6BAgVEAE&biw=1432&bih=745&dpr=2 … be able to work for a user entered URL of more complexity containing ? and & arguments. Also, today, we made mobile platform styling “more striking” if you will, via CSS … <style> input[type=text] { width: 95%; background-color: #f0f0f0; } textarea { width: 95%; background-color: #f8f8f8; } @media only screen and (min-device-width: 320px) and (max-device-width: 765px) and (orientation: portrait) { input[type=submit] { font-size: 36px; color: blue; border-radius: 30px; margin: 9 9 9 9; } button { font-size: 24px; } } textarea { width: 95%; background-color: #f8f8f8; } @media only screen and (min-device-width: 320px) and (max-device-width: 765px) and (orientation: landscape) { input[type=submit] { font-size: 36px; color: blue; border-radius: 30px; margin: 9 9 9 9; } button { font-size: 24px; } } &lt/style> Notice the mention of textarea above? Yes, at least for non-mobile, our comma separated style of textboxes were transferred over to textarea elements, and their resizing talents here can be useful. The help came via … further embellished stop_start_youtube.html inhouse YouTube API interfacer the parent level changed karaoke_youtube_api.htm inhouse YouTube Informational Organizer and improved Audio Recording Organizer … … for … the changed to video_commentary.html web application (you can try below) Video Commentary YouTube Style SubRip Subtitles web application could be useful for research purposes and/or presentations using YouTube as that ever useful starting point the changed song_lyric_faux_pas.html web application below … established in a new and very simple peer to peer dropdown arrangement. Previous relevant Video Commentary YouTube Style SubRip Subtitles Tutorial is shown below. Yesterday’s Song Lyric Karaoke Style SubRip Subtitles Automated Tutorial work “comes along for the ride” in the cloning of the Song Lyric Karaoke Style SubRip Subtitles web application to a new Video Commentary YouTube Style SubRip Subtitles web application, where we started … Continue reading →

Posted in Ajax, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Video Commentary YouTube Style SubRip Subtitles Tutorial

Yesterday’s Song Lyric Karaoke Style SubRip Subtitles Automated Tutorial work “comes along for the ride” in the cloning of the Song Lyric Karaoke Style SubRip Subtitles web application to a new Video Commentary YouTube Style SubRip Subtitles web application, where we started getting interested in supporting programmatically created “summary” element wording mapped to … YouTube 11 character … link to a YouTube video … YouTube 34 character … link to a YouTube playlist … Spotify 22 character … link to a Spotify playlist … Strings with . and @ … link to a mailto: “a” link means of communication … Strings mainly numerical … link to an SMS: “a” link means of communication Strings starting with “http” or “//” … link to a URL, suiting ones like Wikipedia uses (at this stage) … because we envisage the how we got there cloning to video_commentary.html web application (you can try below) Video Commentary YouTube Style SubRip Subtitles web application could be useful for research purposes and/or presentations using YouTube as that ever useful starting point. It got help via … further embellished stop_start_youtube.html inhouse YouTube API interfacer the parent level changed karaoke_youtube_api.htm inhouse YouTube Informational Organizer and improved Audio Recording Organizer featuring … function otherlegit(ineleven, iflegit, thiseleven) { if (eval(” + ineleven.length) != thiseleven) { return ‘JUNK’ + iflegit; //} else if (ineleven.slice(-1).replace(‘A’,”).replace(‘E’,”).replace(‘I’,”).replace(‘M’,”).replace(‘Q’,”).replace(‘U’,”).replace(‘Y’,”).replace(‘c’,”).replace(‘g’,”).replace(‘k’,”).replace(‘o’,”).replace(‘s’,”).replace(‘w’,”).replace(‘0’,”).replace(‘4’,”).replace(‘8’,”) != ”) { // return ‘JUNK’ + iflegit; } for (var ijk=0; ijk<ineleven.length; ijk++) { if (ineleven.substring(ijk).substring(0,1) >= ‘a’ && ineleven.substring(ijk).substring(0,1) <= ‘z’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) >= ‘A’ && ineleven.substring(ijk).substring(0,1) <= ‘Z’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) >= ‘0’ && ineleven.substring(ijk).substring(0,1) <= ‘9’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) == ‘/’ || ineleven.substring(ijk).substring(0,1) == ‘+’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) == ‘-‘ || ineleven.substring(ijk).substring(0,1) == ‘_’) { ijk=ijk; } else { return ‘JUNK’ + iflegit; } } return iflegit; } function maybelegit(ineleven, iflegit) { if (eval(” + ineleven.length) != 11) { return iflegit.replace(‘tube’,’tuJUNKbe’); } else if (ineleven.slice(-1).replace(‘A’,”).replace(‘E’,”).replace(‘I’,”).replace(‘M’,”).replace(‘Q’,”).replace(‘U’,”).replace(‘Y’,”).replace(‘c’,”).replace(‘g’,”).replace(‘k’,”).replace(‘o’,”).replace(‘s’,”).replace(‘w’,”).replace(‘0’,”).replace(‘4’,”).replace(‘8’,”) != ”) { return iflegit.replace(‘tube’,’tuJUNKbe’); } for (var ijk=0; ijk<ineleven.length; ijk++) { if (ineleven.substring(ijk).substring(0,1) >= ‘a’ && ineleven.substring(ijk).substring(0,1) <= ‘z’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) >= ‘A’ && ineleven.substring(ijk).substring(0,1) <= ‘Z’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) >= ‘0’ && ineleven.substring(ijk).substring(0,1) <= ‘9’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) == ‘/’ || ineleven.substring(ijk).substring(0,1) == ‘+’) { ijk=ijk; } else if (ineleven.substring(ijk).substring(0,1) == ‘-‘ || ineleven.substring(ijk).substring(0,1) == ‘_’) { ijk=ijk; } else { return iflegit.replace(‘tube’,’tuJUNKbe’); } … Continue reading →

Posted in Ajax, eLearning, Event-Driven Programming, Tutorials | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Song Lyric Karaoke Style SubRip Subtitles Automated Tutorial

Onto yesterday’s Song Lyric Karaoke Style SubRip Subtitles Sharing Tutorial‘s “automate” mention … YouTube 11 character video ID … and so far, in a rudimentary sense that we may automate better into the future … once there you can click a relevant “Create” link appearing to glean those start and end times (in seconds) our form asks for … today we went about it, and in so doing realized hierarchical window object reference syntax ideas like … top.window.opener.window.opener … or … parent.window.opener.window.opener … can happen (and be crucial to the state of play), and do happen within the logic of our hard working greatgreatgrandchild further embellished stop_start_youtube.html inhouse YouTube API interfacer to make this automation happen. We were a bit surprised these types of hierarchical arrangements help in the scenario where within the first window.open window we must navigate via location.href to a new URL within the same window … amazing really! Another new concept that came with all this was to allow for more than one Faux Pas (content set) per YouTube video. We chose an “inhouse logic” delimiter system based on …   ,   … ie. two spaces comma two spaces. This awkward delimitation (non-mobile users are “hover informed” about while mobile users can find out via a textbox double click) is to differentiate delimitation from your normal comma usage within text that might be a Song Lyric snippet. All this can be tried with the “third draft” song_lyric_faux_pas.html web application below. Previous relevant Song Lyric Karaoke Style SubRip Subtitles Sharing Tutorial is shown below. Yesterday’s Song Lyric Karaoke Style SubRip Subtitles Tutorial may have been a salutary awakening for some humans (and perhaps even some Martians) out there. Is there a confession around the corner?! Well, have we got news for you?! We have added email and SMS sharing capabilities into the mix of our Song Lyric Faux Pas web application, along with allowing more than one song to be of interest in any one session using the “second draft” song_lyric_faux_pas.html web application below. Also, we’re hoping helps is that if you tab out of the Song Name textbox having filled that in with your song name of interest, a new popup window appears over to the right, and you can scour it’s resultant dropdown for the required … YouTube 11 character video ID … and so far, in a rudimentary sense that we may automate better into … Continue reading →

Posted in Not Categorised | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment