var presentation = ["civil war<\/word>","hidden base<\/word>","evil<\/word>","Galactic Empire<\/word>","Empire<\/word>","DEATH STAR<\/word>","armored space<\/word>","enough power<\/word>","entire planet<\/word>","Episode IV: A New Hope \"It is a period of civil war<\/strong>. Rebel spaceships, striking from a hidden base<\/strong>, have won their first victory against the evil<\/strong> Galactic Empire<\/strong>. During the battle, Rebel spies managed to steal secret plans to the Empire<\/strong>?s ultimate weapon, the DEATH STAR<\/strong>, an armored space<\/strong> station with enough power<\/strong> to destroy an entire planet<\/strong>.?<\/phrase>","Princess Leia<\/word>","Pursued by the Empire<\/strong>?s sinister agents, Princess Leia<\/strong> races home aboard her starship, custodian of the stolen plans that can save her people and restore freedom to the galaxy?.\"<\/phrase>","dark time<\/word>","Imperial<\/word>","Episode V: The Empire<\/strong> Strikes Back \"It is a dark time<\/strong> for the Rebellion. Although the Death Star<\/strong> has been destroyed, Imperial<\/strong> troops have driven the Rebel forces from their hidden base<\/strong> and pursued them across the galaxy.<\/phrase>","Imperial Starfleet<\/word>","Luke Skywalker<\/word>","secret base<\/word>","remote ice<\/word>","Hoth<\/word>","Evading the dreaded Imperial Starfleet<\/strong>, a group of freedom fighters led by Luke Skywalker<\/strong> has established a new secret base<\/strong> on the remote ice<\/strong> world of Hoth<\/strong>.<\/phrase>","evil lord<\/word>","Darth Vader<\/word>","Skywalker<\/word>","remote probes<\/word>","far reaches<\/word>","The evil lord<\/strong> Darth Vader<\/strong>, obsessed with finding young Skywalker<\/strong>, has dispatched thousands of remote probes<\/strong> into the far reaches<\/strong> of space?.\"<\/phrase>","Jedi<\/word>","Episode VI: The Return of the Jedi<\/strong><\/phrase>","planet<\/word>","Tatooine<\/word>","Han Solo<\/word>","vile gangster<\/word>","Jabba<\/word>","Hutt<\/word>","Luke<\/word>","small band<\/word>","Luke Skywalker<\/strong> has returned to his home planet<\/strong> of Tatooine<\/strong> in an attempt to rescue his friend Han Solo<\/strong> from the clutches of the vile gangster<\/strong> Jabba<\/strong> the Hutt<\/strong>. Little does Luke<\/strong> know that the GALACTIC EMPIRE<\/strong> has secretly begun construction on a new armored space<\/strong> station even more powerful than the first dreaded Death Star<\/strong>. When completed, this ultimate weapon will spell certain doom for the small band<\/strong> of rebels struggling to restore freedom to the galaxy...<\/phrase>","Phantom<\/word>","Galactic Republic<\/word>","Episode 1: The Phantom<\/strong> Menace \"Turmoil has engulfed the Galactic Republic<\/strong>. The taxation of trade routes to outlying star systems is in dispute.<\/phrase>","deadly battleships<\/word>","Trade Federation<\/word>","small planet<\/word>","Naboo<\/word>","Hoping to resolve the matter with a blockade of deadly battleships<\/strong>, the greedy Trade Federation<\/strong> has stopped all shipping to the small planet<\/strong> of Naboo<\/strong>.<\/phrase>","Republic<\/word>","Supreme Chancellor<\/word>","Jedi Knights<\/word>","While the congress of the Republic<\/strong> endlessly debates this alarming chain of events, the Supreme Chancellor<\/strong> has secretly dispatched two Jedi Knights<\/strong>, the guardians of peace and justice in the galaxy, to settle the conflict....\"<\/phrase>","Galactic Senate<\/word>","mysterious Count<\/word>","Dooku<\/word>","limited number<\/word>","Senator Amidala<\/word>","former Queen<\/word>","critical issue<\/word>","Episode II: Attack of the Clones \"There is unrest in the Galactic Senate<\/strong>. Several thousand solar systems have declared their intentions to leave the Republic<\/strong>. This separatist movement, under the leadership of the mysterious Count<\/strong> Dooku<\/strong>, has made it difficult for the limited number<\/strong> of Jedi Knights<\/strong> to maintain peace and order in the galaxy. Senator Amidala<\/strong>, the former Queen<\/strong> of Naboo<\/strong>, is returning to the Galactic Senate<\/strong> to vote on the critical issue<\/strong> of creating an ARMY OF THE REPUBLIC<\/strong> to assist the overwhelmed Jedi<\/strong>....\"<\/phrase>","Sith War<\/word>","Sith Lord<\/word>","Count Dooku<\/word>","stunning move<\/word>","fiendish droid<\/word>","General Grievous<\/word>","Chancellor Palpatine<\/word>","Separatist Droid Army<\/word>","desperate mission<\/word>","Chancellor<\/word>","Episode III: Revenge of the Sith War<\/strong>! The Republic<\/strong> is crumbling under attacks by the ruthless Sith Lord<\/strong>, Count Dooku<\/strong>. There are heroes on both sides. Evil<\/strong> is everywhere. In a stunning move<\/strong>, the fiendish droid<\/strong> leader, General Grievous<\/strong>, has swept into the Republic<\/strong> capital and kidnapped Chancellor Palpatine<\/strong>, leader of the Galactic Senate<\/strong>. As the Separatist Droid Army<\/strong> attempts to flee the besieged capital with their valuable hostage, two Jedi Knights<\/strong> lead a desperate mission<\/strong> to rescue the captive Chancellor<\/strong>....<\/phrase>"]; var currentPosition = 0; var totalPositions = 0; var timePerWord = 1500; var timePerPhraseWord = 120 var readAheadPlayerTimer; var autoPlay = true; var setMinimized = false; var wordSpeedOptions = {'Slower':2000,'Moderate':1200,'Fast':800}; var phraseSpeedOptions = {'Slower':280,'Moderate':200,'Fast':80}; var defaultWordSpeedOption = 'Moderate'; var defaultPhraseSpeedOption = 'Moderate'; var logToLTI = false; $(window).load(function(){ totalPositions = presentation.length; if (totalPositions > 0){ $('body').prepend('
'); $('body').prepend('
'); $('#read_ahead_player').prepend('
'); initializeReadAheadControls(); initializeReadAheadSlider(); initializeReadAheadSpeedOptions(); currentReadAheadControls(); resumeReadAheadPlayback(); } }); $(document).keyup(function(e){ switch(e.which) { case 37: pauseReadAheadPresentation(); priorReadAheadPresentationItem(); break; case 39: pauseReadAheadPresentation(); nextReadAheadPresentationItem(); break; default: break; } }); function initializeReadAheadControls(){ var s = ''; s += ''; s += ''; s += ''; s += '
'; s += ''; s += ''; s += ''; s += ''; s += ''; s += ''; s += ''; s += ''; s += ''; s += '
'; $('#read_ahead_player').append(s); } function initializeReadAheadSlider(){ var s = ''; s += '
'; s += '
'; s += '
'; $('#read_ahead_controls').prepend(s); updateReadAheadSliderPosition(); } function initializeReadAheadSpeedOptions(){ var s = '
'; s += '
'; s += ' Word Speed
'; s += '
'; optionCount = 0; for (index in wordSpeedOptions) { optionCount++; } optionWidth = 100 / optionCount; for (index in wordSpeedOptions) { var option = wordSpeedOptions[index]; if (index == defaultWordSpeedOption) { s += ''; updateReadAheadWordSpeed(option); } else { s += ''; } } s += '
'; s += '
'; s += '
'; s += ' Phrase Speed
'; s += '
'; optionCount = 0; for (index in phraseSpeedOptions) { optionCount++; } optionWidth = 100 / optionCount; for (index in phraseSpeedOptions) { var option = phraseSpeedOptions[index]; if (index == defaultWordSpeedOption) { s += ''; updateReadAheadPhraseSpeed(option); } else { s += ''; } } s += '
'; s += '
'; s += '
'; $('#read_ahead_controls').append(s); } function updateReadAheadWordSpeed(microseconds,sender) { microseconds = microseconds != undefined && microseconds > 0 ? microseconds : 0; if (microseconds > 0) { timePerWord = microseconds; } if (sender!=undefined) { $('#slider_control_word_speed').find('a').removeClass('current_speed'); $(sender).addClass('current_speed'); } logReadAheadPlayerAction('updateReadAheadWordSpeed','Presentation',microseconds); } function updateReadAheadPhraseSpeed(microseconds,sender) { microseconds = microseconds != undefined && microseconds > 0 ? microseconds : 0; if (microseconds > 0 ) { timePerPhraseWord = microseconds; } if (sender!=undefined) { $('#slider_control_phrase_speed').find('a').removeClass('current_speed'); $(sender).addClass('current_speed'); } logReadAheadPlayerAction('updateReadAheadPhraseSpeed','Presentation',microseconds); } function updateReadAheadSliderPosition(){ var currentSliderBarWidth = 100 - (100 / totalPositions * (currentPosition + 1)); $('#readAheadSliderBar').css('width',currentSliderBarWidth+'%'); } function currentReadAheadControls(){ $('#read_ahead_player_pause_play').show(); if (currentPosition < totalPositions - 1) { $('#read_ahead_player_next_word').removeClass('disabled'); } else { $('#read_ahead_player_next_word').addClass('disabled'); } if (currentPosition > 0) { $('#read_ahead_player_previous_word').removeClass('disabled'); } else { $('#read_ahead_player_previous_word').addClass('disabled'); } } function restartReadAheadPresentation(){ currentPosition = 0; logReadAheadPlayerAction('restartReadAheadPresentation','Presentation',''); resumeReadAheadPlayback(); } function resumeReadAheadPlayback(){ $('.fa-repeat').removeClass('fa-repeat').addClass('fa-play'); $('#read_ahead_player_pause_play').each(function(){ $(this).find('.fa-play').removeClass('fa-play').addClass('fa-pause'); $(this).off('click'); $(this).attr('onclick','pauseReadAheadPresentation()'); }); logReadAheadPlayerAction('resumeReadAheadPlayback','Presentation',''); playReadAheadPresentation(); } function pauseReadAheadPresentation(){ $('#read_ahead_player_pause_play').each(function(){ $(this).find('.fa-pause').removeClass('fa-pause').addClass('fa-play'); $(this).off('click'); $(this).attr('onclick','resumeReadAheadPlayback()'); }); logReadAheadPlayerAction('pauseReadAheadPresentation','Presentation',''); read_ahead_pause(); } function endReadAheadPresentation(){ $('.fa-play').removeClass('fa-play').addClass('fa-repeat'); $('.fa-pause').removeClass('fa-pause').addClass('fa-repeat'); $('#read_ahead_player_pause_play').each(function(){ $(this).off('click'); $(this).attr('onclick','restartReadAheadPresentation()'); }); logReadAheadPlayerAction('endReadAheadPresentation','Presentation',''); logLTIEndPresentation(); } function playReadAheadPresentation(){ autoPlay=true; currentPosition--; logReadAheadPlayerAction('playReadAheadPresentation','Presentation',''); nextReadAheadPresentationItem(); } function startReadAheadStepper(timeDisplayWord){ clearInterval(readAheadPlayerTimer); readAheadPlayerTimer = setTimeout(function() { read_ahead_step(); },timeDisplayWord); } function stopReadAheadStepper(){ clearInterval(readAheadPlayerTimer); } function read_ahead_step(){ if (autoPlay) { nextReadAheadPresentationItem(); } } function read_ahead_pause(){ autoPlay=false; stopReadAheadStepper(); } function showReadAheadPresentationItem(index){ currentPosition = index; currentPresentationItem = presentation[currentPosition] != undefined ? presentation[currentPosition].trim() : ""; if (currentPresentationItem != "") { currentItemWordCount = presentation[currentPosition].replace("\n","").split(" ").length; if (currentPresentationItem.startsWith("")){ startReadAheadStepper(currentItemWordCount*timePerWord); $('#read_ahead_player_field').html('
'+currentPresentationItem+'
'); logReadAheadPlayerAction('showReadAheadPresentationItem','Word',currentPresentationItem); } else { startReadAheadStepper(currentItemWordCount*timePerPhraseWord); $('#read_ahead_player_field').html('
'+currentPresentationItem.replace("\n","
")+'
'); logReadAheadPlayerAction('showReadAheadPresentationItem','Phrase',''); } } else { if (currentPosition < totalPositions) { nextReadAheadPresentationItem(); } else { endReadAheadPresentation(); read_ahead_minimize(); } } currentReadAheadControls(); updateReadAheadSliderPosition(); saveReadAheadPosition(); } function priorReadAheadPresentationItem(){ stopReadAheadStepper(); logReadAheadPlayerAction('priorReadAheadPresentationItem','Controls',''); showReadAheadPresentationItem(currentPosition-1); } function nextReadAheadPresentationItem(){ stopReadAheadStepper(); logReadAheadPlayerAction('nextReadAheadPresentationItem','Controls',''); showReadAheadPresentationItem(currentPosition+1); } function read_ahead_playAgain(){ currentWordIndex = 0; logReadAheadPlayerAction('read_ahead_playAgain','Controls',''); playReadAheadPresentation(); } function read_ahead_minimize(){ setMinimized = true; logReadAheadPlayerAction('read_ahead_minimize','Controls',''); read_ahead_switch_min_max(); } function read_ahead_maximize(){ setMinimized = false; logReadAheadPlayerAction('read_ahead_maximize','Controls',''); read_ahead_switch_min_max(); } function read_ahead_switch_min_max(forceSwitch){ forceSwitch = forceSwitch != undefined ? forceSwitch : false; if (forceSwitch) { setMinimized = !setMinimized; } if (setMinimized) { $('#read_ahead_player_back').fadeOut(); $('#read_ahead_player').addClass('minimize'); $('.player-icons .fa-stack').removeClass('fa-lg').addClass('fa-sm'); $('.player-icons .fa-minus').removeClass('fa-minus').addClass('fa-expand'); logReadAheadPlayerAction('read_ahead_switch_min_max','Min',''); //$('#read_ahead_player_max_min').each(function(){ // $(this).off('click'); // $(this).attr('onclick','read_ahead_maximize()'); //}); } else { $('#read_ahead_player_back').fadeIn(); $('#read_ahead_player').removeClass('minimize'); $('.player-icons .fa-stack').removeClass('fa-sm').addClass('fa-lg'); $('.player-icons .fa-expand').removeClass('fa-expand').addClass('fa-minus'); logReadAheadPlayerAction('read_ahead_switch_min_max','Max',''); //$('#read_ahead_player_max_min').each(function(){ // $(this).off('click'); // $(this).attr('onclick','read_ahead_minimize()'); //}); } } function saveReadAheadPosition(){ $.ajax({ type:'POST', url:'/ajax/save_user_presentation_position.php', data: { 'id':126, 'position': currentPosition } }) .done(function(results){ }) .fail(function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }); } function logLTIEndPresentation(action) { if (!logToLTI) { return; } $.ajax({ type:'POST', url:'/lti/presentationEnded.php', data: { 'documentId':126, 'userId':0, } }) } function logReadAheadPlayerAction(action,area,details){ var d = new Date(); var t = d.getTime(); action = action != undefined ? action.trim() : 'UNKNOWN'; area = area != undefined ? area.trim() : ''; details = details != undefined ? details : ''; // If we are about to show a new word, increase the number of keywords // reinforced so we can log that for the Dashboard page. if (area == 'Word') { window.keywordCount++; } $.ajax({ type:'POST', url:'/logging/logPlayerAction.php', data: { 'documentId':126, 'userId':0, 'playerAction':action, 'playerArea':area, 'details':details, 'timestamp': t } }) .done(function(results){ }) .fail(function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }); }