function AskTheExpertEntries(){function e(e){var t=Util.nullValue(e,"");return s.selectItems(AskTheExpertEntryList.SORT_BY_ID,new AskTheExpertEntryListFilter({search:t}))}function t(e){var t=Util.nullValue(e,""),n=s.selectItems(AskTheExpertEntryList.SORT_BY_ID,new AskTheExpertEntryListFilter({ids:t}));return Util.isSet(n.moveFirst())||(n=s.selectItems(AskTheExpertEntryList.SORT_BY_ID,new AskTheExpertEntryListFilter({selectAll:!0}))),n}function n(e){return s.getItemById(e)}function r(){s=a()}function a(){var e=core.manifest["ask-the-expert"],t=new AskTheExpertEntryList;if(null!=e){var n=e.entries;if(null!=n){var r=null;for(var a in n)n.hasOwnProperty(a)&&(r=$.extend({id:a},n[a]),ObjectUtil.is(r.answer,Array)&&(r.answer=r.answer.join("")),r.question=StringUtil.parseVars(r.question),r.answer=StringUtil.parseVars(r.answer),r.visible=i(r.visible),t.addItem(new AskTheExpertEntryListItem(r)))}}return t}function i(e){if(Util.isSet(e))switch(e.constructor){case Boolean:return e;case String:return""===e||StringUtil.evaluate(StringUtil.parseVars(e))===!0}return!0}var o=this;Object.defineProperty(o,"getEntries",{value:e}),Object.defineProperty(o,"getEntriesByIds",{value:t}),Object.defineProperty(o,"getEntryListItem",{value:n}),Object.defineProperty(o,"init",{value:r});var s=null}function AskTheExpertEntryListFilter(e){function t(e){var t=function(t){return t===e.id};if(e.visible&&!r){if(""!==a){var n=Search.find(a.toLowerCase(),e.keywords.toLowerCase()),o=e.question.toLowerCase().indexOf(a.toLowerCase()),s=-1!==o;return n||s}if(i.length>0)return i.some(t)}return e.visible}Object.defineProperty(this,"select",{value:t});var n=Util.nullValue(e,{}),r=Util.nullValue(n.selectAll,!1),a=Util.nullValue(n.search,""),i=Util.isSet(n.ids)?n.ids.split(","):[]}function AskTheExpertEntryListItem(e){function t(){return s}function n(e){s=e}function r(){return l}function a(){return c}function i(){return u}var o=this;ListItem.apply(o,[e.id]),Object.defineProperty(o,"answer",{enumerable:!0,get:t,set:n});var s=Util.nullValue(e.answer,"");Object.defineProperty(o,"keywords",{enumerable:!0,get:r});var l=Util.nullValue(e.keywords,"");Object.defineProperty(o,"question",{enumerable:!0,get:a});var c=Util.nullValue(e.question,"");Object.defineProperty(o,"visible",{enumerable:!0,get:i});var u=Util.nullValue(e.visible,!0)}function AskTheExpertEntryList(){function e(){a.clear(),i=[]}function t(e,t){return t==AskTheExpertEntryList.SORT_BY_QUESTION&&e>=0&&e<r.count?r.items[i[e]]:a.getItemByIndex(e,t)}function n(e){e==AskTheExpertEntryList.SORT_BY_QUESTION?i=ArrayUtil.sortItemsOn(r.items,"question",ArrayUtil.CASE_INSENSITIVE|ArrayUtil.RETURN_INDEXED_ARRAY):a.sort(e)}var r=this,a={};List.apply(r,arguments),a.clear=r.clear,Object.defineProperty(r,"clear",{value:e}),a.getItemByIndex=r.getItemByIndex,Object.defineProperty(r,"getItemByIndex",{value:t}),a.sort=r.sort,Object.defineProperty(r,"sort",{value:n});var i=[]}function EventDispatcher(){function e(e,t){Util.isSet(i[e])||(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}function t(e){var t=i[e.type];if(Util.isSet(t)){e.target=a;for(var n=t.length,r=0;n>r;r++)t[r](e)}}function n(e,t){var n=i[e];return Util.isSet(n)&&-1!==n.indexOf(t)?!0:!1}function r(e,t){var n=i[e];if(Util.isSet(n))if(Util.isSet(t)){var r=n.indexOf(t);-1!==r&&n.splice(r,1)}else i[e]=null}var a=this,i={};Object.defineProperty(a,"addEventListener",{value:e}),Object.defineProperty(a,"dispatchEvent",{value:t}),Object.defineProperty(a,"hasEventListener",{value:n}),Object.defineProperty(a,"removeEventListener",{value:r})}function Alignment(e,t){function n(){return u}function r(e){u=s(e)}function a(){return d}function i(e){d=l(e)}function o(e){var t=Util.nullValue(e,"");if(""!=t){var n=t.split("-");i(n[0]),r(n[n.length>1?1:0])}}function s(e){if(null!=e){var t=e.toLowerCase();switch(t){case Align.CENTER:case Align.RIGHT:return t}}return Align.LEFT}function l(e){if(null!=e){var t=e.toLowerCase();switch(t){case Align.CENTER:case Align.BOTTOM:return t}}return Align.TOP}var c=this;Object.defineProperty(c,"hAlign",{get:n,set:r});var u=s(t);Object.defineProperty(c,"vAlign",{get:a,set:i});var d=l(e);Object.defineProperty(c,"setAlignment",{value:o})}function Point(e,t){function n(){return c}function r(e){c=e}function a(){return u}function i(e){u=e}function o(e){return Math.sqrt(Math.pow(e.x-c,2)+Math.pow(e.y-u,2))}function s(e){c+=Util.nullValue(e.x,0),u+=Util.nullValue(e.y,0)}var l=this;Object.defineProperty(l,"x",{get:n,set:r});var c=Util.nullValue(e,0);Object.defineProperty(l,"y",{get:a,set:i});var u=Util.nullValue(t,0);Object.defineProperty(l,"distance",{value:o}),Object.defineProperty(l,"offset",{value:s})}function Rectangle(e,t,n,r){function a(){return P}function i(e){P=e}function o(){return I}function s(e){I=e}function l(){return C}function c(e){C=e}function u(){return A}function d(e){A=e}function f(){return N}function p(e){N=e,i(N),c(m_nRight-N)}function E(){return m_nRight}function m(e){m_nRight=e,c(m_nRight-N)}function g(){return m_nTop}function v(e){m_nTop=e,s(m_nTop),d(m_nBottom-m_nTop)}function S(){return m_nBottom}function h(e){m_nBottom=e,d(m_nBottom-m_nTop)}function b(){return new Point(N,m_nTop)}function O(e){v(e.top),p(e.left)}function y(){return new Point(m_nRight,m_nBottom)}function T(e){h(e.bottom),m(e.right)}var U=this;Object.defineProperty(U,"x",{get:a,set:i});var P=Util.nullValue(e,0);Object.defineProperty(U,"y",{get:o,set:s});var I=Util.nullValue(t,0);Object.defineProperty(U,"width",{get:l,set:c});var C=Util.nullValue(n,0);Object.defineProperty(U,"height",{get:u,set:d});var A=Util.nullValue(r,0);Object.defineProperty(U,"left",{get:f,set:p});var N=P;Object.defineProperty(U,"right",{get:E,set:m}),m_nRight=P+C,Object.defineProperty(U,"top",{get:g,set:h}),m_nTop=I,Object.defineProperty(U,"bottom",{get:S,set:h}),m_nBottom=I+A,Object.defineProperty(U,"topLeft",{get:b,set:O}),Object.defineProperty(U,"bottomRight",{get:y,set:T})}function GlossaryEntries(){function e(e){return i.selectItems(GlossaryEntryList.SORT_BY_TERM,new GlossaryEntryListFilter({index:e}))}function t(e){return i.getItemById(e)}function n(){i=r(),i.sort(GlossaryEntryList.SORT_BY_TERM)}function r(){var e=core.manifest.glossary,t=new GlossaryEntryList;if(null!=e){var n=e.entries;if(null!=n){var r=null;for(var i in n)n.hasOwnProperty(i)&&(r=$.extend({id:i},n[i]),ObjectUtil.is(r.definition,Array)&&(r.definition=r.definition.join("")),r.term=StringUtil.parseVars(r.term),r.definition=StringUtil.parseVars(r.definition),r.visible=a(r.visible),t.addItem(new GlossaryEntryListItem(r)))}}return t}function a(e){if(Util.isSet(e))switch(e.constructor){case Boolean:return e;case String:return""===e||StringUtil.evaluate(StringUtil.parseVars(e))===!0}return!0}Object.defineProperty(this,"getEntries",{value:e}),Object.defineProperty(this,"getEntryListItem",{value:t}),Object.defineProperty(this,"init",{value:n});var i=null}function GlossaryEntryListFilter(e){function t(e){if(e.visible&&""!==n){var t=e.term.charAt(0);return"#"===n?!isNaN(Number(t)):t.toLowerCase()===n}return e.visible}Object.defineProperty(this,"select",{value:t});var n=ObjectUtil.is(e.index,String)?e.index.toLowerCase():""}function GlossaryEntryListItem(e){function t(){return s}function n(e){s=e}function r(){return l}function a(){return c}var i=this,o={};ListItem.apply(o,[e.id]),ListItem.apply(i,[e.id]),Object.defineProperty(i,"definition",{get:t,set:n});var s=Util.nullValue(e.definition,"");Object.defineProperty(i,"term",{get:r});var l=Util.nullValue(e.term,"");Object.defineProperty(i,"visible",{enumerable:!0,get:a});var c=Util.nullValue(e.visible,!0)}function GlossaryEntryList(){function e(){a.clear(),i=[]}function t(e,t){return e>=0&&e<r.count?t===GlossaryEntryList.SORT_BY_TERM?r.items[i[e]]:r.items[e]:a.getItemByIndex(e,t)}function n(e){e===GlossaryEntryList.SORT_BY_TERM?i=ArrayUtil.sortItemsOn(r.items,"term",ArrayUtil.CASE_INSENSITIVE|ArrayUtil.RETURN_INDEXED_ARRAY,ArrayUtil.orderedLocale):a.sort(e)}var r=this,a={};List.apply(r,arguments),a.clear=r.clear,Object.defineProperty(r,"clear",{value:e}),a.getItemByIndex=r.getItemByIndex,Object.defineProperty(r,"getItemByIndex",{value:t}),a.sort=r.sort,Object.defineProperty(r,"sort",{value:n});var i=[]}function LmsCourseData(e){function t(){return l}function n(e){l=e}function r(){return o(l)}function a(e){l=i(e)}function i(e){return StringUtil.parseKVP(e)}function o(e){return ObjectUtil.toKVP(e)}var s=this;Object.defineProperty(s,"data",{get:t,set:n});var l={};Object.defineProperty(s,"serializedData",{get:r,set:a}),a(e)}function LmsNone(){function e(){return!1}function t(){return null}function n(){return 0}function r(){return""}function a(){return!1}function i(){return null}function o(){return 0}function s(){return""}function l(){return""}function c(){return""}function u(e){}function d(){return ScormLessonMode.NORMAL}function f(){return ScormLessonStatus.NOT_ATTEMPTED}function p(){return""}function E(){return""}function m(){return""}function g(){return""}function v(){return""}function S(){return!1}function h(){return""}function b(){return""}function O(){return""}function y(){}function T(){return!0}var U=this;EventDispatcher.apply(U,[]),Object.defineProperty(U,"active",{get:e}),Object.defineProperty(U,"assessmentDate",{get:t}),Object.defineProperty(U,"assessmentScore",{get:n}),Object.defineProperty(U,"audioEnabled",{get:r}),Object.defineProperty(U,"completed",{get:a}),Object.defineProperty(U,"courseData",{get:i}),Object.defineProperty(U,"dataLocale",{get:o}),Object.defineProperty(U,"focusOutline",{get:s}),Object.defineProperty(U,"highContrast",{get:l}),Object.defineProperty(U,"lessonLocation",{get:c,set:u}),Object.defineProperty(U,"lessonMode",{get:d}),Object.defineProperty(U,"lessonStatus",{get:f}),Object.defineProperty(U,"policyAccepted",{get:p}),Object.defineProperty(U,"serializedBookmarkedPages",{get:E}),Object.defineProperty(U,"serializedCompletedPages",{get:m}),Object.defineProperty(U,"serializedRecommendedPages",{get:g}),Object.defineProperty(U,"serializedSettings",{get:v}),Object.defineProperty(U,"started",{get:S}),Object.defineProperty(U,"studentId",{get:h}),Object.defineProperty(U,"studentName",{get:b}),Object.defineProperty(U,"videoSubtitles",{get:O}),Object.defineProperty(U,"finish",{value:y}),Object.defineProperty(U,"init",{value:T})}function LmsScorm12(e){function t(){return le.active}function n(){return X}function r(){return W}function a(){return ue.audioEnabled}function i(){return Q}function o(){return ae.data}function s(){return le.dataLocale}function l(){return ue.focusOutline}function c(){return ue.highContrast}function u(){return z}function d(e){z=e}function f(){return Z}function p(){return oe.lessonStatus}function E(){return fe.policyAccepted}function m(){return J}function g(){return ee}function v(){return te}function S(){return ne}function h(){return re}function b(){return de.studentName}function O(){return ue.videoSubtitles}function y(){B(),le.finish()}function T(){se=core.config["override-completion-score"];var t=Util.nullValue(core.config["scorm-version"],"1.2");if(le=new LmsScormProxy(e,this),le.init(t)){if(fe=new ScormSuspendData(N(LmsScorm12.SUSPEND_DATA)),I()){k(),ce=new ScormSessionTime12,re=N(LmsScorm12.STUDENT_ID),de=new LmsStudentName(N(LmsScorm12.STUDENT_NAME)),z=N(LmsScorm12.LESSON_LOCATION),Z=N(LmsScorm12.LESSON_MODE),ie=new ScormEntry(N(LmsScorm12.ENTRY)),oe=new ScormLessonStatus(N(LmsScorm12.LESSON_STATUS)),J=Lms.inflate(fe.bookmarkedPages),ee=Lms.inflate(fe.completedPages),te=Lms.inflate(fe.recommendedPages),ue=new LmsSettings(fe.settings),ae=new LmsCourseData(fe.courseData),Q=oe.completed;var n=$("body");return n.on(PageEvent.BOOKMARK,G),n.on(PageEvent.START,H),core.course.restoreState(),core.addEventListener(CoreEvent.DATA,Y),core.addEventListener(CoreEvent.SETTING,K),core.course.assessment.addEventListener(AssessmentEvent.COMPLETED,F),q.dispatchEvent({type:LmsEvent.INITIALIZATION_SUCCEEDED}),!0}q.dispatchEvent({type:LmsEvent.INCOMPATIBLE_DATA})}else q.dispatchEvent({type:LmsEvent.INITIALIZATION_FAILED});return!1}function U(e,t){var n=function(){if(!core.config["has-assessment"])return ScormLessonStatus.COMPLETED;if(Util.isSet(t))if(core.config["force-scorm-quiz-status"]){if(core.course.assessment.passed)return ScormLessonStatus.PASSED;if(!core.config["enforce-pass-completion"])return ScormLessonStatus.FAILED}else if(!core.config["enforce-pass-completion"]||core.course.assessment.passed)return ScormLessonStatus.COMPLETED;return ScormLessonStatus.INCOMPLETE};return!core.config["enforce-page-completion"]||e?n():ScormLessonStatus.INCOMPLETE}function P(){var e=le.getErrorCode();C(e)&&q.dispatchEvent({type:LmsEvent.UNEXPECTED_ERROR,errorCode:ScormErrorCode12.toString(e)})}function I(){var e=A();if(e){var t=parseInt(fe.compatibilityVersion,10),n=core.config["compatibility-version"];isNaN(t)?fe.compatibilityVersion=n:e=t===n}return e}function C(e){switch(e){case ScormErrorCode12.NO_ERROR:case ScormErrorCode12.NOT_IMPLEMENTED:return!1}return!0}function A(){var e=fe.framework===Core.FRAMEWORK;return e||(""===fe.sessionId||fe.sessionId.indexOf(",")<0)&&(""===fe.completedPages||fe.completedPages.indexOf(".")<0)&&(fe.framework=Core.FRAMEWORK,e=!0),e}function N(e){var t=le.getValue(e);return StringUtil.isEmpty(t)&&P(),t}function L(){fe.timeStamp=(new Date).getTime().toString(Lms.COMPRESSION_RADIX),j(),w(),le.save()||q.dispatchEvent({type:LmsEvent.UNEXPECTED_ERROR,errorCode:ErrorCode.LMS_SAVE_FAILED})}function _(e,t){le.setValue(e,t)||P()}function D(){_(LmsScorm12.LESSON_LOCATION,z)}function R(){_(LmsScorm12.LESSON_STATUS,oe.lessonStatus)}function M(){_(LmsScorm12.SCORE_MAX,String(Assessment.MAXIMUM_SCORE))}function x(){_(LmsScorm12.SCORE_MIN,String(Assessment.MINIMUM_SCORE))}function V(){var e=String(W);se&&(e=core.course.assessment.passed?String(Assessment.MAXIMUM_SCORE):""),_(LmsScorm12.SCORE_RAW,e)}function w(){_(LmsScorm12.SESSION_TIME,ce.duration)}function j(){_(LmsScorm12.SUSPEND_DATA,fe.serializedData)}function B(){var e=function(e){e.isPageNode&&(ee+=BooleanUtil.toBinStr(e.completed),e.mandatory&&(Q=Q&&e.completed))},t=core.course.currentPage;z=Util.isSet(t)&&t.allowBookmark?t.id:"course-menu",ee="",Q=!0,core.course.root.forEachChild(e),fe.completedPages=Lms.deflate(ee),oe.lessonStatus=U(Q,X),D(),j(),R(),L()}function k(){X=StringUtil.toDate(fe.assessmentDate),core.course.assessment.date=X,StringUtil.isEmpty(fe.assessmentScore)&&(fe.assessmentScore=N(LmsScorm12.SCORE_RAW)),W=StringUtil.isEmpty(fe.assessmentScore)?-1:parseInt(fe.assessmentScore),W>-1&&(core.course.assessment.score=W,V())}function F(e){var t=function(e){e.isPageNode&&(te+=BooleanUtil.toBinStr(e.recommended))},n=e.target;X=n.date,W=n.score,te="",core.course.root.forEachChild(t),fe.recommendedPages=Lms.deflate(te),fe.assessmentDate=DateUtil.toString(X),fe.assessmentScore=String(W),oe.lessonStatus=U(Q,X),j(),R(),M(),x(),V(),L()}function G(e){var t=function(e){e.isPageNode&&(J+=BooleanUtil.toBinStr(e.bookmarked))};J="",core.course.root.forEachChild(t),fe.bookmarkedPages=Lms.deflate(J),j(),L()}function H(){B()}function Y(e){"policy-accepted"===e.property?fe.policyAccepted=BooleanUtil.toBinStr(e.value):(ae.data[e.property]=e.value,fe.courseData=ae.serializedData),j(),L()}function K(e){"audio-enabled"===e.property?ue.audioEnabled=BooleanUtil.toBinStr(e.value):"focus-outline"===e.property?ue.focusOutline=BooleanUtil.toBinStr(e.value):"high-contrast"===e.property?ue.highContrast=e.value.toString():"video-subtitles"===e.property&&(ue.videoSubtitles=BooleanUtil.toBinStr(e.value)),fe.settings=ue.serializedData,j(),L()}var q=this;EventDispatcher.apply(q,[]),Object.defineProperty(q,"active",{get:t}),Object.defineProperty(q,"assessmentDate",{get:n});var X=null;Object.defineProperty(q,"assessmentScore",{get:r});var W=-1;Object.defineProperty(q,"audioEnabled",{get:a}),Object.defineProperty(q,"completed",{get:i});var Q=!1;Object.defineProperty(q,"courseData",{get:o}),Object.defineProperty(q,"dataLocale",{get:s}),Object.defineProperty(q,"focusOutline",{get:l}),Object.defineProperty(q,"highContrast",{get:c}),Object.defineProperty(q,"lessonLocation",{get:u,set:d});var z="";Object.defineProperty(q,"lessonMode",{get:f});var Z=ScormLessonMode.NORMAL;Object.defineProperty(q,"lessonStatus",{get:p}),Object.defineProperty(q,"policyAccepted",{get:E}),Object.defineProperty(q,"serializedBookmarkedPages",{get:m});var J="";Object.defineProperty(q,"serializedCompletedPages",{get:g});var ee="";Object.defineProperty(q,"serializedRecommendedPages",{get:v});var te="";Object.defineProperty(q,"serializedSettings",{get:S});var ne="";Object.defineProperty(q,"studentId",{get:h});var re="";Object.defineProperty(q,"studentName",{get:b}),Object.defineProperty(q,"videoSubtitles",{get:O}),Object.defineProperty(q,"finish",{value:y}),Object.defineProperty(q,"init",{value:T});var ae=null,ie=null,oe=null,se=!1,le=null,ce=null,ue=null,de=null,fe=null}function LmsScorm2004(e){function t(){return ue.active}function n(){return Q}function r(){return z}function a(){return fe.audioEnabled}function i(){return Z}function o(){return se.data}function s(){return ue.dataLocale}function l(){return fe.focusOutline}function c(){return fe.highContrast}function u(){return J}function d(e){J=e}function f(){return ee}function p(){return oe.completionStatus}function E(){return me.policyAccepted}function m(){return te}function g(){return ne}function v(){return re}function S(){return ae}function h(){return ie}function b(){return pe.studentName}function O(){return fe.videoSubtitles}function y(){F(),ue.finish()}function T(){ce=core.config["override-completion-score"];var t=Util.nullValue(core.config["scorm-version"],"1.2");if(ue=new LmsScormProxy(e,this),ue.init(t)){if(le=new ScormEntry(L(LmsScorm2004.ENTRY)),le.entry===ScormEntry.AB_INITIO&&(D(LmsScorm2004.LESSON_LOCATION,""),D(LmsScorm2004.SCORE_RAW,String(Assessment.MINIMUM_SCORE)),D(LmsScorm2004.SUSPEND_DATA,"")),me=new ScormSuspendData(L(LmsScorm2004.SUSPEND_DATA)),C()){G(),de=new ScormSessionTime2004,ie=L(LmsScorm2004.STUDENT_ID),pe=new LmsStudentName(L(LmsScorm2004.STUDENT_NAME)),J=L(LmsScorm2004.LESSON_LOCATION),ee=L(LmsScorm2004.LESSON_MODE),oe=new ScormCompletionStatus(L(LmsScorm2004.COMPLETION_STATUS)),Ee=new ScormCompletionStatus(L(LmsScorm2004.SUCCESS_STATUS)),te=Lms.inflate(me.bookmarkedPages),ne=Lms.inflate(me.completedPages),re=Lms.inflate(me.recommendedPages),fe=new LmsSettings(me.settings),se=new LmsCourseData(me.courseData),Z=oe.completed;var n=$("body");return n.on(PageEvent.BOOKMARK,Y),n.on(PageEvent.START,K),core.course.restoreState(),core.addEventListener(CoreEvent.DATA,q),core.addEventListener(CoreEvent.SETTING,X),core.course.assessment.addEventListener(AssessmentEvent.COMPLETED,H),W.dispatchEvent({type:LmsEvent.INITIALIZATION_SUCCEEDED}),!0}W.dispatchEvent({type:LmsEvent.INCOMPATIBLE_DATA})}else W.dispatchEvent({type:LmsEvent.INITIALIZATION_FAILED});return!1}function U(e,t){var n=function(){return core.config["has-assessment"]&&(!Util.isSet(t)||core.config["enforce-pass-completion"]&&!core.course.assessment.passed)?ScormCompletionStatus.INCOMPLETE:ScormCompletionStatus.COMPLETED};return!core.config["enforce-page-completion"]||e?n():ScormCompletionStatus.INCOMPLETE}function P(e,t){return core.config["has-assessment"]&&Util.isSet(t)?core.course.assessment.passed?ScormSuccessStatus.PASSED:ScormSuccessStatus.FAILED:ScormSuccessStatus.UNKNOWN}function I(){var e=ue.getErrorCode();A(e)&&W.dispatchEvent({type:LmsEvent.UNEXPECTED_ERROR,errorCode:ScormErrorCode2004.toString(e)})}function C(){var e=N();if(e){var t=parseInt(me.compatibilityVersion,10),n=core.config["compatibility-version"];isNaN(t)?me.compatibilityVersion=n:e=t===n}return e}function A(e){switch(e){case ScormErrorCode2004.NO_ERROR:case ScormErrorCode2004.NOT_IMPLEMENTED:case ScormErrorCode2004.VALUE_NOT_INITIALIZED:return!1}return!0}function N(){var e=me.framework===Core.FRAMEWORK;return e||(""===me.sessionId||me.sessionId.indexOf(",")<0)&&(""===me.completedPages||me.completedPages.indexOf(".")<0)&&(me.framework=Core.FRAMEWORK,e=!0),e}function L(e){var t=ue.getValue(e);return StringUtil.isEmpty(t)&&I(),t}function _(){me.timeStamp=(new Date).getTime().toString(Lms.COMPRESSION_RADIX),k(),j(),ue.save()||W.dispatchEvent({type:LmsEvent.UNEXPECTED_ERROR,errorCode:ErrorCode.LMS_SAVE_FAILED})}function D(e,t){ue.setValue(e,t)||I()}function R(){D(LmsScorm2004.COMPLETION_STATUS,oe.completionStatus)}function M(){D(LmsScorm2004.LESSON_LOCATION,J)}function x(){D(LmsScorm2004.SCORE_MAX,String(Assessment.MAXIMUM_SCORE))}function V(){D(LmsScorm2004.SCORE_MIN,String(Assessment.MINIMUM_SCORE))}function w(){var e=String(z);ce&&(e=core.course.assessment.passed?String(Assessment.MAXIMUM_SCORE):""),D(LmsScorm2004.SCORE_RAW,e)}function j(){D(LmsScorm2004.SESSION_TIME,de.duration)}function B(){D(LmsScorm2004.SUCCESS_STATUS,Ee.successStatus)}function k(){D(LmsScorm2004.SUSPEND_DATA,me.serializedData)}function F(){var e=function(e){e.isPageNode&&(ne+=BooleanUtil.toBinStr(e.completed),e.mandatory&&(Z=Z&&e.completed))},t=core.course.currentPage;J=Util.isSet(t)&&t.allowBookmark?t.id:"course-menu",ne="",Z=!0,core.course.root.forEachChild(e),me.completedPages=Lms.deflate(ne),oe.completionStatus=U(Z,Q),M(),k(),R(),_()}function G(){Q=StringUtil.toDate(me.assessmentDate),core.course.assessment.date=Q,StringUtil.isEmpty(me.assessmentScore)&&(me.assessmentScore=L(LmsScorm2004.SCORE_RAW)),z=StringUtil.isEmpty(me.assessmentScore)?-1:parseInt(me.assessmentScore),z>-1&&(core.course.assessment.score=z,w())}function H(e){var t=function(e){e.isPageNode&&(re+=BooleanUtil.toBinStr(e.recommended))},n=e.target;Q=n.date,z=n.score,re="",core.course.root.forEachChild(t),me.recommendedPages=Lms.deflate(re),me.assessmentDate=DateUtil.toString(Q),me.assessmentScore=String(z),oe.completionStatus=U(Z,Q),Ee.successStatus=P(Z,Q),k(),R(),B(),x(),V(),w(),_()}function Y(e){var t=function(e){e.isPageNode&&(te+=BooleanUtil.toBinStr(e.bookmarked))};te="",core.course.root.forEachChild(t),me.bookmarkedPages=Lms.deflate(te),k(),_()}function K(){F()}function q(e){"policy-accepted"===e.property?me.policyAccepted=BooleanUtil.toBinStr(e.value):(se.data[e.property]=e.value,me.courseData=se.serializedData),k(),_()}function X(e){"audio-enabled"===e.property?fe.audioEnabled=BooleanUtil.toBinStr(e.value):"focus-outline"===e.property?fe.focusOutline=BooleanUtil.toBinStr(e.value):"high-contrast"===e.property?fe.highContrast=e.value.toString():"video-subtitles"===e.property&&(fe.videoSubtitles=BooleanUtil.toBinStr(e.value)),me.settings=fe.serializedData,k(),_()}var W=this;EventDispatcher.apply(W,[]),Object.defineProperty(W,"active",{get:t}),Object.defineProperty(W,"assessmentDate",{get:n});var Q=null;Object.defineProperty(W,"assessmentScore",{get:r});var z=-1;Object.defineProperty(W,"audioEnabled",{get:a}),Object.defineProperty(W,"completed",{get:i});var Z=!1;Object.defineProperty(W,"courseData",{get:o}),Object.defineProperty(W,"dataLocale",{get:s}),Object.defineProperty(W,"focusOutline",{get:l}),Object.defineProperty(W,"highContrast",{get:c}),Object.defineProperty(W,"lessonLocation",{get:u,set:d});var J="";Object.defineProperty(W,"lessonMode",{get:f});var ee=ScormLessonMode.NORMAL;Object.defineProperty(W,"lessonStatus",{get:p}),Object.defineProperty(W,"policyAccepted",{get:E}),Object.defineProperty(W,"serializedBookmarkedPages",{get:m});var te="";Object.defineProperty(W,"serializedCompletedPages",{get:g});var ne="";Object.defineProperty(W,"serializedRecommendedPages",{get:v});var re="";Object.defineProperty(W,"serializedSettings",{get:S});var ae="";Object.defineProperty(W,"studentId",{get:h});var ie="";Object.defineProperty(W,"studentName",{get:b}),Object.defineProperty(W,"videoSubtitles",{get:O}),Object.defineProperty(W,"finish",{value:y}),Object.defineProperty(W,"init",{value:T});var oe=null,se=null,le=null,ce=!1,ue=null,de=null,fe=null,pe=null,Ee=null,me=null}function LmsScormProxy(e,t){function n(){var e=g?m.active:!1;return v?pipwerks.SCORM.connection.isActive:e}function r(){return E}function a(){v&&pipwerks.SCORM.quit()}function i(){return v?pipwerks.SCORM.debug.getCode():0}function o(e){var t=g?Util.nullValue(b[e],""):"";return v?pipwerks.SCORM.get(e):t}function s(e){pipwerks.SCORM.version=e;var n=(E&LmsScormProxy.LOCAL)>0;g=n&&m.init();var r=(E&LmsScormProxy.REMOTE)>0;v=r&&pipwerks.SCORM.init();var a=!(v!==r||g!==n);if(a&&g)if(S=f(),h=u(S),v){var i="_"+pipwerks.SCORM.get(t.constructor.STUDENT_ID),o=new ScormSuspendData(pipwerks.SCORM.get(t.constructor.SUSPEND_DATA)),s=h[i];b=Util.nullValue(d(s,o.sessionId,o.timeStamp),{}),s={},o.sessionId=(new Date).getTime().toString(Lms.COMPRESSION_RADIX),s["_"+o.sessionId]=b,h[i]=s,c(t.constructor.SUSPEND_DATA,o.serializedData),l()}else b=h;return a}function l(){var e=g&&m.setValue(S,JSON.stringify(h));return v?pipwerks.SCORM.save():e}function c(e,t){return g&&(b[e]=t),v?pipwerks.SCORM.set(e,t):!0}function u(e){var t=StringUtil.isEmpty(e)?"":m.getValue(e);return StringUtil.isEmpty(t)?{}:JSON.parse(t)}function d(e,n,r){if(Util.isSet(e)&&!StringUtil.isEmpty(n)&&!StringUtil.isEmpty(r)){var a=e["_"+n];if(Util.isSet(a)){var i=new ScormSuspendData(a[t.constructor.SUSPEND_DATA]),o=parseInt(i.timeStamp,Lms.COMPRESSION_RADIX),s=parseInt(r,Lms.COMPRESSION_RADIX);if(o>=s){if(o>s)for(var l in a)a.hasOwnProperty(l)&&pipwerks.SCORM.set(l,a[l]);return a}}}return null}function f(){var e=[core.course.root.id,core.config["compatibility-version"]];return v&&e.push("h"),e.join("/")}var p=this;Object.defineProperty(p,"active",{get:n}),Object.defineProperty(p,"dataLocale",{get:r});var E=e;Object.defineProperty(p,"finish",{value:a}),Object.defineProperty(p,"getErrorCode",{value:i}),Object.defineProperty(p,"getValue",{value:o}),Object.defineProperty(p,"init",{value:s}),Object.defineProperty(p,"save",{value:l}),Object.defineProperty(p,"setValue",{value:c});var m=new LocalData,g=!1,v=!1,S="",h=null,b=null}function LmsSettings(e){function t(){return Util.nullValue(g[LmsSettings.AUDIO_ENABLED],"")}function n(e){g[LmsSettings.AUDIO_ENABLED]=e}function r(){return g}function a(e){g=e}function i(){return Util.nullValue(g[LmsSettings.FOCUS_OUTLINE],"")}function o(e){g[LmsSettings.FOCUS_OUTLINE]=e}function s(){return Util.nullValue(g[LmsSettings.HIGH_CONTRAST],"")}function l(e){g[LmsSettings.HIGH_CONTRAST]=e}function c(){return E(g)}function u(e){g=p(e)}function d(){return Util.nullValue(g[LmsSettings.VIDEO_SUBTITLES],"")}function f(e){g[LmsSettings.VIDEO_SUBTITLES]=e}function p(e){return StringUtil.isEmpty(e)?[]:e.split(Lms.FIELD_DELIMITER)}function E(e){return e.join(Lms.FIELD_DELIMITER)}var m=this;Object.defineProperty(m,"audioEnabled",{get:t,set:n}),Object.defineProperty(m,"data",{get:r,set:a});var g=[];Object.defineProperty(m,"focusOutline",{get:i,set:o}),Object.defineProperty(m,"highContrast",{get:s,set:l}),Object.defineProperty(m,"serializedData",{get:c,set:u}),Object.defineProperty(m,"videoSubtitles",{get:d,set:f}),u(e)}function LmsStudentName(e){function t(){return Util.nullValue(o[LmsStudentName.FIRST_NAME],"")}function n(){return Util.nullValue(o[LmsStudentName.LAST_NAME],"")}function r(){return 2===o.length?t()+" "+n():""}function a(e){return StringUtil.isEmpty(e)?[]:e.split(/\s*,\s*/)}var i=this;Object.defineProperty(i,"firstName",{get:t}),Object.defineProperty(i,"lastName",{get:n}),Object.defineProperty(i,"studentName",{get:r});var o=a(e)}function Lms(){function e(){return I.active}function t(){return I.assessmentDate}function n(){return I.assessmentScore}function r(){return I.audioEnabled}function a(){return I.completed}function i(){return I.courseData}function o(){return I.dataLocale}function s(){return I.focusOutline}function l(){return I.highContrast}function c(){return I.lessonLocation}function u(){return I.lessonStatus}function d(){return I.policyAccepted}function f(){return I.serializedBookmarkedPages}function p(){return I.serializedCompletedPages}function E(){return I.serializedRecommendedPages}function m(){return I.serializedSettings}function g(){return I.studentId}function v(){return core.config.evaluation?"Sample Learner":I.studentName}function S(){return I.videoSubtitles}function h(){I.finish()}function b(){return I=O(core.config.lms),Util.isSet(I)?(I.addEventListener(LmsEvent.INCOMPATIBLE_DATA,y),I.addEventListener(LmsEvent.INITIALIZATION_FAILED,T),I.addEventListener(LmsEvent.UNEXPECTED_ERROR,U),I.init()):(P.dispatchEvent({type:LmsEvent.INVALID_SCORM_VERSION}),!1)}function O(e){var t=function(){switch(e.toLowerCase()){case"local":return LmsScormProxy.LOCAL;case"scorm":return LmsScormProxy.REMOTE;case"scorm-hybrid":return LmsScormProxy.REMOTE|LmsScormProxy.LOCAL}return LmsScormProxy.NONE},n=function(e,t){var n=String(Util.nullValue(e,"1.2"));switch(n){case"1.2":return new LmsScorm12(t);case"2004":return new LmsScorm2004(t)}return null},r=t();return r>0?n(core.config["scorm-version"],r):new LmsNone}function y(e){P.dispatchEvent(e)}function T(e){P.dispatchEvent(e)}function U(e){P.dispatchEvent(e)}var P=this;EventDispatcher.apply(P,[]),Object.defineProperty(P,"active",{get:e}),Object.defineProperty(P,"assessmentDate",{get:t}),Object.defineProperty(P,"assessmentScore",{get:n}),Object.defineProperty(P,"audioEnabled",{get:r}),Object.defineProperty(P,"completed",{get:a}),Object.defineProperty(P,"courseData",{get:i}),Object.defineProperty(P,"dataLocale",{get:o}),Object.defineProperty(P,"focusOutline",{get:s}),Object.defineProperty(P,"highContrast",{get:l}),Object.defineProperty(P,"lessonLocation",{get:c}),Object.defineProperty(P,"lessonStatus",{get:u}),Object.defineProperty(P,"policyAccepted",{get:d}),Object.defineProperty(P,"serializedBookmarkedPages",{get:f}),Object.defineProperty(P,"serializedCompletedPages",{get:p}),Object.defineProperty(P,"serializedRecommendedPages",{get:E}),Object.defineProperty(P,"serializedSettings",{get:m}),Object.defineProperty(P,"studentId",{get:g}),Object.defineProperty(P,"studentName",{get:v}),Object.defineProperty(P,"videoSubtitles",{get:S}),Object.defineProperty(P,"finish",{value:h}),Object.defineProperty(P,"init",{value:b});var I=null}function LocalData(){function e(){return i}function t(e){return i?Util.nullValue(localStorage[e],""):""}function n(){var e="localStorage";return i=e in window&&null!==window[e]}function r(e,t){return i&&(localStorage[e]=t),i}var a=this;Object.defineProperty(a,"active",{get:e});var i=!1;Object.defineProperty(a,"getValue",{value:t}),Object.defineProperty(a,"init",{value:n}),Object.defineProperty(a,"setValue",{value:r})}function ScormCompletionStatus(e){function t(){return i===ScormCompletionStatus.COMPLETED}function n(){return i}function r(e){switch(e){case ScormCompletionStatus.NOT_ATTEMPTED:case ScormCompletionStatus.INCOMPLETE:case ScormCompletionStatus.COMPLETED:case ScormCompletionStatus.UNKNOWN:i=e}}var a=this;Object.defineProperty(a,"completed",{get:t}),Object.defineProperty(a,"completionStatus",{get:n,set:r});var i=ScormCompletionStatus.NOT_ATTEMPTED;r(e)}function ScormEntry(e){function t(){return r}var n=this;Object.defineProperty(n,"entry",{get:t});var r=e}function ScormLessonStatus(e){function t(){switch(i){case ScormLessonStatus.COMPLETED:case ScormLessonStatus.FAILED:case ScormLessonStatus.PASSED:return!0}return!1}function n(){return i}function r(e){switch(e){case ScormLessonStatus.NOT_ATTEMPTED:case ScormLessonStatus.BROWSED:case ScormLessonStatus.INCOMPLETE:case ScormLessonStatus.COMPLETED:case ScormLessonStatus.FAILED:case ScormLessonStatus.PASSED:i=e}}var a=this;Object.defineProperty(a,"completed",{get:t}),Object.defineProperty(a,"lessonStatus",{get:n,set:r});var i=ScormLessonStatus.NOT_ATTEMPTED;r(e)}function ScormSessionTime12(){function e(){var e=Date.now(),r=Math.max(e-l,0),c=t(Math.round(.1*r),o),u=n(Math.min(c.quotient,s),ScormSessionTime12.HOURS_DIGITS),d=t(c.remainder,i),f=n(d.quotient,ScormSessionTime12.MINUTES_DIGITS),p=t(d.remainder,a),E=n(p.quotient,ScormSessionTime12.SECONDS_DIGITS),m=n(p.remainder,ScormSessionTime12.DECIMAL_DIGITS);return u+":"+f+":"+E+"."+m}function t(e,t){return{quotient:Math.floor(e/t),remainder:e%t}}function n(e,t){var n=Math.pow(10,Math.min(t,16));
return n>e?String(n+e).substr(1):String(n-1)}var r=this;Object.defineProperty(r,"duration",{get:e});var a=100,i=60*a,o=60*i,s=Math.pow(10,ScormSessionTime12.HOURS_DIGITS)-1,l=Date.now()}function ScormSessionTime2004(){function e(){var e=Date.now(),n=Math.max(e-o,0),s=t(Math.round(.1*n),i),l=t(s.remainder,a),c=s.quotient>0?s.quotient+"H":"";if(c+=l.quotient>0?l.quotient+"M":"",l.remainder>0){var u=t(l.remainder,r);c+=u.quotient+(u.remainder>0?"."+u.remainder:"")+"S"}return"PT"+c}function t(e,t){return{quotient:Math.floor(e/t),remainder:e%t}}var n=this;Object.defineProperty(n,"duration",{get:e});var r=100,a=60*r,i=60*a,o=Date.now()}function ScormSuccessStatus(e){function t(){return i===ScormSuccessStatus.PASSED}function n(){return i}function r(e){switch(e){case ScormSuccessStatus.PASSED:case ScormSuccessStatus.FAILED:case ScormSuccessStatus.UNKNOWN:i=e}}var a=this;Object.defineProperty(a,"passed",{get:t}),Object.defineProperty(a,"successStatus",{get:n,set:r});var i=ScormSuccessStatus.UNKNOWN;r(e)}function ScormSuspendData(e){function t(){return Util.nullValue(D[ScormSuspendData.ASSESSMENT_DATE],"")}function n(e){D[ScormSuspendData.ASSESSMENT_DATE]=e}function r(){return Util.nullValue(D[ScormSuspendData.ASSESSMENT_SCORE],"")}function a(e){D[ScormSuspendData.ASSESSMENT_SCORE]=e}function i(){return Util.nullValue(D[ScormSuspendData.BOOKMARKED_PAGES],"")}function o(e){D[ScormSuspendData.BOOKMARKED_PAGES]=e}function s(){return Util.nullValue(D[ScormSuspendData.COMPATIBILITY_VERSION],"")}function l(e){D[ScormSuspendData.COMPATIBILITY_VERSION]=e}function c(){return Util.nullValue(D[ScormSuspendData.COMPLETED_PAGES],"")}function u(e){D[ScormSuspendData.COMPLETED_PAGES]=e}function d(){return Util.nullValue(D[ScormSuspendData.COURSE_DATA],"")}function f(e){D[ScormSuspendData.COURSE_DATA]=e}function p(){return D}function E(e){D=e}function m(){return Util.nullValue(D[ScormSuspendData.FRAMEWORK],"")}function g(e){D[ScormSuspendData.FRAMEWORK]=e}function v(){return Util.nullValue(D[ScormSuspendData.POLICY_ACCEPTED],"")}function S(e){D[ScormSuspendData.POLICY_ACCEPTED]=e}function h(){return Util.nullValue(D[ScormSuspendData.RECOMMENDED_PAGES],"")}function b(e){D[ScormSuspendData.RECOMMENDED_PAGES]=e}function O(){return L(D)}function y(e){D=N(e)}function T(){return Util.nullValue(D[ScormSuspendData.SESSION_ID],"")}function U(e){D[ScormSuspendData.SESSION_ID]=e}function P(){return Util.nullValue(D[ScormSuspendData.SETTINGS],"")}function I(e){D[ScormSuspendData.SETTINGS]=e}function C(){return Util.nullValue(D[ScormSuspendData.TIME_STAMP],"")}function A(e){D[ScormSuspendData.TIME_STAMP]=e}function N(e){return StringUtil.isEmpty(e)?[]:e.split(Lms.RECORD_DELIMITER)}function L(e){return e.join(Lms.RECORD_DELIMITER)}var _=this;Object.defineProperty(_,"assessmentDate",{get:t,set:n}),Object.defineProperty(_,"assessmentScore",{get:r,set:a}),Object.defineProperty(_,"bookmarkedPages",{get:i,set:o}),Object.defineProperty(_,"compatibilityVersion",{get:s,set:l}),Object.defineProperty(_,"completedPages",{get:c,set:u}),Object.defineProperty(_,"courseData",{get:d,set:f}),Object.defineProperty(_,"data",{get:p,set:E});var D=[];Object.defineProperty(_,"framework",{get:m,set:g}),Object.defineProperty(_,"policyAccepted",{get:v,set:S}),Object.defineProperty(_,"recommendedPages",{get:h,set:b}),Object.defineProperty(_,"serializedData",{get:O,set:y}),Object.defineProperty(_,"sessionId",{get:T,set:U}),Object.defineProperty(_,"settings",{get:P,set:I}),Object.defineProperty(_,"timeStamp",{get:C,set:A}),y(e)}function AssessmentGroupNode(e){function t(){return a}function n(){return i}var r=this;AssessmentResourceNode.apply(r,arguments),Object.defineProperty(r,"randomize",{enumerable:!0,get:t});var a=Util.nullValue(e.randomize,!1);Object.defineProperty(r,"selectCount",{enumerable:!0,get:n});var i=Util.nullValue(e.selectCount,-1)}function AssessmentQuestionNode(e){function t(){return l}function n(e){l=e}function r(){return c}function a(e){c=e}function i(){return u}function o(){return l>0?c/l:0}var s=this;AssessmentResourceNode.apply(s,arguments),Object.defineProperty(s,"availableMarks",{get:t,set:n});var l=Util.nullValue(e.availableMarks,0);Object.defineProperty(s,"marks",{get:r,set:a});var c=Util.nullValue(e.marks,-1);Object.defineProperty(s,"pageNode",{get:i});var u=e.pageNode;Object.defineProperty(s,"score",{get:o})}function AssessmentResourceNode(e){function t(){return a}function n(){return i}var r=this;Node.apply(r,[e.id]),Object.defineProperty(r,"relative",{enumerable:!0,get:t});var a=Util.nullValue(e.relative,[]);Object.defineProperty(r,"visible",{enumerable:!0,get:n});var i=Util.nullValue(e.visible,!0)}function Assessment(e){function t(){return Util.isSet(M)}function n(){return Util.isSet(I)}function r(){return P.active?!M.hasNext():!1}function a(){var e=core.config["enforce-pass-completion"]?P.passed:P.attempted;return!core.config["has-assessment"]||e}function i(){return I}function o(e){I=e}function s(){return C}function l(){return N>=c()}function c(){return C?A:0}function u(){return N}function d(e){N=e}function f(){return P.active?M.count:0}function p(){return P.active?M.currentItem.id:""}function E(){return P.active?M.currentIndex+1:0}function m(){M=null}function g(){var e=y();I=new Date,N=e.score,U(core.course.root,e.recommended),(D===RecordAssessmentResult.LATEST_ATTEMPT||e.score>core.lms.assessmentScore)&&P.dispatchEvent({type:AssessmentEvent.COMPLETED}),core.log({s:N})}function v(){var e=M.moveNext();return e.marks=-1,e}function S(){M=b();var e=M.moveFirst();return e.marks=-1,e}function h(e,t){if(e.constructor===AssessmentQuestionNode)t.addItem(e);else for(var n=L||e.selectCount<0?e.childCount:e.selectCount,r=e.randomize?List.SORT_RANDOMLY:List.UNSORTED,a=e.selectChildren(r),i=a.moveFirst();Util.isSet(i)&&a.currentIndex<n;)h(i,t),i=a.moveNext();return t}function b(){var e=h(R,new List),t=_?List.SORT_RANDOMLY:List.UNSORTED;return e.selectItems(t)}function O(e,t){var n=function(t,n,r){var a=e.id===t;return a&&r.splice(n,1),a};return t.constructor===Array?t.length>0&&t.some(n):t}function y(){for(var e=M.moveFirst(),t={current:0,available:0},n=[],r={};Util.isSet(e);)e.marks<e.availableMarks&&(n=ArrayUtil.removeDuplicates(n.concat(e.relative))),t.current+=e.marks,t.available+=e.availableMarks,e=M.moveNext();return r.score=t.available>0?Math.round(t.current/t.available*100):0,r.recommended=n,r}function T(){C=core.config["has-assessment-pass-mark"],A=core.config["assessment-pass-mark"],A=NumberUtil.constrain(A,Assessment.MINIMUM_SCORE,Assessment.MAXIMUM_SCORE),L=core.config["show-all-assessment-questions"],D=core.config["record-assessment-result"]}function U(e,t){var n=O(e,t);e.isPageNode&&(e.recommended=n);for(var r=e.selectChildren(),a=r.moveFirst();Util.isSet(a);)U(a,n?n:t),a=r.moveNext()}var P=this;EventDispatcher.apply(P,[]),Object.defineProperty(P,"active",{get:t}),Object.defineProperty(P,"attempted",{get:n}),Object.defineProperty(P,"completed",{get:r}),Object.defineProperty(P,"completion",{get:a}),Object.defineProperty(P,"date",{get:i,set:o});var I=null;Object.defineProperty(P,"hasPassMark",{get:s});var C=!0;Object.defineProperty(P,"passed",{get:l}),Object.defineProperty(P,"passMark",{get:c});var A=0;Object.defineProperty(P,"score",{get:u,set:d});var N=-1;Object.defineProperty(P,"questionCount",{get:f}),Object.defineProperty(P,"questionId",{get:p}),Object.defineProperty(P,"questionNumber",{get:E}),Object.defineProperty(P,"cancel",{value:m}),Object.defineProperty(P,"finish",{value:g}),Object.defineProperty(P,"nextQuestion",{value:v}),Object.defineProperty(P,"start",{value:S});var L=!1,_=Util.nullValue(e.randomize,!1),D="",R=e.rootNode,M=null;T()}function Assets(){function e(){return l}function t(e){c=ObjectUtil.toArray(e),i()}function n(e){switch(e.toLowerCase()){case"svg":return new HtmlLoader;case"js":case"json":return new JSONLoader;case"xml":return new XMLLoader}return null}function r(e){var t=e.value,r=n(t.slice(t.lastIndexOf(".")+1));Util.isSet(r)?(u=e.property,r.addEventListener(LoadEvent.LOADED,o),r.load(t)):(console.warn('Unrecognised asset file "'+t+'".'),i())}function a(){s.dispatchEvent({type:LoadEvent.LOADED,success:!0})}function i(){var e=c.shift();Util.isSet(e)?r(e):a()}function o(e){e.success&&(l[u]=e.target.constructor===XMLLoader?e.data.documentElement:e.data),i()}var s=this;EventDispatcher.apply(s,[]),Object.defineProperty(s,"data",{get:e});var l={};Object.defineProperty(s,"init",{value:t});var c=null,u=""}function AudioQueue(e){function t(e){o.push(e),s.prop("paused")&&0===s.prop("currentTime")&&r()}function n(){s.call("stop"),o=[]}function r(){o.length>0&&(s.call("load",o.shift()),s.call("play"))}function a(e){s.call("stop"),r()}var i=this;Object.defineProperty(i,"play",{value:t}),Object.defineProperty(i,"stop",{value:n});var o=[],s=e;s.on(MediaEvent.ENDED,a)}function Certificate(e){function t(){var t=core.config["learnforge-server"];if(!StringUtil.isEmpty(t)){var n={data:{a:Crypto.encrypt(JSON.stringify(e)),l:core.config.licence},dataType:"json",method:"POST",url:t+"/certificates"};s=window.open("certificate/certificate.html","certificate-window");var r=$.ajax(n);r.done(a),r.fail(i)}}function n(e){s.certificateError(Util.nullValue(e,""))}function r(){try{s.certificateLoaded()}catch(e){}}function a(e){Util.isSet(s)&&(e.valid?(s.location.replace(e.url),setTimeout(r,1e3)):n(e.msg))}function i(){n()}var o=this;Object.defineProperty(o,"generate",{value:t});var s=null}function Core(){function e(){return Te}function t(){return Ue}function n(){return Pe}function r(){return Ie}function a(){return Ce}function i(){return Ae}function o(){return Ne}function s(){return Le}function l(){return _e}function c(){return De}function u(){return Re}function d(){return Me}function f(){return xe}function p(){return Ve}function E(){return we.call("getScale")}function m(){return we}function g(){var e=function(){switch(De.lessonStatus){case ScormLessonStatus.COMPLETED:case ScormLessonStatus.PASSED:return!0}return!1};if(Be=!Ie["allow-revisit"]&&e()){q(!1,!0);var t=core.manifest.player["message-box"].completed,n=[Button.EXIT],r=t["text-no-certificate"];Ie["has-certificate"]&&(n=[Button.PRINT,Button.EXIT],r=t["text-certificate"]);var a={buttons:n,closeDialog:{print:!1},cssClass:"dialog completed-dialog",icon:MessageBoxIcon.INFORMATION,text:r,title:t.title},i=MessageBox.generate(a);i.on(DialogEvent.RESPONSE,ae),i.appendTo(we)}return Be}function v(e){P(!1);var t=je;Util.isSet(we)&&(q(!1,!0),t=we),Ge.remove();var n=Util.nullValue(e,{}),r=StringUtil.empty(n.manifestId,"error"),a=core.manifest.player["message-box"][r],i={},o=[];Util.isSet(window.opener)&&o.push(Button.CLOSE);var s={buttons:o,closeDialog:i,cssClass:n.cssClass,icon:MessageBoxIcon.ERROR,param:{errorCode:n.errorCode},text:StringUtil.empty(n.text,a.text),title:StringUtil.empty(n.title,a.title)},l=MessageBox.generate(s);l.on(DialogEvent.RESPONSE,le),l.appendTo(t)}function S(){if(!Be){Pe.call("stop"),q(!1,!0);var e=core.manifest.player["message-box"].exit,t={buttons:[MessageBoxButton.YES,MessageBoxButton.NO],cssClass:"dialog exit-dialog",icon:MessageBoxIcon.QUESTION,text:e.text,title:e.title},n=MessageBox.generate(t);n.on(DialogEvent.RESPONSE,ce),n.appendTo(we)}}function h(e){if(Ie.custom&&Util.nullValue(e.custom,!1)){var t=StringUtil.resolve(e.resourcePath,ke);ObjectUtil.is(t,Object)&&$.extend(e,t)}}function b(){$e=$(window),$e.on(LoadEvent.BEFORE_UNLOAD,he),$e.on(LoadEvent.UNLOAD,Oe),je=$("body"),je.addClass("loading"),Ge=$("#loading-status"),z(),D()?($.ajaxTransport("+binary",A),V()):(P(!1),Ge.html("Oh dear, it appears that the course is not compatible with your web browser."))}function O(e){if(Ie["enable-log"]){var t=function(e,t){n.push(t+"="+e[t])},n=[],r=new Date,a=r.getTime();e.t=a.toString(36),ObjectUtil.forEachItem(e,t);var i=new JSONLoader;i.load(Path.ASSETS+"log.json.js?"+n.join("&"))}}function y(){var e={date:DateUtil.toString(De.assessmentDate),score:De.assessmentScore,studentName:De.studentName},t=new Certificate(e);t.generate()}function T(){q(!1);var e=core.manifest.player["message-box"].resume,t={buttons:[MessageBoxButton.YES,MessageBoxButton.NO],cssClass:"dialog resume-dialog",icon:MessageBoxIcon.QUESTION,text:e.text,title:e.title},n=MessageBox.generate(t);n.on(DialogEvent.RESPONSE,ve),n.appendTo(we)}function U(e,t,n){Ae[e]=t,Util.nullValue(n,!0)&&ye.dispatchEvent({type:CoreEvent.DATA,property:e,value:t})}function P(e){je.toggleClass("loading",e)}function I(e,t){var n=t;"high-contrast"===e&&(n=t?2:0),Ie[e]!==n&&("audio-enabled"===e?(Pe.call("setEnabled",n),n||I("video-subtitles",!0)):"focus-outline"===e?X(n):"high-contrast"===e&&Q(n),Ie[e]=n,ye.dispatchEvent({type:CoreEvent.SETTING,property:e,value:n}))}function C(){var e=!1;if(""===Le.location)F(Navigation.NEXT_PAGE);else if("course-menu"===Le.location)F(Navigation.HOME_PAGE);else{var t=Ce.findPage(Le.location);e=Util.isSet(t)&&t.visible,e||F(Navigation.HOME_PAGE)}return e}function A(e,t,n){var r=function(){n.abort()},a=function(t,n){var r=function(){var t={};t[e.dataType]=d.response,n(d.status,d.statusText,t,d.getAllResponseHeaders())},a=e.url,i=e.type,o=e.async||!0,s=e.responseType||"blob",l=e.data||null,c=e.username||null,u=e.password||null,d=new XMLHttpRequest;d.addEventListener(LoadEvent.LOAD,r),d.open(i,a,o,c,u);for(var f in t)t.hasOwnProperty(f)&&d.setRequestHeader(f,t[f]);d.responseType=s,d.send(l)};return{send:a,abort:r}}function N(){window.top.close()}function L(e,t){var n=Util.nullValue(Me.global,{}),r=n[e];ObjectUtil.is(r,Function)&&r.apply(null,t)}function _(){P(!0),R();var e=Util.isSet(window.top.opener)?N:Y;we.animate({opacity:0},"slow",e)}function D(){var e=navigator.userAgent.match(/MSIE (\d+)/),t=null!==e&&parseInt(e[1])>=10&&(document.documentMode>=10||void 0===document.documentMode);return console.log("UA: "+navigator.userAgent),null!==e&&console.log("IE: "+e[1]),document.documentMode&&console.log("documentMode: "+document.documentMode),null===e||t}function R(){He||(Util.isSet(De)&&(Ce.currentPage.overrideCompleted(),De.finish()),He=!0)}function M(){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,ee),e.load(Path.DATA+"assets.json.js")}function x(){z(),De=new Lms,De.addEventListener(LmsEvent.INCOMPATIBLE_DATA,fe),De.addEventListener(LmsEvent.INITIALIZATION_FAILED,pe),De.addEventListener(LmsEvent.UNEXPECTED_ERROR,Ee),De.init()&&((StringUtil.isEmpty(De.studentName)||!core.licence.remote)&&(Ie["has-certificate"]=!1),K(Ce.assessment.completion),$.extend(Ae,De.courseData),Ae["policy-accepted"]=StringUtil.toBoolean(De.policyAccepted),Ie["focus-outline"]=StringUtil.isEmpty(De.focusOutline)?Ie["focus-outline"]:StringUtil.toBoolean(De.focusOutline),X(Ie["focus-outline"]),Ie["high-contrast"]=StringUtil.isEmpty(De.highContrast)?Ie["high-contrast"]:NumberUtil.nanValue(Number(De.highContrast),0),Q(Ie["high-contrast"]),Ie["audio-enabled"]=StringUtil.isEmpty(De.audioEnabled)?Ie["audio-enabled"]:StringUtil.toBoolean(De.audioEnabled),Pe=Audio.generate({enabled:Ie["audio-enabled"],playbackRate:Ie["audio-playback-rate"]}),Pe.appendTo(je),Ie["video-subtitles"]=StringUtil.isEmpty(De.videoSubtitles)?Ie["video-subtitles"]:StringUtil.toBoolean(De.videoSubtitles),Le={status:De.lessonStatus,location:De.lessonLocation},Ge.animate({opacity:0},"slow",function(){$(this).remove()}),we=View.generate({title:Ce.title}),we.on(CourseEvent.NAVIGATE,Se),we.appendTo(je),Ie["fit-to-window"]&&(je.addClass("fit-to-window"),$e.on(WindowEvent.RESIZE,be),H()),je.on(FocusEvent.FOCUS_OUT,ne),je.on(KeyboardEvent.KEY_DOWN,re),G(),L("playerReady"),StringUtil.isEmpty(Ie.page)?Ce.goFirstPage():Ce.goPage(Ie.page))}function V(){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,ie),e.load(Path.DATA+"config.json.js")}function w(){Fe.count++;var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,oe),e.load(Path.DATA+"custom.json.js")}function j(){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,se),e.load(Path.DATA+"definition.json.js")}function B(){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,me),e.load(Path.DATA+"manifest.json.js")}function k(){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,ge),e.load(Path.DATA+"release.json.js")}function F(e,t){switch(e){case Navigation.CHILD_PAGE:Ce.goChildPage(t);break;case Navigation.HOME_PAGE:Ce.goHomePage();break;case Navigation.NEXT_PAGE:Ce.goNextPage();break;case Navigation.NEXT_SECTION:Ce.goNextSection();break;case Navigation.PAGE_BY_ID:Ce.goPage(t);break;case Navigation.PREVIOUS_PAGE:Ce.goPreviousPage();break;case Navigation.REPLAY_PAGE:Ce.replayPage()}}function G(){Util.isSet(we)&&we.focus()}function H(){we.call("resize")}function Y(){we.remove(),P(!1);var e=core.manifest.player["message-box"]["session-ended"],t=De.dataLocale===LmsScormProxy.REMOTE?e["text-lms"]:e.text,n={cssClass:"dialog session-ended-dialog",icon:MessageBoxIcon.INFORMATION,text:t,title:e.title};je.append(MessageBox.generate(n))}function K(e){U("assessment-completion",e,!1)}function q(e,t){we.call("setEnabled",e,t)}function X(e){je.toggleClass("focus-outline",e)}function W(e,t){var n=function(){var e="https://fonts.googleapis.com/css?family=";return e+=r.split(" ").join("+"),e+=":"+t.join(",")},r=decodeURI(e);$("#google-font").attr("href",n()),je.css("font-family",'"'+r+'", sans-serif')}function Q(e){je.toggleClass("no-high-contrast",0===e),je.toggleClass("high-contrast",1===e),je.toggleClass("high-contrast-inverse",2===e)}function z(){Fe.index++;var e=Math.round(Fe.index/Fe.count*100);$("#loading-progress").html(e+"%")}function Z(){_e=new Licence(Ie.licence,Ie.licence2),_e.addEventListener(LicenceEvent.VALIDATION_COMPLETED,ue),_e.addEventListener(LicenceEvent.VALIDATION_FAILED,de),_e.validate()}function J(e){K(e.target.completion)}function ee(e){e.success?(z(),Ue=new Assets,Ue.addEventListener(LoadEvent.LOADED,te),Ue.init(e.data)):x()}function te(e){Z()}function ne(e){var t=function(){var t=$(e.target);if("view"!==t.attr("id"))if(Util.isSet(t.attr("tabindex"))){var n=t.parents(),r=n.length-1;if(r>-1){var a=n[r],i=a.nodeName.toLowerCase();"html"!==i&&G()}else G()}else G()};setTimeout(t,0)}function re(e){191===e.which&&e.ctrlKey&&we.append(InfoDialog.generate())}function ae(e,t){t.id===Button.PRINT?y():_()}function ie(e){z();var t={"ask-the-expert":"A","continue":"C","course-summary":"S",exit:"E",glossary:"G","home-page":"H","next-page":"PERIOD","previous-page":"COMMA",resources:"R"},n={"allow-assessment-reattempt":AssessmentReattempt.ALWAYS,"allow-revisit":!0,"assessment-pass-mark":Assessment.DEFAULT_PASS_MARK,"assessment-resource-id":"","audio-enabled":!1,"compatibility-version":1,custom:!1,"debug-mode":!1,"enable-assessment":!1,"enable-log":!1,"enforce-page-completion":!0,"enforce-pass-completion":!1,evaluation:!1,"fit-to-window":!0,"focus-outline":!1,font:"Roboto","font-styles":["300","300i","400","400i","700","700i"],"force-scorm-quiz-status":!1,"has-assessment":!0,"has-assessment-pass-mark":!0,"has-audio":!0,"has-certificate":!1,"has-client-logo":!1,"has-course-summary":!1,"has-policies":!1,"high-contrast":0,"keyboard-shortcuts":t,"learnforge-server":"","override-completion-score":!1,page:"","record-assessment-result":RecordAssessmentResult.LATEST_ATTEMPT,"require-policy-acceptance":!1,"sequential-pages":!1,"sequential-sections":!1,"show-all-assessment-questions":!1,"show-exit-button":!0,"strict-page-completion":!1,"video-enabled":!0,"video-subtitles":!1},r=e.success?e.data:{},a=StringUtil.getUrlParameters(window.location.search.slice(1));Ie=$.extend(n,r,a),NumberUtil.inRange(Ie["assessment-pass-mark"],0,100)||(Ie["has-assessment-pass-mark"]=!1),Debugger.ACTIVE=Ie["debug-mode"],K(!Ie["has-assessment"]),W(Ie.font,Ie["font-styles"]),L("updateConfig",[Ie]),B()}function oe(e){e.success&&(z(),ke=e.data,k())}function se(e){e.success&&(z(),Ce=new Course,Ce.init(e.data),Ce.assessment.addEventListener(AssessmentEvent.COMPLETED,J),Ie.custom?w():k())}function le(e,t){if(t.id===Button.HELP){var n=$(e.target);n.call("getVal","errorCode")}else t.id===Button.OK&&N()}function ce(e,t){t.id===MessageBoxButton.YES?_():q(!0)}function ue(e){if(e.valid)x();else{var t={cssClass:"dialog invalid-licence-dialog",errorCode:ErrorCode.LICENCE_EXPIRED,manifestId:ErrorCode.LICENCE_EXPIRED,text:e.message};v(t)}}function de(e){var t={cssClass:"dialog invalid-licence-dialog",errorCode:ErrorCode.INVALID_LICENCE,manifestId:ErrorCode.INVALID_LICENCE};v(t)}function fe(e){v({errorCode:ErrorCode.LMS_INCOMPATIBLE_DATA})}function pe(e){v({errorCode:ErrorCode.LMS_INITIALIZATION_FAILED})}function Ee(e){v({errorCode:e.errorCode})}function me(e){e.success&&(z(),Re=e.data,L("updateManifest",[Re]),Te=new AskTheExpertEntries,Te.init(),Ne=new GlossaryEntries,Ne.init(),Ve=new ResourceEntries,Ve.init(),j())}function ge(e){e.success&&(z(),xe=e.data,M())}function ve(e,t){var n=t.id===MessageBoxButton.NO?Navigation.HOME_PAGE:Navigation.PAGE_BY_ID;$(e.target);F(n,Le.location)}function Se(e,t){Pe.call("stop"),F(t.navigation,t.target)}function he(){R()}function be(){H()}function Oe(){R()}var ye=this;EventDispatcher.apply(ye,[]),Object.defineProperty(ye,"askTheExpert",{get:e});var Te=null;Object.defineProperty(ye,"assets",{get:t});var Ue=null;Object.defineProperty(ye,"audio",{get:n});var Pe=null;Object.defineProperty(ye,"config",{get:r});var Ie=null;Object.defineProperty(ye,"course",{get:a});var Ce=null;Object.defineProperty(ye,"data",{get:i});var Ae={};Object.defineProperty(ye,"glossary",{get:o});var Ne=null;Object.defineProperty(ye,"lesson",{get:s});var Le=null;Object.defineProperty(ye,"licence",{get:l});var _e=null;Object.defineProperty(ye,"lms",{get:c});var De=null;Object.defineProperty(ye,"manifest",{get:u});var Re=null;Object.defineProperty(ye,"pageScript",{get:d});var Me={};Object.defineProperty(ye,"release",{get:f});var xe=null;Object.defineProperty(ye,"resources",{get:p});var Ve=null;Object.defineProperty(ye,"scale",{get:E}),Object.defineProperty(ye,"view",{get:m});var we=null;Object.defineProperty(ye,"completed",{value:g}),Object.defineProperty(ye,"error",{value:v}),Object.defineProperty(ye,"exit",{value:S}),Object.defineProperty(ye,"setCustom",{value:h}),Object.defineProperty(ye,"init",{value:b}),Object.defineProperty(ye,"log",{value:O}),Object.defineProperty(ye,"printCertificate",{value:y}),Object.defineProperty(ye,"resume",{value:T}),Object.defineProperty(ye,"setData",{value:U}),Object.defineProperty(ye,"setLoading",{value:P}),Object.defineProperty(ye,"setSetting",{value:I}),Object.defineProperty(ye,"start",{value:C});var je=null,Be=!1,ke=null,Fe={index:0,count:7},Ge=null,He=!1,$e=null}function CourseNavigator(e){function t(){return R}function n(){return M}function r(e){return P(M,e)}function a(){return Util.isSet(O(R))}function i(){return Util.isSet(C(R))}function o(){var e=y(R);return!Util.isSet(e)||e.assessment}function s(){return R.isDescendantOf(core.course.homePage)&&core.course.isHomePage(O(R))}function l(e){return N(S(R,e,D))}function c(){return N(h(R))}function u(){return N(core.course.homePage)}function d(){return N(b(R))}function f(){return N(O(R))}function p(){return N(y(R))}function E(e){return N(r(e))}function m(){return N(I(R))}function g(){return N(C(R))}function v(e,t){return Util.isSet(e)?e.getChildByIndex(t):null}function S(e,t,n){var r=Util.nullValue(n,D),a=v(e,t);return Util.isSet(a)?a.enabled&&a.visible?a.isPageNode?a:r>0?h(a):b(a):r>0?O(a):C(a):null}function h(e){return S(e,0,D)}function b(e){return S(e,e.childCount-1,_)}function O(e){var t=e.parent;if(!Util.isSet(t)||!t.isPageNode){var n=U(e,!0);return Util.isSet(n)||!Util.isSet(t)?n:O(t)}return t}function y(e){var t=core.course.getSection(e);return Util.isSet(t)?U(t,!0):null}function T(e){return v(e.parent,e.index+1)}function U(e,t){var n=T(e);return Util.isSet(n)?n.enabled&&n.visible?n.isPageNode?n:t?h(n):U(n,t):U(n,t):null}function P(e,t){if(e.id===t)return e.isPageNode?e:h(e);for(var n=e.selectChildren(),r=n.moveFirst();Util.isSet(r);){if(r=P(r,t),Util.isSet(r))return r;r=n.moveNext()}return null}function I(e){var t=e.parent;return Util.isSet(t)?t.isPageNode?t:I(t):null}function C(e){var t=e.parent;if(!Util.isSet(t)||!t.isPageNode){var n=A(e);if(Util.isSet(n))return n.enabled&&n.visible?n.isPageNode?n:b(n):C(n);if(Util.isSet(t))return C(t)}return t}function A(e){return v(e.parent,e.index-1)}function N(e){return Util.isSet(e)&&(R=e),e}var L=this,_=-1,D=1;Object.defineProperty(L,"currentPage",{get:t});var R=e;Object.defineProperty(L,"root",{get:n});var M=e;Object.defineProperty(L,"findPage",{value:r}),Object.defineProperty(L,"hasNextPage",{value:a}),Object.defineProperty(L,"hasPreviousPage",{value:i}),Object.defineProperty(L,"isCourseEnd",{value:o}),Object.defineProperty(L,"isSectionEnd",{value:s}),Object.defineProperty(L,"setChildPage",{value:l}),Object.defineProperty(L,"setFirstPage",{value:c}),Object.defineProperty(L,"setHomePage",{value:u}),Object.defineProperty(L,"setLastPage",{value:d}),Object.defineProperty(L,"setNextPage",{value:f}),Object.defineProperty(L,"setNextSection",{value:p}),Object.defineProperty(L,"setPageById",{value:E}),Object.defineProperty(L,"setParentPage",{value:m}),Object.defineProperty(L,"setPreviousPage",{value:g})}function CourseNode(e){function t(){return r}var n=this;PageGroupNode.apply(n,arguments),Object.defineProperty(n,"version",{enumerable:!0,get:t});var r=new Version(Util.nullValue(e.version,"1"))}function Course(){function e(){return B}function t(){return G.currentPage}function n(){return k}function r(){return j.root.id}function a(){return F}function i(){return B.active?B.questionId:j.currentPage.id}function o(){return core.lms.assessmentScore>=B.passMark}function s(){return G.root}function l(){return core.manifest[j.id].title}function c(){var e=core.manifest[j.id].title2;return Util.nullValue(e,j.title)}function u(e){return G.findPage(e)}function d(e){if(Util.isSet(e)){var t=core.manifest[e.id];if(Util.isSet(t)&&Util.isSet(t.title))return StringUtil.parseVars(t.title)}return""}function f(e){var t=e.parent;return Util.isSet(t)?T(t)?e:f(t):null}function p(e){N(G.setChildPage(e))}function E(){N(G.setFirstPage())}function m(){N(G.setHomePage())}function g(){N(G.setNextPage())}function v(){N(G.setNextSection())}function S(e){N(G.setPageById(e))}function h(){N(G.setPreviousPage())}function b(){return G.hasNextPage()}function O(){return G.hasPreviousPage()}function y(e){var t=e.course,n=e.page;F=R(t,n),G=D(e),B=_(e)}function T(e){return Util.isSet(e)&&e===k}function U(){return G.isCourseEnd()}function P(){return G.isSectionEnd()}function I(){N(j.currentPage)}function C(){var e=function(e){e.isPageNode&&(e.recommended=!1)};j.root.forEachChild(e)}function A(){var e=core.lms.serializedBookmarkedPages.split(""),t=core.lms.serializedCompletedPages.split(""),n=core.lms.serializedRecommendedPages.split(""),r=function(r){r.isPageNode&&(r.bookmarked=StringUtil.toBoolean(e.shift()),r.completed=StringUtil.toBoolean(t.shift()),r.recommended=StringUtil.toBoolean(n.shift()))};j.root.forEachChild(r)}function N(e){core.view.call("changePage",e)}function L(e){if(Util.isSet(e))switch(e.constructor){case String:return""===e||StringUtil.evaluate(StringUtil.parseVars(e));case Boolean:return e}return null}function _(e){var t=function(e,r){var o=null;if(Util.isSet(a.resources)){var s=Util.nullValue(a.resources[e],{}),l=Util.isSet(r),c=$.extend({assessment:!0,id:e,relative:[]},s),u=L(c.visible);if(Util.nullValue(u,!0)){if(l&&ObjectUtil.is(c.relative,Array)&&(c.relative=ArrayUtil.removeDuplicates(c.relative.concat(r.relative))),ObjectUtil.is(s.children,Array)){c.randomize=n(c.randomize),o=new AssessmentGroupNode(c);for(var d=s.children.length,f=0;d>f;f++)t(s.children[f],o)}else{var p=M(e,i,{});c.pageNode=new PageNode($.extend(c,p)),o=new AssessmentQuestionNode(c)}l&&r.addChild(o)}}return o},n=function(e){var t=core.config["randomize-assessment"];return Util.isSet(t)?t:e},r={};if(core.config["has-assessment"]){var a=e.assessment,i=e.page,o=core.config["assessment-resource-id"];StringUtil.isEmpty(o)&&(o=StringUtil.empty(a.resourceId,j.id+"-quiz")),r.randomize=n(a.randomize),r.rootNode=t(o)}return new Assessment(r)}function D(e){var t=e.course,n=e.page,r=w(new CourseNode(t),t,n,V);return new CourseNavigator(r)}function R(e,t){var n=Util.nullValue(e.orphans,[]),r={},a=function(e,n,a){var i=t[e];if(Util.isSet(i)){var o={id:e};core.data.toolkit[e]=!0,r[e]=new PageNode($.extend(o,i))}else console.warn("The page definition for '%s' does not exist.",e)};return core.data.toolkit={"ask-the-expert":!1,bookmarks:!1,glossary:!1,resources:!1},n.forEach(a),r}function M(e,t,n){var r=function(e){if(Util.isSet(e))switch(e.constructor){case Array:return e;case String:return e.split(",")}return[]},a=function(e){StringUtil.isEmpty(e)||M(e,t,n)},i=t[e];if(Util.isSet(i)){var o=r(i["extends"]);o.forEach(a),ObjectUtil.extend(n,i)}else console.warn("The page definition for '%s' does not exist.",e),n.visible=!1;return n}function x(e,t){if(Util.isSet(t)){var n=function(t){return t===e},r=Util.isSet(t.visibleDescendants)?t.visibleDescendants.some(n):!1;return r||x(e,t.parent)}return null}function V(e,t,n,r){var a=e[t],i=null;if(!StringUtil.isEmpty(a.id)){var o=x(a.id,n);Util.isSet(o)||(o=L(a.visible));var s={allowBookmark:n.allowBookmark,assessment:n.assessment,enabled:n.enabled,mandatory:n.mandatory,showPageIcons:n.showPageIcons,visible:n.visible},l=Util.nullValue(a["abstract"],!1);if(l)a.enabled=L(a.enabled),a.visible=o,i=new PageGroupNode($.extend(s,a));else{var c=Util.nullValue(a.resourceId,a.id),u=M(c,r,{});$.extend(a,u),a.enabled=L(a.enabled),a.visible=Util.nullValue(u.visible,o),i=new PageNode($.extend(s,a)),!Util.isSet(k)&&a.home&&(k=i)}Util.isSet(i)&&(n.addChild(i),w(i,a,r,V))}}function w(e,t,n,r){var a=Util.nullValue(t.children,[]);return ArrayUtil.forEachItem(a,r,[e,n]),e}var j=this;EventDispatcher.apply(j,[]),Object.defineProperty(j,"assessment",{get:e});var B=null;Object.defineProperty(j,"currentPage",{get:t}),Object.defineProperty(j,"homePage",{get:n});var k=null;Object.defineProperty(j,"id",{get:r}),Object.defineProperty(j,"orphans",{get:a});var F=null;Object.defineProperty(j,"pageId",{get:i}),Object.defineProperty(j,"passed",{get:o}),Object.defineProperty(j,"root",{get:s}),Object.defineProperty(j,"title",{get:l}),Object.defineProperty(j,"title2",{get:c}),Object.defineProperty(j,"findPage",{value:u}),Object.defineProperty(j,"getNodeTitle",{value:d}),Object.defineProperty(j,"getSection",{value:f}),Object.defineProperty(j,"goChildPage",{value:p}),Object.defineProperty(j,"goFirstPage",{value:E}),Object.defineProperty(j,"goHomePage",{value:m}),Object.defineProperty(j,"goNextPage",{value:g}),Object.defineProperty(j,"goNextSection",{value:v}),Object.defineProperty(j,"goPage",{value:S}),Object.defineProperty(j,"goPreviousPage",{value:h}),Object.defineProperty(j,"hasNextPage",{value:b}),Object.defineProperty(j,"hasPreviousPage",{value:O}),Object.defineProperty(j,"init",{value:y}),Object.defineProperty(j,"isHomePage",{value:T}),Object.defineProperty(j,"isCourseEnd",{value:U}),Object.defineProperty(j,"isSectionEnd",{value:P}),Object.defineProperty(j,"replayPage",{value:I}),Object.defineProperty(j,"resetRecommended",{value:C}),Object.defineProperty(j,"restoreState",{value:A});var G=null}function Licence(e,t){function n(){return E}function r(){return m}function a(){return g}function i(){return v}function o(){l()||(v=!1,s()||u())}function s(){if(!StringUtil.isEmpty(S)){var e=Util.nullValue(core.config["rsa-public-key"],{}),t=Util.nullValue(e.n,"");if(!StringUtil.isEmpty(t)){var n=16;if(t.length>=n){var r=Aes.Ctr.decrypt(S,t.substr(0,n),256);try{var a=!1,i=JSON.parse(r);if(E=Util.nullValue(i.cName,""),"perpetual"!==i.exp){var o=StringUtil.toDate(i.exp);if(!Util.isSet(o))return!1;m=DateUtil.format(o),o.setDate(o.getDate()+1),a=(new Date).getTime()<o.getTime()}else a=!0;return c(a),!0}catch(s){}}}}return!1}function l(){if(v&&!StringUtil.isEmpty(h)){var e=core.config["learnforge-server"];if(!StringUtil.isEmpty(e)){var t={data:{licence:h},dataType:"json",method:"POST",timeout:Licence.REMOTE_TIMEOUT,url:e+"/licences"},n=$.ajax(t);return n.done(d),n.fail(f),!0}}return!1}
function c(e,t){var n=Util.nullValue(t,""),r=core.manifest.player.licence;g=StringUtil.parseVars(StringUtil.isEmpty(m)?r.licence1:r.licence2),p.dispatchEvent({type:LicenceEvent.VALIDATION_COMPLETED,valid:e,message:n})}function u(){p.dispatchEvent({type:LicenceEvent.VALIDATION_FAILED})}function d(e){if(E=e.cName,"perpetual"===e.exp)c(!0);else{var t=StringUtil.toDate(e.exp);Util.isSet(t)&&(m=DateUtil.format(t),c(e.valid,e.msg))}}function f(e){400!==e.status?(v=!1,s()||u()):u()}var p=this;EventDispatcher.apply(p,[]),Object.defineProperty(p,"customerName",{get:n});var E="";Object.defineProperty(p,"expiryDate",{get:r});var m="";Object.defineProperty(p,"licenceText",{get:a});var g="";Object.defineProperty(p,"remote",{get:i});var v=!0;Object.defineProperty(p,"validate",{value:o});var S=Util.nullValue(t,""),h=Util.nullValue(e,"")}function PageFilter(e){function t(t){var n=function(e,n){return t[n]===e[n]};return t.isPageNode&&ObjectUtil.every(e,n)}var n=this;Object.defineProperty(n,"select",{value:t})}function PageGroupNode(e){function t(){return m}function n(){return g}function r(){return v}function a(){return S}function i(){return ObjectUtil.is(E,PageNode)}function o(){return h&&O}function s(){return b}function l(){var e=core.manifest[E.id];return Util.isSet(e)?Util.nullValue(e.title,""):""}function c(){return O}function u(){return y}function d(){var e=function(e){e.visible&&(t+=e.duration)},t=0;return e(E),E.forEachChild(e),t}function f(e){var t=function(e){e.isPageNode&&e.mandatory&&(n.count+=e.completed?1:0,n.total++)},n={count:0,total:0};return Util.nullValue(e,!0)&&t(E),E.forEachChild(t),n.total>0?n.count/n.total:0}function p(e){var t=e;return ObjectUtil.is(t,String)&&(t=StringUtil.evaluate(StringUtil.parseVars(e))),ObjectUtil.is(t,Array)?t:[]}var E=this;Node.apply(E,[e.id]),Object.defineProperty(E,"assessment",{enumerable:!0,get:t});var m=Util.nullValue(e.assessment,!1);Object.defineProperty(E,"allowBookmark",{enumerable:!0,get:n});var g=Util.nullValue(e.allowBookmark,!0);Object.defineProperty(E,"duration",{enumerable:!0,get:r});var v=Util.nullValue(e.duration,0);Object.defineProperty(E,"enabled",{enumerable:!0,get:a});var S=Util.nullValue(e.enabled,!0);Object.defineProperty(E,"isPageNode",{get:i}),Object.defineProperty(E,"mandatory",{enumerable:!0,get:o});var h=Util.nullValue(e.mandatory,!0);Object.defineProperty(E,"showPageIcons",{get:s});var b=Util.nullValue(e.showPageIcons,!0);Object.defineProperty(E,"title",{get:l}),Object.defineProperty(E,"visible",{enumerable:!0,get:c});var O=Util.nullValue(e.visible,!0);Object.defineProperty(E,"visibleDescendants",{enumerable:!0,get:u});var y=p(e.visibleDescendants);Object.defineProperty(E,"calculateDuration",{value:d}),Object.defineProperty(E,"getProgress",{value:f})}function PageNode(e){function t(){return A}function n(e){var t=C.allowBookmark&&e;A!==t&&(A=t,C.dispatchEvent({type:PageNodeEvent.BOOKMARKED}))}function r(){return N}function a(e){N=e}function i(){return L}function o(e){L=e}function s(){return _}function l(){return D}function c(){return R}function u(){return M}function d(){return x}function f(){return!Util.isSet(C.parent)}function p(){return V}function E(){return w}function m(){return j}function g(){return B}function v(e){B=e}function S(){return k}function h(){return F}function b(){return G}function O(){return H}function y(){return $}function T(){return Y}function U(e){Y=e}function P(e){var t=D[e];return Util.isSet(t)&&(StringUtil.isEmpty(t.extend)||(t=ObjectUtil.extend({},[P(t.extend),t]))),t}function I(){a(Util.nullValue(_.completed,!0))}var C=this;PageGroupNode.apply(C,arguments),Object.defineProperty(C,"bookmarked",{get:t,set:n});var A=!1;Object.defineProperty(C,"completed",{get:r,set:a});var N=!1;Object.defineProperty(C,"cssClass",{get:i,set:o});var L=Util.nullValue(e.cssClass,"");Object.defineProperty(C,"data",{get:s});var _={};Object.defineProperty(C,"elements",{get:l});var D=Util.nullValue(e.elements,{});Object.defineProperty(C,"enableHeaderBar",{get:c});var R=Util.nullValue(e.enableHeaderBar,!0);Object.defineProperty(C,"enableNextPage",{get:u});var M=Util.nullValue(e.enableNextPage,!0);Object.defineProperty(C,"enablePreviousPage",{get:d});var x=Util.nullValue(e.enablePreviousPage,!0);Object.defineProperty(C,"isOrphan",{get:f}),Object.defineProperty(C,"param",{enumerable:!0,get:p});var V=Util.nullValue(e.param,{});Object.defineProperty(C,"preload",{get:E});var w=Util.nullValue(e.preload,[]);Object.defineProperty(C,"preloadAssetData",{get:m});var j=e.preloadAssetData;Object.defineProperty(C,"recommended",{get:g,set:v});var B=!1;Object.defineProperty(C,"resourceId",{enumerable:!0,get:S});var k=Util.nullValue(e.resourceId,C.id);Object.defineProperty(C,"resourcePath",{enumerable:!0,get:h});var F=Util.nullValue(e.resourcePath,C.id);Object.defineProperty(C,"script",{get:b});var G=Util.nullValue(e.script,{});Object.defineProperty(C,"showFooterBar",{get:O});var H=Util.nullValue(e.showFooterBar,!0);Object.defineProperty(C,"showHeaderBar",{get:y});var $=Util.nullValue(e.showHeaderBar,!0);Object.defineProperty(C,"target",{get:T,set:U});var Y=null;Object.defineProperty(C,"getElementProperties",{value:P}),Object.defineProperty(C,"overrideCompleted",{value:I})}function Preloader(e){function t(){return Util.isSet(c)?c.url:""}function n(){return d>0?f/d:0}function r(){Util.isSet(c)&&(c.cancel(),c=null,u=[])}function a(){return o()}function i(e){var t=e.slice(e.lastIndexOf(".")+1);switch(t.toLowerCase()){case"gif":case"jpg":case"png":return new ImageLoader}return new BinaryLoader}function o(){var e=d>f;if(e){var t=u[f];c=i(t),c.addEventListener(LoadEvent.LOADED,s),c.load(t)}return e}function s(e){f++,l.dispatchEvent({type:LoadEvent.PROGRESS}),o()||(c=null,l.dispatchEvent({type:LoadEvent.LOADED}))}var l=this;EventDispatcher.apply(l,arguments),Object.defineProperty(l,"url",{get:t}),Object.defineProperty(l,"progress",{get:n}),Object.defineProperty(l,"cancel",{value:r}),Object.defineProperty(l,"start",{value:a});var c=null,u=Util.nullValue(e,[]),d=u.length,f=0}function ResourceEntries(){function e(e){return o.selectItems(ResourceEntryList.SORT_BY_ID,e)}function t(e){return o.getItemById(e)}function n(){o=r(),o.sort(ResourceEntryList.SORT_BY_ID)}function r(){var e=core.manifest.resources,t=new ResourceEntryList;if(Util.isSet(e)){var n=e.entries;if(Util.isSet(n)){var r=null;for(var i in n)n.hasOwnProperty(i)&&(r=$.extend({id:i},n[i]),r.visible=a(r.visible),t.addItem(new ResourceEntryListItem(r)))}}return t}function a(e){if(Util.isSet(e))switch(e.constructor){case Boolean:return e;case String:return""===e||StringUtil.evaluate(StringUtil.parseVars(e))===!0}return!0}var i=this;Object.defineProperty(i,"getEntries",{value:e}),Object.defineProperty(i,"getEntry",{value:t}),Object.defineProperty(i,"init",{value:n});var o=null}function ResourceEntryListFilter(e){function t(e){return e.visible&&(StringUtil.isEmpty(r)?a===e.root:StringUtil.compare(e.id,r))}var n=this;Object.defineProperty(n,"select",{value:t});var r=Util.nullValue(e.id,""),a=Util.nullValue(e.root,!1)}function ResourceEntryListItem(e){function t(){return d}function n(){return f}function r(){return p||g}function a(){return E}function i(){return m}function o(){return g}function s(){return v}function l(){return S}function c(){return h}var u=this;ListItem.apply(u,[e.id]),Object.defineProperty(u,"description",{enumerable:!0,get:t});var d=Util.nullValue(e.description,"");Object.defineProperty(u,"email",{enumerable:!0,get:n});var f=Util.nullValue(e.email,"");Object.defineProperty(u,"group",{get:r});var p=Util.nullValue(e.group,!1);Object.defineProperty(u,"name",{enumerable:!0,get:a});var E=Util.nullValue(e.name,"");Object.defineProperty(u,"phone",{enumerable:!0,get:i});var m=Util.nullValue(e.phone,"");Object.defineProperty(u,"root",{get:o});var g=Util.nullValue(e.root,!1);Object.defineProperty(u,"resources",{get:s});var v=Util.nullValue(e.resources,[]);Object.defineProperty(u,"url",{enumerable:!0,get:l});var S=Util.nullValue(e.url,"");Object.defineProperty(u,"visible",{enumerable:!0,get:c});var h=Util.nullValue(e.visible,!0)}function ResourceEntryList(){function e(){i=[],a.clear()}function t(e,t){return e>=0&&e<r.count?t===ResourceEntryList.SORT_BY_NAME?r.items[i[e]]:r.items[e]:a.getItemByIndex(e,t)}function n(e){e===ResourceEntryList.SORT_BY_NAME?i=ArrayUtil.sortItemsOn(r.items,"name",ArrayUtil.CASE_INSENSITIVE|ArrayUtil.RETURN_INDEXED_ARRAY):a.sort(e)}var r=this,a={};List.apply(r,[]),a.clear=r.clear,Object.defineProperty(r,"clear",{value:e}),a.getItemByIndex=r.getItemByIndex,Object.defineProperty(r,"getItemByIndex",{value:t}),a.sort=r.sort,Object.defineProperty(r,"sort",{value:n});var i=[]}function ScriptEase(p_oPage){function addElements(e,t,n,r){var a=function(t){return addElement(e,t,n,r)};return ObjectUtil.is(t,Array)?t.map(a):a(t)}function event(e,t){applyActions(getActions(t),t,e)}function error(e){console.warn("ScriptEase: "+e)}function addElement(e,t,n,r){var a=function(e,t){var a=$.extend({param:e.getVal("data")},t),i=null;return Util.condition(a.visible,r,!0)&&(i=createElement(a),Util.isSet(i)&&(e.call("add",i,n),i.call("init"),addElements(i,a.children,!1,r),i.call("ready"))),i},i=m_oPage,o=null;return ObjectUtil.is(e,String)?"page"!==e&&(i=getElements(e),Util.isSet(i)||(i=addElement("page",e))):e.length>0&&(i=e),Util.isSet(i)?ObjectUtil.is(t,String)?(o=getElements(t),Util.isSet(o)?i.call("add",o):o=a(i,getElementProperties(t))):ObjectUtil.is(t,Object)&&(o=a(i,t)):error("The element '"+e+"' is invalid."),o}function align(e,t){var n=function(e,t,n){var r=t.split("."),a=getElements(r.shift());if(Util.isSet(a)){var i={x:0,y:0};r.length>0&&(Util.nullValue(n,!0)&&r.push(e.attr("id")),i=a.call("getClipInfo",r.join("."))),Util.isSet(i)&&e.call("align",a,i)}},r=function(e,r){n(r,t[0],t[1])},a=function(e,t,n){align(e[t],n)},i=getElements(e);if(Util.isSet(i))i.length>1?i.each(r):n(i,t[0],t[1]);else{var o=t.shift();o.constructor===String?align(o,t):o.constructor===Array&&ArrayUtil.forEachItem(o,a,[t])}}function animate(e,t){var n=function(e){var n=getElements(e);Util.isSet(n)&&n.animate(o,t[1],t[2],r)},r=function(){$(this).trigger(AnimationEvent.COMPLETE)},a=function(e,t,n){var r=e.split("=");r.length>1&&""!==r[0]&&""!==r[1]&&(o[r[0]]=StringUtil.typeCast(r[1]))},i=StringUtil.isEmpty(e)?t.shift():e,o={},s=t[0].split(";");s.forEach(a),ObjectUtil.is(i,String)?n(i):ObjectUtil.is(i,Array)&&i.forEach(n)}function applyAction(e,t,n){var r=ObjectUtil.is(e,String)?parseAction(e):e;if(ObjectUtil.is(r,Object)){var a=r.command.toLowerCase();switch(a){case ScriptEase.ADD:addElements(r.elementId,r.parameters[0],r.parameters[1],t);break;case ScriptEase.ALIGN:align(r.elementId,r.parameters);break;case ScriptEase.ANIMATE:animate(r.elementId,r.parameters);break;case ScriptEase.ARIA:aria(r.elementId,r.parameters[0],r.parameters[1]);break;case ScriptEase.ATTACH:attachElements(r.elementId,r.parameters);break;case ScriptEase.AUDIO:playAudio(r.parameters[0]);break;case ScriptEase.BRANCH:branch(r.parameters[0],n);break;case ScriptEase.CALC:return calc(r.parameters[0],r.parameters[1]);case ScriptEase.CALL:return elementCall(r.elementId,r.target,r.parameters);case ScriptEase.CLEAR:clear(r.elementId);break;case ScriptEase.CLONE:cloneElement(r.elementId,r.parameters);break;case ScriptEase.ENABLE:setEnabled(r.elementId,r.parameters[0]);break;case ScriptEase.EVALUATE:return evaluate(r.parameters[0],r.parameters[1]);case ScriptEase.EXECUTE:return execute(r,n);case ScriptEase.EXTEND:extend(r.elementId,r.parameters[0]);break;case ScriptEase.FINISH:m_oPage.trigger(PageEvent.FINISH);break;case ScriptEase.FIT:fit(r.elementId,r.parameters);break;case ScriptEase.FORMAT:return format(r.parameters[0],r.parameters[1],r.parameters[2]);case ScriptEase.GET:return getValue(r.elementId,r.parameters[0],r.parameters[1]);case ScriptEase.HIDE:show(StringUtil.isEmpty(r.elementId)?r.parameters:r.elementId,!1);break;case ScriptEase.HIGHLIGHT:highlight(r.elementId,r.parameters);break;case ScriptEase.JS_CALL:return jsCall(r.elementId,r.parameters);case ScriptEase.LOAD:return loadValue(r.elementId,r.parameters[0],r.parameters[1],t);case ScriptEase.NAVIGATE:m_oPage.call("navigate",r.parameters[0],r.parameters[1]);break;case ScriptEase.PLAY:mediaPlay(r.elementId,r.target,r.parameters[0]);break;case ScriptEase.PROP:return prop(r.parameters[0],r.parameters[1],r.parameters[2],t);case ScriptEase.REMOVE:StringUtil.isEmpty(r.elementId)?removeElements(r.parameters):removeElement(r.elementId,r.parameters[0]);break;case ScriptEase.REPLACE:replaceElements(r.elementId,r.parameters[0],t);break;case ScriptEase.RESOURCE:resource(r.parameters[0]);break;case ScriptEase.SAVE:saveValue(r.elementId,r.parameters[0],r.parameters[1],r.parameters[2]);break;case ScriptEase.SELECT:setSelected(r.elementId,r.parameters[0]);break;case ScriptEase.SET:setValue(r.elementId,r.parameters[0],r.parameters[1],r.parameters[2]);break;case ScriptEase.SHOW:show(StringUtil.isEmpty(r.elementId)?r.parameters:r.elementId,!0);break;case ScriptEase.START:m_oPage.trigger(PageEvent.START);break;case ScriptEase.STOP:mediaStop(r.elementId,r.target,r.parameters[0]);break;case ScriptEase.STYLE:style(r.elementId,r.parameters);break;case ScriptEase.TRACE:Util.trace.apply(null,r.parameters);break;default:error("The command '"+a+"' is invalid.")}}return{}}function applyActions(e,t,n){var r=function(e,r,a){if(ObjectUtil.is(e,String)){if(!Util.isSet(e.match(/^\s*\/\//))){var i=StringUtil.parseVars(e,t),o=applyAction(i,t,n);ObjectUtil.is(o,Object)&&$.extend(t.prop,o)}}else{var s=Util.nullValue(ScriptEaseBranch.getActions(e,t),[]);applyActions(s,t,n)}},a=ObjectUtil.is(e,Array)?e:[e];return a.forEach(r),t.prop}function aria(e,t,n){var r=getElements(e);if(Util.isSet(r)){var a="role"===t?t:"aria-"+t,i=Util.nullValue(n,"");""===i?r.removeAttr(a):r.attr(a,i)}}function attachElement(e,t,n,r){var a=e[t];if(ObjectUtil.is(a,Array))ArrayUtil.forEachItem(a,attachElement,[n,r]);else{var i=getElements(a);i.call("align",n,r)}}function attachElements(e,t){var n=e.split("."),r=getElements(n.shift());if(Util.isSet(r)){var a=n.join(".");ArrayUtil.forEachItem(t,attachElement,[r,a])}}function branch(e,t){applyAction(select(e),t)}function calc(e,t){var n={};return n[e]=StringUtil.evaluate(t),n}function clear(e){var t=getElements(e);Util.isSet(t)&&t.call("clear")}function cloneElement(e,t){var n=getElements(e),r=null;return Util.isSet(n)&&(r=getElements(t),Util.isSet(r)&&(r=addElement("page",t)),Util.isSet(r)&&n.clone().appendTo(r)),n}function compareParameters(e,t){var n=function(e,n){var a=StringUtil.resolve(n,t);if(Util.isSet(a)){var i=e[n],o=i.constructor;if(o===String&&o===a.constructor){var s=[],l=StringUtil.parseVars(i,t),c=StringUtil.compare(a,l,s);return r[n.replace(".","_")]=s.slice(1),c}return i===a}return!1},r={},a=!Util.isSet(e.parameters)||ObjectUtil.some(e.parameters,n);return a&&(Util.isSet(e.index)?t.match[e.index]=r:t.match=r),a}function concatenateActions(e,t){var n=function(e,n,a){e.index=n,compareParameters(e,t)&&(r=r.concat(e.actions))},r=[];return e.forEach(n),r}function createElement(e){var t=null;if(Util.isSet(e)){var n=Util.nullValue(e.elementType,"Element");if(""!==n){var r=StringUtil.evaluate(n);if(Util.isSet(r)&&r.hasOwnProperty("generate")){var a={resourcePath:m_oPageNode.id+"."+e.id,resourceId:m_oPageNode.id+"-"+e.id};t=r.generate($.extend(a,e))}}}return t}function elementCall(e,t,n){var r=getElements(e),a={};if(Util.isSet(r)&&n.length>0){var i=n[0].toLowerCase(),o=n.slice(1);r.call("scriptAction",i,t,o,a)}return a}function evaluate(e,t){var n={};return n[e]=select(t),n}function execute(e,t){var n=function(e){if(!StringUtil.isEmpty(e)){var n=r[e];Util.isSet(n)?$.extend(a,applyActions(n.actions,i,t)):error("The script function '"+e+"' has not been declared.")}},r=m_oPageNode.script.functions,a={};if(Util.isSet(r)){var i={config:core.config,core:core.data,element:t.getVal("data"),param:e.parameters,page:m_oPage.getVal("data"),prop:{}},o=e.elementId,s=o.match(/\[([^\]]*)\]/);if(Util.isSet(s)){var l=s[1].split(",");l.forEach(n)}else n(o)}else error("No script functions have been declared.");return a}function extend(e,t){var n=getElementProperties(e);if(Util.isSet(n)){var r=getElementProperties(t);Util.isSet(r)&&$.extend(n,r,{id:n.id})}}function fit(e,t){var n=function(e,t,n){var r=t.split("."),a=getElements(r.shift());if(Util.isSet(a)){var o={width:a.outerWidth(),height:a.outerHeight()};r.length>0&&(Util.nullValue(n,!0)&&r.push(e.attr("id")),o=a.call("getClipInfo",r.join("."))),Util.isSet(o)&&(e.outerWidth(o.width*i),e.outerHeight(o.height*i))}},r=function(e,r){n(r,t[0],t[1])},a=function(e,t,n){fit(e[t],n)},i=1/core.scale,o=getElements(e);if(Util.isSet(o))o.length>1?o.each(r):n(o,t[0],t[1]);else{var s=t.shift();Util.isSet(s)&&(s.constructor===String?fit(s,t):s.constructor===Array&&ArrayUtil.forEachItem(s,a,[t]))}}function format(e,t,n){var r=function(e,t){var n=e.length;return n>t?e.substr(0,t):t>n?e+a(t-n):e},a=function(e){return String(Math.pow(10,e)).slice(1)},i=function(e){for(var t=e.length,n=3,r=t%n,a=r>0?[e.substr(0,r)]:[];t>r;)a.push(e.substr(r,n)),r+=n;return a.join(",")},o=ObjectUtil.is(t,String)?Number(t):t,s={};if(ObjectUtil.is(o,Number)&&!isNaN(o)){var l=String(o),c=l.split(".");if(n.indexOf("k")>-1&&(c[0]=i(c[0])),n.indexOf("i")>-1)c=c.slice(0,1);else{var u=n.match(/f(\d+)/);if(Util.isSet(u)){var d=Number(u[1]);d>0?c[1]=r(c[1],d):c=c.slice(0,1)}}s[e]=c.join(".")}else s[e]=o;return s}function getActions(e){var t=m_oPageNode.script.events,n=[];if(Util.isSet(t)){var r=ObjectUtil.findProperties(t,e.event.elementId);if(r.length>0){var a=r[0].value;if(Util.isSet(a)){e.regex=r[0].match.slice(1),e.match={};var i=Util.nullValue(e.event.eventType,""),o=a[i];if(Util.isSet(o))if(o.constructor===Object){if(compareParameters(o,e))return o.actions}else if(o.constructor===Array)return concatenateActions(o,e)}}}return n}function getElements(e){var t=Util.nullValue(e,"");if("audio"===t)return core.audio;if("page"===t)return m_oPage;if(""!==t){var n=m_oPage.getElementsById(t);return n.length>0?n:null}return null}function getElementProperties(e){var t="page"===e?m_oPageNode:m_oPageNode.elements[e];return Util.isSet(t)||(t=core.course.findPage(e),Util.isSet(t)||error("The element '"+e+"' has not been declared.")),t}function getValue(e,t,n){var r=Util.nullValue(n,t),a=getElements(e),i={},o=null;if(Util.isSet(a))o=a.getVal(t);else{var s=getElementProperties(e);Util.isSet(s)&&(o=s[t])}return Util.isSet(o)&&(i[r]=o),i}function highlight(e,t){var n=function(e,t,n){e.constructor===Boolean?a.call("highlight",e):e.constructor===Array&&r(e[0],e[1])},r=function(e,t){if(e.constructor===String)a.call("highlightOption",e,t);else if(e.constructor===Array)for(var n=e.length,r=0;n>r;r++)a.call("highlightOption",e[r],t)},a=getElements(e);Util.isSet(a)&&t.forEach(n)}function jsCall(e,t){var n=t.shift();if(Util.isSet(e)){var r=getElements(e);if(Util.isSet(r))return r.call("jsCall",n,t)}else{var a=core.pageScript.global;if(Util.isSet(a)){var i=a[n];if(ObjectUtil.is(i,Function))return Util.nullValue(i.apply(null,t),{})}}return{}}function loadValue(e,t,n,r){var a=getElements(e),i={},o=null;if(Util.isSet(a))o=a.call("getVal",t);else{var s=getElementProperties(e);if(Util.isSet(s)){var l=$.extend({},s.data,s.param);o=l[t]}}return Util.isSet(o)?i[t]=o.constructor===String?StringUtil.parseVars(o,r):o:i[t]=n,i}function mediaPlay(e,t,n){var r=getElements(e);if(Util.isSet(r)){var a=r.getVal("elementType");"SvgAnimator"===a?r.call("play",n,t):r.call("play",Number(n))}}function mediaStop(e,t,n){var r=getElements(e);if(Util.isSet(r)){var a=r.getVal("elementType");if("SvgAnimator"===a)r.call("stop",n,t);else{var i=Number(n);r.call("stop",isNaN(i)?0:i)}}}function parseAction(e){if(!StringUtil.isEmpty(e)){var t=e.match(/([^:\s]+)\s*(?::(.*))?/),n={};if(Util.isSet(t)){var r=t[1],a=Util.nullValue(t[2],"");if(!StringUtil.isEmpty(r)){var i=r.split(".");n.command=i.pop(),n.elementId=i.shift(),n.target=i.join(".")}n.parameters=StringUtil.isEmpty(a)?[]:Evaluator.parse("["+a+"]")}return n}return null}function playAudio(e){core.audio.call("stop");var t=[m_oPage.getVal("id"),e];m_oPage.call("playAudio",t.join("-"),e)}function prop(p_sProperty,p_sExpression,p_sRegExp,p_oData){var oProperties={},sExpression=Util.nullValue(p_sExpression,""),oValue=null;if(StringUtil.isEmpty(p_sRegExp))try{oValue=eval(sExpression)}catch(p_oError){oValue=StringUtil.typeCast(sExpression)}else oValue=StringUtil.typeCast(StringUtil.getRegExpGroups(sExpression,p_sRegExp));return oProperties[p_sProperty]=oValue,oProperties}function removeElement(e,t){var n=getElements(e);Util.isSet(n)&&n.call("remove",t)}function removeElements(e){for(var t=e.length,n=0;t>n;n++)removeElement(e[n],!1)}function replaceElement(e,t,n){var r=function(e,t){var r=createElement(t);return Util.isSet(r)&&(e.replaceWith(r),r.call("init"),addElements(r,t.children,!1,n),r.call("ready")),r},a=null,i=null;return ObjectUtil.is(e,String)?a=getElements(e):e.length>0&&(a=e),Util.isSet(a)?ObjectUtil.is(t,String)?(i=getElements(t),Util.isSet(i)?a.replaceWith(i):i=r(a,getElementProperties(t))):ObjectUtil.is(t,Object)&&(i=r(a,t)):error("The element '"+e+"' is invalid."),i}function replaceElements(e,t,n){var r=function(t){replaceElement(e,t,n)};ObjectUtil.is(t,Array)?t.forEach(r):r(t)}function resource(e){if(!StringUtil.isEmpty(e)){var t=core.resources.getEntry(e);Util.isSet(t)&&(StringUtil.isEmpty(t.url)||window.open(t.url))}}function saveValue(e,t,n,r){if(Util.isSet(t)&&Util.isSet(n)){var a=StringUtil.typeCast(n),i=getElementProperties(e);if(Util.isSet(i)){var o=Util.nullValue(r,!1),s=o?"param":"data",l=Util.nullValue(i[s],{});l[t]=a,i[s]=l;var c=getElements(e);Util.isSet(c)&&c.call("setVal",t,a)}}else error("Invalid call to action '"+ScriptEase.SAVE+"'.")}function select(e){var t=e.split("?"),n=t.shift(),r=StringUtil.evaluate(n);if(t.length>0){var a=t[0].split(";");return r.constructor===Boolean?r?a[0]:Util.nullValue(a[1],""):selectValue(n,a)}return r}function selectValue(e,t){var n=function(t,n,a){var i=t.split("|"),o=!1;if(i.length>1){var s=(Util.isSet(i[0].match(/^(?:[!=]=|[<>]=?)[^!=<>]+/))?"":"==")+i[0];o=StringUtil.evaluate(e+s),o&&(r=i[1])}else r=i[0];return o},r=null;return t.some(n),r}function setEnabled(e,t){var n=getElements(e);if(Util.isSet(n)){var r=Util.nullValue(t,!0);n.call("setEnabled",r)}}function setSelected(e,t){var n=getElements(e);if(Util.isSet(n)){var r=Util.nullValue(t,!0);n.call("setSelected",r)}}function setValue(p_sElementId,p_sProperty,p_sExpression,p_bPersist){var oElementProperties=getElementProperties(p_sElementId);if(Util.isSet(oElementProperties)){var oValue=null;try{oValue=eval(p_sExpression)}catch(p_oError){oValue=StringUtil.typeCast(p_sExpression)}p_bPersist&&(oElementProperties[p_sProperty]=oValue);var oElement=getElements(p_sElementId);Util.isSet(oElement)&&oElement.setVal(p_sProperty,oValue)}}function show(e,t){var n=function(e){m_oPage.getElementsById(e).visible(t)};e.constructor===String?n(e):e.constructor===Array&&e.forEach(n)}function style(e,t){var n=function(e,t,n){if(Util.isSet(e)){var a=!0;Util.isSet(n)&&(a=n.constructor===String?StringUtil.evaluate(n):n===!0),t.constructor===String?e.toggleClass(t,a):t.constructor===Array&&ArrayUtil.forEachItem(t,r,[e,a])}},r=function(e,t,r,a){n(r,e[t],a)},a=function(e,t,n){style(e[t],n)};if(StringUtil.isEmpty(e)){var i=t.shift();i.constructor===String?style(i,t):i.constructor===Array&&ArrayUtil.forEachItem(i,a,[t])}else n(getElements(e),t[0],t[1])}var _this=this;EventDispatcher.apply(_this,[]),Object.defineProperty(_this,"addElements",{value:addElements}),Object.defineProperty(_this,"event",{value:event}),Object.defineProperty(_this,"error",{value:error});var m_oPage=p_oPage,m_oPageNode=m_oPage.getVal("pageNode")}function ListFilter(){function e(e){return!0}var t=this;Object.defineProperty(t,"select",{value:e})}function ListItem(e){function t(){return a}function n(e){return a===e}var r=this;EventDispatcher.apply(r,[]),Object.defineProperty(r,"id",{enumerable:!0,get:t});var a=Util.nullValue(e,"");Object.defineProperty(r,"selectById",{value:n})}function ListIterator(e,t,n){function r(){for(var e=0,t=v.clone(),n=t.moveFirst();Util.isSet(n);)e++,n=t.moveNext();return e}function a(){return h.getItemByIndex(S,b)}function i(){return S}function o(){return new ListIterator(h,b,O)}function s(){return m(S+1)!==List.ITEM_NOT_FOUND}function l(){return g(S-1)!==List.ITEM_NOT_FOUND}function c(){return Util.isSet(v.currentItem)}function u(){return S=m(0),v.currentItem}function d(){return S=g(h.count-1),v.currentItem}function f(){return S=m(S+1),v.currentItem}function p(){return S=g(S-1),v.currentItem}function E(e){for(var t=Util.nullValue(e,""),n=v.clone(),r=n.moveFirst(),a=null,i=[];Util.isSet(r);)a=n.currentItem,i.push(""!==t?a[t]:a),r=n.moveNext();return i}function m(e){var t=h.getItemByIndex(e,b);return Util.isSet(t)?O.select(t)?e:m(e+1):List.ITEM_NOT_FOUND}function g(e){var t=h.getItemByIndex(e,b);return Util.isSet(t)?O.select(t)?e:g(e-1):List.ITEM_NOT_FOUND}var v=this;Object.defineProperty(v,"count",{get:r}),Object.defineProperty(v,"currentItem",{get:a}),Object.defineProperty(v,"currentIndex",{get:i});var S=0;Object.defineProperty(v,"clone",{value:o}),Object.defineProperty(v,"hasNext",{value:s}),Object.defineProperty(v,"hasPrevious",{value:l}),Object.defineProperty(v,"isValid",{value:c}),Object.defineProperty(v,"moveFirst",{value:u}),Object.defineProperty(v,"moveLast",{value:d}),Object.defineProperty(v,"moveNext",{value:f}),Object.defineProperty(v,"movePrevious",{value:p}),Object.defineProperty(v,"toArray",{value:E});var h=e,b=Util.nullValue(t,""),O=Util.nullValue(n,new ListFilter)}function List(){function e(){return m}function t(){return m.length}function n(e){var t=a(e.id);return t===List.ITEM_NOT_FOUND?(m.push(e),e.dispatchEvent({type:ListEvent.ADDED_TO_LIST,list:E}),E.dispatchEvent({type:ListEvent.ITEM_ADDED,item:e}),e):null}function r(){m=[],g=[],v=[]}function a(e){for(var t=e.toLowerCase(),n=E.count,r=null,a=0;n>a;a++)if(r=m[a],Util.isSet(r)&&r.id.toLowerCase()===t)return a;return List.ITEM_NOT_FOUND}function i(e){var t=E.getIndexById(e);return t===List.ITEM_NOT_FOUND?null:m[t]}function o(e,t){var n=p(e,t);return n===List.ITEM_NOT_FOUND?null:m[n]}function s(e){return Util.isSet(E.getItemById(e.id))}function l(e){return E.removeItemById(e.id)}function c(e){var t=E.getIndexById(e);return E.removeItemByIndex(t)}function u(e,t){var n=p(e,t),r=n!==List.ITEM_NOT_FOUND;return r&&m.splice(n,1),r}function d(e,t){return E.sort(e),new ListIterator(E,e,t)}function f(e){var t=ArrayUtil.CASE_INSENSITIVE|ArrayUtil.RETURN_INDEXED_ARRAY;e===List.SORT_BY_ID?g=ArrayUtil.sortItemsOn(m,"id",t):e===List.SORT_RANDOMLY&&(v=ArrayUtil.sortItems(m,t,ArrayUtil.randomized))}function p(e,n){if(e>=0&&e<t()){switch(n){case List.SORT_BY_ID:return g[e];case List.SORT_RANDOMLY:return v[e];case List.UNSORTED:}return e}return List.ITEM_NOT_FOUND}var E=this;EventDispatcher.apply(E,[]),Object.defineProperty(E,"items",{get:e});var m=[];Object.defineProperty(E,"count",{get:t}),Object.defineProperty(E,"addItem",{value:n}),Object.defineProperty(E,"clear",{configurable:!0,value:r}),Object.defineProperty(E,"getIndexById",{value:a}),Object.defineProperty(E,"getItemById",{value:i}),Object.defineProperty(E,"getItemByIndex",{configurable:!0,value:o}),Object.defineProperty(E,"hasItem",{value:s}),Object.defineProperty(E,"removeItem",{value:l}),Object.defineProperty(E,"removeItemById",{value:c}),Object.defineProperty(E,"removeItemByIndex",{value:u}),Object.defineProperty(E,"selectItems",{value:d}),Object.defineProperty(E,"sort",{configurable:!0,value:f});var g=[],v=[]}function NodeList(e){function t(){return r}var n=this;List.apply(n,[]),Object.defineProperty(n,"parent",{get:t});var r=e}function Node(e){function t(){return h.count}function n(){return h}function r(){return S.childCount>0}function a(){return Util.isSet(b)?b.getChildIndexById(S.id):List.ITEM_NOT_FOUND}function i(){return!Util.isSet(b)}function o(){return b}function s(){return S.isRoot?S:b.root}function l(e){return h.addItem(e)}function c(){var e=function(e){t.addItem(e)},t=new List;return e(S),S.forEachChild(e),t}function u(e){return h.getItemById(e)}function d(e){return h.getItemByIndex(e)}function f(e){return h.getIndexById(e)}function p(e){return b===e}function E(e){return p(e)||Util.isSet(b)&&b.isDescendantOf(e)}function m(e,t){return h.selectItems(e,t)}function g(e,t){for(var n=Util.nullValue(t,[]),r=S.selectChildren(),a=r.moveFirst(),i=0;Util.isSet(a)&&2>i;)i=Util.nullValue(e.apply(null,[a].concat(n)),0),1>i&&(i=a.forEachChild(e,n)),a=r.moveNext();return i}function v(e){b=e.list.parent}var S=this;ListItem.apply(S,[e]),Object.defineProperty(S,"childCount",{get:t}),Object.defineProperty(S,"children",{get:n});var h=new NodeList(S);Object.defineProperty(S,"hasChildren",{get:r}),Object.defineProperty(S,"index",{get:a}),Object.defineProperty(S,"isRoot",{get:i}),Object.defineProperty(S,"parent",{get:o});var b=null;Object.defineProperty(S,"root",{get:s}),Object.defineProperty(S,"addChild",{value:l}),Object.defineProperty(S,"flatten",{value:c}),Object.defineProperty(S,"getChildById",{value:u}),Object.defineProperty(S,"getChildByIndex",{value:d}),Object.defineProperty(S,"getChildIndexById",{value:f}),Object.defineProperty(S,"isChildOf",{value:p}),Object.defineProperty(S,"isDescendantOf",{value:E}),Object.defineProperty(S,"selectChildren",{value:m}),Object.defineProperty(S,"forEachChild",{value:g}),this.addEventListener(ListEvent.ADDED_TO_LIST,v)}function CTreeWalker(e,t,n){function r(){return m.length>0?m[0].currentItem:E}function a(){return E}function i(){var e=currentNode.children.selectItems(g,v),t=e.moveFirst();return Util.isSet(t)&&m.unshift(e),t}function o(){var e=currentNode.children.selectItems(g,v),t=e.moveLast();return Util.isSet(t)&&m.unshift(e),t}function s(){var e=i();if(!Util.isSet(e)){var t=null;do e=l(),t=c();while(!Util.isSet(e)&&Util.isSet(t))}return e}function l(){return m.length>0?m[0].moveNext():null}function c(){var e=currentNode.parent;return Util.isSet(e)&&m.shift(),e}function u(){var e=d();if(Util.isSet(e))for(var t=o();Util.isSet(t);)e=t,t=o();else e=c();return e}function d(){return m.length>0?m[0].movePrevious():null}function f(){m=[]}var p=this;Object.defineProperty(p,"currentNode",{get:r}),Object.defineProperty(p,"rootNode",{get:a});var E=e;Object.defineProperty(p,"firstChild",{value:i}),Object.defineProperty(p,"lastChild",{value:o}),Object.defineProperty(p,"nextNode",{value:s}),Object.defineProperty(p,"nextSibling",{value:l}),Object.defineProperty(p,"parentNode",{value:c}),Object.defineProperty(p,"previousNode",{value:u}),Object.defineProperty(p,"previousSibling",{value:d}),Object.defineProperty(p,"reset",{value:f});var m=[],g=Util.nullValue(t,""),v=Util.nullValue(n,new ListFilter)}function AjaxLoader(e){function t(t){if(i=Util.nullValue(t,""),""!==i){Debugger.write("Loading ("+i+").");var a=$.ajax({url:i,dataType:e});a.done(n),a.fail(r)}}function n(e){Debugger.write("Load succeeded ("+i+").",1),a.dispatchEvent({type:LoadEvent.LOADED,success:!0,url:i,data:e})}function r(){Debugger.write("Load failed ("+i+").",2),a.dispatchEvent({type:LoadEvent.LOADED,success:!1,url:i})}var a=this;EventDispatcher.apply(a,arguments),Object.defineProperty(a,"load",{value:t});var i=""}function BinaryLoader(){function e(){return s}function t(){Util.isSet(l)&&(l.abort(),l=null)}function n(e){t(),s=Util.nullValue(e,""),StringUtil.isEmpty(s)||(Debugger.write("Loading ("+s+")."),l=$.ajax({url:s,type:"GET",dataType:"binary",processData:!1,contentType:r(s)}),l.done(a),l.fail(i))}function r(e){var t=e.slice(e.lastIndexOf(".")+1);return Util.nullValue(ContentType[t],"")}function a(e){l=null,Debugger.write("Load succeeded ("+s+").",1),o.dispatchEvent({type:LoadEvent.LOADED,success:!0,url:s,data:e})}function i(){l=null,Debugger.write("Load failed ("+s+").",2),o.dispatchEvent({type:LoadEvent.LOADED,success:!1,url:s})}var o=this;EventDispatcher.apply(o,arguments),Object.defineProperty(o,"url",{get:e});var s="";Object.defineProperty(o,"cancel",{
value:t}),Object.defineProperty(o,"load",{value:n});var l=null}function History(e){function t(){return l[s]}function n(e){l=l.slice(0,s+1);var t=l.push(e);t>o&&(l.shift(),t--),s=t-1}function r(){return s=Math.min(l.length-1,s+1),t()}function a(){return s=Math.max(0,s-1),t()}var i=this;Object.defineProperty(i,"currentItem",{get:t}),Object.defineProperty(i,"addItem",{value:n}),Object.defineProperty(i,"moveNext",{value:r}),Object.defineProperty(i,"movePrevious",{value:a});var o=e,s=0,l=[]}function HtmlLoader(){var e=this;AjaxLoader.apply(e,["html"])}function ImageLoader(){function e(){return o}function t(){Util.isSet(s)&&(s.src="",s=null)}function n(e){t(),o=Util.nullValue(e,""),StringUtil.isEmpty(o)||(Debugger.write("Loading ("+o+")."),s=new Image,s.addEventListener(LoadEvent.LOAD,r),s.addEventListener(LoadEvent.ERROR,a),s.src=o)}function r(e){Debugger.write("Load succeeded ("+o+").",1),i.dispatchEvent({type:LoadEvent.LOADED,success:!0,url:o,data:e.target})}function a(e){Debugger.write("Load failed ("+o+").",2),i.dispatchEvent({type:LoadEvent.LOADED,success:!1,url:o})}var i=this;EventDispatcher.apply(i,arguments),Object.defineProperty(i,"url",{get:e});var o="";Object.defineProperty(i,"cancel",{value:t}),Object.defineProperty(i,"load",{value:n});var s=null}function JSONLoader(){function e(e){if(a=Util.nullValue(e,""),""!==a){Debugger.write("Loading ("+a+").");var r=$.getJSON(a);r.done(t),r.fail(n)}}function t(e){Debugger.write("Load succeeded ("+a+").",1),r.dispatchEvent({type:LoadEvent.LOADED,success:!0,url:a,data:e})}function n(){Debugger.write("Load failed ("+a+").",2),r.dispatchEvent({type:LoadEvent.LOADED,success:!1,url:a})}var r=this;EventDispatcher.apply(r,arguments),Object.defineProperty(r,"load",{value:e});var a=""}function JSONMergeLoader(){function e(){if(r.length>0){var e=new JSONLoader;e.addEventListener(LoadEvent.LOADED,t),e.load(r.shift())}else n.dispatchEvent({type:LoadEvent.LOADED,success:!0,data:i})}function t(t){t.success?(a?$.extend(i,t.data):$.extend(!0,i,t.data),e()):n.dispatchEvent({type:LoadEvent.LOADED,success:!1})}var n=this;EventDispatcher.apply(this,arguments);var r=null,a=!1,i=null;this.load=function(t,n){r=t,a=Util.nullValue(n,!1),i={},e()}}function SvgLoader(){function e(e){var n=new TextLoader;n.addEventListener(LoadEvent.LOADED,t),n.load(e)}function t(e){n.dispatchEvent({type:LoadEvent.LOADED,success:!0,url:e.url,data:$(e.data)})}var n=this;EventDispatcher.apply(n,arguments),Object.defineProperty(n,"load",{value:e})}function TextLoader(){var e=this;AjaxLoader.apply(e,["text"])}function Version(){function e(e){for(var t=e.toArray(),n=Math.max(l.length,t.length),r={},a=0;n>a;a++){if(r.left=Util.nullValue(l[a],0),r.right=Util.nullValue(t[a],0),r.left>r.right)return 1;if(r.left<r.right)return-1}return 0}function t(t){return-1===e(t)}function n(t){return 1===e(t)}function r(){return l.slice()}function a(){return l.join(".")}function i(e){switch(e[0].constructor){case Array:return e[0];case String:return e[0].split(".")}return e}function o(e){var t=[],n=0;for(var r in e)e.hasOwnProperty(r)&&(n=Number(e[r]),t.push(isNaN(n)?0:n));return t.length>0?t:[0]}var s=this;Object.defineProperty(s,"compare",{value:e}),Object.defineProperty(s,"isEarlierThan",{value:t}),Object.defineProperty(s,"isLaterThan",{value:n}),Object.defineProperty(s,"toArray",{value:r}),Object.defineProperty(s,"toString",{value:a});var l=i(arguments);l=o(i(arguments))}function XMLLoader(){var e=this;AjaxLoader.apply(e,["xml"])}AskTheExpertEntryList.SORT_BY_QUESTION="sortByQuestion";var AnimationEvent={COMPLETE:"animcomplete"},AssessmentEvent={COMPLETED:"completed",NEXT_QUESTION:"next-question",SHOW_QUESTION:"show-question"},ConfigEvent={CHANGE:"change"},CoreEvent={DATA:"data",SETTING:"setting"},CourseEvent={NAVIGATE:"navigate"},DialogEvent={RESPONSE:"response"},DragEvent={DRAG:"drag",DROP:"drop",END:"dragend",ENTER:"dragenter",EXIT:"dragexit",FINISH:"dragfinish",LEAVE:"dragleave",OVER:"dragover",START:"dragstart"},ElementEvent={ADDED:"added",CHANGE:"change",ENABLED:"enabled",HOVER:"hover",INIT:"init",JS_ECHO:"jsecho",READY:"ready",REMOVED:"removed",RESELECT:"reselect",SELECT:"select",STATE:"state"},FocusEvent={BLUR:"blur",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout"},GestureEvent={SWIPE:"swipe"},KeyboardEvent={KEY_DOWN:"keydown"},LicenceEvent={VALIDATION_COMPLETED:"validationcompleted",VALIDATION_FAILED:"validationfailed"},ListEvent={ADDED_TO_LIST:"addedtolist",ITEM_ADDED:"itemadded"},LmsEvent={INCOMPATIBLE_DATA:"incompatibledata",INITIALIZATION_SUCCEEDED:"initializationsucceeded",INITIALIZATION_FAILED:"initializationfailed",INVALID_SCORM_VERSION:"invalidscormversion",UNEXPECTED_ERROR:"unexpectederror"},LoadEvent={BEFORE_UNLOAD:"beforeunload",ERROR:"error",LOAD:"load",LOADED:"loaded",PROGRESS:"progress",UNLOAD:"unload"},MediaEvent={ADD_TRACK:"addtrack",CAN_PLAY:"canplay",CUE_CHANGE:"cuechange",DISABLED:"disabled",ENDED:"ended",FRAME:"frame",PAUSE:"pause",PLAY:"play",SEEKED:"seeked",SEEKING:"seeking",TIME_UPDATE:"timeupdate"},MouseEvent={CLICK:"click",DOWN:"mousedown",ENTER:"mouseenter",LEAVE:"mouseleave",MOVE:"mousemove",OUT:"mouseout",OVER:"mouseover",UP:"mouseup"},PageEvent={BOOKMARK:"bookmark",FINISH:"finish",START:"start"},PageNodeEvent={BOOKMARKED:"bookmarked"},ProgressEvent={CONTINUE:"continue",SET_CONTINUE:"setcontinue"},QuestionEvent={CONFIRM:"confirm",RESET:"reset"},SearchEvent={CLEAR_FILTER:"clearfilter",FIND:"find"},TextEvent={PARAGRAPH:"paragraph"},TimerEvent={CUE:"cue",TIMEOUT:"timeout"},TouchEvent={CANCEL:"touchcancel",END:"touchend",MOVE:"touchmove",START:"touchstart"},WindowEvent={ORIENTATION_CHANGE:"orientationchange",RESIZE:"resize"},Align={BOTTOM:"bottom",CENTER:"center",LEFT:"left",MIDDLE:"middle",RIGHT:"right",TOP:"top"};GlossaryEntryList.SORT_BY_TERM="sortByTerm",LmsScorm12.ENTRY="cmi.core.entry",LmsScorm12.LESSON_LOCATION="cmi.core.lesson_location",LmsScorm12.LESSON_MODE="cmi.core.lesson_mode",LmsScorm12.LESSON_STATUS="cmi.core.lesson_status",LmsScorm12.SCORE_MAX="cmi.core.score.max",LmsScorm12.SCORE_MIN="cmi.core.score.min",LmsScorm12.SCORE_RAW="cmi.core.score.raw",LmsScorm12.SESSION_TIME="cmi.core.session_time",LmsScorm12.STUDENT_ID="cmi.core.student_id",LmsScorm12.STUDENT_NAME="cmi.core.student_name",LmsScorm12.SUSPEND_DATA="cmi.suspend_data",LmsScorm2004.COMPLETION_STATUS="cmi.completion_status",LmsScorm2004.ENTRY="cmi.entry",LmsScorm2004.LESSON_LOCATION="cmi.location",LmsScorm2004.LESSON_MODE="cmi.mode",LmsScorm2004.SCORE_MAX="cmi.score.max",LmsScorm2004.SCORE_MIN="cmi.score.min",LmsScorm2004.SCORE_RAW="cmi.score.raw",LmsScorm2004.SESSION_TIME="cmi.session_time",LmsScorm2004.STUDENT_ID="cmi.learner_id",LmsScorm2004.STUDENT_NAME="cmi.learner_name",LmsScorm2004.SUCCESS_STATUS="cmi.success_status",LmsScorm2004.SUSPEND_DATA="cmi.suspend_data",LmsScormProxy.NONE=0,LmsScormProxy.LOCAL=1,LmsScormProxy.REMOTE=2,LmsSettings.AUDIO_ENABLED=0,LmsSettings.FOCUS_OUTLINE=1,LmsSettings.HIGH_CONTRAST=2,LmsSettings.VIDEO_SUBTITLES=3,LmsStudentName.LAST_NAME=0,LmsStudentName.FIRST_NAME=1,Lms.COMPRESSION_RADIX=36,Lms.RECORD_DELIMITER=";",Lms.FIELD_DELIMITER=",",Lms.deflate=function(e){return StringUtil.binToHex("1"+e)},Lms.inflate=function(e){return StringUtil.hexToBin(e).substr(1)},ScormCompletionStatus.NOT_ATTEMPTED="not attempted",ScormCompletionStatus.INCOMPLETE="incomplete",ScormCompletionStatus.COMPLETED="completed",ScormCompletionStatus.UNKNOWN="unknown",ScormEntry.AB_INITIO="ab-initio",ScormEntry.RESUME="resume";var ScormErrorCode12={NO_ERROR:0,GENERAL_EXCEPTION:101,INVALID_ARGUMENT:201,CANNOT_HAVE_CHILDREN:202,NOT_AN_ARRAY:203,NOT_INITIALIZED:301,NOT_IMPLEMENTED:401,INVALID_SET_VALUE:402,READ_ONLY:403,WRITE_ONLY:404,INCORRECT_DATA_TYPE:405,toString:function(e){switch(e){case ScormErrorCode12.GENERAL_EXCEPTION:return"scorm-general-exception";case ScormErrorCode12.INVALID_ARGUMENT:return"scorm-invalid-argument";case ScormErrorCode12.CANNOT_HAVE_CHILDREN:return"scorm-cannot-have-children";case ScormErrorCode12.NOT_AN_ARRAY:return"scorm-not-an-array";case ScormErrorCode12.NOT_INITIALIZED:return"scorm-not-initialized";case ScormErrorCode12.NOT_IMPLEMENTED:return"scorm-not-implemented";case ScormErrorCode12.INVALID_SET_VALUE:return"scorm-invalid-set-value";case ScormErrorCode12.READ_ONLY:return"scorm-read-only";case ScormErrorCode12.WRITE_ONLY:return"scorm-write-only";case ScormErrorCode12.INCORRECT_DATA_TYPE:return"scorm-incorrect-data-type"}return"scorm-no-error"}},ScormErrorCode2004={NO_ERROR:0,GENERAL_EXCEPTION:101,GENERAL_INITIALIZATION_FAILURE:102,ALREADY_INITIALIZED:103,INSTANCE_TERMINATED:104,TERMINATION_FAILURE:111,TERMINATION_BEFORE_INITIALIZATION:112,TERMINATION_AFTER_TERMINATION:113,GET_BEFORE_INITIALIZATION:122,GET_AFTER_TERMINATION:123,SET_BEFORE_INITIALIZATION:132,SET_AFTER_TERMINATION:133,COMMIT_BEFORE_INITIALIZATION:142,COMMIT_AFTER_TERMINATION:143,ARGUMENT_ERROR:201,GET_FAILURE:301,SET_FAILURE:351,COMMIT_FAILURE:391,UNDEFINED_ELEMENT:401,NOT_IMPLEMENTED:402,VALUE_NOT_INITIALIZED:403,READ_ONLY:404,WRITE_ONLY:405,TYPE_MISMATCH:406,VALUE_OUT_OF_RANGE:407,DEPENDENCY_NOT_ESTABLISHED:408,toString:function(e){switch(e){case ScormErrorCode2004.GENERAL_EXCEPTION:return"scorm-general-exception";case ScormErrorCode2004.GENERAL_INITIALIZATION_FAILURE:return"scorm-general-initialization-failure";case ScormErrorCode2004.ALREADY_INITIALIZED:return"scorm-already-initialized";case ScormErrorCode2004.INSTANCE_TERMINATED:return"scorm-instance-terminated";case ScormErrorCode2004.TERMINATION_FAILURE:return"scorm-termination-failure";case ScormErrorCode2004.TERMINATION_BEFORE_INITIALIZATION:return"scorm-termination-before-initialization";case ScormErrorCode2004.TERMINATION_AFTER_TERMINATION:return"scorm-termination-after-termination";case ScormErrorCode2004.GET_BEFORE_INITIALIZATION:return"scorm-get-before-initialization";case ScormErrorCode2004.GET_AFTER_TERMINATION:return"scorm-get-after-termination";case ScormErrorCode2004.SET_BEFORE_INITIALIZATION:return"scorm-set-before-initialization";case ScormErrorCode2004.SET_AFTER_TERMINATION:return"scorm-set-after-termination";case ScormErrorCode2004.COMMIT_BEFORE_INITIALIZATION:return"scorm-commit-before-initialization";case ScormErrorCode2004.COMMIT_AFTER_TERMINATION:return"scorm-commit-after-termination";case ScormErrorCode2004.ARGUMENT_ERROR:return"scorm-argument-error";case ScormErrorCode2004.GET_FAILURE:return"scorm-get-failure";case ScormErrorCode2004.SET_FAILURE:return"scorm-set-failure";case ScormErrorCode2004.COMMIT_FAILURE:return"scorm-commit-failure";case ScormErrorCode2004.UNDEFINED_ELEMENT:return"scorm-undefined-element";case ScormErrorCode2004.NOT_IMPLEMENTED:return"scorm-not-implemented";case ScormErrorCode2004.VALUE_NOT_INITIALIZED:return"scorm-value-not-initialized";case ScormErrorCode2004.READ_ONLY:return"scorm-read-only";case ScormErrorCode2004.WRITE_ONLY:return"scorm-write-only";case ScormErrorCode2004.TYPE_MISMATCH:return"scorm-type-mismatch";case ScormErrorCode2004.VALUE_OUT_OF_RANGE:return"scorm-value-out-of-range";case ScormErrorCode2004.DEPENDENCY_NOT_ESTABLISHED:return"scorm-dependency-not-established"}return"scorm-no-error"}},ScormErrorCode={NO_ERROR:0,GENERAL_EXCEPTION:101,INVALID_ARGUMENT:201,CANNOT_HAVE_CHILDREN:202,NOT_AN_ARRAY:203,NOT_INITIALIZED:301,NOT_IMPLEMENTED:401,INVALID_SET_VALUE:402,READ_ONLY:403,WRITE_ONLY:404,INCORRECT_DATA_TYPE:405,toString:function(e){switch(e){case ScormErrorCode.GENERAL_EXCEPTION:return"scorm-general-exception";case ScormErrorCode.INVALID_ARGUMENT:return"scorm-invalid-argument";case ScormErrorCode.CANNOT_HAVE_CHILDREN:return"scorm-cannot-have-children";case ScormErrorCode.NOT_AN_ARRAY:return"scorm-not-an-array";case ScormErrorCode.NOT_INITIALIZED:return"scorm-not-initialized";case ScormErrorCode.NOT_IMPLEMENTED:return"scorm-not-implemented";case ScormErrorCode.INVALID_SET_VALUE:return"scorm-invalid-set-value";case ScormErrorCode.READ_ONLY:return"scorm-read-only";case ScormErrorCode.WRITE_ONLY:return"scorm-write-only";case ScormErrorCode.INCORRECT_DATA_TYPE:return"scorm-incorrect-data-type"}return"scorm-no-error"}},ScormLessonMode={BROWSE:"browse",NORMAL:"normal",REVIEW:"review"};ScormLessonStatus.NOT_ATTEMPTED="not attempted",ScormLessonStatus.BROWSED="browsed",ScormLessonStatus.INCOMPLETE="incomplete",ScormLessonStatus.COMPLETED="completed",ScormLessonStatus.FAILED="failed",ScormLessonStatus.PASSED="passed",ScormSessionTime12.HOURS_DIGITS=4,ScormSessionTime12.MINUTES_DIGITS=2,ScormSessionTime12.SECONDS_DIGITS=2,ScormSessionTime12.DECIMAL_DIGITS=2,ScormSuccessStatus.PASSED="passed",ScormSuccessStatus.FAILED="failed",ScormSuccessStatus.UNKNOWN="unknown",ScormSuspendData.SESSION_ID=0,ScormSuspendData.TIME_STAMP=1,ScormSuspendData.COMPATIBILITY_VERSION=2,ScormSuspendData.SETTINGS=3,ScormSuspendData.COURSE_DATA=4,ScormSuspendData.COMPLETED_PAGES=5,ScormSuspendData.BOOKMARKED_PAGES=6,ScormSuspendData.RECOMMENDED_PAGES=7,ScormSuspendData.ASSESSMENT_DATE=8,ScormSuspendData.POLICY_ACCEPTED=9,ScormSuspendData.FRAMEWORK=10,ScormSuspendData.ASSESSMENT_SCORE=11;var AssessmentReattempt={ALWAYS:"always",FAIL:"fail",NEVER:"never"};Assessment.DEFAULT_PASS_MARK=80,Assessment.MAXIMUM_SCORE=100,Assessment.MINIMUM_SCORE=0,Core.FRAMEWORK="fw3";var ErrorCode={INVALID_LICENCE:"invalid-licence",LICENCE_EXPIRED:"licence-expired",LMS_INCOMPATIBLE_DATA:"lms-incompatible-data",LMS_INITIALIZATION_FAILED:"lms-initialization-failed",LMS_SAVE_FAILED:"lms-save-failed"};Licence.REMOTE_TIMEOUT=1e4;var Navigation={ADVANCE:"advance",CHILD_PAGE:"child-page",HOME_PAGE:"home-page",NEXT_PAGE:"next-page",NEXT_SECTION:"next-section",PAGE_BY_ID:"page-by-id",PREVIOUS_PAGE:"previous-page",REPLAY_PAGE:"replay-page"},Path={ASSETS:"assets/",DATA:"data/"},RecordAssessmentResult={HIGHEST_SCORE:"highest-score",LATEST_ATTEMPT:"latest-attempt"},SelectionMode={BUTTON:"button",SWITCH:"switch"},TabOrder={VIEW:1,PAGE_CONTENT:2,FOOTER_BAR_BUTTONS:3,HEADER_BAR_BUTTONS:4,TOOLKIT_BUTTONS:5,PAGE_ICONS:6};ResourceEntryList.SORT_BY_NAME="sortByName";var ScriptEaseBranch={getActions:function(e,t){var n=function(e){var t=e.match(/^\s*compare:(.*)/);return Util.isSet(t)&&(t=t[1].match(/([^,]*),(.*)/),Util.isSet(t))?StringUtil.compare(t[1],t[2]):null},r=function(e){var r="",a=null;for(var i in e)if(e.hasOwnProperty(i))return r=StringUtil.parseVars(i,t),a=n(r),Util.isSet(a)||(a=StringUtil.evaluate(r)),a.constructor===Boolean&&a?e[i]:null;return null},a=function(e){var t=e.constructor;return t===Array?o=e:t===Object&&(o=r(e)),null!=o},i=e.constructor,o=null;return i===Array?e.some(a):i===Object&&(o=r(e)),o}};ScriptEase.ADD="add",ScriptEase.ALIGN="align",ScriptEase.ANIMATE="animate",ScriptEase.ARIA="aria",ScriptEase.ATTACH="attach",ScriptEase.AUDIO="audio",ScriptEase.BRANCH="branch",ScriptEase.CALC="calc",ScriptEase.CALL="call",ScriptEase.CLEAR="clear",ScriptEase.CLONE="clone",ScriptEase.ENABLE="enable",ScriptEase.EVALUATE="evaluate",ScriptEase.EXECUTE="execute",ScriptEase.EXTEND="extend",ScriptEase.FINISH="finish",ScriptEase.FIT="fit",ScriptEase.FORMAT="format",ScriptEase.GET="get",ScriptEase.HIDE="hide",ScriptEase.HIGHLIGHT="highlight",ScriptEase.JS_CALL="jscall",ScriptEase.LOAD="load",ScriptEase.NAVIGATE="navigate",ScriptEase.PLAY="play",ScriptEase.PROP="prop",ScriptEase.REMOVE="remove",ScriptEase.REPLACE="replace",ScriptEase.RESOURCE="resource",ScriptEase.SAVE="save",ScriptEase.SET="set",ScriptEase.SHOW="show",ScriptEase.START="start",ScriptEase.STOP="stop",ScriptEase.STYLE="style",ScriptEase.TRACE="trace",List.ITEM_NOT_FOUND=-1,List.SORT_BY_ID="sortById",List.SORT_RANDOMLY="sortRandomly",List.UNSORTED="unsorted";var ArrayUtil={CASE_INSENSITIVE:1,DESCENDING:2,UNIQUE_SORT:4,RETURN_INDEXED_ARRAY:8,NUMERIC:16,every:function(e,t,n){for(var r=e.length,a=0;r>a;a++)if(t.apply(null,[e,a].concat(n))===!1)return!1;return!0},forEachItem:function(e,t,n){for(var r=e.length,a=0;r>a;a++)t.apply(null,[e,a].concat(n))},getFieldValues:function(e,t){for(var n=e.length,r=[],a=0;n>a;a++)r.push(e[a][t]);return r},getItem:function(e,t,n){var r=ArrayUtil.getItemIndex(e,t,n);return r>-1?e[r]:null},getItemIndex:function(e,t,n){for(var r=e.length,a=0;r>a;a++)if(t.apply(null,[e,a].concat(n)))return a;return-1},exists:function(e,t){var n=function(e,n){return e[n]===t};return ArrayUtil.getItemIndex(e,n)>-1},merge:function(e){for(var t=function(t){e.push(t)},n=arguments.length,r=1;n>r;r++)arguments[r].forEach(t);return e},ordered:function(e,t){return e>t?1:t>e?-1:0},orderedLocale:function(e,t){var n=Util.nullValue(core.config.locale,"en-gb"),r=e.localeCompare(t,n);return r>0?1:0>r?-1:0},randomized:function(){var e=10;return Math.round(Math.random()*e*2-e)},removeDuplicates:function(e){var t=function(e){return e===a},n=function(e){a=e,r.some(t)||r.push(e)},r=[],a=null;return e.forEach(n),r},search:function(e,t,n){var r=function(e,n,r){var a=e.constructor;a===s?l(e)&&o.push(e):c&&(a===Array?o=o.concat(ArrayUtil.search(oValue,t)):a===Object&&(o=o.concat(ObjectUtil.search(oValue,t))))},a=function(e){return e===t},i=function(e){return StringUtil.compare(e,t)},o=[],s=t.constructor,l=s===String?i:a,c=Util.nullValue(n,!0);return e.forEach(r),o},some:function(e,t,n){for(var r=e.length,a=0;r>a;a++)if(t.apply(null,[e,a].concat(n))===!0)return!0;return!1},sortItems:function(e,t,n){return ArrayUtil.sortItemsOn(e,"",t,n)},sortItemsOn:function(e,t,n,r){function a(){for(var t=e.length,n=null,r=[],a=0;t>a;a++)n=StringUtil.isEmpty(o)?e[a]:e[a][o],r.push({index:a,value:n});return r}function i(e,t){var n=e,r=t;return StringUtil.isEmpty(o)||(n=n[o],r=r[o]),c&&(n.constructor===String&&(n=n.toLowerCase()),r.constructor===String&&(r=r.toLowerCase())),l(n,r)*f}var o=Util.nullValue(t,""),s=Util.nullValue(n,0),l=Util.nullValue(r,ArrayUtil.ordered),c=Boolean(s&ArrayUtil.CASE_INSENSITIVE),u=Boolean(s&ArrayUtil.RETURN_INDEXED_ARRAY),d=s&ArrayUtil.DESCENDING,f=-2*d+1;if(u){s=(s|ArrayUtil.RETURN_INDEXED_ARRAY)^ArrayUtil.RETURN_INDEXED_ARRAY;var p=ArrayUtil.sortItemsOn(a(),"value",s,l);return ArrayUtil.getFieldValues(p,"index")}return e.slice().sort(i)},toBinStr:function(e){var t=function(e){n+=BooleanUtil.toBinStr(e)},n="";return e.forEach(t),n},toInt:function(e){return parseInt(ArrayUtil.toBinStr(e),2)},toObj:function(e){var t=function(e,t){n[t]=e},n={};return e.forEach(t),n},transpose2D:function(e){var t=function(t,n){var r=function(e){return e[n]};return e.map(r)};return e[0].map(t)}},BooleanUtil={toBinStr:function(e){return e===!0?"1":"0"},xor:function(e,t){return e!==t}},ContentType={gif:"image/gif",jpg:"image/jpeg",pdf:"application/pdf",png:"image/png"},Crypto={encrypt:function(e){var t=core.config["rsa-public-key"];if(Util.isSet(t)){var n=new RSAKey;return n.setPublic(t.n,t.e),n.encrypt(e)}return""}},DateUtil={format:function(e){var t=Util.nullValue(core.config.locale,"en-gb");return e.toLocaleDateString(t)},toString:function(e){var t=e.getDate(),n=e.getMonth()+1,r=[e.getFullYear()];return r.push((10>n?"0":"")+n),r.push((10>t?"0":"")+t),r.join("-")}},Debugger={ACTIVE:!1,write:function(e,t){Debugger.ACTIVE&&console.log("DEBUG: "+e)}},DragAxis={HORIZONTAL:1,VERTICAL:2,BOTH:3},Evaluator={parse:function(e){var t=function(e,t,n){n.push(i(e[t]))},n=function(e,t,n){var r=e[t].split(":");n[r[0]]=i(r[1])},r=function(e){var n=[];return StringUtil.isEmpty(e)||ArrayUtil.forEachItem(e.split(","),t,[n]),n},a=function(e){var t={};return StringUtil.isEmpty(e)||ArrayUtil.forEachItem(e.split(","),n,[t]),t},i=function(e){var t=e.match(/\$(\d+)/);return Util.isSet(t)?f[Number(t[1])]:StringUtil.typeCast(e)},o=function(e,t){do d=!1,p=p.replace(e,t);while(d)},s=function(){return u(r(arguments[1]))},l=function(){return u(a(arguments[1]))},c=function(){return u(arguments[2])},u=function(e){d=!0;var t=f.push(e)-1;return"$"+t};if(!StringUtil.isEmpty(e)){var d=!1,f=[],p=e.replace(/('|")((?:\\\1|.)*?)\1/g,c);p=p.replace(/\s*/g,""),o(/\[([^\[]*?)\]/g,s),o(/{([^{]*?)}/g,l);var E=f.length;return E>0?f[E-1]:StringUtil.typeCast(p)}return null},stringify:function(e){var t=function(e){var t=[];if(ObjectUtil.is(e,Array)){for(var n=e.length,r=0;n>r;r++)t.push(Evaluator.stringify(e[r]));return"["+t.join(",")+"]"}for(var a in e)e.hasOwnProperty(a)&&t.push(a+":"+Evaluator.stringify(e[a]));return"{"+t.join(",")+"}"};switch(typeof e){case"object":return t(e);case"string":return'"'+e+'"'}return String(e)}},Key={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CONTROL:17,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46,NUMBER_0:48,NUMBER_1:49,NUMBER_2:50,NUMBER_3:51,NUMBER_4:52,NUMBER_5:53,NUMBER_6:54,NUMBER_7:55,NUMBER_8:56,NUMBER_9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,KEYPAD_0:96,KEYPAD_1:97,KEYPAD_2:98,KEYPAD_3:99,KEYPAD_4:100,KEYPAD_5:101,KEYPAD_6:102,KEYPAD_7:103,KEYPAD_8:104,KEYPAD_9:105,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUM_LOCK:144,COMMA:188,PERIOD:190},KeyboardShortcut={getKeyFunction:function(e){var t=function(e,t){var r=e[t],i=ObjectUtil.is(r,Array)?r.some(n):n(r);return i&&(a=t),i},n=function(e){var t=e;if(ObjectUtil.is(e,String)){var n=e.toUpperCase();t=Key[n]}return r(t)},r=function(t){return t===e},a="";return e===Key.ENTER?a="select":ObjectUtil.some(core.config["keyboard-shortcuts"],t),a}},Layout={getCoordinates:function(e){function t(e){var t={h:!1,v:!1};if(Util.isSet(e)){var n=e.constructor;n===Boolean?(t.h=e,t.v=e):n===Object&&(t.h=Util.nullValue(e.h,!1),t.v=Util.nullValue(e.v,!1))}return t}function n(e){return[]}function r(e){var n=a(e.origin),r=a(e.delta),i=a(e.init),s=t(e.distribute),l=o(e.range),c=Util.nullValue(e.count,0),u=c-1,d=[];s.h?(r.x=Util.nullValue(l.h,0)/u,i.x=n.x):i.x+=n.x,s.v?(r.y=Util.nullValue(l.v,0)/u,i.y=n.y):i.y+=n.y;for(var f=0;c>f;f++)d.push({left:i.x,top:i.y}),i.x+=r.x,i.y+=r.y;return d}function a(e){var t={x:0,y:0};if(Util.isSet(e)){var n=e.constructor;n===Number?(t.x=e,t.y=e):n===Object&&(t.x=Util.nullValue(e.x,0),t.y=Util.nullValue(e.y,0))}return t}function i(e){var t=a(e.origin),n=Util.nullValue(e.delta,0),r=Util.nullValue(e.init,0),i=Util.nullValue(e.radius,0),o=Util.nullValue(e.distribute,!1),s=Util.nullValue(e.range,360),l=Util.nullValue(e.count,0),c=Math.PI/180,u=0,d=null,f=[];o&&(n=s/l);for(var p=0;l>p;p++)u=r*c,d={left:Math.round(Math.cos(u)*i+t.x),top:Math.round(Math.sin(u)*i+t.y)},f.push(d),r+=n;return f}function o(e){var t={h:0,v:0};if(Util.isSet(e)){var n=e.constructor;n===Number?(t.h=e,t.v=e):n===Object&&(t.h=Util.nullValue(e.x,0),t.v=Util.nullValue(e.y,0))}return t}switch(e.type){case"grid":return n(e);case"linear":return r(e);case"radial":return i(e)}return[]}},NumberUtil={bitCount:function(e){for(var t=0;e>0;)t+=1&e,e>>=1;return t},constrain:function(e,t,n){var r=Math.max(t,e),a=isNaN(r)?e:r,i=Math.min(a,n);return isNaN(i)?a:i},divide:function(e,t){return{quotient:Math.floor(e/t),remainder:e%t}},fix:function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n},getBit:function(e,t){return Boolean(e&1<<t)},inRange:function(e,t,n){return e>=t&&n>=e},isEven:function(e){return Boolean(0&e)},isOdd:function(e){return Boolean(1&e)},nanValue:function(e,t){return isNaN(e)?t:e},setBit:function(e,t,n){var r=Util.nullValue(n,!0);return r?e|1<<t:e&~(1<<t)},kDelimit:function(e){return StringUtil.delimit(String(e),3,",")},toBinArray:function(e){for(var t=e,n=[];t>0;)n.unshift(1&t),t>>>=1;return n},toggleBit:function(e,t){return e^=1<<t}},ObjectUtil={count:function(e){var t=function(){n++},n=0;return ObjectUtil.forEachItem(e,t),n},every:function(e,t,n){for(var r in e)if(e.hasOwnProperty(r)&&t.apply(null,[e,r].concat(n))===!1)return!1;return!0},extend:function(e,t,n){var r=function(e,t,n){var r=e[t];if(ObjectUtil.is(r,Object)){var a=n[t];n[t]=i(ObjectUtil.is(a,Object)?a:{},r)}else ObjectUtil.is(r,Array)?n[t]=r.slice():n[t]=r},a=function(t){i(e,t)},i=function(e,t){return ObjectUtil.forEachItem(t,r,[e]),e};Util.nullValue(n,{});return ObjectUtil.is(t,Object)?a(t):ObjectUtil.is(t,Array)&&t.forEach(a),e},findProperties:function(e,t){var n=function(e,n){var a=[];(StringUtil.compare(n,t,a)||StringUtil.compare(t,n,a))&&r.push({value:e[n],match:a})},r=[];return ObjectUtil.forEachItem(e,n),r},forEachItem:function(e,t,n){for(var r in e)e.hasOwnProperty(r)&&t.apply(null,[e,r].concat(n))},is:function(e,t){return Util.isSet(e)&&e.constructor===t},map:function(e,t,n){var r={};for(var a in e)e.hasOwnProperty(a)&&(r[a]=t.apply(null,[e,a].concat(n)));return r},search:function(e,t,n){var r=function(e,n){var r=e[n],a=r.constructor;a===s?l(r)&&o.push(r):c&&(a===Array?o=o.concat(ArrayUtil.search(r,t)):a===Object&&(o=o.concat(ObjectUtil.search(r,t))))},a=function(e){return e===e},i=function(e){return StringUtil.compare(e,e)},o=[],s=t.constructor,l=s===String?i:a,c=Util.nullValue(n,!0);return ObjectUtil.forEachItem(e,r),o},some:function(e,t,n){for(var r in e)if(e.hasOwnProperty(r)&&t.apply(null,[e,r].concat(n))===!0)return!0;return!1},toArray:function(e){var t=function(e,t){n.push({property:t,value:e[t]})},n=[];return ObjectUtil.forEachItem(e,t),n},toKVP:function(e){var t=function(e,t){n.push(t+"="+e[t])},n=[];return ObjectUtil.forEachItem(e,t),n.join(",")},toQuery:function(e){var t=function(e,t){n.push(t+"="+encodeURIComponent(e[t]))},n=[];return ObjectUtil.forEachItem(e,t),n.join("&")}},ScaleMode={CUSTOM:"custom",FIT_MIN:"fitMin",FIT_MAX:"fitMax",FIT_HEIGHT:"fitHeight",FIT_WIDTH:"fitWidth",NO_SCALE:"noScale"},Search={find:function(e,t){function n(e){return StringUtil.compare(s,e)}function r(e){return s=e,o.some(n)}function a(e){for(var t=/(?:("|')(.+?)\1)|(?:[^"'\s]+)/g,n=t.exec(e),r=[];Util.isSet(n);)r.push(Util.nullValue(n[2],n[0])),n=t.exec(e);return r}var i=a(e),o=a(t),s="";return i.some(r)}},StageAlign={BOTTOM:"B",BOTTOM_LEFT:"BL",BOTTOM_RIGHT:"BR",LEFT:"L",RIGHT:"R",TOP:"T",TOP_LEFT:"TL",TOP_RIGHT:"TR"},StageScaleMode={EXACT_FIT:"exactFit",NO_BORDER:"noBorder",NO_SCALE:"noScale",SHOW_ALL:"showAll"},StringUtil={binToHex:function(e){var t=e.length,n="";if(t>0){var r=4,a=Math.pow(2,r),i=t%r,o=0;i>0&&(o=parseInt(e.substr(0,i),2),o>0&&(n+=o.toString(a)));for(var s=i;t>s;s+=r)o=parseInt(e.substr(s,r),2),n+=o.toString(a)}return n},compare:function(e,t,n){var r=Util.nullValue(e,""),a=r.match(t);return Util.isSet(a)?(ObjectUtil.is(n,Array)&&ArrayUtil.merge(n,a),a[0]===r):!1},delimit:function(e,t,n){var r=e.length,a=r%t,i=[];for(a>0&&i.push(e.substr(0,a));r>a;)i.push(e.substr(a,t)),a+=t;return i.join(n)},empty:function(e,t){return StringUtil.isEmpty(e)?t:e},evaluate:function(p_sExpression,p_bSuppressError){try{return eval(p_sExpression)}catch(p_oError){var bSuppressError=Util.nullValue(p_bSuppressError,!1);bSuppressError||console.error("Cannot evaluate '"+p_sExpression+"'.")}return p_sExpression},getRegExpGroups:function(p_sValue,p_oRegExp){var fGetRegExp=function(p_sRegExp){if(ObjectUtil.is(p_sRegExp,String)){try{var oRegExp=eval(p_sRegExp);if(ObjectUtil.is(oRegExp,RegExp))return oRegExp}catch(oError){}return new RegExp(p_sRegExp)}return null},fGetRegExpGroups=function(e){var t=e.match(oRegExp);return oRegExp.global?(oRegExp=new RegExp(oRegExp.source),t.map(fGetRegExpGroups)):t.slice(1)},oRegExp=ObjectUtil.is(p_oRegExp,RegExp)?p_oRegExp:fGetRegExp(p_oRegExp);return Util.isSet(oRegExp)?fGetRegExpGroups(p_sValue):[]},getUrlParameters:function(e){var t={};if(!StringUtil.isEmpty(e))for(var n=decodeURIComponent(e).split("&"),r=n.length,a=null,i=0;r>i;i++)a=n[i].split("="),t[a[0]]=StringUtil.typeCast(a[1]);return t},hexToBin:function(e){var t=e.length,n="";if(t>0){var r=4,a=Math.pow(2,r),i=parseInt(e.charAt(0),a);i>0&&(n+=i.toString(2));for(var o=1;t>o;o++)i=parseInt(e.charAt(o),a)|a,n+=i.toString(2).substr(1)}return n},isEmpty:function(e){return!Util.isSet(e)||""===e},parseKVP:function(e){var t=function(e){var t=e.split("=");n[t[0]]=StringUtil.typeCast(t[1])},n={};if(!StringUtil.isEmpty(e)){var r=e.split(",");r.forEach(t)}return n},parseVars:function(e,t){var n=function(e,n){var r=StringUtil.resolve(n,t);if(Util.isSet(r)){var a=r.constructor;if(a===Array||a===Object)return JSON.stringify(r);if(r!==n)return String(r)}return e};if(ObjectUtil.is(e,String)){var r=e.replace(/\${([^${|}]+)}/,n);return r===e?r:StringUtil.parseVars(r,t)}return e},resolve:function(e,t){var n=Util.nullValue(e,""),r=null;if(!StringUtil.isEmpty(n)){var a=n.split("."),i=a.shift(),o=Util.isSet(t);for(o&&(r=t[i]),Util.isSet(r)||(r=StringUtil.evaluate(i,o));Util.isSet(r)&&a.length>0;)r=r[a.shift()]}return r},toArray:function(e){var t=e.match(/\[([^[]*?)\]/);return Util.isSet(t)?t[1].split(","):null},toBoolean:function(e){return ObjectUtil.is(e,String)?"1"===e||"true"===e.toLowerCase():!1},toDate:function(e){function t(e,t){var r=parseInt(e,10),a=!isNaN(r);return a&&(0===t?n.setFullYear(r):1===t?n.setMonth(r-1):2===t&&n.setDate(r)),a}var n=new Date(0),r=e.split("-");return r.every(t)?n:null},tokenize:function(e){var t=function(e,t){for(var a=n.match(e),i=0;Util.isSet(a);)i=r.unshift(a[t])-1,n=n.replace(a[0],"$"+i),a=n.match(e)},n=e,r=[];return t(/('|")(.*?)\1/,2),t(/\[[^\[\]]+\]/,0),t(/\{[^\{\}]+\}/,0),r},typeCast:function(e){if(ObjectUtil.is(e,String)){var t=Number(e);if(!isNaN(t))return t;var n=e.toLowerCase(),r="true"===n;if(r||"false"===n)return r}return e}},Tokenizer={REG_EXP_ARRAY:/\[[^\[]*?\]/g,REG_EXP_OBJECT:/{[^{]*?}/g,REG_EXP_QUOTED_STRING:/('|")(?:\\\1|.)*?\1/g,REG_EXP_UNQUOTED_STRING:/[^,]+/g,REG_EXP_WHITESPACE:/\s*/g,parse:function(e){var t=function(e){do r=!1,o=o.replace(e,n);while(r)},n=function(){return r=!0,a.push(arguments[0]),"$"+i++},r=!1,a=[],i=0,o=e.replace(Tokenizer.REG_EXP_QUOTED_STRING,n);return o=o.replace(Tokenizer.REG_EXP_WHITESPACE,""),t(Tokenizer.REG_EXP_ARRAY),t(Tokenizer.REG_EXP_OBJECT),o=o.replace(Tokenizer.REG_EXP_UNQUOTED_STRING,n),a.push(o),a},stringify:function(e,t){var n=e.length;if(n>0){var r=function(){return a=!0,e[Number(arguments[1])]},a=!1,i=Util.nullValue(t,e[n-1]);do a=!1,i=i.replace(/\$(\d+)/g,r);while(a);return i}return t}},Util={condition:function(e,t,n){var r=function(e){return ObjectUtil.is(e,Boolean)?e:null},a=r(e);return Util.isSet(a)||ObjectUtil.is(e,String)&&""!==e&&(a=r(StringUtil.evaluate(StringUtil.parseVars(e,t)))),Util.isSet(a)?a:Util.nullValue(n,!1)},invScale:function(e,t){return Util.scale(e,1/t)},isSet:function(e){return null!==e&&void 0!==e},nullValue:function(e,t){return Util.isSet(e)?e:t},scale:function(e,t){var n=function(e){return a(e)},r=function(e,t){return a(e[t])},a=function(e){return e*t};switch(e.constructor){case Number:return a(e);case Array:return e.map(n);case Object:return ObjectUtil.map(e,r)}return e},trace:function(){for(var e=arguments.length,t=0;e>t;t++)console.log(arguments[t])}},core=new Core,AskTheExpertElementEntry={generate:function(e){function t(){var e=$("<a/>");return e.attr("aria-hidden",!0),e.attr("name",l.entryId),e}function n(){var e=function(e){return StringUtil.evaluate(StringUtil.parseVars(e))},t={cssClass:"ask-the-expert-element-entry-answer",highContrast:!0,id:l.id+"-answer"},n=Element.generate(t);return n.toggleClass("hide",!l.expanded),n.append(l.answer),n.visibilityFilter(e),o(n),n}function r(){var e={cssClass:"ask-the-expert-element-entry-question",highContrast:!0,id:l.id+"-question"},t=InteractiveElement.generate(e);return t.append(l.question),t}function a(e){var t=Util.nullValue(e,!0),n=function(){l.expanded=t,d.attr("aria-expanded",l.expanded),l.expanded?c.height("auto"):c.addClass("hide")};if(t!==l.expanded){var r={height:0,opacity:0};t&&(c.css("height","auto"),c.removeClass("hide"),r={height:c.outerHeight(),opacity:1},c.height(0)),c.animate(r,200,"easeInOutQuad",n).css("overflow","visible")}}function i(e){a(e?!0:!l.expanded)}function o(e){var t=function(e){var n=e.parent();n.children().length>1?e.remove():t(n)},n=function(e){var n=$(this),a=n.attr("class"),i="";if("ask-the-expert"===a){i=n.data("id");var o=l.entries.getEntryListItem(i);Util.isSet(o)&&Util.nullValue(o.visible,!0)?(n.attr("href","#"+i),""===n.text()&&n.append(o.question)):t(n)}else"glossary"===a&&(o=core.glossary.getEntryListItem(n.data("id")),Util.isSet(o)&&Util.nullValue(o.visible,!0)?n.attr("aria-label",n.html()+". "+core.manifest.player.acc.links[a]):r(n));
},r=function(e){var t=$("<span/>");t.append(e.html()),e.replaceWith(t)},a=e.find("a[data-id]");a.attr("tabindex",TabOrder.PAGE_CONTENT),a.each(n)}var s={expand:a,select:i},l={answer:"",cssClass:"ask-the-expert-element-entry",enabled:!0,entryId:"",expanded:!1,id:"ask-the-expert-element-entry",index:0,question:"",role:"listitem"};l=Element.extend(l,e);var c=n(),u=r(),d=Element.generate(l);return d.publicProperties(l),d.publicMethods(s),d.attr("aria-expanded",l.expanded),d.append(t()),d.append(u),d.append(c),d}},AskTheExpertElement={generate:function(e){function t(){var e=function(e){var t=-10,n=e.offset();n.left+=t,e.offset(n),e.animate({left:"-="+t,opacity:1},250,"easeOutQuart",r)},t=function(t,n,r){var a=25;setTimeout(e,a*n,t)},n=function(){o($(this),!0)},r=1===S.length?n:null;S.forEach(t)}function n(){var e={acc:!1,cssClass:"ask-the-expert-element-background",highContrast:!0,id:m.id+"-background"};return Element.generate(e)}function r(){var e={accName:v.acc.entries,cssClass:"ask-the-expert-element-entries scrollable",id:m.id+"-entries",role:"list"},t=Element.generate(e);return t.on(MouseEvent.CLICK,"a.ask-the-expert",u),t.on(KeyboardEvent.KEY_DOWN,"a",d),t.on(ElementEvent.SELECT,f),t}function a(e,t){var n={answer:t.answer,cssClass:"ask-the-expert-element-entry",entries:h,entryId:t.id,id:m.id+"-entry-"+t.id,index:e,question:t.question,elementEntries:T};return AskTheExpertElementEntry.generate(n)}function i(){var e={id:m.id+"-search-bar"};return SearchBar.generate(e)}function o(e,t){if(e.length>0){if(t||!e.getVal("expanded")){var n=(e.getVal("entryId"),Util.invScale(e.offset().top-T.offset().top,core.scale)+T.scrollTop());T.animate({scrollTop:n})}e.call("select",t)}}function s(){b=Util.nullValue(m.param.entryId,""),y.call("setState",StringUtil.isEmpty(b)?"search":"showall"),l(),U.trigger(ElementEvent.INIT)}function l(e,n){S=[],T.animate({scrollTop:0});var r=null;StringUtil.isEmpty(b)?r=h.getEntries(e):(r=h.getEntriesByIds(b),b="");for(var i=r.moveFirst(),s=null;null!==i;)s=a(r.index,i),T.append(s),S.push(s),i=r.moveNext();void 0!==n&&T.promise().done(function(){var e=U.find("#"+n);o(e,!0)}),t()}function c(e){var t=Util.nullValue(e,""),n=!StringUtil.isEmpty(t);if(n){var r=m.id+"-entry-"+t,i=U.find("#"+r);if(i.length>0)o(i,!0);else{var s=h.getEntryListItem(t);Util.isSet(s)&&(i=a(S.length,s),i.animate({opacity:1},"fast"),T.append(i),S.push(i),o(i,!0))}}return n}function u(e){var t=$(e.target);c(t.data("id"))&&e.stopPropagation()}function d(e){if(e.which===Key.ENTER){var t=$(e.target);c(t.data("id"))&&e.stopPropagation()}}function f(e){var t=$(e.target);o(t.parent(),!1)}function p(e){e.stopPropagation(),T.empty(),l()}function E(e,t){e.stopPropagation(),T.empty(),l(t)}var m={cssClass:"ask-the-expert-element",highContrast:!0,id:"ask-the-expert-element"},g={init:s};m=Element.extend(m,e);var v=core.manifest["ask-the-expert"],S=[],h=core.askTheExpert,b="",O=n(),y=i();y.on(SearchEvent.CLEAR_FILTER,p),y.on(SearchEvent.FIND,E);var T=r(),U=Element.generate(m);return U.publicProperties(m),U.publicMethods(g),U.append(O),U.append(y),U.append(T),U}},AssessmentElement={generate:function(e){function t(){S.finish(),y.trigger(AssessmentEvent.COMPLETED)}function n(e){var t=e.pageNode;t.param.questionNode=e;var n=Page.generate($.extend({pageNode:t},t));return n.hide(),n.on(QuestionEvent.CONFIRM,d),n.on(PageEvent.FINISH,f),n.on(ElementEvent.INIT,p),n.on(PageEvent.START,E),n.appendTo(y),n}function r(e){var t={resourcePath:g.resourcePath,resourceId:g.resourceId,score:O},n=AssessmentScoreIndicator.generate($.extend(t,e));return n.on(ProgressEvent.CONTINUE,m),n}function a(){if(S.score<100){var e=core.config["has-assessment-pass-mark"],t=e?S.passMark:80,n=3;return S.score>=t?n=1:S.score>=.65*t&&(n=2),n+(e?1:4)}return 1}function i(){O={currentQuestionMarks:0,availableQuestionMarks:0,currentAssessmentMarks:0,availableAssessmentMarks:0};var e=S.start();y["super"]("init"),o(e)||t()}function o(e){var t=Util.isSet(e);if(t){var r=n(e);y.trigger(AssessmentEvent.NEXT_QUESTION,{questionNode:e}),r.call("init")}return t}function s(e){var t=function(t,r,i){var o=t>e;return o&&(n[0]=a-r),o},n=[1],r=[2,2,1,2],a=r.length,i=[.5,.8,1];i.some(t),n.push(S.questionNumber%2===0?1:2),n.push(Math.floor(Math.random()*r[n[0]-1])+1),h.call("playAudio","assessment-questions-feedback-"+n.join(""))}function l(e,n){var a=h.call("getVal","questionNode");if(a.marks<0&&e>-1){a.marks=e,a.availableMarks=n,O.currentQuestionMarks=a.marks,O.availableQuestionMarks=a.availableMarks,O.currentAssessmentMarks+=O.currentQuestionMarks,O.availableAssessmentMarks+=O.availableQuestionMarks;var i=S.completed;b=r({footerBarState:i?FooterBarState.UNCHANGED:FooterBarState.CONTINUE}),b.appendTo(y);var o=b.css("bottom");b.css({bottom:0,opacity:0}).animate({bottom:o,opacity:1},"fast"),y.trigger(ElementEvent.ADDED,[b]),s(a.score),i&&t()}}function c(e,t,n,r){n.length;"feedback"===e?r.feedback=a():"score"===e?r.score=S.score:"passmark"===e&&(r.passMark=S.passMark)}function u(){S.cancel()}function d(e){var t=$(e.target),n=Util.nullValue(t.call("getAvailableMarks"),0),r=n>0?Util.nullValue(t.call("getMarks"),-1):-1;l(r,n)}function f(e){e.stopPropagation();var t=Util.nullValue(h.call("getVal","availableMarks"),0),n=t>0?Util.nullValue(h.call("getVal","marks"),-1):-1;l(n,t)}function p(e){e.stopPropagation()}function E(e){e.stopPropagation(),S.questionNumber>1&&(core.setLoading(!1),b.remove(),h.remove()),h=$(e.target),h.show();var t={questionPage:h,questionNumber:S.questionNumber,questionCount:S.questionCount};y.trigger(AssessmentEvent.SHOW_QUESTION,t)}function m(e){h.call("unload"),core.setLoading(!0),o(S.nextQuestion())}var g={cssClass:"assessment-element",elementType:"AssessmentElement",id:"assessment-element"},v={init:i,scriptAction:c,unload:u};g=Element.extend(g,e);var S=core.course.assessment,h=null,b=null,O=null,y=Element.generate(g);return y.publicProperties(g),y.publicMethods(v),y}},AssessmentScoreIndicator={generate:function(e){function t(){return o.trigger(ProgressEvent.CONTINUE),!0}function n(){var e={cssClass:"assessment-score-indicator-running-score",id:i.id+"-assessment-score",resourcePath:i.resourcePath+".assessment",resourceId:i.resourceId+"-assessment"},t=StringUtil.resolve(e.resourcePath,core.manifest),n=Element.generate(e);return n.append(StringUtil.parseVars(t,i.score)),n}function r(){var e={cssClass:"assessment-score-indicator-running-score",id:i.id+"-question-score",resourcePath:i.resourcePath+".question",resourceId:i.resourceId+"-question"},t=StringUtil.resolve(e.resourcePath,core.manifest),n=Element.generate(e);return n.append(StringUtil.parseVars(t,i.score)),n}var a={advance:t},i={cssClass:"assessment-score-indicator",elementType:"AssessmentScoreIndicator",footerBarState:FooterBarState.CONTINUE,highContrast:!0,id:"assessment-score-indicator",score:{}};i=Element.extend(i,e),i.resourcePath=i.resourcePath+"."+i.id,i.resourceId=i.resourceId+"-"+i.id;var o=Element.generate(i);return o.publicProperties(i),o.publicMethods(a),o.append(r()),o.append(n()),o}},Audio={generate:function(e){function t(){if(l){var e=o.enabled;o.enabled=!0,u.call("load","assets/blank.mp3"),o.enabled=e}}function n(e){l&&(c.push(e),u.prop("paused")&&0===u.prop("currentTime")&&r())}function r(){c.length>0&&(u["super"]("load",c.shift()),u.call("play"))}function a(){l&&(u["super"]("stop"),c=[])}function i(e){r()}var o={element:"<audio/>",elementType:"Audio",id:"audio"},s={init:t,load:n,stop:a};o=Element.extend(o,e);var l=Util.nullValue(core.config["has-audio"],!0),c=[],u=MediaWrapper.generate(o);return u.publicMethods(s),u.on(MediaEvent.ENDED,i),u}},Bitmap={generate:function(e){function t(){a.attr("src",n.src)}var n={cssClass:"bitmap",element:"<img/>",elementType:"Bitmap",height:0,id:"bitmap",src:"",width:0},r={init:t};n=Element.extend(n,e);var a=Element.generate(n);return a.publicProperties(n),a.publicMethods(r),a.attr("alt",n.accName),a.attr("draggable",!1),a.attr("width",n.width),a.attr("height",n.height),a}},ButtonGroup={generate:function(e){function t(e){var t=Util.nullValue(e,"");if(!StringUtil.isEmpty(t)){var n=u.children("#"+t);if(n.length>0)return n[0].click(),!0}return!1}function n(){var e=function(e,t,n){e.cssClass=r(e.cssClass,t),e.enabled=e.enabled!==!1&&l.enabled,e.tabIndex=l.tabIndexOffset,u.append(Button.generate(e))};l.buttons.forEach(e)}function r(e,t){var n=Util.nullValue(e,""),r=["button",n,"group"];return r.join(" ")}function a(e){var t=u.children("#"+e);return t.getVal("enabled")}function i(){var e=function(){var e=$(this),n=e.attr("id");t[n]=e.getVal("enabled")},t={},n=u.children();return n.each(e),t}function o(e){var t=u.children();t.call("setEnabled",e)}function s(e){var t=function(){var t=$(this),n=t.attr("id");e.hasOwnProperty(n)&&t.call("setEnabled",e[n])},n=u.children();n.each(t)}var l={buttons:[],cssClass:"button-group",elementType:"ButtonGroup",enabled:!0,tabIndexOffset:TabOrder.PAGE_CONTENT},c={activate:t,getEnabledButton:a,getEnabledButtons:i,setEnabled:o,setEnabledButtons:s};l=Element.extend(l,e);var u=Element.generate(l);return u.publicProperties(l),u.publicMethods(c),n(),u}},Button={ACCEPT_POLICY:"accept-policy",ASK_THE_EXPERT:"ask-the-expert",BOOKMARK_PAGE:"bookmark-page",BOOKMARKS:"bookmarks",CANCEL:"cancel",CLOSE:"close",CONFIRM:"confirm",CONTINUE:"continue",CONTINUE_NEXT_PAGE:"continue-next-page",CONTINUE_NEXT_SECTION:"continue-next-section",COURSE_SUMMARY:"course-summary",EXIT:"exit",GLOSSARY:"glossary",HELP:"help",HINT:"hint",HOME_PAGE:"home-page",NEXT_PAGE:"next-page",NEXT_TAB:"next-tab",NO:"no",OK:"ok",PAUSE:"pause",PLAY:"play",PREVIOUS_PAGE:"previous-page",PREVIOUS_TAB:"previous-tab",PRINT:"print",REPLAY_PAGE:"replay-page",RESET:"reset",RESOURCES:"resources",RETRY:"retry",SETTINGS:"settings",SKIP:"skip",START_COURSE:"start-course",STOP:"stop",SUBMIT:"submit",SUBTITLES_OFF:"subtitles-off",SUBTITLES_ON:"subtitles-on",TOOLKIT:"toolkit",UNSURE:"unsure",YES:"yes",generate:function(e){function t(){var e=["button-content"];""!==c.icon&&(e=e.concat(["button-icon",c.icon])),e.push(c.showLabel?c.iconPosition:"no-label");var t={cssClass:e.join(" "),id:c.id+"-content"},r=Element.generate(t);return r.append(n()),r}function n(){var e={cssClass:"button-label",id:c.id+"-label"},t=Element.generate(e);return t.append(c.label),t}function r(e){d.toggleClass("hover",e)}function a(e){c.enabled=e,d.prop("disabled",!e),d.call("setAcc",c.enabled),e||r(!1)}function i(e){e.stopPropagation(),d.trigger(ElementEvent.SELECT)}function o(e){r(!0)}function s(e){r(!1)}function l(e){e.stopPropagation(),d.addClass("touch"),r(!1)}var c={cssClass:"button",element:"<button/>",elementType:"Button",enabled:!0,highContrast:!0,icon:"",iconPosition:Align.LEFT,id:"button",label:"",showLabel:!0,tabIndex:0,transparent:!1},u={setEnabled:a};c=Element.extend(c,e),Element.manifestValue(c,"label"),c.accName=c.label;var d=Element.generate(c);return d.publicProperties(c),d.publicMethods(u),d.attr("title",c.showLabel?null:c.label),d.attr("tabindex",c.tabIndex),d.prop("disabled",!c.enabled),d.toggleClass("transparent",c.transparent),d.append(t()),d.on(MouseEvent.CLICK,i),d.on(MouseEvent.ENTER,o),d.on(MouseEvent.LEAVE,s),d.on(TouchEvent.START,l),d}},Cell={generate:function(e){function t(){var e={cssClass:"cell-container "+n.vAlign,id:n.id+"-container"};return Element.generate(e)}var n={cssClass:"cell",elementType:"Cell",id:"cell",vAlign:Align.TOP};n=Element.extend(n,e);var r=t(),a=Element.generate(n);return a.publicProperties(n),a.append(r),a.call("setContainer",r),a}},Checkbox={generate:function(e){function t(){var e={cssClass:"checkbox-selected",id:r.id+"-selected"},t=Element.generate(e);return t.toggleClass("hide",!r.selected),t}function n(e,t){a.toggleClass("hide",!i.call("isSelected"))}var r={cssClass:"checkbox",elementType:"Checkbox",id:"checkbox",role:"checkbox",selected:!1};r=Element.extend(r,e);var a=t(),i=DualStateElement.generate(r);return i.publicProperties(r),i.append(a),i.on(ElementEvent.CHANGE,n),i}},Countdown={generate:function(e){function t(e){if(d.showMinutes){var t=NumberUtil.divide(e,60);return t.quotient+(t.remainder<10?":0":":")+t.remainder}return e}function n(){a(),o(),d.autoStart&&s()}function r(){clearInterval(p)}function a(){E=d.seconds}function i(e,t,n,i){"pause"===e?r():"reset"===e?a():"start"===e?s():"stop"===e&&l()}function o(){m.html(t(E))}function s(){p=setInterval(c,1e3)}function l(){r(),a()}function c(){E>0&&(E--,o(),0===E&&(l(),m.trigger(TimerEvent.TIMEOUT)))}function u(){l()}var d={autoStart:!1,elementType:"Countdown",id:"countdown",role:"timer",seconds:60,showMinutes:!0},f={init:n,pause:r,reset:a,scriptAction:i,start:s,stop:l,unload:u};d=Element.extend(d,e);var p=0,E=0,m=Element.generate(d);return m.publicProperties(d),m.publicMethods(f),m}},CourseMenuElementOption={generate:function(e){function t(){var e=u.duration,t=Math.floor(c.groupNode.calculateDuration()),n=StringUtil.parseVars(e.label,{duration:t}),r={acc:!1,accName:StringUtil.parseVars(e.accName,{duration:n}),cssClass:"course-menu-element-option-duration",id:c.id+"-duration"},a=Element.generate(r);return a.append("("+n+")"),a}function n(e){var t={acc:!1,cssClass:"course-menu-element-option-icon",id:e+"-icon",symbol:"symbols."+e};return Sprite.generate(t)}function r(){var e={acc:!1,cssClass:"course-menu-element-option-label",id:c.id+"-label"},t=Element.generate(e);return t.append(c.label),t}function a(){var e=c.groupNode.getProgress(),t=u["progress-indicator"],n=t.accName,r={};e>0?1>e?(r.progress=Math.round(100*e),r.status=t.started):r.status=t.completed:r.status=t["not-started"];var a={accName:n,cssClass:"course-menu-element-option-progress",id:c.id+"-progress",param:r,progress:e,role:"status"};return RadialProgressIndicator.generate(a)}function i(){var e=u.recommended,t={accName:e,cssClass:"course-menu-element-option-recommended",id:c.id+"-recommended",symbol:"symbols.recommended",title:e},n=Sprite.generate(t);return n.visible(l(c.groupNode)),n}function o(){var e={cssClass:"course-menu-element-option-right-group",id:c.id+"-right-group"},t=Element.generate(e);return t.append(c.groupNode.assessment?s():i()),t}function s(){var e=["course-menu-element-option-score"],t=Util.isSet(core.course.assessment.date)?core.course.assessment.score:-1,n="";t>-1&&(n=t+"%",e.push(core.course.assessment.passed?"passed":"failed"));var r={cssClass:e.join(" "),highContrast:!0,id:c.id+"-score"},a=Element.generate(r);return a.append(n),a}function l(e){var t=function(e){return e.isPageNode&&e.recommended?2:0};return 2===e.forEachChild(t)}var c={cssClass:"course-menu-element-option",description:"",elementType:"CourseMenuElementOption",groupNode:null,id:"course-menu-element-option",index:0,label:"",role:"listitem"};c=Element.extend(c,e),Element.manifestValue(c,"label");var u=core.manifest["course-menu"],d=r(),f=[d.attr("id")],p=InteractiveElement.generate(c);if(p.publicProperties(c),Util.isSet(c.groupNode)){var E=t();f.push(E.attr("id")),c.groupNode.assessment?p.append(n("question-mark")):p.append(a()),p.append(d),p.append(E),p.append(o())}else p.append(n("rosette")),p.append(d);return p.attr("aria-labelledby",f.join(" ")),p}},CourseMenuElement={generate:function(e){function t(){var e={cssClass:"course-menu-element-option",enabled:core.course.passed,highContrast:!0,id:u.id+"-certificate",index:v,resourcePath:u.resourcePath+".certificate"},t=CourseMenuElementOption.generate(e);return t.on(ElementEvent.SELECT,l),t}function n(e){var t=g.getChildByIndex(e),n=null;if(t.visible){var r=t.id,i=core.manifest[r],o={cssClass:"course-menu-element-option",description:i.description,enabled:t.enabled&&t.childCount>0,highContrast:!0,id:u.id+"-"+r,index:e,label:i.title,groupNode:t,resourcePath:u.resourcePath+"."+r};o.enabled&&(t.assessment?o.enabled=a():f&&(o.enabled=E),E=1===t.getProgress(),m=m&&E),n=CourseMenuElementOption.generate(o),n.on(ElementEvent.SELECT,c)}return n}function r(){var e={cssClass:"course-menu-element-options-base hide",id:u.id+"-base",role:"list"},r=Element.generate(e);r.attr("aria-labelledby","instruction");for(var a=null,i=0;v>i;i++)a=n(i),Util.isSet(a)&&(S.push(a),a.appendTo(r));return p&&(a=t(),S.push(a),a.appendTo(r)),r}function a(){var e=core.config["enable-assessment"],t=e||m;if(t){var n=core.config["allow-assessment-reattempt"];n===AssessmentReattempt.FAIL?t=!core.course.assessment.passed:n===AssessmentReattempt.NEVER&&(t=!core.course.assessment.attempted)}return t}function i(e){var t=e-49;if(t>=0&&v>t){var n=S[t];Util.isSet(n)&&n.getVal("enabled")&&n.call("select")}}function o(e,t,n,r){"show"===e&&s()}function s(){var e=function(e){var t=e.getVal("enabled")?.9:.4,n=-20,r=e.offset();r.left+=n,e.offset(r),e.animate({left:"-="+n,opacity:t},"slow","easeOutQuart")},t=function(t,n,r){var a=50;setTimeout(e,a*n,t)},n=function(){S.forEach(t)},r=h.outerWidth();h.css("left",-r),h.removeClass("hide"),h.animate({left:0},"slow","easeOutQuart",n)}function l(e){core.printCertificate()}function c(e){e.stopPropagation();var t=$(e.target),n={navigation:Navigation.CHILD_PAGE,target:t.getVal("index")};b.trigger(CourseEvent.NAVIGATE,n)}var u={cssClass:"course-menu-element",elementType:"CourseMenuElement",footerBarState:FooterBarState.QUESTION,id:"course-menu-element"},d={keyPress:i,scriptAction:o};u=Element.extend(u,e);var f=core.config["sequential-sections"],p=core.config["has-certificate"],E=!0,m=!0,g=core.course.currentPage,v=g.childCount,S=[],h=r(),b=Element.generate(u);return b.publicProperties(u),b.publicMethods(d),b.append(h),b}},Dialog={generate:function(e){function t(){var e={buttons:a(s.buttons),id:s.id+"-buttons"},t=ButtonGroup.generate(e);return t.on(ElementEvent.SELECT,o),t}function n(){var e={cssClass:"dialog-footer",id:s.id+"-footer"},n=Element.generate(e);return n.append(t()),n}function r(){var e={acc:!1,cssClass:"dialog-title-bar",id:s.id+"-title-bar"},t=Element.generate(e);return t.append(s.title),t}function a(e){for(var t=e.length,n=null,r=[],a=0;t>a;a++)n={},n.id=e[a],n.label=core.manifest.player.button.label[n.id],r.push(n);return r}function i(e){l.trigger(DialogEvent.RESPONSE,{id:e})}function o(e){var t=e.target.id,n=Util.nullValue(s.closeDialog[t],!0);n?(l.hide(),i(t),l.remove()):i(t)}var s={buttons:[],closeDialog:{},content:"",cssClass:"dialog",highContrast:!0,id:"dialog",role:"dialog",title:""};s=Element.extend(s,e),s.accName=s.title,Element.manifestValue(s,"title");var l=$("#"+s.id);return 0===l.length&&(l=Element.generate(s),l.publicProperties(s),l.append(r()),l.append(s.content),l.append(n())),l}},DisplayBox={generate:function(e){function t(){return i.trigger(ProgressEvent.CONTINUE),!0}var n={advance:t},r={content:"",cssClass:"display-box",elementType:"DisplayBox",highContrast:!0,id:"display-box",footerBarState:FooterBarState.CONTINUE};r=Element.extend(r,e);var a=Element.generate({cssClass:"display-box-border scrollable",id:r.id+"-border"});a.append(r.content);var i=Element.generate(r);return i.publicProperties(r),i.publicMethods(n),i.append(a),i.call("setContainer",a),i}},DragAndDrop={generate:function(e){function t(){var e=function(){return w["super"]("advance")},t=!1;if(D)t=e();else{var n=$("#"+N.questionFooter);t=n.length>0?n.call("confirm"):e()}return t&&S(!1),t}function n(){var e=function(e,t){var r=$(t);if(r.call("isValid")){var a=r.getVal("groupId");if(!StringUtil.isEmpty(a)){var i=r.call("getTargetArea");if(Util.isSet(i)){var o=i.attr("id"),s=Util.nullValue(n[a],{});s.max=Util.nullValue(s.max,0);var l=Util.nullValue(s[o],0)+1;l>s.max&&(s.max=l,s.targetArea=i),s[o]=l,n[a]=s}}}},t=function(e,t){var r=$(t),a=r.getVal("groupId");StringUtil.isEmpty(a)||r.data("_targetArea",n[a].targetArea),r.call("confirm",N.showMarking)};N.enabled=!1;var n={},r=w.call("getElementsByType","DragItem");r.each(e),r.each(t),w.trigger(QuestionEvent.CONFIRM)}function r(e){Util.isSet(R)&&(R.call("drop",e),R=null,a("DropArea",!1))}function a(e,t){var n=function(e,n){$(n).call("setEnabled",t)};w.call("getElementsByType",e).each(n)}function i(){return x}function o(){return M===N.numToMatch}function s(e){var t=function(e,t){n+=Number(p($(t)))},n=0;return e.each(t),n}function l(){var e=c();return Math.floor(e*x)}function c(){var e=w.call("getElementsByType","DragItem"),t=e.length;return t>0?s(e)/t:0}function u(e){var t=function(){$(this).call("highlight",e)};w.call("getElementsByType","DragItem").each(t),w.call("getElementsByType","DropArea").each(t)}function d(e,t){var n=w.find("#"+e);Util.isSet(n[0])&&(n.call("isElement","DragItem")||n.call("isElement","DropArea"))&&n.call("highlight",t)}function f(){return 1===c()}function p(e){return e.call("isCorrect")}function E(){var e=function(e){var t=$(this);r+=t.getVal("numToMatch")};S(N.enabled);var t=(core.manifest.player.acc["drag-and-drop"],w.call("getElementsByType","DragItem")),n=t.length,r=0,a=w.call("getElementsByType","DropArea");a.each(e),r=Math.min(r,n),N.numToMatch=N.numToMatch<0?r:Math.min(N.numToMatch,r),x=N.numToMatch*N.weighting,w["super"]("ready")}function m(){var e=function(e,t){$(t).call("reset")};w.call("getElementsByType","DragItem").each(e)}function g(e,t,r,a){var i=r.length;"availablemarks"===e?a.availableMarks=x:"confirm"===e?n():"iscorrect"===e?a.isCorrect=f():"score"===e?0===i&&(a.score=c()):"setcontinue"===e?v(!0,o()):"showcorrect"===e&&h(r[0],r[1])}function v(e,t){_&&e&&w.trigger(ProgressEvent.SET_CONTINUE,{enabled:t,visible:D&&t})}function S(e){N.enabled=e,a("DragItem",e),a("DropArea",e&&Util.isSet(R))}function h(e,t){var n=function(n,r){$(r).call("showCorrect",e,t)};w.call("getElementsByType","DragItem").each(n)}function b(e,t){if(N.allowSwap){var n=e.call("getTargetArea");if(Util.isSet(n)&&Util.isSet(t)){var r=t.call("getTargetArea");return t.call("drop",n),e.call("drop",r),!0}}return!1}function O(){V.off(MouseEvent.CLICK,y),V.off(DragEvent.OVER,T),V.off(DragEvent.DROP,U)}function y(e){var t=$(e.target);"DragItem"!==t.data("element-type")&&r()}function T(e){e.preventDefault()}function U(e){e.preventDefault();var t=e.originalEvent,n=t.dataTransfer.getData("text"),r=$("#"+n);r.call("drop")}function P(e,t){e.stopPropagation();var n=e.target.id,r=Util.isSet(t.newDropArea),a=r?t.newDropArea.attr("id"):"",i=Util.isSet(t.oldDropArea),s=i?t.oldDropArea.attr("id"):"",l=!1;a!==s&&(r!==i&&(M+=r?1:-1),l=o(),w.trigger(ElementEvent.CHANGE,{targetId:n,completed:l,oldDropArea:s,newDropArea:a})),R=null,S(N.enabled),v(!N.overrideCompletion,l)}function I(e){e.target===e.delegateTarget&&v(!0,!N.overrideCompletion&&o())}function C(e){r()}function A(e){var t=function(e,t){t!==R[0]&&$(t).call("setSelected",!1)},n=$(e.target),i=n.getVal("elementType");if("DragItem"===i){var o=n.getVal("selected");o?(o=!b(n,R),o?(R=n,w.call("getElementsByType",i).each(t)):R=null):R=null,a("DropArea",o)}else"DropArea"===i&&r(n)}var N={allowSwap:!1,elementType:"DragAndDrop",enabled:!0,footerBarState:FooterBarState.QUESTION,numToMatch:-1,overrideCompletion:!1,questionFooter:"",role:"menu",showMarking:!0,weighting:1},L={advance:t,confirm:n,getAvailableMarks:i,getMarks:l,getScore:c,highlight:u,highlightOption:d,scriptAction:g,ready:E,reset:m,setEnabled:S,unload:O};N=Element.extend(N,e);var _=N.footerBarState===FooterBarState.QUESTION,D=StringUtil.isEmpty(N.questionFooter),R=null,M=0,x=0,V=$("body");V.on(MouseEvent.CLICK,y),V.on(DragEvent.OVER,T),V.on(DragEvent.DROP,U);var w=Element.generate(N);return w.publicProperties(N),w.publicMethods(L),w.on(DragEvent.FINISH,P),w.on(ElementEvent.READY,I),w.on(DragEvent.START,C),w.on(ElementEvent.SELECT,A),w}},DragItem={generate:function(e){function t(e){p(!1),U.call("setCorrect",l()),g(e)}function n(){var e={acc:!1,cssClass:"drag-item-label",id:b.id+"-label"},t=b.showLabel&&!StringUtil.isEmpty(b.label),n=Element.generate(e);return n.toggleClass("hide",!t),n.append(b.label),n}function r(){var e={cssClass:"drag-item-marking hide",id:b.id+"-marking"};return MarkingSymbol.generate(e)}function a(e){var t=function(e){Util.isSet(e)&&e.call("setActive")};E(!1);var n=T!==e;if(n){var r=Util.nullValue(e,y);r.call("add",P),t(T);var a=T;T=e,P.trigger(DragEvent.FINISH,{newDropArea:T,oldDropArea:a})}else t(e);return n}function i(){return T}function o(e){var t={visible:e,which:"highlight"};P.toggleClass("highlight",Util.nullValue(e,!0)),P.trigger(ElementEvent.STATE,t)}function s(){y=P.parent()}function l(){var e=P.data("_targetArea");return Util.isSet(e)?e[0]===T[0]:P.data("_isValid")||c()}function c(){if(Util.isSet(T)){var e=function(e){return e===t},t=T.attr("id");return b.validDropAreas.some(e)}return 0===b.validDropAreas.length}function u(){g(!1),T=null,y.call("add",P)}function d(e,t,n,r){"iscorrect"===e?r.isCorrect=l():"droparea"===e?r.dropArea=Util.isSet(T)?T.attr("id"):"":"reset"===e&&u()}function f(){E(!b.selected)}function p(e){var t=!b["static"]&&e;P.attr("draggable",t),P["super"]("setEnabled",t)}function E(e){b.selected=e,P.toggleClass("selected",b.selected),P.attr("aria-grabbed",b.selected)}function m(e,t){g(Util.nullValue(e,!1));var n=Util.nullValue(t,!0),r=P.data("_targetArea");if(!Util.isSet(r))if(b.validDropAreas.length>0){var a=$("#"+b.validDropAreas[0]);a.length>0&&(r=a.call("getDropTarget"))}else r=y;if(Util.isSet(r)){var i=Util.isSet(T)?T.call("getDropTarget"):y;if(r!==i)if(n){var o=function(){P.css({left:"",top:""}),r.call("add",P)},s=Util.invScale(P.offset(),core.scale),l=Util.invScale(r.offset(),core.scale),c={left:parseInt(r.css("borderLeftWidth"),10),top:parseInt(r.css("borderTopWidth"),10)},u={left:l.left+c.left-s.left,top:l.top+c.top-s.top};P.animate(u,"slow","easeOutQuart",o)}else r.call("add",P)}}function g(e){U.toggleClass("hide",!e)}function v(e){var t=$(e.target);t.removeClass("drag")}function S(e){Util.isSet(T)&&T.call("drag"),E(!1);var t=e.originalEvent;t.dataTransfer.setData("text",P.attr("id")),P.addClass("drag")}function h(e){f()}var b={cssClass:"drag-item",elementType:"DragItem",enabled:!0,groupId:"",id:"drag-item",label:"",role:"option",selected:!1,showLabel:!0,"static":!1,validDropAreas:[]},O={confirm:t,drop:a,getTargetArea:i,highlight:o,init:s,isCorrect:l,isValid:c,reset:u,scriptAction:d,select:f,setEnabled:p,setSelected:E,showCorrect:m};b=Element.extend(b,e),Element.manifestValue(b,"label"),b.label=StringUtil.parseVars(b.label);var y=null,T=null,U=r(),P=InteractiveElement.generate(b);return P.publicProperties(b),P.publicMethods(O),P.attr("aria-grabbed",!1),P.attr("aria-label",b.label),P.attr("draggable",b.enabled),P.append(n()),P.append(U),P.on(DragEvent.END,v),P.on(DragEvent.START,S),P.on(ElementEvent.SELECT,h),P}},DropArea={generate:function(e){function t(e){Util.isSet(b)?b.call("add",e):O["super"]("add",e),c()}function n(){h=!0}function r(){var e=O.call("getElementsByType","DragItem");return e.length<v.maxDragItems}function a(e){if(!StringUtil.isEmpty(e)){var t=O.find("#"+e);if(t.length>0)return t}return null}function i(){return Util.nullValue(b,O)}function o(e){var t={visible:e,which:"highlight"};O.toggleClass("highlight",Util.nullValue(e,!0)),O.trigger(ElementEvent.STATE,t)}function s(){v.maxDragItems=Math.max(1,v.maxDragItems),v.numToMatch=v.numToMatch<0?v.maxDragItems:Math.min(v.numToMatch,v.maxDragItems),O["super"](ElementEvent.INIT)}function l(){b=a(v.dropRegion),O["super"](ElementEvent.READY)}function c(e){h=Util.isSet(e)?e:r(),u(v.enabled)}function u(e){v.enabled=e;var t=v.enabled&&h;O.attr("aria-dropeffect",t?"move":"none"),O.removeClass("over"),O["super"]("setEnabled",t)}function d(e){h&&O.addClass("over")}function f(e){h&&O.removeClass("over")}function p(e){e.preventDefault()}function E(e){if(e.preventDefault(),h){e.stopPropagation(),O.removeClass("over");var t=e.originalEvent,n=t.dataTransfer.getData("text"),r=$("#"+n);r.call("drop",O)}}function m(e){v.enabled&&h&&O.addClass("over")}function g(e){v.enabled&&h&&O.removeClass("over")}var v={cssClass:"drop-area",dropRegion:"",elementType:"DropArea",enabled:!1,id:"drop-area",maxDragItems:1,numToMatch:-1,role:"option",selected:!1},S={add:t,drag:n,getDropTarget:i,highlight:o,init:s,ready:l,setActive:c,setEnabled:u};v=Element.extend(v,e);var h=!0,b=null,O=InteractiveElement.generate(v);return O.publicProperties(v),O.publicMethods(S),O.on(MouseEvent.ENTER,m),O.on(MouseEvent.LEAVE,g),O.on(DragEvent.ENTER,d),O.on(DragEvent.LEAVE,f),O.on(DragEvent.OVER,p),O.on(DragEvent.DROP,E),O}},DualStateElement={NEUTRAL:0,UNSELECTED:1,SELECTED:2,generate:function(e){function t(e){return Util.isSet(e)?e?DualStateElement.SELECTED:DualStateElement.UNSELECTED:DualStateElement.NEUTRAL}function n(){return s.currentState===DualStateElement.SELECTED}function r(){return s.validState===DualStateElement.SELECTED}function a(e,t,r,a){"selected"===e?Util.isSet(r[0])?i(r[0]):a.selected=n():c["super"]("scriptAction",e,t,r,a)}function i(e){c.call("setState",t(e)),c.attr("aria-checked",n())}function o(e){i(s.cycle?!n():!0)}var s={elementType:"DualStateElement",id:"dual-state-element"},l={isSelected:n,isValid:r,scriptAction:a,setSelected:i};s=Element.extend(s,e),s.currentState=t(s.selected),s.stateCount=2;var c=MultipleStateElement.generate(s);return c.publicProperties(s),c.publicMethods(l),c.attr("aria-checked",n()),c.off(ElementEvent.SELECT),c.on(ElementEvent.SELECT,o),c}},Element={generate:function(e){function t(e,t){if(Util.isSet(e)){var n=Util.nullValue(t,!1);n?y.prepend(e):y.append(e),y.trigger(ElementEvent.ADDED,[e])}}function n(){return U.trigger(ProgressEvent.CONTINUE),!0}function r(e,t){if(Util.isSet(e)){var n=Util.nullValue(b.alignment,{}),r=new Point(n.xOffset,n.yOffset);r.offset(t);var a={target:e,sourceAlign:new Alignment(n.vAlign,n.hAlign),targetAlign:new Alignment(n.vAnchor,n.hAnchor),offset:r};U.alignTo(a)}}function a(){var e=function(e,t){var n=$(t);n.call("clear"),n.call("remove")},t=Util.nullValue(y,U),n=t.children();n.each(e)}function i(e){if(Util.isSet(e)){var t=function(e,t){n(e[t])},n=function(e){r.push(i(e))},r=[];switch(e.constructor){case Object:return ObjectUtil.forEachItem(e,t),r.join(" ");case Array:return e.forEach(n),r.join(" ");case String:return e}}return""}function o(e){var t=function(t,n){return $(n).isVal("elementType",e)};return U.find("*").filter(t)}function s(e){return b.data[e]}function l(e){var t=Util.nullValue(e,!0);U.toggleClass("hide",t)}function c(){U.trigger(ElementEvent.INIT)}function u(e){return e.toLowerCase()===b.elementType.toLowerCase()}function d(e,t){if(Util.isSet(T)){var n=T[e];if(ObjectUtil.is(n,Function)){var r=Util.nullValue(t,{});return Util.nullValue(n(U,r),{})}}return{}}function f(){U.trigger(ElementEvent.READY)}function p(e){var t=Util.nullValue(e,!1),n=function(){var e=U.parent();U.remove(),e.trigger(ElementEvent.REMOVED,[U])};t?U.slideUp("fast",n):n()}function E(e){b.acc=Util.nullValue(e,!0),U.setAcc(b.acc)}function m(e){var t=function(e){"#"===e.charAt(0)&&n.push(e.slice(1))},n=[];Util.isSet(e)&&(e.constructor===Array?e.forEach(t):e.constructor===String&&t(e)),n.length>0?(b.accDesc=n.join(" "),U.attr("aria-describedby",b.accDesc)):U.removeAttr("aria-describedby")}function g(e){var t=function(e){"#"===e.charAt(0)?r.push(e.slice(1)):n=e},n="",r=[];Util.isSet(e)&&(e.constructor===Array?e.forEach(t):e.constructor===String&&t(e)),""!==n?(b.accName=n,U.attr("aria-label",b.accName),U.removeAttr("aria-labelledby")):r.length>0?(b.accName=r.join(" "),U.attr("aria-labelledby",b.accName),U.removeAttr("aria-label")):(U.removeAttr("aria-label"),U.removeAttr("aria-labelledby"))}function v(e){y=e}function S(e){var t="role";b.role=Util.nullValue(e,""),""===b.role?U.removeAttr(t):U.attr(t,b.role)}function h(e,t){b.data[e]=t}var b={accDesc:"",accName:"",alignment:{},cssClass:"",data:{},element:"<div/>",elementType:"Element",footerBarState:FooterBarState.UNCHANGED,hasAudio:!1,highContrast:!1,id:"element",param:{},relative:"",resourceId:"",resourcePath:"",role:"",style:{},title:""},O={add:t,advance:n,clear:a,align:r,getElementsByType:o,getVal:s,hide:l,init:c,isElement:u,jsCall:d,ready:f,remove:p,setAcc:E,setAccDesc:m,setAccName:g,setContainer:v,setVal:h};b=Element.extend(b,e),$.extend(b.data,b.param),Element.manifestValue(b,"accName",{element:b.data},!0);var y=null,T=StringUtil.resolve(b.resourcePath,core.pageScript),U=$(b.element);return U.publicProperties(b),U.publicMethods(O),
U.attr("id",b.id),U.attr("data-element-type",b.elementType),U.attr("data-high-contrast",b.highContrast),U.addClass(i(b.cssClass)),U.addClass(b.resourceId),U.css(b.style),S(b.role),E(b.acc),g(b.accName),m(b.accDesc),v(U),U},extend:function(e,t){return Util.isSet(t)?($.extend(e,t),$.extend(t,e)):e},manifestValue:function(e,t,n,r){var a=null;if(e.hasOwnProperty(t)){var i=e[t];if(StringUtil.isEmpty(i)&&(a=StringUtil.resolve(e.resourcePath,core.manifest),Util.isSet(a)))if(a.constructor===Object)i=a[t];else{var o=Util.nullValue(r,!1),s=e.resourcePath.split(".").pop();o&&s!==t||(i=a)}if(ObjectUtil.is(i,String)){var l=$.extend({config:core.config,core:core.data,manifest:core.manifest},n);e[t]=StringUtil.parseVars(i,l)}}return a}},Flow={NAV_BUTTON_NEXT:"&#9658;",NAV_BUTTON_PREVIOUS:"&#9664;",generate:function(e){function t(e){var t={cssClass:"flow-nav-button",enabled:!0,highContrast:O.highContrast,role:"button"},n=Element.generate({acc:!1,id:e.id+"-icon",cssClass:"tabbed-view-button-icon"});n.append(e.icon);var r=InteractiveElement.generate($.extend(t,e));return r.addClass(e.nav),r.append(n),r.on(ElementEvent.HOVER,h),r}function n(e,t){var n=e.id,a={cssClass:"flow-item",dynamic:Util.nullValue(e.dynamic,""),id:n},i=r(n),o=Util.nullValue(e["static"],n+"-static");L.call("addElements",i,o);var s=Element.generate(a);return s.append(i),s}function r(e){var t={cssClass:"flow-item-content",highContrast:!0,id:e+"-content"};return Element.generate(t)}function a(){var e=function(e,t){e.target=n(e,t),r.append(e.target)},t={cssClass:"flow-items",id:O.id+"-items"},r=Element.generate(t),a=d(T);return a.forEach(e),r}function i(){var e={cssClass:"flow-nav",id:O.id+"-nav"},t=Element.generate(e);return t.append(M),t.append(s()),t.append(R),t.on(ElementEvent.SELECT,b),t}function o(e){var t={acc:!1,cssClass:"flow-nav-item",highContrast:!0,id:O.id+"-nav-item"+(e+1),nav:e};return InteractiveElement.generate(t)}function s(){var e=function(e,t){"cover"!==e.id&&(e.navItem=o(t),n.append(e.navItem))},t={cssClass:"flow-nav-items",id:O.id+"-nav-items",role:"status"},n=Element.generate(t);return U.forEach(e),n}function l(){var e={icon:Flow.NAV_BUTTON_NEXT,id:O.id+"-next-button",nav:"next"};return t(e)}function c(){var e={icon:TabbedView.BUTTON_PREVIOUS,id:O.id+"-previous-button",nav:"previous"};return t(e)}function u(){var e={cssClass:"flow-window",id:O.id+"-window"};return Element.generate(e)}function d(e){var t=function(t){return Util.condition(t.visible,e,!0)};return O.items.filter(t)}function f(){var e=function(e){return Util.nullValue(e.visited,!1)};U.every(e)}function p(){return{config:core.config,core:core.data,element:O.data,page:Util.isSet(L)?L.getVal("data"):{}}}function E(){C=D.width(),S(0)}function m(){I>0&&S(I-1)}function g(){P-1>I&&S(I+1)}function v(e,t){var n=U[e];n.visited=!0;var r=n.navItem;Util.isSet(r)&&r.toggleClass("current",t)}function S(e){var t=function(){var e=$(l.children()[0]),t=l.getVal("dynamic"),n=N.elements[t];Util.isSet(n)&&(core.audio.call("stop"),l.data("dynamic",L.call("addElements",e,n)),V.trigger(ElementEvent.CHANGE,{completed:f()}))},n=function(){l=U[I].target;var e=l.data("dynamic");Util.isSet(e)&&(core.audio.call("stop"),e.remove(),l.removeData("dynamic")),D.animate({width:C},o,s,r)},r=function(){A=!1,l.css("width",""),i()},a=function(){I=e;var n=!StringUtil.isEmpty(U[I].dynamic);O.autoExpand&&n&&(A=!0,l.css("width","100%"),D.animate({width:"100%"},o,s,t))},i=function(){l=U[e].target;var t=-(l.position().left/core.scale);_.animate({left:t},o,s,a)};M.call("setEnabled",e>0&&"cover"!==U[e-1].id),R.call("setEnabled",P-1>e),I>=0&&v(I,!1),v(e,!0);var o=300,s="easeInOutQuad",l=null;D.stop(!0),_.stop(!0),A?n():i()}function h(e,t){var n=$(e.target);n.toggleClass("hover",t.hover)}function b(e){var t=$(e.target),n=t.getVal("nav");"previous"===n?m():"next"===n?g():S(n)}var O={autoExpand:!0,cssClass:"flow",elementType:"Flow",id:"flow",items:[]},y={init:E};O=Element.extend(O,e);var T=p(),U=d(T),P=U.length,I=-1,C=0,A=!1,N=core.course.currentPage,L=N.target,_=a(),D=u();D.append(_);var R=l(),M=c(),x=i(),V=Element.generate(O);return V.publicProperties(O),V.publicMethods(y),V.append(D),V.append(x),V}},FooterBar={generate:function(e){function t(){var e=function(e,t){var n=!1;return t===m.state&&(n=h.call("activate",v[t])),n};return ObjectUtil.some(v,e)}function n(e,t){Util.isSet(e)||E(core.course.currentPage,t)}function r(e){var t=o(e),n={id:m.id+"-buttons",buttons:t,cssClass:"button-group footer-bar-buttons",enabled:m.enabled,tabIndexOffset:TabOrder.FOOTER_BAR_BUTTONS},r=ButtonGroup.generate(n);return r.toggleClass("hide",0===t.length),r}function a(){var e={id:m.id+"-page-icons",tabIndexOffset:TabOrder.PAGE_ICONS};return PageIcons.generate(e)}function i(){var e={};return e[FooterBarState.CONTINUE]=Button.CONTINUE,e[FooterBarState.COURSE_END]=Button.HOME_PAGE,e[FooterBarState.COURSE_START]=Button.START_COURSE,e[FooterBarState.PAGE_END]=Button.CONTINUE_NEXT_PAGE,e[FooterBarState.QUESTION]=Button.CONTINUE,e[FooterBarState.SECTION_END]=Button.CONTINUE_NEXT_SECTION,e}function o(e){var t=function(e,t,r){var a=e===Button.START_COURSE,i={cssClass:"footer-bar-button",icon:a?"":e,id:e,label:core.manifest.player.button.label[e],showLabel:a,transparent:!0};n.push(i)},n=[];return e.forEach(t),n}function s(){return h.call("getEnabledButtons")}function l(e){switch(e){case FooterBarState.CLOSE:return[Button.CLOSE];case FooterBarState.CONTINUE:return[Button.CONTINUE];case FooterBarState.COURSE_START:return[Button.START_COURSE];case FooterBarState.COURSE_END:return[Button.HOME_PAGE];case FooterBarState.NONE:return[];case FooterBarState.PAGE_END:return[Button.CONTINUE_NEXT_PAGE];case FooterBarState.QUESTION:return[Button.CONTINUE];case FooterBarState.SECTION_END:return[Button.HOME_PAGE,Button.CONTINUE_NEXT_SECTION]}return null}function c(e){if(Util.isSet(e)){var t=r(e);h.replaceWith(t),h=t}}function u(e){var t=h.children("#"+Button.CONTINUE);t.length>0&&(t.call("setEnabled",e.enabled),h.toggleClass("hide",!e.visible),e.visible&&(m.state=FooterBarState.CONTINUE))}function d(e){h.call("setEnabledButtons",e)}function f(e){m.enabled=e,S.call("setEnabled",m.enabled),h.call("setEnabled",m.enabled)}function p(e){m.state!==e&&(m.state=e,c(l(m.state)))}function E(e,t){Util.isSet(e)&&(b.toggleClass("hide",!e.showFooterBar),S.call("startPage",e))}var m={cssClass:"footer-bar",enabled:!0,id:"footer-bar",state:FooterBarState.NONE},g={advance:t,changePage:n,getEnabledButtons:s,setButtons:c,setContinue:u,setEnabled:f,setEnabledButtons:d,setState:p,startPage:E};m=Element.extend(m,e);var v=i(),S=a(),h=r([]),b=Element.generate(m);return b.publicProperties(m),b.publicMethods(g),b.append(S),b.append(h),b}},FooterBarState={CLOSE:"close",CONTINUE:"continue",COURSE_END:"course-end",COURSE_START:"course-start",NONE:"none",PAGE_END:"page-end",QUESTION:"question",SECTION_END:"section-end",UNCHANGED:""},GlossaryElement={generate:function(e){function t(){var e={cssClass:"glossary-element-definition-container",id:v.id+"-definition-container"},t=Element.generate(e);return t.append('<p class="glossary-element-definition-initial">'+S+"</p>"),t}function n(){var e={acc:!1,cssClass:"glossary-element-background",highContrast:!0,id:v.id+"-background"};return Element.generate(e)}function r(){var e={acc:!1,cssClass:v.id+"-definition-pane",highContrast:!0,id:v.id+"-definition-pane"};T=t();var n=Element.generate(e);return n.append(T),n}function a(e){var t=function(e){return StringUtil.evaluate(StringUtil.parseVars(e))},n={cssClass:"glossary-element-definition-text",element:"<dfn/>",id:v.id+"-definition-text"},r=Element.generate(n);return r.append(e),r.visibilityFilter(t),E(r),r}function i(e){var t={cssClass:"glossary-element-definition-title",element:"<dt/>",id:v.id+"-definition-title"},n=Element.generate(t);return n.append(e),n}function o(){for(var e=h.getEntries(),t=e.moveFirst(),n=null;Util.isSet(t);)n=l(t),n.appendTo(O),t=e.moveNext()}function s(){var e={accName:S,cssClass:v.id+"-entries-pane scrollable",highContrast:!0,id:v.id+"-entries-pane",role:"listbox"};return Element.generate(e)}function l(e){var t={cssClass:v.id+"-entry",element:"<a/>",id:v.id+"-entry-"+e.id,role:"option"},n=Element.generate(t);return n.attr("href","#"),n.attr("data-id",e.id),n.attr("name",e.id),n.attr("tabindex",TabOrder.PAGE_CONTENT),n.append(e.term),n}function c(e){var t=h.getEntryListItem(e),n=i(t.term);U=a(t.definition),U.attr("aria-labelledby",n.attr("id")),T.empty(),T.append(n),T.append(U)}function u(e,t,n){if(!StringUtil.isEmpty(e)){var r=O.children('[data-id="'+e+'"]');r.length>0&&P!==r&&(c(e),f(r),t&&p(r,n),P=r)}}function d(){h.init(),b=n(),O=s(),y=r(),I.append(b),I.append(O),I.append(y),o(),I.trigger(ElementEvent.INIT),u(v.data.entryId,!0,!1)}function f(e){Util.isSet(P)&&(P.removeClass("selected"),P.removeAttr("aria-describedby")),e.addClass("selected"),e.attr("aria-describedby",U.attr("id"))}function p(e,t){var n=Util.invScale(e.offset().top-O.offset().top,core.scale)+O.scrollTop();t?O.animate({scrollTop:n}):O.scrollTop(n)}function E(e){var t=function(e){var t=$(this),n=t.data("id");if(""===this.innerHTML){var r=h.getItemById(n);t.append(r.term)}},n=e.find("a[data-id]");n.attr("tabindex",TabOrder.PAGE_CONTENT),n.each(t)}function m(e){var t=$(e.target),n=Util.nullValue(t.attr("class"),"");if(Util.isSet(n.match(/^glossary.*/))){e.stopPropagation();var r=Util.isSet(n.match(/glossary-element-entry/));u(t.data("id"),!r,!0)}}var g={init:d},v={cssClass:"glossary-element",elementType:"GlossaryElement",highContrast:!0,id:"glossary-element"};v=Element.extend(v,e);var S=core.manifest.glossary["default-definition"],h=core.glossary,b=null,O=null,y=null,T=null,U=null,P=null,I=Element.generate(v);return I.publicProperties(v),I.publicMethods(g),I.on(MouseEvent.CLICK,"a",m),I}},Graphic={generate:function(e){function t(){return Bitmap.generate(r)}function n(e){a.off(LoadEvent.LOAD,n),a["super"]("init")}var r={cssClass:"graphic",elementType:"Graphic",height:0,id:"graphic",src:"",symbol:"",width:0};r=Element.extend(r,e);var a=t();return a.on(LoadEvent.LOAD,n),a}},GridLayout={generate:function(e){function t(e){var t=n.rows[e],r={id:n.id+"-row-"+e,index:e};return GridLayoutRow.generate($.extend({},t,r))}var n={id:"grid-layout",rows:[]};n=Element.extend(n,e);var r=n.rows.length,a=Element.generate(n);a.publicProperties(n);for(var i=0;r>i;i++)a.append(t(i));return a}},GridLayoutCell={generate:function(e){var t={content:"",id:"grid-layout-cell",style:{display:"inline-block"}};t=Element.extend(t,e);var n=Element.generate(t);return n.publicProperties(t),n.append(t.content),n}},GridLayoutRow={generate:function(e){function t(e){var t=n.cells[e],r={id:n.id+"-cell-"+n.index+"-"+e,index:e};return GridLayoutCell.generate($.extend({},t,r))}var n={cells:[],id:"grid-layout-row",index:0};n=Element.extend(n,e);var r=n.cells.length,a=100/r+"%",i=null,o=Element.generate(n);o.publicProperties(n);for(var s=0;r>s;s++)i=t(s),i.css("width",a),i.appendTo(o);return o}},HeaderBar={generate:function(e){function t(e){y.call("activate",e)||T.call("activate",e)}function n(e,t){t.closeOverlay&&m(core.course.currentPage,t)}function r(){T.call("close")}function a(){var e=[Button.HOME_PAGE,Button.PREVIOUS_PAGE,Button.REPLAY_PAGE,Button.NEXT_PAGE,Button.TOOLKIT];core.config["show-exit-button"]&&e.push(Button.EXIT);var t={buttons:u(e),id:S.id+"-buttons",cssClass:"button-group header-bar-buttons",enabled:S.enabled,role:"toolbar",tabIndexOffset:TabOrder.HEADER_BAR_BUTTONS};return ButtonGroup.generate(t)}function i(){var e={acc:!1,cssClass:"header-bar-course-logo",id:S.id+"-course-logo"},t=Element.generate(e);return t.append(Element.generate({cssClass:e.cssClass+"-icon",id:e.id+"-icon"})),t}function o(){var e={cssClass:"header-bar-title",id:S.id+"-title"};return Element.generate(e)}function s(){var e={cssClass:"header-bar-page-title",id:S.id+"-page-title"};return Element.generate(e)}function l(){var e={acc:!1,cssClass:"header-bar-titles",id:S.id+"-titles"},t=Element.generate(e);return t.append(b),t.append(O),t}function c(e,t){var n={};if(n[Button.EXIT]=!0,n[Button.TOOLKIT]=!0,n[Button.REPLAY_PAGE]=!t.assessmentQuestion,t.assessmentQuestion)n[Button.HOME_PAGE]=!0,n[Button.PREVIOUS_PAGE]=!1,n[Button.NEXT_PAGE]=!1;else{var r=core.course.isHomePage(e);n[Button.HOME_PAGE]=!r,n[Button.PREVIOUS_PAGE]=e.enablePreviousPage&&core.course.hasPreviousPage(),n[Button.NEXT_PAGE]=e.enableNextPage&&t.hasNextPage&&(!S.sequentialPages||e.completed)}return n}function u(e){var t=function(e,t,r){var a={};a.cssClass="header-bar-button",a.id=e,a.icon=e,a.label=core.manifest.player.button.label[e],a.showLabel=!1,a.role="menuitem",n.push(a)},n=[];return e.forEach(t),n}function d(e,t){if(e.length>0&&t.length>0){var n=t.attr("id");e.attr("aria-haspopup",!0),e.attr("aria-controls",n),e.attr("aria-owns",n)}}function f(e){S.enabled=e,y.call("setEnabled",e),y.call("setAcc",e)}function p(e){y.call("setEnabledButtons",e)}function E(e){if(Util.isSet(e)){S.titleText=e;var t=e.course,n=Util.isSet(e.section);n&&!StringUtil.isEmpty(e.section)&&(t+='<span class="section-title"> - '+e.section+"</span>"),b.toggleClass("root-page",!n),b.html(t),O.call("hide",!n),O.html(e.page),h.call("hide",n)}}function m(e,t){!e.isOrphan||t.assessmentQuestion?e.showHeaderBar?(e.enableHeaderBar&&(p(c(e,t)),T.call("startPage",e,t)),t.closeOverlay||E(t.titles),y.call("setAcc",!0),P.show()):P.hide():f(!1)}function g(e){var t=e.target.id;t===Button.TOOLKIT&&(e.stopPropagation(),T.call("toggle"))}var v={activate:t,changePage:n,closeToolkit:r,setEnabled:f,setEnabledButtons:p,setTitles:E,startPage:m},S={cssClass:"header-bar",enabled:!0,id:"header-bar",sequentialPages:!1,titleText:{}};S=Element.extend(S,e);var h=i(),b=o(),O=s(),y=a(),T=ToolkitMenu.generate(),U=l();d(y.find("#toolkit"),T);var P=Element.generate(S);return P.publicProperties(S),P.publicMethods(v),P.on(ElementEvent.SELECT,g),P.append(h),P.append(U),P.append(y),P.append(T),P}},InfoDialog={generate:function(e){function t(){var e=core.course.currentPage,t=["<strong>Page id:</strong>  "+core.course.pageId,"<strong>Page title:</strong>  "+core.course.getNodeTitle(e),"<strong>Course version:</strong>  "+core.course.root.version,"<strong>Design version:</strong>  "+core.config["design-version"],"<strong>Release id:</strong>  "+core.release.id,"<strong>Licensed to:</strong>  "+core.licence.customerName+(core.licence.remote?"":" *")];return StringUtil.isEmpty(core.licence.expiryDate)||t.push("<strong>Licensed until:</strong>  "+core.licence.expiryDate),t.join("<br/>")}function n(e){e.stopPropagation(),i.off(DialogEvent.RESPONSE),core.view.off(PageEvent.START,r)}function r(e){i.call("setText",t())}var a={buttons:[Button.OK],cssClass:"dialog info-dialog",draggable:!0,icon:MessageBoxIcon.INFORMATION,id:"info-dialog",text:t(),title:"Course information"};a=Element.extend(a,e);var i=MessageBox.generate(a);return i.publicProperties(a),i.on(DialogEvent.RESPONSE,n),core.view.on(PageEvent.START,r),i}},InteractiveElement={generate:function(e){function t(e){m.trigger(ElementEvent.HOVER,{hover:e})}function n(){m.trigger(ElementEvent.SELECT,{})}function r(e){var n=Util.nullValue(m.data("_enabled"),!0)&&e;n||t(!1),p.enabled=n,m.toggleClass("enabled",n),m.toggleClass("disabled",!n),a(p.tabEnabled),m.trigger(ElementEvent.ENABLED,{enabled:p.enabled})}function a(e){p.tabEnabled=e,i(p.tabIndex)}function i(e){p.tabIndex=e;var t="tabindex",n=p.enabled&&p.tabEnabled;n?m.attr(t,p.tabIndex):m.removeAttr(t)}function o(e,t,r,a){"select"===e&&n()}function s(e,t){E=!1,p.enabled&&(Util.isSet(t)||(e.stopPropagation(),n(),m.trigger(MouseEvent.CLICK,{})))}function l(e){!E&&p.enabled&&t(!0)}function c(e){if(p.enabled){var t=e.which;(t===Key.ENTER||t===Key.SPACE)&&(e.stopPropagation(),n())}}function u(e){!E&&p.enabled&&t(!1)}function d(e){e.stopPropagation(),E=!0,m.addClass("touch")}var f={select:n,setEnabled:r,setTabEnabled:a,setTabIndex:i,scriptAction:o},p={elementType:"InteractiveElement",enabled:!0,id:"interactive-element",role:"button",tabEnabled:!0,tabIndex:TabOrder.PAGE_CONTENT};p=Element.extend(p,e);var E=!1,m=Element.generate(p);return m.publicProperties(p),m.publicMethods(f),m.on(MouseEvent.CLICK,s),m.on(MouseEvent.ENTER,l),m.on(KeyboardEvent.KEY_DOWN,c),m.on(MouseEvent.LEAVE,u),m.on(TouchEvent.START,d),r(p.enabled),m}},LinearProgressIndicator={generate:function(e){function t(){var e={cssClass:"linear-progress-indicator-progress",id:a.id+"-progress"};return Element.generate(e)}function n(e,t,n,a){"progress"===e&&r(Util.nullValue(n[0],0))}function r(e){a.progress=NumberUtil.constrain(e,0,1);var t=Math.round(100*a.progress);o.width(t+"%")}var a={cssClass:"linear-progress-indicator",elementType:"LinearProgressIndicator",id:"linear-progress-indicator",progress:0},i={scriptAction:n,setProgress:r};a=Element.extend(a,e);var o=t(),s=Element.generate(a);return s.publicProperties(a),s.publicMethods(i),s.append(o),r(a.progress),s}},MarkingSymbol={generate:function(e){function t(e){var t=e?"correct":"incorrect";return"symbols."+t}function n(e,t,n,a){"setcorrect"===e&&r(Util.nullValue(n[0],!0))}function r(e){i.correct=e,s.call("setSymbol",t(i.correct)),s.attr("aria-label",o[e?"correct":"incorrect"])}var a={scriptAction:n,setCorrect:r},i={correct:!1,id:"marking-symbol"};i=Element.extend(i,e),i.symbol=t(i.correct);var o=core.manifest.player["marking-symbol"],s=Sprite.generate(i);return s.publicProperties(i),s.publicMethods(a),s}},MediaWrapper={VOLUME_DELTA:.1,generate:function(e){function t(){var e=g.prop("volume");u(e-Audio.VOLUME_DELTA)}function n(){var e=g.prop("volume");u(e+Audio.VOLUME_DELTA)}function r(e){E.enabled&&(E.src=e,g.attr("src",E.src),g.prop("autoplay",E.autoPlay),g.prop("loop",E.loop),g.prop("muted",E.muted),g[0].load())}function a(){E.enabled&&g[0].pause()}function i(e){if(E.enabled){Util.isSet(e)&&c(e);var t=g[0].play();Util.isSet(t)&&t["catch"](function(e){})}else g.trigger(MediaEvent.DISABLED)}function o(e,t,n,r){"play"===e?i(n[0]):"pause"===e?a():"stop"===e&&d(n[0])}function s(e){g.call("stop"),E.enabled=e,g.trigger(ElementEvent.ENABLED,{enabled:E.enabled})}function l(e){E.muted=e,g.prop("muted",E.muted)}function c(e){g.prop("readyState")>0&&g.prop("currentTime",e)}function u(e){E.volume=NumberUtil.constrain(e,0,1),g.prop("volume",E.volume)}function d(e){a(),c(Util.nullValue(e,0))}function f(){var e=g.prop("muted");l(!e)}function p(){var e=g.prop("paused");e?i():a()}var E={autoPlay:!1,enabled:!1,loop:!1,muted:!1,volume:1},m={decreaseVolume:t,increaseVolume:n,load:r,pause:a,play:i,scriptAction:o,setEnabled:s,setMute:l,setVolume:u,stop:d,toggleMute:f,togglePause:p};E=Element.extend(E,e);var g=Element.generate(E);return g.publicProperties(E),g.publicMethods(m),g}},MessageBox={generate:function(e){function t(){var e={cssClass:"message-box-content",id:s},t=Element.generate(e);return t.append(n()),t.append(l),t}function n(){var e={acc:!1,cssClass:"message-box-icon",id:s+"-icon",symbol:"symbols."+o.icon};return Sprite.generate(e)}function r(){var e={acc:!1,cssClass:"message-box-text",element:"<p/>",id:s+"-text"};return Element.generate(e)}function a(e){o.text=StringUtil.parseVars(e,o.param),l.empty(),l.append(o.text)}var i={setText:a},o={icon:"",id:"message-box",role:"alertdialog",text:""};o=Element.extend(o,e),Element.manifestValue(o,"text");var s=o.id+"-content",l=r();o.content=t();var c=Dialog.generate(o);return c.publicProperties(o),c.publicMethods(i),c.attr("aria-describedby",l.attr("id")),a(o.text),c}},MessageBoxButton={CANCEL:"cancel",NO:"no",OK:"ok",YES:"yes"},MessageBoxIcon={ERROR:"error",INFORMATION:"information",QUESTION:"question",WARNING:"warning"},MultipleChoiceQuestionOptionChoice={generate:function(e){function t(){g=!1,c(!1)}function n(){var e={acc:!1,id:E.id+"-toggle-button",enabled:E.enabled,label:E.label,tabEnabled:!1,validState:E.validState};return E["switch"]?(E.selectSingle&&(e.currentState=0,e.cycle=!1),Switch.generate(e)):E.selectSingle?RadioButton.generate(e):Checkbox.generate(e)}function r(){return S.getVal("currentState")}function a(){return S.call("isCorrect")}function i(){return S.call("isSelected")}function o(){return S.call("isValid")}function s(){S.call("reset")}function l(){S.call("select")}function c(e){var t=g&&e;v["super"]("setEnabled",t),S.call("setEnabled",t)}function u(e){S.call("setSelected",e),v.attr("aria-selected",e)}function d(){S.call("setValidState"),v.attr("aria-selected",i())}function f(e){e.target===v[0]&&l()}function p(e,t){t.choiceIndex=E.index,E.selectSingle&&c(t.currentState<2)}var E={cssClass:"multiple-choice-question-option-choice",enabled:!0,id:"multiple-choice-question-option-choice",index:0,label:"",role:"option",selectSingle:!1,"switch":!1,tabEnabled:!1,validState:0},m={confirm:t,getCurrentState:r,isCorrect:a,isSelected:i,isValid:o,reset:s,select:l,setEnabled:c,setSelected:u,setValidState:d};E=Element.extend(E,e),E.label=StringUtil.parseVars(E.label,core.manifest),E.accName=E.label;var g=!0,v=InteractiveElement.generate(E);v.publicProperties(E),v.publicMethods(m),v.attr("aria-selected",!1),v.on(ElementEvent.SELECT,f);var S=n();return S.addClass("center"),S.on(ElementEvent.CHANGE,p),S.appendTo(v),v}},MultipleChoiceQuestionOption={generate:function(e){function t(){var e=function(e){e.call("confirm")};j=!1,P(!1),Y.forEach(e),N()}function n(e){var t=w.choices[e],n=Util.nullValue(k[e],""),r=["multiple-choice-question-option-choice",e%2?"background1":"background2"];e+1===B&&r.push("last");var a={acc:B>1,cssClass:r.join(" "),enabled:w.enabled,id:w.id+"-choice"+e,index:e,label:Util.nullValue(t.label,n),selectSingle:1===w.numToSelect,"switch":w["switch"]};return MultipleChoiceQuestionOptionChoice.generate($.extend({},t,a))}function r(){for(var e=[],t=null,r=0;B>r;r++)t=n(r),t.appendTo(G),e.push(t);return e}function a(){var e={cssClass:"multiple-choice-question-option-marking hide",id:w.id+"-marking"};return MarkingSymbol.generate(e)}function i(){var e=function(e){return StringUtil.evaluate(e)},t={acc:!1,cssClass:"multiple-choice-question-option-text",enabled:w.selectByChoice||1===B,id:w.id+"-text"},n=InteractiveElement.generate(t);return n.append(StringUtil.parseVars(w.text,{element:w.data})),n.visibilityFilter(e),n}function o(e){if(e.constructor===Array)return e;if(e.constructor===String&&!StringUtil.isEmpty(e))return e.split(",");var t=core.manifest.player.question.option;return w["switch"]||B>1?[t["choice-label-yes"],t["choice-label-no"]]:[t["choice-label-selected"]]}function s(){var e=function(e){(0===w.numToSelect||e.call("isSelected"))&&(t+=e.call("isCorrect"))},t=0;return Y.forEach(e),t}function l(e){return Y[e].call("getCurrentState")}function c(){return s()/d()}function u(){var e=function(e){return e.call("isSelected")};return Y.map(e)}function d(){return w.numToSelect>0?Math.min(w.numToSelect,B):B}function f(){var e=function(e,n){t=NumberUtil.setBit(t,n,e.call("isSelected"))},t=0;return Y.forEach(e),t}function p(){var e=function(e){return e.call("isValid")};return Y.map(e)}function E(e){G.toggleClass("highlight",Util.nullValue(e,!0))}function m(){var e={current:0,min:1===w.numToSelect?1:0,max:Math.pow(2,B)-1};return w.selectByChoice&&(e.min=Math.pow(2,w.numToSelect)-1,e.max-=e.min),e}function g(){return s()===d()}function v(){var e=function(e){return e.call("isSelected")};return Y.some(e)}function S(e){return Y[e].call("isCorrect")}function h(e){return Y[e].call("isSelected")}function b(e){var t=function(e){if(w.numToSelect>0){var t=e.toString(2),n=t.split("1").length-1;return n===w.numToSelect}return!0};if(e<F.max){var n=e+1;return t(n)?n:b(n)}return F.min}function O(e){G.toggleClass("knockback",Util.nullValue(e,!0))}function y(){var e=function(e){e.call("reset")};Y.forEach(e),K.addClass("hide"),F.current=0}function T(){w.selectByChoice?C(b(F.current)):1===B&&C(1===w.numToSelect?1:1-F.current)}function U(e,t){B>e&&(H.call("setEnabled",1===B&&t),Y[e].call("setEnabled",t))}function P(e){var t=function(e){e.call("setEnabled",n)},n=j&&e;w.enabled=e,H.call("setEnabled",n),Y.forEach(t)}function I(e){var t=function(t,n){t.call("setSelected",e[n])};Y.forEach(t)}function C(e){var t=function(t,n){t.call("setSelected",NumberUtil.getBit(e,n))};Y.forEach(t)}function A(e,t){Y[e].call("setSelected",t)}function N(){K.call("setCorrect",g()),D(w.showMarking)}function L(){var e=function(e){e.call("setValidState")};Y.forEach(e)}function _(e){var t=Util.nullValue(e,!1);D(w.showMarking&&t),L()}function D(e){var t=e&&(0===w.numToSelect||v());K.toggleClass("hide",!t)}function R(){var e=function(e){e.call("isSelected")&&t.push(e.attr("id"))},t=[];Y.forEach(e),G.attr("aria-describedby",t.join(" "))}function M(e,t){var n=function(e,t,n){return e.call("getCurrentState")>0},r=function(e,t,n){return o+=e.call("isSelected")?1:0,o===w.numToSelect},a=function(e){e.call("setEnabled",!s||e.call("isSelected"))},i=function(e,n){e.call("setSelected",n===t.choiceIndex)},o=0,s=!1;w.selectByChoice&&(0===w.numToSelect?s=Y.every(n):(o=0,s=Y.some(r),1===w.numToSelect?t.currentState>t.previousState&&Y.forEach(i):w.numToSelect>1&&Y.forEach(a))),t.optionIndex=w.index,t.choiceCount=B,t.complete=s,F.current=f(),R()}function x(e){T()}var V={confirm:t,getCurrentState:l,getScore:c,getSelected:u,getValid:p,highlight:E,isCorrect:g,isSelected:v,isChoiceCorrect:S,isChoiceSelected:h,knockback:O,reset:y,select:T,setChoiceEnabled:U,setChoiceSelected:A,setEnabled:P,setSelected:I,setState:C,setValidStates:L,showCorrect:_},w={choiceLabels:"",choices:[],cssClass:"multiple-choice-question-option",enabled:!0,highContrast:!0,id:"option",index:0,numToSelect:0,role:"listbox",selectByChoice:!1,showMarking:!0,"switch":!1,text:""};w=Element.extend(w,e),Element.manifestValue(w,"text");var j=!0,B=w.choices.length,k=o(w.choiceLabels),F=m(),G=Element.generate(w);G.publicProperties(w),G.publicMethods(V),G.on(ElementEvent.CHANGE,M);var H=i();H.on(ElementEvent.SELECT,x),H.appendTo(G);var Y=r(),K=a();return K.appendTo(G),G.attr("aria-labelledby",H.attr("id")),G.attr("aria-multiselectable",1!==w.numToSelect),G}},MultipleChoiceQuestion={SELECT_BY_OPTION:"option",SELECT_BY_CHOICE:"choice",generate:function(e){function t(){return ae.call("confirm")}function n(e,t,n){var r=t;return K.selectBy===MultipleChoiceQuestion.SELECT_BY_OPTION&&(1===e?r=Math.floor(t/2):e>1&&(r=e-(2*e-t))),Math.round(r*n)}function r(){var e=function(){$(this).remove()},t=function(e){e.call("confirm")};Q=!1,x(!1),ae.slideUp("fast",e),re.forEach(t),te.trigger(QuestionEvent.CONFIRM)}function a(){var e={buttons:[{enabled:!1,id:Button.CONFIRM,label:core.manifest.player.button.label[Button.CONFIRM]}],id:K.id+"-footer",resourcePath:K.resourcePath+".instruction",resourceId:K.resourceId+"-instruction",text:K.instruction},t=QuestionFooter.generate(e);return t.addClass("multiple-choice-question"),t.on(QuestionEvent.CONFIRM,Y),t}function i(){var e={acc:!1,assessment:K.assessment,availableMarks:ee,id:K.id+"-header",resourcePath:K.resourcePath+".question",resourceId:K.resourceId+"-question",text:K.question};return QuestionHeader.generate(e)}function o(e){var t=W[e],n=K.id+"-option",r=Util.nullValue(t.id,n+e),a={choiceLabels:K.choiceLabels,data:K.data,enabled:K.enabled,id:r,index:e,resourcePath:K.resourcePath+"."+r,numToSelect:K.numToSelect,resourceId:K.resourceId+"-"+r,selectByChoice:K.selectBy===MultipleChoiceQuestion.SELECT_BY_CHOICE,showMarking:K.showMarking,"switch":K["switch"],tabEnabled:!1};return MultipleChoiceQuestionOption.generate($.extend({},t,a))}function s(e){var t=(""===K.question&&0===e,{cssClass:"multiple-choice-question-options-row",id:K.id+"-row"+e});return Element.generate(t)}function l(){for(var e=[],t=null,n=null,r=0,a=0;z>a;a++)r=a%K.columns,0===r?(t=s(Math.floor(a/K.columns)),t.appendTo(te)):t.append(Element.generate({cssClass:"multiple-choice-question-option-spacer"})),n=o(a),n.css("width",J+"%"),n.appendTo(t),e.push(n);return e}function c(e){var t=function(t){return Util.condition(t.visible,e,!0)};return K.options.filter(t)}function u(){return ee}function d(){var e=core.course.currentPage,t=Util.isSet(e)?e.target:null;return{config:core.config,core:core.data,element:K.data,page:Util.isSet(t)?t.getVal("data"):{}}}function f(e,t,n){var r=e[t];return r.id===n}function p(){var e=v();return Math.floor(e*ee)}function E(e){return e.constructor===Number?e:e.constructor===String?ArrayUtil.getItemIndex(W,f,[e]):-1}function m(e){return re[e].call("getScore")}function g(){return 0===K.numToSelect||K.selectBy===MultipleChoiceQuestion.SELECT_BY_CHOICE?z:K.numToSelect}function v(){var e=function(e){t+=e.call("getScore")},t=0;return re.forEach(e),t/g()}function S(){var e=function(e){return e.call("getSelected")};return re.map(e)}function h(){var e=function(e){return e.call("getValid")};return re.map(e)}function b(e){var t=function(t){t.call("highlight",e)};re.forEach(t)}function O(e,t){var n=E(e);n>-1&&re[n].call("highlight",t)}function y(){Util.nullValue(core.config["autonomous-mode"],!1)&&j(),te.hide(),te.fadeIn("fast"),te["super"]("init")}function T(e,t){var n=Util.nullValue(t,!1);if(n){var r=k(S(),!0);if(e<r.length)return r[e]===Math.pow(2,z)-1}else if(z>e)return re[e].call("isAllSelected");return!1}function U(){return 1===v()}function P(e){return re[e].call("isCorrect")}function I(e){return re[e].call("isSelected")}function C(){var e=function(e,t,n){return e.call("isSelected")};return re.some(e)}function A(e,t){return re[e].call("isChoiceCorrect",t)}function N(e,t){return re[e].call("isChoiceSelected",t)}function L(e){if(K.enabled){var t=e-49;-1===t&&(t=9),t>=0&&z>t&&re[t].call("select")}}function _(e){var t=function(t){t.call("knockback",e)};re.forEach(t)}function D(e,t){var n=E(e);return re[n].call("knockback",t)}function R(){var e=function(e){e.call("reset")};re.forEach(e),ae.call("setEnabled",!1)}function M(e,t,n,a){var i=n.length,o=K.selectBy===MultipleChoiceQuestion.SELECT_BY_OPTION;if("availablemarks"===e)a.availableMarks=ee;else if("confirm"===e)r();else if("iscorrect"===e)0===i?a.isCorrect=U():1===i?a.isCorrect=P(Number(n[0])):2===i&&(a.isCorrect=A(Number(n[0]),Number(n[1])));else if("isallselected"===e)i>0&&(a.isAllSelected=T(n[0],Util.nullValue(n[1],o)));else if("isselected"===e)0===i?a.isSelected=C():1===i?a.isSelected=I(Number(n[0])):2===i&&(a.isSelected=N(Number(n[0]),Number(n[1])));else if("knockback"===e)1===i?_(n[0]):2===i&&D(n[0],n[1]);else if("marks"===e)a.marks=p();else if("score"===e)0===i?a.score=v():1===i&&(a.score=m(Number(n[0])));else if("selected"===e){if(0===i)a.selected=k(S(),o);else if(Util.isSet(n[0])){var s=n[0].constructor;if(s===Boolean)a.selected=k(S(),n[0]);else if(s===Array){var l=function(e,t){var n=e|Math.pow(2,z),r=NumberUtil.toBinArray(n);return r.shift(),r},c=Util.isSet(n[1])&&n[1]===!0,u=c?ArrayUtil.transpose2D(n[0].map(l)):n[0];w(u)}}}else"showcorrect"===e?B(n[0]):"valid"===e&&(a.valid=k(h(),o))}function x(e){var t=function(e){e.call("setEnabled",n)},n=Q&&e;K.enabled=e,re.forEach(t)}function V(e,t){re[e].call("setSelected",t)}function w(e){if(Util.isSet(e))for(var t=Math.min(z,e.length),n=0;t>n;n++)V(n,e[n])}function j(){var e=function(e){e.call("setValidStates")};re.forEach(e)}function B(e){var t=function(t){t.call("showCorrect",e)};re.forEach(t)}function k(e,t){var n=function(e){return ArrayUtil.toInt(e)},r=t?ArrayUtil.transpose2D(e):e;return r.map(n)}function F(){var e=function(e){var t=$(this).height()-2;$(this).find(".multiple-choice-question-option-choice").css({height:t+"px"})},t=te.children(".multiple-choice-question-options-row");t.each(e)}function G(e,t){if(e.target!==e.delegateTarget){e.stopPropagation();var n=function(e,n,r){return e.call("getCurrentState",t.choiceIndex)>0},r=function(e,n,r){return o+=e.call("isChoiceSelected",t.choiceIndex)?1:0,o===K.numToSelect},a=function(e,t){return Util.nullValue(e[t],!1)},i=function(e,n){n!==t.optionIndex&&e.call("setChoiceSelected",t.choiceIndex,!1)},o=0,s=0;if(K.selectBy===MultipleChoiceQuestion.SELECT_BY_OPTION){var l=function(e){var n=t.choiceIndex;e.call("setChoiceEnabled",n,!c||e.call("isChoiceSelected",n))},c=!1;0===K.numToSelect?c=re.every(n):(o=0,c=re.some(r),1===K.numToSelect?t.currentState>t.previousState&&re.forEach(i):re.forEach(l)),
Z[t.choiceIndex]=c,s=t.choiceCount}else Z[t.optionIndex]=t.complete,s=z;var u=Z.length===s&&ArrayUtil.every(Z,a);ae.call("setEnabledButtons",{confirm:u}),te.trigger(ElementEvent.CHANGE,$.extend({completed:u,targetId:e.target.id},t))}}function H(e){e.target===e.delegateTarget&&(F(),te.trigger(ProgressEvent.SET_CONTINUE,{enabled:!0,visible:!1}))}function Y(e){e.stopPropagation(),r()}var K={assessment:!1,choiceLabels:"",columns:1,cssClass:"multiple-choice-question",enabled:!0,footerBarState:FooterBarState.QUESTION,hasAudio:!0,id:"question",instruction:"",numToSelect:0,options:[],question:"",randomizeOptions:!1,role:"form",selectBy:MultipleChoiceQuestion.SELECT_BY_OPTION,showFooter:!0,showMarking:!0,weighting:1},q={advance:t,confirm:r,getAvailableMarks:u,getMarks:p,getOptionScore:m,getScore:v,getSelected:S,highlight:b,highlightOption:O,init:y,isCorrect:U,isOptionCorrect:P,isOptionSelected:I,isSelected:C,isChoiceCorrect:A,isChoiceSelected:N,keyPress:L,knockback:_,reset:R,scriptAction:M,setEnabled:x,setValidStates:j};K=Element.extend(K,e),Element.manifestValue(K,"choiceLabels"),Element.manifestValue(K,"question"),Element.manifestValue(K,"instruction"),K["switch"]=Util.nullValue(K["switch"],1!==K.numToSelect);var X=d(),W=c(X);K.randomizeOptions&&(W=ArrayUtil.sortItems(W,0,ArrayUtil.randomized));var Q=!0,z=W.length,Z=[],J=100/K.columns,ee=n(K.numToSelect,z,K.weighting),te=Element.generate(K);te.publicProperties(K),te.publicMethods(q),te.on(ElementEvent.CHANGE,G),te.on(ElementEvent.READY,H);var ne=i();ne.call("hide",StringUtil.isEmpty(K.question)),ne.appendTo(te);var re=l(),ae=a();return ae.toggleClass("hide",!K.showFooter),ae.appendTo(te),te.attr("aria-labelledby",ne.attr("id")),te.attr("aria-describedby",ae.attr("id")+"-text"),te}},MultipleStateElement={generate:function(e){function t(e){var t={visible:e,which:"highlight"};f.trigger(ElementEvent.STATE,t)}function n(){var e=Util.nullValue(u.validState,0);return e.constructor===Array?ArrayUtil.exists(e,u.currentState):0===e||u.currentState===e}function r(){return!u.mandatory||u.currentState>p}function a(){f.removeData("_enabled"),o(p)}function i(e,t,n,a){if("isselected"===e)a.isSelected=r();else if("setstate"===e){var i=Number(n[0]);isNaN(i)||o(i)}}function o(e){var t=NumberUtil.constrain(e,0,u.stateCount);if(u.currentState!==t){var n={currentState:t,previousState:u.currentState};u.currentState=t,f.trigger(ElementEvent.CHANGE,n)}}function s(e){var t=Util.nullValue(u.validState,0),n=t.constructor===Array&&t.length>0?t[0]:t,r={currentState:u.currentState,validState:n,which:"valid"};o(n),f.trigger(ElementEvent.STATE,r),Util.nullValue(e,!0)&&l(!1)}function l(e,t){var a=!t||r(),i={isCorrect:n(),visible:e&&a,which:"marking"};f.trigger(ElementEvent.STATE,i)}function c(e){o(u.cycle?u.currentState%u.stateCount+1:u.currentState+1)}var u={currentState:1,cycle:!0,elementType:"MultipleStateElement",id:"multiple-state-element",mandatory:!0,stateCount:1,validState:0},d={highlight:t,isCorrect:n,isSelected:r,reset:a,scriptAction:i,setState:o,setValidState:s,showMarking:l};u=Element.extend(u,e),u.stateCount=Math.max(1,u.stateCount);var f=InteractiveElement.generate(u);f.publicProperties(u),f.publicMethods(d),f.on(ElementEvent.SELECT,c),o(u.currentState);var p=u.currentState;return f}},PageIcon={generate:function(e){function t(e){var t={acc:!1,cssClass:"page-icon-index",id:i.id+"-index"},n=Element.generate(t);return n.call("hide",i.subPage),n.append(e),n}function n(){var e={accName:core.manifest.player.acc.recommended,cssClass:"page-icon-recommended",id:i.id+"-recommended",symbol:"symbols.recommended"};return Sprite.generate(e)}function r(){var e=i.pageNode,t="";if(Util.isSet(e)){var n=Util.nullValue(core.manifest[e.id],{});t=Util.nullValue(n.title,"")}return t}function a(){u.call("setEnabled",u.data("_enabled")),u.toggleClass("completed",i.pageNode.completed),l.toggleClass("completed",i.pageNode.completed),c.toggleClass("hide",!i.pageNode.recommended)}var i={cssClass:"page-icon",elementType:"PageIcon",enabled:!0,id:"page-icon",index:0,pageNode:null,role:"option",subPage:!1},o={update:a};i=Element.extend(i,e);var s=r(),l=t(i.index+1),c=n(),u=InteractiveElement.generate(i);return u.publicProperties(i),u.publicMethods(o),u.toggleClass("sub-page",i.subPage),u.attr("aria-label",s),u.attr("title",s),u.append(l),u.append(c),u}},PageIcons={generate:function(e){function t(e,n,r,a){for(var i=n.length,o=e.selectChildren(),s=o.moveFirst(),l=null,u=null;Util.isSet(s);)s.visible&&(s.isPageNode?(l={enabled:!1,index:a++,id:"page-icon-"+i,pageNode:s,subPage:r,tabIndex:c.tabIndexOffset},u=PageIcon.generate(l),u.appendTo(p),n.push(u),t(s,n,!0,0),i=n.length):a=t(s,n,r,a)),s=o.moveNext();return a}function n(){p.empty(),f=[]}function r(e){var t=function(e){var t=e.data("_enabled");e.call("setEnabled",t&&c.enabled)};c.enabled=e,p.toggleClass("disabled",!c.enabled),f.forEach(t)}function a(e){e<f.length&&(f[e].animate({opacity:1},"slow"),setTimeout(a,40,e+1))}function i(e){if(Util.isSet(e))if(e.showPageIcons&&Util.isSet(e.parent)){var r=core.course.getSection(e);Util.isSet(r)?(d!==r&&(d=r,n()),p.call("hide",!1),0===f.length?(t(d,f,!1,0),o(e),a(0)):o(e)):(p.call("hide",!0),d=null,n())}else p.call("hide",!0);else p.call("hide",!Util.isSet(d))}function o(e){var t=function(t){var r=t.getVal("subPage"),a=t.getVal("pageNode"),i=a===e;t.attr("aria-selected",i),t.toggleClass("current",i),t.data("_enabled",r?!u||a.completed:n),t.call("update"),r||(n=!u||a.completed)},n=!0;f.forEach(t)}function s(e){e.stopPropagation();var t=$(e.target),n=t.getVal("pageNode"),r={navigation:Navigation.PAGE_BY_ID,target:n.id};p.trigger(CourseEvent.NAVIGATE,r)}var l={setEnabled:r,startPage:i},c={accName:"Navigate to page.",cssClass:"page-icons",elementType:"PageIcons",enabled:!0,id:"page-icons",role:"menu",tabIndexOffset:0};c=Element.extend(c,e);var u=core.config["sequential-pages"],d=(core.config["strict-page-completion"],null),f=[],p=Element.generate(c);return p.publicProperties(c),p.publicMethods(l),p.on(ElementEvent.SELECT,s),p}},PageManager={generate:function(e){function t(e,t){var a=null;t.closeOverlay?(n(),m=0,a=E[m],Util.isSet(a)&&(l(a.getVal("pageNode"),t),a.show())):(a=E[e.isOrphan?1:0],Util.isSet(a)&&a.call("unload"),r(e,t))}function n(){Util.isSet(E[1])&&(E[1].remove(),E[1]=null)}function r(e,t){var n=Page.generate($.extend({pageNode:e},t,e));return n.hide(),n.on(PageEvent.START,u),n.appendTo(v),n.call("init"),n}function a(){return g?i():null}function i(){return E[m]}function o(){return g}function s(e,t){var n=E[m];n.off(),g=!1}function l(e,t){var n=t.titles,r=core.manifest.player.acc.titles,a=Util.isSet(n.section)&&!StringUtil.isEmpty(n.section)?r.section:r.page;v.call("setAccName",StringUtil.parseVars(a,{core:core,titles:n})),v.toggleClass("no-footer",!e.showFooterBar),v.toggleClass("no-header",!e.showHeaderBar)}function c(e){var t=a();Util.isSet(t)&&t.trigger(e.type,{property:e.property,value:e.value})}function u(e){var t=$(e.target),r=t.getVal("pageNode"),a=r.isOrphan;Util.isSet(E[0])&&(a?E[0].hide():E[0].remove()),n(),core.audio.stop(),m=a?1:0,E[m]=t,t.show(),g=!0}function d(e){var t=$(e.target),n=t.getVal("pageNode");$.extend(n.data,t.getVal("data"))}var f={cssClass:"page-manager",elementType:"PageManager",highContrast:!0,id:"page-manager",role:"group"},p={changePage:t,isPageActive:o,navigate:s,startPage:l};f=Element.extend(f,e);var E=[],m=0,g=!1;core.addEventListener(CoreEvent.SETTING,c);var v=Element.generate(f);return v.publicProperties(f),v.publicMethods(p),v.on(PageEvent.FINISH,d),v}},PageMenuElement={generate:function(e){function t(e,n){var r=function(n){i.append(t(e,n))},a=e.getElementProperties(n),i=null;if(Util.isSet(a)){var o=StringUtil.empty(a.elementType,"Element"),s=StringUtil.evaluate(o);Util.isSet(s)&&ObjectUtil.is(s.generate,Function)&&(i=s.generate(a),ObjectUtil.is(a.children,Array)&&a.children.forEach(r))}return i}function n(e,t){var n={cssClass:l.resourceId+"-option-label",highContrast:!0,id:e+"-label",text:t};return Paragraph.generate(n)}function r(e){for(var t=Selector.generate(e),n=core.course.currentPage,r=n.selectChildren("",new PageFilter({visible:!0})),o=r.count,s=Math.ceil(o/c),l=Math.ceil(o/s),u=0,d=0,f=r.moveFirst(),p=null,E=null;Util.isSet(f);)u%l===0&&(p=i(d++),p.appendTo(t)),E=a(n,f),E.appendTo(p),u++,f=r.moveNext();return t}function a(e,r){var a=r.id,i=a.replace(/\D+/g,""),s=StringUtil.isEmpty(l.resourceId)?l.id+"-option":l.resourceId+"-option",c=["page-menu-element-option",s],u={cssClass:c.join(" "),id:l.id+"-option-"+i,relative:l.id,resourceId:s},d=n(u.id,r.title),f=InteractiveElement.generate(u);return f.attr("role","menuitem"),f.data("page-id",a),f.attr("aria-labelledby",d[0].id),f.append(t(e,i)),f.append(d),f.append(o(u.id,r.getProgress())),f}function i(e){var t={cssClass:"page-menu-element-row",id:l.id+"-row"+e};return Element.generate(t)}function o(e,t){var n={cssClass:l.resourceId+"-option-status",id:e+"-status",progress:t};return RadialProgressIndicator.generate(n)}function s(e){var t=$(e.target);u.call("setEnabled",!1),u.trigger(CourseEvent.NAVIGATE,{navigation:Navigation.PAGE_BY_ID,target:t.data("page-id")})}var l={cssClass:"page-menu-element",elementType:"PageMenuElement",id:"page-menu-element"};l=Element.extend(l,e),l.numToSelect=0,l.once=!1,l.sequential=!1;var c=4,u=r(l);return u.publicProperties(l),u.attr("role","menu"),u.on(ElementEvent.SELECT,s),u}},Page={generate:function(e){function t(e,t,n){return V.addElements(e,t,n)}function n(e){var t=_.pageNode.elements,n=null,r="",a=null;for(var i in t)t.hasOwnProperty(i)&&(n=t[i],r=StringUtil.empty(n.dataId,i),a=e[r],Util.isSet(a)||(a=StringUtil.resolve(r,core.assets.data)),Util.isSet(a)&&(n.imageData=a))}function r(){var e=_.pageNode.elements,t=null;for(var n in e)e.hasOwnProperty(n)&&(t=e[n],Util.isSet(t.data)&&delete t.data)}function a(e,t){var n=$(e.target),r=n.attr("id");r===x.attr("id")&&(r="page");var a=Util.nullValue(t,{});$.extend(a,{elementId:r,eventType:e.type}),V.event(n,s(n,a))}function i(e){var t=Util.nullValue(e["extends"],"");if(!StringUtil.isEmpty(t))if(t!==e.id){var n=_.pageNode.elements,r=n[t];if(Util.isSet(r))return r=i(r),$.extend(!0,{},r,e)}else V.error("Element '"+e.id+"' cannot extend itself.");return e}function o(){return M}function s(e,t){var n=function(e){var t=$.extend({},e.getVal("data")),n=e.data("publicProperties");if(Util.isSet(n)){var r="Page"===n.elementType?R:Util.nullValue(R[n.id],{});$.extend(t,{manifest:r,prop:n})}return t},r=Util.nullValue(e,x),a=n(x),i="continue"===t.eventType?"advance":t.eventType,o={config:core.config,core:core.data,event:t};return o.element=Util.isSet(e)?n(e):a,o.page=a,o.prop=Util.nullValue(r.call("jsCall",i,t),{}),o}function l(e,t){var n=_.pageNode,r=Util.nullValue(e,-1);return r>-1&&(n=n.getChildByIndex(r)),Util.isSet(n)?n.getProgress(t):0}function c(){u(),g()||m()||(n({}),d())}function u(){var e=_.pageNode.elements,t=null;for(var n in e)e.hasOwnProperty(n)&&(t=e[n],Util.isSet(t.id)||(t.id=n),e[n]=i(t))}function d(){x["super"]("init"),V.event(x,s(x,{elementId:"page",eventType:"init"})),core.audio.on(MediaEvent.DISABLED,O),core.audio.on(MediaEvent.ENDED,y)}function f(e){var t=new JSONLoader;t.addEventListener(LoadEvent.LOADED,b),t.load(e)}function p(e,t){x.trigger(CourseEvent.NAVIGATE,{navigation:e,target:t})}function E(e,t){if(!StringUtil.isEmpty(e)){var n=e+".mp3",r=Path.ASSETS+n,a=core.audio.getVal("data");a.targetId=Util.nullValue(t,e),core.audio.call("load",r)}}function m(){var e=core.config["preload-page-asset-data"],t=_.pageNode.preloadAssetData,n=_.resourceId;if(Util.isSet(t))switch(t.constructor){case String:n=t;break;case Boolean:e=t}if(e&&!StringUtil.isEmpty(n)){var r=n+".json.js";f(Path.ASSETS+r)}return e}function g(){var e=new Preloader(_.pageNode.preload);return e.addEventListener(LoadEvent.LOADED,L),e.start()}function v(e,t,n,r){if("bookmarked"===e||"completed"===e||"recommended"===e)r[e]=_.pageNode[e];else if("progress"===e)r[e]=l(n[0],n[1]);else if("active"===e)r[e]=o();else if("pageid"===e){var a=_.pageNode;Util.isSet(n[0])&&(a=a.children.getItemByIndex(n[0])),r.pageId=a.id}}function S(e){var t=function(t){e||$(this).call("stop")},n=x.find("audio");n.each(t)}function h(){var e=function(e,t){$(t).call("unload")},t=_.pageNode,n=t.data.completed;Util.isSet(n)&&(t.completed=n),core.audio.off(MediaEvent.ENDED,y),x.off(),x.find("[data-element-type]").each(e),r()}function b(e){e.success&&(n(e.data),d())}function O(e){a(e,$(e.target).getVal("data"))}function y(e){a(e,$(e.target).getVal("data"))}function T(e,t){e.stopPropagation();var n=Util.nullValue(t,{});$.extend(n,{elementId:"page",eventType:e.type}),n.property===ToolkitMenu.AUDIO_ENABLED&&S(n.value),V.event(x,s(x,n))}function U(e,t){a(e,t)}function P(e){M?M=!1:e.stopImmediatePropagation()}function I(e,t){if(e.target!==x[0]){var n=$(e.target);if(n.getVal("hasAudio")){var r=n.getVal("id"),i=n.getVal("resourceId");E(i,r)}a(e,t)}}function C(e,t){e.stopPropagation(),core.audio.call("stop"),a(e,t)}function A(e){M=!0,a(e)}function N(e){x.trigger(PageEvent.BOOKMARK)}function L(e){m()||(n({}),d())}var _={cssClass:"page",elementType:"Page",id:"page",pageNode:null},D={addElements:t,init:c,navigate:p,playAudio:E,scriptAction:v,unload:h};_=Element.extend(_,e),_.pageNode.addEventListener(PageNodeEvent.BOOKMARKED,N);var R=Util.nullValue(core.manifest[_.id],{}),M=!1,x=Element.generate(_);x.publicProperties(_),x.publicMethods(D),x.addClass(_.pageNode.cssClass),x.touchSwipe(),x.on(MediaEvent.CAN_PLAY,U),x.on(AnimationEvent.COMPLETE,U),x.on(ElementEvent.CHANGE,U),x.on(AssessmentEvent.COMPLETED,U),x.on(QuestionEvent.CONFIRM,C),x.on(ProgressEvent.CONTINUE,C),x.on(TimerEvent.CUE,U),x.on(TimerEvent.TIMEOUT,U),x.on(MediaEvent.DISABLED,U),x.on(ElementEvent.ENABLED,U),x.on(MediaEvent.ENDED,U),x.on(PageEvent.FINISH,P),x.on(MediaEvent.FRAME,U),x.on(ElementEvent.HOVER,U),x.on(ElementEvent.INIT,I),x.on(ElementEvent.JS_ECHO,U),x.on(TextEvent.PARAGRAPH,U),x.on(ElementEvent.READY,U),x.on(ElementEvent.RESELECT,U),x.on(DialogEvent.RESPONSE,U),x.on(ElementEvent.SELECT,U),x.on(PageEvent.START,A),x.on(ElementEvent.STATE,U),x.on(CoreEvent.SETTING,T),x.on(AssessmentEvent.SHOW_QUESTION,U);var V=new ScriptEase(x);return _.pageNode.target=x,x}},Panel={generate:function(e){function t(){var e={buttons:r.buttons,cssClass:"panel-buttons",id:r.id+"-buttons"},t=ButtonGroup.generate(e);return t.toggleClass("hide",0===e.buttons.length),t}function n(e){e.stopPropagation(),a.trigger(ElementEvent.SELECT,{id:e.target.id})}var r={buttons:[],content:"",cssClass:"panel",elementType:"Panel",id:"panel"};r=Element.extend(r,e);var a=Element.generate(r);a.publicProperties(r);var i=Element.generate({cssClass:"panel-container",id:r.id+"-container"});i.append(r.content),i.appendTo(a);var o=t();return o.appendTo(a),o.on(ElementEvent.SELECT,n),a.call("setContainer",i),a}},ParagraphListItem={generate:function(e){function t(){var e={cssClass:"",id:n.id+"-text"},t=Element.generate(e);return t.append(StringUtil.parseVars(n.text)),t}var n={cssClass:"paragraph-list-item",element:"<li/>",hasAudio:!1,id:"paragraph-list-item",replace:0,text:""};n=Element.extend(n,e),Element.manifestValue(n,"text");var r=Element.generate(n);return r.publicProperties(n),r.append(t()),r}},ParagraphText={generate:function(e){function t(){return U&&(C.trigger(ProgressEvent.CONTINUE,T),U=m()),!U}function n(e,t){var n=function(){switch(t){case"A":case"a":case"I":case"i":return t}return"1"},r=function(){switch(t.toLowerCase()){case"n":return"type-none";case"c":return"type-circle";case"s":return"type-square"}return"type-disc"},a="#"===e,i={cssClass:"paragraph-text-list",element:a?"<ol/>":"<ul/>"},o=Element.generate(i);return a?o.attr("type",n()):o.addClass(r()),o.data("listItem",e),o.data("listType",t),o}function r(e,t,n){var r=!StringUtil.isEmpty(n.item),a=Util.nullValue(t.id,g.id+"-paragraph"+e),o=a,s=a,l=[r?"list-item":"paragraph"],c=e===O-1;StringUtil.isEmpty(t.resourceId)?StringUtil.isEmpty(g.resourceId)||(o=g.resourceId+"-"+a,l.push(o)):(o=t.resourceId,l.push(o)),StringUtil.isEmpty(t.resourcePath)?StringUtil.isEmpty(g.resourcePath)||(s=g.resourcePath+"."+a):s=t.resourcePath,g.data=$.extend({},I);var u={cssClass:l.join(" "),data:g.data,hasAudio:g.paragraphAudio,highContrast:g.highContrast,replaceInitial:g.replaceInitial};return T={"continue":i(t["continue"],c,S),id:a,index:e,isFirst:0===e,isLast:e===O-1,resourceId:StringUtil.parseVars(o),resourcePath:StringUtil.parseVars(s)},f(t.replace,t.replaceInitial),$.extend(u,t,T),r?ParagraphListItem.generate(u):Paragraph.generate(u)}function a(e){var t=function(t){return Util.condition(t.visible,e,!0)};return g.paragraphs.filter(t)}function i(e,t,n){var r=!g.build;return r=t?Util.condition(g["continue"],n,r):r,Util.condition(e,n,r)}function o(){var e=core.course.currentPage,t=Util.isSet(e)?e.target:null;return{config:core.config,core:core.data,element:g.data,page:Util.isSet(t)?t.getVal("data"):{}}}function s(e){var t=function(e,t){var r=n(e,t);return a=P.push(r)-1,r.appendTo(a>0?P[a-1]:C),r},r=null,a=0;if(StringUtil.isEmpty(e.item))P=[];else if(e.index<P.length){P=P.slice(0,e.index+1),r=P[e.index];var i=Util.nullValue(r.data("listType"),"");e.type=StringUtil.empty(e.type,i),(r.data("listItem")!==e.item||i!==e.type)&&(P.pop(),r=t(e.item,e.type))}else r=t(e.item,e.type);return r}function l(){g.hasAudio=Util.condition(g.hasAudio,S,!1),g.paragraphAudio=Util.condition(g.paragraphAudio,S,!0),I=$.extend({},g.data),C.trigger(ElementEvent.INIT),U=m()}function c(e){g.paragraphFade&&(e.css({opacity:0}),e.animate({opacity:1},"fast")),e.call("init"),p(e)}function u(){if(y++,O>y){var e=b[y],t=d(e.list),n=r(y,e,t);if(!StringUtil.isEmpty(n.getVal("text")))return n.appendTo(Util.nullValue(s(t),C)),c(n),h.push(n),C.trigger(TextEvent.PARAGRAPH,T),n}return null}function d(e){var t={index:0,item:"",type:""};if(Util.isSet(e)){var n=e.match(/(-*)([*|#]?)(\S?)/);Util.isSet(n)&&(t={index:n[1].length,item:n[2],type:n[3]})}return t}function f(e,t){var n=h.length;if(n>0){var r=Math.min(Util.nullValue(e,0),n),a=null,i=null;for(0>r&&(r=n);r>0;)a=t?h.shift():h.pop(),i=a.parent(),a.remove(),0===i.children().length&&i[0]!==C[0]&&i.remove(),r--}}function p(e){var t=function(){var e=$(this),t=e.attr("class"),r=null;"glossary"===t&&(r=core.glossary.getEntryListItem(e.data("id")),Util.isSet(r)&&Util.nullValue(r.visible,!0)?e.attr("aria-label",e.html()+". "+core.manifest.player.acc.links[t]):n(e))},n=function(e){var t=$("<span/>");t.append(e.html()),e.replaceWith(t)},r=e.find("a[data-id]");r.attr("role","link"),r.attr("tabindex",TabOrder.PAGE_CONTENT),r.each(t)}function E(e,t){I[e]=t,C["super"]("setVal",e,t)}function m(){for(var e=!0,t=null,n=!1;e;)t=u(),n=Util.isSet(t),e=n&&t.getVal("continue");return n}var g={build:!0,cssClass:"paragraph-text",footerBarState:FooterBarState.CONTINUE,id:"paragraph-text",paragraphAudio:!0,paragraphFade:!0,paragraphs:[],replaceInitial:!1},v={advance:t,init:l,setVal:E};g=Element.extend(g,e),core.setCustom(g);var S=o(),h=[],b=a(S),O=b.length,y=-1,T=null,U=!0,P=[],I=null,C=Element.generate(g);return C.publicProperties(g),C.publicMethods(v),C}},Paragraph={generate:function(e){function t(){var e={cssClass:"paragraph-txt",id:s.id+"-text"};return Element.generate(e)}function n(){s.text="",Element.manifestValue(s,"text",{element:s.data}),o()}function r(e){s.resourceId=e,Util.isSet(u)&&a(u[s.resourceId])}function a(e){ObjectUtil.is(e,String)&&(s.text=StringUtil.parseVars(e),d.empty(),d.append(s.text))}function i(e,t,i,o){"refresh"===e?n():"text"===e?a(Util.nullValue(i[0],"")):"resourceid"===e&&r(Util.nullValue(i[0],""))}function o(){StringUtil.isEmpty(s.text)?r(s.resourceId):a(s.text)}var s={cssClass:"paragraph",elementType:"Paragraph",hasAudio:!1,id:"paragraph",text:""},l={refresh:n,setResourceId:r,setText:a,scriptAction:i};s=Element.extend(s,e);var c=Element.generate(s),u=Element.manifestValue(s,"text",{element:s.data}),d=t();return c.publicProperties(s),c.publicMethods(l),c.append(d),o(),c}},QuestionFooter={generate:function(e){function t(){var e=f.call("getEnabledButton",u[Button.CONFIRM]);return e&&p.trigger(QuestionEvent.CONFIRM),e}function n(){var e=c.id+"-buttons",t={buttons:a(e),cssClass:"button-group question-footer-buttons",enabled:c.enabled,id:e},n=ButtonGroup.generate(t);return n.on(ElementEvent.SELECT,s),n}function r(){var e={acc:!1,cssClass:"question-footer-text",id:c.id+"-text"},t=Element.generate(e);return t.append(c.text),t}function a(e){var t=function(t){var n={},r="";return Util.isSet(t)&&(t.constructor===String?(r=t,n={id:e+"-"+r,label:core.manifest.player.button.label[r]}):t.constructor===Object&&(n=t,r=n.id)),r===Button.CONFIRM&&(u[Button.CONFIRM]=n.id),n};return c.buttons.map(t)}function i(e){c.enabled=e,f.call("setEnabled",e)}function o(e){f.call("setEnabledButtons",e)}function s(e){var n=e.target.id;n===u[Button.CONFIRM]&&(e.stopPropagation(),t())}var l={confirm:t,setEnabled:i,setEnabledButtons:o},c={id:"question-footer",buttons:[],cssClass:"question-bar question-footer",elementType:"QuestionFooter",enabled:!0,highContrast:!0,role:"group",text:""};c=Element.extend(c,e),Element.manifestValue(c,"text");var u={},d=r(),f=n(),p=Element.generate(c);return p.publicProperties(c),p.publicMethods(l),p.append(d),p.append(f),p}},QuestionHeader={generate:function(e){function t(){var e={cssClass:"question-header-available-marks",id:i.id+"-available-marks"};return Element.generate(e)}function n(){var e={cssClass:"question-header-text",id:i.id+"-text"},t=Element.generate(e);return t.append(i.text),t}function r(e,t,n,r){var o=n.length;"availablemarks"===e&&(0===o?r.availableMarks=i.availableMarks:a(n[0]))}function a(e){i.availableMarks=e,i.assessment&&l.html(i.availableMarks+" "+(1===i.availableMarks?core.manifest.player.question.header["available-mark"]:core.manifest.player.question.header["available-marks"])),s.toggleClass("assessment",i.assessment),l.toggleClass("hide",!i.assessment)}var i={assessment:!1,availableMarks:-1,cssClass:"question-bar question-header",elementType:"QuestionHeader",highContrast:!0,id:"question-header",text:""},o={scriptAction:r};i=Element.extend(i,e),Element.manifestValue(i,"text");var s=n(),l=t(),c=Element.generate(i);return c.publicProperties(i),c.publicMethods(o),c.append(s),c.append(l),a(i.availableMarks),c}},QuestionOption={generate:function(e){function t(){var e=Util.nullValue(a.validState,0),t=e.constructor===Array&&e.length>0?e[0]:e;i.call("setState",t)}function n(){var e=Util.nullValue(a.validState,0);return e.constructor===Array?ArrayUtil.exists(e,a.state):a.state===e}var r={complete:t,isCorrect:n},a={selectionGroup:"",validState:0};a=Element.extend(a,e);var i=InteractiveElement.generate(a);return i.publicProperties(a),i.publicMethods(r),i}},QuoteBox={generate:function(e){function t(){var e={acc:!1,cssClass:"quote-box-content",id:n.id+"-content",text:n.text};return Paragraph.generate(e)}var n={cssClass:"quote-box",elementType:"QuoteBox",highContrast:!0,id:"quote-box",role:"note",text:""};n=Element.extend(n,e),Element.manifestValue(n,"text",{element:n.data});var r=t(),a=Element.generate(n);return a.publicProperties(n),a.attr("aria-labelledby",r.attr("id")),a.append(r),a}},RadialProgressIndicator={generate:function(e){function t(e,t){var n=document.createElementNS("http://www.w3.org/2000/svg",e),r=Util.nullValue(t,{});for(var a in r)r.hasOwnProperty(a)&&n.setAttribute(a,r[a]);return n}function n(){var e={"class":"radial-progress-indicator-base",id:o.id+"-base",preserveAspectRatio:"xMinYMin meet",viewBox:f.join(" ")},n=$(t("svg",e));return n.attr("aria-hidden",!0),n}function r(){var e={"class":"radial-progress-indicator-progress",cx:u,cy:u,id:o.id+"-progress",r:d};return $(t("circle",e))}function a(e,t,n,r){"progress"===e&&i(Util.nullValue(n[0],0))}function i(e){o.progress=NumberUtil.constrain(e,0,1),p[0]=Math.round(p[1]*o.progress),E.css("stroke-dasharray",p.join(" ")),E.attr("visibility",o.progress>0?"visible":"hidden");var t={progressPercent:Math.round(100*o.progress)},n=StringUtil.parseVars(l.accName,t);g.attr("aria-label",n)}var o={cssClass:"radial-progress-indicator",elementType:"RadialProgressIndicator",id:"radial-progress-indicator",progress:0,role:"status"},s={scriptAction:a,setProgress:i};o=Element.extend(o,e);var l=core.manifest.player["radial-progress-indicator"],c=100,u=c/2,d=23,f=[0,0,c,c],p=[0,Math.ceil(2*Math.PI*d)],E=r(),m=n();m.append(E);var g=Element.generate(o);return g.publicProperties(o),g.publicMethods(s),g.append(m),i(o.progress),g}},RadioButton={generate:function(e){function t(){var e={cssClass:"radio-button-selected",id:r.id+"-selected"},t=Element.generate(e);return t.toggleClass("hide",!r.selected),t}function n(e,t){a.toggleClass("hide",!i.call("isSelected"))}var r={cssClass:"radio-button",elementType:"RadioButton",id:"radio-button",role:"radio",selected:!1};r=Element.extend(r,e),r.cycle=!1;var a=t(),i=DualStateElement.generate(r);return i.publicProperties(r),i.append(a),i.on(ElementEvent.CHANGE,n),i}},ResourceEntry={generate:function(e){function t(e,t){var n=StringUtil.parseVars(t[e]);if(!StringUtil.isEmpty(n)){var r="name"!==e&&"description"!==e,i={acc:r,id:a.id+"-"+e},o="email"===e;if("url"===e||o)return i.entryId=t.id,i.label=t.name,o?(i.icon="email",i.url="mailto:"+n):i.url=n,WebLink.generate(i);var s=Element.generate($.extend(i,{cssClass:"resource-entry-"+e}));return s.toggleClass("group",t.group),s.append(n),s}return null}function n(){var e=function(e){var r=t(e,o);Util.isSet(r)&&(s+=Number(r.call("isElement","WebLink")),n.append(r))},n=Element.generate(a);n.publicProperties(a);var o=a.entry,s=0,l=["name","description","phone","email","url"];l.forEach(e);var c=n.children();if(2===c.length&&1===s&&$(c[0]).remove(),o.resources.length>0){var u=r(o.resources);n.append(u),i=o.group&&u.call("isEmpty")}return n.toggleClass("hide",i),n.attr("aria-labelledby",a.id+"-name"),n.attr("aria-describedby",a.id+"-description"),n}function r(e){var t={id:a.id+"-group",resources:e};return ResourceGroup.generate(t)}var a={cssClass:"resource-entry",elementType:"ResourceEntry",id:"resource-entry",role:"group"},i=!1;return a=Element.extend(a,e),n()}},ResourceGroup={generate:function(e){function t(e,t){var n={entry:e,id:a.id+"-"+t};return ResourceEntry.generate(n)}function n(){var e=function(e){var a=core.resources.getEntries(new ResourceEntryListFilter({id:e})),i=a.moveFirst();for(o=o&&!Util.isSet(i);Util.isSet(i);)n.append(t(i,r++)),i=a.moveNext()},n=Element.generate(a);n.publicProperties(a),n.publicMethods(i);var r=1;return a.resources.forEach(e),n}function r(){return o}var a={cssClass:"resource-group",elementType:"ResourceGroup",id:"resource-group",resources:[]},i={isEmpty:r},o=!0;return a=Element.extend(a,e),n()}},ResourcesElement={generate:function(e){function t(){var e={acc:!1,cssClass:"resources-element-background",highContrast:!0,id:o.id+"-background"};return Element.generate(e)}function n(){var e={cssClass:"resources-element-entries-pane",id:o.id+"-entries-pane"};return Element.generate(e)}function r(e,t){var n={cssClass:"resource-entry",entry:e,id:"resource-"+t};return ResourceEntry.generate(n)}function a(e){for(var t=new ResourceEntryListFilter({id:o.data.entryId,root:!0}),n=core.resources.getEntries(t),a=n.moveFirst(),i=1;Util.isSet(a);)c.append(r(a,i++)),a=n.moveNext()}function i(){a(c),u.trigger(ElementEvent.INIT)}var o={cssClass:"resources-element",elementType:"ResourcesElement",highContrast:!0,id:"resources-element"},s={init:i};o=Element.extend(o,e);var l=t(),c=n(),u=Element.generate(o);return u.publicProperties(o),u.publicMethods(s),u.append(l),u.append(c),u}},SearchBar={SEARCH_DELAY:3e3,generate:function(e){function t(){h.prop("value",""),y.prop("disabled",!0),b.addClass("hide")}function n(){var e={cssClass:"search-bar-entry",id:m.id+"-entry"};return Element.generate(e)}function r(){S&&(S=!1,U.trigger(SearchEvent.CLEAR_FILTER)),t()}function a(){var e=m.id+"-clear-search",t={cssClass:"search-bar-clear-search",id:e,tabIndex:TabOrder.PAGE_CONTENT},n=InteractiveElement.generate(t);return n.attr("title",v["clear-search"]),n.append(Sprite.generate({id:e+"-icon",symbol:"symbols.cancel-circle",cssClass:"search-bar-clear-search-icon"})),n.on(ElementEvent.SELECT,u),n}function i(){var e={cssClass:"search-bar-input",element:"<input/>",highContrast:!0,id:m.id+"-input",role:"textbox"},t=Element.generate(e);return t.attr("type","search"),t.attr("placeholder",v["placeholder-text"]),t.css("box-sizing","border-box"),t.on(KeyboardEvent.KEY_DOWN,f),t.on("change input textInput",d),t}function o(){var e={cssClass:"button search-bar-search-button",enabled:!1,id:m.id+"-search-button",resourcePath:"player.button.label.search"};return Button.generate(e)}function s(){var e={cssClass:"button search-bar-show-all-button",id:m.id+"-show-all-button",resourcePath:"player.button.label.show-all-questions",tabIndex:TabOrder.PAGE_CONTENT};return Button.generate(e)}function l(e){"search"===e?(h.removeClass("hide"),y.removeClass("hide"),T.addClass("hide")):"showall"===e&&(S=!0,T.removeClass("hide"),h.addClass("hide"),y.addClass("hide")),b.addClass("hide")}function c(){var e=h.prop("value");return S=!StringUtil.isEmpty(e),S&&(U.trigger(SearchEvent.FIND,[e]),h.blur(),y.call("setEnabled",!0)),S}function u(e){e.stopPropagation(),r()}function d(e){e.stopPropagation();var t=h.prop("value"),n=t.length>0;y.call("setEnabled",n),b.toggleClass("hide",!n)}function f(e){m.enabled&&e.which===Key.ENTER&&c()&&e.stopPropagation()}function p(e){c()&&e.stopPropagation()}function E(e){e.stopPropagation(),r(),l("search")}var m={cssClass:"search-bar",enabled:!0,highContrast:!0,id:"search-bar",role:"search"},g={clear:t,setState:l};m=Element.extend(m,e);var v=core.manifest.player["search-bar"],S=!1,h=i(),b=a(),O=n();O.append(h),O.append(b);var y=o();y.on(ElementEvent.SELECT,p);var T=s();T.on(ElementEvent.SELECT,E);var U=Element.generate(m);return U.publicProperties(m),U.publicMethods(g),U.append(O),U.append(y),U.append(T),U}},Selector={generate:function(e){function t(){var e=function(){return B["super"]("advance")},t=!1;if(w)t=e();else{var n=$("#"+L.questionFooter);t=n.length>0?n.call("confirm"):e()}return t&&P(!1),t}function n(e,t,n){var r=t;return 1===e?r=Math.floor(t/2):e>1&&(r=e-(2*e-t)),Math.round(r*n)}function r(){var e=function(e){e.call("complete")};D.forEach(e)}function a(){P(!1),C(!0),B.trigger(QuestionEvent.CONFIRM)}function i(e){var t=function(t){var n=L.enabled&&!e||t.getVal("currentState")>1;t.call("setEnabled",n)};D.forEach(t)}function o(e){var t=function(t,n){var r=t.attr("id"),a=r===e,i=M>=n;a?t.attr("aria-selected",!0):(t.call("setState",Math.min(t.getVal("currentState"),1)),t.removeAttr("aria-selected"),t.removeAttr("aria-owns")),t.call("setEnabled",L.enabled&&!a&&i)};D.forEach(t)}function s(){return x}function l(){var e=function(e){return n+=Number(t(e)),n>=L.numToSelect},t=function(e){var t=Util.nullValue(e.call("getVal","_active"),!0);return!t||e.call("isSelected")},n=0;return L.numToSelect<0?D.every(t):L.numToSelect>0?D.some(1===L.numToSelect?t:e):!0}function c(){var e=function(e){(!j||e.call("isSelected"))&&(t+=Number(h(e)))},t=0;return D.forEach(e),t}function u(){var e=function(e){t.push(e.getVal("currentState"))},t=[];return D.forEach(e),t}function d(){var e=p();return Math.floor(e*x)}function f(){var e=function(e,n){var r=$(n);if(b(r)){r.call("setEnabled",L.enabled);var a=t.push(r)-1;r.call("setVal","relativeIndex",a)}},t=[];return B.find("*").each(e),t}function p(){var e=j?L.numToSelect:D.length;return e>0?c()/e:0}function E(){var e=function(e){t.push(e.call("isSelected"))},t=[];return D.forEach(e),t}function m(){var e=function(e,t){return e+Number(t.getVal("currentState")>1)};return D.reduce(e,0)}function g(e){var t=function(t){t.call("highlight",e)};D.forEach(t)}function v(e,t){var n=function(n){var r=n.attr("id")===e;return r&&n.call("highlight",t),r};D.some(n)}function S(){var e=j?L.numToSelect:D.length;return c()===e}function h(e){return e.call("isCorrect")}function b(e){return e.isVal("relative",L.id)}function O(e){var t=D.length,n=e-49;if(n>=0&&t>n){var r=D[n];r.getVal("enabled")?r.call("select"):r.trigger(ElementEvent.RESELECT);
}}function y(){var e=function(e){e.call("reset"),e.call("setEnabled",L.enabled)};return D.forEach(e),!1}function T(e,t,n,i){var o=n.length;if("availablemarks"===e)i.availableMarks=x;else if("complete"===e)r();else if("confirm"===e)a();else if("continue"===e)i["continue"]=w;else if("currentstate"===e)i.currentState=u();else if("iscompleted"===e)i.isCompleted=l();else if("iscorrect"===e){if(0===o)i.isCorrect=S();else if(1===o){var s=Number(n[0]),c=D[s];i.isCorrect=h(c)}}else"reset"===e?y():"score"===e?0===o&&(i.score=p()):"selected"===e?0===o&&(i.selected=E()):"selectioncount"===e?i.selectionCount=m():"setcontinue"===e?U(!0,l()):"showcorrect"===e?I(n[0]):"showmarking"===e&&C(Util.nullValue(n[0],!0))}function U(e,t){V&&e&&B.trigger(ProgressEvent.SET_CONTINUE,{enabled:t,visible:w&&t})}function P(e){var t=function(e){e.call("setEnabled",L.enabled)};L.enabled=e,D.forEach(t)}function I(e){var t=function(t){t.call("setValidState",e)};D.forEach(t)}function C(e){var t=function(e){e.call("showMarking",n,L.numToSelect>0)},n=L.showMarking&&e;D.forEach(t)}function A(e){if(e.target===e.delegateTarget){var t=function(e,t){e.attr("role","option"),L.sequential&&e.call("setEnabled",0===t)};D=f(),D.forEach(t),R=D.length,M=L.sequential?0:R,x=n(L.numToSelect,R,L.weighting),U(!0,!L.overrideCompletion&&l())}}function N(e){var t=$(e.target);if(b(t)){var n=t.call("getVal","relativeIndex"),r=t.attr("id"),a=l(),s=m();L.once&&t.data("_enabled",!1),L.numToSelect<0||1===L.numToSelect?(M=Math.max(M,n+1),o(r)):L.numToSelect>1&&i(a);var c={completed:a,"continue":w,targetId:r,relativeIndex:n,selectionCount:s};B.trigger(ElementEvent.CHANGE,c),U(!L.overrideCompletion,a)}}var L={acc:!0,cssClass:"",enabled:!0,footerBarState:FooterBarState.QUESTION,numToSelect:0,once:!1,overrideCompletion:!1,questionFooter:"",role:"menu",sequential:!1,showMarking:!0,weighting:1},_={advance:t,confirm:a,getAvailableMarks:s,getMarks:d,highlight:g,highlightOption:v,keyPress:O,reset:y,scriptAction:T,setEnabled:P,showCorrect:I,showMarking:C};L=Element.extend(L,e);var D=[],R=0,M=0,x=0,V=L.footerBarState===FooterBarState.QUESTION,w=StringUtil.isEmpty(L.questionFooter),j=L.numToSelect>0,B=Element.generate(L);return B.publicProperties(L),B.publicMethods(_),B.on(ElementEvent.READY,A),B.on(ElementEvent.SELECT,N),B}},SFX={generate:function(e){function t(){var e=Util.nullValue(core.config["has-audio"],!0),t=Util.nullValue(core.config["audio-enabled"],!0);a["super"]("setEnabled",e&&t),a["super"]("load",n.src)}var n={element:"<audio/>",elementType:"SFX",id:"sfx",src:""},r={init:t};n=Element.extend(n,e);var a=MediaWrapper.generate(n);return a.publicMethods(r),a}},SliderBarTrackMarker={generate:function(e){function t(){var e={cssClass:"slider-bar-track-marker-line",id:r.id+"-line"};return Element.generate(e)}function n(){var e={cssClass:"slider-bar-track-marker-value",id:r.id+"-value"},t=Element.generate(e);return t.toggleClass("hide",!r.showValue),t.append(r.value),t}var r={cssClass:"slider-bar-track-marker",elementType:"SliderBarTrackMarker",id:"slider-bar-track-marker",showValue:!0,value:""};r=Element.extend(r,e);var a=Element.generate(r);return a.publicProperties(r),a.append(t()),a.append(n()),a}},SliderBar={generate:function(e){function t(){var e=function(){return k["super"]("advance")},t=!1;if(D)t=e();else{var n=$("#"+L.questionFooter);t=n.length>0?n.call("confirm"):e()}return t&&S(!1),t}function n(e,t){return Math.round(e/2)*t}function r(){S(!1),L.showCorrect&&y(),k.trigger(QuestionEvent.CONFIRM)}function a(){var e={acc:!1,cssClass:"slider-bar-thumb",height:42,id:L.id+"-thumb",src:"assets/slider-bar-thumb.svg",width:30},t=Graphic.generate(e);return t.on(MouseEvent.DOWN,A),t.call("init"),t}function i(){var e={cssClass:"slider-bar-track",id:L.id+"-track"},t=Element.generate(e);return t.append(o()),t.append(j),t}function o(){var e={cssClass:"slider-bar-track-base",id:L.id+"-track-base"};return Element.generate(e)}function s(e){var t={cssClass:"slider-bar-track-marker",id:L.id+"-track-marker"+e,showValue:R[e].visible,value:R[e].value},n=SliderBarTrackMarker.generate(t);return n.attr("data-value",e),n}function l(){for(var e={cssClass:"slider-bar-track-markers",id:L.id+"-track-markers"},t=Element.generate(e),n=0;M>n;n++)t.append(s(n));return t}function c(){return x}function u(e){var t=Util.nullValue(e.format,"*"),n=[],r=0,a=null;if(Util.isSet(e.max))for(var i=Util.nullValue(e.min,0),o=Util.nullValue(e.step,1),s=i;s<=e.max;s+=o)a={value:t.replace("*",String(s)),visible:!0},r=n.push(a);else r=Util.nullValue(e.count,0);for(var l=0;r>l;l++)a=Util.nullValue(n[l],{visible:!0}),Util.isSet(e[l])?StringUtil.isEmpty(e[l])?a.visible=!1:a.value=e[l]:Util.isSet(a.value)||(a.value=t.replace("*",String(l))),n[l]=a;return n}function d(){var e=f();return Math.floor(e*x)}function f(){return m()?1:0}function p(e){var t=j.children()[e];return Util.isSet(t)?$(t):null}function E(){var e=p(L.value);T(e,!1),v(L.value),k["super"]("init")}function m(){return L.value===L.correctValue}function g(e,t,n,a){if("availablemarks"===e)a.availableMarks=x;else if("confirm"===e)r();else if("iscorrect"===e)a.isCorrect=m();else if("marker"===e){var i=Util.nullValue(n[0],L.value);a.marker=R[i].value}else"score"===e?a.score=f():"showcorrect"===e&&y()}function v(e){k.attr("aria-valuenow",e),k.attr("aria-valuetext",R[e].value)}function S(e){L.enabled=e,w.toggleClass("enabled",e),j.toggleClass("enabled",e),j.toggleClass("disabled",!e),h(L.tabEnabled)}function h(e){L.tabEnabled=e,b(L.tabIndex)}function b(e){L.tabIndex=e,L.enabled&&L.tabEnabled?k.attr("tabindex",L.tabIndex):k.removeAttr("tabindex")}function O(e,t){var n=NumberUtil.constrain(e,0,M-1);L.value!==n&&(L.value=n,v(L.value),k.trigger(ElementEvent.CHANGE,{value:n}))}function y(){if(!m()){var e=w.attr("id"),t=w.clone();t.attr("id",e+"-clone"),t.addClass("clone"),t.appendTo(w.parent()),T(p(L.correctValue),!0)}}function T(e,t){if(Util.isSet(e)){var n=Util.invScale(e.position().left,core.scale);n+=e.width()/2,n-=w.width()/2,t?w.animate({left:n},"fast"):w.css("left",n+"px")}}function U(e){var t=Util.invScale(e.pageX,core.scale),n=NumberUtil.constrain(t-V.leftOffset,V.min,V.max)-V.min;w.css("left",n+"px")}function P(e){var t=function(e,t){var a=$(t),i=Util.invScale(a.position().left,n);return r+V.min<i+a.width()?(O(a.data("value")),T(a,!0),!1):void 0},n=core.scale,r=Util.invScale(w.position().left,n),a=j.children();a.each(t);var i=$("body");i.off(MouseEvent.MOVE,U),i.off(MouseEvent.UP,P)}function I(e){if(L.enabled){var t=e.which,n=t===Key.LEFT;(n||t===Key.RIGHT)&&(O(L.value+(n?-1:1)),T(p(L.value),!0))}}function C(e){x=n(M,L.weighting)}function A(e){if(e.preventDefault(),L.enabled){V.leftOffset=Util.invScale(k.offset().left,core.scale),V.min=w.width()/2,V.max=k.width()-V.min;var t=$("body");t.on(MouseEvent.MOVE,U),t.on(MouseEvent.UP,P)}}function N(e){if(L.enabled){var t=$(e.currentTarget);O(t.data("value")),T(t,!0)}}var L={correctValue:-1,cssClass:"slider-bar",elementType:"SliderBar",enabled:!0,footerBarState:FooterBarState.QUESTION,id:"slider-bar",labels:{},questionFooter:"",role:"slider",showCorrect:!0,showMarkerValues:!0,tabEnabled:!0,tabIndex:TabOrder.PAGE_CONTENT,value:0,weighting:1},_={advance:t,confirm:r,getAvailableMarks:c,getMarks:d,init:E,isCorrect:m,scriptAction:g,setEnabled:S};L=Element.extend(L,e);var D=StringUtil.isEmpty(L.questionFooter),R=u(L.labels),M=R.length,x=0,V={},w=a(),j=l();j.on(MouseEvent.CLICK,"[data-value]",N);var B=i(),k=Element.generate(L);return k.publicProperties(L),k.publicMethods(_),k.append(w),k.append(B),k.on(KeyboardEvent.KEY_DOWN,I),k.on(ElementEvent.READY,C),S(L.enabled),k}},SpeechBubble={ANCHOR_LEFT:"left",ANCHOR_RIGHT:"right",ANCHOR_TOP:"top",ANCHOR_BOTTOM:"bottom",generate:function(e){function t(){var e={cssClass:a(),id:o.id+"-anchor"},t=Element.generate(e);return t.append(n()),t}function n(){var e={cssClass:"speech-bubble-anchor-inner",id:o.id+"-anchor-inner"};return Element.generate(e)}function r(){var e={cssClass:"speech-bubble-container",id:o.id+"-container"};return Element.generate(e)}function a(){var e=function(){var e=o.anchorLocation.toLowerCase();switch(e){case SpeechBubble.ANCHOR_LEFT:case SpeechBubble.ANCHOR_RIGHT:case SpeechBubble.ANCHOR_TOP:case SpeechBubble.ANCHOR_BOTTOM:return e}return SpeechBubble.ANCHOR_LEFT},t=function(e){var t=i().replace("/","-");switch(e){case SpeechBubble.ANCHOR_LEFT:case SpeechBubble.ANCHOR_RIGHT:return"top-"+t}return"left-"+t},n=e(),r=["speech-bubble-anchor",n,t(n)];return r.join(" ")}function i(){var e=function(e){var t=e[0].indexOf(o.anchorPosition),r=t>-1;return r&&(n="*"===e[1]?e[0][t]:e[1]),r},t=[[["1/4","2/8"],"1/4"],[["3/4","6/8"],"3/4"],[["1/2","2/4","4/8"],"1/2"],[["1/10","1/8","2/10","3/10","3/8","4/10","6/10","5/8","7/10","8/10","7/8","9/10"],"*"]],n="1/10";return t.some(e),n}var o={anchorLocation:"left",anchorPosition:"1/10",cssClass:"speech-bubble",elementType:"SpeechBubble",id:"speech-bubble"};o=Element.extend(o,e);var s=t(),l=r(),c=Element.generate(o);return c.publicProperties(o),c.append(s),c.append(l),c.call("setContainer",l),c}},Sprite={XMLNS_SVG:"http://www.w3.org/2000/svg",XMLNS_XLINK:"http://www.w3.org/1999/xlink",generate:function(e){function t(e,n){var r=function(e,t){i.setAttribute(t.name,t.value)},a=function(n){i.appendChild(t(e,$(this)))},i=document.createElementNS(e,n[0].nodeName.toLowerCase());return $.each(n[0].attributes,r),n.children().each(a),i}function n(e){var n=function(e,t){var n=o.find("#"+t);if(n.length>0){var r=s.id+"-"+t;return n.attr("id",r),a.defs.appendChild(n[0]),e.replace(t,r)}return e},a={defs:document.createElementNS(Sprite.XMLNS_SVG,"defs")},i=/url\(#([^\)]+)\)/g,o=c.find("defs");return a.symbol=t(Sprite.XMLNS_SVG,$(r(e).replace(i,n))),a.symbol.removeAttribute("id"),a}function r(e){return $("<div/>").append(e)[0].innerHTML}function a(e){var t=n(e),r=document.createElementNS(Sprite.XMLNS_SVG,"svg");return r.setAttribute("aria-hidden",!0),r.setAttribute("xmlns",Sprite.XMLNS_SVG),r.setAttribute("xmlns:xlink",Sprite.XMLNS_XLINK),r.setAttribute("viewBox",s.viewBox),r.appendChild(t.defs),r.appendChild(t.symbol),$(r)}function i(e){var t=Util.nullValue(e,"");if(!StringUtil.isEmpty(t)){var n=t.lastIndexOf(".");if(n>-1&&(c=$(core.assets.data[t.slice(0,n)]),c.length>0)){var r=c.children("#"+t.slice(n+1));if(r.length>0)return r}}return null}function o(e){var t=i(e);Util.isSet(t)?(s.symbol=e,u.empty(),u.append(a(t))):console.warn('The sprite symbol "'+e+'" does not exist.')}var s={elementType:"Sprite",id:"sprite",role:"img",symbol:"",viewBox:"0 0 64 64"},l={setSymbol:o};s=Element.extend(s,e);var c=null,u=Element.generate(s);return u.publicProperties(s),u.publicMethods(l),o(s.symbol),u}},Stopwatch={generate:function(e){function t(e){var t=new Date(e);return t.getMinutes()+":"+i(t.getSeconds(),2)+"."+i(t.getMilliseconds(),3)}function n(){return h}function r(){s(),E.autoStart&&u()}function a(e){S+=e}function i(e,t){return String(Math.pow(10,t)+e).slice(1)}function o(){clearInterval(g)}function s(){S=0,h=0,c()}function l(e,t,n,r){if("reset"===e)s();else if("start"===e)u();else if("stop"===e)d();else if("time"===e)return{time:h}}function c(){b.html(t(h))}function u(){v=Date.now(),g=setInterval(f,20)}function d(){o(),f(),S=h}function f(){h=S+(Date.now()-v),c()}function p(){o()}var E={autoStart:!1,elementType:"Stopwatch",id:"stopwatch",role:"timer"},m={getTime:n,init:r,offset:a,reset:s,scriptAction:l,start:u,stop:d,unload:p};E=Element.extend(E,e);var g=0,v=0,S=0,h=0,b=Element.generate(E);return b.publicProperties(E),b.publicMethods(m),b}},SvgAnimator={FRAME_EVENT:"frameEvent",UPDATE_ACC:"updateAcc",frameEvent:function(e,t){var n={tag:Util.nullValue(t,""),target:e};$(e.el.node).trigger(SvgAnimator.FRAME_EVENT,n)},updateAcc:function(e,t){var n={id:Util.nullValue(t,""),target:e};$(e.el.node).trigger(SvgAnimator.UPDATE_ACC,n)},generate:function(e){function t(e,t,n){var r=i(e);if(Util.isSet(r)){var a=r[t];if(Util.isSet(a))return a.apply(r,n)}return null}function n(){var e={cssClass:"svg-animator-container",id:h.id+"-container"};return Element.generate(e)}function r(e){var t=StringUtil.resolve(e,T.mc);if(Util.isSet(t)){Util.isSet(t.boundingBox)&&(t=t.boundingBox);var n={x:0,y:0,width:0,height:0},r=t.el.node,a=Util.scale(t.bBox,core.scale),i=$.extend({},r.getBoundingClientRect(),a),o=P.offset();return n.x=i.left+window.pageXOffset-o.left,n.y=i.top+window.pageYOffset-o.top,n=Util.invScale(n,core.scale),n.width=i.width,n.height=i.height,n}return null}function a(e,t){var n=function(e){var n=Number(e.frameNum)===t-1;return n&&(r=e.name),n},r="",a=e.getFrameLabels();return a.some(n),r}function i(e){return Util.isSet(T)?StringUtil.resolve(e,T.mc):null}function o(){if(Util.isSet(h.imageData))c()||f();else if(!s(h.src)){var e=h.resourceId+".json.js";h.src=Path.ASSETS+e,s(h.src)}}function s(e){h.src=Util.nullValue(e,"");var t=!StringUtil.isEmpty(h.src);if(t){var n=new JSONLoader;n.addEventListener(LoadEvent.LOADED,S),n.load(e)}return t}function l(e,t){if(Util.isSet(T)){var n=T.mc,r=StringUtil.resolve(t,n)||n;Util.isSet(e)?r.gotoAndPlay(e):r.gotoAndPlay(r.m_currentFrameNo+2)}}function c(){if(h.preloadBitmaps){var e=h.imageData.DOMDocument.Bitmaps;if(Util.isSet(e)){var t=function(e){n.push(e.bitmapPath)},n=[];return e.forEach(t),y=new Preloader(n),y.addEventListener(LoadEvent.LOADED,m),y.start()}}return!1}function u(e,n,r,a){if("opacity"===e)d(e,r[0],n);else if("visibility"===e){var i=r[0]?"visible":"hidden";d(e,i,n)}else{var o=t(n,e,r);Util.isSet(o)&&(o.constructor===Object?$.extend(a,o):a[e]=o)}}function d(e,t,n){var r=i(n);if(Util.isSet(r)){var a={};a[e]=t,r.el.attr(a)}}function f(){var e={autoplay:h.autoplay};void 0!==h.viewBox&&(e.viewBox=h.viewBox),void 0!==h.preserveAspectRatio&&(e.preserveAspectRatio=h.preserveAspectRatio),T=new SVGAnim(h.imageData,h.width,h.height,h.fps,e);var t=$(T.s.node);t.attr("aria-hidden","true"),t.attr("id",h.id+"-svg"),t.on(SvgAnimator.FRAME_EVENT,g),t.on(SvgAnimator.UPDATE_ACC,v),P.append(t),P.width(h.width),P.height(h.height),P["super"]("init")}function p(e,t){if(Util.isSet(T)){var n=T.mc,r=StringUtil.resolve(t,n)||n;Util.isSet(e)?r.gotoAndStop(e):r.stop()}}function E(){Util.isSet(y)&&(y.cancel(),y=null),Util.isSet(T)&&(T.stop(),T=null)}function m(e){y=null,f()}function g(e,t){e.stopPropagation();var n=t.target.m_currentFrameNo;t.frameLabel=a(t.target,n),t.frameNumber=n,t.id=t.target.name,t.resourceId=h.resourceId,P.trigger(MediaEvent.FRAME,t)}function v(e,t){e.stopPropagation(),P.call("setAccName",Util.nullValue(O[t.id],""))}function S(e){e.success&&(h.imageData=e.data,c()||f())}var h={acc:!1,autoplay:!0,cssClass:"svg-animator",elementType:"SvgAnimator",enabled:!0,fps:25,height:0,id:"svg-animator",preloadBitmaps:!0,role:"img",src:"",width:0},b={getClipInfo:r,init:o,load:s,play:l,scriptAction:u,stop:p,unload:E};h=Element.extend(h,e);var O=Util.nullValue(StringUtil.resolve(h.resourcePath+".acc",core.manifest),{}),y=null,T=null,U=n(),P=Element.generate(h);return P.publicProperties(h),P.publicMethods(b),P.append(U),P.call("setContainer",U),P}},Switch={generate:function(e){function t(e,t){var a=r.call("isSelected");r.toggleClass("selected",a),r.toggleClass("unselected",!a),n.cycle||a||e.stopPropagation()}var n={cssClass:"switch",elementType:"Switch",highContrast:!0,id:"switch",label:""};n=Element.extend(n,e),n.currentState=Util.nullValue(n.currentState,0),n.accName=n.label;var r=DualStateElement.generate(n);return r.publicProperties(n),r.append(n.label),r.on(ElementEvent.CHANGE,t),r}},TabbedView={TAB_DEFAULT:"&#9679;",BUTTON_NEXT:"&#9658;",BUTTON_PREVIOUS:"&#9664;",generate:function(e){function t(e){O.target.call("addElements",I,y[e].children)}function n(e){var t={cssClass:"tabbed-view-button",enabled:!0,highContrast:h.highContrast,role:"button"},n=Element.generate({acc:!1,id:e.id+"-icon",cssClass:"tabbed-view-button-icon"});n.append(e.icon);var r=InteractiveElement.generate($.extend(t,e));return r.attr("title",core.manifest.player.button.label[e.shortId]),r.addClass(e.shortId),r.append(n),r}function r(){var e={cssClass:"tabbed-view-container",id:h.id+"-container"},t=Element.generate(e);return t.toggleClass("tabbed",U),t}function a(e){var t={cssClass:"tabbed-view-nav",id:h.id+"-nav"},n=Element.generate(t);return n.toggleClass("hide",!U),n.append(C),n.append(N),n.append(A),n.on(ElementEvent.HOVER,v),n.on(ElementEvent.SELECT,S),n}function i(){var e={icon:TabbedView.BUTTON_NEXT,id:h.id+"-next-button",delta:1,shortId:Button.NEXT_TAB};return n(e)}function o(){var e={icon:TabbedView.BUTTON_PREVIOUS,id:h.id+"-previous-button",delta:-1,shortId:Button.PREVIOUS_TAB};return n(e)}function s(e){var t={acc:!1,cssClass:"tabbed-view-tab",id:h.id+"-tab"+e},n=Element.generate(t);return n.append(TabbedView.TAB_DEFAULT),n}function l(e){var t=function(e,t){r.append(e.tab)},n={cssClass:"tabbed-view-tabs",highContrast:h.highContrast,id:h.id+"-tabs",role:"status"},r=Element.generate(n);return e.forEach(t),r}function c(){return 1===u()}function u(){var e=function(e){t+=Number(e.visited)},t=0;return y.forEach(e),T>0?t/T:0}function d(e){var t=function(e,t){Util.condition(e.visible,n,!0)&&Util.isSet(e.children)&&r.push({children:e.children,tab:s(t),visited:!1})},n=f(),r=[];return e.forEach(t),r}function f(){var e=Util.isSet(O)?O.target:null;return{config:core.config,core:core.data,element:h.data,page:Util.isSet(e)?e.getVal("data"):{}}}function p(){L.trigger(ElementEvent.INIT),m(0)}function E(e,t,n,r){"iscompleted"===e?r.isCompleted=c():"progress"===e?r.progress=u():"toggle"===e&&g()}function m(e){P!==e&&e>=0&&T>e&&(core.audio.call("stop"),I.empty(),-1!==P&&y[P].tab.toggleClass("current",!1),P=e,C.call("setEnabled",P>0),A.call("setEnabled",T-1>P),y[P].tab.toggleClass("current",!0),y[P].visited=!0,t(P),N.attr("aria-label",StringUtil.parseVars(core.manifest.player.acc.tabs,{tabNum:P+1,tabCount:T})),L.trigger(ElementEvent.CHANGE,{progress:u()}))}function g(){var e=P+1;m(T>e?e:0)}function v(e,t){$(e.target).toggleClass("hover",t.hover)}function S(e){var t=$(e.target).getVal("delta");m(P+t)}var h={content:[],cssClass:"tabbed-view",elementType:"TabbedView",enabled:!0,highContrast:!0,id:"tabbed-view"},b={init:p,scriptAction:E};h=Element.extend(h,e);var O=core.course.currentPage,y=d(h.content),T=y.length,U=T>1,P=-1,I=r(),C=o(),A=i(),N=l(y),L=Element.generate(h);return L.publicProperties(h),L.publicMethods(b),L.append(I),L.append(a(y)),L}},TextEntry={generate:function(e){function t(){f.prop("value","")}function n(){p.trigger(QuestionEvent.CONFIRM,{text:o()})}function r(){var e={cssClass:"text-entry-input",highContrast:!0,id:u.id+"-input"},t=u.multiline?a(e):i(e);return t.attr("aria-labelledby",u.id),t.attr("tabindex",u.tabIndex),t.prop("autofocus",u.autoFocus),t.prop("value",u.text),t.on(KeyboardEvent.KEY_DOWN,c),u.maxChars>-1&&t.attr("maxlength",u.maxChars),t}function a(e){var t=$.extend({element:"<textarea/>"},e),n=Element.generate(t);return n.attr("rows",u.rows),n.attr("wrap",u.wrap?"soft":"off"),n}function i(e){var t=$.extend({element:"<input/>"},e),n=Element.generate(t);return n.attr("type","text"),n}function o(){return f.prop("value")}function s(e,r,a,i){"clear"===e?t():"confirm"===e&&n()}function l(e){u.enabled=e,f.attr("readonly",!e)}function c(e){e.stopPropagation(),u.multiline||e.keyCode!==Key.ENTER||n()}var u={autoFocus:!0,cssClass:"text-entry",elementType:"TextEntry",enabled:!0,highContrast:!0,id:"text-entry",rows:3,maxChars:-1,multiline:!0,tabIndex:TabOrder.PAGE_CONTENT,text:"",wrap:!0},d={confirm:n,scriptAction:s,setEnabled:l};u=Element.extend(u,e),Element.manifestValue(u,"text");var f=r(),p=Element.generate(u);return p.publicProperties(u),p.publicMethods(d),p.append(f),p}},Timer={generate:function(e){function t(){var e=s.length>0;if(e){var t=s.shift();l=setTimeout(a,t.time,t.id)}return e}function n(){return s=ArrayUtil.sortItemsOn(i.cues,"time"),t()}function r(){clearInterval(l),s=null}function a(e){c.trigger(TimerEvent.CUE,{id:e}),t()}var i={autoStart:!1,cues:[],id:"timer"},o={start:n,stop:r};i=Element.extend(i,e);var s=null,l=0,c=Element.generate(i);return c.publicProperties(i),c.publicMethods(o),i.autoStart&&n(),c}},ToolTip={generate:function(e){function t(){var e=Element.generate(a);return e.publicProperties(a),e.publicMethods(i),e.append(StringUtil.parseVars(a.text)),e.visibilityFilter(r),o=e.condense(a.filter),e.removeLinks(),e}function n(){return o}function r(e){return StringUtil.evaluate(StringUtil.parseVars(e))}var a={acc:!1,cssClass:"tool-tip",elementType:"ToolTip",filter:"min",highContrast:!0,id:"tool-tip",role:"tooltip",text:""},i={isCondensed:n};a=Element.extend(a,e),Element.manifestValue(a,"text");var o=!1;return t()}},ToolkitMenuOption={generate:function(e){function t(){var e={acc:!1,cssClass:"toolkit-menu-option-icon",id:o.id+"-icon",symbol:"symbols."+o.icon};return Sprite.generate(e)}function n(){var e={acc:!1,cssClass:"toolkit-menu-option-label",id:o.id+"-label"},t=Element.generate(e);return t.append(o.label),t}function r(){var e=null;if(o["switch"]){var t={acc:!1,cssClass:"checkbox toolkit-menu-option-checkbox",id:o.id+"-checkbox",selected:o.selected};e=Checkbox.generate(t),e.call("init")}return e}function a(e){o["switch"]&&(o.selected=e,l.call("setSelected",e),u.attr("aria-checked",o.selected))}function i(e){o["switch"]&&(e.target===e.delegateTarget&&l.call("select"),e.stopPropagation())}var o={cssClass:"toolkit-menu-option",elementType:"ToolkitMenuOption",icon:"",id:"toolkit-menu-option",label:"",selected:!1,"switch":!1},s={setSelected:a};o=Element.extend(o,e),o.role=o["switch"]?"menuitemcheckbox":"menuitem";var l=r(),c=n(),u=InteractiveElement.generate(o);return u.publicProperties(o),u.publicMethods(s),u.attr("aria-checked",o.selected),u.attr("aria-labelledby",c[0].id),u.append(l),u.append(t()),u.append(c),u.on(ElementEvent.SELECT,i),u}},ToolkitMenu={ASK_THE_EXPERT:"ask-the-expert",AUDIO_ENABLED:"audio-enabled",BOOKMARKS:"bookmarks",COURSE_SUMMARY:"course-summary",FOCUS_OUTLINE:"focus-outline",GLOSSARY:"glossary",HIGH_CONTRAST:"high-contrast",RESOURCES:"resources",SETTINGS:"settings",VIDEO_SUBTITLES:"video-subtitles",generate:function(e){function t(e){var t=Util.nullValue(e,"");if(!StringUtil.isEmpty(t)){var n=S.children("#"+t);if(n.length>0)return n[0].click(),!0}return!1}function n(){var e=function(){v=!1,S.call("hide"),S.attr("aria-expanded",v)};v&&S.animate({right:-S.outerWidth()},"fast",e)}function r(e){var t=function(e){var t=["toolkit-menu-option"];Util.nullValue(e.visible,!0)||t.push("hide");var n={cssClass:t.join(" "),icon:e.id,label:core.manifest.player.button.label[e.id],tabIndex:TabOrder.TOOLKIT_BUTTONS};S.append(ToolkitMenuOption.generate($.extend(n,e)))};e.forEach(t)}function a(e){var t=$("#"+e);return t.length>0?t:null}function i(){var e=[];for(var t in core.course.orphans)if(core.course.orphans.hasOwnProperty(t))switch(t){case ToolkitMenu.ASK_THE_EXPERT:case ToolkitMenu.BOOKMARKS:case ToolkitMenu.GLOSSARY:case ToolkitMenu.RESOURCES:e.push({id:t})}return e.push({id:ToolkitMenu.COURSE_SUMMARY,enabled:g,visible:g}),e.push({id:ToolkitMenu.AUDIO_ENABLED,selected:core.config[ToolkitMenu.AUDIO_ENABLED],"switch":!0,visible:core.config["has-audio"]}),e.push({id:ToolkitMenu.VIDEO_SUBTITLES,selected:core.config[ToolkitMenu.VIDEO_SUBTITLES],"switch":!0}),e.push({id:ToolkitMenu.FOCUS_OUTLINE,selected:core.config[ToolkitMenu.FOCUS_OUTLINE],"switch":!0}),e.push({id:ToolkitMenu.HIGH_CONTRAST,selected:core.config[ToolkitMenu.HIGH_CONTRAST],"switch":!0}),e}function o(e){var t=!e,n={};return n[ToolkitMenu.ASK_THE_EXPERT]=t,n[ToolkitMenu.GLOSSARY]=t,n[ToolkitMenu.RESOURCES]=t,n[ToolkitMenu.COURSE_SUMMARY]=g&&t,n[ToolkitMenu.AUDIO_ENABLED]=!0,n[ToolkitMenu.VIDEO_SUBTITLES]=!0,n[ToolkitMenu.FOCUS_OUTLINE]=!0,n[ToolkitMenu.HIGH_CONTRAST]=!0,n}function s(){v||(v=!0,S.call("hide",!1),S.animate({right:0},"fast"),S.attr("aria-expanded",v))}function l(e){var t=null;for(var n in e)e.hasOwnProperty(n)&&(t=a(n),Util.isSet(t)&&t.call("setEnabled",e[n]))}function c(e,t){l(o(t.assessmentQuestion))}function u(){v?n():s()}function d(e){var t=S.children("#"+e.property);t.length>0&&t.call("setSelected",e.value)}function f(e){var t=$(e.target);core.setSetting(e.currentTarget.id,t.call("isSelected"))}function p(e){var t=$(e.currentTarget);t.getVal("switch")&&e.stopPropagation()}var E={accName:core.manifest.player.acc["toolkit-menu"],cssClass:"toolkit-menu",elementType:"ToolkitMenu",enabled:!0,highContrast:!0,id:"toolkit-menu",role:"menu"},m={activate:t,close:n,open:s,startPage:c,toggle:u};E=Element.extend(E,e);var g=core.config["has-course-summary"],v=!1,S=Element.generate(E);return S.publicProperties(E),S.publicMethods(m),S.call("hide"),S.on(ElementEvent.CHANGE,'[data-element-type="ToolkitMenuOption"]',f),S.on(MouseEvent.CLICK,'[data-element-type="ToolkitMenuOption"]',p),r(i()),core.addEventListener(CoreEvent.SETTING,d),S}},Vector={generate:function(e){function t(){var e=r.src;StringUtil.isEmpty(r.symbol)||(e+="#"+r.symbol),i.attr("data",e)}function n(e){$(e.target).contents()}var r={cssClass:"vector",element:"<object/>",elementType:"Vector",height:0,id:"vector",src:"",symbol:"",width:0},a={init:t};r=Element.extend(r,e);var i=Element.generate(r);return i.publicProperties(r),i.publicMethods(a),i.attr("type","image/svg+xml"),i.attr("width",r.width),i.attr("height",r.height),i.on(LoadEvent.LOAD,n),i}},VideoControls={generate:function(e){function t(e){var t={cssClass:"button video-controls-button",enabled:h.enabled,icon:e,id:e,label:core.manifest.player.button.label[e],showLabel:!1,tabIndex:TabOrder.PAGE_CONTENT};return Button.generate(t)}function n(){var e={cssClass:"video-controls-play-pause-button",id:h.id+"-play-pause-button"},n=Element.generate(e);return n.append(t(Button.PLAY)),n.append(t(Button.PAUSE)),n}function r(){var e={cssClass:"linear-progress-indicator video-controls-seek-bar",id:h.id+"-seek-bar",role:"slider",tabIndex:TabOrder.PAGE_CONTENT},t=LinearProgressIndicator.generate(e);return t.attr("data-seek-bar",""),t.attr("aria-valuemin",T),t.attr("aria-valuemax",U),t.attr("aria-valuenow",T),t.on(MouseEvent.DOWN,S),t}function a(){var e={cssClass:"video-controls-seek-bar-container",id:h.id+"-seek-bar-container"},t=Element.generate(e);return t.toggleClass("subtitles",h.hasSubtitles),t}function i(){var e={cssClass:"video-controls-subtitles-button",id:h.id+"-subtitles-button"},n=Element.generate(e);return n.toggleClass("hide",!h.hasSubtitles),n.append(t(Button.SUBTITLES_ON)),n.append(t(Button.SUBTITLES_OFF)),n}function o(e){return NumberUtil.constrain(e-O,0,y)}function s(e){var t=core.manifest.player.acc.time,n={};return e>=3600?(n.h=Math.floor(e/3600),n.minutes=s(e%3600),StringUtil.parseVars(t[1===n.h?"hours1":"hours2"],n)):e>=60?(n.m=Math.floor(e/60),n.seconds=s(e%60),StringUtil.parseVars(t[1===n.m?"minutes1":"minutes2"],n)):(n.s=e,StringUtil.parseVars(t[1===n.s?"seconds1":"seconds2"],n))}function l(e){var t=function(){$(this).addClass("hide")},n={opacity:0,bottom:-N.height()};e?N.animate(n,"fast",t):N.css(n)}function c(e){U=Math.round(e),I.attr("aria-valuemax",U)}function u(e){P.children("#"+Button.PLAY).toggleClass("hide",e),P.children("#"+Button.PAUSE).toggleClass("hide",!e)}function d(e){var t=Math.round(e*U);I.call("setProgress",e),I.attr("aria-valuenow",t),I.attr("aria-valuetext",s(t))}function f(e){C.children("#"+Button.SUBTITLES_ON).toggleClass("hide",e),C.children("#"+Button.SUBTITLES_OFF).toggleClass("hide",!e)}function p(e,t){if(h.visible!==e){var n=Util.nullValue(t,!0);h.visible=e,h.visible?E(n):l(n)}}function E(e){var t={opacity:1,bottom:0};N.removeClass("hide"),e?N.animate(t,"fast"):N.css(t)}function m(){p(!h.visible)}function g(e){d(o(e.clientX)/y)}function v(e){var t=$(e.delegateTarget);t.off(MouseEvent.MOVE,g),t.off(MouseEvent.UP,v),d(o(e.clientX)/y),I.trigger(ElementEvent.CHANGE)}function S(e){var t=$(e.delegateTarget);O=e.clientX-e.offsetX,y=t.outerWidth();var n=$("body");n.on(MouseEvent.MOVE,g),n.on(MouseEvent.UP,v)}var h={cssClass:"video-controls",element:"<div/>",elementType:"VideoControls",enabled:!0,hasSubtitles:!1,id:"video-controls",subtitles:!1,visible:!1},b={setDuration:c,setPlaying:u,setProgress:d,setSubtitles:f,setVisibility:p,toggleVisibility:m};h=Element.extend(h,e);var O=0,y=0,T=0,U=1,P=n(),I=r(),C=i(),A=a();A.append(I);var N=Element.generate(h);return N.toggleClass("hide",!h.visible),N.publicProperties(h),N.publicMethods(b),N.append(P),N.append(A),N.append(C),u(!1),f(h.subtitles),N}},VideoPlayer={generate:function(e){function t(){return g(),F["super"]("advance")}function n(){var e={cssClass:"video-player-container",id:L.id+"-player-container"};return Element.generate(e)}function r(){var e={cssClass:"video-controls",hasSubtitles:L.useLocale,id:L.id+"-controls",subtitles:D},t=VideoControls.generate(e);return t.on(ElementEvent.CHANGE,"[data-seek-bar]",S),t.on(MouseEvent.DOWN,"[data-seek-bar]",h),t.on(ElementEvent.SELECT,b),t}function a(){var e={cssClass:"video-footer",id:L.id+"-footer"};return Element.generate(e)}function i(){var e={cssClass:"video-subtitles",highContrast:!0,id:L.id+"-subtitles"},t=Element.generate(e);return t.toggleClass("hide",!D),t}function o(){var e={autoPlay:L.autoPlay,hasSubtitles:L.useLocale,poster:L.poster,subtitles:D},t=Video.generate(e);return t.on(MediaEvent.CAN_PLAY,y),t.on(MouseEvent.CLICK,T),t.on(MediaEvent.CUE_CHANGE,U),t.on(MediaEvent.ENDED,P),t.on(LoadEvent.ERROR,I),t.on(MediaEvent.PAUSE,C),t.on(MediaEvent.PLAY,A),t.on(MediaEvent.TIME_UPDATE,N),t}function s(){return R&&L.enabled}function l(){u(L.useResource?L.resourceId+".mp4":L.src),F.trigger(ElementEvent.INIT)}function c(){return V.prop("paused")}function u(e){L.src=Util.nullValue(e,""),StringUtil.isEmpty(L.src)||(L.useAssetPath&&(L.src=Path.ASSETS+L.src),V.call("setPoster",L.poster),V.call("load",L.src))}function d(){j.call("setPlaying",!1),V.call("pause")}function f(e){V.call("play",e)}function p(e,t,n,r){"load"===e&&u(n[0])}function E(e){D=e,w.toggleClass("hide",!D),j.call("setSubtitles",D),core.setSetting("video-subtitles",D)}function m(e){var t=Util.nullValue(e,!0);j.call("setVisibility",t&&s())}function g(){V.call("stop")}function v(e,t){t.enabled||E(!0)}function S(e){var t=$(e.target),n=t.getVal("progress"),r=n*M;x?V.call("stop",r):V.call("play",r)}function h(e){x=c(),x||V.call("pause")}function b(e){var t=e.target;switch(t.id){case Button.PLAY:f();break;case Button.PAUSE:d();break;case Button.SUBTITLES_OFF:E(!1),m(c());break;case Button.SUBTITLES_ON:E(!0),m(c())}}function O(e){"video-subtitles"===e.property&&E(e.value)}function y(e){M=e.target.duration,R=!0,j.call("setDuration",M),m(1===(1&L.displayControls)),F.trigger(MediaEvent.CAN_PLAY)}function T(){s()&&j.call("toggleVisibility")}function U(e,t){var n=t.activeCues,r=n.length;w.empty();for(var a=0;r>a;a++)w.append("<p>"+n[a].text+"</p>")}function P(){j.call("setPlaying",!1),F.trigger(MediaEvent.ENDED),m(2===(2&L.displayControls))}function I(){F.trigger(MediaEvent.DISABLED)}function C(){j.call("setPlaying",!1)}function A(){core.audio.call("stop"),j.call("setPlaying",!0),L.autoHideControls&&m(!1)}function N(e){j.call("setProgress",e.target.currentTime/M)}var L={accName:core.manifest.player["video-player"].accName,autoHideControls:!0,autoPlay:!1,cssClass:"video-player",displayControls:3,elementType:"VideoPlayer",enabled:!0,framed:!0,id:"video-player",poster:"",role:"group",src:"",footerBarState:FooterBarState.CONTINUE,useAssetPath:!0,useLocale:!0,useResource:!0},_={advance:t,init:l,load:u,play:f,scriptAction:p};L=Element.extend(L,e);var D=Util.nullValue(L.subtitles,core.config["video-subtitles"]),R=!1,M=0,x=!1,V=o(),w=i(),j=r(),B=a();B.append(w),B.append(j);var k=n();k.append(V),k.append(B);var F=Element.generate(L);return F.publicProperties(L),F.publicMethods(_),F.toggleClass("frame",L.framed),F.append(k),core.audio.on(ElementEvent.ENABLED,v),core.addEventListener(CoreEvent.SETTING,O),F}},Video={generate:function(e){function t(e){var t={element:"<track/>",elementType:"Track",id:c.id+"-track"},n=Element.generate(t);return n.attr("kind","subtitles"),n.attr("label","Subtitles"),n.attr("src",e),n.attr("srclang",core.config.locale),n.attr("default",""),n}function n(){return!(d&&f);
}function r(e){if(p.empty(),p.attr("poster",c.poster),c.hasSubtitles){var n=t(e.slice(0,e.lastIndexOf("."))+".vtt");n.appendTo(p)}p["super"]("load",e)}function a(e){c.poster!==e&&(c.poster=Util.nullValue(e,""),p.attr("poster",c.poster))}function i(){E.length>0&&(E[0].mode=Util.nullValue(E[0].HIDDEN,"hidden"),E[0].oncuechange=s)}function o(e,t){f=t.enabled,p.call("setMute",n())}function s(e){var t=e.target;p.trigger(MediaEvent.CUE_CHANGE,{activeCues:t.activeCues})}function l(){i()}var c={acc:!1,subtitles:!1,cssClass:"video",element:"<video/>",elementType:"Video",hasSubtitles:!0,id:"video",poster:"",src:""},u={load:r,setPoster:a};core.audio.on(ElementEvent.ENABLED,o);var d=core.config["has-audio"],f=core.config["audio-enabled"];c=Element.extend(c,e),c.enabled=core.config["video-enabled"],c.muted=n()||c.muted;var p=MediaWrapper.generate(c);p.publicProperties(c),p.publicMethods(u),p.attr("poster",c.poster),p.attr("controls",!1),p.bind("contextmenu",function(){return!1}),p.on(MediaEvent.CAN_PLAY,l);var E=p.prop("textTracks");return p}},View={WIDTH:1024,HEIGHT:768,generate:function(e){function t(e,t){core.audio.call("stop");var n=Util.isSet(e);re=Util.nullValue(t,{}),re.closeOverlay=!n,re.hasNextPage=core.course.hasNextPage(),re.titles=f(n?e:core.course.currentPage),h(!n),core.setLoading(n),n&&!e.isOrphan&&(e.completed=e.completed||!K),se.call("changePage",e,re),le.call("changePage",e,re),oe.call("changePage",e,re)}function n(){X[W]=[]}function r(){var e={cssClass:"view-cover",id:G.id+"-cover"};return Element.generate(e)}function a(){var e={sequentialPages:Y};return HeaderBar.generate(e)}function i(){var e={cssClass:"view-mailto",element:"<iframe/>"};return Element.generate(e)}function o(e,t){var n=[e,"entries",t,"definition"],r={resourcePath:n.join(".")},a=ToolTip.generate(r);return a.data("id",t),a.call("isCondensed")&&(a.append(u(e,t)),a.on(MouseEvent.CLICK,"a",V)),a}function s(){var e=X[W];if(e.length>0){var t=e.shift();t.call.apply(t,arguments)?!y()&&z&&le.call("setState",FooterBarState.NONE):e.unshift(t)}}function l(){return Util.nullValue(window.devicePixelRatio,1)}function c(e){return e.footerBarState!==FooterBarState.UNCHANGED?core.course.isSectionEnd()?core.course.isCourseEnd()?FooterBarState.COURSE_END:FooterBarState.SECTION_END:FooterBarState.PAGE_END:e.footerBarState}function u(e,t){var n=$("<a/>");n.attr("data-id",t),n.data("resource",e),n.append(core.manifest.player.button.label.more);var r=$("<p/>");return r.append(n),r}function d(){return J}function f(e){var t={course:core.course.title};if(Util.isSet(e)){var n=core.course.getSection(e);t.page=core.course.getNodeTitle(e),t.section=Util.isSet(n)?core.course.getNodeTitle(n):null}return t}function p(e){ie.attr("src","mailto:"+e)}function E(e,t){le.call("setState",FooterBarState.NONE),oe.call("navigate",e,t),ae.trigger(CourseEvent.NAVIGATE,{navigation:e,target:t})}function m(e){switch(e){case Button.CONTINUE_NEXT_PAGE:return E(Navigation.NEXT_PAGE),!0;case Button.CONTINUE_NEXT_SECTION:return E(Navigation.NEXT_SECTION),!0;case Button.HOME_PAGE:case Button.NEXT_PAGE:case Button.PREVIOUS_PAGE:case Button.REPLAY_PAGE:return E(e),!0}return!1}function g(e){var t=!1;return Util.isSet(Q)&&(t=Q.data("id")===e,Q.remove(),Q=null),t}function v(){var e=l()/H,t={width:window.innerWidth,height:window.innerHeight},n=t.width/t.height,r=n>te?t.height/ee.height:t.width/ee.width;O(t.width),T(r*e),ue.css("overflow",e>1?"auto":"hidden")}function S(e){var t=e[0].nodeName.toLowerCase();se.call("closeToolkit");var n=Util.nullValue(e.data("id"),""),r=g(n);if("a"===t){var a=Util.nullValue(e.attr("class"),"");if("glossary"===a){if(StringUtil.isEmpty(n))P(a);else if(!r){Q=o(a,n),Q.appendTo(ae);var i=Util.invScale(e.relativePosition(ae),core.scale);i.left=Math.min(i.left-10,ae.width()-Q.outerWidth());var s=i.top+e.height()+4;s>ae.height()-Q.outerHeight()&&(s=i.top-Q.outerHeight()-4),i.top=s,Q.css({left:i.left+"px",top:i.top+"px"}),e.attr("aria-describedby",Q.attr("id"))}}else if("ask-the-expert"===a)P(a,n);else{var l=a.split("-");if("resources"===l[0]){var c=l[1];if("email"===c||"url"===c){var u=core.resources.getEntry(n);if(Util.isSet(u)){var d=u[c];"email"===c?p(d):window.open(d)}}else P(l[0],n)}}}}function h(e,t){Z=e,ae.tabChildren(e),ce.toggleClass("view-cover-modal",Util.nullValue(t,!1)),e?ce.hide():ce.show()}function b(e){var t=!1;if(Util.isSet(e)){var n=Util.nullValue(e.getVal("footerBarState"),FooterBarState.UNCHANGED);t=n!==FooterBarState.UNCHANGED,t&&le.call("setState",n)}return t&&n!==FooterBarState.NONE}function O(e){var t=e<ee.width;ne!==t&&(ne=t,ae.toggleClass("origin-left",ne),ue.width(ne?e:""))}function y(){var e=function(e,t,n){var r=!1;return oe.has(e).length>0&&(r=b(e),r&&t>0&&(n=n.slice(t))),r};return X[W].some(e)}function T(e){J!==e&&(J=e,ae.css("transform","scale("+J+")"))}function U(e,t){h(!0),Util.isSet(e)&&(re.assessmentQuestion=Util.isSet(e.param.questionNode),re.assessmentQuestion&&(re.titles.page=core.course.getNodeTitle(core.course.currentPage)),$.extend(re,Util.nullValue(t,{})),se.call("startPage",e,re),le.call("startPage",e,re),oe.call("startPage",e,re))}function P(e,n){var r=!0;if(e===Button.COURSE_SUMMARY){var a=Util.nullValue(core.config["has-course-summary"],!1);if(a){var i="course-summary.pdf",o=core.pageScript.global;if(Util.isSet(o)){var s=o.getCourseSummaryFilename;Util.isSet(s)&&(i=s())}window.open(Path.ASSETS+i)}}else{var l=core.course.orphans[e];Util.isSet(l)?(l.param.entryId=Util.nullValue(n,""),t(l)):r=!1}return r}function I(e){if(Z){var t=$("input:focus");if(0===t.length&&!e.shiftKey&&!e.ctrlKey&&!e.altKey){var n=KeyboardShortcut.getKeyFunction(e.which);"select"===n?S($(e.target)):"continue"===n?le.call("advance"):StringUtil.isEmpty(n)?s("keyPress",e.which):se.call("activate",n)}}}function C(e,t){e.stopPropagation(),b(t)&&X[W].unshift(t)}function A(e){z=!1;var t=FooterBarState.CLOSE;if(0===W){var r=core.course.currentPage;if(r.overrideCompleted(),r.showHeaderBar&&r.enableHeaderBar){var a={};a[Button.NEXT_PAGE]=re.hasNextPage,se.call("setEnabledButtons",a)}t=c(e.target)}le.call("setState",t),n()}function N(e){var t=$(e.target),r=t.getVal("elementType");if("Page"===r){var a=t.getVal("pageNode"),i=!Util.isSet(a.parent),o=le.getVal("state");o!==FooterBarState.CLOSE&&(q=i?o:FooterBarState.UNCHANGED),W=i?1:0,n()}}function L(e,t){h(!1),n()}function _(e,t){if(t.isLast&&t["continue"]){var n=X[W];if(n.length>0){var r=n.shift();r[0]===e.target?!y()&&z&&le.call("setState",FooterBarState.NONE):n.unshift(r)}}}function D(e,t){e.stopPropagation(),y()}function R(e,t){le.call("setContinue",t)}function M(e,t){var n=$(t.questionPage);U(n.getVal("pageNode"))}function x(e){z=!0;var t=$(e.target);core.setLoading(!1),U(t.getVal("pageNode"))}function V(e){var t=$(e.target),n=t.data();P(n.resource,n.id)}function w(e){S($(e.target))}function j(e,t){le.call("setState",FooterBarState.NONE)}function B(e){var n=e.target.id;if(se.call("closeToolkit"),g(),m(n)||P(n))e.stopPropagation();else if(n===Button.EXIT)core.exit();else if(n===Button.CLOSE){t(),W=0;X[W];le.call("setState",q)}else if(n===Button.BOOKMARK_PAGE){var r=core.course.currentPage;r.bookmarked=!r.bookmarked}else if(n===Button.ACCEPT_POLICY)core.setData("policy-accepted",!0);else{var a=!1;switch(n){case Button.CONFIRM:case Button.CONTINUE:case Button.START_COURSE:a=!0}var i=a?"advance":n;s(i)}}function k(e){e.stopPropagation()}var F={changePage:t,getScale:d,resize:v,setEnabled:h},G={cssClass:"view",elementType:"View",id:"view",role:"group"};G=Element.extend(G,e);var H=l(),Y=core.config["sequential-pages"],K=core.config["strict-page-completion"],q=FooterBarState.UNCHANGED,X=[[],[]],W=0,Q=null,z=!0,Z=!0,J=1,ee={width:View.WIDTH,height:View.HEIGHT},te=ee.width/ee.height,ne=!1,re=null,ae=Element.generate(G);ae.publicProperties(G),ae.publicMethods(F),ae.attr("tabindex",TabOrder.VIEW),ae.on(MouseEvent.CLICK,w),ae.on(CourseEvent.NAVIGATE,j),ae.on(ElementEvent.SELECT,B),ae.on(TouchEvent.MOVE,".scrollable",k);var ie=i();ie.appendTo(ae);var oe=PageManager.generate();oe.on(ElementEvent.ADDED,C),oe.on(PageEvent.FINISH,A),oe.on(ElementEvent.INIT,N),oe.on(AssessmentEvent.NEXT_QUESTION,L),oe.on(TextEvent.PARAGRAPH,_),oe.on(ElementEvent.REMOVED,D),oe.on(AssessmentEvent.SHOW_QUESTION,M),oe.on(PageEvent.START,x),oe.on(ProgressEvent.SET_CONTINUE,R),oe.appendTo(ae);var se=a();se.appendTo(ae);var le=FooterBar.generate();le.appendTo(ae);var ce=r();ce.hide(),ce.appendTo(ae);var ue=$("body");return ue.on(KeyboardEvent.KEY_DOWN,I),ae}},WebLink={generate:function(e){function t(){var e={acc:!1,cssClass:"web-link-icon",id:i.id+"-icon",symbol:"symbols."+i.icon};return Sprite.generate(e)}function n(){var e={acc:!1,cssClass:"web-link-label",id:i.id+"-label"},t=Element.generate(e);return t.append(StringUtil.isEmpty(i.label)?i.url:i.label),t}function r(e){if(StringUtil.isEmpty(i.url)&&!StringUtil.isEmpty(e)){var t=core.resources.getEntry(e);Util.isSet(t)&&(i.label=t.name,i.url=t.url)}}function a(e){window.open(i.url,i.entryId)}var i={cssClass:"web-link",elementType:"WebLink",entryId:"",icon:"web-link",id:"web-link",label:"",role:"link",url:""};i=Element.extend(i,e),r(i.entryId);var o=n(),s=InteractiveElement.generate(i);return s.publicProperties(i),s.attr("aria-labelledby",o.attr("id")),s.append(t()),s.append(o),s.on(ElementEvent.SELECT,a),s}};