/*! =========================================================================== eXe Copyright 2004-2005, University of Auckland Copyright 2004-2008 eXe Project, http://eXeLearning.org/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA =========================================================================== ClozelangElement's functions by José Ramón Jiménez Reyes More than one right answer in the Cloze iDevice by José Miguel Andonegi 2015. Refactored and completed by Ignacio Gros (http://www.gros.es) for http://exelearning.net/ */ var $exe={init:function(){var e=document.body.className;$exe.addRoles();if(e!="exe-single-page js"){var t=$exe.isIE();if(t){if(t>7)$exe.iDeviceToggler.init()}else $exe.iDeviceToggler.init()} if(e.indexOf("exe-epub3")!=0){var n=document.body.innerHTML;if($(".mediaelement").length>0){$exe.loadMediaPlayer.getPlayer()}} $exe.hint.init();$exe.setIframesProperties();$exe.hasTooltips();$exe.math.init();if(typeof($.prettyPhoto)!='undefined')$("a[rel^='lightbox']").prettyPhoto({social_tools:"",deeplinking:false,opacity:0.85});$exe.dl.init();$("a.exe-enlarge").each(function(i){var e=$(this);var c=$(this).children();if(c.length==1&&c.eq(0).prop("tagName")=="IMG"){e.prepend('');}});$exe.sfHover();$("INPUT.autocomplete-off").attr("autocomplete","off");},sfHover:function(){var e=document.getElementById("siteNav");if(e){var t=e.getElementsByTagName("LI");for(var n=0;n0?" ":"")+"sffocus";this.parentNode.className+=(this.parentNode.className.length>0?" ":"")+"sfhover";if(this.parentNode.parentNode.parentNode.nodeName=="LI"){this.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.className.length>0?" ":"")+"sfhover";if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName=="LI"){this.parentNode.parentNode.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.parentNode.parentNode.className.length>0?" ":"")+"sfhover"}}};r[n].onblur=function(){this.className=this.className.replace(new RegExp("( ?|^)sffocus\\b"),"");this.parentNode.className=this.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"),"");if(this.parentNode.parentNode.parentNode.nodeName=="LI"){this.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"),"");if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName=="LI"){this.parentNode.parentNode.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"),"")}}}}}},mediaReplace:function(){if(navigator.appName=="Microsoft Internet Explorer"){var e=document.getElementsByTagName("OBJECT");var t=e.length;while(t--){if(e[t].type=="video/quicktime"||e[t].type=="audio/x-pn-realaudio-plugin"){if(typeof e.classid=="undefined"){e[t].style.display="none";var n="02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";if(e[t].type=="audio/x-pn-realaudio-plugin")n="CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA";var r=e[t].height;var i=e[t].width;var s=e[t].data;var o=document.createElement("DIV");o.innerHTML='';e[t].parentNode.insertBefore(o,e[t])}}}}else if(document.body.className.indexOf("exe-epub3")==0){$("object").each(function(){var e=$(this);var p=e.attr("data");var w,h,f;var v=$("param[name=flv_src]",e);if(p=="flowPlayer.swf"&&v.length==1){w=this.width||320;h=this.height||240;f=v.attr("value");e.before('').remove()}else if(p.indexOf("xspf_player.swf?song_url=")==0){f=p.replace("xspf_player.swf?song_url=","");f=f.split("&")[0];e.before('').remove()}});}},rgb2hex:function(a){if(/^#[0-9A-F]{6}$/i.test(a))return a;a=a.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);function hex(x){return("0"+parseInt(x).toString(16)).slice(-2)} return"#"+hex(a[1])+hex(a[2])+hex(a[3])},useBlackOrWhite:function(h){var r=parseInt(h.substr(0,2),16);var g=parseInt(h.substr(2,2),16);var b=parseInt(h.substr(4,2),16);var y=((r*299)+(g*587)+(b*114))/1000;return(y>=128)?'black':'white'},dl:{init:function(){var l=$("dl.exe-dl");if(l.length==0)return false;var h,e,t,bg,tc,s,id;l.each(function(i){e=this;bg=$exe.rgb2hex($(e).css("color"));tc=$exe.useBlackOrWhite(bg.replace("#",""));s=" style='text-decoration:none;background:"+bg+";color:"+tc+"'";if(e.id=="")e.id="exe-dl-"+i;id=e.id;$("dt",e).each(function(){t=this;h=$(t).html();$(t).html("» "+h+"")});$(e).before("

+ -

")})},toggle:function(e,a){if(e=="show")$("#"+a+" dd").show();else if(e=="hide")$("#"+a+" dd").hide();else $(e).parent().next("dd").toggle()}},hasTooltips:function(){if($("A.exe-tooltip").length>0){var p="";if(typeof(exe_editor_mode)!="undefined")p="/scripts/exe_tooltips/";$exe.loadScript(p+"exe_tooltips.js","$exe.tooltips.init('"+p+"')")}},math:{engine:"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML",createLinks:function(math){var mathjax=false;if(!math){var math=$(".exe-math");mathjax=true;} math.each(function(){var e=$(this);var img=$(".exe-math-img img",e);var txt="LaTeX";if(e.html().indexOf("GIF';if(!mathjax){if(html!="")html+=' - ';html+=''+txt+'';} if(html!=""){html='';e.append(html);}});},showCode:function(e){var tit=e.innerHTML;var block=$(e).parent().parent();var code=$(".exe-math-code",block);var a=window.open(tit);a.document.open("text/html");var html=''+tit+'';html+='';html+='
';html+=code.html();html+='
';a.document.write(html);a.document.close();},init:function(){var math=$(".exe-math");var mathjax=false;if(math.length>0){math.each(function(){var e=$(this);if(e.hasClass("exe-math-engine")){if(navigator.onLine)mathjax=true;}});if(mathjax&&navigator.onLine){$(".exe-math-code").each(function(){var code=this.innerHTML.replace(/ /g,'');if(code.indexOf("'+o+"")}})},toggle:function(e){var t=e.id.replace("toggle-","");if(e.title==$exe_i18n.show){$("#"+t).fadeIn("slow");e.title=$exe_i18n.hide;e.className="hint-toggler hide-hint";e.style.backgroundImage="url("+$exe.hint.imgs[1]+")"}else{$("#"+t).fadeOut();e.title=$exe_i18n.show;e.className="hint-toggler show-hint";e.style.backgroundImage="url("+$exe.hint.imgs[0]+")"}}},iDeviceToggler:{init:function(){if($(".iDevice").length<2)return false;var t=$(".iDevice_header,.iDevice.emphasis0");t.each(function(){var t=$exe_i18n.hide;e=$(this),c=e.hasClass("iDevice_header")?"em1":"em0",eP=e.parents(".iDevice_wrapper");if(eP.length){var n='

'+t+"

";if(c=="em1"){var r=e.html();e.html(r+n)}else e.before(n)}});},toggle:function(e,t,n){var r=$exe_i18n.hide;var i=$("#"+t);var s=".iDevice_content";if(n=="em1")s=".iDevice_inner";var o=$(s,i);var u=i.attr("class");if(typeof u=="undefined")return false;if(u.indexOf(" hidden-idevice")==-1){r=$exe_i18n.show;u+=" hidden-idevice";o.slideUp("fast");e.className="show-idevice";e.title=r;e.innerHTML=""+r+""}else{u=u.replace(" hidden-idevice","");o.slideDown("fast");e.className="hide-idevice";e.title=r;e.innerHTML=""+r+""} i.attr("class",u)}},alignMediaElement:function(e){var t=$(e);var n=t.parents().eq(2);var r=n.attr("class");if(typeof r=="string"&&r.indexOf("mejs-container")==0){var i=e.style.marginLeft;var s=e.style.marginRight;if(i=="auto"&&i==s)$(n).wrap('
')}},loadMediaPlayer:{getPlayer:function(){$exe.mediaelements=$(".mediaelement");$exe.mediaelements.each(function(){if(typeof this.localName!="undefined"&&this.localName=="video"){var e=this.width;var t=$(window).width();if(e>t){var n=t-20;var r=parseInt(this.height*n/e);this.width=n;this.height=r}}}).hide();var e="exe_media.js";if(typeof eXe!="undefined"){e="../scripts/mediaelement/"+e} $exe.loadScript(e,"$exe.loadMediaPlayer.getCSS()")},getCSS:function(){var e="exe_media.css";if(typeof eXe!="undefined"){e="../scripts/mediaelement/"+e} $exe.loadScript(e,"$exe.loadMediaPlayer.init()")},init:function(){if(typeof eXe!="undefined"){mejs.MediaElementDefaults.flashName="../scripts/mediaelement/"+mejs.MediaElementDefaults.flashName;mejs.MediaElementDefaults.silverlightName="../scripts/mediaelement/"+mejs.MediaElementDefaults.silverlightName} $exe.mediaelements.mediaelementplayer().show().each(function(){$exe.alignMediaElement(this)})}},setIframesProperties:function(){setTimeout(function(){var p=window.location.protocol;var t=false;if(p!="http"&&p!="https")t=true;$("iframe").each(function(){var i=$(this);var s=i.attr("src");if(t&&s.indexOf("//")==0)$(this).attr("src","http:"+s);s=i.attr("src");if(!i.hasClass("external-iframe")&&s.indexOf("http")==0){i.addClass("external-iframe").before("");}});},1000);},loadScript:function(url,callback){var s;if(url.split(".").pop()=="css"){s=document.createElement("link");s.type="text/css";s.rel="stylesheet";s.href=url}else{s=document.createElement("script");s.type="text/javascript";s.src=url} if(s.readyState){s.onreadystatechange=function(){if(s.readyState=="loaded"||s.readyState=="complete"){s.onreadystatechange=null;if(callback)eval(callback)}}}else{s.onload=function(){if(callback)eval(callback)}} document.getElementsByTagName("head")[0].appendChild(s)},getFeedback:function(e,t,n,r){var i,s;if(r=="truefalse"){var o="right";if(e==1)o="wrong";var u=document.getElementById("s"+n+"-result");var a=document.getElementById("s"+n);if(!u||!a)return false;var f=$exe_i18n.incorrect;if(u.className==o)f=$exe_i18n.correct;u.innerHTML=f;a.style.display="block"}else{for(i=0;i"+$exe_i18n.correct+"";o="right"} var f='

'+s+"

";var l=$("#feedback-"+u);if(e.value==$exe_i18n.showFeedback)l.html(f).show();else l.hide()} if(e.value==$exe_i18n.showFeedback){$("#f"+n).show();e.value=$exe_i18n.hideFeedback}else{$("#f"+n).hide();e.value=$exe_i18n.showFeedback}},toggleFeedback:function(e,b){var t=e.name.replace("toggle-","");var n=document.getElementById(t);var d=false;var r=window[t.replace("-","")+"text"];if(typeof(r)!='undefined'){r=r.split("|");if(r.length>1)d=true} if(n){if(n.className=="feedback js-feedback js-hidden"){n.className="feedback js-feedback";if(b)e.value=$exe_i18n.hideFeedback;else if(d)e.value=r[1]}else{n.className="feedback js-feedback js-hidden";if(b)e.value=$exe_i18n.showFeedback;else if(d)e.value=r[0]}}},insertSymbol:function(e,t,n){var r=document.getElementById(e);$exe.insertAtCursor(r,t,n)},insertAtCursor:function(e,t,n){if(e.selectionStart||e.selectionStart=="0"){var r=e.selectionStart;var i=e.selectionEnd;e.value=e.value.substring(0,r)+t+e.value.substring(i,e.value.length);e.selectionStart=r+t.length-n}else{e.value+=t} e.selectionEnd=e.selectionStart;e.focus()}};$exe.cloze={NOT_ATTEMPTED:0,WRONG:1,CORRECT:2,change:function(ele){var ident=$exe.cloze.getIds(ele)[0];var instant=eval(document.getElementById("clozeFlag"+ident+".instantMarking").value);if(instant){$exe.cloze.checkAndMarkWord(ele);var scorePara=document.getElementById("clozeScore"+ident);scorePara.innerHTML=""}},submit:function(e){$exe.cloze.showScore(e,1);$exe.cloze.toggle("submit"+e);$exe.cloze.toggle("restart"+e);$exe.cloze.toggle("showAnswersButton"+e);$exe.cloze.toggleFeedback(e)},restart:function(e){$exe.cloze.toggleFeedback(e);$exe.cloze.toggleAnswers(e,true);$exe.cloze.toggle("restart"+e);$exe.cloze.toggle("showAnswersButton"+e);$exe.cloze.toggle("submit"+e)},toggleAnswers:function(e,t){var n=true;var r=$exe.cloze.getInputs(e);if(!t){for(var i=0;i1){s=true;var a="";for(x=0;x>4;i=(u&15)<<4|a>>2;s=(a&3)<<6|f;n=n+String.fromCharCode(r);if(a!=64){n=n+String.fromCharCode(i)} if(f!=64){n=n+String.fromCharCode(s)}}while(lmaxMisses)break} if(misses<=maxMisses){return original_answer;} string1=string1.substr(1)}} return""}},getIds:function(e){var t=e.id.slice(10);var n=t.indexOf(".");var r=t.slice(0,n);var i=t.slice(t.indexOf(".")+1);return[r,i]},showScore:function(e,t){var n=0;var r=document.getElementById("cloze"+e);var i=$exe.cloze.getInputs(e);for(var s=0;smaxMisses)break} if(misses<=maxMisses){return answer;} string1=string1.substr(1)}} return""}},getLangIds:function(e){var t=e.id.slice(14);var n=t.indexOf(".");var r=t.slice(0,n);var i=t.slice(t.indexOf(".")+1);return[r,i]},showLangScore:function(ident,mark){var showScore=eval(document.getElementById("clozelangFlag"+ident+".showScore").value);if(showScore){var score=0;var div=document.getElementById("clozelang"+ident);var inputs=$exe.cloze.getLangInputs(ident);for(var i=0;i