/** * Interactive Video iDevice * * Released under Attribution-ShareAlike 4.0 International License. * Author: Ignacio Gros (http://gros.es/) for http://exelearning.net/ * * License: http://creativecommons.org/licenses/by-sa/4.0/ * * Loading icon generated with http://www.ajaxload.info/ */ var mejsFullScreen; var interaction = { isSeek : false, baseId : "interaction", isInExe : false, mediaElementReady : false, typeNames : { text : "Texto", image : "Imagen", singleChoice : "Respuesta única", multipleChoice : "Respuesta múltiple", dropdown : "Desplegable", cloze : "Rellenar huecos", matchElements : "Emparejado", sortableList : "Lista desordenada" }, i18n : { "start" : "Start", "results" : "Results", "slide" : "Slide", "score" : "Score", "seen" : "Seen", "total" : "Total", "seeAll" : "see all the slides and answer all the questions", "noSlides" : "This video has no interactive slides.", "goOn" : "Continue", "error" : "Error", "dataError" : "Incompatible code", "onlyOne" : "Only one interactive video per page.", "cover" : "Cover", "fsWarning" : "Exit the fullscreen mode (Esc) to see the current slide", "right" : "Right!", "wrong" : "Wrong", "sortableListInstructions" : "Drag and drop or use the arrows.", "up" : "Move up", "down" : "Move down", "rightAnswer" : "Right answer:", "notAnswered" : "Please finish the activity", "check" : "Check", "newWindow" : "New window" }, inIframe : function() { try { return window.self !== window.top; } catch (e) { return true; } }, cover : { hide : function(play){ $("BODY").removeClass("cover-on"); if (play) interaction.controls.play(); }, show : function(action){ var i18n = interaction.i18n; interaction.controls.stop(); $("BODY").addClass("cover-on"); var txt = i18n.goOn; var play = false; if (action=="restart") { txt = i18n.start; play = true; } $("#start-link").text(txt).click(function(){ interaction.cover.hide(play); return false; }); } }, randomizeArray : function(o){ var original = []; for (var w=0;w-1 || ref.indexOf("//www.youtube.com")>-1) { function youtube_parser(url){ var match = url.match(regExp); var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; var match = url.match(regExp); if (match && match[2].length == 11) { return match[2]; } else { return false; } } var id = youtube_parser(ref); if (!id) { alert(interaction.i18n.error+" - Youtube (ID)"); return false; } this.id = id; this.type = 'youtube'; return; } // Local else if (ref.indexOf("resources/")==0 || (ref.indexOf("http")!=0 && ref.indexOf("//")!=0)) { this.file = ref; this.type = 'local'; this.extension = ref.split('.').pop().toLowerCase(); return; } alert(interaction.i18n.error+" - "+interaction.i18n.dataError); } }, init : function(){ // Create the required HTML elements: var es = $(".exe-interactive-video"); var showResults = true; if (es.hasClass("exe-interactive-video-no-results")) showResults = false; if (es.length==0) return; if (typeof($exeAuthoring)!='undefined') this.isInExe = true; if (es.length>1) { var msg = interaction.i18n.error+" - "+interaction.i18n.onlyOne; if (this.isInExe) eXe.app.alert(msg); else alert(msg); return false; } es = es.eq(0); // Default strings if (typeof(InteractiveVideo)!="undefined" && typeof(InteractiveVideo.i18n)!="undefined") { for (var _i in InteractiveVideo.i18n) { interaction.i18n[_i] = InteractiveVideo.i18n[_i]; }; } var i18n = interaction.i18n; var html = '\
\
\
\
\
\ '; if (showResults) { html += '\ \ '; } // es.html(es.html()+html); es[0].innerHTML += html; if (typeof(InteractiveVideo)=="undefined" || typeof(InteractiveVideo.slides)=="undefined" || InteractiveVideo.slides.length==0) { $("#player").html("

"+i18n.noSlides+"

"); $("#activity-results-toggler").hide(); return false; } try { document.createEvent("TouchEvent"); $("BODY").addClass("is-mobile"); } catch(e) { } if (this.inIframe()) $("body").removeClass("full-screen"); this.getTypeAndId(); // To review // Make sure that you delete all the results so you can save the new values for (var i=0;i'; play = play+playContent+"

"; // var cover = "

"+$("#activity-title").html()+"

"; var cover = ""; var videoTitle = "..."; if (InteractiveVideo.title) videoTitle = InteractiveVideo.title; else { var iDeviceTitle = $(".interactive-videoIdevice .iDeviceTitle"); if (iDeviceTitle.length>0) { iDeviceTitle = iDeviceTitle.eq(0); if (iDeviceTitle.html()!=" " && iDeviceTitle.text().replace(/ /g,'')!="") { videoTitle = iDeviceTitle.text(); } } } if (!(InteractiveVideo.description && videoTitle=="...")) cover = "

"+videoTitle+"

"; if (InteractiveVideo.description) cover += InteractiveVideo.description; $("#activity").prepend('
'+cover+'
'+play+'
'); if (this.type=='mediateca') { $exe.loadScript("https://mediateca.educa.madrid.org/includes/player/exelearning/jwplayer.js","interaction.ready()"); return; } else if (this.type=='youtube') { onYouTubeIframeAPIReady = interaction.ready; // Load the IFrame Player API code asynchronously var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); } else if (this.type=='local') { $("#player").html(''); } // interaction.ready(); }, enableJWPlayer : function(id, h, w){ var img = 'http://mediateca.educa.madrid.org/imagen.php?id='+id+'&type=1&m=0'; jwplayer("player").setup({ sources: [{ file: "http://mediateca.educa.madrid.org/streaming.php?id="+id, label: "480p", type: "mp4", provider: "http", startparam: "start" }], image: img, logo: { file: "http://mediateca.educa.madrid.org/images/player/educamadrid.png", link: "http://mediateca.educa.madrid.org/video/"+id, hide: true }, abouttext: "Mediateca", aboutlink: "http://mediateca.educa.madrid.org/ayuda.php", // controls: false, height: h, width: w }); }, checkSlides : function(){ if (interaction.isSeek) { if ($("BODY").hasClass("active")) { // Check if it has endTime var slide = $("#slide"); var c = slide.attr("class"); if (c=="image" || c=="text") { if(!InteractiveVideo.slides[interaction.visibleSlide].endTime) { // To review (error: It hides the slide): interaction.slide.hide('case 1'); } } else { // setTimeout(function(){ // interaction.slide.hide('case 2'); // },100); } } } interaction.isSeek = false; }, ready : function() { interaction.orderSlides(); if (this.type=="mediateca") { // Enlable the player and track the video interaction.enableJWPlayer(this.id,'356','448'); jwplayer().onTime(function(e){ interaction.track(e.position); }); // If the video is playing, the slides should be hidden jwplayer().onPlay(function(){ interaction.hasPlayed = true; interaction.checkSlides(); }); interaction.complete(); } else if (interaction.type=="youtube") { interaction.player = new YT.Player('player', { height: '356', width: '448', videoId: interaction.id, events: { 'onReady': function(){ interaction.complete(); }, 'onStateChange': function(e){ interaction.hasPlayed = true; interaction.youtubeCounter = setInterval(function(){ interaction.track(interaction.player.getCurrentTime()); },500); interaction.checkSlides(); } } }); } else if (interaction.type=="local") { interaction.complete(); if (interaction.extension=="flv") { interaction.youtubeCounter = setInterval(function(){ interaction.track(interaction.hourToSeconds($("#player .mejs-currenttime").eq(0).text())); },500); } else { interaction.mediaElementVideo[0].addEventListener('playing', function (e) { interaction.youtubeCounter = setInterval(function(){ interaction.track(interaction.mediaElementVideo[0].currentTime); },500); interaction.checkSlides(); }); } } }, complete : function(){ // Create the results viewer interaction.resultsViewer.create(); // Set the max-width $(window).load(function(){ interaction.setMaxWidth(); }).resize(function(){ interaction.setMaxWidth(); }); }, setMaxWidth : function(){ var w = $("#activity-wrapper").width(); $("#player").css("max-width",(w/2)+"px"); }, orderSlides : function(){ var sortable = []; for (var slide in InteractiveVideo.slides) { sortable.push([interaction.secondsToHour(InteractiveVideo.slides[slide].startTime), InteractiveVideo.slides[slide]]) } sortable.sort(); var sorted = []; for (var i in sortable) { sorted.push(sortable[i][1]); } InteractiveVideo.slides = sorted; }, // hh:mm:ss to seconds hourToSeconds : function(str){ var i = str.split(':'); if (i.length==0) { return 0; } else if (i.length==1) { i = '00:00:'+i[0]; i = i.split(':'); } else if (i.length==2) { i = '00:'+i[0]+':'+i[1]; i = i.split(':'); } return (+i[0]) * 60 * 60 + (+i[1]) * 60 + (+i[2]); }, secondsToHour : function(totalSec) { var hours = parseInt( totalSec / 3600 ) % 24; var minutes = parseInt( totalSec / 60 ) % 60; var seconds = totalSec % 60; return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds); }, resultsViewer : { create : function(){ var html = ""; var i18n = interaction.i18n; // var cover = ""; // if (InteractiveVideo.cover) { var cover = '\ \  \ '+i18n.cover+' \  \ '; // } var questions = InteractiveVideo.slides; for (var i=0; i\ '+(i+1)+' \ '+interaction.secondsToHour(e.startTime)+' \ '+result+' \ '; } else { html += '\ \ '+(i+1)+' \ '+interaction.secondsToHour(e.startTime)+' \ '+result+' \ '; } } if (html!="") { html += '\ \ '+i18n.total+' ('+i18n.seeAll+') \ - \ '; html = '\ \ \ \ \ \ \ \ \ \ \ '+cover+html+'
 '+i18n.slide+' '+i18n.score+'
'; $("#activity-results").html(html); interaction.table = $("#activity-results"); var tds = $(".result",interaction.table); interaction.resultsViewer.getFinalResult(tds); } }, getFinalResult : function(tds){ var complete = true; var result = 0; var counter = 0; tds.each( function(){ var t = $(this).text(); if (t=="- ") complete = false; if (t.indexOf("%")!=-1) { result += parseFloat(t); counter ++; } else if (t==interaction.i18n.seen) { result += 100; counter ++; } } ); if (complete) { $("#resultsSummary").html(""+interaction.formatResult((result/counter).toFixed(2))+"%"); $("BODY").addClass("activity-completed"); } }, toggle : function(e){ if (interaction.isWorking) return false; interaction.isWorking = true; var block = $("#activity-results"); if (e.className=="show") { block.fadeIn(500,function(){ e.className = "hide"; interaction.isWorking = false; }); } else { block.fadeOut(500,function(){ e.className = "show"; interaction.isWorking = false; }); } } }, msg : function(type,txt,formId,rightAnswer){ var k = "success"; if (type=="alert") k = "alert"; else if (type=="error") k = "danger"; else if (type=="info") k = "info"; k = "exe-block-" + k; var msg = '

'+txt+'

'; if (rightAnswer) msg += rightAnswer; $("#"+formId+"Message").html(msg); }, seek : function(order){ if (interaction.visibleSlide==order && $("BODY").hasClass("active")) { return false; } interaction.isSeek = true; if (interaction.hasPlayed!=true) { interaction.controls.seek(InteractiveVideo.slides[order].startTime-1); } else { interaction.controls.seek(InteractiveVideo.slides[order].startTime); } }, isFullScreen : function(){ if (this.type=='mediateca' && jwplayer().getFullscreen()) return true; else if (this.type=='youtube' && $("iframe").width()==$(window).width()) return true; else if (this.type=='local' && (typeof(mejsFullScreen)!='undefined' && mejsFullScreen==true)) return true; return false; }, slide : { enable : function(slide,e,order) { var html = ""; var id = interaction.baseId; var i18n = interaction.i18n; var i; // Text if (e.type=="text") { slide.html(e.text); for (var i=0; i'+interaction.i18n.slide+''); $("#slide-link").focus(); }, show : function(e,order) { // e = the object e.current = true; interaction.visibleSlide = order; if (interaction.isFullScreen()) { interaction.controls.pause(); // Not displayed with MediaElement if (interaction.type!="local") alert(interaction.i18n.fsWarning); } if (!e.endTime) interaction.controls.pause(); var slide = $("#slide"); slide.html(""); slide.attr("class",e.type); if ($("BODY").hasClass("active") || interaction.isSeek) { $("#activity").css("width","100%"); interaction.slide.enable(slide,e,order); } else { $("#player").css("margin-left",0); $("#activity").css("width","100%"); interaction.slide.enable(slide,e,order); } }, hide : function(trigger){ interaction.visibleSlide = ""; $("#activity").css("width","50%"); $("BODY").removeClass("active"); } }, formatResult : function(result) { return result.toString().replace(".00","").replace(".",","); }, updateResult : function(question,result) { var tds = $(".result",interaction.table); tds.eq(question).html(""+result+""); interaction.resultsViewer.getFinalResult(tds); }, dropdownActivity : { create : function(slide,id,order,e) { var html = interaction.getForm.header(id,order,'dropdownActivity'); html += '

'+e.text+'

'; html += '

'; html += interaction.getForm.sendButton(id,order,'dropdownActivity'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); // Options var opts = []; var spans = $("SPAN","#"+id+"dropdownActivityForm"); var rightAnswers = []; spans.each( function(i){ if(this.style.textDecoration=='line-through') { var t = $(this).text(); opts.push(t); rightAnswers.push(t); $(this).hide().attr("id","right-answer-"+id+"-"+i); } } ); // Add more words if (e.additionalWords) { for (var z=0;z'+val+''; newOptions += h; } //Add the selects: spans.each( function(i){ if(this.style.textDecoration=='line-through') { var sel = $(''); $(this).before(sel); } } ); var activityForm = $("#"+id+"dropdownActivityForm"); activityForm.show(); //Show the previous results var currentQuestion = InteractiveVideo.slides[order]; if (currentQuestion.results) { var i18n = interaction.i18n; activityForm.addClass("disabled"); if (currentQuestion.results.score==100) { interaction.msg("success",i18n.right,id+"dropdownActivityForm"); } else { interaction.msg("error",i18n.wrong,id+"dropdownActivityForm",interaction.dropdownActivity.getRightAnswer(rightAnswers)); } var selectedValues = currentQuestion.results.selectedValues; var selectFields = $("SELECT",activityForm); for (var w=0;w"; } if (rightAnswer!="") rightAnswer = "
    "+rightAnswer+"
"; return "

Respuesta correcta: "+rightAnswer+"

"; }, validate : function(question,id) { var e = document.getElementById(id); var answers = e.getElementsByTagName("SELECT"); var answered = true; var errors = false; var rightAnswers = []; var rightAnswered = 0; for (i=0;i'; html += '
    '; if (!currentQuestion.results) { var toSort = []; for (w=0;w'; } } html += '
'; html += '

'+i18n.sortableListInstructions+'

'; html += '

'; html += interaction.getForm.sendButton(id,order,'sortableList'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); //Show the previous results if (currentQuestion.results) { $("#"+id+"sortableListForm").addClass("disabled"); if (currentQuestion.results.score==100) { interaction.msg("success",i18n.right,id+"sortableListForm"); } else { interaction.msg("error",i18n.wrong,id+"sortableListForm",interaction.sortableList.getRightAnswer(e.items)); } } else { $("#"+id+"sortableList").sortable().bind('sortupdate', function(e, ui) { $("#"+id+"sortableListInstructions").hide(); interaction.sortableList.updateLinks(id); }); } $("#"+id+"sortableListForm").show(); }, getLinksHTML : function(i,id){ var i18n = interaction.i18n; return ' '+i18n.up+' '+i18n.down+''; }, updateLinks : function(id) { var ul = $("#"+id+"sortableList"); var lis = $("li",ul); $("SPAN",ul).remove(); lis.each(function(i){ this.className = ""; if (i==0) this.className = "first"; if ((i+1)==lis.length) this.className = "last"; this.innerHTML += interaction.sortableList.getLinksHTML(i,id); }); }, getListHTML : function(lis,id) { var html = ""; for (var i=0;i'; } return html; }, sortList : function(e,a,b,id){ // LI - FROM - TO $("#"+id+"sortableListInstructions").hide(); var list = $("#"+id+"sortableList"); list.sortable("destroy"); var lis = $("LI",list); if (b<0 || b>(lis.length-1)) return false; var newList = []; var li, prev, current, next; for (var i=0;i")[0].split("")[0]; newList.push(li); if (i==(a-1)) prev = li; else if (i==a) current = li; else if (i==(a+1)) next = li; } newList[b] = current; if (b"; } if (rightAnswer!="") rightAnswer = "
    "+rightAnswer+"
"; return "

"+interaction.i18n.rightAnswer+" "+rightAnswer+"

"; }, validate : function(question,id) { var i18n = interaction.i18n; var slide = $("#"+id); var lis = InteractiveVideo.slides[question].items; var error = false; var selectedValues = []; var answer; var answers = $(".sortable LI").each(function(i){ answer = $(this).html().split("")[0]; answer = answer.split("")[0]; if (answer!=lis[i]) error = true; selectedValues.push(lis.indexOf(answer)); }); slide.addClass("disabled"); $("#"+id.replace("Form","")).sortable("destroy"); if (error) { var extra = interaction.sortableList.getRightAnswer(lis); interaction.msg("error",i18n.wrong,id,extra); interaction.sortableList.saveResults(question,0,slide,selectedValues); } else { interaction.msg("success",i18n.right,id); interaction.sortableList.saveResults(question,100,slide,selectedValues); } } }, clozeActivity : { create : function(slide,id,order,e) { var i18n = interaction.i18n; var html = interaction.getForm.header(id,order,'clozeActivity'); html += '

'+e.text+'

'; html += '

'; html += interaction.getForm.sendButton(id,order,'clozeActivity'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); // Options var opts = new Array(); var spans = $("SPAN","#"+id+"clozeActivityForm"); var rightAnswers = []; spans.each( function(i){ var l = this.innerHTML.length; if(this.style.textDecoration=='line-through') { var f = $('') rightAnswers.push($(this).text()); $(this).hide().attr("id","right-answer-"+id+"-"+i).before(f); } } ); var activityForm = $("#"+id+"clozeActivityForm"); activityForm.show(); //Show the previous results var currentQuestion = InteractiveVideo.slides[order]; if (currentQuestion.results) { var myForm = $("#"+id+"clozeActivityForm"); myForm.addClass("disabled"); if (currentQuestion.results.score==100) { interaction.msg("success",i18n.right,id+"clozeActivityForm"); } else { interaction.msg("error",i18n.wrong,id+"clozeActivityForm",interaction.clozeActivity.getRightAnswer(rightAnswers)); } var selectedValues = currentQuestion.results.selectedValues; var selectFields = $("INPUT[type=text]",activityForm); for (var w=0;w"; } if (rightAnswer!="") rightAnswer = "
    "+rightAnswer+"
"; return "

"+interaction.i18n.rightAnswer+" "+rightAnswer+"

"; }, validate : function(question,id) { var i18n = interaction.i18n; var e = document.getElementById(id); var answers = e.getElementsByTagName("INPUT"); var answered = true; var errors = false; var rightAnswers = []; var rightAnswered = 0; for (i=0;i'; html += '
'; var pairs = e.pairs; var pairsB = []; for (var i=0;i'+newPairs[w]+''; } html += '\

\ \ \ - \ \

'; } html += '
'; html += '

'; html += interaction.getForm.sendButton(id,order,'matchElements'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); var activityForm = $("#"+id+"matchElementsForm"); activityForm.show(); //Show the previous results var currentQuestion = InteractiveVideo.slides[order]; if (currentQuestion.results) { activityForm.addClass("disabled"); if (currentQuestion.results.score==100) { interaction.msg("success",i18n.right,id+"matchElementsForm"); } else { interaction.msg("error",i18n.wrong,id+"matchElementsForm",interaction.matchElements.getRightAnswer(pairs)); } var selectedValues = currentQuestion.results.selectedValues; var questionFields = $("SELECT.random-a",activityForm); var selectFields = $("SELECT.random-b",activityForm); for (var w=0;w"; } if (rightAnswer!="") rightAnswer = "
    "+rightAnswer+"
"; return "

"+interaction.i18n.rightAnswer+" "+rightAnswer+"

"; }, validate : function(question,id) { var i18n = interaction.i18n; var slide = $("#"+id); var pairs = InteractiveVideo.slides[question].pairs; var answered = true; var selects = $("SELECT.random-b",slide); var selectedValue; // var rightAnswers = []; var selectedValues = []; var rightAnswered = 0; for (var i=0;i'; return '
'; }, footer : function(){ if (interaction.isInExe) return '
'; return ''; }, sendButton : function(id, order, name){ var i18n = interaction.i18n; if (interaction.isInExe) return '' return '' } }, singleChoice : { create : function(slide,id,order,e) { var i18n = interaction.i18n; var html = interaction.getForm.header(id,order,'singleChoice'); html += '

'+e.question+'

'; html += '
'; for (var i=0;i'; html += ' '; html += e.answers[i][0]; html += ''; html += '

'; } html += '
'; html += '

'; html += interaction.getForm.sendButton(id,order,'singleChoice'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); //Show the previous results var currentQuestion = InteractiveVideo.slides[order]; if (currentQuestion.results) { var myForm = $("#"+id+"singleChoiceForm"); myForm.addClass("disabled"); $("input[type='radio']",myForm).each(function(){ if (this.value==currentQuestion.results.selectedValue) this.checked = true; }).attr("disabled","disabled"); if (currentQuestion.results.score==100) { interaction.msg("success",i18n.right,id+"singleChoiceForm"); } else { interaction.msg("error",i18n.wrong,id+"singleChoiceForm",interaction.singleChoice.getRightAnswer(currentQuestion.answers)); } } }, saveResults : function(question,result,slide,selectedValue){ var currentQuestion = InteractiveVideo.slides[question]; if (!currentQuestion.results) { currentQuestion.results = { score : result, selectedValue : selectedValue }; } interaction.updateResult(question,result+"%"); }, getRightAnswer : function(questions){ var rightAnswer = ""; for (var i=0;i"+interaction.i18n.rightAnswer+" "+rightAnswer+"

"; }, validate : function(question,id) { var i18n = interaction.i18n; var slide = $("#"+id); var selected = $("input[type='radio']:checked",slide); if (selected.length==0) { interaction.msg("info",i18n.notAnswered,id); } else { var selectedValue = selected.val(); var questions = InteractiveVideo.slides[question].answers; slide.addClass("disabled"); $("input[type='radio']",slide).attr("disabled","disabled"); if (questions[selectedValue][1]==1) { interaction.msg("success",i18n.right,id); interaction.singleChoice.saveResults(question,100,slide,selectedValue); } else { var extra = interaction.singleChoice.getRightAnswer(questions); interaction.msg("error",i18n.wrong,id,extra); interaction.singleChoice.saveResults(question,0,slide,selectedValue); } } } }, multipleChoice : { create : function(slide,id,order,e) { var i18n = interaction.i18n; var html = interaction.getForm.header(id,order,'multipleChoice'); html += '

'+e.question+'

'; html += '
'; for (var i=0;i'; html += ' '; html += e.answers[i][0]; html += ''; html += '

'; } html += '
'; html += '

'; html += interaction.getForm.sendButton(id,order,'multipleChoice'); html += '

'; html += '
'; html += '
'; html += interaction.getForm.footer(); slide.html(html); var currentQuestion = InteractiveVideo.slides[order]; if (currentQuestion.results) { var myForm = $("#"+id+"multipleChoiceForm"); myForm.addClass("disabled"); $("input[type='checkbox']",myForm).each(function(){ var selectedValues = currentQuestion.results.selectedValues; for (var z=0;z"; } rightAnswer += ""; return "

"+interaction.i18n.rightAnswer+"

"+rightAnswer; }, validate : function(question,id) { var i18n = interaction.i18n; var slide = $("#"+id); var selected = $("input[type='checkbox']:checked",slide); if (selected.length==0) { interaction.msg("info",i18n.notAnswered,id); } else { slide.addClass("disabled"); $("input[type='checkbox']",slide).attr("disabled","disabled"); var questions = InteractiveVideo.slides[question].answers; // Check if it has errors var error = false; var selectedValues = []; var rightAnswered = 0; // 1/2 Check if the selected ones are right selected.each(function(){ var selectedValue = this.value; selectedValues.push(selectedValue); if (questions[selectedValue][1]!=1) error = true; else rightAnswered ++; }); // 2/2 Check if those which are not selected should have been selected // Right answers var rightAnswers = 0; for (var i=0;irightAnswered) error = true; if (error) { var extra = interaction.multipleChoice.getRightAnswer(questions); interaction.msg("error",i18n.wrong,id,extra); // % var result = (rightAnswered*100/rightAnswers).toFixed(2); interaction.multipleChoice.saveResults(question,result,slide,selectedValues); } else { interaction.msg("success",i18n.right,id); // To do: save more than one selected option interaction.multipleChoice.saveResults(question,100,slide,selectedValues); } } } }, track : function(position){ var position = Math.round(position).toString(); var slides = InteractiveVideo.slides; var i = slides.length; var e; while (i--) { e = slides[i]; if (e.startTime.toString()==position) { if (e.current==false) { this.slide.show(e,i); } else { } } else if (e.endTime && e.endTime.toString()==position) { this.slide.hide('case 3'); } else { e.current = false; } } }, getImage : function(e,w,h,src){ var maxW = 448; var maxH = 356; var newW = w; var newH = h; var css = "square"; if (w==h) { // Square if (w>maxW || h>maxW) { newW = maxW; newH = maxW; } } else if (w>h) { // Horizontal css = "horizontal"; if (w>maxW || h>maxW) { newW = maxW; newH = Math.round(h*newW/w); } } else { // Vertical css = "vertical"; if (w>maxW || h>maxW) { newH = maxW; newW = Math.round(h*newH/h); } } if (newH>maxH) { newW = Math.round(maxH*newW/newH); newH = maxH; } return ''+e.description+''+interaction.i18n.newWindow+''; } } $(function(){ interaction.init(); }); /* * HTML5 Sortable jQuery Plugin * https://github.com/voidberg/html5sortable * * Original code copyright 2012 Ali Farhadi. * This version is mantained by Alexandru Badiu & Lukas Oppermann * * * Released under the MIT license. */ !function(e,t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?module.exports=t(require("jquery")):e.sortable=t(e.jQuery)}(this,function(e){"use strict";var t,a,r=e(),n=[],i=function(e){e.off("dragstart.h5s"),e.off("dragend.h5s"),e.off("selectstart.h5s"),e.off("dragover.h5s"),e.off("dragenter.h5s"),e.off("drop.h5s")},o=function(e){e.off("dragover.h5s"),e.off("dragenter.h5s"),e.off("drop.h5s")},d=function(e,t){e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text",""),e.dataTransfer.setDragImage&&e.dataTransfer.setDragImage(t.item,t.x,t.y)},s=function(e,t){return t.x||(t.x=parseInt(e.pageX-t.draggedItem.offset().left)),t.y||(t.y=parseInt(e.pageY-t.draggedItem.offset().top)),t},l=function(e){return{item:e[0],draggedItem:e}},f=function(e,t){var a=l(t);a=s(e,a),d(e,a)},h=function(e,t){return"undefined"==typeof e?t:e},g=function(e){e.removeData("opts"),e.removeData("connectWith"),e.removeData("items"),e.removeAttr("aria-dropeffect")},c=function(e){e.removeAttr("aria-grabbed"),e.removeAttr("draggable"),e.removeAttr("role")},u=function(e,t){return e[0]===t[0]?!0:void 0!==e.data("connectWith")?e.data("connectWith")===t.data("connectWith"):!1},p=function(e){var t=e.data("opts")||{},a=e.children(t.items),r=t.handle?a.find(t.handle):a;o(e),g(e),r.off("mousedown.h5s"),i(a),c(a)},m=function(t){var a=t.data("opts"),r=t.children(a.items),n=a.handle?r.find(a.handle):r;t.attr("aria-dropeffect","move"),n.attr("draggable","true");var i=(document||window.document).createElement("span");"function"!=typeof i.dragDrop||a.disableIEFix||n.on("mousedown.h5s",function(){-1!==r.index(this)?this.dragDrop():e(this).parents(a.items)[0].dragDrop()})},v=function(e){var t=e.data("opts"),a=e.children(t.items),r=t.handle?a.find(t.handle):a;e.attr("aria-dropeffect","none"),r.attr("draggable",!1),r.off("mousedown.h5s")},b=function(e){var t=e.data("opts"),a=e.children(t.items),r=t.handle?a.find(t.handle):a;i(a),r.off("mousedown.h5s"),o(e)},x=function(i,o){var s=e(i),l=String(o);return o=e.extend({connectWith:!1,placeholder:null,dragImage:null,disableIEFix:!1,placeholderClass:"sortable-placeholder",draggingClass:"sortable-dragging",hoverClass:!1},o),s.each(function(){var i=e(this);if(/enable|disable|destroy/.test(l))return void x[l](i);o=h(i.data("opts"),o),i.data("opts",o),b(i);var s,g,c,p=i.children(o.items),v=null===o.placeholder?e("<"+(/^ul|ol$/i.test(this.tagName)?"li":"div")+' class="'+o.placeholderClass+'"/>'):e(o.placeholder).addClass(o.placeholderClass);if(!i.attr("data-sortable-id")){var I=n.length;n[I]=i,i.attr("data-sortable-id",I),p.attr("data-item-sortable-id",I)}if(i.data("items",o.items),r=r.add(v),o.connectWith&&i.data("connectWith",o.connectWith),m(i),p.attr("role","option"),p.attr("aria-grabbed","false"),o.hoverClass){var C="sortable-over";"string"==typeof o.hoverClass&&(C=o.hoverClass),p.hover(function(){e(this).addClass(C)},function(){e(this).removeClass(C)})}p.on("dragstart.h5s",function(r){r.stopImmediatePropagation(),o.dragImage?(d(r.originalEvent,{item:o.dragImage,x:0,y:0}),console.log("WARNING: dragImage option is deprecated and will be removed in the future!")):f(r.originalEvent,e(this),o.dragImage),t=e(this),t.addClass(o.draggingClass),t.attr("aria-grabbed","true"),s=t.index(),a=t.height(),g=e(this).parent(),t.parent().triggerHandler("sortstart",{item:t,placeholder:v,startparent:g})}),p.on("dragend.h5s",function(){t&&(t.removeClass(o.draggingClass),t.attr("aria-grabbed","false"),t.show(),r.detach(),c=e(this).parent(),t.parent().triggerHandler("sortstop",{item:t,startparent:g}),(s!==t.index()||g.get(0)!==c.get(0))&&t.parent().triggerHandler("sortupdate",{item:t,index:c.children(c.data("items")).index(t),oldindex:p.index(t),elementIndex:t.index(),oldElementIndex:s,startparent:g,endparent:c}),t=null,a=null)}),e(this).add([v]).on("drop.h5s",function(a){return u(i,e(t).parent())?(a.stopPropagation(),r.filter(":visible").after(t),t.trigger("dragend.h5s"),!1):void 0}),p.add([this]).on("dragover.h5s dragenter.h5s",function(n){if(u(i,e(t).parent())){if(n.preventDefault(),n.originalEvent.dataTransfer.dropEffect="move",p.is(this)){var d=e(this).height();if(o.forcePlaceholderSize&&v.height(a),d>a){var s=d-a,l=e(this).offset().top;if(v.index()e(this).index()&&n.originalEvent.pageY>l+d-s)return!1}t.hide(),v.index()