// eXe's (http://exelearning.net/) common JavaScript code // License: GNU General Public License // Based in eXe. Copyright 2004-2005, University of Auckland. Copyright 2004-2008 eXe Project, http://eXeLearning.org/ // See eXeLearning's common_src.js file for more information 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(n.indexOf(' class="mediaelement"')!=-1||n.indexOf(" class='mediaelement")!=-1){$exe.loadMediaPlayer.getPlayer()}}$exe.hint.init();$exe.setIframesProtocol();$exe.hasTooltips();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()},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+"')")}},addRoles:function(){$("#header").attr("role","banner");$("#siteNav").attr("role","navigation");$("#main").attr("role","main");$("#siteFooter").attr("role","contentinfo");$(".js-feedback").attr("role","status")},isIE:function(){var e=navigator.userAgent.toLowerCase();return e.indexOf("msie")!=-1?parseInt(e.split("msie")[1]):false},imageGallery:{init:function(e){$("A","#"+e).attr("rel","lightbox["+e+"]")}},hint:{init:function(){$(".iDevice_hint").each(function(e){var t=e+1;var n="hint-"+t;var r=$(".iDevice_hint_content",this);var i=$(".iDevice_hint_title",this);if(r.length==1&&i.length==1){r.eq(0).attr("id",n);var s=i.eq(0);var o=s.html();s.html(''+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)}});$("INPUT.autocomplete-off").attr("autocomplete","off")},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)})}},setIframesProtocol:function(){var e=window.location.protocol;var t=false;if(e!="http"&&e!="https")t=true;$("IFRAME").each(function(){var e=$(this).attr("src");if(t&&e.indexOf("//")==0)$(this).attr("src","http:"+e)})},loadScript:function(a,b){var s;if(a.split(".").pop()=="css"){s=document.createElement("link");s.type="text/css";s.rel="stylesheet";s.href=a}else{s=document.createElement("script");s.type="text/javascript";s.src=a}if(s.readyState){s.onreadystatechange=function(){if(s.readyState=="loaded"||s.readyState=="complete"){s.onreadystatechange=null;if(b)eval(b)}}}else{s.onload=function(){if(b)eval(b)}}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(a){var b=$exe.cloze.getIds(a)[0];var c=eval(document.getElementById("clozeFlag"+b+".instantMarking").value);if(c){$exe.cloze.checkAndMarkWord(a);var d=document.getElementById("clozeScore"+b);d.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(lm)break}if(n<=m){return d}o=o.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;sm)break}if(n<=m){return f}o=o.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(a,b){var c=eval(document.getElementById("clozelangFlag"+a+".showScore").value);if(c){var d=0;var e=document.getElementById("clozelang"+a);var f=$exe.cloze.getLangInputs(a);for(var i=0;i