{"version":3,"sources":["../../bower_components/jquery/dist/jquery.js","../../bower_components/jquery-ui/ui/core.js","../../bower_components/jquery-ui/ui/widget.js","../../bower_components/jquery-ui/ui/mouse.js","../../bower_components/jquery-ui/ui/slider.js","../../bower_components/handlebars/handlebars.runtime.js","../../bower_components/jquery.panzoom/dist/jquery.panzoom.js","../../bower_components/q/q.js","../../bower_components/techsmith-medialibjs/tsc-media-lib.js","../../bower_components/lodash/dist/lodash.js","../../bower_components/techsmith-renderlibjs/tsc-render-lib.js","../../bower_components/tinycolor/tinycolor.js","../../bower_components/tsc-media-extensions-js/tsc-media-extensions.js","../../bower_components/pepjs/dist/pep.js","../../bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.js","../../html5/src/common/window-wrapper.js","../../html5/src/common/document-wrapper.js","../../html5/src/common/log.js","../../html5/src/common/theme-names.js","../../html5/src/smart-player/constants/status-codes.js","../../html5/src/smart-player/constants/message-bar-type.js","../../html5/src/smart-player/utils/time-formatter.js","../../html5/src/smart-player/utils/youtube-id-parser.js","../../html5/src/smart-player/utils/local-storage-wrapper.js","../../html5/src/smart-player/utils/performance-wrapper.js","../../html5/src/common/custom-event-polyfill.js","../../html5/src/smart-player/constants/templates.js","../../html5/src/common/pre-roll-event-constants.js","../../html5/src/smart-player/views/pre-roll-view.js","../../html5/src/smart-player/controllers/pre-roll-controller.js","../../html5/src/smart-player/controllers/external-message-controller.js","../../html5/src/smart-player/constants/language-codes.js","../../html5/src/smart-player/constants/hotspot-active-state.js","../../html5/src/smart-player/constants/end-action-type.js","../../html5/src/smart-player/constants/question-grader.js","../../html5/src/smart-player/constants/media-type.js","../../html5/src/smart-player/constants/css-classes.js","../../html5/src/smart-player/constants/events.js","../../html5/src/smart-player/constants/mouse-buttons.js","../../html5/src/smart-player/constants/scorm-constants.js","../../html5/src/smart-player/constants/tab-index.js","../../html5/src/smart-player/constants/rationale-action-type.js","../../html5/src/smart-player/models/localization-strings.js","../../html5/src/smart-player/constants/keys.js","../../html5/src/smart-player/shims/ios-text-input-fix.js","../../html5/src/smart-player/shims/ie-fullscreen-dimensions-fix.js","../../html5/src/smart-player/constants/player-type.js","../../html5/src/smart-player/constants/media-mime-type.js","../../html5/src/smart-player/utils/device-info.js","../../html5/src/smart-player/services/url-service.js","../../html5/src/smart-player/services/backoff-strategy-factory.js","../../html5/src/smart-player/services/http-service.js","../../html5/src/smart-player/models/player-configuration.js","../../html5/src/smart-player/controllers/null-pip-controller.js","../../html5/src/smart-player/controllers/safari-pip-controller.js","../../html5/src/smart-player/controllers/chrome-pip-controller.js","../../html5/src/smart-player/controllers/pip-controller-factory.js","../../html5/src/smart-player/controllers/end-actions-controller.js","../../html5/src/smart-player/controllers/theme-controller.js","../../html5/src/smart-player/controllers/tab-controller.js","../../html5/src/smart-player/constants/supported-plugin-view-elements.js","../../html5/src/smart-player/models/plugin.js","../../html5/src/smart-player/controllers/plugin-controller.js","../../html5/src/smart-player/utils/text-sanitizer.js","../../html5/src/smart-player/utils/highlight-disabler.js","../../html5/src/smart-player/services/token-service.js","../../html5/src/smart-player/services/caption-service.js","../../html5/src/smart-player/constants/question-type.js","../../html5/src/smart-player/utils/quiz-data-xml-converter.js","../../html5/src/smart-player/constants/report-type.js","../../html5/src/smart-player/models/question-set-marker.js","../../html5/src/smart-player/models/question.js","../../html5/src/smart-player/models/question-set.js","../../html5/src/smart-player/models/quiz.js","../../html5/src/smart-player/services/quiz-service.js","../../html5/src/smart-player/models/xmp.js","../../html5/src/smart-player/services/fathom-service.js","../../html5/src/smart-player/services/hotkey-service.js","../../html5/src/smart-player/utils/quiz-progress-tracker.js","../../html5/src/smart-player/models/tsc-proj-theme.js","../../html5/src/smart-player/models/media-lib.js","../../html5/src/smart-player/utils/view-helper.js","../../html5/src/smart-player/views/message-bar-view.js","../../html5/src/smart-player/views/render-lib-view.js","../../html5/src/smart-player/views/bubble-view.js","../../html5/src/smart-player/views/quiz-setup-view.js","../../html5/src/smart-player/views/question-set-confirmation-view.js","../../html5/src/smart-player/views/question-set-review-status.js","../../html5/src/smart-player/views/answers-view.js","../../html5/src/smart-player/views/question-view.js","../../html5/src/smart-player/views/question-set-view.js","../../html5/src/smart-player/views/review-answers-confirmation-view.js","../../html5/src/smart-player/services/xmp-grader.js","../../html5/src/smart-player/services/fathom-grader.js","../../html5/src/smart-player/utils/video-analytics.js","../../html5/src/smart-player/utils/scorm-api-wrapper.js","../../html5/src/smart-player/models/scorm-data-model.js","../../html5/src/smart-player/controllers/scorm-controller.js","../../html5/src/smart-player/controllers/quiz-controller.js","../../html5/src/smart-player/models/media.js","../../html5/src/smart-player/utils/media-list-parser.js","../../html5/src/smart-player/models/media-list.js","../../html5/src/smart-player/controllers/media-player-controller.js","../../html5/src/smart-player/services/iframe-bridge.js","../../html5/src/smart-player/utils/query-params-stripper.js","../../html5/src/smart-player/controllers/responsive-controller.js","../../html5/src/smart-player/views/io-overlay-view.js","../../html5/src/smart-player/views/player-settings-view.js","../../html5/src/smart-player/views/pip-control-view.js","../../html5/src/smart-player/views/fullscreen-control-view.js","../../html5/src/smart-player/shims/played-tracker-shim.js","../../html5/src/smart-player/controllers/youtube-plugin.js","../../html5/src/smart-player/utils/search-tool.js","../../html5/src/smart-player/views/captions-view.js","../../html5/src/smart-player/views/audio-description-control-view.js","../../html5/src/smart-player/views/audio-description-track-view.js","../../html5/src/smart-player/views/toc-view.js","../../html5/src/smart-player/models/hotspot-view-model.js","../../html5/src/smart-player/views/hotspot-view.js","../../html5/src/smart-player/views/hotspots-view.js","../../html5/src/smart-player/views/play-rewind-controls-view.js","../../html5/src/smart-player/views/prev-next-controls-view.js","../../html5/src/smart-player/views/progress-bar-control-view.js","../../html5/src/smart-player/views/volume-control-view.js","../../html5/src/smart-player/views/before-after-play-controls-view.js","../../html5/src/smart-player/views/click-controls-view.js","../../html5/src/smart-player/views/player-view.js","../../html5/src/smart-player/views/image-view.js","../../html5/src/smart-player/controllers/media-player.js","../../html5/src/smart-player/controllers/media-interface-controller.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","isArrayLike","obj","length","type","jQuery","isWindow","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","nodeType","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","querySelectorAll","childNodes","nodeName","push","merge","setGlobalEval","refElements","_data","fixDefaultChecked","rcheckableType","defaultChecked","checked","buildFragment","scripts","selection","ignored","j","contains","tmp","tbody","wrap","l","safe","nodes","rhtml","appendChild","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","leadingWhitespace","rleadingWhitespace","createTextNode","rtbody","firstChild","removeChild","textContent","appendChecked","ownerDocument","rscriptType","returnTrue","returnFalse","safeActiveElement","activeElement","err","on","types","selector","fn","one","origFn","off","apply","arguments","add","manipulationTarget","content","disableScript","find","attr","restoreScript","rscriptTypeMasked","removeAttribute","cloneCopyEvent","src","dest","hasData","oldData","curData","events","handle","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","trim","value","defaultSelected","selected","defaultValue","domManip","collection","args","callback","first","node","hasScripts","doc","fragment","iNoClone","checkClone","rchecked","index","self","eq","html","clone","_evalUrl","globalEval","rcleanScript","remove","keepData","actualDisplay","appendTo","body","display","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","vendorPropName","emptyStyle","capName","charAt","toUpperCase","slice","cssPrefixes","showHide","show","hidden","values","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","Animation","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","propFilter","specialEasing","cssHooks","expand","properties","result","stopped","prefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","proxy","fx","timer","progress","complete","fail","getClass","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","state","error","getDisplay","filterHidden","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","last","len","sort","splice","copyIsArray","copy","isPlainObject","random","isReady","msg","Array","isNumeric","realStringObj","ownFirst","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","Date","Symbol","iterator","Sizzle","seed","m","nid","nidselect","groups","newSelector","newContext","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","getElementsByClassName","qsa","compilerCache","rbuggyQSA","rescape","setAttribute","tokenize","ridentifier","toSelector","join","rsibling","testContext","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","sortOrder","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","els","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","reverse","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","then","fns","newDefer","tuple","returned","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","doScroll","frameElement","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","shrinkWrapBlocksVal","pnum","source","el","access","chainable","emptyGet","raw","bulk","htmlSerialize","cloneNode","noCloneChecked","option","legend","area","param","thead","tr","col","td","optgroup","tfoot","colgroup","caption","th","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","isNaN","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","click","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","form","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","safeFragment","fragmentDiv","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","forceAcceptData","append","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","insert","HTML","BODY","rmargin","swap","old","computeStyleTests","divStyle","pixelPositionVal","boxSizingReliableVal","reliableMarginLeftVal","pixelMarginRightVal","reliableMarginRightVal","getComputedStyle","marginLeft","marginRight","reliableHiddenOffsetsVal","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","rposition","view","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","origName","set","isFinite","$1","getBoundingClientRect","margin","padding","border","suffix","expanded","parts","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","tabindex","parseInt","for","class","rclass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","allTypes","ajaxLocation","ajaxLocParts","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","documentMode","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","size","andSelf","define","amd","_jQuery","_$","$","noConflict","focusable","element","isTabIndexNotNaN","mapName","img","ui","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","scrollParent","includeHidden","excludeStaticParent","overflowRegex","uniqueId","uuid","removeUniqueId","dataName","tabbable","isTabIndexNaN","outerWidth","reduce","side","innerWidth","innerHeight","outerHeight","ie","navigator","userAgent","disableSelection","eventType","enableSelection","plugin","proto","plugins","instance","allowDisconnected","widget_uuid","widget_slice","widget","fullName","existingConstructor","basePrototype","proxiedPrototype","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","_init","defaultElement","create","eventNamespace","bindings","hoverable","_on","destroy","_getCreateOptions","_create","_trigger","_getCreateEventData","_destroy","curOption","_setOptions","_setOption","enable","suppressDisabledCheck","delegateElement","handlerProxy","_off","_delay","_hoverable","_focusable","focusout","defaultEffect","effect","hasOptions","effectName","effects","mouseHandled","mouseup","cancel","distance","_mouseInit","that","_mouseDown","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","_mouseDrag","_mouseStop","abs","mouse","min","orientation","range","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_refresh","_createRange","_createHandles","_setupEvents","_refreshValue","handleCount","existingHandles","handles","_valueMin","bottom","_handleEvents","normValue","closestHandle","allowed","mouseOverHandle","o","elementSize","elementOffset","x","y","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","_change","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","newVal","otherVal","newValues","newValue","_value","vals","_values","valsLength","valModStep","alignValue","toFixed","aboveMin","floor","_precision","precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","keydown","curVal","keyup","Handlebars","VERSION","COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","helpers","partials","functionType","objectType","registerHelper","inverse","Exception","Utils","registerPartial","K","createFrame","logger","DEBUG","INFO","WARN","ERROR","level","methodMap","0","log","console","conditional","isEmpty","errorProps","message","SafeString","escape","&","<","\"","'","`","badChars","possible","escapeChar","chr","escapeExpression","VM","template","templateSpec","invokePartial","programs","program","programWrapper","common","programWithDepth","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","partial","require","matrixClose","delta","createResetOptions","Matrix","c","d","f","g","h","Vector","z","Panzoom","datakey","defaults","$elem","$set","$doc","$parent","isSVG","rsvg","namespaceURI","panning","_buildTransform","_transform","transform","rupper","_buildTransition","resetDimensions","$empty","hook","PointerEvent","mouseProps","touch","touches","pointertouch","pointerEvents","supportsInputEvent","oninput","rinline","floating","commaSpace","rmatrix","matrix","isVector","determinant","transition","cursor","disablePan","disableZoom","increment","minScale","maxScale","rotate","rangeStep","contain","_initStyle","_bind","_resetStyle","_unbind","isDisabled","dims","po","widthBorder","heightBorder","dimensions","setMatrix","_origTransform","silent","resetZoom","origMatrix","getMatrix","dValue","resetPan","pan","setTransform","getTransform","transformElem","marginW","marginH","diffW","diffH","_checkDims","$zoomRange","isPanning","_transition","focal","clientV","surfaceM","offsetM","surfaceV","scaleBy","noSetRange","backface-visibility","transform-origin","image-orientation","ns","str_start","str_click","$reset","_startMove","$zoomIn","$zoomOut","startTransform","_getDistance","touch1","touch2","sqrt","pow","_getMiddle","move","moveEvent","endEvent","startDistance","startScale","startMiddle","startPageX","startPageY","origPageX","origPageY","panOptions","middle","panzoom","definition","bootstrap","ses","ok","makeQ","Q","uncurryThis","isObject","isStopIteration","exception","object_toString","QReturnValue","makeStackTraceLong","hasStacks","stack","STACK_JUMP_SEPARATOR","stacks","concatedStacks","filterStackString","stackString","lines","desiredLines","line","isInternalFrame","isNodeFrame","stackLine","getFileNameAndLineNumber","attempt1","Number","attempt2","attempt3","fileNameAndLineNumber","fileName","lineNumber","qFileName","qStartingLine","qEndingLine","captureLine","firstLine","deprecate","alternative","warn","isPromise","isPromiseAlike","coerce","fulfill","become","newPromise","resolvedPromise","array_reduce","messages","nextTick","promiseDispatch","progressListeners","object_create","Promise","op","operands","array_slice","valueOf","nearerValue","nearer","longStackSupport","substring","reason","progressListener","resolver","TypeError","race","answerPs","descriptor","fallback","fulfilled","rejected","progressed","isPending","isFulfilled","isRejected","resetUnhandledRejections","unhandledReasons","unhandledRejections","trackUnhandledRejections","trackRejection","untrackRejection","at","array_indexOf","rejection","rhs","delete","post","thisp","object_keys","master","isDef","spread","makeGenerator","continuer","verb","StopIteration","generator","errback","spawn","_return","promised","promises","countDown","snapshot","allResolved","array_map","allSettled","nodeify","nodeback","flush","task","domain","enter","isNodeJS","exit","flushing","tail","requestTick","process","setImmediate","MessageChannel","channel","port1","onmessage","requestPortTick","port2","postMessage","basis","collect","Type","object_hasOwnProperty","ReturnValue","makeNodeResolver","passByCopy","makePromise","_fulfilled","_rejected","newException","_progressed","threw","onerror","thenResolve","thenReject","getUnhandledReasons","stopUnhandledRejectionTracking","array","del","mapply","mcall","invoke","fapply","fcall","fbind","regardless","fin","onUnhandledError","ms","timeoutId","nfapply","nodeArgs","nfcall","nfbind","denodeify","baseArgs","nbind","bound","nmapply","npost","nsend","nmcall","ninvoke","tscml","additionalPropertyHelperFactory","AdditionalPropertyHelper","parseAdditionalProperties","handledProperties","jsonObject","foundPropertyCallback","additionalProperties","updatePropertiesOnObject","sceneTypeFactory","sceneType","defineProperties","EMPTY","CONTENT","TITLE","INTRO","OUTRO","defaultSceneValuesFactory","defaultSceneValues","DURATION","TYPE","eventsFactory","EventDispatcher","dispatcherInterface","_events","notifyListeners","eventEntry","forEach","genNotifyFn","isActive","queueNotification","eventNotificationBundlerFactory","EventNotificationBundler","_notificationQueue","_isActive","_dispatcherInterface","notifyFn","eventDispatcherFactory","startBundling","flushEvents","executeEvent","idGeneratorFactory","idGenerator","_p8","substr","registerObject","projectSignatureGeneratorFactory","projectSignatureGenerator","generate","sourceFactory","Source","_id","_uri","_duration","_mimeType","_public","_projectSignature","_additionalProperties","durationAsFloat","projectSignature","uri","addAdditionalProperty","setMimeType","getCommandInterface","sourceParams","emptySceneFactory","EmptyScene","scene","_eventDispatcher","_commandInterface","eventDispatcher","buildCommandInterface","title","cloneSceneContent","sceneClone","contentSceneFactory","ContentScene","_sources","addSource","removeSource","isUriUniqueToScene","removedSource","sources","configurable","getSourceByMimeType","numSources","flattenedSources","audioNarration","commandInterface","themeableSceneFactory","ThemeableScene","_themeables","_themeablesLookup","themeables","optimizeThemeablesLookup","themeTag","setThemeTagDefProperty","deepCopyObject","objCopy","themeTagDefPropertyExists","defProperty","hasThemeTag","hasThemeTagDefProperty","def","getThemeTagDefPropertyValue","copyThemeables","themeableElement","themeablesDictionaryFactory","themeablesDictionary","getThemeables","sceneFactory","Scene","_type","_title","_sceneTrack","_audioNarration","sceneTrack","decorateSceneByType","unDecorateSceneByType","setTitle","setType","additionalParams","setDuration","setAudioNarration","narrationParams","removeAudioNarration","isThemeable","sceneParams","sceneTrackFactory","SceneTrack","_scenes","_timeline","timeline","indexIsOutOfRangeOfScenes","appendScene","insertSceneAtIndex","removeSceneAtIndex","removedScene","removeScene","numScenes","moveSceneAtIndex","fromIndex","toIndex","previousValue","currentScene","scenes","numberScenes","timelineFactory","Timeline","_project","project","addSceneTrack","sceneTrackParams","commandNamesFactory","commandNames","INSERT_SCENE","INSERT_TITLE_CARD_SCENE_WITH_TITLES","ADD_SCENE_WITH_SOURCE","APPEND_SCENE","MOVE_SCENE","REMOVE_SCENE","ADD_SCENE_SOURCE","REMOVE_SCENE_SOURCE","SET_PROJECT_METADATA","SET_SCENE_TITLE","SET_SCENE_DURATION","SET_SCENE_AUDIO_NARRATION_WITH_DURATION","SET_SCENE_AUDIO_NARRATION","REMOVE_SCENE_AUDIO_NARRATION","SET_THEMEABLE_DEF_PROPERTY","SET_THEME_FILE","SET_SCENE_TYPE","SET_SOURCE_MIME_TYPE","commandHistoryFactory","CommandHistory","statLoaders","eventNotificationBundler","_redoableCommands","_undoableCommands","_commandHelper","_executeQueue","getProjectSignature","getStatLoaders","getEventDispatcherFactory","execute","command","finally","catch","unExecute","undo","redo","multiCommandFactory","MultiCommand","commandName","_commandName","_executedCommands","_handleExecute","handleExecute","env","generateSubExecutor","commandHelper","multiCommandHelper","executeCommand","chain","cmd","insertSceneCommandFactory","InsertSceneCommand","_addedScene","sceneTrackCommandInterface","addedScene","insertTitleCardSceneWithTitlesCommandFactory","InsertTitleCardSceneWithTitlesCommand","titleCardType","themeableProperties","_insertSceneCommand","convertPropertiesToThemeDef","appendSceneCommandFactory","AppendSceneCommand","removeSceneCommandFactory","RemoveSceneCommand","_removedScene","moveSceneCommandFactory","MoveSceneCommand","_moveExecuted","setSourceMimeTypeCommandFactory","SetSourceMimeTypeCommand","_previousMimeType","sourceCommandInterface","setThemeFileCommandFactory","SetThemeFileCommand","themeFile","_oldThemeFile","projectCommandInterface","setThemeFile","setProjectMetadataFactory","SetProjectMetadataCommand","_oldValue","getMetadataValue","setMetadataValue","setSceneTitleCommandFactory","SetSceneTitleCommand","_oldTitle","sceneCommandInterface","setSceneDurationCommandFactory","SetSceneDurationCommand","_oldDuration","setSceneNarrationCommandFactory","SetSceneAudioNarrationCommand","_previousAudioNarration","setSceneAudioNarrationWithDurationCommandFactory","SetSceneAudioNarrationWithDurationCommand","removeSceneNarrationCommandFactory","RemoveSceneAudioNarrationCommand","setThemeablePropertyCommandFactory","SetThemeableDefPropertyCommand","_oldPropertyValue","addSceneSourceCommandFactory","AddSceneSourceCommand","sourceInfo","_addedSource","_previousDuration","canStatLoaderHandleUri","statLoader","canHandleUri","canHandle","findStatLoaderThatCanHandleUri","statLoaderFound","getInformationFromStatLoader","getInformationForUri","info","addedSource","addSceneWithSourceCommandFactory","AddSceneWithSourceCommand","sceneInfo","setSceneTypeCommandFactory","SetSceneTypeCommand","_previousType","_previousThemeables","removeSceneSourceCommandFactory","RemoveSceneSourceCommand","_removedSource","fileVersionUpdaterFactory","FileVersionUpdater","updateV01ToV02","projectJson","scenesNode","getAllNodesWithName","sceneNode","updateV02ToV03","updateV03ToV04","updateV04ToV06","theObject","foundNodes","property","fileVersioningFactory","FileVersioning","fileVersionUpdater","CURRENT_FILE_VERSION","versionCompare","v1","v2","isValidPart","lexicographical","zeroExtend","v1parts","v2parts","every","NaN","checkUpdate","fileVersioning","currentVersion","sourceParserFactory","SourceParser","fromJSON","sourceJson","sceneParserFactory","SceneParser","sceneJson","sourceParser","sceneTrackParserFactory","SceneTrackParser","sceneTrackJson","sceneParser","timelineParserFactory","TimelineParser","timelineJson","timelineParams","timelineCommandInterface","sceneTrackParser","projectParserFactory","ProjectParser","description","author","timelineParser","addTimeline","metadata","projectFactory","Project","generatedProjectSignature","_description","_author","_width","_height","_metadata","_version","_statLoaderList","_commandHistory","_themeFile","themeFileUri","addStatLoader","removeStatLoader","numStatLoaders","createFromJSON","parser","addMapEntry","pair","addSetEntry","thisArg","arrayConcat","other","othIndex","othLength","arrayEach","iteratee","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","accumulator","initAccum","arrayReduceRight","arraySome","baseExtremum","baseFind","eachFunc","retKey","baseFindIndex","fromRight","indexOfNaN","baseReduce","baseSortBy","comparer","baseSum","baseTimes","baseToPairs","baseUnary","baseValues","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","checkGlobal","compareAscending","valIsNull","valIsUndef","valIsReflexive","othIsNull","othIsUndef","othIsReflexive","compareMultiple","orders","objCriteria","criteria","othCriteria","ordersLength","deburrLetter","deburredLetters","escapeHtmlChar","htmlEscapes","escapeStringChar","stringEscapes","isHostObject","isIndex","reIsUint","MAX_SAFE_INTEGER","iteratorToArray","mapToArray","replaceHolders","placeholder","PLACEHOLDER","setToArray","stringSize","reHasComplexSymbol","reComplexSymbol","lastIndex","stringToArray","unescapeHtmlChar","htmlUnescapes","runInContext","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","MAX_ARRAY_LENGTH","__views__","lazyClone","copyArray","lazyReverse","lazyValue","isArr","isRight","arrLength","getView","iteratees","iterLength","takeCount","nativeMin","LARGE_ARRAY_SIZE","baseWrapperValue","outer","iterIndex","LAZY_MAP_FLAG","LAZY_FILTER_FLAG","Hash","hashDelete","hashHas","hashGet","nativeCreate","HASH_UNDEFINED","hashSet","MapCache","clear","entry","mapClear","__data__","Map","mapDelete","isKeyable","assocDelete","mapGet","assocGet","mapHas","assocHas","mapSet","assocSet","SetCache","cacheHas","cachePush","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","assocIndexOf","assignInDefaults","objValue","srcValue","objectProto","assignMergeValue","assignValue","baseAssign","copyObject","baseAt","paths","isNil","baseClamp","number","lower","upper","baseClone","isDeep","customizer","initCloneArray","getTag","isFunc","funcTag","genTag","objectTag","argsTag","cloneableTags","initCloneByTag","initCloneObject","copySymbols","stacked","baseForOwn","subValue","baseConforms","baseDelay","FUNC_ERROR_TEXT","baseDifference","includes","isCommon","valuesLength","valuesIndex","baseEvery","baseEach","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isArrayLikeObject","isArguments","baseForIn","baseFor","keysIn","baseForOwnRight","baseForRight","baseFunctions","baseGet","path","isKey","baseToPath","baseHas","getPrototypeOf","baseHasIn","baseInRange","nativeMax","baseIntersection","arrays","caches","seen","baseInvoke","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","isPartial","PARTIAL_COMPARE_FLAG","objIsWrapped","othIsWrapped","equalArrays","equalObjects","baseIsMatch","matchData","noCustomizer","UNORDERED_COMPARE_FLAG","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","nativeKeys","baseKeysIn","baseMap","getMatchData","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","toPlainObject","baseOrderBy","toIteratee","getIteratee","basePick","basePickBy","baseProperty","basePropertyDeep","basePullAll","basePullAllBy","basePullAt","indexes","previous","baseRandom","nativeFloor","nativeRandom","baseRange","nativeCeil","baseSet","nested","baseSlice","baseSome","baseSortedIndex","retHighest","low","HALF_MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","isReflexive","setLow","MAX_ARRAY_INDEX","baseSortedUniq","baseSortedUniqBy","stringToPath","baseUniq","createSet","seenIndex","baseUnset","baseWhile","isDrop","actions","action","baseXor","cloneBuffer","buffer","Ctor","byteLength","Uint8Array","cloneMap","cloneRegExp","regexp","reFlags","cloneSet","cloneSymbol","symbol","symbolValueOf","cloneTypedArray","typedArray","byteOffset","composeArgs","holders","holdersLength","argsIndex","argsLength","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","copyObjectWith","getSymbols","createAggregator","initializer","createAssigner","assigner","rest","guard","isIterateeCall","createBaseEach","iterable","createBaseFor","keysFunc","createBaseWrapper","wrapper","isBind","BIND_FLAG","createCtorWrapper","createCaseFirst","methodName","trailing","createCompounder","words","deburr","thisBinding","baseCreate","createCurryWrapper","arity","createRecurryWrapper","createHybridWrapper","createFlow","funcs","prereq","thru","getFuncName","getData","isLaziable","ARY_FLAG","CURRY_FLAG","PARTIAL_FLAG","REARG_FLAG","plant","partialsRight","holdersRight","argPos","ary","isCurry","isCurryRight","argsHolders","isBindKey","reorder","isFlip","isAry","BIND_KEY_FLAG","CURRY_RIGHT_FLAG","FLIP_FLAG","createOver","arrayFunc","createPadding","chars","strLength","padLength","repeat","createPartialWrapper","createRange","toNumber","wrapFunc","newArgPos","newsHolders","newHoldersRight","newPartials","newPartialsRight","PARTIAL_RIGHT_FLAG","CURRY_BOUND_FLAG","newData","setData","createRound","createWrapper","mergeData","baseSetData","isUnordered","arrValue","othValue","compared","arrayBufferTag","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","mapTag","convert","setTag","symbolTag","objProps","objLength","othProps","skipCtor","objCtor","othCtor","realNames","otherFunc","toPairs","isStrictComparable","getNative","isNative","objectToString","transforms","hasPath","hasFunc","isLength","isString","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","indexKeys","reIsPlainProp","reIsDeepProp","isPrototype","srcBitmask","newBitmask","isCombo","mergeDefaults","oldArray","rePropName","quote","reEscapeChar","toArrayLikeObject","toFunction","chunk","compact","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flatMap","flatten","flattenDeep","fromPairs","pairs","separator","nativeJoin","lastIndexOf","pullAll","pullAllBy","nativeReverse","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","uniq","uniqBy","uniqWith","unzip","group","unzipWith","zipObject","tap","interceptor","wrapperChain","wrapperCommit","wrapperFlatMap","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","findLast","baseEachRight","forEachRight","orderBy","reduceRight","sample","sampleSize","rand","shuffle","some","curry","curryRight","debounce","maxTimeoutId","lastCalled","trailingCall","isCalled","delayed","stamp","maxDelayed","debounced","leading","maxWait","leadingCall","flip","memoize","memoized","Cache","negate","otherArgs","throttle","unary","cloneWith","cloneDeep","cloneDeepWith","gte","propertyIsEnumerable","getLength","isBoolean","isDate","isElement","isEqual","isEqualWith","isError","nativeIsFinite","isInteger","isMatch","isMatchWith","isNumber","reIsNative","funcToString","reIsHostCtor","isNull","objectCtorString","isRegExp","isSafeInteger","isSymbol","typedArrayTags","isUndefined","lte","iteratorSymbol","INFINITY","sign","MAX_INTEGER","remainder","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","NAN","toSafeInteger","symbolToString","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","multiVal","isProto","skipIndexes","propsLength","mapKeys","mapValues","omitBy","pickBy","setWith","toPairsIn","unset","valuesIn","clamp","inRange","freeParseFloat","capitalize","upperFirst","reLatin1","reComboMark","endsWith","reHasUnescapedHtml","reUnescapedHtml","escapeRegExp","reHasRegExpChar","reRegExpChar","pad","padEnd","padStart","radix","nativeParseInt","reHasHexPrefix","limit","startsWith","templateSettings","assignInWith","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reNoMatch","reDelimiters","reInterpolate","reEsTemplate","evaluate","sourceURL","templateCounter","escapeValue","interpolateValue","esTemplateValue","evaluateValue","reUnescapedString","variable","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","attempt","toLower","toUpper","trimEnd","reTrimEnd","trimStart","reTrimStart","DEFAULT_TRUNC_LENGTH","omission","DEFAULT_TRUNC_OMISSION","search","newEnd","unescape","reHasEscapedHtml","reEscapedHtml","reHasComplexWord","reComplexWord","reBasicWord","cond","conforms","constant","matchesProperty","mixin","methodNames","oldDash","nthArg","propertyOf","times","toPath","idCounter","augend","addend","maxBy","mean","sum","minBy","minuend","subtrahend","sumBy","pick","contextProps","arrayProto","Reflect","enumerate","getOwnPropertySymbols","ceil","Set","WeakMap","metaMap","mapCtorString","setCtorString","symbolProto","reEscape","reEvaluate","ctorString","HOT_SPAN","HOT_COUNT","difference","differenceBy","differenceWith","intersection","intersectionBy","intersectionWith","pull","pullAt","union","unionBy","unionWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","groupBy","invokeMap","isProp","keyBy","partition","sortBy","bindKey","overArgs","funcsLength","partialRight","rearg","assign","assignIn","assignWith","defaultsDeep","mergeWith","omit","word","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","bindAll","flow","flowRight","methodOf","over","overEvery","overSome","rangeRight","round","extendWith","eachRight","filtered","isFilter","LAZY_WHILE_FLAG","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","names","commit","weakMapTag","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsQuoteRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsEmoji","rsSymbol","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","&","<",">",""","'","`","objectTypes","function","\\","\n","\r","
","
","freeExports","freeModule","freeGlobal","freeSelf","freeWindow","moduleExports","thisGlobal","tscrl","stringHelperFactory","stringHelper","isAbsoluteUrlRegex","isAbsoluteUrl","constantsFactory","constants","freeze","DEFAULT_VOLUME","SCENE_VIEW_TYPE","THEMEABLE","SOURCE_VIEW_TYPE","IMAGE","VIDEO","AUDIO","SOURCE_VIEW_ROTATE","90","180","270","EMPTY_SOURCE_MIMETYPE","SOURCE_CLASS_NAME","SCENE_CLASS_NAME","MEDIA_EVENTS","TEXT_INPUT_MAX_LENGTH","TITLE_TITLE_PLACEHOLDER_TEXT","DEFAULT_THEME_TEXT_FONT_NAME","DEFAULT_THEME_TEXT_FONT_SIZE","DEFAULT_THEME_TEXT_FONT_WEIGHT","DEFAULT_THEME_TEXT_FONT_COLOR_COMPONENT","DEFAULT_THEME_TEXT_HORIZ_ALIGN","DEFAULT_THEME_TEXT_VERT_ALIGN","DEFAULT_PLAYBACK_RATE","createStyles","stylesCreated","animationKeyframes","animationStyle","styleSheet","requestFrame","raf","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","firstElementChild","contract","lastElementChild","expandChild","scrollWidth","checkTriggers","__resizeLast__","scrollListener","__resizeRAF__","__resizeListeners__","animationstring","keyframeprefix","animationstartevent","domPrefixes","startEvents","pfx","elm","animationName","addResizeListener","removeResizeListener","mediaListTimeRangesFactory","MediaListTimeRanges","sceneViewList","timeRangesName","bufferedLength","sceneView","mediaElement","addMedia","removeMedia","moveMedia","relativeStartIndex","absoluteDuration","totalBufferedRanges","relativeEndIndex","sceneList","themeWrapperFactory","ThemeWrapper","eventEnum","THEME_UPDATED","themeObj","_theme","theme","getThemeForTag","themeTags","themeTagObj","transformProviderFactory","transformProvider","_pixelPerfectRect","_transformProvider","canvasRect","uriBuilderFactory","UriBuilder","_fileResolvers","_basePath","basePath","getUri","canResolvePromises","canResolve","registerFileResolverForMimeTypes","fileResolver","mimeTypeList","registerFileResolver","removeAllFileResolvers","mediaPlaybackDecoratorFactory","MediaPlaybackDecorator","_currentTime","_lastTimeCalled","_captureTime","_hasStartedPlayback","getSceneDuration","dispatchEvent","onTimeUpdate","ended","onAnimationFrame","timestamp","playbackRate","onPlay","seekToTime","paused","startCapturingTime","onPause","seekable","buffered","writable","play","pause","decorate","owenge","mul","sub","grpbeg","grpend","ex","divZero","isNan","invalidArgument","equation","ans","ar","ch","mdas","recurse","prevGrp","formula","clen","answer","compute","n1","n2","applyRule","ops","prevOp","mod","num1","num2","audioNarrationViewFactory","AudioNarrationView","noOpAudioNarrationFactory","volume","metadataReady","loopOnPlay","uriBuilder","_audioElement","_ready","_metadataReadyDeferred","_canPlay","_volume","_loopOnPlay","onCanPlay","preload","loaded","audioError","notifyOnRestart","emptySourceViewFactory","EmptySourceView","_customSceneElementBySceneType","_element","_customElement","viewClassName","customElementConstructor","canPlay","isScalable","canSeekToTime","registerCustomElementForSceneType","ElementConstructor","errorViewFactory","ErrorView","_rootElement","_primaryErrorMessageElement","_secondaryErrorMessageElement","primaryErrorMessage","classList","secondaryErrorMessage","imageViewFactory","ImageView","_imageElement","rotateClass","mediaUri","naturalWidth","naturalHeight","videoViewFactory","VideoView","_videoElement","video","videoWidth","videoHeight","videoError","textCalloutSceneViewObjectFactory","TextCalloutSceneViewObject","sceneViewParent","themeableItem","_viewElement","_editableElement","_titleText","_editMode","_sceneViewParent","_themeWrapper","_themeTag","_isEditing","sceneTrackView","projectView","themeWrapper","maxLength","backgroundColor","onInputBlur","isEditing","onUpdateTheme","eventData","applyTheme","onEnableEditing","bindEvents","unbindEvents","onEditableChange","horizAlign2textAlign","fontWeightString2Value","fontDef","fontWeightString","weight","float2intColor","def2RgbColor","r","def2FontSize","textBoxSize","scaleFactor","calculateEquationAsFloat","def2FontName","handleWidthAndHeight","cleanEqn","parameters2Translation","themeTagParameters","xVal","translation0","yVal","translation1","zVal","translation2","fontTrackingString2letterSpacing","tracking","applyFontStyleToElement","color","fontSize","fontFamily","def2textBoxSize","applyAllCaps","useAllCaps","textTransform","applyVerticalAlignment","vertAlign","font","whiteSpace","textAlign","parameters","fullHeight","computedOffsetY","fullWidth","computedOffsetX","editMode","backgroundSceneViewObjectFactory","BackgroundSceneViewObject","_videoView","right","resource","videoStyle","sceneViewFactory","SceneView","DEFAULT_METADATA","_customSourceViewByMimeType","getSupportedSourceForScene","supportedMimeTypes","numMimeTypes","getSourceView","ViewConstructor","applySceneViewStyles","_audioNarrationView","_sourceView","_boundMediaElement","_sceneViewObjects","_sourceViewMetadata","_sceneViewObjectFactoryMap","_audioNarrationViewOutOfDate","_customSceneView","_isEditMode","_playbackRate","Title","Subtitle","Background","onCustomView","customViewConstructor","removeAudioNarrationViewIfExist","unbindThemeChangeEvents","destroySourceView","unbindResizeListener","unbindSceneEvents","sceneViewObject","onSceneTypeChange","onSourceChange","createThemeableObjectViews","bindSceneEvents","bindThemeChangeEvents","onAudioNarrationChange","onMediaEvent","stretchSourceToContainer","sourceAspect","sceneAspect","sourceElement","handleSourceMetadata","sourceView","readyPromise","unbindMediaEvents","bindMediaEvents","attachSourceView","bindResizeListener","sourceIsImageAndAudioNarrationElementExists","onMediaRestartEvent","delayAudioNarrationViewChange","setPlaybackRate","viewObject","themeableObj","sceneViewObjFactory","themeTagSuffix","sceneViewObj","addSceneViewObject","onThemeObjModelChange","availableToPreview","setEditMode","isEditMode","minSeekTime","maxSeekTime","registerSourceViewForMimeTypes","sceneTrackViewFactory","SceneTrackView","_paused","_sceneViews","_currentSceneView","_currentSceneIndex","_currentTrackTime","_currentSceneTime","_sceneTrackViewPreviewDuration","_waitingForData","_bufferedMediaListTimeRanges","_seekableMediaListTimeRanges","_seamlessScenePlayback","_activeViewClassName","_projectView","_processingSceneTrackEvent","_sceneTrackEventQueue","removeAllPersistentBindings","unbindPersistentSceneEvents","removeAllElementsOnRoot","deactivateScene","activateScene","findNextSceneViewToPreview","startIndex","seekCurrentViewToTime","calculateTrackSceneCurrentTime","setCurrentSceneIndex","sceneIndex","lastSceneIndex","previousSceneIndex","currentSceneIndex","onSceneViewDurationChange","calculatePreviewSceneTrackDuration","displaySceneView","seekTime","redrawCurrentSceneView","onMediaTimeUpdate","onMediaEnded","nextPreviewSceneIndex","bufferEventHandling","onThemeDefPropertyChange","bindPersistentSceneEvents","addSceneViewElementToRoot","sceneViewElement","nextIndex","addSceneViewToTimeRanges","activateAdjacentSceneViewByIndex","adjacentIndex","addSceneView","createSceneView","addedSceneView","processNextSceneTrackEvent","removeSceneView","moveSceneView","createSceneViews","sceneViewReadyPromises","sceneViewMetaDataPromises","seekByTrackTime","sceneDuration","onSceneTrackEvent","onSeamlessScenePlaybackChange","setSceneViewsPlaybackRate","seekBySceneTime","needToRestartSceneTrack","nextSceneWithDuration","sceneViews","currentSceneView","upperBoundDuration","currentSceneTime","currentSceneDuration","waitingForData","valueAsFloat","seamlessScenePlayback","getCurrentSceneDuration","applyTransform","scaledTransform","resizedTransform","scaledTransformCss","translation","resizeTransform","seekToSceneAtIndex","redrawCurrentScene","projectViewFactory","ProjectView","_sceneTrackView","_mediaLibProject","_uriBuilder","numValue","canvasNeedsResizing","transformProjectView","parentElement","rect","currentWidth","currentHeight","canvas","scaleWidth","scaleHeight","scaledTraslation","transformScaled","transformResized","defaultSettingsRegistryFactory","tinycolor","rgb","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","mathRound","_format","format","_gradientType","gradientType","_ok","_tc_id","tinyCounter","stringInputToObject","rgbToRgb","convertToPercentage","hsvToRgb","hslToRgb","boundAlpha","mathMin","mathMax","bound01","rgbToHsl","hue2rgb","q","rgbToHsv","math","rgbToHex","allow3Char","hex","pad2","rgbaToHex","convertDecimalToHex","desaturate","amount","hsl","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","slices","part","monochromatic","hsv","toHsv","modification","flipped","isOnePointZero","processPercent","isPercentage","parseIntFromHex","convertHexToDecimal","trimLeft","trimRight","named","rgba","hsla","hsva","hex8","hex6","hex3","validateWCAG2Parms","parms","mathRandom","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","R","G","B","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","needsAlphaFormat","_applyModification","_applyCombination","fromRatio","newColor","equals","color1","color2","mix","w1","rgb1","rgb2","w2","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","a0","b1","tscme","decoratorFunctions","nullCaptionText","plainText","markupText","Caption","_startTime","_horizontalAlignment","_verticalAlignment","_file","_image","_imageIndex","_imageOffset","_imageRectangle","_captionTextList","_activeLanguageIdentifier","LanguageIdentifier","languageIdentifiers","identifiers","default","_additionalParamProperties","_xmlUtility","NamespaceXmlUtility","Xmp","namespaceResolver","getAvailableLanguages","captionText","languageIdentifier","setStartTime","UndoAction","addOrReplaceCaptionText","newCaptionItem","existingCaptionItemIndex","captionItem","oldCaptionItem","removeCaptionText","removedCaptionItems","captionTextItem","removedCaptionItem","setHorizontalAlignment","horizontalAlignment","setVerticalAlignment","verticalAlignment","setFile","setImage","setImageIndex","imageIndex","setImageOffset","imageOffset","setImageRectangle","imageRectangle","toXmp","treeDesc","atts","xmpDM:startTime","xmpDM:duration","tscDM:halign","tscDM:valign","tscDM:file","tscDM:image","tscDM:imageindex","tscDM:imageoffset","tscDM:imagerect","createElementFromObject","getCaptionText","preferredCaptionText","language","endTime","captionTextList","activeLanguageIdentifier","toPOJO","pojo","ImageRectangle","createFromXmpElement","captionElement","captionTextElements","getElementsByTagNameNSPrefix","CaptionText","registerDecorator","decorator","clearDecorators","CaptionCollection","_captions","_captionLanguages","addCaptionFromLanguageCodeCache","removeCaptionFromLanguageCodeCache","addCaption","removeCaption","noOp","setCaptions","captions","captionsClone","setActiveLanguageIdentifier","languageIdentifierString","isSupportedLanguage","previousActiveLanguageIdentifierString","getActiveLanguageIdentifier","validateParams","_text","_plainText","_markupText","_languageIdentifier","setLanguageIdentifier","previousLanguageIdentifierString","setText","Rtf","toText","toHtml","xml:lang","textElement","rtfText","getElementText","CaptionTrack","_defaults","fgColor","bgColor","_fgColor","_bgColor","_fontFamily","_fontSize","parseFontSize","_position","_barHeight","barHeight","_captionCollection","xmpDM:trackType","xmpDM:frameRate","xmpDM:trackName","stFnt:fontFamily","tscDM:fontSize","tscDM:bgOpacity","tscDM:position","tscDM:captionbarheight","attsFromColor","xmpG:red","xmpG:green","xmpG:blue","xmpG:mode","tinycolorToSimpleRgb","tinycolorObj","rgbaColorObj","fgHexColor","bgOpacity","bgHexColor","bgRGBACssColor","captionCollection","getRGBColor","defaultFontSize","parsedFontSize","captionTrackElement","captionTrack","fgColorElement","getFirstElementByTagNameNSPrefix","bgColorElement","captionElements","_identifier","_language","_region","parseLanguageIdentifier","languageIdentifierParts","region","_identifiers","af","displayName","regions","za","sq","al","dz","bh","eg","iq","jo","kw","lb","ly","ma","om","qa","sa","sy","tn","ae","ye","hy","am","cy-az","az","lt-az","eu","es","be","by","bg","ca","zh","cn","hk","mo","sg","tw","chs","cht","hr","cs","cz","da","dk","mv","nl","en","au","bz","cb","jm","nz","ph","tt","gb","us","zw","et","ee","fo","fa","ir","fi","fr","lu","mc","gl","ka","ge","de","li","gr","gu","in","he","il","hi","hu","it","ja","jp","kn","kk","kz","kok","ko","kr","ky","lv","mk","bn","my","mr","mn","nb","no","nn","pl","pt","br","pa","ro","ru","cy-sr","sp","lt-sr","sk","sl","si","bo","cl","co","cr","do","ec","sv","hn","mx","ni","py","pe","pr","uy","ve","sw","ke","se","syr","ta","te","uk","ua","ur","pk","cy-uz","uz","lt-uz","vi","vn","TAG_BEGIN_NOTATION","TAG_CLOSE_NOTATION","TAG_END_NOTATION","TAG_SPACE","LOWER_CASE_A_CHAR_CODE","LOWER_CASE_Z_CHAR_CODE","isBlacklistedTag","strTag","LINE_BREAK","findNextTag","strTextToSearch","nStartPoint","nPosition","nCode","charCodeAt","getTagAt","strText","nTagPosition","nEnd","nLength","findNextTagNotBlacklisted","getTextToCloseTag","arrStack","strCloseTags","arrOpenTags","strCloseTagNeeded","matchingTag","strOpenTagNeeded","isClosingTag","strToMatch","strMatch","removeTag","strToFix","nTagEnd","trimString","nestTags","arrTagStack","removeEmptyTags","strFixed","nCountCorrectedThisLoop","nNextPosition","strAlternateTag","strNextTag","nStringBetweenBegin","strBetween","removeLastBracket","undoFunc","undoParams","redoFunc","redoParams","NoOpAction","parseXml","canParseHtmlNatively","DOMParser_proto","real_parseFromString","markup","first_elt","implementation","createHTMLDocument","doc_elt","childElementCount","localName","xmlStr","xmlDoc","xmlDocFragmentToString","xmlSerializer","XMLSerializer","serializeToString","xmlDocToString","hasAttribute","attributeName","attrValue","hasAttributeWithValue","createDocument","xmlDocument","createElementWithValue","childElements","getElementsByTagNameNS","getFirstElementByTagName","getFirstChildElementTextByTagName","childElement","XmlUtility","isDocument","docOrElement","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","tagName","getFirstChildElementTextByTagNameNSPrefix","createDocumentNS","createElementNS","createElementNSWithValue","getNSInfo","nameParts","nsUrl","nsPrefix","tagShortName","tagInfo","nsInfo","newElement","attrVal","attrName","attNsInfo","setAttributeNS","toSeconds","t_in","nextNonEmptyLine","linesArray","lastNonEmptyLine","readCaptionsFromString","timeDelimiter","hasIdRow","endIndex","timeSplitRegex","SSATagRegex","lessThanRegex","greaterThanRegex","newlinePlaceholderRegex","padWithZero","inputNumber","formatMillisecondsToTimeCode","inputMilliseconds","date","hoursPaddingIsSet","hoursPadding","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","rawMilliseconds","getUTCMilliseconds","milliseconds","millisecondDelimiter","captionsToString","captionToString","output","isBeginningOfString","oneBasedIndex","baseNewlineParser","readCaptionsFromStringWithIdRow","trimLeadingDot","extension","_parsers","registerParser","supportedExtensions","parserCreator","extensions","resolveParser","captionParsers","register","resolveByExtension","nonBreakingSpace","getSyncTagText","textElements","elementsText","parseSyncTagToCaption","createParams","assignCaptionDurationsByFillingCaptionStartTimeGaps","currentCaption","nextCaption","defaultDuration","removeHtmlComments","cssColorToRGB","cssColorValue","parseStyle","fontSizeNoDescriptorRegex","styleElement","sheet","cssRules","getCaptionTrackCreateParams","styleElements","captionStyle","selectorText","syncElements","createCaptionTrackParams","parseSyncTagToCaptionWithHorizontalAlignment","getTextAlignment","textAlignments","alignments","alignment","allAlignments","samiCaptionHeader","samiCaptionFooter","isLastCaption","deserialize","sbvTimeDelimiter","srtTimeDelimiter","captionString","srtEndOfFileMarker","parseChildren","timeOffset","newOffset","currNode","currRegion","getNodeRegion","retVal","parseNode","defaultTo","rWhitespace","rLineBreak","MAX_VALUE","subtitle","toTimelineSeconds","timeStr","framerate","digitPairs","lastPair","firstPair","frameInfo","frameTime","validTimeFormat","errorMessage","getMetricIndex","getMultipler","metric","returnData","rBreakTag","ttmlHeader","ttmlFooter","parseCueHeader","lineSegments","rToken","vttTimeDelimiter","skipWhitespace","skipNonWhitespace","skipToCueHeader","newlineRegex","breakTagRegex","BoundingPoly","coordinatesString","_coordinates","createCoordinate","coordinateString","coordinateTokens","coordinates","toXmpAtt","coord","ContentList","_items","items","item","xmpDM:name","xmpDM:value","parseContentListItems","contentListItemElements","itemElement","contentListElement","getXmlUtility","Controller","_name","_parameters","_controllerTextItems","controllerTextItems","localizedTextTree","xmp:label","label","localizedTexts","localizedText","parseParameter","parameterElement","parseParameters","parametersElement","parameterElements","parseLocalizedTextItem","parseControllerText","controllerTextItemElement","parseControllerTextItems","controllerTextElement","controllerTextElements","controllerElement","descriptionElement","Hotspot","_label","_boundingPoly","_rotate","_pause","_jumpTime","_location","_newWindow","_jumpFile","boundingPoly","jumpTime","newWindow","jumpFile","xmpDM:label","tscDM:boundingPoly","tscDM:rotate","tscHS:pause","tscHS:jumpTime","tscHS:jumpFile","xmpDM:location","tscHS:newWindow","hotspotElement","HotspotTrack","_hotspots","hotspots","hotspotTrackElement","hotspotTrack","hotspotElements","propertyInfo","_x","_y","Answer","_orderId","orderId","tscIQ:orderId","answerElement","answerText","Feedback","_reason","_jumpToTime","jumpToTime","tscIQ:reason","tscIQ:jumpToTime","tscIQ:location","feedbackElement","feedbackText","Question","_correctAnswer","_answers","_feedback","correctAnswer","answers","feedback","tscIQ:id","tscIQ:type","questionElement","correctAnswerText","descriptionElements","answerElements","feedbackElements","QuestionSet","_questions","questions","tscIQ:questionSetName","tscIQ:feedback","questionSetElement","questionElements","QuizTrack","_quizGuid","_authoredEmail","_requireUserId","_locale","_reportMethod","_clientId","_quizHash","_hideReplay","_allowSkipQuiz","_questionSets","quizGuid","authoredEmail","requireUserId","locale","reportMethod","clientId","quizHash","hideReplay","allowSkipQuiz","questionSets","tscIQ:clientId","tscIQ:quizHash","tscIQ:quizGuid","tscIQ:authoredEmail","tscIQ:requireUserId","tscIQ:locale","tscIQ:reportMethod","tscIQ:hideReplay","tscIQ:allowSkipQuiz","quizParametersElement","xmlUtility","quizTrackElement","quizTrack","questionSetElements","ScreenTextMarker","_tableOfContentsEntry","tableOfContentsEntry","tscDM:tocEntry","screenTextMarkerElement","ScreenTextTrack","_markers","markers","screenTextTrackElement","screenTextTrack","markerElements","SpeechMarker","_probability","probability","xmpDM:probability","speechMarkerElement","SpeechTrack","speechTrackElement","speechTrack","TableOfContentsItem","tableOfContentsItemElement","TableOfContentsTrack","tscDM:tocCellLayout","cellLayout","tableOfContentsTrackElement","tableOfContentsTrack","tableOfContentsItemElements","_ns","rdf","dc","exif","stDim","stFnt","tsc","tscDM","tscHS","tscIQ","xmp","xmpDM","xmpG","xmpMM","_namespaceResolver","xmpXml","_date","_creator","_presenterEmail","_source","_about","_keywords","_thumbnail","_firstFrame","_originId","_iPodExplicit","_documentId","_videoFrameSize","_captionTrack","_hotspotTrack","_tableOfContentsTrack","_quizTrack","_speechTrack","_screenTextTrack","_controller","_contentList","_languages","_containsTocThumbnails","_containsToc","_containsCaptions","_containsHotspots","_containsQuiz","_containsQuizQuestions","_containsScreenText","_containsSpeechText","tracksContainer","track","tsc:version","dc:title","tscDM:presenteremail","dc:source","dc:date","rdf:about","dc:creator","dc:description","tscDM:keywords","tscDM:thumbnail","tscDM:firstFrame","tscDM:project","tscDM:originId","tscDM:iPodExplicit","xmpMM:DocumentID","langName","langValue","stDim:unit","stDim:w","stDim:h","xmpDM:scale","nsElement","rdfElement","creator","presenterEmail","about","keywords","thumbnail","firstFrame","originId","iPodExplicit","documentId","videoFrameSize","tocThumbnailImageSrc","containsTocThumbnails","containsToc","containsCaptions","containsHotspots","containsQuiz","containsQuizQuestions","containsScreenText","containsSpeechText","controller","contentList","parseLanguageName","languageNameElement","parseLanguages","langNameElement","languageNameElements","languageNames","parseProductionDetails","rootDescriptionElement","videoFrameSizeElement","durationElement","getElementForTrackType","trackType","parseCaptionTrack","tracksDescriptionElements","parseHotspotTrack","parseTableOfContentsTrack","parseQuizTrack","parseSpeechTrack","parseScreenTextTrack","parseTracks","tracksElement","recordXmpContentFlags","languages","PointerEventsPolyfill","inType","inDict","createEvent","initEvent","bubbles","cancelable","MOUSE_PROPS","MOUSE_DEFAULTS","buttons","pressure","pointerId","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","SparseArrayMap","Installer","changed","binder","addCallback","removeCallback","changedCallback","MO","observer","mutationWatcher","shadowSelector","rule","applyAttributeStyles","hasNativePE","attrib2css","hasShadowRoot","applyPolyfill","msPointerEnabled","tp","msMaxTouchPoints","defineProperty","enumerable","dispatcher","registerSource","msEvents","mouseEvents","ontouchstart","touchEvents","assertActive","pointermap","assertConnected","inActiveButtonState","applyPolyfill$1","Element","setPointerCapture","releasePointerCapture","hasPointerCapture","USE_MAP","PointerMap","k","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","pointerover","pointerout","HAS_SVG_INSTANCE","SVGElementInstance","eventMap","captureInfo","eventSources","eventSourceList","newEvents","unregister","contained","down","inEvent","fireEvent","up","leave","leaveOut","propagate","enterOver","eventHandler","_handledByPE","listen","addEvent","unlisten","boundHandler","makeEvent","_target","cloneEvent","eventCopy","correspondingUseElement","getTarget","capture","propagateDown","setCapture","inPointerId","inTarget","skipDispatch","releaseCapture","implicitRelease","asyncDispatchEvent","targeting","shadow","inEl","shadowRoot","webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","olderShadow","os","olderShadowRoot","querySelector","allShadows","shadows","searchRoot","inRoot","st","sr","ssr","owner","Node","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","findTarget","MutationObserver","WebKitMutationObserver","SELECTOR","OBSERVER_INIT","subtree","childList","attributeOldValue","attributeFilter","watchSubtree","observe","enableOnSubtree","installOnLoad","installNewSubtree","findElements","addElement","removeElement","elementChanged","oldValue","concatLists","accum","ELEMENT_NODE","flattenMutationTree","inNodes","tree","mutations","mutationHandler","added","addedNodes","removed","removedNodes","MSPointerEvent","ShadowDOMPolyfill","createShadowRoot","DEDUP_DIST","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx","dy","prepareEvent","pd","prepareButtonsForMove","mousedown","mousemove","mouseover","mouseout","deactivateMouse","pointermap$1","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATTRIB","elementAdded","touchActionToScrollType","_scrollType","elementRemoved","oldSt","scrollTypes","EMITTER","XSCROLLER","YSCROLLER","SCROLLER","touchAction","firstTouch","isPrimaryTouch","inTouch","setPrimaryTouch","firstXY","X","Y","scrolling","cancelResetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount","resetId","typeToButtons","touchToPointer","cte","currentTouchEvent","detail","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","webkitForce","altKey","ctrlKey","shiftKey","processTouches","inFunction","tl","changedTouches","shouldScroll","scrollAxis","oa","doa","findTouch","inTL","inId","vacuumTouches","cancelOut","touchstart","dedupSynthMouse","overDown","outTarget","touchmove","touchcancel","moveOverOut","pointer","outEvent","touchend","upOut","cleanUpPointer","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","msSetPointerCapture","msReleasePointerCapture","pointerevents","targetFinding","simulateMouseEvent","simulatedType","simulatedEvent","initMouseEvent","screenX","screenY","touchHandled","mouseProto","_touchStart","_touchMoved","_touchMove","_touchEnd","TSC","windowWrapper","getLocationHref","getLocation","features","documentWrapperFactory","documentWrapper","getDocument","_registeredExceptionListeners","_registeredMessageListeners","removeValueFromArray","logException","logMessage","listener","throwError","removeAllEventListeners","themeNames","DAWN","DUSK","statusCodes","UnprocessableEntity","messageBarType","warning","timeFormatterDefinition","timeFormatter","padIfNecessary","formatTime","totalSeconds","hoursPlace","secondsWithoutHours","minutesPlace","secondsPlace","youtubeIdParserDefinition","youtubeIdParser","getIdFromUrl","videoUrl","videoIdRegex","videoIdMatch","localStorageWrapperDefinition","localStorageWrapper","setItem","localStorage","getItem","performanceWrapperDefinition","performanceWrapper","MEASURE_NOT_FOUND_VALUE","_performanceApiSupported","performance","mark","measure","getEntriesByType","getMeasureDuration","measureName","measureDuration","measures","createMarker","markerName","createMeasure","startMark","endMark","getRumEventData","measureNames","rumData","CustomEvent","evt","initCustomEvent","depth0","stack1","helper","accessBtnAudioDescription","audioDescriptionIndex","audioDescriptionTrackSrc","playButtonIndex","playIndex","accessBtnClickToPlay","replayButtonIndex","replayIndex","accessBtnClickToReplay","accessBtnClosedCaption","closedCaptionIndex","program1","depth1","placeHolderImg","answerIndex","isChecked","program2","questionText","inputId","inputLabel","inputName","userResponse","useAutofocus","accessBtnFullScreen","fullscreenIndex","hotspotScreenReaderAlertText","hotspotContainerWidth","hotspotContainerHeight","hotspotIndex","displayHotspotsShape","hotspotDescriptionId","hotspotDescription","hotspotLinkClassName","hotspotCoordinatesSeparationBySpace","hotspotsContainerId","videoWrapperIndex","videoTagUniqueId","clickToTakeTheQuiz","loaderImg","loaderAltText","primaryActionButtonText","messageText","accessBtnPip","pipButtonIndex","accessBtnRewind","rewindIndex","accessBtnPlay","preRollSizeClass","preRollSrc","accessBtnPrevious","previousIndex","accessBtnNext","progressIndex","accessBtnProgressBar","currentQuestionNumber","prepositionText","totalQuestions","alertText","reviewText","confirmationText","numberCorrect","percentCorrect","numberInCorrect","percentInCorrect","reviewAnswerText","continueText","questionSetResultsTabIndex","txtAnswersSubmitted","gradeableDetails","unGradeableDetails","txtViewAnswers","txtHideAnswers","submittingImg","submittingImgAltText","previousButtonName","nextButtonName","submitButtonName","continueButtonName","correctTextString","incorrectTextString","setupMessage","enterName1","name1Class","enterName2","name2Class","enterEmail","beginButtonText","skipControlText","rateValue","rateLabel","program4","ccLanguageText","ccLanguageSettingIndex","ccLanguages","program5","languageValue","languageLabel","accessBtnSettings","settingsIndex","playerRateText","speedSettingIndex","playbackRates","hasMultipleLanguages","accessBtnTableOfContents","tocIndex","program3","program7","tocItemText","showText","centerContent","dataTocTime","dataFileText","tocItemRawText","tocItemIndex","showThumbnail","searchLabel","msgSearch","tocSearchIndex","accessBtnClearSearch","tocEraseIndex","msgSearchIsDisabledInFS","accessBtnVolume","volumeIndex","smartPlayerPreRollEventConstants","PRE_ROLL_STARTED","PRE_ROLL_FINISHED","PRE_ROLL_FINISHED_ACTIONS","REMOVE_NOW","templates","preRollView","_preRollTemplate","pre_roll_container_template","render","preRollController","_onPreRollStartedCallback","$preRollView","$window","preRollMessage","smartPlayerEventName","destroyView","onIFrameContentLoaded","createView","onPreRollStartedCallback","viewExists","externalMessageController","registeredEvents","listeningToWindowMessageEvent","onExternalMessage","addWindowMessageListener","removeWindowMessageListener","callbackFunction","removeAllCallbacks","languageCodes","_english","_german","_japanese","_french","_spanish","_chinese","_supportedLanguages","ENGLISH","GERMAN","JAPANESE","FRENCH","SPANISH","CHINESE","ENU","DEU","JPN","FRA","SP","ZH","supportedLanguage","hotspotViewStateFactory","hotspotViewState","firstVisible","endActionTypeConstantsFactory","endActionType","notAvailable","loop","jumpToTimeAndPlay","jumpToTImeAndStop","showReplayControls","hideReplayControls","openUrl","openUrlInNewWindow","questionGrader","FATHOM","XMP","mediaType","WEBM","MP4","OGG","YOUTUBE","JPG","PNG","GIF","TSCPROJ","PLAYLIST","UNKNOWN","NOT_AVAILABLE","MULTIPLE_TYPES","cssClassesFactory","cssClasses","_smartPlayerNamespace","_largerProgressBar","_disabled","_hide","_fullscreenMode","_volumeMutedButtonGlyph","_volumeLowButtonGlyph","_volumeMediumButtonGlyph","_volumeHighButtonGlyph","_playButtonGlyph","_pauseButtonGlyph","_fullscreenButtonGlyph","_fullscreenButtonActiveGlyph","_fullFrameButtonGlyph","_fullFrameButtonActiveGlyph","_expandButtonActiveGlyph","_audioDescriptionButtonGlyph","_audioDescriptionButtonActiveGlyph","_closedCaptionButtonGlyph","_closedCaptionNonEnglishButtonGlyph","_closedCaptionButtonActiveGlyph","_closedCaptionNonEnglishButtonActiveGlyph","_tocButtonGlyph","_tocButtonActiveGlyph","_settingsButtonGlyph","_settingsButtonActiveGlyph","_tertiaryButton","_tertiaryButtonActive","_generatedPluginContainer","_pluginNamedContainerPrefix","_hotspotVisible","_screenReaderAlert","smartPlayerNamespace","largerProgressBar","fullscreenMode","volumeMutedButtonGlyph","volumeLowButtonGlyph","volumeMediumButtonGlyph","volumeHighButtonGlyph","playButtonGlyph","pauseButtonGlyph","fullscreenButtonGlyph","fullscreenButtonActiveGlyph","fullFrameButtonGlyph","fullFrameButtonActiveGlyph","expandButtonGlyph","audioDescriptionButtonGlyph","audioDescriptionButtonActiveGlyph","closedCaptionButtonGlyph","closedCaptionNonEnglishButtonGlyph","closedCaptionButtonActiveGlyph","closedCaptionNonEnglishButtonActiveGlyph","tocButtonGlyph","tocButtonActiveGlyph","settingsButtonGlyph","settingsButtonActiveGlyph","tertiaryButton","tertiaryButtonActive","generatedPluginContainer","pluginNamedContainerPrefix","hotspotVisible","screenReaderAlert","_videoStartInitiated","_videoStart","_mediaReady","_captionChange","_videoPlay","_playerFullScreenModeChanged","_playerRumData","_clickPrevControl","_clickNextControl","_fullScreenChange","_expandVideo","_clickLoadAndPlayControl","_clickPlayControl","_showToc","_hideToc","_disableControls","_enableControls","_controlsUpdated","_pipChanged","_playMedia","_pauseMedia","_seekMediaToTime","_replayMedia","_endMedia","_enterFullFrame","_exitFullFrame","_updateQuizMarkers","_updatePlayProgress","_updateLoadProgress","_updateNextQuestionPos","_startedScrubbing","_endedScrubbing","_quizPaused","_quizComplete","_quizReview","_quizBegin","_quizBeginClicked","_quizSkip","_quizSkipClicked","_quizError","_quizStatus","_quizSubmittingInstance","_quizSubmitted","_quizShowSubmissionRetryMessage","_quizHideSubmissionRetryMessage","_quizHideLoadingMessage","_transitionImageQuizToAnswers","_hideQuiz","_showQuizBar","_closeQuestionSetView","_submitQuestionSet","_rationaleActionLocation","_rationaleActionJumpToTime","_quizIsOutOfDate","_captionsChanged","_captionsLanguageChanged","_audioDescriptionChanged","_audioDescriptionFailed","_hotspotPaused","_hotspotResume","_hotspotClicked","_hotspotAreaActive","_hotspotAreaInactive","_smartPlayerInitialized","_smartPlayerLoaded","_videoMetadataLoaded","_videoLoadeData","_videoCanPlay","_pluginAdded","External","VideoStartInitiated","VideoStart","MediaReady","CaptionChange","Ready","VideoPlay","PlayerFullScreenModeChanged","PlayerRumData","Controls","ClickPrev","ClickNext","FullScreenChange","ExpandVideo","LoadAndPlayControl","PlayControl","ShowToc","HideToc","Disable","Enable","Updated","HotspotClicked","PipChanged","Hotspots","Paused","Resume","AreaActive","AreaInactive","Media","Play","Pause","SeekToTime","Replay","End","IFrame","EnterFullFrame","ExitFullFrame","Update","QuizMarkers","PlayProgress","LoadProgress","NextQuestionPosition","Scrubbing","Started","Ended","Quizzing","Complete","Review","Begin","BeginClicked","Skip","SkipClicked","Status","SubmittingInstance","Submitted","ShowSubmissionRetryMessage","HideSubmissionRetryMessage","HideLoadingMessage","TransitionImageQuizToAnswers","HideQuiz","ShowQuizBar","CloseQuestionSetView","SubmitQuestionSet","RationaleActionLocation","RationaleActionJumpToTime","QuizIsOutOfDate","Captions","Changed","LanguageChanged","AudioDescription","Failed","Timing","PlayerInitialized","PlayerLoaded","VideoMetadataLoaded","VideoLoadedData","VideoCanPlay","Plugin","Added","mouseButtonsFactory","mouseButtons","mainButton","auxiliaryButton","secondaryButton","scormConstantsFactory","scormConstants","initialize","terminate","getValue","setValue","getLastError","getErrorString","getDiagnostic","dataModelID","cmiExit","cmiLocation","cmiSuspendData","cmiProgressMeasure","cmiScaledPassingScore","cmiScoreMin","cmiScoreMax","cmiScoreRaw","cmiScoreScaled","cmiSuccessStatus","cmiCompletionStatus","scorm1Dot2DataModel","scorm2004DataModel","incomplete","notAttempted","unknown","passed","failed","browsed","exitStates","suspend","versions","NOT_DETECTED","SCORM_1_2","SCORM_2004","tabIndexFactory","Disabled","VideoWrapper","QuestionReviewText","HotspotView","InitialPlay","Progress","Rewind","Previous","Next","Volume","VolumeSlider","ClosedCaption","TOC","TOCSearch","TOCErase","TOCItem","Settings","SpeedSetting","CCLanguageSetting","Pip","Fullscreen","EndReplay","rationaleActionTypeFactory","rationaleActionType","CONTINUE","LOCATION","JUMP_TO_TIME","localizationStringsFactory","localizationStrings","_playerStringsExport","_prepositionText","playerStrings","xmpError","xmpSecurity","videoNotSupported","noWebMSupport","searchPlaceholder","playerRateOptionsText","0.25","0.5","0.75","1.25","1.5","1.75","searchDisabledFullScreen","mediaNotFound","videoLoading","playWithSmartPlayer","playVideoOnly","openWithSmartPlayer","openSmartPlayerAppStore","txtRequiredMessage","txtSkip","txtBegin","txtEnterFirstName","txtEnterLastName","txtEnterEmail","txtHotspot","txtHotspotScreenReaderAlert","txtHotspotScreenReaderAlertPlural","txtJumpToMedia","txtJumpToTime","txtOpenLink","txtReview","txtAnswerQuestion","txtPrev","txtNext","txtSubmit","txtSubmittingAnswers","txtContinue","txtReviewAnswer","txtBadImageQuiz","txtVideoQuizNetworkErrorMessage","txtImageQuizNetworkErrorMessage","txtQuizErrorMessage","txtQuizOutOfDateMessage","txtQuizOutOfDateRefreshButtonText","txtLoaderMessageDefinition","txtQuestionCount","txtResults","txtCorrectString","txtIncorrectString","txtCorrect","txtIncorrect","txtYourAnswer","txtCorrectAnswer","accessTxtVolume","accessBtnFullScreenExpand","accessBtnTakeQuiz","accessBtnShowQuiz","accessBtnHideQuiz","accessBtnShowAnswer","accessBtnHideAnswer","accessBtnAnswersSubmitted","accessBtnWereNotGraded","accessBtnWasNotGraded","accessBtnCorrectOutOf","accessBtnGradedQuestions","accessBtnClickToReplayLink","scormApiNotFoundMessage","accessListTableOfContents","accessListSearchResults","accessListNoSearchResults","accessQuestionSetConfirmationTitle","accessVideoPausedForQuiz","accessQuizResults","setLanguage","getLanguage","getLanguageNameFromIdentifierString","setString","stringLabel","stringValue","getQuestionCountPreposition","configureLanguageFromXmp","controllerParameters","controllerParameter","configureCustomStringsFromXmp","quizParameters","quizParameter","configureFromXmp","createStringExportObject","strings","keysFactory","_keyTypes","space","leftArrow","upArrow","rightArrow","downArrow","tab","tableOfContents","isKeyOfType","isKeyOfLanguageSpecificType","isKeyOfEnglishSpecificType","isKeyOfGermanSpecificType","isKeyOfJapaneseSpecificType","keyTypes","iOSTextInputFix","_domEl","_onBugCallback","_bodyEl","_deleteKeyCode","_expectedCharCount","_bugExecutionCount","keyUpHandler","currentTextValue","inputDiff","textAreaElClone","setOnBugCallback","watch","domEl","ieFullscreenDimensionsFixDefinition","ieFullscreenDimensionsFix","_$body","_original","hMargin","$el","vMargin","hPadding","vPadding","hBorder","vBorder","$container","isIEFullscreenDimensionsBugInEffect","msFullscreenElement","includeMargin","playerType","HTML5_VIDEO","NOT_SUPPORTED","mediaMimeType","M3U","OGV","JPEG","deviceInfo","_supportsHTML5","_supportsMP4","_supportOgg","_supportWebM","_isIE","_isEdge","_ieVersion","_safariMajorVersion","_iOSVersion","_isFirefox","_isChrome","_isIPad","_isIPhone","_isIPod","_isIOS","_isAndroid","_isSafari","_isRetinaDisplay","_isSmallScreen","checkLocationProtocol","protocol","getIOSVersion","platform","appVersion","lookAtDevice","detect","canPlayType","appName","iOSChromeMatchExp","re","matchExp","safariVersion","screen","availWidth","availHeight","devicePixelRatio","isSmallScreen","isRetinaDisplay","isIPad","isIPhoneOrIPod","isIOS","isIE","isEdge","getIEVersion","getSafariMajorVersion","getIOSMajorVersion","getIOSSupportsInlineVideo","isFirefox","isChrome","isSafari","isAndroid","canPlayHTML5Video","canPlayMP4","canPlayOgg","canPlayWebM","isTouchInterface","isTouchIEInterface","getFullScreenChangeEventNames","requiresManualPreload","supportsFullScreen","fullscreenEnabled","webkitFullscreenEnabled","msFullscreenEnabled","mozFullScreenEnabled","mediaLocation","baseindex","basex","encodeURI","urlServiceFactory","urlService","ensureUrlHasValidScheme","isUrlAbsolute","generateQueryStringWithExtraParam","windowLocation","kvp","query","generateCurrentUrlWithExtraQueryParam","paramName","paramValue","port","hostname","pathname","backoffStrategyFactoryDefinition","BackoffStrategyFactory","DEFAULT_RETRY_LIMIT","DEFAULT_BACKOFF","DEFAULT_MAX_DELAY_BETWEEN_RETRIES","BackoffStrategy","retryLimit","backoffTime","maxDelay","tries","backoff","BackoffStrategyWithUnlimitedRetries","createWithUnlimitedRetries","httpServiceDefinition","HttpService","REQUEST_TIMEOUT","NO_RETRY_STATUS_CODES","retryStrategyFactory","logFailures","request","errorString","stringify","sendFormDataPost","sendRequest","canRetryFromStatusCode","httpVerb","retryStrategy","retries","retryResponse","xmpFactory","playerConfiguration","_xmpSrc","_posterImageSrc","_tocSpriteSrc","_googleAnalyticsID","_customEventCallback","_techSmithAccessTokenEndpoint","_fathomId","_embedIFrameId","_preRollSrc","_webConnector","_mediaSources","_mediaRotation","_endActionType","_endActionParam","_ignoreXmpControllerParameters","_ignoreQuizQuestions","_isSearchable","_autoPlayMedia","_allowRewind","_captionsEnabled","_ignoreStoredCaptionVisibleSetting","_sidebarEnabled","_sidebarLocation","_backgroundColor","_useUnicode","_autoHideControls","_reportScormComplete","_isScormLesson","_enforceLinearAssessment","_disableFullframeMode","_disableYouTubeControls","_disableYouTubeFullscreen","_disablePictureInPicture","_mobileWebViewCanAutoPlay","_gaPageViewTrack","_gaEventTrack","_customEventTracking","_altEventCategoryAsFilename","_altLoadTimeAsSeconds","_isUserIdentified","_additionalAppQueryString","_useSlimAppSplashScreen","_showYouTubeAnnotations","_contentType","_preloadOptions","_preload","_fullViewPort","_contentBasePath","_disableContextMenuForVideo","_enableSingleClickControl","_enableDoubleClickControl","_pluginController","_useLargerProgressBar","_displayHotspotsShape","_audioDescriptionMediaSrc","_disableInteractions","isValidTheme","themeName","themeKey","decodedApostrophe","containsNonLatinCodepoints","runOnServer","getUnicodeSafeString","decodeURI","clearConfiguration","getUnableToDisplayContentString","useCustomEventTracking","customEventTracking","customEventCallback","getTrackEvents","getCustomEventTracking","getCustomEventCallback","getIsUserIdentified","setAdditionalAppQueryParamsFromJson","queryString","getAdditionalAppQueryString","addMediaSrc","mediaSrc","getMediaSources","getMediaFileName","mediaSource","splitEl","mediaFileName","saveConfigurationFromQueryString","configParams","numberParams","isParamBeingIgnored","shouldLoadXmpParam","param1","param2","endActionParam","getMediaSrc","setMediaSrc","getXMPSrc","setXMPSrc","xmpSrc","getDisableInteractions","setDisableInteractions","disableInteractions","getPosterImageSrc","setPosterImageSrc","posterImageSrc","getTOCSpriteSrc","setTOCSpriteSrc","tocSpriteSrc","getMediaRotation","setMediaRotation","rotation","getEndActionType","setEndActionType","getEndActionParam","setEndActionParam","getIgnoreXmpControllerParameters","setIgnoreXmpControllerParameters","ignoreXmpControllerParameters","upperCasedIgnores","getIgnoreQuizQuestions","setIgnoreQuizQuestions","ignoreQuizQuestions","getIsSearchable","setIsSearchable","isSearchable","getAutoPlayMedia","setAutoPlayMedia","autoPlayMedia","getAllowRewind","setAllowRewind","allowRewind","getCaptionsEnabled","setCaptionsEnabled","captionsEnabled","getIgnoreStoredCaptionVisibleSetting","setIgnoreStoredCaptionVisibleSetting","ignoreStored","getSidebarEnabled","setSidebarEnabled","sidebarEnabled","getSidebarLocation","setSidebarLocation","sidebarLocation","getBackgroundColor","setBackgroundColor","getAutoHideControls","setAutoHideControls","autoHideControls","getProcessUnicodeNames","setProcessUnicodeNames","useUnicode","getEnforceLinearAssessment","setEnforceLinearAssessment","enforceLinearAssessment","getDisableFullframeMode","setDisableFullframeMode","disableFullframeMode","getDisableControls","setDisableControls","disableControls","getDisableYouTubeControls","setDisableYouTubeControls","disableYouTubeControls","getDisableYouTubeFullscreen","setDisableYouTubeFullscreen","disableYouTubeFullscreen","getDisablePictureInPicture","setDisablePictureInPicture","disablePictureInPicture","getMobileWebViewCanAutoPlay","setMobileWebViewCanAutoPlay","canAutoPlay","getGoogleAnalyticsID","setGoogleAnalyticsID","getGAPageViewTracking","setGAPageViewTracking","gaPageViewTrack","getGAEventTracking","setGAEventTracking","gaEventTrack","getAltEventCategoryAsFilename","setAltEventCategoryAsFilename","altEventCategoryAsFilename","getAltLoadTimeAsSeconds","setAltLoadTimeAsSeconds","altLoadTimeAsSeconds","getTechSmithAccessTokenEndpoint","setTechSmithAccessTokenEndpoint","accessTokenEndpoint","getJumpToTime","setJumpToTime","getFathomId","setFathomId","fathomId","getEmbedIFrameId","setEmbedIFrameId","embedIFrameId","getUseSlimAppSplashScreen","setUseSlimAppSplashScreen","useSlimAppSplashScreen","getDisableContextMenuForVideo","setDisableContextMenuForVideo","disableContextMenuForVideo","getShowYouTubeAnnotations","setShowYouTubeAnnotations","showAnnotations","getPreRollSrc","setPreRollSrc","getContentBase","setContentBase","getContentType","setContentType","getPreload","setPreload","getFullViewPort","setFullViewPort","getWebConnector","setWebConnector","getTheme","setTheme","getEnableSingleClickControl","setEnableSingleClickControl","getEnableDoubleClickControl","setEnableDoubleClickControl","getPluginController","setPluginController","pluginController","getUseLargerProgressBar","setUseLargerProgressBar","useLargerProgressBar","getReportScormComplete","setReportScormComplete","reportScorm","getIsScormLesson","setIsScormLesson","isScormLesson","getDisplayHotspotsShape","setDisplayHotspotsShape","getAudioDescriptionMediaSrc","setAudioDescriptionMediaSrc","audioDescriptionMediaSrc","deprecatedNoOp","setSwfBase","isIEOnServerWithUnicode","setFlashUpdateBootstrapSwf","getAdvancedSeeking","setAdvancedSeeking","getDebugUIMode","setDebugUIMode","getPlayerWidth","setPlayerWidth","getPlayerHeight","setPlayerHeight","setFlashPlayerSwf","setForceFlashPlayer","setForceHtml5Player","setConfigurationSrc","setPrioritizeFullScreen","mediaRotation","ignoreStoredCaptionVisibleSetting","processUnicodeNames","mobileWebViewCanAutoPlay","googleAnalyticsID","googleAnalyticsPageViewTracking","googleAnalyticsEventTracking","techSmithAccessTokenEndpoint","showYouTubeAnnotations","contentBase","fullViewPort","webConnector","enableSingleClickControl","enableDoubleClickControl","nullPipControllerFactory","nullPipController","bindChangeEvent","unbindChangeEvent","inPip","isSupported","safariPipControllerFactory","SafariPipController","CHANGED_PIP_MODE_SAFARI_EVENT","SAFARI_INLINE_MODE","SAFARI_PIP_MODE","webkitSetPresentationMode","onChangeHandler","webkitPresentationMode","isControllerSupported","webkitSupportsPresentationMode","chromePipControllerFactory","ChromePipController","ENTER_PIP_CHROME_EVENT","LEAVE_PIP_CHROME_EVENT","documentRef","requestPictureInPicture","exitPictureInPicture","pictureInPictureElement","pictureInPictureEnabled","pipControllerFactoryFactory","pipControllerFactory","getPipController","endActionsControllerFactory","endActionsController","xmpEndActionType","xmpEndActionTypeLowerCase","executeSeekAction","onReplayHandler","playAfterSeek","seekTimeInSeconds","executeOpenLinkAction","inNewWindow","urlString","executeEndAction","replayVideoHandler","showReplayControlsHandler","themeControllerFactory","themeController","_$spElement","registerCallback","setSmartPlayerContainerElement","$element","getClassNameForTheme","themeClassNameAsString","currentThemeClassName","tabControllerFactory","TabController","$defaultFirstTabEnabledElement","$defaultLastTabEnabledElement","_defaultFirstTabEnabledElement","_defaultLastTabEnabledElement","_firstTabEnabledElement","_lastTabEnabledElement","_playerInFullScreenMode","onFullScreenChange","inFullScreen","unbindEventsToTabEnabledElement","setFirstTabEnabledElement","firstTabEnabledElement","setLastTabEnabledElement","lastTabEnabledElement","initController","supportedPluginViewElements","PROGRESS_BAR","MEDIA","pluginFactory","pluginName","viewElementType","_initialized","_initializedDefer","_pluginName","_viewElementType","pluginContainerElement","initialized","initializedDefer","pluginControllerFactory","PluginController","REMOVE_SPACES_REGEX","_plugins","isViewElementTypeSupported","getPluginsForViewElementType","getPluginContainerElement","pluginNameNoSpaces","pluginNamedContainerClassName","registerPlugin","pluginSameNameMessage","pluginUnsupportedViewElementMessage","initializePluginsForViewElement","$viewElementPluginContainer","elementTypePlugins","textSanitizerDefinition","textSanitizer","EMAIL_REGEX","htmlEncode","isValidEmail","email","highlightDisablerFactory","highlightDisabler","highlightProperty","disableHighlights","disableHighlightsOnMouseClick","checkIfElementIsHighlighted","highlightState","tokenServiceDefinition","tokenService","httpService","getTechSmithAccessToken","AccessToken","captionServiceFactory","CaptionService","_defaultTextColorObject","_defaultBgColorObject","captionFontFamily","captionFontSize","captionFontSizeMin","captionFontSizeMax","captionTextColor","captionBgColor","captionPosition","captionBarHeight","_font","_fontSizeMin","_fontSizeMax","_textColor","setFontSize","initFromXmp","minCaptionFontSize","maxCaptionFontSize","captionBg","fontEnclosedWithQuotes","fontFamilies","quotedFontFamilies","fontSizeMin","fontSizeMax","textColor","backgroundOpacity","hasCaptions","questionType","FILL_IN","CHOICE","SHORT","quizDataXmlConverterDefinition","quizDataXmlConverter","questionSetToXml","questionSet","quizInstanceId","quizId","question","correct","segmentWatched","quizDefinitionToXml","quizDefinition","projectName","productionName","mediaDuration","reportRecipients","recipient","mediaTimePosition","choices","choice","reportType","_noneType","_apiType","_scormType","_apiAndScormType","NONE","API","SCORM","APIANDSCORM","questionSetMarkerFactory","QuestionSetMarker","MARKER_BEGIN_OFFSET","MARKER_END_OFFSET","questionSetIndex","_questionSetIndex","_rangeStart","_rangeEnd","_canSeekPast","questionSetId","rangeStart","rangeEnd","canSeekPast","questionFactory","SHORT_ANSWER_SNAPSHOT_TEXT","tscmeQuestionModel","_userResponse","_isResponseCorrect","_isGraded","_attemptDuration","_responseLocked","_feedbackActionExecuted","getIsGraded","getSnapShot","snapshotUserResponse","rl","ad","irc","populateQuestion","questionSnapShot","getQuizServiceData","percentOfVideoSegmentWatched","questionData","getFeedbackForReason","feedbackItem","isGraded","isResponseCorrect","attemptDuration","responseLocked","feedbackActionExecuted","questionSetFactory","tscmeQuestionSetModel","_percentOfVideoSegmentWatched","_numberGradedQuestions","_numberUngradedQuestions","createQuestionModels","tscmeQuestion","cacheQuestionDetails","vsw","populateQuestionSet","questionSetSnapShot","questionSetData","displayFeedback","inProgress","numberGradedQuestions","numberUngradedQuestions","numberCorrectQuestions","correctQuestions","usesRationale","quizFactory","Quiz","MIN_MARKER_TIME_DIFF","xmpModel","_productionName","_projectName","_quizTitle","_quizId","_questionSetMarkers","_mediaDuration","createQuizDefinition","quizDef","setAllowSkipQuiz","setReportMethod","getApiDataForQuestionSet","createQuestionSetMarkers","processXmp","quizLocale","quizRequireUserId","quizHideReplay","quizAuthoredEmail","quizClientId","quizReportMethod","quizAllowSkipQuiz","quizQuestionSetArray","tscmeQuestionSet","getScormScore","scormScore","totalGradableQuestions","totalCorrectQuestions","isLastQuestionComplete","considerQuestionSetCompleteId","getPreviousMarkerTimeForMarker","timeDiff","markerTime","qs","populateQuiz","quizModelSnapshot","questionSetSnapshot","useQuizApi","useScorm","quizTitle","quizID","questionSetMarkerTimes","numberQuestionSets","minMarkerTimeDiff","totalNumberOfGradedQuestionSets","totalGradableQuestionSets","quizServiceDefinition","quizService","_definitionEndPoint","_instanceEndPoint","_responseEndPoint","_progressEndPoint","_environments","_environmentId","_quizInstanceDataDefer","httpServiceWithUnlimitedRetries","httpServiceWithNoLogging","submitQuizDefinition","quizJsonData","quizDefinitionXml","DefinitionText","getInstanceFormData","quizModel","firstName","lastName","QuizId","CheckForQuizDefinition","FirstName","LastName","Email","startQuizInstance","DefinitionRequired","analyticsSampleRate","SampleRate","Id","sendProgress","sampleRateInMilliseconds","completedSamples","quizInstanceData","InstanceId","Interval","ViewedSegments","setEnvironment","environmentId","getEnvironment","submitQuestionSet","questionSetXml","ResponseText","getAnalyticsRate","_xmpModel","_maxAttemptTime","_retryLimit","_timeBetweenRetries","_groupedScreenTextItems","_captionDefaults","loadXmpWithRetry","retrylimit","crossDomainRequest","parseXmp","loadXmp","groupScreenTextByStartTime","itemStartTime","groupIndex","groupedItem","previousItemName","currentItemName","hasAdvancedFeatures","hasTocItems","hasCaptionItems","hasHotspotItems","hasQuiz","hasScreenTextItems","hasSpeechTextItems","hasSearchableItems","tocImageSrc","tocCellLayoutType","tocItemArray","speechTextItemArray","screenTextItemArray","hotspotItemArray","captionsHasMultipleLanguages","captionItems","captionBgOpacity","tocContainsThumbs","tocThumbImageSrc","fathomService","_getFathomEndPoint","_getCompleteCallback","_errorHandlerCallback","_mockCalls","onFathomLoad","xmlModel","errorHandler","getFathom","hotkeyServiceFactory","hotkeyService","_hotkeysEnabled","areHotkeysEnabled","disableHotkeys","enableHotkeys","progressTracker","_intervalId","_playCallbackFunction","_didAttachToEndedEvent","_didAttachToPlayEvent","_sampleRateInMilliseconds","_mergeToleranceInMilliseconds","_videoEndToleranceInMilliseconds","processPlayedSegments","played","numberPlayedSegments","mergedPlayedInMilliseconds","mergedPlayedIndex","computePercentageViewed","videoStartMilliseconds","videoEndMilliseconds","isEndOfVideo","firstSample","lastSample","entireVideoWasWatched","videoDurationInMilliseconds","stopInterval","attachToEndedEvent","endedCallbackFunction","attachToPlayEvent","setupProgressInterval","intervalFunction","tscProjThemeFactory","TscProjTheme","themeUri","_readyPromise","_themeJson","getModule","getThemeByUri","mediaLibModelFactory","MediaLibModel","tscProjectUriOrObject","_mediaLibProj","_readyDefer","createMediaLibModel","mediaLibJson","themeJson","storage","loadProject","tscprojJson","projectFileData","tscproj","model","viewHelperDefinition","viewHelper","_previousActiveElement","_previousActiveElementWasHighlighted","_$window","scrollActiveElementIntoView","scrollIntoView","scrollIntoViewIfNeeded","elementFitsInsideContainer","saveActiveElement","disableHighlightsOnPreviousActiveElement","$previousActiveElement","focusPreviousElement","elementOrChildHasFocus","messageBarViewFactory","MessageBarView","messageBarLevels","animationTimeMilliseconds","customActionButtonHandler","_$messageBarContainer","_$actionButton","onActionClick","showView","message_bar_view_template","renderLibViewFactory","RenderLibView","_hasRegisteredFileResolvers","mediaLibProject","_rootBoundingClientRect","_metadataDefer","_canPlayDefer","renderLibProjectView","onReady","onError","loadedMetadataCallback","canplayCallback","watchForSizeChanges","watchedElement","millisecondInterval","currentBoundingClientRect","tscrlResolver","sourceUrn","hasModuleByUrn","getFileUrl","canPlayReady","bubbleViewFactory","BubbleView","containerId","_windowPadding","_viewBottom","_minArrowDistanceFromEdge","_ignoreBreakpoints","_containerId","_overlayId","_arrowBubbleClass","_overlayMarkup","_topContainer","_$container","_$overlay","_$arrowBubble","clickCapture","isDesktopBreakpoint","cacheElements","ignoreBreakpoints","hideView","updateViewPosition","removeView","destroyOverlay","getOverlayMarkup","setBottomOffset","pointAt","xPos","quizXPos","arrowPos","playerWidth","viewWidth","halfViewWidth","borderWidth","arrowWidth","quizSetupViewFactory","QuizSetupView","_viewTemplate","FIRST_NAME_CLASS","LAST_NAME_CLASS","quiz_setup_template","spContainer","_eventContainer","_$quizSetupView","_$firstNameInput","_$lastNameInput","_$emailInput","_$beginButton","_$skipButton","reverseNames","quizSetupMarkup","validateInput","beginQuiz","skipQuiz","hideSkipButton","$view","questionSetConfirmationView","_superView","_reviewControlId","_confirmControlId","question_set_confirmation_template","getViewMarkup","getReviewControlRef","getConfirmControlRef","$confirmControl","questionSetReviewStatusView","_gradeableDetails","_unGradeableDetails","_showAnswersId","_hideAnswersId","_readingSelector","question_set_review_status_template","setGradeableDetails","setUngradeableDetails","getHideAnswersControlRef","getShowAnswersControlRef","$readableElement","answersViewFactory","AnswersView","CHECK_SVG","INCORRECT_SVG","CORRECT_GLYPH_DATA_URL","INCORRECT_GLYPH_DATA_URL","PLACEHOLDER_GLYPH_DATA_URL","ACTIVE_QUESTION_CLASS","CORRECT_ANSWER_TEXT","YOUR_ANSWER_TEXT","showResults","_choiceAnswerTemplate","_fillAnswerTemplate","_shortAnswerTemplate","_$textInput","choice_answer_template","fill_answer_template","short_answer_template","getUserResponse","displayResponseFillInResults","$correctImage","$incorrectImage","getCorrectAnswerIndex","numberAnswers","correctAnswerBitshifted","displayChoiceResults","correctAnswerIndex","$placeHolderImgEls","$userResponseInputImageEl","$correctResponseInputImageEl","$labelEls","disableInput","$inputEls","displayResults","getChoiceAnswersMarkupContext","templateContext","getFillInTheBlankAnswerMarkupContext","autoFocus","getShortAnswerMarkupContext","getAnswersMarkup","getCorrectAnswerText","answered","setupAnswers","answersMarkup","questionViewFactory","QuestionView","QUESTION_CORRECT_TEXT_CLASS","QUESTION_INCORRECT_TEXT_CLASS","$questionTextContainer","$feedbackContainer","$answersContainer","_answersView","_questionTextTemplate","question_text_template","questionTextContext","questionTextMarkup","showFeedbackTextIfAvailable","feedbackMarkup","setupView","questionSetViewFactory","QuestionSetView","SUBMITTING_GLYPH_DATA_URL","CONTAINER_CLASS","PREV_CONTROL_CLASS","NEXT_CONTROL_CLASS","SUBMIT_CONTROL_CLASS","CONTINUE_CONTROL_CLASS","QUESTION_COUNT_CLASS","QUESTION_CLASS","ANSWERS_CLASS","FEEDBACK_CLASS","displayOverlay","mediaIsImage","showQuestionSetResults","_questionSetTemplate","_questionCountTemplate","_currentQuestionIndex","_startTimeForQuestion","_endTimeForQuestion","_currentQuestionView","_$questionSetContainer","_$questionTextContainer","_$answersContainer","_$feedbackContainer","_$questionCountContainer","_$prevControl","_$nextControl","_$continueControl","_$submitControl","question_set_template","question_count_template","isOnFirstQuestion","isOnLastQuestion","startTrackingQuestionTime","getTime","recordDurationOnQuestion","timeBetween","storeUserResponse","saveQuestionUserInput","lockResponses","getFeedbackInfoForCurrentQuestion","actionType","feedbackReason","executeContinueAction","displayNextQuestion","executeRationaleAction","feedbackInfo","displayQuestion","onPreviousQuestion","onNextQuestion","onContinue","onSubmit","onIphoneTouchstart","getControlsConfig","currentQuestion","onFirstQuestion","onLastQuestion","hasOneQuestion","controlsConfig","showSubmitNav","showContinueNav","showPrevNav","showNextNav","prevDisabled","nextDisabled","updateControls","updateQuestionCount","questionCountContext","questionCountMarkup","showFeedbackForCurrentQuestion","questionSetViewMarkup","removeEvents","setupEvents","checkQuestionSetProgress","completeCallback","reviewAnswersConfirmationView","question_set_review_confirmation_template","_continueControlId","_reviewAnswersControlId","numberCorrectText","percentCorrectText","numberInCorrectText","percentInCorrectText","getContinueControlRef","$reviewControl","xmpGraderFactory","xmpGrader","gradeChoiceQuestion","isCorrect","responseNumber","gradeFillInTheBlankQuestion","responseLowerCase","possibleAnswers","numberPossibleAnswers","gradeQuestion","gradeQuestionSet","doesLocalGrading","fathomGraderFactory","fathomGrader","processQuestionResults","questionApiId","questionResult","processQuestionSetResults","DEFAULT_SEGMENT_LENGTH","SEGMENT_CHOICES","segmentLength","videoAnalytics","_videoLoadStartTime","_videoLoadEndTime","_videoDuration","_segmentLength","_numberSegments","_videoSegments","_numberVideoSegmentWatched","_currentPlayTime","_enabled","setVideoLoadStartTime","setVideoLoadEndTime","getVideoLoadTime","loadTime","getNumberSegments","setCurrentPlayTime","getCurrentPlayTime","getNumberWatchedSegments","isPercentWatchedInitialized","clearPercentWatched","initPercentWatched","markTimeWatched","videoTimeInMilliseconds","getPercentageWatched","getPercentageWatchedForVideoSegment","startTimeInMilliseconds","endTimeInMilliseconds","percentageWatched","startSegmentIndex","endSegmentIndex","numberSegmentsWatched","totalSegmentsInRange","setEnabled","isEnabled","getVideoSegmentSnapShot","segmentValue","populateVideoSegmentsWatch","videoSegmentSnapshot","videoSegmentSnapshotList","scormApiWrapperFactory","ScormApiWrapper","MAX_PARENTS_TO_SEARCH","SCORM_MANIFEST_FILE_NAME","CAMTASIA_SCORM_1_2_MANIFEST_STRING","scormApi","noAPIFound","apiVersion","scormManifestDocString","apiCall","scormFunctionName","dataModalID","dmeValue","dataModel","initializedResult","Initialize","LMSInitialize","GetValue","LMSGetValue","Terminate","LMSFinish","SetValue","canSetValue","lessonStatus","LMSSetValue","Commit","LMSCommit","GetLastError","LMSGetLastError","GetErrorString","errCode","LMSGetErrorString","GetDiagnostic","LMSGetDiagnostic","errorCode","loadScormManifest","getScormManifestDoc","getScormVersionFromManifestDoc","manifestDocAsString","getScormApiOnWindow","windowRef","API_1484_11","scormApiVersion","findAPI","findAPITries","lookForApiOnParentWindow","lookForApiOnWindowTopOpener","getAPI","getAPIHandle","api","messageAlert","alert","scormDataModelFactory","ScormDataModel","V1_SUSPENDED_DATA_KEY","V2_SUSPENDED_DATA_KEY","_percentageComplete","_quizModelSnapshot","_videoAnalyticsSnapshot","_videoTimeInSecondsSnapshot","_videoTimeInSeconds","_completionStatus","_passingStatus","parseSuspendedDataString","suspendedDataString","suspendedData","pc","vas","cvt","getSuspendedDataString","percentageComplete","videoAnalyticsSnapshot","videoTimeInSecondsSnapshot","videoTimeInSeconds","timeInSeconds","completionStatus","passingStatus","scormControllerFactory","scormController","DEFAULT_PASSING_SCORE","DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE","REPORT_INCREMENT","_scormApiWrapper","_isDisposed","_scormModel","_previousWriteVideoTime","_minimumScoreToPass","_minimumViewPercentageToCompleteLesson","_quizModel","initializeInternalState","submitVideoWatchedPercentage","getSuspendData","submitScore","currentScore","allQuestionsAnswered","scoreNeededToPass","scoreNeededMultiplier","maxPassingScoreValue","minScore","maxScore","lmsPassingScore","getSuspendedDataFromAPI","apiResult","onbeforeunload","pageUnload","dispose","scoExitValue","scoCompletionStatusValue","scoSuccessStatusValue","initialPercentageComplete","initialVideoAnalyticsSnapshot","initialQuizModelSnapshot","initialVideoTimeInSeconds","minScoreToPassLesson","minimumScoreToPass","minViewPercentageToCompleteLesson","minimumViewPercentageToCompleteLesson","quizControllerFactory","quizController","_questionGrader","_smartPlayerElement","_quizSetupView","_currentView","_retrySubmissionMessageDisplayBar","_numberQuestionSets","_currentQuestionSetIndex","_bottomPadding","_bottomOffset","_pointAt","_quizEnabled","_quizReady","_getVideoEl","_mediaIsImage","_lastStatusMessage","submitToLMS","userSubmitToLMS","completeQuestionSetEventDispatch","questionSetCompleteHandler","dispatchStatusEvent","ioMessage","onContinueHandler","createQuestionSetFeedbackView","needOverlay","questionSetView","updateViewBottom","continueVideoHandler","initQuestionSetFeedback","createReviewAnswersConfirmationView","numberIncorrectText","percentIncorrectText","numberIncorrect","numberUngradable","possibleCorrect","createQuestionSetReviewStatusView","hideQuizStatus","initFeedbackFromReviewStatusView","onRationaleActionHandler","onCloseQuestionSetView","submitResults","gradeResults","onGradingComplete","apiErrorEventHandler","createQuestionSetView","reviewHandler","onViewRemove","confirmHandler","createConfirmView","destroyQuizSetupView","beginQuizHandler","skipQuizHandler","startQuizApiInstance","createSetupView","displaySetupView","spElement","videoFunc","simpleInit","setSmartplayerElement","$spElement","gatherSetupIfNeeded","getLastStatusMessage","removeSubmissionRetryMessage","showSubmissionRetryMessage","showQuizIsOutOfDateMessage","reload","setViewContainer","displayNextQuestionSet","hasMultipleQuestionSets","findQuestionSet","activeQuestionSetId","numberMarkers","findPrevMarkerTimeForMarker","updatePercentWatchedForQuestionSet","percentWatched","displayConfirm","showQuiz","hideQuiz","pointViewAt","setViewControlBarOffset","setQuestionGrader","grader","startTrackingProgress","rate","forceProgressUpdate","segmentsCompleted","populateQuizModel","suspendedQuizData","quizEnabled","quizReady","viewIsOpen","mediaFactory","media","_media","mediaListParserFactory","MediaListParser","PLAYLIST_EXT","TSCPROJ_EXT","TSCPROJ_EXT_JSON","URN_PREFIX","getFileExtension","findMediaMimeTypeByRequestHeader","textStatus","inferMimeTypeFromFileExtension","ext","mediaTypeFromMimeType","loadPlaylistFile","playlistSrc","mediaSources","_mediaList","_mediaProcessedPromises","parseM3UData","playlistData","playListMediaPromises","playListMedia","playlistMediaUrls","parseMediaUrl","createMediaFromFromTscProjectJson","mediaLibModel","parseUrnSource","urnMediaSource","hasNoResolver","fileUrl","parseYouTubeMedia","youTubeMediaSource","parsePlaylistSource","playlistMediaSource","jHxr","playlistMedia","mediaList","inferredMimeType","parseMediaObject","parseTscProjectUrl","tscProjectSource","parseMedia","youtubeRegex","mediaListFactory","MediaList","_mediaListParser","_currentMediaIndex","getMediaIndexByUri","mediaIndex","isMediaTypeAvailable","setCurrentMediaIndex","mediaPosition","currentMedia","currentMediaIndex","currentMediaType","onFirstMedia","onLastMedia","hasImage","isPlaylist","isTscProj","mediaPlayerController","_currentPlayerType","MIN_IE_VERSION","getPlayerType","haveImage","haveWebMAndCanPlay","haveMP4AndCanPlay","haveOGGAndCanPlay","haveYoutubeEmbedUrl","clearPlayerType","iFrameBridgeDefinition","iFrameBridge","iFrameId","isInIframe","queryParamsStripper","parsePlayerURLParams","playerUrlParams","requestEmbeddedURLParams","parseEmbeddedURLParams","strip","responsiveControllerFactory","responsiveController","_intervalID","_currentContainerSize","_responsiveBreakpoints","small-mobile","medium-mobile","small-desktop","checkForResize","monitorContainerSize","manageResponsiveClasses","breakpoint","widthClassName","heightClassName","forgetContainerSize","ioOverlayViewFactory","IoOverlayView","LOADER_IMG","_viewOpen","io_overlay_view_template","_$ioContainer","_$ioMessage","_$ioImg","setViewMessage","hideLoadingGraphic","showLoadingGraphic","displayMessage","shouldHideLoadingGraphic","playerSettingsViewFactory","PlayerSettingsView","_defaultPlaybackRate","_defaultAvailablePlaybackRates","hideButton","_isOpen","_currentPlaybackRate","_availablePlaybackRates","_minPlaybackRate","_maxPlaybackRate","defaultPlaybackRate","getPlaybackRates","playerRateOptionsLocalizedStrings","playbackRatesList","getClosedCaptionLanguages","ccLanguageList","selectedLanguageIdentifier","foundSelectedLanguageInAvailableList","languageShouldBeSelected","playerSettingsViewMarkup","settings_view_template","_$playerSettingsWrapper","_$playerSettingsViewEl","_$playbackRateSelectEl","_$ccLanguageSelectEl","_$playerSettingsButton","_$playerSettingsButtonGlyph","removeClickHandler","addClickHandler","hideSettingsViewOnClickOutside","syncPlaybackRateControlsWithPlaybackRateValue","realPlaybackRate","playbackSpeed","onPlaybackRateControlChange","onCCLanguageControlChange","ccLanguageCode","onPlaybackRateValueChange","incrementPlaybackRate","indexOfCurrentRate","decrementPlaybackRate","onKeyboardShortCut","disableControl","enableControl","onPlayerSettingsButtonClick","initializeHandlers","isOpen","pipControlViewFactory","PipControlView","_$pipButton","_pipApiController","onPresentationModeChange","hideControls","onPipControlClick","handleSmartPlayerActionEvents","buttonTitle","_markup","pip_control_template","fullscreenControlViewFactory","FullscreenControlView","FULL_SCREEN_BUTTON_MODE","FULL_FRAME_BUTTON_MODE","EXPAND_BUTTON_MODE","HIDDEN_BUTTON_MODE","_$fullScreenButton","_$fullScreenGlyph","_inFullScreen","_inFullFrame","_$document","_buttonMode","findButtonMode","fullscreen_control_template","initializeFullScreenSupport","canSupportExpandVideoMode","fullScreenEventNames","cancelFullScreen","exitFullscreen","webkitExitFullscreen","msExitFullscreen","mozCancelFullScreen","switchToFullScreenMode","myPlayer","requestFullscreen","webkitRequestFullscreen","msRequestFullscreen","mozRequestFullScreen","switchFromFullScreenMode","toggleFullScreenMode","toggleFullFrameMode","expandVideo","onFullScreenClick","onDoubleClick","onVideoEnd","isFullScreen","isFullFrame","controlElement","playedTracker","mergeToleranceInSeconds","tracker","internalPlayed","currentMediaSegmentIndex","segmentIndex","createNewPlayedMediaSegment","PlayedMediaSegment","onTimeChange","recordTime","mergeOverlappingMediaSegments","onMediaSeek","mediaSegmentIndexForTime","getPlayedMediaSegmentIndexByTime","numberSegments","areMediaSegmentsOverlapping","mergeMediaSegments","segmentOneIndex","segmentTwoIndex","mergedIndex","notMergedIndex","segment1","segment2","startInOuterSegment","endInOuterSegment","segment","youTube","onYouTubeIframeAPIReady","queued","youTubeApiUri","playbackReadyDefer","playbackReadyPromise","youTubePlayer","videoId","onFirstPlay","playerHeight","startTimeInSeconds","loadedPercent","playerState","supportPlaybackRate","muted","availableRateSettings","displayAnnotations","handlerIndex","arg1","arg2","firstPlay","player","getDuration","onStateChange","YT","PlayerState","PAUSED","ENDED","PLAYING","BUFFERING","onPlaybackRateChange","removeFullScreenAttributes","playerIFrame","fullScreenAttributes","readyHandler","getAvailablePlaybackRates","Player","playerVars","wmode","autoplay","controls","disablekb","rel","showsearch","showinfo","iv_load_policy","playsinline","fs","modestbranding","eventHandlers","_playedTracker","loadedMock","getCurrentTime","seekTo","scaledValue","setVolume","mute","unMute","playVideo","pauseVideo","domPlayer","heartbeat","videoLoadedFraction","getVideoLoadedFraction","percentLoaded","videoDiv","addApi","youTubeApiFound","searchToolDefinition","searchTool","TIME_SALT","getMilliseconds","UNIQUE_TOKEN_1","UNIQUE_TOKEN_2","REGEX_REPLACEMENT_STRING","TOKEN_1_REGEX","TOKEN_2_REGEX","REGEX_ESCAPE","createHighlightedText","searchRegex","textWithSearchMatchPlaceholders","sanitizedText","simpleSearch","searchString","itemText","rawText","imageRef","imageRect","searchXmpForString","itemsToSearch","captionsViewFactory","CaptionsView","_ccCacheKey","captionsService","captions_view_template","_$controls","_$positionContainer","_$textContainer","_$closedCaptionButton","_$closedCaptionGlyph","_cachedCC","_cachedCCValue","_fontSizeNormalized","_canvasScale","_visible","_currentCaptionIndex","onClosedCaptionButtonClick","setVisible","handleDisplayCaptions","onCaptionLanguageChanged","updateStyles","font-family","background","setScale","getVerticalAlignmentClass","getHorizontalAlignmentClass","normalButtonClass","activeButtonClass","updateCaption","currentFile","newCaptionIndex","newCaption","audioDescriptionControlViewFactory","AudioDescriptionControlView","_$audioDescriptionButton","_$audioDescriptionGlyph","_audioDescriptionEnabled","audio_description_button_template","onButtonClick","audioDescriptionEnabled","audioDescriptionFailedToPlay","audioDescriptionTrackViewFactory","AudioDescriptionTrackView","SYNC_TOLERANCE_TIME_IN_SECONDS","BUFFER_TIME_OFFSET_IN_SECONDS","_audioDescriptionAudioEl","_audioTrackEnabled","_videoIsSeeking","_videoIsBuffering","_lastBufferedVideoTime","onAudioError","audio_description_track_template","syncAudioTimeWithVideoTime","syncAudioVolumeWithVideoVolume","syncAudioPlaybackRateWithVideoPlaybackRate","pauseAudioDescription","onVideoPlaying","onVideoStartSeeking","onWaiting","onVideoSeeked","playAudioDescriptionIfVideoIsPlaying","onRateChange","onAudioTrackSeeked","mediaTimeDelta","onAudioDescriptionControlChange","tocViewFactory","TocView","TOC_WIDTH","_$tocButton","_$tocGlyph","_viewVisible","_viewIsOpen","_searchFocus","_scrolledToc","_eventHandlers","_keysEnabled","_$tocHeadContainer","_$searchContainer","_$searchInput","_$titleHeader","_$clearSearchButton","_$tocPipImageContainer","_$searchInputDisabled","_$tocContentScrollContainer","_$tocContent","_$tocContentScreenReaderLabel","_$tocItemDomList","_$tocContainer","_$noSearchResultsAlert","_xmp","_tocThumbsImage","_tocPipImage","tocMarkup","toc_template","tocButtonMarkup","toc_button_template","animationSpeed","openView","closeView","blurSearchInput","resizeView","headerHeight","eventCallback","loadTocPipImage","Image","displayTocPipImage","targetWidth","targetHeight","imageWidth","imageHeight","scaledReduction","pipImageBackgroundStyle","pipImageBackground","loadTocThumbnailImage","setupTocPosition","setupSearch","setupTocHeader","clearTocContent","generateTocItemThumbnail","tocItemThumbnailCanvasEl","imageThumbRect","defaultBgColor","tocCellPadding","yPos","thumbScale","ctx","getContext","drawImage","fillStyle","fillRect","createTocItem","tocText","tocRawText","tocTime","tocFile","tocItemMarkup","toc_item_template","$tocItem","createTocItems","tocItems","tocItem","thumbnailCanvasEl","displayTocItems","tocItemClickHandler","seekToTocItem","clickTocItem","$currentTarget","timeToSeekTo","fileToSeekTo","onTocItemPointerDown","onTocItemPointerMove","onSearchTextInput","updateSearchResults","$tocButtons","searchResults","searchResultsTocItems","clearSearch","disableSearch","enableSearch","onSearchInputFocus","searchFocusChange","onSearchInputBlur","onTocItemKeyUp","onTocItemKeyDown","onKeyDownHandler","toggleViewState","disableKeyListeners","enableKeyListeners","resize","searchIsFocused","hotspotViewModelFactory","HotspotViewModel","endingTimeBufferSizeInMilliseconds","createHotspotDescription","hotspotXmpModel","hotspotText","jumpMediaText","jumpTimeText","openLinkText","playText","getHotspotViewPoints","videoNativeWidth","videoNativeHeight","viewPoints","coordinate","hsViewData","xOrig","yOrig","xScale","yScale","_hotspotIndex","_hasPausedAtEnd","_viewPoints","getCoordinates","hotspotViewWidth","hotspotViewHeight","viewPoint","isWithinTime","timeInMilliseconds","isTimeNearEndOfHotspot","getTimeLeftUntilEnd","shouldPauseAtTheEnd","isHotspotWithinTime","hasPausedAtEnd","hotspotViewFactory","$hotspotsContainerElement","hotspotViewModel","_$hotspotSvgElement","_$hotspotLinkElement","_timerId","enableTabbing","disableTabbing","onQuizEventHandler","onControlsUpdatedHandler","hideHotspot","getCurrentTimeInMilliseconds","displayHotspot","getSvgElementWithLowerIndex","$svgElementWithLowerIndex","svgElements","$svg","addHotspotViewToDom","$svgView","hotspotCoordinates","descriptionId","svgViewMarkup","hotspot_view_template","getTimeToHotspotEnd","mediaPlaybackRate","frameBuffer","pauseOnHotspot","hasTimeChangeAction","initPauseOnHotspot","update","hotspotState","resetHasPaused","hotspotsViewFactory","HotspotsView","tabController","_$hotspots","_currentFile","_spContainerId","_hotspotsContainerId","_hotspotXmpModels","_hotspotViews","_mediaNativeWidth","_mediaNativeHeight","_mediaCurrentWidth","_mediaCurrentHeight","_oneOrMoreHotspotActive","_defaultScale","_scale","hotspotsMarkup","hotspots_template","preventEvent","onHotspotClick","hotspotView","removeScreenReaderAlert","addScreenReaderAlert","numberHotspotsJustDisplayed","hotspotAlertStringToken","hotspotAlertText","screenReaderAlertMarkup","hotspot_view_sr_alert_template","$screenReaderAlert","getLastActiveHotspotView","onHotspotActiveChange","oneOrMoreHotspotActive","lastActiveHotspotView","currentMediaTimeInMilliseconds","availableWidth","availableHeight","hotspotWidth","hotspotHeight","leftOffset","topOffset","targetHotspotXmpModel","targetHotspotViewModel","$hotspots","oneOrMoreHotspotsWithTimeActionArePaused","playRewindControlsViewFactory","PlayRewindControlsView","play_rewind_controls_template","_$playControl","_$rewindControl","_$playButtonGlyph","_$pauseButtonGlyph","togglePlay","setInitialFocus","prevNextControlsViewFactory","PrevNextControlsView","prev_next_controls_template","_$previousControl","disablePreviousButton","enablePreviousButton","disableNextButton","enableNextButton","progressBarControlViewFactory","ProgressBarControlView","SKIP_TIME","SHIFT_SKIP_TIME","progress_bar_control_template","_nextQuizTime","_formattedDuration","_requestAnimationId","_scrubbing","_lastScrubTime","_wasPlayingBeforeSeek","_$loadProgressBar","_$playProgressBar","_$playTimeDisplay","_$scrubBar","_$quizMarkers","_$pluginContainer","_durationDisplayInitialized","_markersCreated","_lastUpdatedFormattedMediaTime","_lastUpdatedScrubTime","shouldRespectQuizMarkers","updateLoadProgress","onDownSeek","allowSkipQuestionSetMarkersBeforeTime","onMoveSeek","onUpSeek","setScrubbing","setPlayProgress","getClickX","atVideoEndTime","targetTouches","clickX","clickRelPos","playRatio","newTime","updatePlayProgress","updateUi","seeking","percentPlayed","updateTimeDisplay","formattedCurrentTime","progressText","progressDisplayText","setMarkersXPos","mediaDurationInMilliseconds","timePercent","quizMarkerContainerWidth","quizMarkerContainerHeight","questionSetMarker","marker","updateQuizMarkers","createQuizMarkers","updateMarkerVisibility","keyPressed","timeToSkip","getSafeSeekTime","onMousedown","getXPositionForQuestionSetMarker","questionSetMarkerId","measuredContainerWidth","measuredQuizMarkerWidth","usedElementWidth","foundNextMarker","nextQuizTime","onQuizzingCompleteHandler","initPlugins","onRequestAnimationFrame","durationHasChanged","scrubbing","lastScrubTime","volumeControlViewFactory","VolumeControlView","VOLUME_CACHE_KEY","MUTED_CACHE_KEY","VOLUME_SLIDER_MIN","VOLUME_SLIDER_MAX","MOUSEOUT_HIDE_SLIDER_TIMEOUT","FOCUSOUT_HIDE_SLIDER_TIMEOUT","VOLUME_BUTTON_STRING","VOLUME_STRING","_cachedVolume","_cachedMuted","_sliderShowTimeoutId","volume_control_template","_$volumeContainer","_$volumeSliderHandle","_$volumeSlider","_$volumeSliderContainer","_$volumeControl","_initialVolume","_initialMuted","setupVolumeSlider","volumeSliderObject","slider","setMuted","onSliderDragEnd","showVolumeSlider","hideVolumeSlider","volPercent","newVol","onVolumeChanged","startHideSliderTimeout","isKeyboardEvent","onContainerMouseOver","onContainerMouseLeave","hideVolumeSliderOnFocusOut","onVolumeButtonClick","enableControls","onSliderMouseDownHandler","beforeAfterPlayControlsViewFactory","BeforeAfterPlayControlsView","rightParenRegex","leftParenRegex","_$videoClickToPlayLink","_$videoClickToReplayLink","_$videoClickToPlayGraphic","_$videoClickToReplayGraphic","_videoElementHasLoaded","onPlayHandler","hideVideoClickToPlayLink","showVideoClickToPlayLink","setVideoClickToPlayErrorState","hideVideoClickToReplayLink","showVideoClickToReplayLink","addVideoClickToPlayBackground","posterSrc","replayHandler","before_after_play_controls_template","disableClickToPlayEvents","videoElementHasLoaded","ClickControlsViewDefinition","ClickControlsView","DEFAULT_DOUBLE_CLICK_DELAY","fullscreenView","progressBarControlView","doubleClickDelay","_$clickControls","_$playPauseStateContainer","_$playPauseStateIndicator","_clicks","_doubleClickTimer","_doubleClickDelay","onClickPlay","onClickPause","processHotspotActiveChange","mediaPaused","playerViewDefinition","playerView","_updateBufferedTimeout","_lastClickTime","_self","_containerSelector","_containerIDString","_videoTagUniqueId","_html5ViewEnabled","_playerViewEventCallbacks","_queuedMediaBinds","_initializedValues","_captionService","_mediaWrapper","_mediaElement","_$videoWrapper","_$videoDiv","_$hotspotsContainer","_$mediaPluginContainer","_$youtubePointerEventWorkaround","_renderLibView","_tocView","_audioDescriptionControlView","_audioDescriptionTrackView","_captionsView","_hotspotsView","_beforeAfterPlayControlsView","_playRewindControlsView","_prevNextControlsView","_progressBarControlView","_volumeControlView","_playerSettingsView","_pipControlView","_fullscreenControlView","_ioOverlayView","_clickControls","_animationSpeed","_intrinsicWidth","_intrinsicHeight","_currentTimeInMilliseconds","_timeAfterSeek","_surfaceClickLeaveDelay","_mouseMoveTolerance","_lastMouseMoveCoords","_tabController","_autoHideTimeoutId","_autoHideControllerTime","_lastQuestionSetId","_lastQuestionSetMarkerTime","_eventLastPercentReported","_eventPercentWatchInc","_canPlayVideo","_viewDirty","_seeking","_displayToc","_controlsHidden","_videoMetadataReady","_processingEndOfVideo","_atVideoEndTime","_eventPlayTracking","_eventCategory","_haveYouTubePlayer","_loadVideoTimeout","_overlaysDisabled","_startPlaybackOnInit","_mediaFailedToPlay","_autoHideControlsEnabled","_playerInitializedAfterMetadataLoaded","_lang","_uiInitialized","_controlBarHeight","processPlayerEvent","category","_gaq","onPlayPromiseError","disableAutoHideControls","playPromise","isControlsHidden","sizeCaptions","newHeight","calculateCanvasScale","updateQuizPointAtPosition","playerXOffset","markerXPosition","pointAtXPosition","sizePageElements","isVideoFoundOnPage","ratioOfWidth","ratioOfHeight","handleControlsUpdated","showControlsWithAutoHide","enableAutoHideControls","onVideoReady","onExpandVideo","onPipChanged","showControls","finishInitializationAfterMetaDataLoaded","processHotspotClick","onLoadedMetadata","triggerRumDataEvent","onVideoTimeUpdate","updateAnalytics","getScrubbing","updateQuizzing","updateCaptions","processEndOfMedia","showControlsWithoutAutoHide","seek","onVideoWatchedPercentage","showToc","bShow","setupProgressBarAtPageLoad","updateBuffered","downloaded","blockTextSelection","onselectstart","unblockTextSelection","safeSeek","hideVideoAndShowClickToReplay","reshowVideoAfterClickToReplay","initCurrentMedia","setupControls","resetPlayStartAnalytics","hideClickToPlayControl","resetHideControlsTimeout","onTocItemClicked","videoIndex","setupPlayerSettingsView","validRateSettings","resizeAfterOrientationChange","replayVideo","onContainerClick","onContainerLeave","hideControlsOnTimeout","onContainerMousemove","deltaX","deltaY","clearHideControlsTimeout","forceHide","hideElementAfterFadeOut","controlsAreBusy","onAutoHide","disableOverlays","onCanPlayVideo","onSeeking","onSeeked","processScormInitialData","onPlayingEvent","timeToSeek","convertUrlTime","setupViews","setupXmpFeatures","getHtmlForPlayer","includeControls","includePosterIfAvailable","numberMediaSource","showVideoLoadingMessage","getVideoElement","handleFirstPlay","initQuiz","initUI","onYouTubeError","initMediaPlugins","onLoadStart","onLoadedData","processQueuedMediaBinds","eventsToBind","playing","seeked","timeupdate","volumechange","loadstart","loadedmetadata","loadeddata","canplay","processCaptionChanged","videoNotFoundError","clearVideoTimeout","resetTime","quizEventHandler","prevMarkerTime","jumpToTimeInSeconds","onLoadAndPlayControlEvent","onPlaybackReady","onPlayControlEvent","initDomForHTML5","containerSelector","displayToc","html5VideoMarkup","html5_player_template","setupHeadlessMode","setupServices","timingMeasureList","rum","initHTML5","targetWindow","hrs","sec","strTime","hrsPattern","minPattern","secPattern","numPattern","hrsTest","minTest","secTest","numTest","addMediaEventListener","removeMediaEventListener","isYouTube","getCaptionCollection","getCaptionTrack","setCaptionTrack","getCaptionsVisible","setCaptionsVisible","setupExternalEventCallbackHarness","eventKey","externalEventIsSupported","initHtml5View","displaySidebar","initTscProjView","containerElement","mediaLib","initYouTubeView","srcForMedia","jsSeekTime","jsPlay","getCurrentSrc","currentSrc","getEnded","getMuted","getPaused","getPlaybackRate","getBuffered","getPlayed","getSeekable","getSeeking","getVolume","setCurrentTime","isInFullScreenMode","getIsYouTube","imageView","_imageDiv","_quizBar","_imageWrapper","_animating","_clickToTakeTheQuiz","_txtHideQuiz","_txtShowQuiz","_txtHideAnswer","_txtShowAnswer","_imageNotFound","_defaultMarkup","image_view_template","_showQuizEventListeners","_hideQuizEventListeners","_showQuiz","_quizBarShowingAnswers","_submitting","_loaded","_minScale","setBackgroundImage","imageDisplayedCallback","setupPanAndZooming","getMediaRotationDegrees","calculateMinScale","mediaRotationDegrees","nativeScale","clientWidth","mouseWheelEvent","wheelDelta","zoomOut","zoomEvent","setZoomInOrOutCursor","zoomEndNativeScale","onContainerResize","getOffset","initDom","toggleQuizBar","$this","calculateAspectRatioFit","srcWidth","srcHeight","maxHeight","ratio","offsetImage","moveLeft","parentWidth","parentHeight","showSubmitting","hideSubmitting","initView","imageSrc","showQuizBar","initEvents","mediaPlayerFactory","mediaPlayer","PLAYER_VERSION","_spElementId","_sentViewEvent","mediaListError","xmpErrorHandler","imageQuizLoadErrorHandler","initAnalytics","ga","onPreRollStart","continueInit","initPlayer","mediaListReady","playbackInitiatedHandler","playerStartedHandler","processMediaAssets","processXMP","setQuizModel","processQuizzing","successCallback","setupPlayer","embedded_config_xml","captionChangeHandler","setupBasicCss","$parentNode","initPlayerView","displayLocalWarning","triggerEvent","spElementId","getSmartPlayerRootElement","getVersion","jsDebugUI","mediaInterfaceFactory","mediaInterface","_validEvents","_started","_environment","_controls","_authInfo","_lastError","getAutoPlay","getControls","setControls","getLoop","setLoop","getError","getAuthInfo","setAuthInfo","generalErrorHandler","signInToken","returnUrl","sourceurl","signintoken","setupPluginController","pluginInitPromise","addSrc","tocSrc","prerollSrc","captionsVisible","ignoreStoredCaptionVisible","authInfo","environment","singleClickControlEnabled","doubleClickControlEnabled"],"mappings":"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CV/mH,EAAU2uI,eACV3uI,EAAU64K,cACV74K,EAAU0sM,QACV1sM,EAAUioJ,gBACVjoJ,EAAUq+K,cACVr+K,EAAUs2M,QACVt2M,EAAUq0M,4BACVr0M,EAAU80M,0BACV90M,EAAUqyM,aACVryM,EAAUihN,aACVjhN,EAAUqpN,kBACVrpN,EAAU6jN,uBACV7jN,EAAUskN,qBACVtkN,EAAUgoM,eACVhoM,EAAU2oM,sBACV3oM,EAAUitN,kBACVjtN,EAAU4vI,WACV5vI,EAAU9mB,OACV8mB,EAAUsjM,qBACVtjM,EAAU8kN,uBACV9kN,EAAU4rN,4BACV5rN,EAAUpJ,SACVoJ,EAAU2oK,kBACV3oK,EAAU8uI,UACV9uI,EAAU2uJ,WACV3uJ,EAAU68K,WACV78K,EAAUgpJ,0BACVhpJ,EAAU0sK,WACV1sK,EAAUmoB,IACVnoB,EAAUwmK,4BACVxmK,EAAUg2L,gBACVh2L,EAAUkuI,cACVluI,EAAUikK,qBACVjkK,EAAUigI,eACVjgI,EAAU29K,eACV39K,EAAUwlK,gBACb33L,KAAM,SAASD,EACA6rC,EACAwyH,EACAoe,EACA7oB,EACA6iE,EACAjjD,EACAnW,EACAutD,EACAlnC,EACA4zC,EACAvW,EACA5nE,EACA4nB,EACAkqC,EACA6zB,EACAzkD,EACAo2B,EACAi4B,EACAjC,EACAS,EACAzC,EACA4O,EACAoI,EACAxF,EACAS,EACAtc,EACAW,EACAskB,EACAr9E,EACA12J,EACAoqN,EACAwhB,EACA8G,EACAh1N,EACA+xK,EACA75B,EACA6f,EACAkuB,EACA7zB,EACA0jB,EACAvkJ,EACAq+I,EACAwvB,EACA9nD,EACA+1B,EACAhkC,EACA09C,EACAnY,GACf,YAEA,IA6CI0oD,GACAC,EA9CAC,EAAQvgP,KACRwyM,EAAc,KACdguC,EAAqB,KACrBC,GAAqB,KACrBC,GAAoB,KAEpBC,IAAoB,EACpBnvB,GAAa,KACbovB,MACAC,MACAC,MACAC,GAAkB,KAElBC,GAAgB,KAChBC,GAAgB,KAChBC,GAAiB,KACjBC,GAAa,KACbvc,GAAa,KACbwc,GAAs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","file":"techsmith-smart-player.min.js","sourcesContent":["/*!\n * jQuery JavaScript Library v1.12.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:17Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar deletedIds = [];\n\nvar document = window.document;\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.12.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type( obj ) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( !support.ownFirst ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[ j ] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// init accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof root.ready !== \"undefined\" ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.uniqueSort( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = true;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\t\twindow.removeEventListener( \"load\", completed );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener ||\n\t\twindow.event.type === \"load\" ||\n\t\tdocument.readyState === \"complete\" ) {\n\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE6-10\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\n\t\t// If IE event model is used\n\t\t} else {\n\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch ( e ) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t( function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t} )();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownFirst = i === \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery( function() {\n\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n} );\n\n\n( function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Support: IE<9\n\tsupport.deleteExpando = true;\n\ttry {\n\t\tdelete div.test;\n\t} catch ( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\nvar acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\n};\n\n\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\n\t\tdata === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[ i ] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, undefined\n\t} else {\n\t\tcache[ id ] = undefined;\n\t}\n}\n\njQuery.extend( {\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each( function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t} ) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object,\n\t// or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\n\n\n( function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n} )();\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ],\n\t\t\t\t\tkey,\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\nvar rleadingWhitespace = ( /^\\s+/ );\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\n\n( function() {\n\tvar div = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment(),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Setup\n\tdiv.innerHTML = \"
a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\n\tsupport.noCloneEvent = !!div.addEventListener;\n\n\t// Support: IE<9\n\t// Since attributes and properties are the same in IE,\n\t// cleanData must set properties to undefined rather than use removeAttribute\n\tdiv[ jQuery.expando ] = 1;\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\toption: [ 1, \"\" ],\n\tlegend: [ 1, \"
\", \"
\" ],\n\tarea: [ 1, \"\", \"\" ],\n\n\t// Support: IE8\n\tparam: [ 1, \"\", \"\" ],\n\tthead: [ 1, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t// unless wrapped in a div with non-breaking characters in front of it.\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n};\n\n// Support: IE8-IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context;\n\t\t\t( elem = elems[ i ] ) != null;\n\t\t\ti++\n\t\t) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\tjQuery._data(\n\t\t\telem,\n\t\t\t\"globalEval\",\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/,\n\trtbody = / from table fragments\n\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\twrap[ 1 ] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t0;\n\n\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\n\n\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t}\n\n\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\ttmp = safe.lastChild;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fix #11356: Clear elements from fragment\n\tif ( tmp ) {\n\t\tsafe.removeChild( tmp );\n\t}\n\n\t// Reset defaultChecked for any radios and checkboxes\n\t// about to be appended to the DOM in IE 6/7 (#8060)\n\tif ( !support.appendChecked ) {\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t}\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttmp = null;\n\n\treturn safe;\n}\n\n\n( function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !( support[ i ] = eventName in window ) ) {\n\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n} )();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\n\t\t\t// with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tjQuery._data( cur, \"handle\" );\n\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif (\n\t\t\t\t( !special._default ||\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\n\t\t\t\t) && acceptData( elem )\n\t\t\t) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Safari 6-8+\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\n\t\t\t\t\toriginal.toElement :\n\t\t\t\t\tfromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\n\t\t\t\t// would not be triggered on donor event, since in our own\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\n\t\t\t\t//\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\n\t\t\t\t// since `originalEvent` should point to the original event for the\n\t\t\t\t// constancy with other events and for more focused logic\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\n\t\t// This \"if\" is needed for plain objects\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event,\n\t\t\t// to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( !e || this.isSimulated ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\n// IE submit delegation\nif ( !support.submit ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\n\n\t\t\t\t\t\t// Support: IE <=8\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\n\t\t\t\t\t\tundefined;\n\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submitBubble = true;\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submitBubble ) {\n\t\t\t\tdelete event._submitBubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.change ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._justChanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._justChanged = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\n\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Support: Firefox\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome, Safari\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g,\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar first, node, hasScripts,\n\t\tscripts, doc, fragment,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval(\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\n\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\n\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[ i ] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tattributes = support.attributes,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\n\t\t\t\t\t\t// IE creates expando attributes along with the property\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append(\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\n\t\t\t\t);\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[ i ] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"prev_next_controls_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"\\r\\n\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"progress_bar_control_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_count_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"

\";\n if (helper = helpers.currentQuestionNumber) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.currentQuestionNumber); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \" \";\n if (helper = helpers.prepositionText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.prepositionText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \" \";\n if (helper = helpers.totalQuestions) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.totalQuestions); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_set_confirmation_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n

\";\n if (helper = helpers.alertText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.alertText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_set_review_confirmation_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\r\\n
\\r\\n
\";\n if (helper = helpers.numberCorrect) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.numberCorrect); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \" \";\n if (helper = helpers.percentCorrect) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.percentCorrect); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n
\";\n if (helper = helpers.numberInCorrect) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.numberInCorrect); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \" \";\n if (helper = helpers.percentInCorrect) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.percentInCorrect); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n
\\r\\n \";\n return buffer;\n }\n\n buffer += \"
\\r\\n

\";\n if (helper = helpers.alertText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.alertText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

\\r\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.numberCorrect), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_set_review_status_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n
\\r\\n
\";\n if (helper = helpers.txtAnswersSubmitted) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.txtAnswersSubmitted); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n
\";\n if (helper = helpers.gradeableDetails) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.gradeableDetails); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n
\";\n if (helper = helpers.unGradeableDetails) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.unGradeableDetails); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_set_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n
\\r\\n Submitting...\\r\\n \\\"\";\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"question_text_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n

\";\n if (helper = helpers.questionText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.questionText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

\\r\\n
\";\n if (helper = helpers.correctTextString) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.correctTextString); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n
\";\n if (helper = helpers.incorrectTextString) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.incorrectTextString); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
\\r\\n \";\n if (helper = helpers.correctAnswerText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.correctAnswerText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\r\\n
\\r\\n\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"quiz_setup_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
\\r\\n

\";\n if (helper = helpers.setupMessage) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.setupMessage); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"settings_view_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, self=this, functionType=\"function\", escapeExpression=this.escapeExpression;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\r\\n \\r\\n \";\n return buffer;\n }\nfunction program2(depth0,data) {\n \n \n return \"selected\";\n }\n\nfunction program4(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\r\\n
\\r\\n \";\n if (helper = helpers.ccLanguageText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.ccLanguageText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\r\\n \\r\\n
\\r\\n \";\n return buffer;\n }\nfunction program5(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\r\\n \\r\\n \";\n return buffer;\n }\n\n buffer += \"\\r\\n
\\r\\n
\\r\\n \";\n if (helper = helpers.playerRateText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.playerRateText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\r\\n \\r\\n
\\r\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.hasMultipleLanguages), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\r\\n
\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"short_answer_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n \n return \"autofocus\";\n }\n\n buffer += \"
\\r\\n
\\r\\n \";\n if (helper = helpers.questionText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.questionText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"toc_button_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"toc_item_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", self=this, escapeExpression=this.escapeExpression;\n\nfunction program1(depth0,data) {\n \n \n return \"limit-max-toc-item-height\";\n }\n\nfunction program3(depth0,data) {\n \n \n return \"center-flex-content\";\n }\n\nfunction program5(depth0,data) {\n \n \n return \"\\r\\n \\r\\n \";\n }\n\nfunction program7(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\r\\n \\r\\n \";\n if (helper = helpers.tocItemText) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.tocItemText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\r\\n \\r\\n \";\n return buffer;\n }\n\n buffer += \"
  • \\r\\n \\r\\n
  • \\r\\n\\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"toc_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \";\n if (helper = helpers.msgSearchIsDisabledInFS) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.msgSearchIsDisabledInFS); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
      \\r\\n\";\n return buffer;\n });\r\n\r\nthis[\"TSC\"][\"templates\"][\"volume_control_template\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression;\n\n\n buffer += \"\\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n\";\n return buffer;\n });","(function() {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n\r\n window.TSC.smartPlayerPreRollEventConstants = (function() {\r\n return {\r\n PRE_ROLL_STARTED: 'preRollStarted',\r\n PRE_ROLL_FINISHED: 'preRollFinished',\r\n PRE_ROLL_FINISHED_ACTIONS: {\r\n REMOVE_NOW: 'removeNow'\r\n }\r\n };\r\n })();\r\n})();","(function(window, templates) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n\r\n window.TSC.preRollView = (function() {\r\n var _preRollTemplate;\r\n\r\n if (templates && templates.pre_roll_container_template) {\r\n _preRollTemplate = templates.pre_roll_container_template;\r\n } else {\r\n throw Error('TSC.preRollView: Template not found');\r\n }\r\n\r\n return {\r\n render: function(preRollSrc) {\r\n var context = {preRollSizeClass: 'preRoll-fullPage', preRollSrc: preRollSrc};\r\n return _preRollTemplate(context);\r\n }\r\n };\r\n })();\r\n}(window, window.TSC.templates));\r\n","(function(window, $, JSON, smartPlayerPreRollEventConstants, preRollView) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n\r\n window.TSC.preRollController = (function() {\r\n var _onPreRollStartedCallback;\r\n var $preRollView;\r\n var $window;\r\n\r\n $window = $(window);\r\n\r\n var preRollMessage = function(e) {\r\n e = e.originalEvent;\r\n // filter out non smart player events\r\n if (!e.data || typeof e.data.indexOf !== 'function' || e.data.indexOf('smartPlayerEventName') === -1) {\r\n return;\r\n }\r\n var message = JSON.parse(e.data);\r\n\r\n switch (message.smartPlayerEventName) {\r\n case smartPlayerPreRollEventConstants.PRE_ROLL_STARTED: {\r\n if (_onPreRollStartedCallback) {\r\n _onPreRollStartedCallback();\r\n }\r\n break;\r\n }\r\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED: {\r\n switch (message.data.action) {\r\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED_ACTIONS.REMOVE_NOW: {\r\n destroyView();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n var onIFrameContentLoaded = function() {\r\n $preRollView.removeClass('preRollHidden');\r\n };\r\n\r\n var destroyView = function() {\r\n if ($preRollView) {\r\n $window.unbind('message', preRollMessage);\r\n $preRollView.unbind('load', onIFrameContentLoaded);\r\n $preRollView.remove();\r\n $preRollView = undefined;\r\n _onPreRollStartedCallback = undefined;\r\n }\r\n };\r\n\r\n return {\r\n createView: function(preRollSrc, onPreRollStartedCallback) {\r\n $preRollView = $(preRollView.render(preRollSrc)).appendTo('body');\r\n $preRollView.bind('load', onIFrameContentLoaded);\r\n _onPreRollStartedCallback = onPreRollStartedCallback;\r\n $window.bind('message', preRollMessage);\r\n },\r\n viewExists: function() {\r\n return $preRollView !== undefined;\r\n },\r\n destroyView: destroyView\r\n };\r\n }());\r\n}(window, window.jQuery, window.JSON, window.TSC.smartPlayerPreRollEventConstants, window.TSC.preRollView));\r\n","(function(window, JSON) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n\r\n window.TSC.externalMessageController = (function() {\r\n var registeredEvents = {};\r\n var listeningToWindowMessageEvent = false;\r\n\r\n var onExternalMessage = function(e) {\r\n // filter out non smart player events\r\n if (!e.data || typeof e.data.indexOf !== 'function' || e.data.indexOf('smartPlayerEventName') === -1) {\r\n return;\r\n }\r\n var message = JSON.parse(e.data);\r\n if (registeredEvents[message.smartPlayerEventName]) {\r\n registeredEvents[message.smartPlayerEventName].call(this, message.data);\r\n }\r\n };\r\n\r\n var addWindowMessageListener = function() {\r\n if (listeningToWindowMessageEvent) {\r\n return;\r\n }\r\n if (window.addEventListener) {\r\n window.addEventListener('message', onExternalMessage, false);\r\n } else {\r\n window.attachEvent('onmessage', onExternalMessage);\r\n }\r\n listeningToWindowMessageEvent = true;\r\n };\r\n\r\n var removeWindowMessageListener = function() {\r\n if (!listeningToWindowMessageEvent) {\r\n return;\r\n }\r\n if (window.removeEventListener) {\r\n window.removeEventListener('message', onExternalMessage, false);\r\n } else {\r\n window.removeEvent('onmessage', onExternalMessage);\r\n }\r\n listeningToWindowMessageEvent = false;\r\n };\r\n\r\n return {\r\n addCallback: function(eventName, callbackFunction) {\r\n addWindowMessageListener();\r\n registeredEvents[eventName] = callbackFunction;\r\n },\r\n removeCallback: function(eventName) {\r\n if (registeredEvents[eventName]) {\r\n delete registeredEvents[eventName];\r\n }\r\n if (Object.keys(registeredEvents).length === 0) {\r\n removeWindowMessageListener();\r\n }\r\n },\r\n removeAllCallbacks: function() {\r\n registeredEvents = {};\r\n removeWindowMessageListener();\r\n }\r\n };\r\n }());\r\n}(this, JSON));\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.languageCodes = (function() {\r\n var _english = 'en-US';\r\n var _german = 'de-DE';\r\n var _japanese = 'ja-JP';\r\n var _french = 'fr-FR';\r\n var _spanish = 'es-ES';\r\n var _chinese = 'zh-CN';\r\n var _supportedLanguages = [\r\n _english,\r\n _german,\r\n _japanese,\r\n _french,\r\n _spanish,\r\n _chinese\r\n ];\r\n\r\n return {\r\n ENGLISH: _english,\r\n GERMAN: _german,\r\n JAPANESE: _japanese,\r\n FRENCH: _french,\r\n SPANISH: _spanish,\r\n CHINESE: _chinese,\r\n ENU: _english,\r\n DEU: _german,\r\n JPN: _japanese,\r\n FRA: _french,\r\n SP: _spanish,\r\n ZH: _chinese,\r\n isValid: function(language) {\r\n return _supportedLanguages.some(function(supportedLanguage) {\r\n return supportedLanguage === language;\r\n });\r\n }\r\n };\r\n }());\r\n}(this));\r\n","(function(window, hotspotViewStateFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.hotspotViewState = hotspotViewStateFactory();\r\n})(this, function() {\r\n 'use strict';\r\n return Object.freeze({\r\n hidden: 'hidden',\r\n firstVisible: 'firstVisible',\r\n visible: 'visible'\r\n });\r\n});\r\n","(function(window, endActionTypeConstantsFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.endActionType = endActionTypeConstantsFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n return Object.freeze({\r\n notAvailable: 'notAvailable',\r\n loop: 'loop',\r\n jumpToTimeAndPlay: 'jumpToTime',\r\n jumpToTImeAndStop: 'jumpToTimeAndStop',\r\n showReplayControls: 'showReplayControls',\r\n hideReplayControls: 'hideReplayControls',\r\n openUrl: 'openUrl',\r\n openUrlInNewWindow: 'openUrlInNewWindow'\r\n });\r\n});\r\n\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.questionGrader = (function() {\r\n return {\r\n FATHOM: 'FATHOM',\r\n XMP: 'XMP'\r\n };\r\n }());\r\n}(this));\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.mediaType = (function() {\r\n return {\r\n WEBM: 'webm',\r\n MP4: 'mp4',\r\n OGG: 'ogg',\r\n YOUTUBE: 'youtube',\r\n JPG: 'jpg',\r\n PNG: 'png',\r\n GIF: 'gif',\r\n TSCPROJ: 'tscproj',\r\n PLAYLIST: 'playlist',\r\n UNKNOWN: 'unknown',\r\n NOT_AVAILABLE: 'not available',\r\n MULTIPLE_TYPES: 'multiple types'\r\n };\r\n }());\r\n}(this));\r\n","(function(window, cssClassesFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.cssClasses = cssClassesFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n var _smartPlayerNamespace = 'tsc-smartplayer';\r\n var _largerProgressBar = 'larger-progress-bar';\r\n var _disabled = 'disabled-button';\r\n var _hide = 'hide';\r\n var _fullscreenMode = 'fullscreen-mode';\r\n var _volumeMutedButtonGlyph = 'volume-muted-button-glyph';\r\n var _volumeLowButtonGlyph = 'volume-low-button-glyph';\r\n var _volumeMediumButtonGlyph = 'volume-medium-button-glyph';\r\n var _volumeHighButtonGlyph = 'volume-high-button-glyph';\r\n var _playButtonGlyph = 'play-button-glyph';\r\n var _pauseButtonGlyph = 'pause-button-glyph';\r\n var _fullscreenButtonGlyph = 'fullscreen-button-glyph';\r\n var _fullscreenButtonActiveGlyph = 'fullscreen-button-active-glyph';\r\n var _fullFrameButtonGlyph = 'full-frame-button-glyph';\r\n var _fullFrameButtonActiveGlyph = 'full-frame-button-active-glyph';\r\n var _expandButtonActiveGlyph = 'expand-button-glyph';\r\n var _audioDescriptionButtonGlyph = 'audio-description-button-glyph';\r\n var _audioDescriptionButtonActiveGlyph = 'audio-description-button-active-glyph';\r\n var _closedCaptionButtonGlyph = 'closed-caption-glyph';\r\n var _closedCaptionNonEnglishButtonGlyph = 'closed-caption-non-en-glyph';\r\n var _closedCaptionButtonActiveGlyph = 'closed-caption-active-glyph';\r\n var _closedCaptionNonEnglishButtonActiveGlyph = 'closed-caption-non-en-active-glyph';\r\n var _tocButtonGlyph = 'toc-button-glyph';\r\n var _tocButtonActiveGlyph = 'toc-button-active-glyph';\r\n var _settingsButtonGlyph = 'settings-button-glyph';\r\n var _settingsButtonActiveGlyph = 'settings-button-active-glyph';\r\n var _tertiaryButton = 'tertiary-button';\r\n var _tertiaryButtonActive = 'tertiary-button-active';\r\n var _generatedPluginContainer = 'generated-plugin-container';\r\n var _pluginNamedContainerPrefix = 'plugin-';\r\n var _hotspotVisible = 'hotspot-visible';\r\n var _screenReaderAlert = 'alert-only';\r\n\r\n return Object.defineProperties({}, {\r\n smartPlayerNamespace: {value: _smartPlayerNamespace},\r\n largerProgressBar: {value: _largerProgressBar},\r\n hide: {value: _hide},\r\n disabled: {value: _disabled},\r\n fullscreenMode: {value: _fullscreenMode},\r\n volumeMutedButtonGlyph: {value: _volumeMutedButtonGlyph},\r\n volumeLowButtonGlyph: {value: _volumeLowButtonGlyph},\r\n volumeMediumButtonGlyph: {value: _volumeMediumButtonGlyph},\r\n volumeHighButtonGlyph: {value: _volumeHighButtonGlyph},\r\n playButtonGlyph: {value: _playButtonGlyph},\r\n pauseButtonGlyph: {value: _pauseButtonGlyph},\r\n fullscreenButtonGlyph: {value: _fullscreenButtonGlyph},\r\n fullscreenButtonActiveGlyph: {value: _fullscreenButtonActiveGlyph},\r\n fullFrameButtonGlyph: {value: _fullFrameButtonGlyph},\r\n fullFrameButtonActiveGlyph: {value: _fullFrameButtonActiveGlyph},\r\n expandButtonGlyph: {value: _expandButtonActiveGlyph},\r\n audioDescriptionButtonGlyph: {value: _audioDescriptionButtonGlyph},\r\n audioDescriptionButtonActiveGlyph: {value: _audioDescriptionButtonActiveGlyph},\r\n closedCaptionButtonGlyph: {value: _closedCaptionButtonGlyph},\r\n closedCaptionNonEnglishButtonGlyph: {value: _closedCaptionNonEnglishButtonGlyph},\r\n closedCaptionButtonActiveGlyph: {value: _closedCaptionButtonActiveGlyph},\r\n closedCaptionNonEnglishButtonActiveGlyph: {value: _closedCaptionNonEnglishButtonActiveGlyph},\r\n tocButtonGlyph: {value: _tocButtonGlyph},\r\n tocButtonActiveGlyph: {value: _tocButtonActiveGlyph},\r\n settingsButtonGlyph: {value: _settingsButtonGlyph},\r\n settingsButtonActiveGlyph: {value: _settingsButtonActiveGlyph},\r\n tertiaryButton: {value: _tertiaryButton},\r\n tertiaryButtonActive: {value: _tertiaryButtonActive},\r\n generatedPluginContainer: {value: _generatedPluginContainer},\r\n pluginNamedContainerPrefix: {value: _pluginNamedContainerPrefix},\r\n hotspotVisible: {value: _hotspotVisible},\r\n screenReaderAlert: {value: _screenReaderAlert}\r\n });\r\n});\r\n\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.events = (function() {\r\n // external smart player events (value casing matters to maintain backward capability)\r\n var _videoStartInitiated = 'VIDEO_START_INITIATED';\r\n var _videoStart = 'VIDEO_START';\r\n var _mediaReady = 'MEDIA_READY';\r\n var _captionChange = 'CAPTION_CHANGE';\r\n var _ready = 'READY';\r\n var _videoPlay = 'VIDEO_PLAY';\r\n var _playerFullScreenModeChanged = 'PLAYER_FULL_SCREEN_MODE_CHANGED';\r\n var _playerRumData = 'PLAYER_RUM_DATA';\r\n\r\n // Control Events\r\n var _clickPrevControl = 'tscspClickPrevControl';\r\n var _clickNextControl = 'tscspClickNextControl';\r\n var _fullScreenChange = 'tscspFullScreenChange';\r\n var _expandVideo = 'tscspExpandVideo';\r\n var _clickLoadAndPlayControl = 'tscspClickLoadAndPlayControl';\r\n var _clickPlayControl = 'tscspClickPlayControl';\r\n var _showToc = 'tscspShowToc';\r\n var _hideToc = 'tscspHideToc';\r\n var _disableControls = 'tscspDisableControls';\r\n var _enableControls = 'tscspEnableControls';\r\n var _controlsUpdated = 'tscspControlsUpdated';\r\n var _pipChanged = 'tscspPipChange';\r\n\r\n // Media Element Events\r\n var _playMedia = 'play';\r\n var _pauseMedia = 'pause';\r\n var _seekMediaToTime = 'tscspSeekMediaToTime';\r\n var _replayMedia = 'tscspReplayMedia';\r\n var _endMedia = 'tscspEndMedia';\r\n\r\n // IFrame Events\r\n var _enterFullFrame = 'ENTER-FULLFRAME';\r\n var _exitFullFrame = 'EXIT-FULLFRAME';\r\n\r\n // Update Events\r\n var _updateQuizMarkers = 'tscspUpdateQuizMarkers';\r\n var _updatePlayProgress = 'tscspUpdatePlayProgress';\r\n var _updateLoadProgress = 'tscspUpdateLoadProgress';\r\n var _updateNextQuestionPos = 'tscspUpdateNextQuestionXPos';\r\n\r\n // Scrubbing Events\r\n var _startedScrubbing = 'tscspStartedScrubbing';\r\n var _endedScrubbing = 'tscspEndedScrubbing';\r\n\r\n // Quiz Events\r\n var _quizPaused = 'tscspMediaPaused';\r\n var _quizComplete = 'tscspQuizComplete';\r\n var _quizReview = 'tscspQuizReview';\r\n var _quizBegin = 'tscspQuizBegin';\r\n var _quizBeginClicked = 'tscspQuizBeginClicked';\r\n var _quizSkip = 'tscspQuizSkip';\r\n var _quizSkipClicked = 'tscspSkipQuizClicked';\r\n var _quizError = 'tscspQuizError';\r\n var _quizStatus = 'tscspQuizStatus';\r\n var _quizSubmittingInstance = 'tscspSubmittingInstance';\r\n var _quizSubmitted = 'tscspQuizSubmitted';\r\n var _quizShowSubmissionRetryMessage = 'tscspQuizShowSubmissionRetryMessage';\r\n var _quizHideSubmissionRetryMessage = 'tscspQuizHideSubmissionRetryMessage';\r\n var _quizHideLoadingMessage = 'tscspQuizHideLoadingMessage';\r\n var _transitionImageQuizToAnswers = 'tscspTransitionImageQuizToAnswers';\r\n var _hideQuiz = 'tscspHideQuiz';\r\n var _showQuizBar = 'tscspShowQuizBar';\r\n var _closeQuestionSetView = 'tscspCloseQuestionSetView';\r\n var _submitQuestionSet = 'tscspSubmitQuestionSet';\r\n var _rationaleActionLocation = 'tscspRationaleActionLocation';\r\n var _rationaleActionJumpToTime = 'tscspRationaleActionJumpToTime';\r\n var _quizIsOutOfDate = 'tscspQuizIsOutOfDate';\r\n\r\n //Captions\r\n var _captionsChanged = 'tscspCaptionChanged';\r\n var _captionsLanguageChanged = 'tscspLanguageChanged';\r\n\r\n // Audio Description\r\n var _audioDescriptionChanged = 'tscspAudioDescriptionChanged';\r\n var _audioDescriptionFailed = 'tscspAudioDescriptionFailed';\r\n\r\n //Hotspots\r\n var _hotspotPaused = 'tscspHotspotPaused';\r\n var _hotspotResume = 'tscspHotspotResume';\r\n var _hotspotClicked = 'tscspHotspotClicked';\r\n var _hotspotAreaActive = 'tscspHotspotAreaActive';\r\n var _hotspotAreaInactive = 'tscspHotspotAreaInactive';\r\n\r\n //Timing\r\n var _smartPlayerInitialized = 'smart_player_initialized';\r\n var _smartPlayerLoaded = 'smart_player_loaded';\r\n var _videoMetadataLoaded = 'video_metadata_loaded';\r\n var _videoLoadeData = 'video_loaded_data';\r\n var _videoCanPlay = 'video_can_play';\r\n\r\n //Plugins\r\n var _pluginAdded = 'pluginAdded';\r\n\r\n return Object.freeze({\r\n External: {\r\n VideoStartInitiated: _videoStartInitiated,\r\n VideoStart: _videoStart,\r\n MediaReady: _mediaReady,\r\n CaptionChange: _captionChange,\r\n Ready: _ready,\r\n VideoPlay: _videoPlay,\r\n PlayerFullScreenModeChanged: _playerFullScreenModeChanged,\r\n PlayerRumData: _playerRumData\r\n },\r\n Controls: {\r\n ClickPrev: _clickPrevControl,\r\n ClickNext: _clickNextControl,\r\n FullScreenChange: _fullScreenChange,\r\n ExpandVideo: _expandVideo,\r\n LoadAndPlayControl: _clickLoadAndPlayControl,\r\n PlayControl: _clickPlayControl,\r\n ShowToc: _showToc,\r\n HideToc: _hideToc,\r\n Disable: _disableControls,\r\n Enable: _enableControls,\r\n Updated: _controlsUpdated,\r\n HotspotClicked: _hotspotClicked,\r\n PipChanged: _pipChanged\r\n },\r\n Hotspots: {\r\n Paused: _hotspotPaused,\r\n Resume: _hotspotResume,\r\n AreaActive: _hotspotAreaActive,\r\n AreaInactive: _hotspotAreaInactive\r\n },\r\n Media: {\r\n Play: _playMedia,\r\n Pause: _pauseMedia,\r\n SeekToTime: _seekMediaToTime,\r\n Replay: _replayMedia,\r\n End: _endMedia\r\n },\r\n IFrame: {\r\n EnterFullFrame: _enterFullFrame,\r\n ExitFullFrame: _exitFullFrame\r\n },\r\n Update: {\r\n QuizMarkers: _updateQuizMarkers,\r\n PlayProgress: _updatePlayProgress,\r\n LoadProgress: _updateLoadProgress,\r\n NextQuestionPosition: _updateNextQuestionPos\r\n },\r\n Scrubbing: {\r\n Started: _startedScrubbing,\r\n Ended: _endedScrubbing\r\n },\r\n Quizzing: {\r\n Paused: _quizPaused,\r\n Complete: _quizComplete,\r\n Review: _quizReview,\r\n Begin: _quizBegin,\r\n BeginClicked: _quizBeginClicked,\r\n Skip: _quizSkip,\r\n SkipClicked: _quizSkipClicked,\r\n Error: _quizError,\r\n Status: _quizStatus,\r\n SubmittingInstance: _quizSubmittingInstance,\r\n Submitted: _quizSubmitted,\r\n ShowSubmissionRetryMessage: _quizShowSubmissionRetryMessage,\r\n HideSubmissionRetryMessage: _quizHideSubmissionRetryMessage,\r\n HideLoadingMessage: _quizHideLoadingMessage,\r\n TransitionImageQuizToAnswers: _transitionImageQuizToAnswers,\r\n HideQuiz: _hideQuiz,\r\n ShowQuizBar: _showQuizBar,\r\n CloseQuestionSetView: _closeQuestionSetView,\r\n SubmitQuestionSet: _submitQuestionSet,\r\n RationaleActionLocation: _rationaleActionLocation,\r\n RationaleActionJumpToTime: _rationaleActionJumpToTime,\r\n QuizIsOutOfDate: _quizIsOutOfDate\r\n },\r\n Captions: {\r\n Changed: _captionsChanged,\r\n LanguageChanged: _captionsLanguageChanged\r\n },\r\n AudioDescription: {\r\n Changed: _audioDescriptionChanged,\r\n Failed: _audioDescriptionFailed\r\n },\r\n Timing: {\r\n PlayerInitialized: _smartPlayerInitialized,\r\n PlayerLoaded: _smartPlayerLoaded,\r\n VideoMetadataLoaded: _videoMetadataLoaded,\r\n VideoLoadedData: _videoLoadeData,\r\n VideoCanPlay: _videoCanPlay\r\n },\r\n Plugin: {\r\n Added: _pluginAdded\r\n }\r\n });\r\n }());\r\n}(this));\r\n","(function(window, mouseButtonsFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.mouseButtons = mouseButtonsFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n return {\r\n mainButton: 0,\r\n auxiliaryButton: 1,\r\n secondaryButton: 2\r\n };\r\n});\r\n","(function(window, scormConstantsFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.scormConstants = scormConstantsFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n return Object.freeze({\r\n fn: {\r\n initialize: 'initialize',\r\n terminate: 'terminate',\r\n getValue: 'getValue',\r\n setValue: 'setValue',\r\n commit: 'commit',\r\n getLastError: 'getLastError',\r\n getErrorString: 'getErrorString',\r\n getDiagnostic: 'getDiagnostic'\r\n },\r\n dataModelID: {\r\n cmiExit: 'cmiExit',\r\n cmiLocation: 'cmiLocation',\r\n cmiSuspendData: 'cmiSuspendData',\r\n cmiProgressMeasure: 'cmiProgressMeasure',\r\n cmiScaledPassingScore: 'cmiScaledPassingScore',\r\n cmiScoreMin: 'cmiScoreMin',\r\n cmiScoreMax: 'cmiScoreMax',\r\n cmiScoreRaw: 'cmiScoreRaw',\r\n cmiScoreScaled: 'cmiScoreScaled',\r\n cmiSuccessStatus: 'cmiSuccessStatus',\r\n cmiCompletionStatus: 'cmiCompletionStatus'\r\n },\r\n scorm1Dot2DataModel: {\r\n cmiExit: 'cmi.core.exit',\r\n cmiLocation: 'cmi.core.lesson_location',\r\n cmiSuspendData: 'cmi.suspend_data',\r\n cmiProgressMeasure: null,\r\n cmiScaledPassingScore: 'cmi.student_data.mastery_score',\r\n cmiScoreMin: 'cmi.core.score.min',\r\n cmiScoreMax: 'cmi.core.score.max',\r\n cmiScoreRaw: 'cmi.core.score.raw',\r\n cmiScoreScaled: 'cmi.core.score.scaled',\r\n cmiSuccessStatus: null,\r\n cmiCompletionStatus: 'cmi.core.lesson_status'\r\n },\r\n scorm2004DataModel: {\r\n cmiExit: 'cmi.exit',\r\n cmiLocation: 'cmi.location',\r\n cmiSuspendData: 'cmi.suspend_data',\r\n cmiProgressMeasure: 'cmi.progress_measure',\r\n cmiScaledPassingScore: 'cmi.scaled_passing_score',\r\n cmiScoreMin: 'cmi.score.min',\r\n cmiScoreMax: 'cmi.score.max',\r\n cmiScoreRaw: 'cmi.score.raw',\r\n cmiScoreScaled: 'cmi.score.scaled',\r\n cmiSuccessStatus: 'cmi.success_status',\r\n cmiCompletionStatus: 'cmi.completion_status'\r\n },\r\n status: {\r\n completed: 'completed',\r\n incomplete: 'incomplete',\r\n notAttempted: 'not attempted',\r\n unknown: 'unknown',\r\n passed: 'passed',\r\n failed: 'failed',\r\n browsed: 'browsed'\r\n },\r\n exitStates: {\r\n complete: '',\r\n suspend: 'suspend'\r\n },\r\n versions: {\r\n NOT_DETECTED: -1,\r\n SCORM_1_2: 0,\r\n SCORM_2004: 1\r\n }\r\n });\r\n});\r\n\r\n","(function(window, tabIndexFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.tabIndex = tabIndexFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n return {\r\n Disabled: -1,\r\n VideoWrapper: -1,\r\n QuestionReviewText: 0,\r\n HotspotView: 0,\r\n InitialPlay: 1,\r\n Progress: 2,\r\n Rewind: 3,\r\n Play: 4,\r\n Previous: 5,\r\n Next: 6,\r\n Volume: 7,\r\n VolumeSlider: 8,\r\n AudioDescription: 9,\r\n ClosedCaption: 10,\r\n TOC: 11,\r\n TOCSearch: 12,\r\n TOCErase: 16,\r\n TOCItem: 17,\r\n Settings: 18,\r\n SpeedSetting: 19,\r\n CCLanguageSetting: 20,\r\n Pip: 21,\r\n Fullscreen: 22,\r\n EndReplay: 23\r\n };\r\n});\r\n","(function(window, rationaleActionTypeFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.rationaleActionType = rationaleActionTypeFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class rationaleActionType\r\n * @classdesc Rationale Action Types\r\n */\r\n\r\n return Object.defineProperties({}, {\r\n /**\r\n * @public\r\n * @readonly\r\n * @static\r\n * @memberof TSC.rationaleActionType\r\n * @property {String} CONTINUE - continue type\r\n */\r\n CONTINUE: {\r\n value: 'continue'\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @static\r\n * @memberof TSC.rationaleActionType\r\n * @property {String} LOCATION - location type\r\n */\r\n LOCATION: {\r\n value: 'location'\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @static\r\n * @memberof TSC.rationaleActionType\r\n * @property {String} JUMP_TO_TIME - jump to time type\r\n */\r\n JUMP_TO_TIME: {\r\n value: 'jumpToTIme'\r\n }\r\n });\r\n});\r\n","(function(window, localizationStringsFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.localizationStrings = localizationStringsFactory(window.tscme, namespace.languageCodes, namespace.log);\r\n})(this, function(tscme, languageCodes, log) {\r\n 'use strict';\r\n\r\n var _language = languageCodes.ENGLISH;\r\n var _playerStringsExport = {};\r\n var _prepositionText = '';\r\n\r\n var playerStrings = {};\r\n playerStrings.xmpError = {};\r\n playerStrings.xmpError[languageCodes.ENGLISH] = 'There seems to be a problem accessing certain features of this video. Please contact the video Author.';\r\n playerStrings.xmpError[languageCodes.GERMAN] = 'Einige Merkmale dieses Videos sind offenbar nicht zugänglich. Bitte setzen Sie sich mit dem Autor des Videos in Verbindung.';\r\n playerStrings.xmpError[languageCodes.JAPANESE] = 'このビデオの特定機能にアクセスする時に問題が発生したようです。ビデオの作成者に連絡してください。';\r\n playerStrings.xmpError[languageCodes.FRENCH] = 'Il semblerait qu\\'il y ait un problème pour accéder à certaines fonctionnalités de cette vidéo. Veuillez contacter l\\'auteur de la vidéo.';\r\n playerStrings.xmpError[languageCodes.SPANISH] = 'Parece que hay problemas para acceder a determinadas funciones de este vídeo. Póngase en contacto con el autor.';\r\n playerStrings.xmpError[languageCodes.CHINESE] = '访问此视频的某些功能似乎存在问题。请联系视频作者。';\r\n\r\n playerStrings.xmpSecurity = {};\r\n playerStrings.xmpSecurity[languageCodes.ENGLISH] = 'Certain features in your video are currently disabled due to Local Network Security. These features work correctly when the video is played from a Website or Server.';\r\n playerStrings.xmpSecurity[languageCodes.GERMAN] = 'Einige Merkmale Ihrem Video sind zurzeit aufgrund der Sicherheitseinstellungen im lokalen Netzwerk deaktiviert. Diese Merkmale funktionieren wie vorgesehen, wenn das Video über eine Website oder einen Server wiedergegeben wird.';\r\n playerStrings.xmpSecurity[languageCodes.JAPANESE] = 'ローカル ネットワークのセキュリティのために、ビデオの特定機能が現在無効になっています。これらの機能は、Web サイトまたはサーバーからビデオを再生すると正しく動作します。';\r\n playerStrings.xmpSecurity[languageCodes.FRENCH] = 'Certaines fonctionnalités de votre vidéo sont actuellement désactivées pour des raisons de sécurité du réseau local. Elles fonctionnent correctement lorsque la vidéo est lue à partir d\\'un site Web ou d\\'un serveur.';\r\n playerStrings.xmpSecurity[languageCodes.SPANISH] = 'Actualmente determinadas funciones del vídeo están desactivadas debido a la configuración de seguridad de la red local. Funcionarán correctamente cuando el vídeo se reproduzca desde un sitio web o un servidor.';\r\n playerStrings.xmpSecurity[languageCodes.CHINESE] = '由于本地网络安全,您视频中的某些功能当前已被禁用。从网站或服务器播放此视频时,这些功能正常工作。';\r\n\r\n playerStrings.videoNotSupported = {};\r\n playerStrings.videoNotSupported[languageCodes.ENGLISH] = 'Your browser cannot play this video.';\r\n playerStrings.videoNotSupported[languageCodes.GERMAN] = 'Ihr Browser kann dieses Video nicht wiedergeben.';\r\n playerStrings.videoNotSupported[languageCodes.JAPANESE] = 'お使いのブラウザではこのビデオを再生できません。';\r\n playerStrings.videoNotSupported[languageCodes.FRENCH] = 'Votre navigateur ne peut pas lire cette vidéo.';\r\n playerStrings.videoNotSupported[languageCodes.SPANISH] = 'Su explorador no puede reproducir este vídeo.';\r\n playerStrings.videoNotSupported[languageCodes.CHINESE] = '您的浏览器无法播放此视频。';\r\n\r\n playerStrings.noWebMSupport = {};\r\n playerStrings.noWebMSupport[languageCodes.ENGLISH] = 'This browser does not support WebM video.';\r\n playerStrings.noWebMSupport[languageCodes.GERMAN] = 'Dieser Browser bietet keine WebM-Video-Unterstützung.';\r\n playerStrings.noWebMSupport[languageCodes.JAPANESE] = 'このブラウザは WebM ビデオをサポートしていません。';\r\n playerStrings.noWebMSupport[languageCodes.FRENCH] = 'Ce navigateur ne prend pas en charge la vidéo WebM.';\r\n playerStrings.noWebMSupport[languageCodes.SPANISH] = 'Este explorador no admite vídeo WebM.';\r\n playerStrings.noWebMSupport[languageCodes.CHINESE] = '此浏览器不支持 WebM 视频。';\r\n\r\n playerStrings.search = {};\r\n playerStrings.search[languageCodes.ENGLISH] = 'Search';\r\n playerStrings.search[languageCodes.GERMAN] = 'Suchen';\r\n playerStrings.search[languageCodes.JAPANESE] = '検索';\r\n playerStrings.search[languageCodes.FRENCH] = 'Rechercher';\r\n playerStrings.search[languageCodes.SPANISH] = 'Buscar';\r\n playerStrings.search[languageCodes.CHINESE] = '搜索';\r\n\r\n playerStrings.searchPlaceholder = {};\r\n playerStrings.searchPlaceholder[languageCodes.ENGLISH] = 'Search...';\r\n playerStrings.searchPlaceholder[languageCodes.GERMAN] = 'Suchen...';\r\n playerStrings.searchPlaceholder[languageCodes.JAPANESE] = '検索...';\r\n playerStrings.searchPlaceholder[languageCodes.FRENCH] = 'Rechercher...';\r\n playerStrings.searchPlaceholder[languageCodes.SPANISH] = 'Buscar...';\r\n playerStrings.searchPlaceholder[languageCodes.CHINESE] = '搜索...';\r\n\r\n playerStrings.playerRateText = {};\r\n playerStrings.playerRateText[languageCodes.ENGLISH] = 'Playback Speed';\r\n playerStrings.playerRateText[languageCodes.GERMAN] = 'Wiedergabe-Geschwindigkeit';\r\n playerStrings.playerRateText[languageCodes.JAPANESE] = '再生速度';\r\n playerStrings.playerRateText[languageCodes.FRENCH] = 'Vitesse de lecture';\r\n playerStrings.playerRateText[languageCodes.SPANISH] = 'Velocidad de reproducción';\r\n playerStrings.playerRateText[languageCodes.CHINESE] = '播放速度';\r\n\r\n playerStrings.playerRateOptionsText = {};\r\n playerStrings.playerRateOptionsText[languageCodes.ENGLISH] = {\r\n 0.25: '0.25',\r\n 0.5: '0.5',\r\n 0.75: '0.75',\r\n 1: 'normal',\r\n 1.25: '1.25',\r\n 1.5: '1.5',\r\n 1.75: '1.75',\r\n 2.0: '2.0'\r\n };\r\n playerStrings.playerRateOptionsText[languageCodes.GERMAN] = {\r\n 0.25: '0.25',\r\n 0.5: '0.5',\r\n 0.75: '0.75',\r\n 1: 'normal',\r\n 1.25: '1.25',\r\n 1.5: '1.5',\r\n 1.75: '1.75',\r\n 2.0: '2.0'\r\n };\r\n playerStrings.playerRateOptionsText[languageCodes.JAPANESE] = {\r\n 0.25: '0.25',\r\n 0.5: '0.5',\r\n 0.75: '0.75',\r\n 1: '標準',\r\n 1.25: '1.25',\r\n 1.5: '1.5',\r\n 1.75: '1.75',\r\n 2.0: '2.0'\r\n };\r\n playerStrings.playerRateOptionsText[languageCodes.FRENCH] = {\r\n 0.25: '0,25',\r\n 0.5: '0,5',\r\n 0.75: '0,75',\r\n 1: 'normale',\r\n 1.25: '1,25',\r\n 1.5: '1,5',\r\n 1.75: '1,75',\r\n 2.0: '2,0'\r\n };\r\n playerStrings.playerRateOptionsText[languageCodes.SPANISH] = {\r\n 0.25: '0,25',\r\n 0.5: '0,5',\r\n 0.75: '0,75',\r\n 1: 'normal',\r\n 1.25: '1,25',\r\n 1.5: '1,5',\r\n 1.75: '1,75',\r\n 2.0: '2,0'\r\n };\r\n playerStrings.playerRateOptionsText[languageCodes.CHINESE] = {\r\n 0.25: '0.25',\r\n 0.5: '0.5',\r\n 0.75: '0.75',\r\n 1: '正常',\r\n 1.25: '1.25',\r\n 1.5: '1.5',\r\n 1.75: '1.75',\r\n 2.0: '2.0'\r\n };\r\n\r\n playerStrings.ccLanguageText = {};\r\n playerStrings.ccLanguageText[languageCodes.ENGLISH] = 'Closed Captions';\r\n playerStrings.ccLanguageText[languageCodes.GERMAN] = 'Geschlossene Untertitel';\r\n playerStrings.ccLanguageText[languageCodes.JAPANESE] = 'クローズド キャプション';\r\n playerStrings.ccLanguageText[languageCodes.FRENCH] = 'Sous-titres activables';\r\n playerStrings.ccLanguageText[languageCodes.SPANISH] = 'Subtítulos';\r\n playerStrings.ccLanguageText[languageCodes.CHINESE] = '隐藏式字幕';\r\n\r\n playerStrings.searchDisabledFullScreen = {};\r\n playerStrings.searchDisabledFullScreen[languageCodes.ENGLISH] = 'Search is disabled in fullscreen mode.';\r\n playerStrings.searchDisabledFullScreen[languageCodes.GERMAN] = 'Die Suche ist im Vollbildmodus deaktiviert.';\r\n playerStrings.searchDisabledFullScreen[languageCodes.JAPANESE] = 'フル画面モードでは検索機能は無効です。';\r\n playerStrings.searchDisabledFullScreen[languageCodes.FRENCH] = 'La recherche est désactivée en mode Plein écran.';\r\n playerStrings.searchDisabledFullScreen[languageCodes.SPANISH] = 'La función Buscar está desactivada en el modo de pantalla completa.';\r\n playerStrings.searchDisabledFullScreen[languageCodes.CHINESE] = '搜索在全屏模式下被禁用。';\r\n\r\n playerStrings.mediaNotFound = {};\r\n playerStrings.mediaNotFound[languageCodes.ENGLISH] = 'We\\'re sorry, but we are unable to connect to this content. Please try refreshing the page or click here for more help.';\r\n playerStrings.mediaNotFound[languageCodes.GERMAN] = 'Leider können wir im Moment keine Verbindung zu diesen Inhalten herstellen. Bitte versuchen Sie die Seite neu zu laden oder klicken Sie hier für weitere Hilfe.';\r\n playerStrings.mediaNotFound[languageCodes.JAPANESE] = '申し訳ありません。このコンテンツに接続できません。ページを再読み込みするか、ここをクリックしてヘルプをご参照ください。';\r\n playerStrings.mediaNotFound[languageCodes.FRENCH] = 'Nous sommes désolés, nous n\\'avons pas pu établir de connexion avec ce contenu. Essayez d\\'actualiser la page ou cliquez ici pour obtenir de l\\'aide.';\r\n playerStrings.mediaNotFound[languageCodes.SPANISH] = 'Lo lamentamos, pero no hemos podido conectarnos a este contenido. Pruebe a actualizar la página o pulse aquí para obtener ayuda.';\r\n playerStrings.mediaNotFound[languageCodes.CHINESE] = '很抱歉,我们无法连接到此内容。请尝试刷新页面或单击此处获取更多帮助。';\r\n\r\n playerStrings.videoLoading = {};\r\n playerStrings.videoLoading[languageCodes.ENGLISH] = 'The video is loading.';\r\n playerStrings.videoLoading[languageCodes.GERMAN] = 'Das Video wird geladen.';\r\n playerStrings.videoLoading[languageCodes.JAPANESE] = 'ビデオを読み込んでいます。';\r\n playerStrings.videoLoading[languageCodes.FRENCH] = 'La vidéo est en cours de chargement.';\r\n playerStrings.videoLoading[languageCodes.SPANISH] = 'El vídeo se está cargando.';\r\n playerStrings.videoLoading[languageCodes.CHINESE] = '视频正在加载';\r\n\r\n playerStrings.close = {};\r\n playerStrings.close[languageCodes.ENGLISH] = 'Close';\r\n playerStrings.close[languageCodes.GERMAN] = 'Schließen';\r\n playerStrings.close[languageCodes.JAPANESE] = '閉じる';\r\n playerStrings.close[languageCodes.FRENCH] = 'Fermer';\r\n playerStrings.close[languageCodes.SPANISH] = 'Cerrar';\r\n playerStrings.close[languageCodes.CHINESE] = '关闭';\r\n\r\n playerStrings.playWithSmartPlayer = {};\r\n playerStrings.playWithSmartPlayer[languageCodes.ENGLISH] = 'Play with TechSmith Smart Player';\r\n playerStrings.playWithSmartPlayer[languageCodes.GERMAN] = 'Mit TechSmith Smart Player abspielen';\r\n playerStrings.playWithSmartPlayer[languageCodes.JAPANESE] = 'クリックして終了';\r\n playerStrings.playWithSmartPlayer[languageCodes.FRENCH] = 'Lire avec TechSmith Smart Player';\r\n playerStrings.playWithSmartPlayer[languageCodes.SPANISH] = 'Reproducir con TechSmith Smart Player';\r\n playerStrings.playWithSmartPlayer[languageCodes.CHINESE] = '用 TechSmith Smart Player 播放';\r\n\r\n playerStrings.playVideoOnly = {};\r\n playerStrings.playVideoOnly[languageCodes.ENGLISH] = 'Play Video Only';\r\n playerStrings.playVideoOnly[languageCodes.GERMAN] = 'Nur Video wiedergeben';\r\n playerStrings.playVideoOnly[languageCodes.JAPANESE] = 'ビデオの再生のみ';\r\n playerStrings.playVideoOnly[languageCodes.FRENCH] = 'Lire la vidéo uniquement';\r\n playerStrings.playVideoOnly[languageCodes.SPANISH] = 'Reproducir solo el vídeo';\r\n playerStrings.playVideoOnly[languageCodes.CHINESE] = '仅播放视频';\r\n\r\n playerStrings.openWithSmartPlayer = {};\r\n playerStrings.openWithSmartPlayer[languageCodes.ENGLISH] = 'Open video in TechSmith Smart Player';\r\n playerStrings.openWithSmartPlayer[languageCodes.GERMAN] = 'Öffnen Sie das Video im TechSmith Smart Player.';\r\n playerStrings.openWithSmartPlayer[languageCodes.JAPANESE] = 'TechSmith Smart Player でビデオを開く';\r\n playerStrings.openWithSmartPlayer[languageCodes.FRENCH] = 'Ouvrir la vidéo dans TechSmith Smart Player';\r\n playerStrings.openWithSmartPlayer[languageCodes.SPANISH] = 'Abrir vídeo en TechSmith Smart Player';\r\n playerStrings.openWithSmartPlayer[languageCodes.CHINESE] = '在 TechSmith Smart Player 中打开视频';\r\n\r\n playerStrings.openSmartPlayerAppStore = {};\r\n playerStrings.openSmartPlayerAppStore[languageCodes.ENGLISH] = 'Get TechSmith Smart Player for iOS';\r\n playerStrings.openSmartPlayerAppStore[languageCodes.GERMAN] = 'TechSmith Smart Player für iOS';\r\n playerStrings.openSmartPlayerAppStore[languageCodes.JAPANESE] = 'TechSmith Smart Player for iOS を入手';\r\n playerStrings.openSmartPlayerAppStore[languageCodes.FRENCH] = 'Télécharger TechSmith Smart Player pour iOS';\r\n playerStrings.openSmartPlayerAppStore[languageCodes.SPANISH] = 'Obtener TechSmith Smart Player para iOS';\r\n playerStrings.openSmartPlayerAppStore[languageCodes.CHINESE] = '获得 TechSmith Smart Player for iOS';\r\n\r\n // quizzing UI --------------------------------------------------------------------------------\r\n playerStrings.txtRequiredMessage = {};\r\n playerStrings.txtRequiredMessage[languageCodes.ENGLISH] = 'A first name, last name, and email address are required to continue.';\r\n playerStrings.txtRequiredMessage[languageCodes.GERMAN] = 'Geben Sie einen Vornamen, einen Nachnamen und eine E-Mail-Adresse an, um fortzufahren.';\r\n playerStrings.txtRequiredMessage[languageCodes.JAPANESE] = '操作を続けるには、名、姓、およびメール アドレスを必ず入力してください。';\r\n playerStrings.txtRequiredMessage[languageCodes.FRENCH] = 'Vous devez saisir un prénom, un nom et une adresse e-mail pour continuer.';\r\n playerStrings.txtRequiredMessage[languageCodes.SPANISH] = 'Debe facilitar su nombre, sus apellidos y una dirección de correo electrónico para poder continuar.';\r\n playerStrings.txtRequiredMessage[languageCodes.CHINESE] = '要继续使用名字、姓氏和电子邮件地址。';\r\n\r\n playerStrings.txtSkip = {};\r\n playerStrings.txtSkip[languageCodes.ENGLISH] = 'Continue without Questions';\r\n playerStrings.txtSkip[languageCodes.GERMAN] = 'Ohne Fragen fortfahren';\r\n playerStrings.txtSkip[languageCodes.JAPANESE] = '質問を入力せずに続行';\r\n playerStrings.txtSkip[languageCodes.FRENCH] = 'Continuer sans les questions';\r\n playerStrings.txtSkip[languageCodes.SPANISH] = 'Continuar sin preguntas';\r\n playerStrings.txtSkip[languageCodes.CHINESE] = '没有问题的情况下继续';\r\n\r\n playerStrings.txtBegin = {};\r\n playerStrings.txtBegin[languageCodes.ENGLISH] = 'Submit and Continue';\r\n playerStrings.txtBegin[languageCodes.GERMAN] = 'Abschicken und fortfahren';\r\n playerStrings.txtBegin[languageCodes.JAPANESE] = '送信して続行';\r\n playerStrings.txtBegin[languageCodes.FRENCH] = 'Envoyer et continuer';\r\n playerStrings.txtBegin[languageCodes.SPANISH] = 'Enviar y continuar';\r\n playerStrings.txtBegin[languageCodes.CHINESE] = '提交并继续';\r\n\r\n playerStrings.txtEnterFirstName = {};\r\n playerStrings.txtEnterFirstName[languageCodes.ENGLISH] = 'Enter first name';\r\n playerStrings.txtEnterFirstName[languageCodes.GERMAN] = 'Bitte Vornamen eingeben';\r\n playerStrings.txtEnterFirstName[languageCodes.JAPANESE] = '名を入力してください';\r\n playerStrings.txtEnterFirstName[languageCodes.FRENCH] = 'Saisir le prénom';\r\n playerStrings.txtEnterFirstName[languageCodes.SPANISH] = 'Introduzca su nombre';\r\n playerStrings.txtEnterFirstName[languageCodes.CHINESE] = '输入名字';\r\n\r\n playerStrings.txtEnterLastName = {};\r\n playerStrings.txtEnterLastName[languageCodes.ENGLISH] = 'Enter last name';\r\n playerStrings.txtEnterLastName[languageCodes.GERMAN] = 'Bitte Nachnamen eingeben';\r\n playerStrings.txtEnterLastName[languageCodes.JAPANESE] = '姓を入力してください';\r\n playerStrings.txtEnterLastName[languageCodes.FRENCH] = 'Saisir le nom';\r\n playerStrings.txtEnterLastName[languageCodes.SPANISH] = 'Introduzca sus apellidos';\r\n playerStrings.txtEnterLastName[languageCodes.CHINESE] = '输入姓氏';\r\n\r\n playerStrings.txtEnterEmail = {};\r\n playerStrings.txtEnterEmail[languageCodes.ENGLISH] = 'Enter email address';\r\n playerStrings.txtEnterEmail[languageCodes.GERMAN] = 'Bitte E-Mail Adresse eingeben';\r\n playerStrings.txtEnterEmail[languageCodes.JAPANESE] = 'メールアドレスを入力してください';\r\n playerStrings.txtEnterEmail[languageCodes.FRENCH] = 'Saisir l\\'adresse e-mail';\r\n playerStrings.txtEnterEmail[languageCodes.SPANISH] = 'Introduzca su dirección de correo electrónico';\r\n playerStrings.txtEnterEmail[languageCodes.CHINESE] = '输入电子邮件地址';\r\n\r\n playerStrings.txtHotspot = {};\r\n playerStrings.txtHotspot[languageCodes.ENGLISH] = 'Hotspot';\r\n playerStrings.txtHotspot[languageCodes.GERMAN] = 'Hotspot';\r\n playerStrings.txtHotspot[languageCodes.JAPANESE] = 'ホットスポット';\r\n playerStrings.txtHotspot[languageCodes.FRENCH] = 'Zone dynamique';\r\n playerStrings.txtHotspot[languageCodes.SPANISH] = 'Zona activa';\r\n playerStrings.txtHotspot[languageCodes.CHINESE] = '热点';\r\n\r\n playerStrings.txtHotspotScreenReaderAlert = {};\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.ENGLISH] = '{{numberOfHotspots}} new Hotspot';\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.GERMAN] = '{{numberOfHotspots}} neuer Hotspot';\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.JAPANESE] = '{{numberOfHotspots}} 個の新しいホットスポット';\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.FRENCH] = '{{numberOfHotspots}} nouvelle zone interactive';\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.SPANISH] = '{{numberOfHotspots}} zona activa nueva';\r\n playerStrings.txtHotspotScreenReaderAlert[languageCodes.CHINESE] = '{{numberOfHotspots}}新热点';\r\n\r\n playerStrings.txtHotspotScreenReaderAlertPlural = {};\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.ENGLISH] = '{{numberOfHotspots}} new Hotspots';\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.GERMAN] = '{{numberOfHotspots}} neue Hotspots';\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.JAPANESE] = '{{numberOfHotspots}} 個の新しいホットスポット';\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.FRENCH] = '{{numberOfHotspots}} nouvelles zones interactives';\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.SPANISH] = '{{numberOfHotspots}} zonas activas nuevas';\r\n playerStrings.txtHotspotScreenReaderAlertPlural[languageCodes.CHINESE] = '{{numberOfHotspots}}新热点';\r\n\r\n playerStrings.txtJumpToMedia = {};\r\n playerStrings.txtJumpToMedia[languageCodes.ENGLISH] = 'Jump to media';\r\n playerStrings.txtJumpToMedia[languageCodes.GERMAN] = 'Zu Medien springen';\r\n playerStrings.txtJumpToMedia[languageCodes.JAPANESE] = 'メディアへジャンプ';\r\n playerStrings.txtJumpToMedia[languageCodes.FRENCH] = 'Atteindre un élément multimédia';\r\n playerStrings.txtJumpToMedia[languageCodes.SPANISH] = 'Saltar al medio';\r\n playerStrings.txtJumpToMedia[languageCodes.CHINESE] = '跳转到媒体';\r\n\r\n playerStrings.txtJumpToTime = {};\r\n playerStrings.txtJumpToTime[languageCodes.ENGLISH] = 'Jump to time';\r\n playerStrings.txtJumpToTime[languageCodes.GERMAN] = 'Zu Zeitpunkt springen';\r\n playerStrings.txtJumpToTime[languageCodes.JAPANESE] = '時間へジャンプ';\r\n playerStrings.txtJumpToTime[languageCodes.FRENCH] = 'Atteindre une heure';\r\n playerStrings.txtJumpToTime[languageCodes.SPANISH] = 'Saltar al tiempo';\r\n playerStrings.txtJumpToTime[languageCodes.CHINESE] = '跳转到时间';\r\n\r\n playerStrings.txtOpenLink = {};\r\n playerStrings.txtOpenLink[languageCodes.ENGLISH] = 'Open link';\r\n playerStrings.txtOpenLink[languageCodes.GERMAN] = 'Link öffnen';\r\n playerStrings.txtOpenLink[languageCodes.JAPANESE] = 'リンクを開く';\r\n playerStrings.txtOpenLink[languageCodes.FRENCH] = 'Ouvrir le lien';\r\n playerStrings.txtOpenLink[languageCodes.SPANISH] = 'Abrir vínculo';\r\n playerStrings.txtOpenLink[languageCodes.CHINESE] = '打开链接';\r\n\r\n playerStrings.txtReview = {};\r\n playerStrings.txtReview[languageCodes.ENGLISH] = 'Replay Last Section';\r\n playerStrings.txtReview[languageCodes.GERMAN] = 'Letzten Abschnitt erneut wiedergeben';\r\n playerStrings.txtReview[languageCodes.JAPANESE] = '最後に選択した範囲をもう一度再生';\r\n playerStrings.txtReview[languageCodes.FRENCH] = 'Revoir la dernière section';\r\n playerStrings.txtReview[languageCodes.SPANISH] = 'Reproducir última sección';\r\n playerStrings.txtReview[languageCodes.CHINESE] = '重播最后一部分';\r\n\r\n playerStrings.txtAnswerQuestion = {};\r\n playerStrings.txtAnswerQuestion[languageCodes.ENGLISH] = 'Take Quiz Now';\r\n playerStrings.txtAnswerQuestion[languageCodes.GERMAN] = 'Jetzt am Quiz teilnehmen';\r\n playerStrings.txtAnswerQuestion[languageCodes.JAPANESE] = '今すぐクイズに解答する';\r\n playerStrings.txtAnswerQuestion[languageCodes.FRENCH] = 'Répondre au questionnaire';\r\n playerStrings.txtAnswerQuestion[languageCodes.SPANISH] = 'Responder al cuestionario ahora';\r\n playerStrings.txtAnswerQuestion[languageCodes.CHINESE] = '立即进行测验';\r\n\r\n playerStrings.txtPrev = {};\r\n playerStrings.txtPrev[languageCodes.ENGLISH] = 'Previous';\r\n playerStrings.txtPrev[languageCodes.GERMAN] = 'Zurück';\r\n playerStrings.txtPrev[languageCodes.JAPANESE] = '前へ';\r\n playerStrings.txtPrev[languageCodes.FRENCH] = 'Précédent';\r\n playerStrings.txtPrev[languageCodes.SPANISH] = 'Anterior';\r\n playerStrings.txtPrev[languageCodes.CHINESE] = '上一个';\r\n\r\n playerStrings.txtNext = {};\r\n playerStrings.txtNext[languageCodes.ENGLISH] = 'Next';\r\n playerStrings.txtNext[languageCodes.GERMAN] = 'Weiter';\r\n playerStrings.txtNext[languageCodes.JAPANESE] = '次へ';\r\n playerStrings.txtNext[languageCodes.FRENCH] = 'Suivant';\r\n playerStrings.txtNext[languageCodes.SPANISH] = 'Siguiente';\r\n playerStrings.txtNext[languageCodes.CHINESE] = '下一个';\r\n\r\n playerStrings.txtSubmit = {};\r\n playerStrings.txtSubmit[languageCodes.ENGLISH] = 'Submit Answers';\r\n playerStrings.txtSubmit[languageCodes.GERMAN] = 'Antworten abschicken';\r\n playerStrings.txtSubmit[languageCodes.JAPANESE] = '解答・回答の送信';\r\n playerStrings.txtSubmit[languageCodes.FRENCH] = 'Envoyer les réponses';\r\n playerStrings.txtSubmit[languageCodes.SPANISH] = 'Enviar respuestas';\r\n playerStrings.txtSubmit[languageCodes.CHINESE] = '提交答案';\r\n\r\n playerStrings.txtSubmittingAnswers = {};\r\n playerStrings.txtSubmittingAnswers[languageCodes.ENGLISH] = 'Submitting answers.';\r\n playerStrings.txtSubmittingAnswers[languageCodes.GERMAN] = 'Antwort wird gesendet.';\r\n playerStrings.txtSubmittingAnswers[languageCodes.JAPANESE] = '回答を送信中です。';\r\n playerStrings.txtSubmittingAnswers[languageCodes.FRENCH] = 'Envoi des réponses en cours.';\r\n playerStrings.txtSubmittingAnswers[languageCodes.SPANISH] = 'Enviando respuestas.';\r\n playerStrings.txtSubmittingAnswers[languageCodes.CHINESE] = '正在提交答案。';\r\n\r\n playerStrings.txtContinue = {};\r\n playerStrings.txtContinue[languageCodes.ENGLISH] = 'Continue';\r\n playerStrings.txtContinue[languageCodes.GERMAN] = 'Fortsetzen';\r\n playerStrings.txtContinue[languageCodes.JAPANESE] = '続行';\r\n playerStrings.txtContinue[languageCodes.FRENCH] = 'Continuer';\r\n playerStrings.txtContinue[languageCodes.SPANISH] = 'Continuar';\r\n playerStrings.txtContinue[languageCodes.CHINESE] = '继续';\r\n\r\n playerStrings.txtReviewAnswer = {};\r\n playerStrings.txtReviewAnswer[languageCodes.ENGLISH] = 'View Answers';\r\n playerStrings.txtReviewAnswer[languageCodes.GERMAN] = 'Antworten anzeigen';\r\n playerStrings.txtReviewAnswer[languageCodes.JAPANESE] = '解答・回答を表示';\r\n playerStrings.txtReviewAnswer[languageCodes.FRENCH] = 'Afficher les réponses';\r\n playerStrings.txtReviewAnswer[languageCodes.SPANISH] = 'Ver respuestas';\r\n playerStrings.txtReviewAnswer[languageCodes.CHINESE] = '查看答案';\r\n\r\n playerStrings.txtBadImageQuiz = {};\r\n playerStrings.txtBadImageQuiz[languageCodes.ENGLISH] = 'We\\'re sorry, the requested quiz is not compatible with images and could not be loaded. Please contact the author of this quiz.';\r\n playerStrings.txtBadImageQuiz[languageCodes.GERMAN] = 'Leider ist das angeforderte Quiz nicht kompatibel mit Bildern und konnte nicht geladen werden. Bitte kontaktieren Sie den Autor.';\r\n playerStrings.txtBadImageQuiz[languageCodes.JAPANESE] = '申し訳ありません。このクイズは画像と互換性がなくロードできませんでした。このクイズの作成者にお問い合わせください。';\r\n playerStrings.txtBadImageQuiz[languageCodes.FRENCH] = 'Nous sommes désolés, le questionnaire demandé étant incompatible avec les images, il ne peut pas être chargé. Veuillez contacter l\\'auteur de ce questionnaire.';\r\n playerStrings.txtBadImageQuiz[languageCodes.SPANISH] = 'Lo lamentamos, el cuestionario solicitado no admite imágenes y no se puede cargar. Póngase en contacto con el autor de este cuestionario.';\r\n playerStrings.txtBadImageQuiz[languageCodes.CHINESE] = '很抱歉,请求的测验与图片不兼容,无法加载。请联系本测验的作者。';\r\n\r\n playerStrings.txtVideoQuizNetworkErrorMessage = {};\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.ENGLISH] = 'We\\'re sorry, a network error has prevented the quiz from loading. The video is available to view. To try and reload the quiz, refresh the browser page or check your network connection.';\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.GERMAN] = 'Das Quiz konnte aufgrund eines Netzwerkfehlers nicht geladen werden. Das Video steht zur Ansicht bereit. Sie können versuchen das Quiz erneut zu laden, indem Sie die Browserseite aktualisieren bzw. Ihre Netzwerkverbindung überprüfen.';\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.JAPANESE] = '申し訳ありませんが、ネットワーク エラーによりクイズを読み込めませんでした。ビデオは表示できます。クイズを再度読み込むには、ブラウザのページを更新するか、ネットワーク接続を確認してください。';\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.FRENCH] = 'Nous sommes désolés, une erreur réseau nous empêche de charger le questionnaire. Vous pouvez afficher la vidéo. Pour essayer de recharger le questionnaire, actualisez la page Web ou vérifiez la connexion réseau.';\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.SPANISH] = 'Lo lamentamos, un error de red ha impedido la carga del cuestionario. El vídeo sí está disponible para su visualización. Para intentar volver a cargar el cuestionario, actualice la página del navegador o compruebe la conexión de red.';\r\n playerStrings.txtVideoQuizNetworkErrorMessage[languageCodes.CHINESE] = '很抱歉,网络错误导致测验无法加载。该视频可供观看。要尝试重新加载测验,请刷新浏览器页面或检查您的网络连接。';\r\n\r\n playerStrings.txtImageQuizNetworkErrorMessage = {};\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.ENGLISH] = 'We’re sorry, a network error has prevented the quiz from loading. The image is available to view. To try and reload the quiz, refresh the browser page or check your network connection.';\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.GERMAN] = 'Leider hat ein Netzwerkfehler das Laden des Quiz verhindert. Das Bild kann angeschaut werden. Um das Quiz neu zu laden, aktualisieren Sie die Browser-Seite oder prüfen Sie Ihre Netzwerkverbindung.';\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.JAPANESE] = '申し訳ありません。ネットワーク エラーによりクイズがロードされませんでした。画像は表示できます。クイズを再度ロードするには、ブラウザーのページを再読み込みするか、またはご使用のネットワーク接続を確認してください。';\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.FRENCH] = 'Nous sommes désolés, une erreur réseau nous empêche de charger le questionnaire. Vous pouvez afficher l\\'image. Pour essayer de recharger le questionnaire, actualisez la page Web ou vérifiez la connexion réseau.';\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.SPANISH] = 'Lo lamentamos, un error de red ha impedido la carga del cuestionario. La imagen sí está disponible para su visualización. Para intentar volver a cargar el cuestionario, actualice la página del navegador o compruebe la conexión de red.';\r\n playerStrings.txtImageQuizNetworkErrorMessage[languageCodes.CHINESE] = '很抱歉,网络错误导致测验无法加载。该图片可供查看。要尝试重新加载测验,请刷新浏览器页面或检查您的网络连接。';\r\n\r\n playerStrings.txtQuizErrorMessage = {};\r\n playerStrings.txtQuizErrorMessage[languageCodes.ENGLISH] = 'We\\'re attempting to save your response. Please make sure you have an active internet connection.';\r\n playerStrings.txtQuizErrorMessage[languageCodes.GERMAN] = 'Wir versuchen, Ihre Antworten zu speichern. Bitte achten Sie darauf, dass Sie eine aktive Internet Verbindung haben.';\r\n playerStrings.txtQuizErrorMessage[languageCodes.JAPANESE] = '返答の保存を試みています。インターネットに正しく接続しているか確認してください。';\r\n playerStrings.txtQuizErrorMessage[languageCodes.FRENCH] = 'Nous essayons d\\'enregistrer votre réponse. Vérifiez que vous disposez d\\'une connexion Internet active.';\r\n playerStrings.txtQuizErrorMessage[languageCodes.SPANISH] = 'Estamos intentando guardar su respuesta. Verifique que tiene conexión a Internet.';\r\n playerStrings.txtQuizErrorMessage[languageCodes.CHINESE] = '我们正在尝试保存您的回答。请确保您有有效的互联网连接。';\r\n\r\n playerStrings.txtQuizOutOfDateMessage = {};\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.ENGLISH] = 'The quiz questions have changed. Please refresh the player to get the latest quiz.';\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.GERMAN] = 'Die Quizfragen sind geändert worden. Bitte aktualisieren Sie den Player, damit das aktuelle Quiz angezeigt wird.';\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.JAPANESE] = 'クイズの質問が変更されました。最新のクイズを取得するには、Player を更新してください。';\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.FRENCH] = 'Les questions ont changé. Veuillez actualiser le lecteur pour accéder à la dernière version du questionnaire.';\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.SPANISH] = 'Las preguntas del cuestionario han cambiado. Actualiza el reproductor para ver el cuestionario más reciente.';\r\n playerStrings.txtQuizOutOfDateMessage[languageCodes.CHINESE] = '测验问题已更改。请刷新播放器以获取最新的测验。';\r\n\r\n playerStrings.txtQuizOutOfDateRefreshButtonText = {};\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.ENGLISH] = 'Refresh Player';\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.GERMAN] = 'Player aktualisieren';\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.JAPANESE] = 'Player の更新';\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.FRENCH] = 'Actualiser';\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.SPANISH] = 'Actualizar el reproductor';\r\n playerStrings.txtQuizOutOfDateRefreshButtonText[languageCodes.CHINESE] = '刷新播放器';\r\n\r\n playerStrings.txtLoaderMessageDefinition = {};\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.ENGLISH] = 'The quiz is loading.';\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.GERMAN] = 'Das Quiz wird geladen.';\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.JAPANESE] = 'クイズを読み込んでいます。';\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.FRENCH] = 'Le questionnaire est en cours de chargement.';\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.SPANISH] = 'El cuestionario se está cargando.';\r\n playerStrings.txtLoaderMessageDefinition[languageCodes.CHINESE] = '测验正在加载。';\r\n\r\n playerStrings.txtQuestionCount = {};\r\n playerStrings.txtQuestionCount[languageCodes.ENGLISH] = '{{currentQuestion}} of {{totalQuestions}}';\r\n playerStrings.txtQuestionCount[languageCodes.GERMAN] = '{{currentQuestion}} von {{totalQuestions}}';\r\n playerStrings.txtQuestionCount[languageCodes.JAPANESE] = '{{currentQuestion}} 問 ({{totalQuestions}} 問中)';\r\n playerStrings.txtQuestionCount[languageCodes.FRENCH] = '{{currentQuestion}} sur {{totalQuestions}}';\r\n playerStrings.txtQuestionCount[languageCodes.SPANISH] = '{{currentQuestion}} de {{totalQuestions}}';\r\n playerStrings.txtQuestionCount[languageCodes.CHINESE] = '{{currentQuestion}}/ {{totalQuestions}}';\r\n\r\n playerStrings.txtResults = {};\r\n playerStrings.txtResults[languageCodes.ENGLISH] = 'Results: ';\r\n playerStrings.txtResults[languageCodes.GERMAN] = 'Ergebnisse: ';\r\n playerStrings.txtResults[languageCodes.JAPANESE] = '結果: ';\r\n playerStrings.txtResults[languageCodes.FRENCH] = 'Résultats : ';\r\n playerStrings.txtResults[languageCodes.SPANISH] = 'Resultados: ';\r\n playerStrings.txtResults[languageCodes.CHINESE] = '结果:';\r\n\r\n playerStrings.txtCorrectString = {};\r\n playerStrings.txtCorrectString[languageCodes.ENGLISH] = 'Correct';\r\n playerStrings.txtCorrectString[languageCodes.GERMAN] = 'Richtig';\r\n playerStrings.txtCorrectString[languageCodes.JAPANESE] = '正解';\r\n playerStrings.txtCorrectString[languageCodes.FRENCH] = 'Correct';\r\n playerStrings.txtCorrectString[languageCodes.SPANISH] = 'Correcto';\r\n playerStrings.txtCorrectString[languageCodes.CHINESE] = '正确';\r\n\r\n playerStrings.txtIncorrectString = {};\r\n playerStrings.txtIncorrectString[languageCodes.ENGLISH] = 'Incorrect';\r\n playerStrings.txtIncorrectString[languageCodes.GERMAN] = 'Falsch';\r\n playerStrings.txtIncorrectString[languageCodes.JAPANESE] = '不正解';\r\n playerStrings.txtIncorrectString[languageCodes.FRENCH] = 'Incorrect';\r\n playerStrings.txtIncorrectString[languageCodes.SPANISH] = 'Incorrecto';\r\n playerStrings.txtIncorrectString[languageCodes.CHINESE] = '不正确';\r\n\r\n playerStrings.txtCorrect = {};\r\n playerStrings.txtCorrect[languageCodes.ENGLISH] = '{{numberCorrect}} Correct';\r\n playerStrings.txtCorrect[languageCodes.GERMAN] = '{{numberCorrect}} Richtig';\r\n playerStrings.txtCorrect[languageCodes.JAPANESE] = '正解 {{numberCorrect}}';\r\n playerStrings.txtCorrect[languageCodes.FRENCH] = '{{numberCorrect}} Correct';\r\n playerStrings.txtCorrect[languageCodes.SPANISH] = '{{numberCorrect}} respuestas correctas';\r\n playerStrings.txtCorrect[languageCodes.CHINESE] = '{{numberCorrect}}正确';\r\n\r\n playerStrings.txtIncorrect = {};\r\n playerStrings.txtIncorrect[languageCodes.ENGLISH] = '{{numberIncorrect}} Incorrect';\r\n playerStrings.txtIncorrect[languageCodes.GERMAN] = '{{numberIncorrect}} Falsch';\r\n playerStrings.txtIncorrect[languageCodes.JAPANESE] = '不正解 {{numberIncorrect}}';\r\n playerStrings.txtIncorrect[languageCodes.FRENCH] = '{{numberIncorrect}} Incorrect';\r\n playerStrings.txtIncorrect[languageCodes.SPANISH] = '{{numberIncorrect}} respuestas incorrectas';\r\n playerStrings.txtIncorrect[languageCodes.CHINESE] = '{{numberIncorrect}}不正确';\r\n\r\n playerStrings.txtYourAnswer = {};\r\n playerStrings.txtYourAnswer[languageCodes.ENGLISH] = '. Your answer: ';\r\n playerStrings.txtYourAnswer[languageCodes.GERMAN] = '. Ihre Antwort: ';\r\n playerStrings.txtYourAnswer[languageCodes.JAPANESE] = '. 解答/回答: ';\r\n playerStrings.txtYourAnswer[languageCodes.FRENCH] = '. Votre réponse : ';\r\n playerStrings.txtYourAnswer[languageCodes.SPANISH] = '. Su respuesta: ';\r\n playerStrings.txtYourAnswer[languageCodes.CHINESE] = '.您的答案:';\r\n\r\n playerStrings.txtCorrectAnswer = {};\r\n playerStrings.txtCorrectAnswer[languageCodes.ENGLISH] = '. Correct answer: ';\r\n playerStrings.txtCorrectAnswer[languageCodes.GERMAN] = '. Richtige Antwort: ';\r\n playerStrings.txtCorrectAnswer[languageCodes.JAPANESE] = '. 正解: ';\r\n playerStrings.txtCorrectAnswer[languageCodes.FRENCH] = '. Réponse correcte : ';\r\n playerStrings.txtCorrectAnswer[languageCodes.SPANISH] = '. Respuesta correcta: ';\r\n playerStrings.txtCorrectAnswer[languageCodes.CHINESE] = '.正确答案:';\r\n\r\n // accessibility --------------------------------------------------------------------------------\r\n playerStrings.accessBtnAudioDescription = {};\r\n playerStrings.accessBtnAudioDescription[languageCodes.ENGLISH] = 'Audio Description';\r\n playerStrings.accessBtnAudioDescription[languageCodes.GERMAN] = 'Audio-Beschreibung';\r\n playerStrings.accessBtnAudioDescription[languageCodes.JAPANESE] = '音声ガイド';\r\n playerStrings.accessBtnAudioDescription[languageCodes.FRENCH] = 'Description audio';\r\n playerStrings.accessBtnAudioDescription[languageCodes.SPANISH] = 'Descripción de audio';\r\n playerStrings.accessBtnAudioDescription[languageCodes.CHINESE] = '音频描述';\r\n\r\n playerStrings.accessBtnClearSearch = {};\r\n playerStrings.accessBtnClearSearch[languageCodes.ENGLISH] = 'Clear Search';\r\n playerStrings.accessBtnClearSearch[languageCodes.GERMAN] = 'Suche löschen';\r\n playerStrings.accessBtnClearSearch[languageCodes.JAPANESE] = '検索をクリア';\r\n playerStrings.accessBtnClearSearch[languageCodes.FRENCH] = 'Effacer la recherche';\r\n playerStrings.accessBtnClearSearch[languageCodes.SPANISH] = 'Borrar búsqueda';\r\n playerStrings.accessBtnClearSearch[languageCodes.CHINESE] = '清除搜索';\r\n\r\n playerStrings.accessBtnRewind = {};\r\n playerStrings.accessBtnRewind[languageCodes.ENGLISH] = 'Rewind';\r\n playerStrings.accessBtnRewind[languageCodes.GERMAN] = 'Zurückspulen';\r\n playerStrings.accessBtnRewind[languageCodes.JAPANESE] = '巻き戻し';\r\n playerStrings.accessBtnRewind[languageCodes.FRENCH] = 'Rembobiner';\r\n playerStrings.accessBtnRewind[languageCodes.SPANISH] = 'Retroceso';\r\n playerStrings.accessBtnRewind[languageCodes.CHINESE] = '倒回';\r\n\r\n playerStrings.accessBtnPlay = {};\r\n playerStrings.accessBtnPlay[languageCodes.ENGLISH] = 'Play Video';\r\n playerStrings.accessBtnPlay[languageCodes.GERMAN] = 'Video wiedergeben';\r\n playerStrings.accessBtnPlay[languageCodes.JAPANESE] = 'ビデオを再生する';\r\n playerStrings.accessBtnPlay[languageCodes.FRENCH] = 'Lire la vidéo';\r\n playerStrings.accessBtnPlay[languageCodes.SPANISH] = 'Reproducir vídeo';\r\n playerStrings.accessBtnPlay[languageCodes.CHINESE] = '播放视频';\r\n\r\n playerStrings.accessBtnPrevious = {};\r\n playerStrings.accessBtnPrevious[languageCodes.ENGLISH] = 'Previous';\r\n playerStrings.accessBtnPrevious[languageCodes.GERMAN] = 'Zurück';\r\n playerStrings.accessBtnPrevious[languageCodes.JAPANESE] = '前へ';\r\n playerStrings.accessBtnPrevious[languageCodes.FRENCH] = 'Précédent';\r\n playerStrings.accessBtnPrevious[languageCodes.SPANISH] = 'Anterior';\r\n playerStrings.accessBtnPrevious[languageCodes.CHINESE] = '上一个';\r\n\r\n playerStrings.accessBtnNext = {};\r\n playerStrings.accessBtnNext[languageCodes.ENGLISH] = 'Next';\r\n playerStrings.accessBtnNext[languageCodes.GERMAN] = 'Weiter';\r\n playerStrings.accessBtnNext[languageCodes.JAPANESE] = '次へ';\r\n playerStrings.accessBtnNext[languageCodes.FRENCH] = 'Suivant';\r\n playerStrings.accessBtnNext[languageCodes.SPANISH] = 'Siguiente';\r\n playerStrings.accessBtnNext[languageCodes.CHINESE] = '下一个';\r\n\r\n playerStrings.accessBtnProgressBar = {};\r\n playerStrings.accessBtnProgressBar[languageCodes.ENGLISH] = 'Progress bar slider';\r\n playerStrings.accessBtnProgressBar[languageCodes.GERMAN] = 'Fortschrittsbalken';\r\n playerStrings.accessBtnProgressBar[languageCodes.JAPANESE] = '進行状況バー スライダー';\r\n playerStrings.accessBtnProgressBar[languageCodes.FRENCH] = 'Curseur de progression';\r\n playerStrings.accessBtnProgressBar[languageCodes.SPANISH] = 'Control de barra de progreso';\r\n playerStrings.accessBtnProgressBar[languageCodes.CHINESE] = '进度滑块';\r\n\r\n playerStrings.accessBtnVolume = {};\r\n playerStrings.accessBtnVolume[languageCodes.ENGLISH] = 'Mute';\r\n playerStrings.accessBtnVolume[languageCodes.GERMAN] = 'Stumm';\r\n playerStrings.accessBtnVolume[languageCodes.JAPANESE] = 'ミュート';\r\n playerStrings.accessBtnVolume[languageCodes.FRENCH] = 'Désactiver le son';\r\n playerStrings.accessBtnVolume[languageCodes.SPANISH] = 'Silencio';\r\n playerStrings.accessBtnVolume[languageCodes.CHINESE] = '静音';\r\n\r\n playerStrings.accessTxtVolume = {};\r\n playerStrings.accessTxtVolume[languageCodes.ENGLISH] = 'Volume';\r\n playerStrings.accessTxtVolume[languageCodes.GERMAN] = 'Volumen';\r\n playerStrings.accessTxtVolume[languageCodes.JAPANESE] = '音量';\r\n playerStrings.accessTxtVolume[languageCodes.FRENCH] = 'Volume';\r\n playerStrings.accessTxtVolume[languageCodes.SPANISH] = 'Volumen';\r\n playerStrings.accessTxtVolume[languageCodes.CHINESE] = '音量';\r\n\r\n playerStrings.accessBtnClosedCaption = {};\r\n playerStrings.accessBtnClosedCaption[languageCodes.ENGLISH] = 'Closed Caption';\r\n playerStrings.accessBtnClosedCaption[languageCodes.GERMAN] = 'Geschlossene Beschriftung';\r\n playerStrings.accessBtnClosedCaption[languageCodes.JAPANESE] = 'クローズド キャプション';\r\n playerStrings.accessBtnClosedCaption[languageCodes.FRENCH] = 'Sous-titre activable';\r\n playerStrings.accessBtnClosedCaption[languageCodes.SPANISH] = 'Subtítulo';\r\n playerStrings.accessBtnClosedCaption[languageCodes.CHINESE] = '隐藏式字幕';\r\n\r\n playerStrings.accessBtnTableOfContents = {};\r\n playerStrings.accessBtnTableOfContents[languageCodes.ENGLISH] = 'Table of Contents (T)';\r\n playerStrings.accessBtnTableOfContents[languageCodes.GERMAN] = 'Inhaltsverzeichnis (I)';\r\n playerStrings.accessBtnTableOfContents[languageCodes.JAPANESE] = '目次 (T)';\r\n playerStrings.accessBtnTableOfContents[languageCodes.FRENCH] = 'Sommaire (T)';\r\n playerStrings.accessBtnTableOfContents[languageCodes.SPANISH] = 'Índice (T)';\r\n playerStrings.accessBtnTableOfContents[languageCodes.CHINESE] = '目录 (T)';\r\n\r\n playerStrings.accessBtnSettings = {};\r\n playerStrings.accessBtnSettings[languageCodes.ENGLISH] = 'Player Settings';\r\n playerStrings.accessBtnSettings[languageCodes.GERMAN] = 'Einstellungen';\r\n playerStrings.accessBtnSettings[languageCodes.JAPANESE] = 'プレーヤー設定';\r\n playerStrings.accessBtnSettings[languageCodes.FRENCH] = 'Paramètres du Player';\r\n playerStrings.accessBtnSettings[languageCodes.SPANISH] = 'Ajustes del reproductor';\r\n playerStrings.accessBtnSettings[languageCodes.CHINESE] = '播放器设置';\r\n\r\n playerStrings.accessBtnPip = {};\r\n playerStrings.accessBtnPip[languageCodes.ENGLISH] = 'Picture-in-Picture';\r\n playerStrings.accessBtnPip[languageCodes.GERMAN] = 'PIP';\r\n playerStrings.accessBtnPip[languageCodes.JAPANESE] = 'Picture-In-Picture';\r\n playerStrings.accessBtnPip[languageCodes.FRENCH] = 'Incrustation d’images';\r\n playerStrings.accessBtnPip[languageCodes.SPANISH] = 'Imagen dentro de imagen';\r\n playerStrings.accessBtnPip[languageCodes.CHINESE] = '画中画';\r\n\r\n playerStrings.accessBtnFullScreen = {};\r\n playerStrings.accessBtnFullScreen[languageCodes.ENGLISH] = 'Full Screen';\r\n playerStrings.accessBtnFullScreen[languageCodes.GERMAN] = 'Vollbild';\r\n playerStrings.accessBtnFullScreen[languageCodes.JAPANESE] = '全画面';\r\n playerStrings.accessBtnFullScreen[languageCodes.FRENCH] = 'Plein écran';\r\n playerStrings.accessBtnFullScreen[languageCodes.SPANISH] = 'Pantalla completa';\r\n playerStrings.accessBtnFullScreen[languageCodes.CHINESE] = '全屏';\r\n\r\n playerStrings.accessBtnFullScreenExpand = {};\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.ENGLISH] = 'Open in new tab';\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.GERMAN] = 'In neuem Tab öffnen';\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.JAPANESE] = '新しいタブで開く';\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.FRENCH] = 'Ouvrir dans un nouvel onglet';\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.SPANISH] = 'Abrir en una nueva pestaña';\r\n playerStrings.accessBtnFullScreenExpand[languageCodes.CHINESE] = '在新选项卡中打开';\r\n\r\n playerStrings.accessBtnTakeQuiz = {};\r\n playerStrings.accessBtnTakeQuiz[languageCodes.ENGLISH] = 'Click to take the quiz.';\r\n playerStrings.accessBtnTakeQuiz[languageCodes.GERMAN] = 'Klicken Sie hier, um die Quizfragen zu beantworten.';\r\n playerStrings.accessBtnTakeQuiz[languageCodes.JAPANESE] = 'クリックしてクイズに答える。';\r\n playerStrings.accessBtnTakeQuiz[languageCodes.FRENCH] = 'Cliquez pour répondre au questionnaire.';\r\n playerStrings.accessBtnTakeQuiz[languageCodes.SPANISH] = 'Pulse para responder al cuestionario.';\r\n playerStrings.accessBtnTakeQuiz[languageCodes.CHINESE] = '单击以参加测验。';\r\n\r\n playerStrings.accessBtnShowQuiz = {};\r\n playerStrings.accessBtnShowQuiz[languageCodes.ENGLISH] = 'Show Quiz';\r\n playerStrings.accessBtnShowQuiz[languageCodes.GERMAN] = 'Quiz anzeigen';\r\n playerStrings.accessBtnShowQuiz[languageCodes.JAPANESE] = 'クイズの表示';\r\n playerStrings.accessBtnShowQuiz[languageCodes.FRENCH] = 'Afficher le questionnaire';\r\n playerStrings.accessBtnShowQuiz[languageCodes.SPANISH] = 'Mostrar cuestionario';\r\n playerStrings.accessBtnShowQuiz[languageCodes.CHINESE] = '显示测验';\r\n\r\n playerStrings.accessBtnHideQuiz = {};\r\n playerStrings.accessBtnHideQuiz[languageCodes.ENGLISH] = 'Hide Quiz';\r\n playerStrings.accessBtnHideQuiz[languageCodes.GERMAN] = 'Quiz ausblenden';\r\n playerStrings.accessBtnHideQuiz[languageCodes.JAPANESE] = 'クイズの非表示';\r\n playerStrings.accessBtnHideQuiz[languageCodes.FRENCH] = 'Masquer le questionnaire';\r\n playerStrings.accessBtnHideQuiz[languageCodes.SPANISH] = 'Ocultar cuestionario';\r\n playerStrings.accessBtnHideQuiz[languageCodes.CHINESE] = '隐藏测验';\r\n\r\n playerStrings.accessBtnShowAnswer = {};\r\n playerStrings.accessBtnShowAnswer[languageCodes.ENGLISH] = 'Show Answers';\r\n playerStrings.accessBtnShowAnswer[languageCodes.GERMAN] = 'Antworten anzeigen';\r\n playerStrings.accessBtnShowAnswer[languageCodes.JAPANESE] = '解答・回答の表示';\r\n playerStrings.accessBtnShowAnswer[languageCodes.FRENCH] = 'Afficher les réponses';\r\n playerStrings.accessBtnShowAnswer[languageCodes.SPANISH] = 'Mostrar respuestas';\r\n playerStrings.accessBtnShowAnswer[languageCodes.CHINESE] = '显示答案';\r\n\r\n playerStrings.accessBtnHideAnswer = {};\r\n playerStrings.accessBtnHideAnswer[languageCodes.ENGLISH] = 'Hide Answers';\r\n playerStrings.accessBtnHideAnswer[languageCodes.GERMAN] = 'Antworten ausblenden';\r\n playerStrings.accessBtnHideAnswer[languageCodes.JAPANESE] = '解答・回答の非表示';\r\n playerStrings.accessBtnHideAnswer[languageCodes.FRENCH] = 'Masquer les réponses';\r\n playerStrings.accessBtnHideAnswer[languageCodes.SPANISH] = 'Ocultar respuestas';\r\n playerStrings.accessBtnHideAnswer[languageCodes.CHINESE] = '隐藏答案';\r\n\r\n playerStrings.accessBtnAnswersSubmitted = {};\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.ENGLISH] = 'Answers Submitted!';\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.GERMAN] = 'Antworten wurden übermittelt!';\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.JAPANESE] = '解答・回答を送信しました!';\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.FRENCH] = 'Réponses envoyées.';\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.SPANISH] = '¡Respuestas enviadas!';\r\n playerStrings.accessBtnAnswersSubmitted[languageCodes.CHINESE] = '答案已提交!';\r\n\r\n playerStrings.accessBtnWereNotGraded = {};\r\n playerStrings.accessBtnWereNotGraded[languageCodes.ENGLISH] = ' were not graded.';\r\n playerStrings.accessBtnWereNotGraded[languageCodes.GERMAN] = ' wurden nicht bewertet.';\r\n playerStrings.accessBtnWereNotGraded[languageCodes.JAPANESE] = ' スコアに含まれない質問。';\r\n playerStrings.accessBtnWereNotGraded[languageCodes.FRENCH] = ' n\\'ont pas été notées.';\r\n playerStrings.accessBtnWereNotGraded[languageCodes.SPANISH] = ' no han sido calificadas.';\r\n playerStrings.accessBtnWereNotGraded[languageCodes.CHINESE] = ' 未分级。';\r\n\r\n playerStrings.accessBtnWasNotGraded = {};\r\n playerStrings.accessBtnWasNotGraded[languageCodes.ENGLISH] = ' was not graded.';\r\n playerStrings.accessBtnWasNotGraded[languageCodes.GERMAN] = ' wurden nicht bewertet.';\r\n playerStrings.accessBtnWasNotGraded[languageCodes.JAPANESE] = ' スコアに含まれない質問。';\r\n playerStrings.accessBtnWasNotGraded[languageCodes.FRENCH] = ' n\\'a pas été notée.';\r\n playerStrings.accessBtnWasNotGraded[languageCodes.SPANISH] = ' no ha sido calificada.';\r\n playerStrings.accessBtnWasNotGraded[languageCodes.CHINESE] = ' 未分级。';\r\n\r\n playerStrings.accessBtnCorrectOutOf = {};\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.ENGLISH] = ' correct out of ';\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.GERMAN] = ' korrekte Antworten von ';\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.JAPANESE] = ' 問中 ';\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.FRENCH] = ' « Correct » sur ';\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.SPANISH] = ' correcta(s) de ';\r\n playerStrings.accessBtnCorrectOutOf[languageCodes.CHINESE] = ' 正确答案比例';\r\n\r\n playerStrings.accessBtnGradedQuestions = {};\r\n playerStrings.accessBtnGradedQuestions[languageCodes.ENGLISH] = ' graded questions.';\r\n playerStrings.accessBtnGradedQuestions[languageCodes.GERMAN] = ' bewerteten Antworten.';\r\n playerStrings.accessBtnGradedQuestions[languageCodes.JAPANESE] = ' スコアに含まれる質問。';\r\n playerStrings.accessBtnGradedQuestions[languageCodes.FRENCH] = ' questions notées.';\r\n playerStrings.accessBtnGradedQuestions[languageCodes.SPANISH] = ' preguntas calificadas.';\r\n playerStrings.accessBtnGradedQuestions[languageCodes.CHINESE] = ' 已分级问题。';\r\n\r\n playerStrings.accessBtnClickToReplayLink = {};\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.ENGLISH] = 'Replay';\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.GERMAN] = 'Wiederholen';\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.JAPANESE] = '再生';\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.FRENCH] = 'Relire';\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.SPANISH] = 'Reproducir';\r\n playerStrings.accessBtnClickToReplayLink[languageCodes.CHINESE] = '重播';\r\n\r\n playerStrings.scormApiNotFoundMessage = {};\r\n playerStrings.scormApiNotFoundMessage[languageCodes.ENGLISH] = 'Unable to locate the LMS\\'s API Implementation.\\nCommunication with the LMS will not occur.';\r\n playerStrings.scormApiNotFoundMessage[languageCodes.GERMAN] = 'Die API-Implementierung des LMS-Systems kann nicht gefunden werden.\\nDie Kommunikation mit dem LMS-System kann nicht hergestellt werden.';\r\n playerStrings.scormApiNotFoundMessage[languageCodes.JAPANESE] = 'LMS の API 実装が見つかりません\\nLMS とコミュニケーションできません';\r\n playerStrings.scormApiNotFoundMessage[languageCodes.FRENCH] = 'Impossible de localiser l\\'implémentation API du LMS.\\nLa communication avec le LMS sera impossible.';\r\n playerStrings.scormApiNotFoundMessage[languageCodes.SPANISH] = 'No es posible localizar la implementación de la API de LMS.\\nNo se establecerá ninguna conexión con LMS.';\r\n playerStrings.scormApiNotFoundMessage[languageCodes.CHINESE] = '无法找到 LMS 的 API Implementation。\\n不会发生与 LMS 的通信。';\r\n\r\n playerStrings.accessListTableOfContents = {};\r\n playerStrings.accessListTableOfContents[languageCodes.ENGLISH] = 'Table of contents';\r\n playerStrings.accessListTableOfContents[languageCodes.GERMAN] = 'Inhaltsverzeichnis';\r\n playerStrings.accessListTableOfContents[languageCodes.JAPANESE] = '目次';\r\n playerStrings.accessListTableOfContents[languageCodes.FRENCH] = 'Sommaire';\r\n playerStrings.accessListTableOfContents[languageCodes.SPANISH] = 'Índice';\r\n playerStrings.accessListTableOfContents[languageCodes.CHINESE] = '目录';\r\n\r\n playerStrings.accessListSearchResults = {};\r\n playerStrings.accessListSearchResults[languageCodes.ENGLISH] = 'Search results in order of appearance';\r\n playerStrings.accessListSearchResults[languageCodes.GERMAN] = 'Suchergebnisse nach Zeitpunkt der Anzeige';\r\n playerStrings.accessListSearchResults[languageCodes.JAPANESE] = '検索結果 (出現順)';\r\n playerStrings.accessListSearchResults[languageCodes.FRENCH] = 'Résultats de la recherche par ordre d\\'affichage';\r\n playerStrings.accessListSearchResults[languageCodes.SPANISH] = 'Resultados de la búsqueda en orden de aparición';\r\n playerStrings.accessListSearchResults[languageCodes.CHINESE] = '按外观顺序搜索结果';\r\n\r\n playerStrings.accessListNoSearchResults = {};\r\n playerStrings.accessListNoSearchResults[languageCodes.ENGLISH] = 'No results found';\r\n playerStrings.accessListNoSearchResults[languageCodes.GERMAN] = 'Keine Ergebnisse gefunden';\r\n playerStrings.accessListNoSearchResults[languageCodes.JAPANESE] = '結果が見つかりません';\r\n playerStrings.accessListNoSearchResults[languageCodes.FRENCH] = 'Aucun résultat';\r\n playerStrings.accessListNoSearchResults[languageCodes.SPANISH] = 'No se encontró ningún resultado';\r\n playerStrings.accessListNoSearchResults[languageCodes.CHINESE] = '未找到结果';\r\n\r\n playerStrings.accessQuestionSetConfirmationTitle = {};\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.ENGLISH] = 'Quiz';\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.GERMAN] = 'Quiz';\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.JAPANESE] = 'クイズ';\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.FRENCH] = 'Questionnaire';\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.SPANISH] = 'Cuestionario';\r\n playerStrings.accessQuestionSetConfirmationTitle[languageCodes.CHINESE] = '测验';\r\n\r\n playerStrings.accessVideoPausedForQuiz = {};\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.ENGLISH] = 'Video paused for quiz';\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.GERMAN] = 'Video wird angehalten - es folgt ein Quiz';\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.JAPANESE] = 'クイズの場所でビデオを一時停止しました';\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.FRENCH] = 'Vidéo sur pause pour le questionnaire';\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.SPANISH] = 'Vídeo en pausa para el cuestionario';\r\n playerStrings.accessVideoPausedForQuiz[languageCodes.CHINESE] = '视频因测验而暂停';\r\n\r\n playerStrings.accessQuizResults = {};\r\n playerStrings.accessQuizResults[languageCodes.ENGLISH] = 'Quiz results';\r\n playerStrings.accessQuizResults[languageCodes.GERMAN] = 'Quizergebnisse';\r\n playerStrings.accessQuizResults[languageCodes.JAPANESE] = 'クイズの結果';\r\n playerStrings.accessQuizResults[languageCodes.FRENCH] = 'Résultats du questionnaire';\r\n playerStrings.accessQuizResults[languageCodes.SPANISH] = 'Resultados del cuestionario';\r\n playerStrings.accessQuizResults[languageCodes.CHINESE] = '测验结果';\r\n\r\n var setLanguage = function(language) {\r\n if (languageCodes.isValid(language)) {\r\n _language = language;\r\n }\r\n };\r\n\r\n var getLanguage = function() {\r\n return _language;\r\n };\r\n\r\n var getLanguageNameFromIdentifierString = function(languageIdentifierString) {\r\n var languageIdentifier = tscme.LanguageIdentifier.create(languageIdentifierString);\r\n return tscme.languageIdentifiers.identifiers[languageIdentifier.language] ? tscme.languageIdentifiers.identifiers[languageIdentifier.language].displayName : languageIdentifierString;\r\n };\r\n\r\n var setString = function(stringLabel, stringValue) {\r\n if (playerStrings[stringLabel] !== undefined) {\r\n playerStrings[stringLabel][_language] = stringValue;\r\n } else {\r\n throw new Error('setString(): \\'' + stringLabel + '\\' string does not exist in the player.');\r\n }\r\n };\r\n\r\n var getQuestionCountPreposition = function() {\r\n if (!_prepositionText) {\r\n var parts = playerStrings.txtQuestionCount[_language].split(' ');\r\n for (var i = 0; i < parts.length; i++) {\r\n if (parts[i].indexOf('{{') === -1) {\r\n _prepositionText = parts[i];\r\n break;\r\n }\r\n }\r\n }\r\n return _prepositionText;\r\n };\r\n\r\n var configureLanguageFromXmp = function(xmp) {\r\n xmp.controllerParameters.forEach(function(controllerParameter) {\r\n switch (controllerParameter.name.toLowerCase()) {\r\n case 'locale':\r\n setLanguage(controllerParameter.value);\r\n break;\r\n }\r\n });\r\n };\r\n\r\n var configureCustomStringsFromXmp = function(xmp) {\r\n xmp.quizParameters.forEach(function(quizParameter) {\r\n try {\r\n setString(quizParameter.name, quizParameter.value);\r\n } catch (e) {\r\n log.logMessage(e.message);\r\n }\r\n });\r\n };\r\n\r\n var configureFromXmp = function(xmp) {\r\n configureLanguageFromXmp(xmp); //Configure language first so that _language is properly set\r\n configureCustomStringsFromXmp(xmp);\r\n };\r\n\r\n var createStringExportObject = function() {\r\n _playerStringsExport = {};\r\n Object.keys(playerStrings).forEach(function(key) {\r\n Object.defineProperty(_playerStringsExport,\r\n key,\r\n {\r\n get: function() {\r\n return playerStrings[key][_language];\r\n }\r\n });\r\n });\r\n };\r\n\r\n createStringExportObject();\r\n\r\n return Object.defineProperties({\r\n getLanguageNameFromIdentifierString: getLanguageNameFromIdentifierString,\r\n setLanguage: setLanguage,\r\n getLanguage: getLanguage,\r\n getQuestionCountPreposition: getQuestionCountPreposition,\r\n configureFromXmp: configureFromXmp\r\n }, {\r\n strings: {\r\n get: function() {\r\n return _playerStringsExport;\r\n }\r\n }\r\n });\r\n});\r\n\r\n","(function(window, keysFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.keys = keysFactory(namespace.localizationStrings, namespace.languageCodes);\r\n})(this, function(localizationStrings, languageCodes) {\r\n 'use strict';\r\n\r\n var _keyTypes = Object.freeze({\r\n escape: 1,\r\n space: 2,\r\n leftArrow: 3,\r\n upArrow: 4,\r\n rightArrow: 5,\r\n downArrow: 6,\r\n tab: 7,\r\n enter: 8,\r\n tableOfContents: 9\r\n });\r\n\r\n var isKeyOfType = function(key, type) {\r\n switch (key.toLowerCase()) {\r\n case 'esc': // IE11 and Edge\r\n case 'escape':\r\n return type === _keyTypes.escape;\r\n case 'spacebar': // IE11\r\n case ' ':\r\n return type === _keyTypes.space;\r\n case 'left': // IE11 and Edge\r\n case 'arrowleft':\r\n return type === _keyTypes.leftArrow;\r\n case 'up': // IE11 and Edge\r\n case 'arrowup':\r\n return type === _keyTypes.upArrow;\r\n case 'right': // IE11 and Edge\r\n case 'arrowright':\r\n return type === _keyTypes.rightArrow;\r\n case 'down': // IE11 and Edge\r\n case 'arrowdown':\r\n return type === _keyTypes.downArrow;\r\n case 'tab':\r\n return type === _keyTypes.tab;\r\n case 'enter':\r\n return type === _keyTypes.enter;\r\n default:\r\n return isKeyOfLanguageSpecificType(key.toLowerCase(), type);\r\n }\r\n };\r\n\r\n var isKeyOfLanguageSpecificType = function(key, type) {\r\n switch (localizationStrings.getLanguage()) {\r\n case languageCodes.ENGLISH:\r\n return isKeyOfEnglishSpecificType(key, type);\r\n case languageCodes.GERMAN:\r\n return isKeyOfGermanSpecificType(key, type);\r\n case languageCodes.JAPANESE:\r\n return isKeyOfJapaneseSpecificType(key, type);\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n var isKeyOfEnglishSpecificType = function(key, type) {\r\n switch (key) {\r\n case 't':\r\n return type === _keyTypes.tableOfContents;\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n var isKeyOfGermanSpecificType = function(key, type) {\r\n switch (key) {\r\n case 'i':\r\n return type === _keyTypes.tableOfContents;\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n var isKeyOfJapaneseSpecificType = function(key, type) {\r\n switch (key) {\r\n case 't':\r\n return type === _keyTypes.tableOfContents;\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n return {\r\n keyTypes: _keyTypes,\r\n isKeyOfType: function(key) {\r\n for (var i = 1; i < arguments.length; ++i) {\r\n if (isKeyOfType(key, arguments[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n };\r\n});\r\n","(function(window, $, localizationStrings) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.iOSTextInputFix = (function() {\r\n var $window = $(window);\r\n var _bodyEl = window.document.getElementsByTagName('body')[0];\r\n var _domEl;\r\n var _deleteKeyCode = 8;\r\n var _expectedCharCount = 0;\r\n var _onBugCallback;\r\n var _bugExecutionCount = 0;\r\n\r\n var keyUpHandler = function(e) {\r\n if (e.keyCode === _deleteKeyCode) {\r\n _expectedCharCount--;\r\n } else {\r\n _expectedCharCount++;\r\n }\r\n\r\n var currentTextValue = _domEl.value;\r\n var inputDiff = currentTextValue.length - _expectedCharCount;\r\n\r\n // element is no longer getting new keyboard input\r\n if (inputDiff < 0) {\r\n var textAreaElClone = _domEl.cloneNode(true);\r\n _bodyEl.appendChild(textAreaElClone);\r\n _bugExecutionCount++;\r\n\r\n setTimeout(function() {\r\n textAreaElClone.focus();\r\n _bodyEl.removeChild(textAreaElClone);\r\n\r\n if (_onBugCallback) {\r\n _onBugCallback(_bugExecutionCount);\r\n }\r\n }, 100);\r\n\r\n _expectedCharCount = _domEl.value.length;\r\n }\r\n };\r\n\r\n var clear = function() {\r\n _domEl = undefined;\r\n $window.unbind('keyup', keyUpHandler);\r\n };\r\n\r\n return {\r\n setOnBugCallback: function(callback) {\r\n _onBugCallback = callback;\r\n },\r\n watch: function(domEl) {\r\n clear();\r\n _domEl = domEl;\r\n // issue with search box makes this extra check needed for this temporary iOS fix\r\n _expectedCharCount = _domEl.value === localizationStrings.strings.search ? 0 : _domEl.value.length;\r\n $window.bind('keyup', keyUpHandler);\r\n },\r\n clear: clear\r\n };\r\n })();\r\n})(this, window.jQuery, window.TSC.localizationStrings);\r\n","(function(window, ieFullscreenDimensionsFixDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ieFullscreenDimensionsFix = ieFullscreenDimensionsFixDefinition(window, window.document, window.$);\r\n})(this, function(window, document, $) {\r\n 'use strict';\r\n\r\n var _$body;\r\n var _original = {\r\n width: $.fn.width,\r\n innerWidth: $.fn.innerWidth,\r\n outerWidth: $.fn.outerWidth,\r\n height: $.fn.height,\r\n innerHeight: $.fn.innerHeight,\r\n outerHeight: $.fn.outerHeight,\r\n offset: $.fn.offset\r\n };\r\n\r\n var hMargin = function($el) {\r\n return parseInt($el.css('margin-left'), 10) + parseInt($el.css('margin-right'), 10);\r\n };\r\n\r\n var vMargin = function($el) {\r\n return parseInt($el.css('margin-top'), 10) + parseInt($el.css('margin-bottom'), 10);\r\n };\r\n\r\n var hPadding = function($el) {\r\n return parseInt($el.css('padding-left'), 10) + parseInt($el.css('padding-right'), 10);\r\n };\r\n\r\n var vPadding = function($el) {\r\n return parseInt($el.css('padding-top'), 10) + parseInt($el.css('padding-bottom'), 10);\r\n };\r\n\r\n var hBorder = function($el) {\r\n return parseInt($el.css('border-left-width'), 10) + parseInt($el.css('border-right-width'), 10);\r\n };\r\n\r\n var vBorder = function($el) {\r\n return parseInt($el.css('border-top-width'), 10) + parseInt($el.css('border-bottom-width'), 10);\r\n };\r\n\r\n var initialize = function($container) {\r\n _$body = $('body');\r\n\r\n var isIEFullscreenDimensionsBugInEffect = function() {\r\n return document.msFullscreenElement && _original.width.call(_$body) !== _original.width.call($container);\r\n };\r\n\r\n $.fn.width = function() {\r\n if (arguments.length === 0 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n return Math.round(this[0].getBoundingClientRect().width * 100 - hPadding(this) - hBorder(this));\r\n }\r\n return _original.width.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.innerWidth = function() {\r\n if (arguments.length === 0 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n return Math.round(this[0].getBoundingClientRect().width * 100 - hBorder(this));\r\n }\r\n return _original.innerWidth.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.outerWidth = function(includeMargin) {\r\n var value;\r\n if (arguments.length <= 1 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n value = Math.round(this[0].getBoundingClientRect().width * 100);\r\n return includeMargin ? value + hMargin(this) : value;\r\n }\r\n return _original.outerWidth.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.height = function() {\r\n if (arguments.length === 0 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n return Math.round(this[0].getBoundingClientRect().height * 100 - vPadding(this) - vBorder(this));\r\n }\r\n return _original.height.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.innerHeight = function() {\r\n if (arguments.length === 0 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n return Math.round(this[0].getBoundingClientRect().height * 100 - vBorder(this));\r\n }\r\n return _original.innerHeight.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.outerHeight = function(includeMargin) {\r\n var value;\r\n if (arguments.length <= 1 && 0 in this && isIEFullscreenDimensionsBugInEffect() && this[0] !== window) {\r\n value = Math.round(this[0].getBoundingClientRect().height * 100);\r\n return includeMargin ? value + vMargin(this) : value;\r\n }\r\n return _original.outerHeight.apply(this, $.makeArray(arguments));\r\n };\r\n\r\n $.fn.offset = function() {\r\n var offset;\r\n if (arguments.length === 0 && 0 in this && isIEFullscreenDimensionsBugInEffect()) {\r\n offset = _original.offset.apply(this);\r\n if (offset) {\r\n offset.top = Math.round(offset.top * 100);\r\n offset.left = Math.round(offset.left * 100);\r\n }\r\n return offset;\r\n }\r\n return _original.offset.apply(this, $.makeArray(arguments));\r\n };\r\n };\r\n\r\n return {\r\n initialize: initialize\r\n };\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n \r\n window.TSC = window.TSC || {};\r\n window.TSC.playerType = (function() {\r\n return {\r\n HTML5_VIDEO: 'html5',\r\n YOUTUBE: 'youtube',\r\n IMAGE: 'image',\r\n TSCPROJ: 'tscproj',\r\n NOT_SUPPORTED: 'not_supported'\r\n };\r\n }());\r\n}(this));\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.mediaMimeType = (function() {\r\n return {\r\n JSON: 'application/json',\r\n M3U: 'application/mpegurl',\r\n MP4: 'video/mp4',\r\n WEBM: 'video/webm',\r\n OGV: 'video/ogg',\r\n JPEG: 'image/jpeg',\r\n PNG: 'image/png',\r\n GIF: 'image/gif',\r\n UNKNOWN: ''\r\n };\r\n }());\r\n}(this));\r\n\r\n","(function(window, mediaMimeType) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.deviceInfo = (function() {\r\n var _supportsHTML5 = false;\r\n var _supportsMP4 = false;\r\n var _supportOgg = false;\r\n var _supportWebM = false;\r\n var _isIE = false;\r\n var _isEdge = false;\r\n var _ieVersion = null;\r\n var _safariMajorVersion = null;\r\n var _iOSVersion = null;\r\n var _isFirefox = false;\r\n var _isChrome = false;\r\n var _isIPad = false;\r\n var _isIPhone = false;\r\n var _isIPod = false;\r\n var _isIOS = false;\r\n var _isAndroid = false;\r\n var _isSafari = false;\r\n var _isRetinaDisplay = false;\r\n var _isSmallScreen = false;\r\n\r\n var checkLocationProtocol = function() {\r\n switch (window.location.protocol) {\r\n case 'http:':\r\n case 'https:':\r\n return false;\r\n case 'file:':\r\n return true;\r\n }\r\n };\r\n\r\n var getIOSVersion = function() {\r\n if (/iP(hone|od|ad)/.test(navigator.platform)) {\r\n // supports iOS 2.0 and later: \r\n var v = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\r\n return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];\r\n }\r\n };\r\n\r\n var lookAtDevice = function() {\r\n var detect = document.createElement('video') || false;\r\n _supportsHTML5 = detect && typeof detect.canPlayType !== 'undefined';\r\n _supportsMP4 = _supportsHTML5 && detect.canPlayType(mediaMimeType.MP4);\r\n _supportOgg = _supportsHTML5 && detect.canPlayType(mediaMimeType.OGG);\r\n _supportWebM = _supportsHTML5 && detect.canPlayType(mediaMimeType.WEBM);\r\n\r\n _isIPad = navigator.userAgent.match(/iPad/i) !== null;\r\n _isIPhone = navigator.userAgent.match(/iPhone/i) !== null;\r\n _isIPod = navigator.userAgent.match(/iPod/i) !== null;\r\n _isIOS = _isIPad || _isIPhone || _isIPod;\r\n _isAndroid = navigator.userAgent.toLowerCase().indexOf('android') !== -1;\r\n _isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') !== -1;\r\n _isIE = navigator.appName === 'Microsoft Internet Explorer' || navigator.appName === 'Netscape' && new RegExp('Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})').exec(navigator.userAgent) !== null;\r\n _isEdge = navigator.userAgent.match(/Edge/i) !== null;\r\n _isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\r\n // Chrome contains safari in it's user agent string, but safari doesn't include chrome\r\n _isSafari = navigator.userAgent.match(/Safari/i) !== null && !_isChrome;\r\n\r\n // chrome for iOS will match as safari, so we need to do an additional check\r\n var iOSChromeMatchExp = new RegExp('CriOS\\/(.*)');\r\n if (navigator.appVersion.match(iOSChromeMatchExp)) {\r\n _isChrome = true;\r\n _isSafari = false;\r\n }\r\n\r\n // get IE version if IE\r\n if (_isIE) {\r\n var ua = navigator.userAgent;\r\n var re = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})');\r\n if (re.exec(ua) !== null) {\r\n _ieVersion = parseFloat(RegExp.$1);\r\n }\r\n }\r\n\r\n if (_isIOS && getIOSVersion()) {\r\n _iOSVersion = getIOSVersion()[0];\r\n }\r\n\r\n if (_isSafari) {\r\n var matchExp = new RegExp('Version\\/(.*) Safari');\r\n\r\n if (navigator.appVersion.match(matchExp)) {\r\n var safariVersion = navigator.appVersion.match(matchExp).slice(1)[0];\r\n _safariMajorVersion = safariVersion.substring(0, safariVersion.indexOf('.'));\r\n }\r\n }\r\n\r\n // Portrait or landscape\r\n _isSmallScreen = screen.availWidth < 640 && screen.availHeight < 480 || screen.availWidth < 480 && screen.availHeight < 640;\r\n\r\n // Retina display is same res, but higher DPI, this detects that\r\n _isRetinaDisplay = window.devicePixelRatio && window.devicePixelRatio > 1;\r\n };\r\n\r\n return {\r\n isSmallScreen: function() {\r\n return _isSmallScreen;\r\n },\r\n isRetinaDisplay: function() {\r\n return _isRetinaDisplay;\r\n },\r\n isIPad: function() {\r\n return _isIPad;\r\n },\r\n isIPhoneOrIPod: function() {\r\n return _isIPhone || _isIPod;\r\n },\r\n isIOS: function() {\r\n return _isIOS;\r\n },\r\n isIE: function() {\r\n return _isIE;\r\n },\r\n isEdge: function() {\r\n return _isEdge;\r\n },\r\n getIEVersion: function() {\r\n return _ieVersion;\r\n },\r\n getSafariMajorVersion: function() {\r\n return _safariMajorVersion;\r\n },\r\n getIOSMajorVersion: function() {\r\n return _iOSVersion;\r\n },\r\n getIOSSupportsInlineVideo: function() {\r\n return _isIPad || (_isIPhone || _isIPod) && _iOSVersion >= 10;\r\n },\r\n isFirefox: function() {\r\n return _isFirefox;\r\n },\r\n isChrome: function() {\r\n return _isChrome;\r\n },\r\n isSafari: function() {\r\n return _isSafari;\r\n },\r\n isAndroid: function() {\r\n return _isAndroid;\r\n },\r\n canPlayHTML5Video: function() {\r\n return _supportsHTML5;\r\n },\r\n canPlayMP4: function() {\r\n return _supportsMP4;\r\n },\r\n canPlayOgg: function() {\r\n return _supportOgg;\r\n },\r\n canPlayWebM: function() {\r\n return _supportWebM;\r\n },\r\n isTouchInterface: function() {\r\n return 'ontouchstart' in document.documentElement || this.isTouchIEInterface();\r\n },\r\n isTouchIEInterface: function() {\r\n return navigator.msMaxTouchPoints;\r\n },\r\n getFullScreenChangeEventNames: function() {\r\n return 'webkitfullscreenchange MSFullscreenChange mozfullscreenchange fullscreenchange';\r\n },\r\n requiresManualPreload: function() {\r\n return _isIOS && this.getIOSSupportsInlineVideo() || _isAndroid;\r\n },\r\n supportsFullScreen: function() {\r\n return document.fullscreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled || document.mozFullScreenEnabled;\r\n },\r\n mediaLocation: function() {\r\n var path = document.location.href;\r\n var baseindex = path.lastIndexOf('/');\r\n var basex = path.substring(0, baseindex + 1);\r\n if (_isIE) {\r\n basex = encodeURI(basex);\r\n }\r\n basex = basex.split('%25').join('%');\r\n return basex;\r\n },\r\n isLocal: function() {\r\n return checkLocationProtocol();\r\n },\r\n lookAtDevice: function() {\r\n lookAtDevice();\r\n }\r\n };\r\n }());\r\n}(this, window.TSC.mediaMimeType));\r\n","(function(window, urlServiceFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.urlService = urlServiceFactory(namespace.windowWrapper);\r\n})(this, function(windowWrapper) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class urlService\r\n * @classdesc Url opening service.\r\n */\r\n var ensureUrlHasValidScheme = function(url) {\r\n if (typeof url === 'string' && url.indexOf('http://') !== 0 && url.indexOf('https://') !== 0) {\r\n url = 'http://' + url;\r\n }\r\n return url;\r\n };\r\n\r\n var openUrl = function(url, features) {\r\n url = ensureUrlHasValidScheme(url);\r\n if (features) {\r\n windowWrapper.open(url, features);\r\n } else {\r\n windowWrapper.open(url);\r\n }\r\n };\r\n\r\n var isUrlAbsolute = function(url) {\r\n return url.indexOf('http://') === 0 || url.indexOf('https://') === 0;\r\n };\r\n\r\n var generateQueryStringWithExtraParam = function(key, value) {\r\n key = encodeURI(key);\r\n value = encodeURI(value);\r\n\r\n var windowLocation = windowWrapper.getLocation();\r\n var kvp = windowLocation.search.substr(1).split('&');\r\n\r\n var i = kvp.length;\r\n var x;\r\n while (i--) {\r\n x = kvp[i].split('=');\r\n\r\n if (x[0] === key) {\r\n x[1] = value;\r\n kvp[i] = x.join('=');\r\n break;\r\n }\r\n }\r\n\r\n if (i < 0) {\r\n kvp[kvp.length] = [key, value].join('=');\r\n }\r\n\r\n var query = kvp.join('&');\r\n if (query.startsWith('&')) {\r\n query = query.substr(1);\r\n }\r\n\r\n return '?' + query;\r\n };\r\n\r\n var generateCurrentUrlWithExtraQueryParam = function(paramName, paramValue) {\r\n var search = generateQueryStringWithExtraParam(paramName, paramValue);\r\n var windowLocation = windowWrapper.getLocation();\r\n var port = windowLocation.port ? ':' + windowLocation.port : '';\r\n return windowLocation.protocol + '//' + windowLocation.hostname + port + windowLocation.pathname + search + windowLocation.hash;\r\n };\r\n\r\n return {\r\n openUrl: openUrl,\r\n isUrlAbsolute: isUrlAbsolute,\r\n generateCurrentUrlWithExtraQueryParam: generateCurrentUrlWithExtraQueryParam\r\n };\r\n});\r\n","(function(window, backoffStrategyFactoryDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.BackoffStrategyFactory = backoffStrategyFactoryDefinition(\r\n window.Q);\r\n})(this, function(Q) {\r\n 'use strict';\r\n\r\n var DEFAULT_RETRY_LIMIT = 2;\r\n var DEFAULT_BACKOFF = 2000;\r\n var DEFAULT_MAX_DELAY_BETWEEN_RETRIES = 20000;\r\n\r\n var BackoffStrategy = function(retryLimit, backoffTime, maxDelay) {\r\n if (typeof retryLimit === 'undefined') {\r\n retryLimit = DEFAULT_RETRY_LIMIT;\r\n }\r\n\r\n if (typeof backoffTime === 'undefined') {\r\n backoffTime = DEFAULT_BACKOFF;\r\n }\r\n\r\n if (typeof maxDelay === 'undefined') {\r\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\r\n }\r\n\r\n var create = function() {\r\n var tries = 0;\r\n var backoff = function() {\r\n tries++;\r\n\r\n if (tries > retryLimit) {\r\n return Q.reject();\r\n }\r\n\r\n var delay = Math.min(backoffTime * tries, maxDelay);\r\n return Q.delay(delay);\r\n };\r\n\r\n return {\r\n backoff: backoff\r\n };\r\n };\r\n\r\n return {\r\n create: create\r\n };\r\n };\r\n\r\n var BackoffStrategyWithUnlimitedRetries = function(backoffTime, maxDelay) {\r\n if (typeof backoffTime === 'undefined') {\r\n backoffTime = DEFAULT_BACKOFF;\r\n }\r\n\r\n if (typeof maxDelay === 'undefined') {\r\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\r\n }\r\n\r\n var create = function() {\r\n var tries = 0;\r\n var backoff = function() {\r\n tries++;\r\n var delay = Math.min(backoffTime * tries, maxDelay);\r\n return Q.delay(delay);\r\n };\r\n\r\n return {\r\n backoff: backoff\r\n };\r\n };\r\n\r\n return {\r\n create: create\r\n };\r\n };\r\n\r\n return {\r\n create: BackoffStrategy,\r\n createWithUnlimitedRetries: BackoffStrategyWithUnlimitedRetries\r\n };\r\n});\r\n","(function(window, httpServiceDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.HttpService = httpServiceDefinition(\r\n window.JSON,\r\n window.$,\r\n window.Q,\r\n namespace.log,\r\n namespace.BackoffStrategyFactory,\r\n namespace.statusCodes);\r\n})(this, function(JSON, $, Q, log, BackoffStrategyFactory, statusCodes) {\r\n 'use strict';\r\n\r\n $.support.cors = true;\r\n\r\n var REQUEST_TIMEOUT = 10000;\r\n var NO_RETRY_STATUS_CODES = [\r\n statusCodes.UnprocessableEntity\r\n ];\r\n\r\n var HttpService = function(retryStrategyFactory, logFailures) {\r\n retryStrategyFactory = retryStrategyFactory || BackoffStrategyFactory.create();\r\n\r\n if (typeof logFailures === 'undefined') {\r\n logFailures = true;\r\n }\r\n\r\n var get = function(url) {\r\n var request = {\r\n url: url,\r\n type: 'GET',\r\n contentType: 'application/json',\r\n crossDomain: true,\r\n timeout: REQUEST_TIMEOUT\r\n };\r\n return Q($.ajax(request)).catch(function(response) {\r\n if (logFailures && response && response.statusText !== 'timeout') {\r\n var errorString = '';\r\n try {\r\n errorString = 'Error: ' + JSON.stringify(response, null, 2) + ' Url: ' + url;\r\n } catch (error) {\r\n errorString = '(response failed conversion into a JSON string.)';\r\n }\r\n\r\n log.logException(errorString);\r\n return Q.reject(errorString);\r\n }\r\n });\r\n };\r\n\r\n var sendFormDataPost = function(url, data) {\r\n return sendRequest(url, $.param(data), 'application/x-www-form-urlencoded; charset=UTF-8', 'POST');\r\n };\r\n\r\n var canRetryFromStatusCode = function(response) {\r\n if (!response) {\r\n return true;\r\n }\r\n\r\n for (var i = 0; i < NO_RETRY_STATUS_CODES.length; i++) {\r\n if (response.status === NO_RETRY_STATUS_CODES[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n var sendRequest = function(url, data, contentType, httpVerb) {\r\n var retryStrategy = retryStrategyFactory.create();\r\n\r\n var request = {\r\n url: url,\r\n type: httpVerb,\r\n data: data,\r\n contentType: contentType,\r\n crossDomain: true,\r\n timeout: REQUEST_TIMEOUT\r\n };\r\n\r\n var send = function(retries) {\r\n var defer = Q.defer();\r\n\r\n Q($.ajax(request)).then(defer.resolve).catch(function(response) {\r\n if (logFailures && response && response.statusText !== 'timeout') {\r\n var errorString = '';\r\n try {\r\n errorString = 'Error: ' + JSON.stringify(response, null, 2) + ' Url: ' + url + ' Data: ' + JSON.stringify(data, null, 2);\r\n } catch (error) {\r\n errorString = '(response failed conversion into a JSON string.)';\r\n }\r\n\r\n log.logException(errorString);\r\n }\r\n\r\n if (canRetryFromStatusCode(response)) {\r\n retryStrategy.backoff().then(function() {\r\n retries++;\r\n defer.notify(retries);\r\n send(retries).progress(defer.notify).then(defer.resolve).catch(defer.reject);\r\n }).catch(function(retryResponse) {\r\n log.logException('Call to ' + url + ' failed after ' + retries + ' retries.');\r\n defer.reject(retryResponse);\r\n });\r\n } else {\r\n log.logException('Call ' + url + ' failed with no retry status of ' + response.status + '.');\r\n defer.reject(response);\r\n }\r\n });\r\n\r\n return defer.promise;\r\n };\r\n\r\n return send(0);\r\n };\r\n\r\n return {\r\n get: get,\r\n sendFormDataPost: sendFormDataPost\r\n };\r\n };\r\n\r\n return {\r\n create: HttpService\r\n };\r\n});\r\n","(function(window, xmpFactory) {\r\n 'use strict';\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.playerConfiguration = xmpFactory(window, namespace.deviceInfo, namespace.localizationStrings, namespace.themeNames);\r\n})(this, function(window, deviceInfo, localizationStrings, themeNames) {\r\n 'use strict';\r\n\r\n var _mediaSources = [];\r\n var _xmpSrc;\r\n var _posterImageSrc;\r\n var _tocSpriteSrc;\r\n var _mediaRotation = 0;\r\n var _endActionType = 'stop';\r\n var _endActionParam = true;\r\n var _ignoreXmpControllerParameters = [];\r\n var _ignoreQuizQuestions = false;\r\n var _isSearchable = true; // make it undefined for initial value\r\n var _autoPlayMedia = false;\r\n var _allowRewind = -1;\r\n var _captionsEnabled = null;\r\n var _ignoreStoredCaptionVisibleSetting = false;\r\n var _sidebarEnabled = false;\r\n var _sidebarLocation = 'left';\r\n var _backgroundColor = '#000';\r\n var _useUnicode = false;\r\n var _autoHideControls = true;\r\n var _reportScormComplete = false;\r\n var _isScormLesson = false;\r\n var _enforceLinearAssessment = true;\r\n var _disableFullframeMode = true;\r\n var _disableControls = false;\r\n var _disableYouTubeControls = true;\r\n var _disableYouTubeFullscreen = true;\r\n var _disablePictureInPicture = false;\r\n var _mobileWebViewCanAutoPlay = false;\r\n var _googleAnalyticsID;\r\n var _gaPageViewTrack = true;\r\n var _gaEventTrack = true;\r\n var _customEventTracking = false;\r\n var _customEventCallback;\r\n var _altEventCategoryAsFilename = false;\r\n var _altLoadTimeAsSeconds = false;\r\n var _jumpToTime;\r\n var _techSmithAccessTokenEndpoint;\r\n var _isUserIdentified = false;\r\n var _fathomId;\r\n var _embedIFrameId;\r\n var _additionalAppQueryString = '';\r\n var _useSlimAppSplashScreen = true;\r\n var _showYouTubeAnnotations = false;\r\n var _preRollSrc;\r\n var _contentType = '';\r\n var _preloadOptions = ['none', 'metadata', 'auto'];\r\n var _preload = _preloadOptions[0];\r\n var _fullViewPort = true;\r\n var _webConnector;\r\n var _contentBasePath = '';\r\n var _disableContextMenuForVideo = false;\r\n var _theme = themeNames.DUSK;\r\n var _enableSingleClickControl = true;\r\n var _enableDoubleClickControl = true;\r\n var _pluginController = null;\r\n var _useLargerProgressBar = false;\r\n var _displayHotspotsShape = false;\r\n var _audioDescriptionMediaSrc = null;\r\n var _disableInteractions = false;\r\n\r\n var isValidTheme = function(themeName) {\r\n return Object.keys(themeNames).some(function(themeKey) {\r\n return themeNames[themeKey] === themeName;\r\n });\r\n };\r\n\r\n var decodedApostrophe = function(val) { //if runs on a server and is IE\r\n return val.replace(/’/g, '\\'');\r\n };\r\n\r\n var containsNonLatinCodepoints = function(str) {\r\n return /[^\\u0000-\\u00ff]/.test(str);\r\n };\r\n\r\n var runOnServer = function() {\r\n return window.document.location.href.indexOf('http') === 0;\r\n };\r\n\r\n var getUnicodeSafeString = function(val) {\r\n if (val === undefined) {\r\n return val;\r\n }\r\n\r\n if (!_useUnicode) {\r\n return val;\r\n }\r\n\r\n if (!deviceInfo.isIE()) {\r\n return encodeURI(val);\r\n }\r\n\r\n if (!runOnServer()) {\r\n return decodeURI(val);\r\n }\r\n\r\n if (containsNonLatinCodepoints(val)) {\r\n return encodeURI(val);\r\n }\r\n\r\n return val;\r\n };\r\n\r\n var clearConfiguration = function() {\r\n _mediaSources = [];\r\n _ignoreStoredCaptionVisibleSetting = false;\r\n _captionsEnabled = null;\r\n _pluginController = null;\r\n _ignoreXmpControllerParameters = [];\r\n _ignoreQuizQuestions = false;\r\n };\r\n\r\n var getUnableToDisplayContentString = function() {\r\n return localizationStrings.strings.videoNotSupported;\r\n };\r\n\r\n var useCustomEventTracking = function(customEventTracking, customEventCallback) {\r\n _customEventTracking = customEventTracking;\r\n _customEventCallback = customEventCallback;\r\n };\r\n\r\n var getTrackEvents = function() {\r\n return _customEventTracking || _googleAnalyticsID !== undefined;\r\n };\r\n\r\n var getCustomEventTracking = function() {\r\n return _customEventTracking;\r\n };\r\n\r\n var getCustomEventCallback = function() {\r\n return _customEventCallback;\r\n };\r\n\r\n var getIsUserIdentified = function() {\r\n return _isUserIdentified;\r\n };\r\n\r\n var setAdditionalAppQueryParamsFromJson = function(params) {\r\n var queryString = '';\r\n for (var key in params) {\r\n queryString += '&' + key + '=' + params[key];\r\n }\r\n _additionalAppQueryString = queryString;\r\n };\r\n\r\n var getAdditionalAppQueryString = function() {\r\n return _additionalAppQueryString;\r\n };\r\n\r\n var addMediaSrc = function(mediaSrc) {\r\n if (typeof mediaSrc === 'string') {\r\n _mediaSources.push(decodedApostrophe(mediaSrc));\r\n } else {\r\n _mediaSources.push(mediaSrc);\r\n }\r\n };\r\n\r\n var getMediaSources = function() {\r\n return _mediaSources;\r\n };\r\n\r\n var getMediaFileName = function() {\r\n var mediaSource = _mediaSources.length > 0 ? _mediaSources[0] : undefined;\r\n\r\n if (mediaSource) {\r\n var splitEl = mediaSource.split('/');\r\n var mediaFileName = splitEl[splitEl.length - 1];\r\n return mediaFileName.split('?')[0] || 'Unnamed Media';\r\n }\r\n return 'No Media';\r\n };\r\n\r\n var saveConfigurationFromQueryString = function(configParams) {\r\n if (!(configParams instanceof Array)) {\r\n return;\r\n }\r\n var param;\r\n var numberParams = configParams.length;\r\n\r\n for (var i = 0; i < numberParams; i++) {\r\n param = configParams[i].split('=');\r\n if (param.length === 2) {\r\n switch (param[0].toLowerCase()) {\r\n case 'embediframeid': {\r\n _embedIFrameId = param[1];\r\n break;\r\n }\r\n case 't': {\r\n _jumpToTime = param[1];\r\n break;\r\n }\r\n case 'autoplay': {\r\n if (param[1].toLowerCase() === 'true') {\r\n _autoPlayMedia = true;\r\n } else if (param[1].toLowerCase() === 'false') {\r\n _autoPlayMedia = false;\r\n }\r\n break;\r\n }\r\n case 'autohidecontrols': {\r\n if (param[1].toLowerCase() === 'true') {\r\n _autoHideControls = true;\r\n } else if (param[1].toLowerCase() === 'false') {\r\n _autoHideControls = false;\r\n }\r\n break;\r\n }\r\n case 'theme': {\r\n if (isValidTheme(param[1])) {\r\n _theme = param[1];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n var isParamBeingIgnored = function(param) {\r\n for (var i = 0; i < _ignoreXmpControllerParameters.length; i++) {\r\n if (param === _ignoreXmpControllerParameters[i]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var shouldLoadXmpParam = function(param1, param2) {\r\n if (param1 !== param2) {\r\n return false;\r\n }\r\n\r\n return !isParamBeingIgnored(param1);\r\n };\r\n\r\n var configureFromXmp = function(xmp) {\r\n if (isParamBeingIgnored('*')) {\r\n return;\r\n }\r\n\r\n xmp.controllerParameters.forEach(function(controllerParameter) {\r\n var param = controllerParameter.name.toUpperCase();\r\n switch (true) {\r\n case shouldLoadXmpParam('AUTOHIDE', param):\r\n _autoHideControls = controllerParameter.value === 'true';\r\n break;\r\n case shouldLoadXmpParam('AUTOSTART', param):\r\n case shouldLoadXmpParam('AUTOPLAY', param):\r\n if (!_autoPlayMedia) {\r\n _autoPlayMedia = controllerParameter.value === 'true';\r\n }\r\n break;\r\n case shouldLoadXmpParam('SEARCHABLE', param):\r\n _isSearchable = controllerParameter.value === 'true';\r\n break;\r\n case shouldLoadXmpParam('CAPTIONSENABLED', param):\r\n if (!_ignoreStoredCaptionVisibleSetting) {\r\n _captionsEnabled = controllerParameter.value === 'true';\r\n }\r\n break;\r\n case shouldLoadXmpParam('SIDEBARENABLED', param):\r\n _sidebarEnabled = controllerParameter.value === 'true';\r\n break;\r\n case shouldLoadXmpParam('UNICODEENABLED', param):\r\n _useUnicode = controllerParameter.value === 'true';\r\n break;\r\n case shouldLoadXmpParam('BACKGROUNDCOLOR', param):\r\n var bgColor = controllerParameter.value;\r\n if (bgColor.indexOf('#') === -1) {\r\n bgColor = '#' + bgColor;\r\n }\r\n _backgroundColor = bgColor;\r\n break;\r\n case shouldLoadXmpParam('SIDEBARLOCATION', param):\r\n _sidebarLocation = controllerParameter.value === 'right' || controllerParameter.value === 'r' ? 'right' : 'left';\r\n break;\r\n case shouldLoadXmpParam('ENDACTION', param):\r\n _endActionType = controllerParameter.value;\r\n break;\r\n case shouldLoadXmpParam('ENDACTIONPARAM', param):\r\n _endActionParam = controllerParameter.value;\r\n break;\r\n }\r\n });\r\n // Only allow URLs that start with http:// or https:// so that\r\n // javascript: URLs cannot be used maliciously.\r\n var endActionType = _endActionType.toLowerCase();\r\n if (endActionType === 'jumptourl' || endActionType === 'jumptourlnew') {\r\n var endActionParam = _endActionParam.toLowerCase();\r\n if (endActionParam.indexOf('http://') !== 0 && endActionParam.indexOf('https://') !== 0) {\r\n _endActionType = 'stop';\r\n _endActionParam = 'true';\r\n }\r\n }\r\n };\r\n\r\n var getMediaSrc = function() {\r\n // pull the first media source from the list. Maintain backward compliance with version 1.0.20 and earlier\r\n return _mediaSources.length > 0 ? _mediaSources[0] : '';\r\n };\r\n\r\n var setMediaSrc = function(mediaSrc) {\r\n _mediaSources[0] = decodedApostrophe(mediaSrc);\r\n };\r\n\r\n var getXMPSrc = function() {\r\n return getUnicodeSafeString(_xmpSrc);\r\n };\r\n\r\n var setXMPSrc = function(xmpSrc) {\r\n _xmpSrc = decodedApostrophe(xmpSrc);\r\n };\r\n\r\n var getDisableInteractions = function() {\r\n return _disableInteractions;\r\n };\r\n\r\n var setDisableInteractions = function(disableInteractions) {\r\n _disableInteractions = disableInteractions;\r\n };\r\n\r\n var getPosterImageSrc = function() {\r\n return getUnicodeSafeString(_posterImageSrc);\r\n };\r\n\r\n var setPosterImageSrc = function(posterImageSrc) {\r\n _posterImageSrc = posterImageSrc;\r\n };\r\n\r\n var getTOCSpriteSrc = function() {\r\n return getUnicodeSafeString(_tocSpriteSrc);\r\n };\r\n\r\n var setTOCSpriteSrc = function(tocSpriteSrc) {\r\n _tocSpriteSrc = tocSpriteSrc;\r\n };\r\n\r\n var getMediaRotation = function() {\r\n return _mediaRotation;\r\n };\r\n\r\n var setMediaRotation = function(rotation) {\r\n _mediaRotation = rotation;\r\n };\r\n\r\n var getEndActionType = function() {\r\n return _endActionType;\r\n };\r\n\r\n var setEndActionType = function(endActionType) {\r\n _endActionType = endActionType;\r\n };\r\n\r\n var getEndActionParam = function() {\r\n return _endActionParam;\r\n };\r\n\r\n var setEndActionParam = function(endActionParam) {\r\n _endActionParam = endActionParam;\r\n };\r\n\r\n var getIgnoreXmpControllerParameters = function() {\r\n return _ignoreXmpControllerParameters;\r\n };\r\n\r\n var setIgnoreXmpControllerParameters = function(ignoreXmpControllerParameters) {\r\n var upperCasedIgnores = ignoreXmpControllerParameters.map(function(p) {\r\n return p.toUpperCase();\r\n });\r\n _ignoreXmpControllerParameters = upperCasedIgnores;\r\n };\r\n\r\n var getIgnoreQuizQuestions = function() {\r\n return _ignoreQuizQuestions;\r\n };\r\n\r\n var setIgnoreQuizQuestions = function(ignoreQuizQuestions) {\r\n _ignoreQuizQuestions = ignoreQuizQuestions;\r\n };\r\n\r\n var getIsSearchable = function() {\r\n return _isSearchable;\r\n };\r\n\r\n var setIsSearchable = function(isSearchable) {\r\n _isSearchable = isSearchable;\r\n };\r\n\r\n var getAutoPlayMedia = function() {\r\n return _autoPlayMedia;\r\n };\r\n\r\n var setAutoPlayMedia = function(autoPlayMedia) {\r\n _autoPlayMedia = autoPlayMedia;\r\n };\r\n\r\n var getAllowRewind = function() {\r\n return _allowRewind;\r\n };\r\n\r\n var setAllowRewind = function(allowRewind) {\r\n _allowRewind = allowRewind;\r\n };\r\n\r\n var getCaptionsEnabled = function() {\r\n return _captionsEnabled === true;\r\n };\r\n\r\n var setCaptionsEnabled = function(captionsEnabled) {\r\n _captionsEnabled = captionsEnabled;\r\n };\r\n\r\n var getIgnoreStoredCaptionVisibleSetting = function() {\r\n return _ignoreStoredCaptionVisibleSetting;\r\n };\r\n\r\n var setIgnoreStoredCaptionVisibleSetting = function(ignoreStored) {\r\n _ignoreStoredCaptionVisibleSetting = ignoreStored;\r\n };\r\n\r\n var getSidebarEnabled = function() {\r\n return _sidebarEnabled;\r\n };\r\n\r\n var setSidebarEnabled = function(sidebarEnabled) {\r\n _sidebarEnabled = sidebarEnabled;\r\n };\r\n\r\n var getSidebarLocation = function() {\r\n return _sidebarLocation;\r\n };\r\n\r\n var setSidebarLocation = function(sidebarLocation) {\r\n _sidebarLocation = sidebarLocation;\r\n };\r\n\r\n var getBackgroundColor = function() {\r\n return _backgroundColor;\r\n };\r\n\r\n var setBackgroundColor = function(backgroundColor) {\r\n _backgroundColor = backgroundColor;\r\n };\r\n\r\n var getAutoHideControls = function() {\r\n return _autoHideControls;\r\n };\r\n\r\n var setAutoHideControls = function(autoHideControls) {\r\n _autoHideControls = autoHideControls;\r\n };\r\n\r\n var getProcessUnicodeNames = function() {\r\n return _useUnicode;\r\n };\r\n\r\n var setProcessUnicodeNames = function(useUnicode) {\r\n _useUnicode = useUnicode;\r\n };\r\n\r\n var getEnforceLinearAssessment = function() {\r\n return _enforceLinearAssessment;\r\n };\r\n\r\n var setEnforceLinearAssessment = function(enforceLinearAssessment) {\r\n _enforceLinearAssessment = enforceLinearAssessment;\r\n };\r\n\r\n var getDisableFullframeMode = function() {\r\n return _disableFullframeMode;\r\n };\r\n\r\n var setDisableFullframeMode = function(disableFullframeMode) {\r\n _disableFullframeMode = disableFullframeMode;\r\n };\r\n\r\n var getDisableControls = function() {\r\n return _disableControls;\r\n };\r\n\r\n var setDisableControls = function(disableControls) {\r\n _disableControls = disableControls;\r\n };\r\n\r\n var getDisableYouTubeControls = function() {\r\n return _disableYouTubeControls;\r\n };\r\n\r\n var setDisableYouTubeControls = function(disableYouTubeControls) {\r\n _disableYouTubeControls = disableYouTubeControls;\r\n };\r\n\r\n var getDisableYouTubeFullscreen = function() {\r\n return _disableYouTubeFullscreen;\r\n };\r\n\r\n var setDisableYouTubeFullscreen = function(disableYouTubeFullscreen) {\r\n _disableYouTubeFullscreen = disableYouTubeFullscreen;\r\n };\r\n\r\n var getDisablePictureInPicture = function() {\r\n return _disablePictureInPicture;\r\n };\r\n\r\n var setDisablePictureInPicture = function(disablePictureInPicture) {\r\n _disablePictureInPicture = disablePictureInPicture;\r\n };\r\n\r\n var getMobileWebViewCanAutoPlay = function() {\r\n return _mobileWebViewCanAutoPlay;\r\n };\r\n\r\n var setMobileWebViewCanAutoPlay = function(canAutoPlay) {\r\n _mobileWebViewCanAutoPlay = canAutoPlay;\r\n };\r\n\r\n var getGoogleAnalyticsID = function() {\r\n return _googleAnalyticsID;\r\n };\r\n\r\n var setGoogleAnalyticsID = function(id) {\r\n _googleAnalyticsID = id;\r\n };\r\n\r\n var getGAPageViewTracking = function() {\r\n return _gaPageViewTrack;\r\n };\r\n\r\n var setGAPageViewTracking = function(gaPageViewTrack) {\r\n _gaPageViewTrack = gaPageViewTrack;\r\n };\r\n\r\n var getGAEventTracking = function() {\r\n return _gaEventTrack;\r\n };\r\n\r\n var setGAEventTracking = function(gaEventTrack) {\r\n _gaEventTrack = gaEventTrack;\r\n };\r\n\r\n var getAltEventCategoryAsFilename = function() {\r\n return _altEventCategoryAsFilename;\r\n };\r\n\r\n var setAltEventCategoryAsFilename = function(altEventCategoryAsFilename) {\r\n _altEventCategoryAsFilename = altEventCategoryAsFilename;\r\n };\r\n\r\n var getAltLoadTimeAsSeconds = function() {\r\n return _altLoadTimeAsSeconds;\r\n };\r\n\r\n var setAltLoadTimeAsSeconds = function(altLoadTimeAsSeconds) {\r\n _altLoadTimeAsSeconds = altLoadTimeAsSeconds;\r\n };\r\n\r\n var getTechSmithAccessTokenEndpoint = function() {\r\n return _techSmithAccessTokenEndpoint;\r\n };\r\n\r\n var setTechSmithAccessTokenEndpoint = function(accessTokenEndpoint) {\r\n _techSmithAccessTokenEndpoint = accessTokenEndpoint;\r\n _isUserIdentified = true;\r\n };\r\n\r\n var getJumpToTime = function() {\r\n return _jumpToTime;\r\n };\r\n\r\n var setJumpToTime = function(time) {\r\n _jumpToTime = time;\r\n };\r\n\r\n var getFathomId = function() {\r\n return _fathomId;\r\n };\r\n\r\n var setFathomId = function(fathomId) {\r\n _fathomId = fathomId;\r\n };\r\n\r\n var getEmbedIFrameId = function() {\r\n return _embedIFrameId;\r\n };\r\n\r\n var setEmbedIFrameId = function(embedIFrameId) {\r\n _embedIFrameId = embedIFrameId;\r\n };\r\n\r\n var getUseSlimAppSplashScreen = function() {\r\n return _useSlimAppSplashScreen;\r\n };\r\n\r\n var setUseSlimAppSplashScreen = function(useSlimAppSplashScreen) {\r\n _useSlimAppSplashScreen = useSlimAppSplashScreen;\r\n };\r\n\r\n var getDisableContextMenuForVideo = function() {\r\n return _disableContextMenuForVideo;\r\n };\r\n\r\n var setDisableContextMenuForVideo = function(disableContextMenuForVideo) {\r\n _disableContextMenuForVideo = disableContextMenuForVideo;\r\n };\r\n\r\n var getShowYouTubeAnnotations = function() {\r\n return _showYouTubeAnnotations;\r\n };\r\n\r\n var setShowYouTubeAnnotations = function(showAnnotations) {\r\n _showYouTubeAnnotations = showAnnotations;\r\n };\r\n\r\n var getPreRollSrc = function() {\r\n return _preRollSrc;\r\n };\r\n\r\n var setPreRollSrc = function(preRollSrc) {\r\n _preRollSrc = preRollSrc;\r\n };\r\n\r\n var getContentBase = function() {\r\n return _contentBasePath;\r\n };\r\n\r\n var setContentBase = function(value) {\r\n _contentBasePath = value;\r\n };\r\n\r\n var getContentType = function() {\r\n return _contentType;\r\n };\r\n\r\n var setContentType = function(contentType) {\r\n _contentType = contentType;\r\n };\r\n\r\n var getPreload = function() {\r\n return _preload;\r\n };\r\n\r\n var setPreload = function(preload) {\r\n if (_preloadOptions.indexOf(preload) !== -1) {\r\n _preload = preload;\r\n }\r\n };\r\n\r\n var getFullViewPort = function() {\r\n return _fullViewPort;\r\n };\r\n\r\n var setFullViewPort = function(value) {\r\n _fullViewPort = value;\r\n };\r\n\r\n var getWebConnector = function() {\r\n return _webConnector;\r\n };\r\n\r\n var setWebConnector = function(value) {\r\n _webConnector = value;\r\n };\r\n\r\n var getTheme = function() {\r\n return _theme;\r\n };\r\n\r\n var setTheme = function(value) {\r\n if (isValidTheme(value)) {\r\n _theme = value;\r\n }\r\n };\r\n\r\n var getEnableSingleClickControl = function() {\r\n return _enableSingleClickControl;\r\n };\r\n\r\n var setEnableSingleClickControl = function(value) {\r\n _enableSingleClickControl = value;\r\n };\r\n\r\n var getEnableDoubleClickControl = function() {\r\n return _enableDoubleClickControl;\r\n };\r\n\r\n var setEnableDoubleClickControl = function(value) {\r\n _enableDoubleClickControl = value;\r\n };\r\n\r\n var getPluginController = function() {\r\n return _pluginController;\r\n };\r\n\r\n var setPluginController = function(pluginController) {\r\n _pluginController = pluginController;\r\n };\r\n\r\n var getUseLargerProgressBar = function() {\r\n return _useLargerProgressBar;\r\n };\r\n\r\n var setUseLargerProgressBar = function(useLargerProgressBar) {\r\n _useLargerProgressBar = useLargerProgressBar;\r\n };\r\n\r\n // legacy scorm support\r\n var getReportScormComplete = function() {\r\n return _reportScormComplete;\r\n };\r\n\r\n var setReportScormComplete = function(reportScorm) {\r\n _reportScormComplete = reportScorm;\r\n };\r\n\r\n // built in scorm support\r\n var getIsScormLesson = function() {\r\n return _isScormLesson;\r\n };\r\n\r\n var setIsScormLesson = function(isScormLesson) {\r\n _isScormLesson = isScormLesson;\r\n };\r\n\r\n var getDisplayHotspotsShape = function() {\r\n return _displayHotspotsShape;\r\n };\r\n\r\n var setDisplayHotspotsShape = function(displayHotspotsShape) {\r\n _displayHotspotsShape = displayHotspotsShape;\r\n };\r\n\r\n var getAudioDescriptionMediaSrc = function() {\r\n return _audioDescriptionMediaSrc;\r\n };\r\n\r\n var setAudioDescriptionMediaSrc = function(audioDescriptionMediaSrc) {\r\n _audioDescriptionMediaSrc = audioDescriptionMediaSrc;\r\n };\r\n\r\n var deprecatedNoOp = function() {}; // eslint-disable-line\r\n\r\n return Object.defineProperties(\r\n {\r\n clearConfiguration: clearConfiguration,\r\n runOnServer: runOnServer,\r\n addMediaSrc: addMediaSrc,\r\n getMediaSources: getMediaSources,\r\n getMediaFileName: getMediaFileName,\r\n getUnicodeSafeString: getUnicodeSafeString,\r\n getUnableToDisplayContentString: getUnableToDisplayContentString,\r\n useCustomEventTracking: useCustomEventTracking,\r\n getTrackEvents: getTrackEvents,\r\n getCustomEventTracking: getCustomEventTracking,\r\n getCustomEventCallback: getCustomEventCallback,\r\n getIsUserIdentified: getIsUserIdentified,\r\n setAdditionalAppQueryParamsFromJson: setAdditionalAppQueryParamsFromJson,\r\n getAdditionalAppQueryString: getAdditionalAppQueryString,\r\n saveConfigurationFromQueryString: saveConfigurationFromQueryString,\r\n configureFromXmp: configureFromXmp,\r\n // legacy getter / setter\r\n getMediaSrc: getMediaSrc,\r\n setMediaSrc: setMediaSrc,\r\n getXMPSrc: getXMPSrc,\r\n setXMPSrc: setXMPSrc,\r\n getPosterImageSrc: getPosterImageSrc,\r\n setPosterImageSrc: setPosterImageSrc,\r\n getTOCSpriteSrc: getTOCSpriteSrc,\r\n setTOCSpriteSrc: setTOCSpriteSrc,\r\n getMediaRotation: getMediaRotation,\r\n setMediaRotation: setMediaRotation,\r\n getEndActionType: getEndActionType,\r\n setEndActionType: setEndActionType,\r\n getEndActionParam: getEndActionParam,\r\n setEndActionParam: setEndActionParam,\r\n getIgnoreXmpControllerParameters: getIgnoreXmpControllerParameters,\r\n setIgnoreXmpControllerParameters: setIgnoreXmpControllerParameters,\r\n getIgnoreQuizQuestions: getIgnoreQuizQuestions,\r\n setIgnoreQuizQuestions: setIgnoreQuizQuestions,\r\n getIsSearchable: getIsSearchable,\r\n setIsSearchable: setIsSearchable,\r\n getDisableInteractions: getDisableInteractions,\r\n setDisableInteractions: setDisableInteractions,\r\n getAutoPlayMedia: getAutoPlayMedia,\r\n setAutoPlayMedia: setAutoPlayMedia,\r\n getAllowRewind: getAllowRewind,\r\n setAllowRewind: setAllowRewind,\r\n getCaptionsEnabled: getCaptionsEnabled,\r\n setCaptionsEnabled: setCaptionsEnabled,\r\n getIgnoreStoredCaptionVisibleSetting: getIgnoreStoredCaptionVisibleSetting,\r\n setIgnoreStoredCaptionVisibleSetting: setIgnoreStoredCaptionVisibleSetting,\r\n getSidebarEnabled: getSidebarEnabled,\r\n setSidebarEnabled: setSidebarEnabled,\r\n getSidebarLocation: getSidebarLocation,\r\n setSidebarLocation: setSidebarLocation,\r\n getBackgroundColor: getBackgroundColor,\r\n setBackgroundColor: setBackgroundColor,\r\n getAutoHideControls: getAutoHideControls,\r\n setAutoHideControls: setAutoHideControls,\r\n getProcessUnicodeNames: getProcessUnicodeNames,\r\n setProcessUnicodeNames: setProcessUnicodeNames,\r\n getReportScormComplete: getReportScormComplete,\r\n setReportScormComplete: setReportScormComplete,\r\n getEnforceLinearAssessment: getEnforceLinearAssessment,\r\n setEnforceLinearAssessment: setEnforceLinearAssessment,\r\n getDisableFullframeMode: getDisableFullframeMode,\r\n setDisableFullframeMode: setDisableFullframeMode,\r\n getDisableControls: getDisableControls,\r\n setDisableControls: setDisableControls,\r\n getDisableYouTubeControls: getDisableYouTubeControls,\r\n setDisableYouTubeControls: setDisableYouTubeControls,\r\n getDisableYouTubeFullscreen: getDisableYouTubeFullscreen,\r\n setDisableYouTubeFullscreen: setDisableYouTubeFullscreen,\r\n getDisablePictureInPicture: getDisablePictureInPicture,\r\n setDisablePictureInPicture: setDisablePictureInPicture,\r\n getMobileWebViewCanAutoPlay: getMobileWebViewCanAutoPlay,\r\n setMobileWebViewCanAutoPlay: setMobileWebViewCanAutoPlay,\r\n getGoogleAnalyticsID: getGoogleAnalyticsID,\r\n setGoogleAnalyticsID: setGoogleAnalyticsID,\r\n getGAPageViewTracking: getGAPageViewTracking,\r\n setGAPageViewTracking: setGAPageViewTracking,\r\n getGAEventTracking: getGAEventTracking,\r\n setGAEventTracking: setGAEventTracking,\r\n getAltEventCategoryAsFilename: getAltEventCategoryAsFilename,\r\n setAltEventCategoryAsFilename: setAltEventCategoryAsFilename,\r\n getAltLoadTimeAsSeconds: getAltLoadTimeAsSeconds,\r\n setAltLoadTimeAsSeconds: setAltLoadTimeAsSeconds,\r\n getTechSmithAccessTokenEndpoint: getTechSmithAccessTokenEndpoint,\r\n setTechSmithAccessTokenEndpoint: setTechSmithAccessTokenEndpoint,\r\n getJumpToTime: getJumpToTime,\r\n setJumpToTime: setJumpToTime,\r\n getFathomId: getFathomId,\r\n setFathomId: setFathomId,\r\n getEmbedIFrameId: getEmbedIFrameId,\r\n setEmbedIFrameId: setEmbedIFrameId,\r\n getUseSlimAppSplashScreen: getUseSlimAppSplashScreen,\r\n setUseSlimAppSplashScreen: setUseSlimAppSplashScreen,\r\n getDisableContextMenuForVideo: getDisableContextMenuForVideo,\r\n setDisableContextMenuForVideo: setDisableContextMenuForVideo,\r\n getShowYouTubeAnnotations: getShowYouTubeAnnotations,\r\n setShowYouTubeAnnotations: setShowYouTubeAnnotations,\r\n getPreRollSrc: getPreRollSrc,\r\n setPreRollSrc: setPreRollSrc,\r\n getContentBase: getContentBase,\r\n setContentBase: setContentBase,\r\n getContentType: getContentType,\r\n setContentType: setContentType,\r\n getPreload: getPreload,\r\n setPreload: setPreload,\r\n getFullViewPort: getFullViewPort,\r\n setFullViewPort: setFullViewPort,\r\n getWebConnector: getWebConnector,\r\n setWebConnector: setWebConnector,\r\n getTheme: getTheme,\r\n setTheme: setTheme,\r\n getEnableSingleClickControl: getEnableSingleClickControl,\r\n setEnableSingleClickControl: setEnableSingleClickControl,\r\n getEnableDoubleClickControl: getEnableDoubleClickControl,\r\n setEnableDoubleClickControl: setEnableDoubleClickControl,\r\n getPluginController: getPluginController,\r\n setPluginController: setPluginController,\r\n getUseLargerProgressBar: getUseLargerProgressBar,\r\n setUseLargerProgressBar: setUseLargerProgressBar,\r\n getDisplayHotspotsShape: getDisplayHotspotsShape,\r\n setDisplayHotspotsShape: setDisplayHotspotsShape,\r\n getAudioDescriptionMediaSrc: getAudioDescriptionMediaSrc,\r\n setAudioDescriptionMediaSrc: setAudioDescriptionMediaSrc,\r\n // deprecated methods\r\n setSwfBase: setContentBase,\r\n isIEOnServerWithUnicode: deprecatedNoOp,\r\n setFlashUpdateBootstrapSwf: deprecatedNoOp,\r\n getAdvancedSeeking: deprecatedNoOp,\r\n setAdvancedSeeking: deprecatedNoOp,\r\n getDebugUIMode: deprecatedNoOp,\r\n setDebugUIMode: deprecatedNoOp,\r\n getPlayerWidth: deprecatedNoOp,\r\n setPlayerWidth: deprecatedNoOp,\r\n getPlayerHeight: deprecatedNoOp,\r\n setPlayerHeight: deprecatedNoOp,\r\n setFlashPlayerSwf: deprecatedNoOp,\r\n setForceFlashPlayer: deprecatedNoOp,\r\n setForceHtml5Player: deprecatedNoOp,\r\n setConfigurationSrc: deprecatedNoOp,\r\n setPrioritizeFullScreen: deprecatedNoOp\r\n },\r\n {\r\n mediaSrc: {\r\n get: getMediaSrc,\r\n set: setMediaSrc\r\n },\r\n xmpSrc: {\r\n get: getXMPSrc,\r\n set: setXMPSrc\r\n },\r\n posterImageSrc: {\r\n get: getPosterImageSrc,\r\n set: setPosterImageSrc\r\n },\r\n tocSpriteSrc: {\r\n get: getTOCSpriteSrc,\r\n set: setTOCSpriteSrc\r\n },\r\n mediaRotation: {\r\n get: getMediaRotation,\r\n set: setMediaRotation\r\n },\r\n endActionType: {\r\n get: getEndActionType,\r\n set: setEndActionType\r\n },\r\n endActionParam: {\r\n get: getEndActionParam,\r\n set: setEndActionParam\r\n },\r\n ignoreXmpControllerParameters: {\r\n get: getIgnoreXmpControllerParameters,\r\n set: setIgnoreXmpControllerParameters\r\n },\r\n ignoreQuizQuestions: {\r\n get: getIgnoreQuizQuestions,\r\n set: setIgnoreQuizQuestions\r\n },\r\n disableInteractions: {\r\n get: getDisableInteractions,\r\n set: setDisableInteractions\r\n },\r\n isSearchable: {\r\n get: getIsSearchable,\r\n set: setIsSearchable\r\n },\r\n autoPlayMedia: {\r\n get: getAutoPlayMedia,\r\n set: setAutoPlayMedia\r\n },\r\n allowRewind: {\r\n get: getAllowRewind,\r\n set: setAllowRewind\r\n },\r\n captionsEnabled: {\r\n get: getCaptionsEnabled,\r\n set: setCaptionsEnabled\r\n },\r\n ignoreStoredCaptionVisibleSetting: {\r\n get: getIgnoreStoredCaptionVisibleSetting,\r\n set: setIgnoreStoredCaptionVisibleSetting\r\n },\r\n sidebarEnabled: {\r\n get: getSidebarEnabled,\r\n set: setSidebarEnabled\r\n },\r\n sidebarLocation: {\r\n get: getSidebarLocation,\r\n set: setSidebarLocation\r\n },\r\n backgroundColor: {\r\n get: getBackgroundColor,\r\n set: setBackgroundColor\r\n },\r\n autoHideControls: {\r\n get: getAutoHideControls,\r\n set: setAutoHideControls\r\n },\r\n processUnicodeNames: {\r\n get: getProcessUnicodeNames,\r\n set: setProcessUnicodeNames\r\n },\r\n enforceLinearAssessment: {\r\n get: getEnforceLinearAssessment,\r\n set: setEnforceLinearAssessment\r\n },\r\n disableFullframeMode: {\r\n get: getDisableFullframeMode,\r\n set: setDisableFullframeMode\r\n },\r\n disableControls: {\r\n get: getDisableControls,\r\n set: setDisableControls\r\n },\r\n disableYouTubeControls: {\r\n get: getDisableYouTubeControls,\r\n set: setDisableYouTubeControls\r\n },\r\n disableYouTubeFullscreen: {\r\n get: getDisableYouTubeFullscreen,\r\n set: setDisableYouTubeFullscreen\r\n },\r\n disablePictureInPicture: {\r\n get: getDisablePictureInPicture,\r\n set: setDisablePictureInPicture\r\n },\r\n mobileWebViewCanAutoPlay: {\r\n get: getMobileWebViewCanAutoPlay,\r\n set: setMobileWebViewCanAutoPlay\r\n },\r\n googleAnalyticsID: {\r\n get: getGoogleAnalyticsID,\r\n set: setGoogleAnalyticsID\r\n },\r\n googleAnalyticsPageViewTracking: {\r\n get: getGAPageViewTracking,\r\n set: setGAPageViewTracking\r\n },\r\n googleAnalyticsEventTracking: {\r\n get: getGAEventTracking,\r\n set: setGAEventTracking\r\n },\r\n altEventCategoryAsFilename: {\r\n get: getAltEventCategoryAsFilename,\r\n set: setAltEventCategoryAsFilename\r\n },\r\n altLoadTimeAsSeconds: {\r\n get: getAltLoadTimeAsSeconds,\r\n set: setAltLoadTimeAsSeconds\r\n },\r\n techSmithAccessTokenEndpoint: {\r\n get: getTechSmithAccessTokenEndpoint,\r\n set: setTechSmithAccessTokenEndpoint\r\n },\r\n jumpToTime: {\r\n get: getJumpToTime,\r\n set: setJumpToTime\r\n },\r\n fathomId: {\r\n get: getFathomId,\r\n set: setFathomId\r\n },\r\n embedIFrameId: {\r\n get: getEmbedIFrameId,\r\n set: setEmbedIFrameId\r\n },\r\n useSlimAppSplashScreen: {\r\n get: getUseSlimAppSplashScreen,\r\n set: setUseSlimAppSplashScreen\r\n },\r\n disableContextMenuForVideo: {\r\n get: setDisableContextMenuForVideo,\r\n set: setDisableContextMenuForVideo\r\n },\r\n showYouTubeAnnotations: {\r\n get: getShowYouTubeAnnotations,\r\n set: setShowYouTubeAnnotations\r\n },\r\n preRollSrc: {\r\n get: getPreRollSrc,\r\n set: setPreRollSrc\r\n },\r\n contentBase: {\r\n get: getContentBase,\r\n set: setContentBase\r\n },\r\n contentType: {\r\n get: getContentType,\r\n set: setContentType\r\n },\r\n preload: {\r\n get: getPreload,\r\n set: setPreload\r\n },\r\n fullViewPort: {\r\n get: getFullViewPort,\r\n set: setFullViewPort\r\n },\r\n webConnector: {\r\n get: getWebConnector,\r\n set: setWebConnector\r\n },\r\n theme: {\r\n get: getTheme,\r\n set: setTheme\r\n },\r\n enableSingleClickControl: {\r\n get: getEnableSingleClickControl,\r\n set: setEnableSingleClickControl\r\n },\r\n enableDoubleClickControl: {\r\n get: getEnableDoubleClickControl,\r\n set: setEnableDoubleClickControl\r\n },\r\n pluginController: {\r\n get: getPluginController,\r\n set: setPluginController\r\n },\r\n useLargerProgressBar: {\r\n get: getUseLargerProgressBar,\r\n set: setUseLargerProgressBar\r\n },\r\n isScormLesson: {\r\n get: getIsScormLesson,\r\n set: setIsScormLesson\r\n },\r\n displayHotspotsShape: {\r\n get: getDisplayHotspotsShape,\r\n set: setDisplayHotspotsShape\r\n },\r\n audioDescriptionMediaSrc: {\r\n get: getAudioDescriptionMediaSrc,\r\n set: setAudioDescriptionMediaSrc\r\n }\r\n });\r\n});\r\n","(function(window, nullPipControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.nullPipController = nullPipControllerFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class nullPipController\r\n * @classdesc Null controller when PIP feature is not available\r\n */\r\n var noop = function() {}; // eslint-disable-line\r\n\r\n return Object.defineProperties({\r\n enter: noop,\r\n exit: noop,\r\n bindChangeEvent: noop,\r\n unbindChangeEvent: noop\r\n }, {\r\n inPip: {\r\n get: function() {\r\n return false;\r\n }\r\n },\r\n isSupported: {\r\n get: function() {\r\n return false;\r\n }\r\n }\r\n });\r\n});\r\n","(function(window, safariPipControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.SafariPipController = safariPipControllerFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n var CHANGED_PIP_MODE_SAFARI_EVENT = 'webkitpresentationmodechanged';\r\n var SAFARI_INLINE_MODE = 'inline';\r\n var SAFARI_PIP_MODE = 'picture-in-picture';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class SafariPipController\r\n * @classdesc Controller to interface with Safari PIP api.\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n */\r\n var SafariPipController = function(mediaElement) {\r\n var enter = function() {\r\n mediaElement.webkitSetPresentationMode(SAFARI_PIP_MODE);\r\n };\r\n\r\n var exit = function() {\r\n mediaElement.webkitSetPresentationMode(SAFARI_INLINE_MODE);\r\n };\r\n\r\n var bindChangeEvent = function(onChangeHandler) {\r\n mediaElement.addEventListener(CHANGED_PIP_MODE_SAFARI_EVENT, onChangeHandler);\r\n };\r\n\r\n var unbindChangeEvent = function(onChangeHandler) {\r\n mediaElement.removeEventListener(CHANGED_PIP_MODE_SAFARI_EVENT, onChangeHandler);\r\n };\r\n\r\n return Object.defineProperties({\r\n enter: enter,\r\n exit: exit,\r\n bindChangeEvent: bindChangeEvent,\r\n unbindChangeEvent: unbindChangeEvent\r\n }, {\r\n inPip: {\r\n get: function() {\r\n return mediaElement.webkitPresentationMode === SAFARI_PIP_MODE;\r\n }\r\n },\r\n isSupported: {\r\n get: function() {\r\n return true;\r\n }\r\n }\r\n });\r\n };\r\n\r\n var isControllerSupported = function(mediaElement) {\r\n return mediaElement && typeof mediaElement.webkitSetPresentationMode === 'function' && typeof mediaElement.webkitSupportsPresentationMode === 'function' && mediaElement.webkitSupportsPresentationMode(SAFARI_PIP_MODE);\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new SafariPipController object\r\n * @function create\r\n * @memberof TSC.SafariPipController\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @static\r\n * @return new SafariPipController instance\r\n */\r\n create: SafariPipController,\r\n /**\r\n * Check to see if SafariPipController is supported for platform being run on\r\n * @function isControllerSupported\r\n * @memberof TSC.SafariPipController\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @static\r\n * @return {Boolean} is controller supported on platform\r\n */\r\n isControllerSupported: isControllerSupported\r\n };\r\n});\r\n","(function(window, chromePipControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ChromePipController = chromePipControllerFactory(namespace.documentWrapper);\r\n})(this, function(documentWrapper) {\r\n 'use strict';\r\n\r\n var ENTER_PIP_CHROME_EVENT = 'enterpictureinpicture';\r\n var LEAVE_PIP_CHROME_EVENT = 'leavepictureinpicture';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class ChromePipController\r\n * @classdesc Controller to interface with Chrome PIP api.\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n */\r\n var ChromePipController = function(mediaElement) {\r\n var documentRef = documentWrapper.getDocument();\r\n\r\n var enter = function() {\r\n mediaElement.requestPictureInPicture();\r\n };\r\n\r\n var exit = function() {\r\n documentRef.exitPictureInPicture();\r\n };\r\n\r\n var bindChangeEvent = function(onChangeHandler) {\r\n mediaElement.addEventListener(ENTER_PIP_CHROME_EVENT, onChangeHandler);\r\n mediaElement.addEventListener(LEAVE_PIP_CHROME_EVENT, onChangeHandler);\r\n };\r\n\r\n var unbindChangeEvent = function(onChangeHandler) {\r\n mediaElement.removeEventListener(ENTER_PIP_CHROME_EVENT, onChangeHandler);\r\n mediaElement.removeEventListener(LEAVE_PIP_CHROME_EVENT, onChangeHandler);\r\n };\r\n\r\n return Object.defineProperties({\r\n enter: enter,\r\n exit: exit,\r\n bindChangeEvent: bindChangeEvent,\r\n unbindChangeEvent: unbindChangeEvent\r\n }, {\r\n inPip: {\r\n get: function() {\r\n return mediaElement === documentRef.pictureInPictureElement;\r\n }\r\n },\r\n isSupported: {\r\n get: function() {\r\n return true;\r\n }\r\n }\r\n });\r\n };\r\n\r\n var isControllerSupported = function() {\r\n var documentRef = documentWrapper.getDocument();\r\n return 'pictureInPictureEnabled' in documentRef && documentRef.pictureInPictureEnabled;\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new ChromePipController object\r\n * @function create\r\n * @memberof TSC.ChromePipController\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @static\r\n * @return new ChromePipController instance\r\n */\r\n create: ChromePipController,\r\n /**\r\n * Check to see if ChromePipController is supported for platform being run on\r\n * @function isControllerSupported\r\n * @memberof TSC.ChromePipController\r\n * @static\r\n * @return {Boolean} is controller supported on platform\r\n */\r\n isControllerSupported: isControllerSupported\r\n };\r\n});\r\n","(function(window, pipControllerFactoryFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.pipControllerFactory = pipControllerFactoryFactory(\r\n namespace.nullPipController,\r\n namespace.ChromePipController,\r\n namespace.SafariPipController,\r\n namespace.playerConfiguration);\r\n})(this, function(nullPipController,\r\n ChromePipController,\r\n SafariPipController,\r\n playerConfiguration) {\r\n 'use strict';\r\n\r\n var getPipController = function(mediaElement) {\r\n if (!playerConfiguration.disablePictureInPicture && ChromePipController.isControllerSupported()) {\r\n return ChromePipController.create(mediaElement);\r\n } else if (!playerConfiguration.disablePictureInPicture && SafariPipController.isControllerSupported(mediaElement)) {\r\n return SafariPipController.create(mediaElement);\r\n }\r\n return nullPipController;\r\n };\r\n\r\n return {\r\n getPipController: getPipController\r\n };\r\n});\r\n","(function(window, endActionsControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.endActionsController = endActionsControllerFactory(window, namespace.endActionType, namespace.playerConfiguration);\r\n})(this, function(window, endActionType, playerConfiguration) {\r\n 'use strict';\r\n\r\n var getEndActionType = function() {\r\n var xmpEndActionType = playerConfiguration.getEndActionType();\r\n\r\n if (xmpEndActionType !== undefined) {\r\n var xmpEndActionTypeLowerCase = xmpEndActionType.toLowerCase();\r\n var endActionParam = playerConfiguration.getEndActionParam();\r\n\r\n switch (xmpEndActionTypeLowerCase) {\r\n case 'loop': {\r\n return endActionType.loop;\r\n }\r\n case 'stop': {\r\n if (endActionParam === 'false' || endActionParam === '0') {\r\n return endActionType.hideReplayControls;\r\n }\r\n return endActionType.showReplayControls;\r\n }\r\n case 'jumptotime': {\r\n return endActionType.jumpToTimeAndPlay;\r\n }\r\n case 'jumptotimeandstop': {\r\n return endActionType.jumpToTImeAndStop;\r\n }\r\n case 'jumptourl': {\r\n return endActionType.openUrl;\r\n }\r\n case 'jumptourlnew': {\r\n return endActionType.openUrlInNewWindow;\r\n }\r\n default: {\r\n return endActionType.notAvailable;\r\n }\r\n }\r\n }\r\n return endActionType.notAvailable;\r\n };\r\n\r\n var executeSeekAction = function(onReplayHandler, playAfterSeek) {\r\n var seekTime = parseFloat(playerConfiguration.getEndActionParam());\r\n var seekTimeInSeconds = !seekTime ? 0 : seekTime / 1000;\r\n onReplayHandler(seekTimeInSeconds, playAfterSeek);\r\n };\r\n\r\n var executeOpenLinkAction = function(inNewWindow) {\r\n var target = inNewWindow === true ? '_blank' : '_top';\r\n var urlString = '' + playerConfiguration.getEndActionParam();\r\n window.open(urlString, target);\r\n };\r\n\r\n var executeEndAction = function(replayVideoHandler, showReplayControlsHandler) {\r\n var type = getEndActionType();\r\n if (type === endActionType.notAvailable) {\r\n return;\r\n }\r\n\r\n switch (type) {\r\n case endActionType.loop: {\r\n executeSeekAction(replayVideoHandler, true);\r\n break;\r\n }\r\n case endActionType.jumpToTimeAndPlay: {\r\n executeSeekAction(replayVideoHandler, true);\r\n break;\r\n }\r\n case endActionType.jumpToTImeAndStop: {\r\n executeSeekAction(replayVideoHandler, false);\r\n break;\r\n }\r\n case endActionType.showReplayControls: {\r\n showReplayControlsHandler();\r\n break;\r\n }\r\n case endActionType.openUrl: {\r\n executeOpenLinkAction(false);\r\n break;\r\n }\r\n case endActionType.openUrlInNewWindow: {\r\n executeOpenLinkAction(true);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n return Object.defineProperties({\r\n getEndActionType: getEndActionType,\r\n executeEndAction: executeEndAction\r\n }, {});\r\n});\r\n","(function(window, themeControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.themeController = themeControllerFactory(window, namespace.externalMessageController, namespace.themeNames, namespace.playerConfiguration);\r\n})(this, function(window, externalMessageController, themeNames, playerConfiguration) {\r\n 'use strict';\r\n \r\n var _$spElement = null;\r\n\r\n var setTheme = function(themeName) {\r\n playerConfiguration.setTheme(themeName);\r\n applyTheme();\r\n };\r\n\r\n var registerCallback = function() {\r\n externalMessageController.addCallback('SET_THEME', setTheme);\r\n };\r\n\r\n var setSmartPlayerContainerElement = function($element) {\r\n _$spElement = $element;\r\n applyTheme();\r\n };\r\n\r\n var getClassNameForTheme = function(theme) {\r\n return 'smartplayer-' + theme + '-theme';\r\n };\r\n\r\n var applyTheme = function() {\r\n if (_$spElement) {\r\n var themeClassNameAsString = Object.keys(themeNames).reduce(function(accumulator, currentValue) {\r\n return accumulator + getClassNameForTheme(themeNames[currentValue]) + ' ';\r\n }, '');\r\n\r\n var currentThemeClassName = getClassNameForTheme(playerConfiguration.getTheme());\r\n _$spElement.removeClass(themeClassNameAsString);\r\n _$spElement.addClass(currentThemeClassName);\r\n }\r\n };\r\n\r\n registerCallback();\r\n\r\n return {\r\n setTheme: setTheme,\r\n setSmartPlayerContainerElement: setSmartPlayerContainerElement\r\n };\r\n});\r\n","(function(window, tabControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.TabController = tabControllerFactory(namespace.events, namespace.keys);\r\n})(this, function(events, keys) {\r\n 'use strict';\r\n\r\n var TabController = function($container, $defaultFirstTabEnabledElement, $defaultLastTabEnabledElement) {\r\n var _defaultFirstTabEnabledElement = $defaultFirstTabEnabledElement;\r\n var _defaultLastTabEnabledElement = $defaultLastTabEnabledElement;\r\n var _firstTabEnabledElement = null;\r\n var _lastTabEnabledElement = null;\r\n var _playerInFullScreenMode = false;\r\n\r\n var onFullScreenChange = function(event, eventData) {\r\n _playerInFullScreenMode = eventData.inFullScreen;\r\n };\r\n\r\n var unbindEventsToTabEnabledElement = function(element) {\r\n if (element) {\r\n element.off('keydown');\r\n }\r\n };\r\n\r\n var setFirstTabEnabledElement = function(firstTabEnabledElement) {\r\n if (_firstTabEnabledElement) {\r\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\r\n }\r\n\r\n if (firstTabEnabledElement === null) {\r\n _firstTabEnabledElement = _defaultFirstTabEnabledElement;\r\n } else {\r\n _firstTabEnabledElement = firstTabEnabledElement;\r\n }\r\n\r\n _firstTabEnabledElement.on('keydown', function(e) {\r\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === true) {\r\n e.preventDefault();\r\n _lastTabEnabledElement.focus();\r\n }\r\n });\r\n };\r\n\r\n var setLastTabEnabledElement = function(lastTabEnabledElement) {\r\n if (_lastTabEnabledElement) {\r\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\r\n }\r\n\r\n if (lastTabEnabledElement === null) {\r\n _lastTabEnabledElement = _defaultLastTabEnabledElement;\r\n } else {\r\n _lastTabEnabledElement = lastTabEnabledElement;\r\n }\r\n\r\n _lastTabEnabledElement.on('keydown', function(e) {\r\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === false) {\r\n e.preventDefault();\r\n _firstTabEnabledElement.focus();\r\n }\r\n });\r\n };\r\n\r\n var initController = function() {\r\n if (!_defaultFirstTabEnabledElement || !_defaultLastTabEnabledElement) {\r\n throw new Error('Tab controller is missing a default tab enabled element');\r\n }\r\n setFirstTabEnabledElement(_defaultFirstTabEnabledElement);\r\n setLastTabEnabledElement(_defaultLastTabEnabledElement);\r\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\r\n };\r\n\r\n var destroy = function() {\r\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\r\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\r\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\r\n };\r\n\r\n initController();\r\n\r\n return Object.defineProperties({\r\n destroy: destroy\r\n }, {\r\n firstTabEnabledElement: {\r\n get: function() {\r\n return _firstTabEnabledElement;\r\n },\r\n set: setFirstTabEnabledElement\r\n },\r\n lastTabEnabledElement: {\r\n get: function() {\r\n return _lastTabEnabledElement;\r\n },\r\n set: setLastTabEnabledElement\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: TabController\r\n };\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.supportedPluginViewElements = Object.freeze({\r\n PROGRESS_BAR: 'progressBar',\r\n MEDIA: 'media'\r\n });\r\n}(window));\r\n","(function(window, pluginFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.Plugin = pluginFactory(window.Q);\r\n})(window, function(Q) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class Plugin\r\n * @classdesc Plugin Object\r\n * @param {String} pluginName - name of plugin\r\n * @param {String} viewElementType - view element type to install plugin into\r\n */\r\n var Plugin = function(pluginName, viewElementType) {\r\n var _initialized = false;\r\n var _initializedDefer = Q.defer();\r\n var _pluginName = pluginName;\r\n var _viewElementType = viewElementType;\r\n\r\n /**\r\n * @function init\r\n * @memberOf TSC.Plugin\r\n * Initialize plugin with dom element container that will resolve initialized promise.\r\n * @param {HTMLElement} pluginContainerElement - dom element that will be the container for plugin UI\r\n */\r\n var init = function(pluginContainerElement) {\r\n if (_initialized) {\r\n return;\r\n }\r\n _initialized = true;\r\n _initializedDefer.resolve({\r\n pluginContainerElement: pluginContainerElement\r\n });\r\n };\r\n\r\n return Object.defineProperties({\r\n init: init\r\n }, {\r\n initialized: {\r\n get: function() {\r\n return _initialized;\r\n }\r\n },\r\n initializedDefer: {\r\n get: function() {\r\n return _initializedDefer;\r\n }\r\n },\r\n pluginName: {\r\n get: function() {\r\n return _pluginName;\r\n }\r\n },\r\n viewElementType: {\r\n get: function() {\r\n return _viewElementType;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new Plugin object.\r\n * @function create\r\n * @memberof TSC.Plugin\r\n * @static\r\n * @return new Plugin instance\r\n */\r\n create: Plugin\r\n };\r\n});\r\n","(function(window, pluginControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.PluginController = pluginControllerFactory(window.Q, namespace.log, namespace.Plugin, namespace.supportedPluginViewElements, namespace.cssClasses);\r\n})(window, function(Q, log, Plugin, supportedPluginViewElements, cssClasses) {\r\n 'use strict';\r\n\r\n var REMOVE_SPACES_REGEX = /\\s+/g;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class PluginController\r\n * @classdesc Plugin Controller to wire up external plugins\r\n */\r\n var PluginController = function() {\r\n var _plugins = {};\r\n\r\n /**\r\n * @function isViewElementTypeSupported\r\n * Check to see if a viewElementType is supported.\r\n * @param {String} viewElementType - view element type for plugin\r\n * @return {Boolean} return if passed in viewElementType is supported.\r\n */\r\n var isViewElementTypeSupported = function(viewElementType) {\r\n return Object.keys(supportedPluginViewElements).some(function(key) {\r\n return supportedPluginViewElements[key] === viewElementType;\r\n });\r\n };\r\n\r\n /**\r\n * @function getPluginsForViewElementType\r\n * Get a list of plugin objects for the passed in view element type.\r\n * @param {String} viewElementType - view element type for plugin\r\n * @return {Array} return an array of supported plugins for the passed in view element type\r\n */\r\n var getPluginsForViewElementType = function(viewElementType) {\r\n return Object.keys(_plugins).filter(function(key) {\r\n return _plugins[key].viewElementType === viewElementType;\r\n }).map(function(key) {\r\n return _plugins[key];\r\n });\r\n };\r\n\r\n /**\r\n * @function getPluginContainerElement\r\n * Get a new div element setup for a plugin to append elements to.\r\n * @param {String} pluginName - name of plugin\r\n * @return {Element} return a new div element setup for old plugin dom\r\n */\r\n var getPluginContainerElement = function(pluginName) {\r\n var pluginNameNoSpaces = pluginName.replace(REMOVE_SPACES_REGEX, '');\r\n var pluginNamedContainerClassName = cssClasses.pluginNamedContainerPrefix + pluginNameNoSpaces;\r\n var pluginContainerElement = document.createElement('div');\r\n pluginContainerElement.classList.add(cssClasses.generatedPluginContainer);\r\n pluginContainerElement.classList.add(pluginNamedContainerClassName);\r\n return pluginContainerElement;\r\n };\r\n\r\n /**\r\n * @function registerPlugin\r\n * @methodOf TSC.PluginController\r\n * @param {String} pluginName - name of plugin\r\n * @param {String} viewElementType - view element type to install plugin into\r\n * @return {Promise} return a promise that resolves when the specified view element has initialized the plugin\r\n */\r\n var registerPlugin = function(pluginName, viewElementType) {\r\n if (_plugins[pluginName]) {\r\n var pluginSameNameMessage = 'Plugin with name [' + pluginName + '] is already registered with the player.';\r\n log.logMessage(pluginSameNameMessage);\r\n return Q.reject(pluginSameNameMessage);\r\n }\r\n\r\n if (!isViewElementTypeSupported(viewElementType)) {\r\n var pluginUnsupportedViewElementMessage = 'Plugin with name [' + pluginName + '] is registering with an unsupported view element [' + viewElementType + '].';\r\n log.logMessage(pluginUnsupportedViewElementMessage);\r\n return Q.reject(pluginUnsupportedViewElementMessage);\r\n }\r\n\r\n var plugin = Plugin.create(pluginName, viewElementType);\r\n _plugins[pluginName] = plugin;\r\n\r\n return plugin.initializedDefer.promise;\r\n };\r\n\r\n /**\r\n * @function initializePluginsForViewElement\r\n * @methodOf TSC.PluginController\r\n * Initialize all registered plugins for the passed in view element type\r\n * @param {String} viewElementType - view element type\r\n * @param {jQuery} $viewElementPluginContainer - jQuery element to add plugin dom elements into.\r\n */\r\n var initializePluginsForViewElement = function(viewElementType, $viewElementPluginContainer) {\r\n if (!isViewElementTypeSupported(viewElementType)) {\r\n log.logMessage('Tried to initialize plugin with unsupported view element type [' + viewElementType + ']');\r\n return;\r\n }\r\n var elementTypePlugins = getPluginsForViewElementType(viewElementType);\r\n elementTypePlugins.forEach(function(plugin) {\r\n if (plugin.initialized) {\r\n return;\r\n }\r\n var pluginContainerElement = getPluginContainerElement(plugin.pluginName);\r\n $viewElementPluginContainer.append(pluginContainerElement);\r\n plugin.init(pluginContainerElement);\r\n });\r\n\r\n if (elementTypePlugins.length === 0) {\r\n $viewElementPluginContainer.hide();\r\n } else {\r\n $viewElementPluginContainer.show();\r\n }\r\n };\r\n\r\n return Object.defineProperties({\r\n registerPlugin: registerPlugin,\r\n initializePluginsForViewElement: initializePluginsForViewElement\r\n }, {});\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new PluginController object.\r\n * @function create\r\n * @memberof TSC.PluginController\r\n * @static\r\n * @return new PluginController instance\r\n */\r\n create: PluginController\r\n };\r\n});\r\n","(function(window, textSanitizerDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.textSanitizer = textSanitizerDefinition();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n var EMAIL_REGEX = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n var htmlEncode = function(text) {\r\n if (typeof text === 'string') {\r\n return text.replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n }\r\n return text;\r\n };\r\n\r\n var isValidEmail = function(email) {\r\n return EMAIL_REGEX.test(email);\r\n };\r\n\r\n return {\r\n htmlEncode: htmlEncode,\r\n isValidEmail: isValidEmail\r\n };\r\n});\r\n","(function(window, highlightDisablerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.highlightDisabler = highlightDisablerFactory();\r\n})(this, function() {\r\n 'use strict';\r\n \r\n var highlightProperty = 'outline-style';\r\n\r\n var disableHighlights = function($element) {\r\n $element.css(highlightProperty, 'none').on('blur', function() {\r\n $element.off('blur').css(highlightProperty, '');\r\n });\r\n };\r\n\r\n var disableHighlightsOnMouseClick = function($element, e) {\r\n if (e.screenX || e.screenY) {\r\n disableHighlights($element);\r\n }\r\n };\r\n\r\n var checkIfElementIsHighlighted = function($element) {\r\n var highlightState = $element.css(highlightProperty);\r\n return highlightState !== 'none' && highlightState !== '';\r\n };\r\n\r\n return {\r\n disableHighlights: disableHighlights,\r\n disableHighlightsOnMouseClick: disableHighlightsOnMouseClick,\r\n checkIfElementIsHighlighted: checkIfElementIsHighlighted\r\n };\r\n});\r\n","(function(window, tokenServiceDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.tokenService = tokenServiceDefinition(\r\n window.$,\r\n window.Q,\r\n namespace.HttpService);\r\n})(this, function($, Q, HttpService) {\r\n 'use strict';\r\n\r\n var httpService = HttpService.create();\r\n\r\n var getTechSmithAccessToken = function(playerConfiguration) {\r\n var accessTokenEndpoint = playerConfiguration.getTechSmithAccessTokenEndpoint();\r\n if (accessTokenEndpoint) {\r\n return httpService.get(accessTokenEndpoint).then(function(data) {\r\n return data.AccessToken;\r\n });\r\n }\r\n return Q();\r\n };\r\n\r\n return {\r\n getTechSmithAccessToken: getTechSmithAccessToken\r\n };\r\n});\r\n","(function(window, captionServiceFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.CaptionService = captionServiceFactory(window.tscme, window.tinycolor);\r\n})(this, function(tscme, tinycolor) {\r\n 'use strict';\r\n\r\n var _defaultTextColorObject = Object.freeze(tinycolor({r: 255, g: 255, b: 255, a: 1.0}));\r\n var _defaultBgColorObject = Object.freeze(tinycolor({r: 0, g: 0, b: 0, a: 0.9}));\r\n\r\n var _defaults = Object.freeze({\r\n captionFontFamily: 'Arial, Helvetica, sans-serif;',\r\n captionFontSize: 24,\r\n captionFontSizeMin: 14,\r\n captionFontSizeMax: 144,\r\n captionTextColor: _defaultTextColorObject,\r\n captionBgColor: _defaultBgColorObject,\r\n captionPosition: 'overlay',\r\n captionBarHeight: 0\r\n });\r\n\r\n /**\r\n * @memberof TSC\r\n * @class CaptionService\r\n * @classdesc The caption service\r\n */\r\n var CaptionService = function() {\r\n var _position = _defaults.captionPosition;\r\n var _barHeight = _defaults.captionBarHeight;\r\n var _font = _defaults.captionFontFamily;\r\n var _fontSize = _defaults.captionFontSize;\r\n var _fontSizeMin = _defaults.captionFontSizeMin;\r\n var _fontSizeMax = _defaults.captionFontSizeMax;\r\n var _textColor = _defaults.captionTextColor.clone();\r\n var _backgroundColor = _defaults.captionBgColor.clone();\r\n var _captionTrack = tscme.CaptionTrack.create({captions: []});\r\n\r\n var setFontSize = function(value) {\r\n _fontSize = Math.min(Math.max(value, _fontSizeMin), _fontSizeMax);\r\n };\r\n\r\n var initFromXmp = function(xmp) {\r\n _position = xmp.captionPosition;\r\n _barHeight = xmp.captionBarHeight;\r\n _font = xmp.captionFontFamily;\r\n _fontSize = xmp.captionFontSize;\r\n _fontSizeMin = xmp.minCaptionFontSize;\r\n _fontSizeMax = xmp.maxCaptionFontSize;\r\n _textColor = tinycolor(xmp.captionTextColor);\r\n _backgroundColor = tinycolor(xmp.captionBg);\r\n _captionTrack = xmp.captionTrack;\r\n };\r\n\r\n return Object.defineProperties({\r\n initFromXmp: initFromXmp\r\n }, {\r\n position: {\r\n get: function() {\r\n return _position;\r\n }\r\n },\r\n height: {\r\n get: function() {\r\n return _barHeight;\r\n }\r\n },\r\n font: {\r\n get: function() {\r\n return _font;\r\n },\r\n set: function(value) {\r\n _font = value;\r\n }\r\n },\r\n fontEnclosedWithQuotes: {\r\n get: function() {\r\n var fontFamilies = _font.split(',');\r\n var quotedFontFamilies = fontFamilies.map(function(fontFamily) {\r\n return '\\'' + fontFamily.trim() + '\\'';\r\n });\r\n return quotedFontFamilies.join(',');\r\n }\r\n },\r\n fontSize: {\r\n get: function() {\r\n return _fontSize;\r\n },\r\n set: setFontSize\r\n },\r\n fontSizeMin: {\r\n get: function() {\r\n return _fontSizeMin;\r\n }\r\n },\r\n fontSizeMax: {\r\n get: function() {\r\n return _fontSizeMax;\r\n }\r\n },\r\n textColor: {\r\n get: function() {\r\n return _textColor;\r\n },\r\n set: function(value) {\r\n _textColor = tinycolor(value);\r\n }\r\n },\r\n backgroundColor: {\r\n get: function() {\r\n return _backgroundColor;\r\n },\r\n set: function(value) {\r\n _backgroundColor = tinycolor(value);\r\n }\r\n },\r\n backgroundOpacity: {\r\n get: function() {\r\n return _backgroundColor.getAlpha();\r\n },\r\n set: function(value) {\r\n _backgroundColor.setAlpha(value);\r\n }\r\n },\r\n captionTrack: {\r\n get: function() {\r\n return _captionTrack;\r\n },\r\n set: function(value) {\r\n _captionTrack = value;\r\n _backgroundColor = tinycolor({r: _captionTrack.bgColor.r, g: _captionTrack.bgColor.g, b: _captionTrack.bgColor.b, a: _captionTrack.bgOpacity});\r\n _textColor = tinycolor({r: _captionTrack.fgColor.r, g: _captionTrack.fgColor.g, b: _captionTrack.fgColor.b});\r\n setFontSize(_captionTrack.fontSize);\r\n _font = _captionTrack.fontFamily;\r\n _barHeight = _captionTrack.barHeight;\r\n _position = _captionTrack.position;\r\n }\r\n },\r\n hasCaptions: {\r\n get: function() {\r\n return _captionTrack.captionCollection.captions.length > 0;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new CaptionService object.\r\n * @function create\r\n * @memberof TSC.CaptionService\r\n * @static\r\n * @return new CaptionService instance\r\n */\r\n create: function() {\r\n return CaptionService();\r\n },\r\n defaults: function() {\r\n return _defaults;\r\n }\r\n };\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.questionType = (function() {\r\n return {\r\n FILL_IN: 'FITB',\r\n CHOICE: 'MC',\r\n SHORT: 'SHORT'\r\n };\r\n }());\r\n}(this));\r\n","(function(window, quizDataXmlConverterDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.quizDataXmlConverter = quizDataXmlConverterDefinition(\r\n namespace.textSanitizer,\r\n namespace.questionType);\r\n})(this, function(textSanitizer, questionType) {\r\n 'use strict';\r\n\r\n var VERSION = 1;\r\n\r\n var questionSetToXml = function(questionSet, quizInstanceId) {\r\n var xmlStr = '';\r\n xmlStr += '';\r\n\r\n questionSet.questions.forEach(function(question) {\r\n xmlStr += '';\r\n xmlStr += '' + question.duration + '';\r\n xmlStr += '' + textSanitizer.htmlEncode(question.response) + '';\r\n\r\n if (question.type !== questionType.SHORT && question.correct !== undefined) {\r\n xmlStr += '' + (question.correct ? 'True' : 'False') + '';\r\n }\r\n\r\n xmlStr += '' + question.segmentWatched + '';\r\n xmlStr += '';\r\n });\r\n\r\n xmlStr += '';\r\n return xmlStr;\r\n };\r\n\r\n var quizDefinitionToXml = function(quizDefinition) {\r\n var xmlStr = '';\r\n xmlStr += '';\r\n xmlStr += '' + textSanitizer.htmlEncode(quizDefinition.projectName) + '';\r\n xmlStr += '' + quizDefinition.productionName + '';\r\n xmlStr += '' + quizDefinition.originId + '';\r\n xmlStr += '' + quizDefinition.mediaDuration + '';\r\n xmlStr += '';\r\n\r\n quizDefinition.reportRecipients.forEach(function(recipient) {\r\n xmlStr += '' + recipient + '';\r\n });\r\n\r\n xmlStr += '';\r\n xmlStr += '';\r\n\r\n quizDefinition.questionSets.forEach(function(questionSet) {\r\n xmlStr += '';\r\n\r\n questionSet.questions.forEach(function(question) {\r\n xmlStr += '';\r\n xmlStr += '' + textSanitizer.htmlEncode(question.questionText, true) + '';\r\n\r\n if (question.type === questionType.CHOICE) {\r\n xmlStr += '';\r\n\r\n question.choices.forEach(function(choice) {\r\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\r\n });\r\n\r\n xmlStr += '';\r\n xmlStr += '' + question.correctAnswer + '';\r\n } else if (question.type === questionType.FILL_IN) {\r\n xmlStr += '';\r\n\r\n question.choices.forEach(function(choice) {\r\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\r\n });\r\n\r\n xmlStr += '';\r\n }\r\n\r\n xmlStr += '';\r\n });\r\n\r\n xmlStr += '';\r\n });\r\n\r\n xmlStr += '';\r\n xmlStr += '';\r\n\r\n return xmlStr;\r\n };\r\n\r\n return {\r\n questionSetToXml: questionSetToXml,\r\n quizDefinitionToXml: quizDefinitionToXml\r\n };\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.reportType = (function() {\r\n var _noneType = 'NONE';\r\n var _apiType = 'API';\r\n var _scormType = 'SCORM';\r\n var _apiAndScormType = 'APIANDSCORM';\r\n\r\n return {\r\n NONE: _noneType,\r\n API: _apiType,\r\n SCORM: _scormType,\r\n APIANDSCORM: _apiAndScormType,\r\n isValid: function(type) {\r\n return type === _noneType || type === _apiType || type === _scormType || type === _apiAndScormType;\r\n }\r\n };\r\n }());\r\n}(this));\r\n","(function(window, questionSetMarkerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.QuestionSetMarker = questionSetMarkerFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n var MARKER_BEGIN_OFFSET = 250; // 250 milliseconds\r\n var MARKER_END_OFFSET = 100; // 100 milliseconds\r\n\r\n /**\r\n * @memberof TSC\r\n * @class QuestionSetMarker\r\n * @classdesc Question Set Marker\r\n * @params {Number} questionSetIndex - Question Set index\r\n * @params {TSC.QuestionSet} questionSet - Question set object for this marker.\r\n */\r\n var QuestionSetMarker = function(questionSetIndex, questionSet) {\r\n var _questionSetIndex = questionSetIndex;\r\n var _startTime = questionSet.startTime;\r\n var _rangeStart = questionSet.startTime - MARKER_BEGIN_OFFSET;\r\n var _rangeEnd = questionSet.startTime + MARKER_END_OFFSET;\r\n var _canSeekPast = false;\r\n\r\n return Object.defineProperties({}, {\r\n questionSetIndex: {\r\n get: function() {\r\n return _questionSetIndex;\r\n },\r\n set: function(questionSetId) {\r\n _questionSetIndex = questionSetId;\r\n }\r\n },\r\n rangeStart: {\r\n get: function() {\r\n return _rangeStart;\r\n },\r\n set: function(rangeStart) {\r\n _rangeStart = rangeStart;\r\n }\r\n },\r\n rangeEnd: {\r\n get: function() {\r\n return _rangeEnd;\r\n },\r\n set: function(rangeEnd) {\r\n _rangeEnd = rangeEnd;\r\n }\r\n },\r\n startTime: {\r\n get: function() {\r\n return _startTime;\r\n },\r\n set: function(time) {\r\n _startTime = time;\r\n }\r\n },\r\n completed: {\r\n get: function() {\r\n return questionSet.completed;\r\n }\r\n },\r\n canSeekPast: {\r\n get: function() {\r\n return questionSet.completed || _canSeekPast;\r\n },\r\n set: function(canSeekPast) {\r\n _canSeekPast = canSeekPast;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new QuestionSetMarker object.\r\n * @function create\r\n * @memberof TSC.QuestionSetMarker\r\n * @params {Number} questionSetIndex - Question Set index\r\n * @params {Number} startTime - Time of question marker relative to media.\r\n * @static\r\n * @return new QuestionSetMarker instance\r\n */\r\n create: QuestionSetMarker\r\n };\r\n});\r\n","(function(window, questionFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.Question = questionFactory(namespace.questionType);\r\n})(this, function(questionType) {\r\n 'use strict';\r\n\r\n var SHORT_ANSWER_SNAPSHOT_TEXT = 'n/a';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class Question\r\n * @param {tscme.Question} tscmeQuestionModel - Question model from Media-Extensions-js\r\n * @classdesc Question model\r\n */\r\n var Question = function(tscmeQuestionModel) {\r\n var _isGraded = false;\r\n var _userResponse;\r\n var _isResponseCorrect;\r\n var _attemptDuration = 0;\r\n var _correctAnswer;\r\n var _responseLocked = false;\r\n var _feedbackActionExecuted = false;\r\n\r\n var getIsGraded = function(type, correctAnswer, answers) {\r\n return type === questionType.CHOICE && correctAnswer && correctAnswer > 0 ||\r\n type === questionType.FILL_IN && answers.length > 0;\r\n };\r\n\r\n _isGraded = getIsGraded(tscmeQuestionModel.type, tscmeQuestionModel.correctAnswer, tscmeQuestionModel.answers);\r\n _correctAnswer = tscmeQuestionModel.correctAnswer;\r\n\r\n var toJSON = function() {\r\n return {\r\n id: tscmeQuestionModel.id,\r\n type: tscmeQuestionModel.type,\r\n questionText: tscmeQuestionModel.text,\r\n choices: tscmeQuestionModel.answers.map(function(answer) {\r\n return answer.text;\r\n }),\r\n correctAnswer: _correctAnswer\r\n };\r\n };\r\n\r\n var getSnapShot = function() {\r\n // due to character limitations with SCORM data we will not include short answer user response\r\n var snapshotUserResponse = _userResponse;\r\n if (tscmeQuestionModel.type === questionType.SHORT && _userResponse) {\r\n snapshotUserResponse = SHORT_ANSWER_SNAPSHOT_TEXT;\r\n }\r\n\r\n return {\r\n id: tscmeQuestionModel.id,\r\n rl: _responseLocked,\r\n ad: _attemptDuration,\r\n ur: snapshotUserResponse,\r\n irc: _isResponseCorrect\r\n };\r\n };\r\n\r\n var populateQuestion = function(questionSnapShot) {\r\n if (questionSnapShot.id === tscmeQuestionModel.id) {\r\n _responseLocked = questionSnapShot.rl;\r\n _attemptDuration = questionSnapShot.ad;\r\n _userResponse = questionSnapShot.ur;\r\n _isResponseCorrect = questionSnapShot.irc;\r\n }\r\n };\r\n\r\n var getQuizServiceData = function(percentOfVideoSegmentWatched) {\r\n var questionData = {\r\n type: tscmeQuestionModel.type,\r\n id: tscmeQuestionModel.id,\r\n duration: _attemptDuration,\r\n response: _userResponse,\r\n correct: _isResponseCorrect,\r\n segmentWatched: percentOfVideoSegmentWatched\r\n };\r\n\r\n // no correct answer for MC question, don't include correct var\r\n if (tscmeQuestionModel.type === questionType.CHOICE && _correctAnswer === 0) {\r\n delete questionData.correct;\r\n }\r\n\r\n return questionData;\r\n };\r\n\r\n var getFeedbackForReason = function(reason) {\r\n var feedback = null;\r\n\r\n tscmeQuestionModel.feedback.forEach(function(feedbackItem) {\r\n if (feedbackItem.reason === reason) {\r\n feedback = feedbackItem;\r\n }\r\n });\r\n\r\n return feedback;\r\n };\r\n\r\n return Object.defineProperties({\r\n toJSON: toJSON,\r\n getSnapShot: getSnapShot,\r\n populateQuestion: populateQuestion,\r\n getQuizServiceData: getQuizServiceData,\r\n getFeedbackForReason: getFeedbackForReason\r\n }, {\r\n id: {\r\n get: function() {\r\n return tscmeQuestionModel.id;\r\n }\r\n },\r\n type: {\r\n get: function() {\r\n return tscmeQuestionModel.type;\r\n }\r\n },\r\n text: {\r\n get: function() {\r\n return tscmeQuestionModel.text;\r\n }\r\n },\r\n correctAnswer: {\r\n get: function() {\r\n return _correctAnswer;\r\n },\r\n set: function(correctAnswer) {\r\n _correctAnswer = correctAnswer;\r\n }\r\n },\r\n answers: {\r\n get: function() {\r\n return tscmeQuestionModel.answers;\r\n }\r\n },\r\n feedback: {\r\n get: function() {\r\n return tscmeQuestionModel.feedback;\r\n }\r\n },\r\n isGraded: {\r\n get: function() {\r\n return _isGraded;\r\n },\r\n set: function(isGraded) {\r\n _isGraded = isGraded;\r\n }\r\n },\r\n userResponse: {\r\n get: function() {\r\n return _userResponse;\r\n },\r\n set: function(userResponse) {\r\n if (_responseLocked) {\r\n return;\r\n }\r\n _userResponse = userResponse;\r\n }\r\n },\r\n isResponseCorrect: {\r\n get: function() {\r\n return _isResponseCorrect;\r\n },\r\n set: function(isResponseCorrect) {\r\n _isResponseCorrect = isResponseCorrect;\r\n }\r\n },\r\n attemptDuration: {\r\n get: function() {\r\n return _attemptDuration;\r\n },\r\n set: function(attemptDuration) {\r\n if (_responseLocked) {\r\n return;\r\n }\r\n _attemptDuration = attemptDuration;\r\n }\r\n },\r\n responseLocked: {\r\n get: function() {\r\n return _responseLocked;\r\n },\r\n set: function(responseLocked) {\r\n _responseLocked = responseLocked;\r\n }\r\n },\r\n feedbackActionExecuted: {\r\n get: function() {\r\n return _feedbackActionExecuted;\r\n },\r\n set: function(feedbackActionExecuted) {\r\n _feedbackActionExecuted = feedbackActionExecuted;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new Question object.\r\n * @function create\r\n * @memberof TSC.Question\r\n * @param {tscme.Question} tscmeQuestionModel - Question model from Media-Extensions-js\r\n * @static\r\n * @return new Question instance\r\n */\r\n create: Question\r\n };\r\n});\r\n","(function(window, questionSetFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.QuestionSet = questionSetFactory(namespace.Question);\r\n})(this, function(Question) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class QuestionSet\r\n * @classdesc Question Set Model\r\n * @param {tscme.QuestionSet} tscmeQuestionSetModel - Question set model from Media-Extensions-js\r\n * @param {Number} orderId - Order id of the question set. Should be a number above 0.\r\n */\r\n var QuestionSet = function(tscmeQuestionSetModel, orderId) {\r\n var _questions = [];\r\n var _orderId = orderId;\r\n var _percentOfVideoSegmentWatched = 0;\r\n var _numberGradedQuestions = 0;\r\n var _numberUngradedQuestions = 0;\r\n\r\n var createQuestionModels = function() {\r\n tscmeQuestionSetModel.questions.forEach(function(tscmeQuestion) {\r\n _questions.push(Question.create(tscmeQuestion));\r\n });\r\n };\r\n\r\n var cacheQuestionDetails = function() {\r\n _numberGradedQuestions = 0;\r\n _numberUngradedQuestions = 0;\r\n _questions.forEach(function(question) {\r\n if (question.isGraded) {\r\n _numberGradedQuestions++;\r\n } else {\r\n _numberUngradedQuestions++;\r\n }\r\n });\r\n };\r\n\r\n var toJSON = function() {\r\n return {\r\n name: tscmeQuestionSetModel.name,\r\n mediaTimePosition: tscmeQuestionSetModel.startTime,\r\n order: _orderId,\r\n questions: _questions.map(function(question) {\r\n return question.toJSON();\r\n })\r\n };\r\n };\r\n\r\n var getSnapShot = function() {\r\n return {\r\n n: tscmeQuestionSetModel.name,\r\n vsw: _percentOfVideoSegmentWatched,\r\n q: _questions.map(function(question) {\r\n return question.getSnapShot();\r\n })\r\n };\r\n };\r\n\r\n var populateQuestionSet = function(questionSetSnapShot) {\r\n if (tscmeQuestionSetModel.name === questionSetSnapShot.n) {\r\n _percentOfVideoSegmentWatched = questionSetSnapShot.vsw;\r\n questionSetSnapShot.q.forEach(function(questionSnapShot) {\r\n for (var i = 0; i < _questions.length; i++) {\r\n if (_questions[i].id === questionSnapShot.id) {\r\n _questions[i].populateQuestion(questionSnapShot);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n var getQuizServiceData = function(quizId) {\r\n var questionSetData = {};\r\n questionSetData.quizId = quizId;\r\n questionSetData.order = _orderId;\r\n questionSetData.questions = _questions.filter(function(question) {\r\n return question.responseLocked;\r\n }).map(function(question) {\r\n return question.getQuizServiceData(_percentOfVideoSegmentWatched);\r\n });\r\n return JSON.stringify(questionSetData);\r\n };\r\n\r\n createQuestionModels();\r\n cacheQuestionDetails();\r\n\r\n return Object.defineProperties({\r\n toJSON: toJSON,\r\n getSnapShot: getSnapShot,\r\n populateQuestionSet: populateQuestionSet,\r\n getQuizServiceData: getQuizServiceData,\r\n cacheQuestionDetails: cacheQuestionDetails\r\n }, {\r\n name: {\r\n get: function() {\r\n return tscmeQuestionSetModel.name;\r\n }\r\n },\r\n displayFeedback: {\r\n get: function() {\r\n return tscmeQuestionSetModel.feedback;\r\n }\r\n },\r\n startTime: {\r\n get: function() {\r\n return tscmeQuestionSetModel.startTime;\r\n }\r\n },\r\n questions: {\r\n get: function() {\r\n return _questions;\r\n }\r\n },\r\n inProgress: {\r\n get: function() {\r\n return _questions.some(function(question) {\r\n return question.responseLocked;\r\n });\r\n }\r\n },\r\n completed: {\r\n get: function() {\r\n return _questions.every(function(question) {\r\n return question.responseLocked;\r\n });\r\n }\r\n },\r\n percentOfVideoSegmentWatched: {\r\n get: function() {\r\n return _percentOfVideoSegmentWatched;\r\n },\r\n set: function(percentOfVideoSegmentWatched) {\r\n _percentOfVideoSegmentWatched = percentOfVideoSegmentWatched;\r\n }\r\n },\r\n numberGradedQuestions: {\r\n get: function() {\r\n return _numberGradedQuestions;\r\n }\r\n },\r\n numberUngradedQuestions: {\r\n get: function() {\r\n return _numberUngradedQuestions;\r\n }\r\n },\r\n numberCorrectQuestions: {\r\n get: function() {\r\n var correctQuestions = _questions.filter(function(question) {\r\n return question.isGraded && question.isResponseCorrect;\r\n });\r\n\r\n return correctQuestions.length;\r\n }\r\n },\r\n usesRationale: {\r\n get: function() {\r\n return _questions.some(function(question) {\r\n return question.feedback.length > 0;\r\n });\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new QuestionSet object.\r\n * @function create\r\n * @memberof TSC.QuestionSet\r\n * @param {tscme.QuestionSet} tscmeQuestionSetModel - Question set model from Media-Extensions-js\r\n * @param {Number} orderId - Order id of the question set. Should be a number above 0.\r\n * @static\r\n * @return new QuestionSet instance\r\n */\r\n create: QuestionSet\r\n };\r\n});\r\n","(function(window, quizFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.Quiz = quizFactory(window,\r\n window.JSON,\r\n namespace.reportType,\r\n namespace.questionType,\r\n namespace.QuestionSetMarker,\r\n namespace.QuestionSet);\r\n})(this, function(window, JSON, reportType, questionType, QuestionSetMarker, QuestionSet) {\r\n 'use strict';\r\n\r\n var MIN_MARKER_TIME_DIFF = 2000;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class Quiz\r\n * @classdesc Quiz Model\r\n * @param {TSC.Xmp} xmpModel - Xmp Model\r\n */\r\n var Quiz = function(xmpModel) {\r\n var _productionName;\r\n var _originId;\r\n var _projectName;\r\n var _quizTitle;\r\n var _quizId;\r\n var _authoredEmail;\r\n var _clientId;\r\n var _quizHash;\r\n var _reportMethod = reportType.NONE;\r\n var _requireUserId = true;\r\n var _hideReplay = false;\r\n var _questionSets = [];\r\n var _questionSetMarkers = [];\r\n var _mediaDuration = 0;\r\n var _locale = '';\r\n var _allowSkipQuiz = true;\r\n\r\n var createQuizDefinition = function() {\r\n var quizDef = {};\r\n quizDef.quizId = _quizId;\r\n quizDef.lang = _locale;\r\n quizDef.projectName = _projectName;\r\n quizDef.productionName = _productionName;\r\n quizDef.originId = _originId;\r\n quizDef.mediaDuration = _mediaDuration;\r\n quizDef.reportRecipients = [_authoredEmail];\r\n quizDef.questionSets = [];\r\n\r\n _questionSets.forEach(function(questionSet) {\r\n quizDef.questionSets.push(questionSet.toJSON());\r\n });\r\n\r\n return JSON.stringify(quizDef);\r\n };\r\n\r\n var setAllowSkipQuiz = function(allowSkipQuiz) {\r\n _allowSkipQuiz = !(allowSkipQuiz === '0' || allowSkipQuiz === false);\r\n };\r\n\r\n var setReportMethod = function(method) {\r\n if (reportType.isValid(method)) {\r\n _reportMethod = method;\r\n }\r\n };\r\n\r\n var getApiDataForQuestionSet = function(questionSetIndex) {\r\n if (questionSetIndex < 0 || questionSetIndex >= _questionSets.length) {\r\n return;\r\n }\r\n return _questionSets[questionSetIndex].getQuizServiceData(_quizId);\r\n };\r\n\r\n var createQuestionSetMarkers = function() {\r\n _questionSetMarkers = [];\r\n _questionSets.forEach(function(questionSet, index) {\r\n _questionSetMarkers.push(QuestionSetMarker.create(index, questionSet));\r\n });\r\n };\r\n\r\n var processXmp = function() {\r\n _productionName = xmpModel.title;\r\n _originId = xmpModel.originId;\r\n _projectName = xmpModel.project;\r\n _locale = xmpModel.quizLocale;\r\n _quizTitle = xmpModel.title;\r\n _quizId = xmpModel.quizGuid;\r\n _requireUserId = xmpModel.quizRequireUserId;\r\n _hideReplay = xmpModel.quizHideReplay;\r\n _authoredEmail = xmpModel.quizAuthoredEmail;\r\n _clientId = xmpModel.quizClientId;\r\n _quizHash = xmpModel.quizHash;\r\n _mediaDuration = xmpModel.mediaDuration;\r\n\r\n setReportMethod(xmpModel.quizReportMethod);\r\n setAllowSkipQuiz(xmpModel.quizAllowSkipQuiz);\r\n\r\n xmpModel.quizQuestionSetArray.forEach(function(tscmeQuestionSet, index) {\r\n _questionSets.push(QuestionSet.create(tscmeQuestionSet, index + 1));\r\n });\r\n };\r\n\r\n var getScormScore = function() {\r\n var scormScore = 0;\r\n var totalGradableQuestions = 0;\r\n var totalCorrectQuestions = 0;\r\n\r\n _questionSets.forEach(function(questionSet) {\r\n totalGradableQuestions += questionSet.numberGradedQuestions;\r\n totalCorrectQuestions += questionSet.numberCorrectQuestions;\r\n });\r\n\r\n if (totalGradableQuestions !== 0) {\r\n scormScore = totalCorrectQuestions / totalGradableQuestions * 100;\r\n }\r\n\r\n return scormScore;\r\n };\r\n\r\n var isLastQuestionComplete = function(considerQuestionSetCompleteId) {\r\n if (considerQuestionSetCompleteId === undefined) {\r\n considerQuestionSetCompleteId = -1;\r\n }\r\n\r\n return _questionSets.every(function(questionSet, index) {\r\n return questionSet.numberGradedQuestions === 0 || questionSet.completed || index === considerQuestionSetCompleteId;\r\n });\r\n };\r\n\r\n var getPreviousMarkerTimeForMarker = function(questionSetIndex) {\r\n var markerTime = 0;\r\n var timeDiff;\r\n\r\n if (questionSetIndex > 0) {\r\n if (questionSetIndex >= _questionSets.length) {\r\n markerTime = _questionSets[_questionSets.length - 1].startTime;\r\n } else {\r\n for (var i = questionSetIndex - 1; i >= 0; i--) {\r\n if (!_questionSets[i].completed) {\r\n continue;\r\n }\r\n timeDiff = _questionSets[questionSetIndex].startTime - _questionSets[i].startTime;\r\n\r\n if (timeDiff >= MIN_MARKER_TIME_DIFF) {\r\n markerTime = _questionSets[i].startTime;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return markerTime;\r\n };\r\n\r\n var getSnapShot = function() {\r\n return {\r\n qs: _questionSets.map(function(questionSet) {\r\n return questionSet.getSnapShot();\r\n })\r\n };\r\n };\r\n\r\n var populateQuiz = function(quizModelSnapshot) {\r\n quizModelSnapshot.qs.forEach(function(questionSetSnapshot) {\r\n for (var i = 0; i < _questionSets.length; i++) {\r\n if (_questionSets[i].name === questionSetSnapshot.n) {\r\n _questionSets[i].populateQuestionSet(questionSetSnapshot);\r\n }\r\n }\r\n });\r\n };\r\n\r\n processXmp();\r\n createQuestionSetMarkers();\r\n\r\n return Object.defineProperties({\r\n getApiDataForQuestionSet: getApiDataForQuestionSet,\r\n getScormScore: getScormScore,\r\n isLastQuestionComplete: isLastQuestionComplete,\r\n getPreviousMarkerTimeForMarker: getPreviousMarkerTimeForMarker,\r\n getSnapShot: getSnapShot,\r\n populateQuiz: populateQuiz\r\n }, {\r\n quizDefinition: {\r\n get: function() {\r\n return createQuizDefinition();\r\n }\r\n },\r\n useQuizApi: {\r\n get: function() {\r\n return _reportMethod === reportType.API || _reportMethod === reportType.APIANDSCORM;\r\n }\r\n },\r\n useScorm: {\r\n get: function() {\r\n return _reportMethod === reportType.SCORM || _reportMethod === reportType.APIANDSCORM;\r\n }\r\n },\r\n quizTitle: {\r\n get: function() {\r\n return _quizTitle;\r\n }\r\n },\r\n quizID: {\r\n get: function() {\r\n return _quizId;\r\n }\r\n },\r\n authoredEmail: {\r\n get: function() {\r\n return _authoredEmail;\r\n }\r\n },\r\n clientId: {\r\n get: function() {\r\n return _clientId;\r\n }\r\n },\r\n quizHash: {\r\n get: function() {\r\n return _quizHash;\r\n }\r\n },\r\n mediaDuration: {\r\n get: function() {\r\n return _mediaDuration;\r\n }\r\n },\r\n reportMethod: {\r\n set: setReportMethod,\r\n get: function() {\r\n return _reportMethod;\r\n }\r\n },\r\n requireUserId: {\r\n get: function() {\r\n return _requireUserId;\r\n }\r\n },\r\n hideReplay: {\r\n get: function() {\r\n return _hideReplay;\r\n }\r\n },\r\n allowSkipQuiz: {\r\n get: function() {\r\n return _allowSkipQuiz;\r\n }\r\n },\r\n locale: {\r\n get: function() {\r\n return _locale;\r\n }\r\n },\r\n questionSetMarkerTimes: {\r\n get: function() {\r\n return _questionSetMarkers;\r\n }\r\n },\r\n numberQuestionSets: {\r\n get: function() {\r\n return _questionSets.length;\r\n }\r\n },\r\n questionSets: {\r\n get: function() {\r\n return _questionSets;\r\n }\r\n },\r\n minMarkerTimeDiff: {\r\n get: function() {\r\n return MIN_MARKER_TIME_DIFF;\r\n }\r\n },\r\n totalNumberOfGradedQuestionSets: {\r\n get: function() {\r\n var totalGradableQuestionSets = 0;\r\n _questionSets.forEach(function(questionSet) {\r\n if (questionSet.numberGradedQuestions > 0) {\r\n totalGradableQuestionSets++;\r\n }\r\n });\r\n return totalGradableQuestionSets;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new Quiz object.\r\n * @function create\r\n * @memberof TSC.Quiz\r\n * @param {TSC.Xmp} xmpModel - Xmp Model\r\n * @static\r\n * @return new Quiz instance\r\n */\r\n create: Quiz\r\n };\r\n});\r\n","(function(window, quizServiceDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.quizService = quizServiceDefinition(\r\n window.$,\r\n window.Q,\r\n namespace.HttpService,\r\n namespace.log,\r\n namespace.quizDataXmlConverter,\r\n namespace.BackoffStrategyFactory,\r\n namespace.tokenService);\r\n})(this, function($, Q, HttpService, log, quizDataXmlConverter, BackoffStrategyFactory, tokenService) {\r\n 'use strict';\r\n\r\n var _definitionEndPoint = 'v/1/quiz/definition';\r\n var _instanceEndPoint = 'v/1/quiz/instance?noop=1';\r\n var _responseEndPoint = 'v/1/quiz/response?noop=1';\r\n var _progressEndPoint = 'v/1/quiz/progress?noop=1';\r\n\r\n var _environments = [\r\n {label: 'Local', url: 'https://quiz.techsmith.localhost:11443/'},\r\n {label: 'Dev', url: 'https://quiz.cloud.tsc-dev.co/'},\r\n {label: 'Stage', url: 'https://quiz.cloud.tsc-stage.co/'},\r\n {label: 'Live', url: 'https://quiz.cloud.techsmith.com/'},\r\n {label: 'TE', url: 'https://quizzingtest2.cloud.tsc-dev.co/'}\r\n ];\r\n\r\n var _environmentId = 3;\r\n var _quizInstanceDataDefer = Q.defer();\r\n var httpService = HttpService.create();\r\n var httpServiceWithUnlimitedRetries = HttpService.create(BackoffStrategyFactory.createWithUnlimitedRetries());\r\n var httpServiceWithNoLogging = HttpService.create(BackoffStrategyFactory.create(), false);\r\n\r\n //should only be used for the purposes of unit tests!\r\n var reset = function() {\r\n httpServiceWithUnlimitedRetries = HttpService.create(BackoffStrategyFactory.createWithUnlimitedRetries());\r\n httpService = HttpService.create();\r\n httpServiceWithNoLogging = HttpService.create(BackoffStrategyFactory.create(), false);\r\n _quizInstanceDataDefer = Q.defer();\r\n };\r\n\r\n var submitQuizDefinition = function(quizJsonData, hash, clientId) {\r\n if (!quizJsonData) {\r\n return Q();\r\n }\r\n\r\n if (typeof quizJsonData === 'string') {\r\n quizJsonData = $.parseJSON(quizJsonData);\r\n }\r\n\r\n var quizDefinitionXml = quizDataXmlConverter.quizDefinitionToXml(quizJsonData);\r\n var url = _environments[_environmentId].url + _definitionEndPoint + '?Quiz-Checksum=' + hash + '&Quiz-ClientId=' + clientId + '&noop=1';\r\n var data = {DefinitionText: quizDefinitionXml};\r\n\r\n return httpService.sendFormDataPost(url, data).then(function() {\r\n return quizDefinitionXml;\r\n });\r\n };\r\n \r\n var getInstanceFormData = function(quizModel, firstName, lastName, email, playerConfiguration) {\r\n var data = {\r\n QuizId: quizModel.quizID,\r\n CheckForQuizDefinition: playerConfiguration.getFathomId() === undefined\r\n };\r\n\r\n if (playerConfiguration.getTechSmithAccessTokenEndpoint()) {\r\n return tokenService.getTechSmithAccessToken(playerConfiguration).then(function(token) {\r\n data.AccessToken = token;\r\n return data;\r\n });\r\n }\r\n \r\n data.FirstName = !firstName ? '' : firstName;\r\n data.LastName = !lastName ? '' : lastName;\r\n data.Email = !email ? '' : email;\r\n return Q(data);\r\n };\r\n\r\n var startQuizInstance = function(quizModel, firstName, lastName, email, playerConfiguration) {\r\n var url = _environments[_environmentId].url + _instanceEndPoint;\r\n\r\n getInstanceFormData(quizModel, firstName, lastName, email, playerConfiguration).then(function(data) {\r\n httpService.sendFormDataPost(url, data).then(function(response) {\r\n if (response.DefinitionRequired) {\r\n return submitQuizDefinition(quizModel.quizDefinition, quizModel.quizHash, quizModel.clientId).then(function() {\r\n return response;\r\n });\r\n }\r\n return response;\r\n }).then(function(response) {\r\n _quizInstanceDataDefer.resolve({\r\n analyticsSampleRate: response.SampleRate,\r\n quizInstanceId: response.Id\r\n });\r\n }).catch(_quizInstanceDataDefer.reject);\r\n });\r\n\r\n return _quizInstanceDataDefer.promise;\r\n };\r\n \r\n var sendProgress = function(sampleRateInMilliseconds, completedSamples) {\r\n if (completedSamples && completedSamples.length > 0) {\r\n return _quizInstanceDataDefer.promise.then(function(quizInstanceData) {\r\n var url = _environments[_environmentId].url + _progressEndPoint;\r\n var data = {\r\n InstanceId: quizInstanceData.quizInstanceId,\r\n Interval: sampleRateInMilliseconds,\r\n ViewedSegments: completedSamples\r\n };\r\n\r\n return httpServiceWithNoLogging.sendFormDataPost(url, data, 0);\r\n });\r\n }\r\n };\r\n\r\n var setEnvironment = function(environmentId) {\r\n _environmentId = environmentId;\r\n };\r\n\r\n var getEnvironment = function() {\r\n return _environmentId;\r\n };\r\n\r\n var submitQuestionSet = function(questionSetData) {\r\n return _quizInstanceDataDefer.promise.then(function(quizInstanceData) {\r\n if (!quizInstanceData.quizInstanceId) {\r\n return Q.reject('No quiz instance ID found');\r\n }\r\n\r\n if (typeof questionSetData === 'string') {\r\n questionSetData = $.parseJSON(questionSetData);\r\n }\r\n\r\n var questionSetXml = quizDataXmlConverter.questionSetToXml(questionSetData, quizInstanceData.quizInstanceId);\r\n var url = _environments[_environmentId].url + _responseEndPoint;\r\n var data = {\r\n ResponseText: questionSetXml\r\n };\r\n\r\n return httpServiceWithUnlimitedRetries.sendFormDataPost(url, data).then(function(response) {\r\n return response.results;\r\n });\r\n });\r\n };\r\n\r\n var getAnalyticsRate = function() {\r\n return _quizInstanceDataDefer.promise.then(function(response) {\r\n return response.analyticsSampleRate;\r\n });\r\n };\r\n\r\n return {\r\n setEnvironment: setEnvironment,\r\n getEnvironment: getEnvironment,\r\n startQuizInstance: startQuizInstance,\r\n submitQuestionSet: submitQuestionSet,\r\n sendProgress: sendProgress,\r\n getAnalyticsRate: getAnalyticsRate,\r\n reset: reset\r\n };\r\n});\r\n","(function(window, xmpFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.Xmp = xmpFactory(window, window.$, window.Q, window.tscme, namespace.log, namespace.playerConfiguration, namespace.urlService, namespace.CaptionService);\r\n})(this, function(window, $, Q, tscme, log, playerConfiguration, urlService, CaptionService) {\r\n 'use strict';\r\n \r\n /**\r\n * @memberof TSC\r\n * @class Xmp\r\n * @classdesc Xmp model\r\n */\r\n var Xmp = function() {\r\n var _ready = Q.defer();\r\n var _xmpModel = null;\r\n var _maxAttemptTime = 5000;\r\n var _retryLimit = 2;\r\n var _timeBetweenRetries = 0;\r\n var _groupedScreenTextItems = null;\r\n var _captionDefaults = CaptionService.defaults();\r\n\r\n var loadXmpWithRetry = function(xmpSrc, retrylimit, crossDomainRequest) {\r\n $.ajax({\r\n type: 'GET',\r\n url: xmpSrc,\r\n crossDomain: crossDomainRequest,\r\n dataType: 'text',\r\n timeout: _maxAttemptTime\r\n }).done(function(data) {\r\n if (retrylimit < _retryLimit) {\r\n log.logMessage('xmp: loadXMP() succeeded after ' + (_retryLimit - retrylimit) + ' failed attempts.');\r\n }\r\n parseXmp(data);\r\n }).fail(function() {\r\n if (retrylimit > 0) {\r\n setTimeout(function() {\r\n loadXmpWithRetry(xmpSrc, --retrylimit);\r\n }, _timeBetweenRetries, crossDomainRequest);\r\n } else {\r\n _ready.reject('xmp: loadXMP() failed after ' + _retryLimit + ' retries.');\r\n }\r\n });\r\n };\r\n\r\n var loadXmp = function(xmpSrc, crossDomainRequest) {\r\n loadXmpWithRetry(xmpSrc, _retryLimit, crossDomainRequest);\r\n };\r\n\r\n var parseXmp = function(xmpXml) {\r\n try {\r\n _xmpModel = tscme.Xmp.create(xmpXml);\r\n _ready.resolve();\r\n } catch (err) {\r\n _ready.reject('xmp - failed to parse XMP string');\r\n }\r\n };\r\n\r\n var groupScreenTextByStartTime = function() {\r\n var itemStartTime = null;\r\n var groupIndex = -1;\r\n _groupedScreenTextItems = [];\r\n\r\n _xmpModel.screenTextTrack.markers.forEach(function(item) {\r\n if (item.startTime !== itemStartTime) {\r\n groupIndex++;\r\n itemStartTime = item.startTime;\r\n _groupedScreenTextItems[groupIndex] = {\r\n startTime: item.startTime,\r\n file: item.file,\r\n image: item.image,\r\n imageRectangle: item.imageRectangle,\r\n items: []\r\n };\r\n }\r\n _groupedScreenTextItems[groupIndex].items.push(item);\r\n });\r\n\r\n _groupedScreenTextItems.forEach(function(groupedItem) {\r\n groupedItem.text = groupedItem.items\r\n .map(function(item) {\r\n return item.name;\r\n })\r\n .reduce(function(previousItemName, currentItemName) {\r\n return previousItemName + ' ' + currentItemName;\r\n });\r\n });\r\n };\r\n\r\n return Object.defineProperties({\r\n load: loadXmp,\r\n parse: parseXmp\r\n }, {\r\n ready: {\r\n get: function() {\r\n return _ready.promise;\r\n }\r\n },\r\n hasAdvancedFeatures: {\r\n get: function() {\r\n return _xmpModel.containsToc || _xmpModel.containsCaptions || _xmpModel.containsHotspots || _xmpModel.containsQuiz;\r\n }\r\n },\r\n hasTocItems: {\r\n get: function() {\r\n return _xmpModel.containsToc;\r\n }\r\n },\r\n hasCaptionItems: {\r\n get: function() {\r\n return _xmpModel.containsCaptions;\r\n }\r\n },\r\n hasHotspotItems: {\r\n get: function() {\r\n return _xmpModel.containsHotspots;\r\n }\r\n },\r\n hasQuiz: {\r\n get: function() {\r\n return _xmpModel.containsQuiz;\r\n }\r\n },\r\n hasScreenTextItems: {\r\n get: function() {\r\n return _xmpModel.containsScreenText;\r\n }\r\n },\r\n hasSpeechTextItems: {\r\n get: function() {\r\n return _xmpModel.containsSpeechText;\r\n }\r\n },\r\n hasSearchableItems: {\r\n get: function() {\r\n return _xmpModel.containsToc || _xmpModel.containsCaptions || _xmpModel.containsScreenText || _xmpModel.containsSpeechText;\r\n }\r\n },\r\n project: {\r\n get: function() {\r\n return _xmpModel.project;\r\n }\r\n },\r\n originId: {\r\n get: function() {\r\n return _xmpModel.originId;\r\n }\r\n },\r\n mediaDuration: {\r\n get: function() {\r\n return _xmpModel.duration.value;\r\n }\r\n },\r\n title: {\r\n get: function() {\r\n return _xmpModel.title;\r\n }\r\n },\r\n controllerParameters: {\r\n get: function() {\r\n return _xmpModel.controller && _xmpModel.controller.parameters ? _xmpModel.controller.parameters : [];\r\n }\r\n },\r\n tocImageSrc: {\r\n get: function() {\r\n return _xmpModel.containsToc ? _xmpModel.tableOfContentsTrack.image : null;\r\n }\r\n },\r\n tocCellLayoutType: {\r\n get: function() {\r\n return _xmpModel.containsToc ? _xmpModel.tableOfContentsTrack.cellLayout : null;\r\n }\r\n },\r\n tocItemArray: {\r\n get: function() {\r\n return _xmpModel.containsToc ? _xmpModel.tableOfContentsTrack.items : [];\r\n }\r\n },\r\n speechTextItemArray: {\r\n get: function() {\r\n return _xmpModel.containsSpeechText ? _xmpModel.speechTrack.markers : [];\r\n }\r\n },\r\n screenTextItemArray: {\r\n get: function() {\r\n if (_xmpModel.containsScreenText && _groupedScreenTextItems === null) {\r\n groupScreenTextByStartTime();\r\n }\r\n return _xmpModel.containsScreenText ? _groupedScreenTextItems : [];\r\n }\r\n },\r\n hotspotItemArray: {\r\n get: function() {\r\n return _xmpModel.containsHotspots ? _xmpModel.hotspotTrack.hotspots : [];\r\n }\r\n },\r\n quizGuid: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.quizGuid : null;\r\n }\r\n },\r\n quizAuthoredEmail: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.authoredEmail : null;\r\n }\r\n },\r\n quizRequireUserId: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.requireUserId : null;\r\n }\r\n },\r\n quizLocale: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.locale : null;\r\n }\r\n },\r\n quizReportMethod: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.reportMethod : null;\r\n }\r\n },\r\n quizClientId: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.clientId : null;\r\n }\r\n },\r\n quizHash: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.quizHash : null;\r\n }\r\n },\r\n quizHideReplay: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.hideReplay : null;\r\n }\r\n },\r\n quizAllowSkipQuiz: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.allowSkipQuiz : null;\r\n }\r\n },\r\n quizParameters: {\r\n get: function() {\r\n return _xmpModel.containsQuiz && _xmpModel.quizTrack.parameters ? _xmpModel.quizTrack.parameters : [];\r\n }\r\n },\r\n quizQuestionSetArray: {\r\n get: function() {\r\n return _xmpModel.containsQuiz ? _xmpModel.quizTrack.questionSets : [];\r\n }\r\n },\r\n captionCollection: {\r\n get: function() {\r\n return _xmpModel.containsCaptions ? _xmpModel.captionTrack.captionCollection : null;\r\n }\r\n },\r\n captionTrack: {\r\n get: function() {\r\n return _xmpModel.containsCaptions ? _xmpModel.captionTrack : tscme.CaptionTrack.create({captions: []});\r\n }\r\n },\r\n captionsHasMultipleLanguages: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.captionCollection.getAvailableLanguages().length > 1;\r\n }\r\n },\r\n captionItems: {\r\n get: function() {\r\n return _xmpModel.containsCaptions ? _xmpModel.captionTrack.captionCollection.captions : [];\r\n }\r\n },\r\n captionFontFamily: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.fontFamily !== undefined ? _xmpModel.captionTrack.fontFamily : _captionDefaults.captionFontFamily;\r\n }\r\n },\r\n captionFontSize: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.fontSize !== undefined ? _xmpModel.captionTrack.fontSize : _captionDefaults.captionFontSize;\r\n }\r\n },\r\n minCaptionFontSize: {\r\n get: function() {\r\n return _captionDefaults.captionFontSizeMin;\r\n }\r\n },\r\n maxCaptionFontSize: {\r\n get: function() {\r\n return _captionDefaults.captionFontSizeMax;\r\n }\r\n },\r\n captionBgOpacity: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.bgOpacity !== undefined ? _xmpModel.captionTrack.bgOpacity : _captionDefaults.captionBgColor.getAlpha();\r\n }\r\n },\r\n captionTextColor: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.fgHexColor !== undefined ? _xmpModel.captionTrack.fgHexColor : _captionDefaults.captionTextColor.toHexString();\r\n }\r\n },\r\n captionBgColor: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.bgColor !== undefined ? _xmpModel.captionTrack.bgColor : _captionDefaults.captionBgColor.toHexString();\r\n }\r\n },\r\n captionBg: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.bgRGBACssColor ? _xmpModel.captionTrack.bgRGBACssColor : _captionDefaults.captionBgColor.toRgbString();\r\n }\r\n },\r\n captionPosition: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.position !== undefined ? _xmpModel.captionTrack.position : _captionDefaults.captionPosition;\r\n }\r\n },\r\n captionBarHeight: {\r\n get: function() {\r\n return _xmpModel.containsCaptions && _xmpModel.captionTrack.barHeight !== undefined ? _xmpModel.captionTrack.barHeight : _captionDefaults.captionBarHeight;\r\n }\r\n },\r\n tocContainsThumbs: {\r\n get: function() {\r\n return _xmpModel.containsTocThumbnails;\r\n }\r\n },\r\n tocThumbImageSrc: {\r\n get: function() {\r\n if (playerConfiguration.getTOCSpriteSrc()) {\r\n return playerConfiguration.getTOCSpriteSrc();\r\n } else if (!urlService.isUrlAbsolute(_xmpModel.tocThumbnailImageSrc)) {\r\n return playerConfiguration.getContentBase() + playerConfiguration.getUnicodeSafeString(_xmpModel.tocThumbnailImageSrc);\r\n }\r\n return playerConfiguration.getUnicodeSafeString(_xmpModel.tocThumbnailImageSrc);\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new Xmp object.\r\n * @function create\r\n * @memberof TSC.Xmp\r\n * @static\r\n * @return new Xmp instance\r\n */\r\n create: Xmp\r\n };\r\n});\r\n","(function(window, $, deviceInfo, log, Xmp) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.fathomService = (function() {\r\n var _getFathomEndPoint;\r\n var _environments;\r\n var _environmentId;\r\n var _fathomId;\r\n var _getCompleteCallback;\r\n var _errorHandlerCallback;\r\n var _mockCalls = false;\r\n\r\n _getFathomEndPoint = '/Assessment/Xmp/';\r\n _environments = [];\r\n _environments.push({label: 'Local', url: 'https://results.localhost:444'});\r\n _environments.push({label: 'Dev', url: 'https://results.cloud.tsc-dev.co'});\r\n _environments.push({label: 'Stage', url: 'https://results.tsc-stage.co'});\r\n _environments.push({label: 'Live', url: 'https://results.techsmith.com'});\r\n _environments.push({label: 'TE', url: 'https://fathomtest2.cloud.tsc-dev.co'});\r\n _environmentId = 3;\r\n\r\n var onFathomLoad = function(xmlModel) {\r\n if (_getCompleteCallback) {\r\n _getCompleteCallback.call(this, xmlModel);\r\n }\r\n };\r\n\r\n var errorHandler = function() {\r\n if (_errorHandlerCallback) {\r\n _errorHandlerCallback.call();\r\n }\r\n };\r\n\r\n var getFathom = function() {\r\n if (_mockCalls) {\r\n setTimeout(onFathomLoad, 1000);\r\n } else {\r\n var url = _environments[_environmentId].url + _getFathomEndPoint + _fathomId + '?noop=1';\r\n\r\n var xmlModel = Xmp.create();\r\n xmlModel.load(url, true);\r\n xmlModel.ready.then(function() {\r\n onFathomLoad(xmlModel);\r\n }).catch(function(error) {\r\n log.logMessage('fathom-service: getFathom() failed. ' + error);\r\n errorHandler();\r\n });\r\n }\r\n };\r\n\r\n return {\r\n setEnvironment: function(environmentId) {\r\n if (isNaN(environmentId) || environmentId < 0 || environmentId > _environments.length - 1) {\r\n return;\r\n }\r\n _environmentId = environmentId;\r\n },\r\n getEnvironment: function() {\r\n return _environmentId;\r\n },\r\n getFathom: function(fathomId) {\r\n _fathomId = fathomId;\r\n getFathom();\r\n },\r\n addEventListener: function(type, listener) {\r\n if (type === 'GET_COMPLETE') {\r\n _getCompleteCallback = listener;\r\n } else if (type === 'ERROR') {\r\n _errorHandlerCallback = listener;\r\n }\r\n },\r\n removeEventListener: function(type) {\r\n if (type === 'GET_COMPLETE') {\r\n _getCompleteCallback = undefined;\r\n } else if (type === 'ERROR') {\r\n _errorHandlerCallback = undefined;\r\n }\r\n }\r\n };\r\n }());\r\n}(this, window.jQuery, window.TSC.deviceInfo, window.TSC.log, window.TSC.Xmp));\r\n","(function(window, hotkeyServiceFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.hotkeyService = hotkeyServiceFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n var _hotkeysEnabled = true;\r\n\r\n var areHotkeysEnabled = function() {\r\n return _hotkeysEnabled;\r\n };\r\n\r\n var disableHotkeys = function() {\r\n _hotkeysEnabled = false;\r\n };\r\n\r\n var enableHotkeys = function() {\r\n _hotkeysEnabled = true;\r\n };\r\n\r\n return {\r\n areHotkeysEnabled: areHotkeysEnabled,\r\n disableHotkeys: disableHotkeys,\r\n enableHotkeys: enableHotkeys\r\n };\r\n});\r\n","(function(window, quizService) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.progressTracker = (function() {\r\n var _didAttachToEndedEvent = false;\r\n var _didAttachToPlayEvent = false;\r\n var _sampleRateInMilliseconds = 15000;\r\n var _intervalId;\r\n var _playCallbackFunction;\r\n var _mergeToleranceInMilliseconds = 500;\r\n var _videoEndToleranceInMilliseconds = 1000;\r\n\r\n var processPlayedSegments = function(played) {\r\n var numberPlayedSegments = played.length;\r\n if (numberPlayedSegments < 1) {\r\n return [];\r\n }\r\n var mergedPlayedInMilliseconds = [{start: played.start(0) * 1000, end: played.end(0) * 1000}];\r\n var mergedPlayedIndex = 0;\r\n var i;\r\n\r\n for (i = 1; i < numberPlayedSegments; i++) {\r\n if (mergedPlayedInMilliseconds[mergedPlayedIndex].end >= played.start(i) * 1000 - _mergeToleranceInMilliseconds) {\r\n mergedPlayedInMilliseconds[mergedPlayedIndex].end = played.end(i) * 1000;\r\n } else {\r\n mergedPlayedInMilliseconds.push({start: played.start(i) * 1000, end: played.end(i) * 1000});\r\n mergedPlayedIndex++;\r\n }\r\n }\r\n\r\n return mergedPlayedInMilliseconds;\r\n };\r\n\r\n var computePercentageViewed = function(video) {\r\n var completedSamples = [];\r\n var i;\r\n var j;\r\n var videoStartMilliseconds;\r\n var videoEndMilliseconds;\r\n var isEndOfVideo;\r\n var firstSample;\r\n var lastSample;\r\n var entireVideoWasWatched;\r\n var mergedPlayedInMilliseconds;\r\n var videoDurationInMilliseconds = video.duration * 1000;\r\n\r\n mergedPlayedInMilliseconds = processPlayedSegments(video.played);\r\n\r\n for (i = 0; i < mergedPlayedInMilliseconds.length; i++) {\r\n videoStartMilliseconds = mergedPlayedInMilliseconds[i].start;\r\n videoEndMilliseconds = mergedPlayedInMilliseconds[i].end;\r\n\r\n isEndOfVideo = videoDurationInMilliseconds - video.currentTime * 1000 < _videoEndToleranceInMilliseconds;\r\n\r\n if (!isEndOfVideo && videoEndMilliseconds - videoStartMilliseconds < _sampleRateInMilliseconds) {\r\n continue;\r\n }\r\n firstSample = Math.floor(videoStartMilliseconds / _sampleRateInMilliseconds);\r\n if (videoStartMilliseconds % _sampleRateInMilliseconds !== 0) {\r\n firstSample += 1;\r\n }\r\n\r\n lastSample = Math.floor(videoEndMilliseconds / _sampleRateInMilliseconds);\r\n if (!isEndOfVideo) {\r\n lastSample -= 1;\r\n }\r\n\r\n if (lastSample < firstSample) {\r\n continue;\r\n }\r\n\r\n for (j = firstSample; j <= lastSample; j++) {\r\n completedSamples.push(j);\r\n }\r\n }\r\n\r\n quizService.sendProgress(_sampleRateInMilliseconds, completedSamples);\r\n\r\n entireVideoWasWatched = completedSamples.length === Math.ceil(videoDurationInMilliseconds / _sampleRateInMilliseconds);\r\n if (entireVideoWasWatched) {\r\n stopInterval();\r\n video.removeEventListener('play', _playCallbackFunction, false);\r\n }\r\n };\r\n\r\n var attachToEndedEvent = function(video) {\r\n var endedCallbackFunction = function() {\r\n sendProgress(video);\r\n stopInterval();\r\n };\r\n video.addEventListener('ended', endedCallbackFunction, false);\r\n _didAttachToEndedEvent = true;\r\n };\r\n\r\n var attachToPlayEvent = function(video) {\r\n _playCallbackFunction = function() {\r\n if (_intervalId !== -1) {\r\n return;\r\n }\r\n\r\n setupProgressInterval(video);\r\n };\r\n video.addEventListener('play', _playCallbackFunction, false);\r\n _didAttachToPlayEvent = true;\r\n };\r\n\r\n var sendProgress = function(video) {\r\n if (!video) {\r\n return;\r\n }\r\n\r\n if (!_didAttachToEndedEvent) {\r\n attachToEndedEvent(video);\r\n }\r\n\r\n if (!_didAttachToPlayEvent) {\r\n attachToPlayEvent(video);\r\n }\r\n\r\n computePercentageViewed(video);\r\n };\r\n\r\n var stopInterval = function() {\r\n if (_intervalId !== -1) {\r\n window.clearInterval(_intervalId);\r\n _intervalId = -1;\r\n }\r\n };\r\n\r\n var setupProgressInterval = function(video) {\r\n var intervalFunction = function() {\r\n sendProgress(video);\r\n if (video.paused) {\r\n window.clearInterval(_intervalId);\r\n _intervalId = -1;\r\n }\r\n };\r\n _intervalId = window.setInterval(intervalFunction, _sampleRateInMilliseconds);\r\n };\r\n\r\n var start = function(video, sampleRateInMilliseconds) {\r\n _didAttachToEndedEvent = false;\r\n _didAttachToPlayEvent = false;\r\n _sampleRateInMilliseconds = sampleRateInMilliseconds;\r\n stopInterval();\r\n setupProgressInterval(video);\r\n };\r\n\r\n return {\r\n start: start\r\n };\r\n }());\r\n}(window, window.TSC.quizService));\r\n","(function(window, tscProjThemeFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.TscProjTheme = tscProjThemeFactory(window, window.$, window.Q, namespace.playerConfiguration);\r\n})(this, function(window, $, Q, playerConfiguration) {\r\n 'use strict';\r\n\r\n var TscProjTheme = function(themeUri) {\r\n var _readyPromise = null;\r\n var _themeJson = {};\r\n\r\n var webConnector = playerConfiguration.getWebConnector();\r\n if (webConnector) {\r\n _readyPromise = webConnector.getModule('theme').then(function(module) {\r\n return module.getThemeByUri(themeUri).then(function(theme) {\r\n _themeJson = theme.data;\r\n return _themeJson;\r\n });\r\n });\r\n } else {\r\n _readyPromise = Q.reject('TscProjTheme: webconnector player configuration required to load TSC proj theme');\r\n }\r\n\r\n return Object.defineProperties({}, {\r\n ready: {\r\n get: function() {\r\n return _readyPromise;\r\n }\r\n },\r\n theme: {\r\n get: function() {\r\n return _themeJson;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: TscProjTheme\r\n };\r\n});\r\n","(function(window, mediaLibModelFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.MediaLibModel = mediaLibModelFactory(window, window.$, window.Q, window.tscml, namespace.TscProjTheme, namespace.playerConfiguration);\r\n})(this, function(window, $, Q, tscml, TscProjTheme, playerConfiguration) {\r\n 'use strict';\r\n\r\n var MediaLibModel = function(tscProjectUriOrObject) {\r\n var _mediaLibProj = null;\r\n var _readyDefer = Q.defer();\r\n var _themeJson;\r\n\r\n var createMediaLibModel = function(mediaLibJson) {\r\n _mediaLibProj = tscml.Project.createFromJSON(mediaLibJson);\r\n\r\n TscProjTheme.create(_mediaLibProj.themeFile.uri).ready.then(function(themeJson) {\r\n _themeJson = themeJson;\r\n _readyDefer.resolve(_mediaLibProj);\r\n }).catch(function(error) {\r\n _readyDefer.reject(error);\r\n });\r\n };\r\n\r\n var webConnector = playerConfiguration.getWebConnector();\r\n if (webConnector && typeof tscProjectUriOrObject !== 'object') {\r\n webConnector.getModule('storage').then(function(storage) {\r\n storage.loadProject(tscProjectUriOrObject).then(function(response) {\r\n var tscprojJson;\r\n if (typeof response.projectFileData === 'string') {\r\n try {\r\n tscprojJson = JSON.parse(response.projectFileData);\r\n } catch (error) {\r\n _readyDefer.reject('Media lib - failed to parse project JSON');\r\n }\r\n } else {\r\n _readyDefer.reject('Media lib - invalid response loading project');\r\n }\r\n createMediaLibModel(tscprojJson);\r\n });\r\n });\r\n } else if (typeof tscProjectUriOrObject === 'object') {\r\n createMediaLibModel(tscProjectUriOrObject.tscproj);\r\n } else {\r\n $.getJSON(tscProjectUriOrObject, createMediaLibModel);\r\n }\r\n\r\n return Object.defineProperties({}, {\r\n ready: {\r\n get: function() {\r\n return _readyDefer.promise;\r\n }\r\n },\r\n model: {\r\n get: function() {\r\n return _mediaLibProj;\r\n }\r\n },\r\n theme: {\r\n get: function() {\r\n return _themeJson;\r\n }\r\n },\r\n uri: {\r\n get: function() {\r\n return tscProjectUriOrObject;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: MediaLibModel\r\n };\r\n});\r\n","(function(window, viewHelperDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.viewHelper = viewHelperDefinition(\r\n window,\r\n window.document,\r\n window.$,\r\n namespace.highlightDisabler);\r\n})(this, function(window, document, $, highlightDisabler) {\r\n 'use strict';\r\n\r\n var _previousActiveElement;\r\n var _previousActiveElementWasHighlighted;\r\n var _$window = $(window);\r\n\r\n var scrollActiveElementIntoView = function() {\r\n try {\r\n var activeElement = document.activeElement;\r\n if (activeElement) {\r\n scrollIntoView(activeElement);\r\n }\r\n } catch (e) {\r\n /* eslint no-empty:'off' */\r\n }\r\n };\r\n\r\n var scrollIntoView = function(e) {\r\n setTimeout(function() {\r\n var element = e.currentTarget ? e.currentTarget : e;\r\n var container = $(element).scrollParent();\r\n\r\n if (!element || !container || !element.scrollIntoViewIfNeeded) {\r\n return;\r\n }\r\n\r\n // Android uses container innerHeight while ios uses window innerHeight\r\n var elementFitsInsideContainer = element.offsetHeight <= container.innerHeight() && element.offsetHeight < window.innerHeight;\r\n element.scrollIntoViewIfNeeded(elementFitsInsideContainer);\r\n }, 200);\r\n };\r\n\r\n var saveActiveElement = function() {\r\n try {\r\n _previousActiveElement = document.activeElement;\r\n _previousActiveElementWasHighlighted = highlightDisabler.checkIfElementIsHighlighted($(document.activeElement));\r\n } catch (e) {\r\n /* eslint no-empty:'off' */\r\n }\r\n };\r\n\r\n var disableHighlightsOnPreviousActiveElement = function() {\r\n if (_previousActiveElement) {\r\n var $previousActiveElement = $(_previousActiveElement);\r\n if (!_previousActiveElementWasHighlighted) {\r\n highlightDisabler.disableHighlights($previousActiveElement);\r\n }\r\n }\r\n };\r\n\r\n var focusPreviousElement = function() {\r\n if (_previousActiveElement) {\r\n var $previousActiveElement = $(_previousActiveElement);\r\n $previousActiveElement.focus();\r\n disableHighlightsOnPreviousActiveElement();\r\n }\r\n };\r\n\r\n var elementOrChildHasFocus = function($element) {\r\n try {\r\n return $element.is(':focus') || $element.has(document.activeElement).length > 0;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n var init = function() {\r\n _$window.blur(saveActiveElement).focus(disableHighlightsOnPreviousActiveElement);\r\n };\r\n\r\n init();\r\n\r\n return {\r\n scrollActiveElementIntoView: scrollActiveElementIntoView,\r\n scrollIntoView: scrollIntoView,\r\n saveActiveElement: saveActiveElement,\r\n focusPreviousElement: focusPreviousElement,\r\n elementOrChildHasFocus: elementOrChildHasFocus\r\n };\r\n});\r\n","(function(window, messageBarViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC || {};\r\n namespace.MessageBarView = messageBarViewFactory(namespace.templates, namespace.messageBarType);\r\n})(this, function(templates, messageBarLevels) {\r\n 'use strict';\r\n\r\n var animationTimeMilliseconds = 300;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class MessageBarView\r\n * @classdesc View to display player messages\r\n * @param {jQuery} $container - jQuery element to append message bar view to.\r\n * @param {String} type - Type of message bar to display\r\n * @param {String} messageText - Text to display in message bar.\r\n * @param {String} [primaryActionButtonText] - Text to display in action button\r\n * @param {Function} [customActionButtonHandler] - Optional function to call when action button is clicked.\r\n */\r\n var MessageBarView = function($container, type, messageText, primaryActionButtonText, customActionButtonHandler) {\r\n var _$messageBarContainer;\r\n var _$actionButton;\r\n\r\n var onActionClick = function() {\r\n remove();\r\n if (customActionButtonHandler) {\r\n customActionButtonHandler();\r\n }\r\n };\r\n\r\n var showView = function() {\r\n _$messageBarContainer.stop()\r\n .css('opacity', 0)\r\n .show()\r\n .animate({opacity: 1}, animationTimeMilliseconds);\r\n };\r\n\r\n var remove = function() {\r\n if (_$actionButton.length > 0) {\r\n _$actionButton.off('click');\r\n }\r\n _$messageBarContainer.remove();\r\n };\r\n\r\n var init = function() {\r\n var markup = templates.message_bar_view_template({\r\n messageText: messageText,\r\n primaryActionButtonText: primaryActionButtonText\r\n });\r\n\r\n $container.append(markup);\r\n\r\n _$messageBarContainer = $container.find('.message-bar-view-container');\r\n _$actionButton = _$messageBarContainer.find('.message-bar-action-button');\r\n\r\n if (type === messageBarLevels.warning) {\r\n _$messageBarContainer.addClass('warning');\r\n }\r\n };\r\n\r\n var bindEvents = function() {\r\n if (_$actionButton.length > 0) {\r\n _$actionButton.on('click', onActionClick);\r\n }\r\n };\r\n\r\n init();\r\n bindEvents();\r\n showView();\r\n\r\n return {\r\n remove: remove\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new MessageBarView object.\r\n * @function create\r\n * @memberof TSC.MessageBarView\r\n * @static\r\n * @param {jQuery} $container - jQuery element to append message bar view to.\r\n * @param {String} type - Type of message bar to display\r\n * @param {String} messageText - Text to display in message bar.\r\n * @param {String} [primaryActionButtonText] - Text to display in action button\r\n * @param {Function} [customActionButtonHandler] - Optional function to call when action button is clicked.\r\n * @return new MessageBarView instance\r\n */\r\n create: MessageBarView\r\n };\r\n});\r\n\r\n","(function(window, renderLibViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.RenderLibView = renderLibViewFactory(window, window.Q, window.tscrl, namespace.playerConfiguration);\r\n})(this, function(window, Q, tscrl, playerConfiguration) {\r\n 'use strict';\r\n\r\n var _hasRegisteredFileResolvers = false;\r\n\r\n var RenderLibView = function(mediaLibProject, theme) {\r\n var _rootElement = null;\r\n var _readyDefer = Q.defer();\r\n var _metadataDefer = Q.defer();\r\n var _canPlayDefer = Q.defer();\r\n var _rootBoundingClientRect;\r\n var supportedMimeTypes = ['video/mp4', 'image/png', 'image/jpg', 'image/jpeg', 'image/gif'];\r\n var renderLibProjectView = null;\r\n\r\n var createView = function() {\r\n renderLibProjectView = tscrl.ProjectView.create(supportedMimeTypes);\r\n renderLibProjectView.on('ready', onReady);\r\n renderLibProjectView.on('error', onError);\r\n renderLibProjectView.on('loadedmetadata', loadedMetadataCallback);\r\n renderLibProjectView.on('canplay', canplayCallback);\r\n renderLibProjectView.theme = theme;\r\n renderLibProjectView.seamlessScenePlayback = true;\r\n renderLibProjectView.src = mediaLibProject;\r\n renderLibProjectView.addEventListener = addEventListener;\r\n renderLibProjectView.removeEventListener = removeEventListener;\r\n\r\n renderLibProjectView.videoWidth = window.innerWidth;\r\n renderLibProjectView.videoHeight = window.innerHeight;\r\n\r\n _rootElement = renderLibProjectView.element;\r\n };\r\n\r\n var onReady = function() {\r\n renderLibProjectView.canvasNeedsResizing();\r\n watchForSizeChanges(_rootElement, 100);\r\n _readyDefer.resolve();\r\n };\r\n\r\n var onError = function() {\r\n _readyDefer.reject();\r\n };\r\n\r\n var loadedMetadataCallback = function() {\r\n _metadataDefer.resolve();\r\n };\r\n\r\n var canplayCallback = function() {\r\n _canPlayDefer.resolve();\r\n };\r\n\r\n var addEventListener = function(eventName, eventHandler) {\r\n renderLibProjectView.on(eventName, eventHandler);\r\n };\r\n\r\n var removeEventListener = function(eventName, eventHandler) {\r\n renderLibProjectView.off(eventName, eventHandler);\r\n };\r\n\r\n var watchForSizeChanges = function(watchedElement, millisecondInterval) {\r\n _rootBoundingClientRect = watchedElement.getBoundingClientRect();\r\n\r\n var callback = function() {\r\n var currentBoundingClientRect = watchedElement.getBoundingClientRect();\r\n if (currentBoundingClientRect.width !== _rootBoundingClientRect.width || currentBoundingClientRect.height !== _rootBoundingClientRect.height) {\r\n _rootBoundingClientRect = currentBoundingClientRect;\r\n renderLibProjectView.canvasNeedsResizing();\r\n }\r\n };\r\n\r\n setInterval(callback, millisecondInterval);\r\n };\r\n\r\n var width = function() {\r\n return window.innerWidth;\r\n };\r\n\r\n var height = function() {\r\n return window.innerHeight;\r\n };\r\n\r\n var bind = function() {\r\n if (arguments.length === 1) {\r\n if (typeof arguments[0] === 'object') {\r\n var obj = arguments[0];\r\n Object.keys(obj).forEach(function(key) {\r\n addEventListener(key, obj[key]);\r\n });\r\n }\r\n } else if (arguments.length === 2) {\r\n if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {\r\n addEventListener(arguments[0], arguments[1]);\r\n }\r\n }\r\n };\r\n\r\n var unbind = function() {\r\n if (arguments.length === 1) {\r\n var obj = arguments[0];\r\n if (typeof arguments[0] === 'object') {\r\n Object.keys(obj).forEach(function(key) {\r\n removeEventListener(key, obj[key]);\r\n });\r\n }\r\n } else if (arguments.length === 2) {\r\n if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {\r\n removeEventListener(arguments[0], arguments[1]);\r\n }\r\n }\r\n };\r\n\r\n var initialize = function() {\r\n var webConnector = playerConfiguration.getWebConnector();\r\n if (webConnector) {\r\n if (!_hasRegisteredFileResolvers) {\r\n var tscrlResolver = {\r\n id: 'webConnectorFileResolver',\r\n canResolve: function(sourceUrn) {\r\n return webConnector.hasModuleByUrn(sourceUrn, 'resolver').then(function() {\r\n return true;\r\n }).catch(function() {\r\n return Q(false);\r\n });\r\n },\r\n getUri: function(sourceUrn) {\r\n return webConnector.hasModuleByUrn(sourceUrn, 'resolver').then(function(resolver) {\r\n return resolver.getFileUrl(sourceUrn);\r\n }).catch(function() {\r\n return Q.defer().reject('webConnectorFileResolver: could not find file resolver for sourceUrn(' + sourceUrn + ')');\r\n });\r\n }\r\n };\r\n\r\n tscrl.UriBuilder.registerFileResolver(tscrlResolver);\r\n\r\n _hasRegisteredFileResolvers = true;\r\n createView();\r\n } else {\r\n createView();\r\n }\r\n } else {\r\n throw Error('RenderLibView: webconnector player configuration is not loaded and is required to playback tscproj files');\r\n }\r\n };\r\n\r\n initialize();\r\n\r\n return Object.defineProperties({\r\n width: width,\r\n height: height,\r\n bind: bind,\r\n unbind: unbind\r\n }, {\r\n element: {\r\n get: function() {\r\n return _rootElement;\r\n }\r\n },\r\n ready: {\r\n get: function() {\r\n return _readyDefer.promise;\r\n }\r\n },\r\n metadataReady: {\r\n get: function() {\r\n return _metadataDefer.promise;\r\n }\r\n },\r\n canPlayReady: {\r\n get: function() {\r\n return _canPlayDefer.promise;\r\n }\r\n },\r\n view: {\r\n get: function() {\r\n return renderLibProjectView;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: RenderLibView\r\n };\r\n});\r\n","(function(window, bubbleViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.BubbleView = bubbleViewFactory(window.$, namespace.cssClasses);\r\n})(this, function($, cssClasses) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class BubbleView\r\n * @classdesc Bubble View\r\n * @param {String} containerId - id for container element\r\n */\r\n var BubbleView = function(containerId) {\r\n var _windowPadding = 2;\r\n var _viewBottom = 48;\r\n var _minArrowDistanceFromEdge = 9;\r\n var _ignoreBreakpoints = false;\r\n var _containerId = containerId;\r\n var _overlayId = '.tsc_overlay';\r\n var _arrowBubbleClass = '.chat-bubble-arrow';\r\n var _overlayMarkup = '
      ';\r\n var _topContainer = null;\r\n var _$container = null;\r\n var _$overlay = null;\r\n var _$arrowBubble = null;\r\n\r\n var clickCapture = function(event) {\r\n event.stopPropagation();\r\n };\r\n\r\n var isDesktopBreakpoint = function() {\r\n _topContainer = _topContainer || $(_containerId).parents('.' + cssClasses.smartPlayerNamespace);\r\n return _topContainer.hasClass('small-desktop-width') && _topContainer.hasClass('small-desktop-height');\r\n };\r\n\r\n var cacheElements = function() {\r\n _$container = _$container || $(_containerId);\r\n _$overlay = _$overlay || $(_overlayId);\r\n _$arrowBubble = _$arrowBubble || $(_arrowBubbleClass);\r\n };\r\n\r\n var showView = function(ignoreBreakpoints) {\r\n _ignoreBreakpoints = ignoreBreakpoints === undefined ? false : ignoreBreakpoints;\r\n cacheElements();\r\n _$container.css('opacity', 1);\r\n _$overlay.css('opacity', 0.7);\r\n _$container.on('click', clickCapture);\r\n };\r\n\r\n var hideView = function() {\r\n _$container.css('opacity', 0);\r\n _$overlay.css('opacity', 0);\r\n _$container.off('click', clickCapture);\r\n };\r\n\r\n var updateViewPosition = function() {\r\n cacheElements();\r\n if (_ignoreBreakpoints || isDesktopBreakpoint()) {\r\n _$container.css('bottom', _viewBottom + 'px');\r\n } else {\r\n _$container.css('bottom', '0px');\r\n }\r\n };\r\n\r\n var removeView = function(destroyOverlay) {\r\n if (destroyOverlay) {\r\n _$overlay.remove();\r\n }\r\n\r\n _$container.remove();\r\n _$container = null;\r\n _$overlay = null;\r\n _$arrowBubble = null;\r\n };\r\n\r\n var getOverlayMarkup = function() {\r\n return _overlayMarkup;\r\n };\r\n\r\n var setBottomOffset = function(bottom) {\r\n _viewBottom = bottom;\r\n };\r\n\r\n var pointAt = function(xPos) {\r\n if (_$container === null) {\r\n return;\r\n }\r\n\r\n var playerWidth = _topContainer ? _topContainer.outerWidth(true) : window.innerWidth;\r\n var viewWidth = _$container.outerWidth(true);\r\n var halfViewWidth = viewWidth / 2;\r\n var borderWidth = _$arrowBubble.css('border-left-width').replace(/px/, '');\r\n var arrowWidth = borderWidth * 2;\r\n var quizXPos;\r\n var arrowPos;\r\n\r\n // left bounds\r\n if (!_ignoreBreakpoints && !isDesktopBreakpoint()) {\r\n quizXPos = 0;\r\n arrowPos = 0;\r\n } else if (xPos - (halfViewWidth + _windowPadding) < 0) {\r\n quizXPos = _windowPadding;\r\n arrowPos = xPos - _windowPadding - borderWidth;\r\n // right bounds\r\n } else if (xPos + halfViewWidth + _windowPadding > playerWidth) {\r\n quizXPos = playerWidth - (viewWidth + _windowPadding);\r\n arrowPos = xPos - quizXPos - borderWidth;\r\n // center on point\r\n } else {\r\n quizXPos = xPos - halfViewWidth;\r\n arrowPos = halfViewWidth - borderWidth;\r\n }\r\n\r\n _$container.css('left', quizXPos);\r\n _$arrowBubble.css('left', arrowPos);\r\n\r\n if (arrowPos < _minArrowDistanceFromEdge || viewWidth - arrowPos - arrowWidth < _minArrowDistanceFromEdge) {\r\n _$arrowBubble.hide();\r\n } else {\r\n _$arrowBubble.show();\r\n }\r\n };\r\n\r\n return {\r\n showView: showView,\r\n hideView: hideView,\r\n updateViewPosition: updateViewPosition,\r\n removeView: removeView,\r\n getOverlayMarkup: getOverlayMarkup,\r\n setBottomOffset: setBottomOffset,\r\n pointAt: pointAt\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new BubbleView object.\r\n * @function create\r\n * @memberof TSC.BubbleView\r\n * @param {String} containerId - id for container element\r\n * @static\r\n * @return new BubbleView instance\r\n */\r\n create: BubbleView\r\n };\r\n});\r\n","(function(window, quizSetupViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.QuizSetupView = quizSetupViewFactory(window,\r\n window.jQuery,\r\n namespace.templates,\r\n namespace.deviceInfo,\r\n namespace.viewHelper,\r\n namespace.textSanitizer,\r\n namespace.localizationStrings,\r\n namespace.languageCodes,\r\n namespace.events);\r\n})(this, function(window, $, templates, deviceInfo, viewHelper, textSanitizer, localizationStrings, languageCodes, events) {\r\n 'use strict';\r\n\r\n var _viewTemplate;\r\n var _$window = $(window);\r\n var FIRST_NAME_CLASS = 'first_name';\r\n var LAST_NAME_CLASS = 'last_name';\r\n\r\n if (templates && templates.quiz_setup_template) {\r\n _viewTemplate = templates.quiz_setup_template;\r\n } else {\r\n throw Error('quizSetupView: Quiz Setup Template not found.');\r\n }\r\n\r\n /**\r\n * @memberof TSC\r\n * @class QuizSetupView\r\n * @classdesc Quiz Setup View\r\n * @param {Object} $container - jQuery element where quiz setup view will be injected.\r\n * @param {Element} spContainer - Smart player container element.\r\n */\r\n var QuizSetupView = function($container, spContainer) {\r\n var _eventContainer = spContainer;\r\n var _$quizSetupView = null;\r\n var _$firstNameInput = null;\r\n var _$lastNameInput = null;\r\n var _$emailInput = null;\r\n var _$beginButton = null;\r\n var _$skipButton = null;\r\n\r\n var reverseNames = localizationStrings.getLanguage() === languageCodes.JAPANESE;\r\n\r\n var setupMessage = localizationStrings.strings.txtRequiredMessage;\r\n var enterEmail = localizationStrings.strings.txtEnterEmail;\r\n var enterName1;\r\n var enterName2;\r\n var beginButtonText = localizationStrings.strings.txtBegin;\r\n var skipControlText = localizationStrings.strings.txtSkip;\r\n var name1Class;\r\n var name2Class;\r\n\r\n if (reverseNames) {\r\n enterName1 = localizationStrings.strings.txtEnterLastName;\r\n enterName2 = localizationStrings.strings.txtEnterFirstName;\r\n name1Class = LAST_NAME_CLASS;\r\n name2Class = FIRST_NAME_CLASS;\r\n } else {\r\n enterName1 = localizationStrings.strings.txtEnterFirstName;\r\n enterName2 = localizationStrings.strings.txtEnterLastName;\r\n name1Class = FIRST_NAME_CLASS;\r\n name2Class = LAST_NAME_CLASS;\r\n }\r\n\r\n var createView = function() {\r\n var context = {\r\n setupMessage: setupMessage,\r\n enterName1: enterName1,\r\n enterName2: enterName2,\r\n name1Class: name1Class,\r\n name2Class: name2Class,\r\n enterEmail: enterEmail,\r\n beginButtonText: beginButtonText,\r\n skipControlText: skipControlText\r\n };\r\n\r\n var quizSetupMarkup = _viewTemplate(context);\r\n _$quizSetupView = $($.parseHTML(quizSetupMarkup));\r\n\r\n _$firstNameInput = _$quizSetupView.find('.' + FIRST_NAME_CLASS);\r\n _$lastNameInput = _$quizSetupView.find('.' + LAST_NAME_CLASS);\r\n _$emailInput = _$quizSetupView.find('.email_address');\r\n _$beginButton = _$quizSetupView.find('.tsc_begin_button');\r\n _$skipButton = _$quizSetupView.find('.skip_control');\r\n };\r\n\r\n var validateInput = function() {\r\n var firstName = _$firstNameInput.val().replace(/ /g, '');\r\n var lastName = _$lastNameInput.val().replace(/ /g, '');\r\n var email = _$emailInput.val().replace(/ /g, '');\r\n\r\n if (firstName !== '' && lastName !== '' && email !== '' && textSanitizer.isValidEmail(email)) {\r\n _$beginButton.removeAttr('disabled');\r\n } else {\r\n _$beginButton.attr('disabled', 'disabled');\r\n }\r\n };\r\n\r\n var destroy = function() {\r\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\r\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\r\n _$firstNameInput.off('focus keydown', viewHelper.scrollIntoView);\r\n _$lastNameInput.off('focus keydown', viewHelper.scrollIntoView);\r\n _$emailInput.off('focus keydown', viewHelper.scrollIntoView);\r\n }\r\n\r\n _$firstNameInput.off('keyup', validateInput);\r\n _$firstNameInput.off('change', validateInput);\r\n _$lastNameInput.off('keyup', validateInput);\r\n _$lastNameInput.off('change', validateInput);\r\n _$emailInput.off('keyup', validateInput);\r\n _$emailInput.off('change', validateInput);\r\n\r\n _$beginButton.off('click', beginQuiz);\r\n _$skipButton.off('click', skipQuiz);\r\n };\r\n\r\n var hideSkipButton = function() {\r\n _$skipButton.hide();\r\n };\r\n\r\n var beginQuiz = function(event) {\r\n event.preventDefault();\r\n\r\n var eventData = {\r\n firstName: _$firstNameInput.val().replace(/ /g, ''),\r\n lastName: _$lastNameInput.val().replace(/ /g, ''),\r\n email: _$emailInput.val().replace(/ /g, '')\r\n };\r\n\r\n _eventContainer.trigger(events.Quizzing.BeginClicked, eventData);\r\n };\r\n\r\n var skipQuiz = function(event) {\r\n event.preventDefault();\r\n _eventContainer.trigger(events.Quizzing.SkipClicked, {});\r\n };\r\n\r\n var bindEvents = function() {\r\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\r\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\r\n _$firstNameInput.on('focus keydown', viewHelper.scrollIntoView);\r\n _$lastNameInput.on('focus keydown', viewHelper.scrollIntoView);\r\n _$emailInput.on('focus keydown', viewHelper.scrollIntoView);\r\n }\r\n\r\n _$firstNameInput.on('keyup', validateInput);\r\n _$firstNameInput.on('change', validateInput);\r\n _$lastNameInput.on('keyup', validateInput);\r\n _$lastNameInput.on('change', validateInput);\r\n _$emailInput.on('keyup', validateInput);\r\n _$emailInput.on('change', validateInput);\r\n\r\n _$beginButton.on('click', beginQuiz);\r\n _$skipButton.on('click', skipQuiz);\r\n\r\n $container.append(_$quizSetupView);\r\n\r\n if (viewHelper.elementOrChildHasFocus($container)) {\r\n _$firstNameInput.focus();\r\n }\r\n };\r\n\r\n createView();\r\n bindEvents();\r\n\r\n return Object.defineProperties({\r\n hideSkipButton: hideSkipButton,\r\n destroy: destroy\r\n }, {\r\n $view: {\r\n get: function() {\r\n return _$quizSetupView;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new QuizSetupView object.\r\n * @function create\r\n * @memberof TSC.QuizSetupView\r\n * @param {Object} $container - jQuery element where quiz setup view will be injected.\r\n * @param {Element} spContainer - Smart player container element.\r\n * @static\r\n * @return QuizSetupView instance\r\n */\r\n create: QuizSetupView\r\n\r\n };\r\n});\r\n","(function(window, templates, BubbleView, highlightDisabler, localizationStrings) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.questionSetConfirmationView = (function() {\r\n var _containerId = '.start-question-set-confirmation-container';\r\n var _superView = BubbleView.create(_containerId);\r\n var _reviewControlId = '.review-button';\r\n var _confirmControlId = '.confirm-button';\r\n var _viewTemplate;\r\n\r\n if (templates && templates.question_set_confirmation_template) {\r\n _viewTemplate = templates.question_set_confirmation_template;\r\n } else {\r\n throw Error('questionSetConfirmationView: Question Set Confirmation Template not found.');\r\n }\r\n\r\n return {\r\n getViewMarkup: function(reviewText, confirmationText) {\r\n var context = {reviewText: reviewText, confirmationText: confirmationText, title: localizationStrings.strings.accessQuestionSetConfirmationTitle, alertText: localizationStrings.strings.accessVideoPausedForQuiz};\r\n return _viewTemplate(context) + _superView.getOverlayMarkup();\r\n },\r\n getReviewControlRef: function() {\r\n return _reviewControlId;\r\n },\r\n getConfirmControlRef: function() {\r\n return _confirmControlId;\r\n },\r\n showView: function() {\r\n _superView.showView(true);\r\n var $confirmControl = window.$(_containerId).find(_confirmControlId);\r\n $confirmControl.focus();\r\n highlightDisabler.disableHighlights($confirmControl);\r\n },\r\n removeView: _superView.removeView,\r\n updateViewPosition: _superView.updateViewPosition,\r\n setBottomOffset: _superView.setBottomOffset,\r\n pointAt: _superView.pointAt\r\n\r\n };\r\n }());\r\n}(this, window.TSC.templates, window.TSC.BubbleView, window.TSC.highlightDisabler, window.TSC.localizationStrings));\r\n","(function(window, templates, BubbleView, localizationStrings, highlightDisabler, tabIndex) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.questionSetReviewStatusView = (function() {\r\n var _containerId = '.question-set-container';\r\n var _superView = BubbleView.create(_containerId);\r\n var _viewTemplate;\r\n var _showAnswersId = '.view-answers-button';\r\n var _hideAnswersId = '.hide-answers-button';\r\n var _gradeableDetails;\r\n var _unGradeableDetails;\r\n var _readingSelector = '.question-set-results';\r\n\r\n if (templates && templates.question_set_review_status_template) {\r\n _viewTemplate = templates.question_set_review_status_template;\r\n } else {\r\n throw Error('questionSetReviewStatusView: Question Set Review Status Template not found.');\r\n }\r\n\r\n return {\r\n setGradeableDetails: function(text) {\r\n _gradeableDetails = text;\r\n },\r\n setUngradeableDetails: function(text) {\r\n _unGradeableDetails = text;\r\n },\r\n getViewMarkup: function() {\r\n var context = {\r\n gradeableDetails: _gradeableDetails,\r\n unGradeableDetails: _unGradeableDetails,\r\n txtAnswersSubmitted: localizationStrings.strings.accessBtnAnswersSubmitted,\r\n txtViewAnswers: localizationStrings.strings.accessBtnShowAnswer,\r\n txtHideAnswers: localizationStrings.strings.accessBtnHideAnswer,\r\n questionSetResultsTabIndex: tabIndex.QuestionReviewText\r\n };\r\n return _viewTemplate(context) + _superView.getOverlayMarkup();\r\n },\r\n getHideAnswersControlRef: function() {\r\n return _hideAnswersId;\r\n },\r\n getShowAnswersControlRef: function() {\r\n return _showAnswersId;\r\n },\r\n showView: function() {\r\n var $container = window.$(_containerId);\r\n $container.removeClass('minimized');\r\n _superView.showView();\r\n\r\n var $readableElement = $container.find(_readingSelector);\r\n $readableElement.focus();\r\n highlightDisabler.disableHighlights($readableElement);\r\n },\r\n hideView: function() {\r\n window.$(_containerId).addClass('minimized');\r\n _superView.hideView();\r\n },\r\n removeView: _superView.removeView,\r\n updateViewPosition: _superView.updateViewPosition,\r\n setBottomOffset: _superView.setBottomOffset,\r\n pointAt: _superView.pointAt\r\n\r\n };\r\n }());\r\n}(this, window.TSC.templates, window.TSC.BubbleView, window.TSC.localizationStrings, window.TSC.highlightDisabler, window.TSC.tabIndex));\r\n","(function(window, answersViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.AnswersView = answersViewFactory(\r\n window,\r\n window.$,\r\n namespace.templates,\r\n namespace.deviceInfo,\r\n namespace.textSanitizer,\r\n namespace.questionType,\r\n namespace.log,\r\n namespace.viewHelper,\r\n namespace.localizationStrings);\r\n})(this, function(window, $, templates, deviceInfo, textSanitizer, questionType, log, viewHelper, localizationStrings) {\r\n 'use strict';\r\n\r\n var CHECK_SVG = '';\r\n var INCORRECT_SVG = '';\r\n var CORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(CHECK_SVG);\r\n var INCORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(INCORRECT_SVG);\r\n var PLACEHOLDER_GLYPH_DATA_URL = 'data:image/png;base64,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';\r\n var ACTIVE_QUESTION_CLASS = 'active-question-item';\r\n var CORRECT_ANSWER_TEXT = localizationStrings.strings.txtCorrectAnswer;\r\n var YOUR_ANSWER_TEXT = localizationStrings.strings.txtYourAnswer;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class AnswersView\r\n * @classdesc Answers View\r\n */\r\n var AnswersView = function($container, question, showResults) {\r\n var _$window = $(window);\r\n var _choiceAnswerTemplate = null;\r\n var _fillAnswerTemplate = null;\r\n var _shortAnswerTemplate = null;\r\n var _$textInput = null;\r\n\r\n if (templates && templates.choice_answer_template) {\r\n _choiceAnswerTemplate = templates.choice_answer_template;\r\n } else {\r\n log.logException('Answers View: Multiple Choice Answer Template not found.');\r\n }\r\n\r\n if (templates && templates.fill_answer_template) {\r\n _fillAnswerTemplate = templates.fill_answer_template;\r\n } else {\r\n log.logException('Answers View: Fill In The Blank Answer Template not found.');\r\n }\r\n\r\n if (templates && templates.short_answer_template) {\r\n _shortAnswerTemplate = templates.short_answer_template;\r\n } else {\r\n log.logException('Answers View: Short Answer Template not found.');\r\n }\r\n\r\n var getUserResponse = function() {\r\n switch (question.type) {\r\n case questionType.CHOICE:\r\n return $container.find('input[name=multiple-choice]:checked').val();\r\n case questionType.FILL_IN:\r\n return $container.find('input').val();\r\n case questionType.SHORT:\r\n return $container.find('textarea').val().replace(/^[ \\t]+|[ \\t]+$/, '');\r\n }\r\n };\r\n\r\n var displayResponseFillInResults = function() {\r\n if (!question.isGraded) {\r\n return;\r\n }\r\n var $correctImage = $(\"\" + localizationStrings.strings.txtCorrectString + \"\");\r\n var $incorrectImage = $(\"\" + localizationStrings.strings.txtIncorrectString + \"\");\r\n\r\n if (question.isResponseCorrect) {\r\n $container.find('img.feedback-placeholder').replaceWith($correctImage);\r\n } else {\r\n $container.find('img.feedback-placeholder').replaceWith($incorrectImage);\r\n }\r\n };\r\n\r\n var getCorrectAnswerIndex = function() {\r\n var numberAnswers = question.answers.length;\r\n var correctAnswerBitshifted = question.correctAnswer;\r\n for (var i = 0; i < numberAnswers; i++) {\r\n /*eslint no-bitwise: \"off\"*/\r\n if (1 << i === Number(correctAnswerBitshifted)) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n var displayChoiceResults = function() {\r\n var correctAnswerIndex;\r\n var $placeHolderImgEls;\r\n var $userResponseInputImageEl;\r\n var $correctResponseInputImageEl;\r\n var $correctImage;\r\n var $incorrectImage;\r\n var answerIndex = question.userResponse;\r\n var $labelEls = $container.find('label');\r\n\r\n $labelEls.removeClass(ACTIVE_QUESTION_CLASS);\r\n\r\n if (showResults && question.isGraded) {\r\n correctAnswerIndex = getCorrectAnswerIndex();\r\n $placeHolderImgEls = $container.find('label img');\r\n $userResponseInputImageEl = $container.find('label:eq(' + answerIndex + ') img');\r\n $correctResponseInputImageEl = $container.find('label:eq(' + correctAnswerIndex + ') img');\r\n $correctImage = $(\"\" + localizationStrings.strings.txtCorrectString + \"\");\r\n $incorrectImage = $(\"\" + localizationStrings.strings.txtIncorrectString + \"\");\r\n\r\n $placeHolderImgEls.removeClass('feedback-placeholder');\r\n\r\n if (answerIndex === correctAnswerIndex) {\r\n $userResponseInputImageEl.replaceWith($correctImage);\r\n $correctImage.css('opacity', 0);\r\n $correctImage.animate({opacity: 1}, 200);\r\n } else {\r\n $correctResponseInputImageEl.replaceWith($correctImage);\r\n $correctImage.css('opacity', 0);\r\n $correctImage.animate({opacity: 1}, 200);\r\n\r\n $userResponseInputImageEl.replaceWith($incorrectImage);\r\n $incorrectImage.css('opacity', 0);\r\n $incorrectImage.animate({opacity: 1}, 200);\r\n }\r\n }\r\n\r\n $container.find('input').hide();\r\n\r\n if (answerIndex !== undefined) {\r\n $container.find('label:eq(' + answerIndex + ')').addClass('picked-quiz-item');\r\n }\r\n };\r\n\r\n var disableInput = function() {\r\n var $inputEls = null;\r\n switch (question.type) {\r\n case questionType.CHOICE:\r\n case questionType.FILL_IN:\r\n $inputEls = $container.find('input');\r\n break;\r\n case questionType.SHORT:\r\n $inputEls = $container.find('textarea');\r\n break;\r\n }\r\n if ($inputEls) {\r\n $inputEls.attr('disabled', true);\r\n }\r\n };\r\n\r\n var displayResults = function() {\r\n switch (question.type) {\r\n case questionType.CHOICE:\r\n displayChoiceResults();\r\n break;\r\n case questionType.FILL_IN:\r\n displayResponseFillInResults();\r\n break;\r\n }\r\n disableInput();\r\n };\r\n\r\n var getChoiceAnswersMarkupContext = function(answers, userResponse) {\r\n var templateContext = {};\r\n templateContext.questionText = question.text;\r\n templateContext.answers = [];\r\n templateContext.placeHolderImg = PLACEHOLDER_GLYPH_DATA_URL;\r\n\r\n answers.forEach(function(answer, index) {\r\n if (userResponse && index === parseInt(userResponse, 10)) {\r\n templateContext.answers.push({\r\n answerIndex: index,\r\n answer: answer.text,\r\n isChecked: true\r\n });\r\n } else {\r\n templateContext.answers.push({\r\n answerIndex: index,\r\n answer: answer.text\r\n });\r\n }\r\n });\r\n return templateContext;\r\n };\r\n\r\n var getFillInTheBlankAnswerMarkupContext = function(userResponse, autoFocus) {\r\n var templateContext = {};\r\n templateContext.questionText = question.text;\r\n templateContext.inputLabel = 'Fill in question answer';\r\n templateContext.inputId = 'fill-in-the-blank-input';\r\n templateContext.inputName = 'fill-in-the-blank-input';\r\n templateContext.placeHolderImg = PLACEHOLDER_GLYPH_DATA_URL;\r\n templateContext.userResponse = userResponse;\r\n if (autoFocus) {\r\n templateContext.useAutofocus = 'true';\r\n }\r\n return templateContext;\r\n };\r\n\r\n var getShortAnswerMarkupContext = function(userResponse, autoFocus) {\r\n var templateContext = {};\r\n templateContext.questionText = question.text;\r\n templateContext.inputLabel = 'Supply your response';\r\n templateContext.inputId = 'short-answer-input';\r\n templateContext.inputName = 'short-answer-input';\r\n templateContext.userResponse = userResponse;\r\n if (autoFocus) {\r\n templateContext.useAutofocus = 'true';\r\n }\r\n return templateContext;\r\n };\r\n\r\n var getAnswersMarkup = function(autoFocus) {\r\n if (deviceInfo.isIOS() || deviceInfo.isAndroid()) {\r\n autoFocus = false;\r\n }\r\n\r\n switch (question.type) {\r\n case questionType.CHOICE:\r\n return _choiceAnswerTemplate(getChoiceAnswersMarkupContext(question.answers, question.userResponse));\r\n case questionType.FILL_IN:\r\n return _fillAnswerTemplate(getFillInTheBlankAnswerMarkupContext(question.userResponse, autoFocus));\r\n case questionType.SHORT:\r\n return _shortAnswerTemplate(getShortAnswerMarkupContext(question.userResponse, autoFocus));\r\n default:\r\n log.logException('Answers-view: unsupported question type (' + question.type + ')');\r\n }\r\n };\r\n\r\n var destroy = function() {\r\n if (!showResults && deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\r\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\r\n }\r\n\r\n if (_$textInput &&\r\n (question.type === questionType.FILL_IN || question.type === questionType.SHORT) &&\r\n (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid())) {\r\n _$textInput.off('focus keydown', viewHelper.scrollIntoView);\r\n }\r\n };\r\n\r\n var getCorrectAnswerText = function() {\r\n var answered = !(question.userResponse === null || typeof question.userResponse === 'undefined');\r\n if (question.type === questionType.CHOICE) {\r\n answered = answered && question.answers[question.userResponse];\r\n var correctAnswer = question.answers[getCorrectAnswerIndex()].text;\r\n var answerText = CORRECT_ANSWER_TEXT + correctAnswer;\r\n if (answered) {\r\n answerText += YOUR_ANSWER_TEXT + question.answers[question.userResponse].text;\r\n }\r\n return answerText;\r\n }\r\n return answered ? YOUR_ANSWER_TEXT + question.userResponse : '';\r\n };\r\n\r\n var setupAnswers = function() {\r\n if (showResults) {\r\n displayResults();\r\n } else {\r\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\r\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\r\n }\r\n\r\n // remove hover css when device is touch screen\r\n if (question.type === questionType.CHOICE && deviceInfo.isTouchInterface()) {\r\n $container.find('.multiple-choice').removeClass(ACTIVE_QUESTION_CLASS);\r\n }\r\n\r\n _$textInput = $container.find('input[type=text], textarea');\r\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT)) {\r\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\r\n _$textInput.on('focus keydown', viewHelper.scrollIntoView);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var createView = function() {\r\n var answersMarkup = getAnswersMarkup();\r\n if (answersMarkup) {\r\n $container.html(answersMarkup);\r\n }\r\n $container.find('.multiple-choice > input').focus(function() {\r\n $(this).parent().addClass('highlight-background');\r\n }).blur(function() {\r\n $(this).parent().removeClass('highlight-background');\r\n });\r\n };\r\n\r\n createView();\r\n setupAnswers();\r\n\r\n return {\r\n getUserResponse: getUserResponse,\r\n destroy: destroy,\r\n getCorrectAnswerText: getCorrectAnswerText\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new QuestionView object.\r\n * @function create\r\n * @memberof TSC.AnswersView\r\n * @static\r\n * @return new AnswersView instance\r\n */\r\n create: AnswersView\r\n };\r\n});\r\n","(function(window, questionViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.QuestionView = questionViewFactory(namespace.templates, namespace.localizationStrings, namespace.log, namespace.AnswersView);\r\n})(this, function(templates, localizationStrings, log, AnswersView) {\r\n 'use strict';\r\n\r\n var QUESTION_CORRECT_TEXT_CLASS = '.question-correct-text';\r\n var QUESTION_INCORRECT_TEXT_CLASS = '.question-incorrect-text';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class QuestionView\r\n * @classdesc Question View\r\n * @params {Object} $questionTextContainer - jquery wrapper for question text container element\r\n * @params {Object} $feedbackContainer - jquery wrapper for feedback text container element\r\n * @params {Object} $answersContainer - jquery wrapper for answers container element\r\n * @params {TSC.Question} question - Question model for this view.\r\n * @params {Boolean} showResults - show results for question.\r\n */\r\n var QuestionView = function($questionTextContainer, $feedbackContainer, $answersContainer, question, showResults) {\r\n var _questionTextTemplate = null;\r\n var _answersView;\r\n\r\n if (templates && templates.question_text_template) {\r\n _questionTextTemplate = templates.question_text_template;\r\n } else {\r\n log.logException('Question View: Question Text Template not found.');\r\n }\r\n\r\n var createView = function() {\r\n _answersView = AnswersView.create($answersContainer, question, showResults);\r\n $feedbackContainer.addClass('hide-element');\r\n var correctAnswerText = showResults && question.isGraded ? _answersView.getCorrectAnswerText() : '';\r\n\r\n var questionTextContext = {\r\n questionText: question.text,\r\n correctTextString: localizationStrings.strings.txtCorrectString,\r\n incorrectTextString: localizationStrings.strings.txtIncorrectString,\r\n correctAnswerText: correctAnswerText\r\n };\r\n var questionTextMarkup = _questionTextTemplate(questionTextContext);\r\n $questionTextContainer.html(questionTextMarkup);\r\n };\r\n\r\n var showFeedbackTextIfAvailable = function() {\r\n var feedbackMarkup = null;\r\n\r\n question.feedback.forEach(function(feedback) {\r\n if (question.isResponseCorrect && feedback.reason === 'correct') {\r\n feedbackMarkup = feedback.markupText;\r\n } else if (!question.isResponseCorrect && feedback.reason === 'incorrect') {\r\n feedbackMarkup = feedback.markupText;\r\n }\r\n });\r\n\r\n if (feedbackMarkup) {\r\n $feedbackContainer.html(feedbackMarkup);\r\n $feedbackContainer.removeClass('hide-element');\r\n }\r\n };\r\n\r\n var setupView = function() {\r\n if (showResults && question.isGraded) {\r\n showFeedbackTextIfAvailable();\r\n if (question.isResponseCorrect) {\r\n $questionTextContainer.find(QUESTION_CORRECT_TEXT_CLASS).removeClass('hide-element');\r\n } else {\r\n $questionTextContainer.find(QUESTION_INCORRECT_TEXT_CLASS).removeClass('hide-element');\r\n }\r\n }\r\n };\r\n\r\n createView();\r\n setupView();\r\n\r\n return {\r\n destroy: _answersView.destroy,\r\n getUserResponse: _answersView.getUserResponse\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new QuestionView object.\r\n * @function create\r\n * @memberof TSC.QuestionView\r\n * @static\r\n * @return new QuestionView instance\r\n */\r\n create: QuestionView\r\n };\r\n});\r\n","(function(window, questionSetViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.QuestionSetView = questionSetViewFactory(\r\n window.$,\r\n namespace.templates,\r\n namespace.BubbleView,\r\n namespace.localizationStrings,\r\n namespace.log,\r\n namespace.events,\r\n namespace.rationaleActionType,\r\n namespace.QuestionView,\r\n namespace.deviceInfo);\r\n})(this, function($,\r\n templates,\r\n BubbleView,\r\n localizationStrings,\r\n log,\r\n events,\r\n rationaleActionType,\r\n QuestionView,\r\n deviceInfo) {\r\n 'use strict';\r\n\r\n var SUBMITTING_GLYPH_DATA_URL = 'data:image/gif;base64,R0lGODlhUABQANU/ALW2uPX19WJjZdXV1qusrerq6m1ucMDBwZeXmba2t4KDhIyNjnd4evb29u7v76Gio8vLzPv7+/j4+f39/sDCxN3e35qcnujp6drb2/n5+XZ3euTk5fHy8n+Ag8nKy/z8/PLz88TGyO3t7enq66Gipff399bX2Obn58jIyr+/wZKSlaSlps3O0Ly9v66wsu/w8ezt7vT09eLi49XW2NDQ0snKzIiJjNHS06epq+vs7Obn6JOVmLy+wG1ucVhZW////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiOWFhNzdiZC01YTI1LTQyNjctOWIwYS02ZmE4Mjg4MTMwNTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzM5RTQ0RkE2QzE1MTFFNDk5MThBRTMzOThEQjZENTAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzM5RTQ0Rjk2QzE1MTFFNDk5MThBRTMzOThEQjZENTAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06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';\r\n\r\n var CONTAINER_CLASS = '.question-set-container';\r\n var PREV_CONTROL_CLASS = '.previous-button';\r\n var NEXT_CONTROL_CLASS = '.next-button';\r\n var SUBMIT_CONTROL_CLASS = '.submit-button';\r\n var CONTINUE_CONTROL_CLASS = '.continue-button';\r\n var QUESTION_COUNT_CLASS = '.question-count';\r\n var QUESTION_CLASS = '.question-text';\r\n var ANSWERS_CLASS = '.question-answers';\r\n var FEEDBACK_CLASS = '.question-feedback';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class QuestionSetView\r\n * @param {Object} $container -- Container to add question set view.\r\n * @param {TSC.QuestionSet} questionSet -- Question Set model for view.\r\n * @param {Boolean} displayOverlay -- Display overlay.\r\n * @param {Boolean} mediaIsImage -- Media is an image.\r\n * @param {Boolean} showQuestionSetResults -- Show user results for question set.\r\n * @classdesc View for Question sets.\r\n */\r\n var QuestionSetView = function($container, questionSet, displayOverlay, mediaIsImage, showQuestionSetResults) {\r\n var _currentQuestionIndex = 0;\r\n var _$container = $container;\r\n var _questionSetTemplate;\r\n var _questionCountTemplate;\r\n var _startTimeForQuestion = 0;\r\n var _endTimeForQuestion = 0;\r\n var _currentQuestionView = null;\r\n var _$questionSetContainer = null;\r\n var _$questionTextContainer = null;\r\n var _$answersContainer = null;\r\n var _$feedbackContainer = null;\r\n var _$questionCountContainer = null;\r\n var _$prevControl = null;\r\n var _$nextControl = null;\r\n var _$continueControl = null;\r\n var _$submitControl = null;\r\n var _superView = BubbleView.create(CONTAINER_CLASS);\r\n\r\n if (templates && templates.question_set_template) {\r\n _questionSetTemplate = templates.question_set_template;\r\n } else {\r\n log.logException('questionSetView: Question Set Template not found.');\r\n }\r\n\r\n if (templates && templates.question_count_template) {\r\n _questionCountTemplate = templates.question_count_template;\r\n } else {\r\n log.logException('questionSetView: Question Count Template not found.');\r\n }\r\n\r\n var isOnFirstQuestion = function() {\r\n return _currentQuestionIndex === 0;\r\n };\r\n\r\n var isOnLastQuestion = function() {\r\n return _currentQuestionIndex === questionSet.questions.length - 1;\r\n };\r\n\r\n var showView = function() {\r\n _$questionSetContainer.removeClass('minimized');\r\n _superView.showView();\r\n };\r\n\r\n var hideView = function() {\r\n _$questionSetContainer.addClass('minimized');\r\n _superView.hideView();\r\n };\r\n\r\n var startTrackingQuestionTime = function() {\r\n _startTimeForQuestion = new Date().getTime();\r\n };\r\n\r\n var recordDurationOnQuestion = function() {\r\n _endTimeForQuestion = new Date().getTime();\r\n\r\n var timeBetween = _endTimeForQuestion - _startTimeForQuestion;\r\n questionSet.questions[_currentQuestionIndex].attemptDuration += timeBetween;\r\n };\r\n\r\n var storeUserResponse = function() {\r\n var userResponse = _currentQuestionView.getUserResponse();\r\n\r\n if (userResponse !== undefined && userResponse !== '') {\r\n questionSet.questions[_currentQuestionIndex].userResponse = userResponse;\r\n }\r\n };\r\n\r\n var saveQuestionUserInput = function() {\r\n if (showQuestionSetResults) {\r\n return;\r\n }\r\n\r\n storeUserResponse();\r\n recordDurationOnQuestion();\r\n };\r\n\r\n var lockResponses = function() {\r\n if (questionSet.usesRationale) {\r\n questionSet.questions[_currentQuestionIndex].responseLocked = true;\r\n } else {\r\n questionSet.questions.forEach(function(question) {\r\n question.responseLocked = true;\r\n });\r\n }\r\n };\r\n\r\n var getFeedbackInfoForCurrentQuestion = function() {\r\n var actionType = rationaleActionType.CONTINUE;\r\n var feedback;\r\n\r\n if (questionSet.questions[_currentQuestionIndex].isGraded) {\r\n var feedbackReason = questionSet.questions[_currentQuestionIndex].isResponseCorrect ? 'correct' : 'incorrect';\r\n feedback = questionSet.questions[_currentQuestionIndex].getFeedbackForReason(feedbackReason);\r\n\r\n if (feedback !== null) {\r\n if (feedback.location !== undefined) {\r\n actionType = rationaleActionType.LOCATION;\r\n } else if (feedback.jumpToTime !== undefined) {\r\n actionType = rationaleActionType.JUMP_TO_TIME;\r\n }\r\n }\r\n }\r\n\r\n return {feedback: feedback, actionType: actionType};\r\n };\r\n\r\n var executeContinueAction = function() {\r\n if (isOnLastQuestion()) {\r\n $container.trigger(events.Quizzing.CloseQuestionSetView);\r\n } else {\r\n displayNextQuestion();\r\n }\r\n };\r\n\r\n var executeRationaleAction = function() {\r\n var feedbackInfo;\r\n\r\n if (questionSet.questions[_currentQuestionIndex].feedbackActionExecuted) {\r\n feedbackInfo = {actionType: rationaleActionType.CONTINUE};\r\n } else {\r\n feedbackInfo = getFeedbackInfoForCurrentQuestion();\r\n questionSet.questions[_currentQuestionIndex].feedbackActionExecuted = true;\r\n }\r\n\r\n switch (feedbackInfo.actionType) {\r\n case rationaleActionType.CONTINUE:\r\n executeContinueAction();\r\n break;\r\n case rationaleActionType.LOCATION:\r\n $container.trigger(events.Quizzing.RationaleActionLocation, {location: feedbackInfo.feedback.location});\r\n executeContinueAction();\r\n break;\r\n case rationaleActionType.JUMP_TO_TIME:\r\n if (questionSet.startTime !== feedbackInfo.feedback.jumpToTime) {\r\n $container.trigger(events.Quizzing.RationaleActionJumpToTime, {jumpToTime: feedbackInfo.feedback.jumpToTime});\r\n } else {\r\n executeContinueAction();\r\n }\r\n break;\r\n }\r\n };\r\n\r\n var displayNextQuestion = function() {\r\n saveQuestionUserInput();\r\n\r\n _currentQuestionIndex++;\r\n displayQuestion();\r\n };\r\n\r\n var onPreviousQuestion = function(e) {\r\n e.preventDefault();\r\n\r\n saveQuestionUserInput();\r\n\r\n _currentQuestionIndex--;\r\n displayQuestion();\r\n };\r\n\r\n var onNextQuestion = function(e) {\r\n e.preventDefault();\r\n\r\n displayNextQuestion();\r\n };\r\n\r\n var onContinue = function(e) {\r\n e.preventDefault();\r\n\r\n if (questionSet.usesRationale && !showQuestionSetResults) {\r\n executeRationaleAction();\r\n } else {\r\n $container.trigger(events.Quizzing.CloseQuestionSetView);\r\n }\r\n };\r\n\r\n var onSubmit = function(e) {\r\n e.preventDefault();\r\n\r\n _$submitControl.attr('disabled', 'disabled');\r\n\r\n saveQuestionUserInput();\r\n lockResponses();\r\n\r\n $container.trigger(events.Quizzing.SubmitQuestionSet);\r\n };\r\n\r\n //This is a fix for iPhones whipping users back to the top of the page if there is a focused input.\r\n var onIphoneTouchstart = function() {\r\n _$questionSetContainer.find('.fill-in-the-blank-input').blur();\r\n };\r\n\r\n var getControlsConfig = function() {\r\n var currentQuestion = questionSet.questions[_currentQuestionIndex];\r\n var onFirstQuestion = isOnFirstQuestion();\r\n var onLastQuestion = isOnLastQuestion();\r\n var hasOneQuestion = onFirstQuestion && onLastQuestion;\r\n\r\n var controlsConfig = {\r\n showSubmitNav: false,\r\n showContinueNav: false,\r\n showPrevNav: false,\r\n showNextNav: false,\r\n prevDisabled: false,\r\n nextDisabled: false\r\n };\r\n\r\n if (questionSet.usesRationale && !showQuestionSetResults) {\r\n if (currentQuestion.responseLocked) {\r\n if (currentQuestion.feedbackActionExecuted && !onLastQuestion) {\r\n controlsConfig.showNextNav = true;\r\n } else {\r\n controlsConfig.showContinueNav = true;\r\n }\r\n } else {\r\n controlsConfig.showSubmitNav = true;\r\n }\r\n controlsConfig.showPrevNav = !hasOneQuestion && !onFirstQuestion;\r\n } else {\r\n controlsConfig.showSubmitNav = !showQuestionSetResults && onLastQuestion;\r\n controlsConfig.showContinueNav = showQuestionSetResults && onLastQuestion && !mediaIsImage;\r\n controlsConfig.showPrevNav = !hasOneQuestion;\r\n controlsConfig.showNextNav = !hasOneQuestion && !controlsConfig.showSubmitNav && !controlsConfig.showContinueNav;\r\n controlsConfig.prevDisabled = _currentQuestionIndex === 0;\r\n controlsConfig.nextDisabled = onLastQuestion;\r\n }\r\n\r\n return controlsConfig;\r\n };\r\n\r\n var updateControls = function() {\r\n var controlsConfig = getControlsConfig();\r\n\r\n _$prevControl.css('display', 'none');\r\n _$nextControl.css('display', 'none');\r\n _$submitControl.css('display', 'none');\r\n _$continueControl.css('display', 'none');\r\n\r\n if (controlsConfig.showPrevNav) {\r\n _$prevControl.css('display', 'inline');\r\n\r\n if (controlsConfig.prevDisabled) {\r\n _$prevControl.attr('disabled', 'disabled');\r\n } else {\r\n _$prevControl.removeAttr('disabled');\r\n }\r\n }\r\n\r\n if (controlsConfig.showNextNav) {\r\n _$nextControl.css('display', 'inline');\r\n\r\n if (controlsConfig.nextDisabled) {\r\n _$nextControl.attr('disabled', 'disabled');\r\n } else {\r\n _$nextControl.removeAttr('disabled');\r\n }\r\n }\r\n\r\n if (controlsConfig.showSubmitNav) {\r\n _$submitControl.removeAttr('disabled');\r\n _$submitControl.css('display', 'inline');\r\n }\r\n\r\n if (controlsConfig.showContinueNav) {\r\n _$continueControl.css('display', 'inline');\r\n }\r\n };\r\n\r\n var displayQuestion = function() {\r\n var showResults = showQuestionSetResults;\r\n if (questionSet.usesRationale && questionSet.questions[_currentQuestionIndex].responseLocked) {\r\n showResults = true;\r\n }\r\n if (_currentQuestionView !== null) {\r\n _currentQuestionView.destroy();\r\n }\r\n _currentQuestionView = QuestionView.create(_$questionTextContainer, _$feedbackContainer, _$answersContainer, questionSet.questions[_currentQuestionIndex], showResults);\r\n updateQuestionCount();\r\n updateControls();\r\n startTrackingQuestionTime();\r\n };\r\n\r\n var updateQuestionCount = function() {\r\n var questionCountContext = {\r\n currentQuestionNumber: _currentQuestionIndex + 1,\r\n totalQuestions: questionSet.questions.length,\r\n prepositionText: localizationStrings.getQuestionCountPreposition()\r\n };\r\n var questionCountMarkup = _questionCountTemplate(questionCountContext);\r\n _$questionCountContainer.html(questionCountMarkup);\r\n };\r\n\r\n var showFeedbackForCurrentQuestion = function() {\r\n displayQuestion();\r\n updateControls();\r\n };\r\n\r\n var createView = function() {\r\n var context = {\r\n previousButtonName: localizationStrings.strings.txtPrev,\r\n nextButtonName: localizationStrings.strings.txtNext,\r\n submitButtonName: localizationStrings.strings.txtSubmit,\r\n continueButtonName: localizationStrings.strings.txtContinue,\r\n submittingImg: SUBMITTING_GLYPH_DATA_URL,\r\n submittingImgAltText: localizationStrings.strings.txtSubmittingAnswers\r\n };\r\n\r\n var questionSetViewMarkup = _questionSetTemplate(context);\r\n\r\n if (displayOverlay) {\r\n questionSetViewMarkup += _superView.getOverlayMarkup();\r\n }\r\n\r\n _$container.append(questionSetViewMarkup);\r\n\r\n _$questionSetContainer = _$container.find(CONTAINER_CLASS);\r\n _$questionTextContainer = _$container.find(QUESTION_CLASS);\r\n _$answersContainer = _$container.find(ANSWERS_CLASS);\r\n _$feedbackContainer = _$container.find(FEEDBACK_CLASS);\r\n _$questionCountContainer = _$container.find(QUESTION_COUNT_CLASS);\r\n _$prevControl = _$container.find(PREV_CONTROL_CLASS);\r\n _$nextControl = _$container.find(NEXT_CONTROL_CLASS);\r\n _$continueControl = _$container.find(CONTINUE_CONTROL_CLASS);\r\n _$submitControl = _$container.find(SUBMIT_CONTROL_CLASS);\r\n };\r\n\r\n var removeEvents = function() {\r\n _$prevControl.off('click', onPreviousQuestion);\r\n _$nextControl.off('click', onNextQuestion);\r\n _$submitControl.off('click', onSubmit);\r\n _$continueControl.off('click', onContinue);\r\n\r\n if (deviceInfo.isIPhoneOrIPod()) {\r\n _$questionSetContainer.off('touchstart', onIphoneTouchstart);\r\n }\r\n };\r\n\r\n var setupEvents = function() {\r\n _$prevControl.on('click', onPreviousQuestion);\r\n _$nextControl.on('click', onNextQuestion);\r\n _$submitControl.on('click', onSubmit);\r\n _$continueControl.on('click', onContinue);\r\n\r\n if (deviceInfo.isIPhoneOrIPod()) {\r\n _$questionSetContainer.on('touchstart', onIphoneTouchstart);\r\n }\r\n };\r\n\r\n var checkQuestionSetProgress = function() {\r\n if (showQuestionSetResults) {\r\n return;\r\n }\r\n for (var i = 0; i < questionSet.questions.length; i++) {\r\n if (!questionSet.questions[i].responseLocked) {\r\n _currentQuestionIndex = i;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n var removeView = function(completeCallback, destroyOverlay) {\r\n removeEvents();\r\n _currentQuestionView.destroy();\r\n _superView.removeView(completeCallback, destroyOverlay);\r\n };\r\n\r\n createView();\r\n checkQuestionSetProgress();\r\n setupEvents();\r\n displayQuestion();\r\n\r\n return {\r\n showView: showView,\r\n hideView: hideView,\r\n removeView: removeView,\r\n showFeedbackForCurrentQuestion: showFeedbackForCurrentQuestion,\r\n updateViewPosition: _superView.updateViewPosition,\r\n setBottomOffset: _superView.setBottomOffset,\r\n pointAt: _superView.pointAt\r\n };\r\n };\r\n\r\n return {\r\n create: QuestionSetView\r\n };\r\n});\r\n","(function(window, templates, BubbleView, highlightDisabler, localizationStrings) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.reviewAnswersConfirmationView = (function() {\r\n var _superView = BubbleView.create('.review-confirmation-container');\r\n var _viewTemplate;\r\n\r\n if (templates && templates.question_set_review_confirmation_template) {\r\n _viewTemplate = templates.question_set_review_confirmation_template;\r\n } else {\r\n throw Error('reviewAnswersConfirmationView: Review Answer Confirmation View Template not found.');\r\n }\r\n\r\n var _containerId = '.controls-container';\r\n var _continueControlId = '.continue-video-button';\r\n var _reviewAnswersControlId = '.review-answers-button';\r\n\r\n return {\r\n getViewMarkup: function(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText) {\r\n var context = {\r\n title: localizationStrings.strings.accessQuizResults,\r\n alertText: numberCorrectText ? numberCorrectText + ' ' + percentCorrectText + '. ' + numberInCorrectText + ' ' + percentInCorrectText : null,\r\n numberCorrect: numberCorrectText,\r\n percentCorrect: percentCorrectText,\r\n numberInCorrect: numberInCorrectText,\r\n percentInCorrect: percentInCorrectText,\r\n continueText: continueText,\r\n reviewAnswerText: reviewText\r\n };\r\n\r\n return _viewTemplate(context);\r\n },\r\n getContinueControlRef: function() {\r\n return _continueControlId;\r\n },\r\n getReviewControlRef: function() {\r\n return _reviewAnswersControlId;\r\n },\r\n showView: function() {\r\n _superView.showView(true);\r\n var $reviewControl = window.$(_containerId).find(_reviewAnswersControlId);\r\n $reviewControl.focus();\r\n highlightDisabler.disableHighlights($reviewControl);\r\n },\r\n removeView: _superView.removeView,\r\n updateViewPosition: _superView.updateViewPosition,\r\n setBottomOffset: _superView.setBottomOffset,\r\n pointAt: _superView.pointAt\r\n };\r\n }());\r\n}(this, window.TSC.templates, window.TSC.BubbleView, window.TSC.highlightDisabler, window.TSC.localizationStrings));\r\n","(function(window, xmpGraderFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.xmpGrader = xmpGraderFactory(namespace.questionType);\r\n})(this, function(questionType) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class xmpGrader\r\n * @classdesc Xmp Grader question sets\r\n */\r\n var gradeChoiceQuestion = function(question, response) {\r\n var correctAnswer = question.correctAnswer;\r\n var isCorrect;\r\n var responseNumber = parseInt(response, 10);\r\n if (isNaN(responseNumber)) {\r\n isCorrect = false;\r\n } else {\r\n /*eslint no-bitwise: \"off\"*/\r\n isCorrect = 1 << responseNumber === correctAnswer;\r\n }\r\n question.isResponseCorrect = isCorrect;\r\n question.isGraded = correctAnswer !== undefined && correctAnswer > 0;\r\n };\r\n\r\n var gradeFillInTheBlankQuestion = function(question, response) {\r\n var responseLowerCase = response !== undefined ? response.toLowerCase() : '';\r\n var possibleAnswers = question.answers;\r\n var numberPossibleAnswers = possibleAnswers ? possibleAnswers.length : 0;\r\n\r\n question.isGraded = numberPossibleAnswers > 0;\r\n\r\n if (question.isGraded) {\r\n question.isResponseCorrect = false;\r\n for (var i = 0; i < numberPossibleAnswers; i++) {\r\n if (responseLowerCase === possibleAnswers[i].text.toLowerCase()) {\r\n question.isResponseCorrect = true;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n var gradeQuestion = function(question) {\r\n if (question.type === questionType.CHOICE) {\r\n gradeChoiceQuestion(question, question.userResponse);\r\n } else if (question.type === questionType.FILL_IN) {\r\n gradeFillInTheBlankQuestion(question, question.userResponse);\r\n }\r\n };\r\n\r\n var gradeQuestionSet = function(questionSet) {\r\n questionSet.questions.forEach(function(question) {\r\n if (question.responseLocked) {\r\n gradeQuestion(question);\r\n }\r\n });\r\n };\r\n\r\n return Object.defineProperties({\r\n gradeQuestionSet: gradeQuestionSet\r\n }, {\r\n doesLocalGrading: {\r\n value: true\r\n }\r\n });\r\n});\r\n","(function(window, fathomGraderFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.fathomGrader = fathomGraderFactory();\r\n})(this, function() {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class fathomGrader\r\n * @classdesc Grader for fathom quiz service\r\n */\r\n\r\n var processQuestionResults = function(question, results) {\r\n var questionApiId = question.id;\r\n var questionResult = results[questionApiId];\r\n if (questionResult !== undefined) {\r\n question.isResponseCorrect = questionResult.isCorrect;\r\n question.correctAnswer = questionResult.correctAnswer;\r\n question.isGraded = questionResult.isGraded;\r\n }\r\n };\r\n\r\n var processQuestionSetResults = function(questionSet, results) {\r\n questionSet.questions.forEach(function(question) {\r\n processQuestionResults(question, results);\r\n });\r\n questionSet.cacheQuestionDetails();\r\n };\r\n\r\n return Object.defineProperties({\r\n processQuestionSetResults: processQuestionSetResults\r\n }, {\r\n doesLocalGrading: {\r\n value: false\r\n }\r\n });\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n\r\n var DEFAULT_SEGMENT_LENGTH = 30000;\r\n var SEGMENT_CHOICES = [\r\n {duration: 300000, segmentLength: 2000},\r\n {duration: 1800000, segmentLength: 5000}\r\n ];\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.videoAnalytics = (function() {\r\n var _videoLoadStartTime;\r\n var _videoLoadEndTime;\r\n var _videoDuration = 0;\r\n var _segmentLength = DEFAULT_SEGMENT_LENGTH;\r\n var _numberSegments = 0;\r\n var _videoSegments = [];\r\n var _numberVideoSegmentWatched = 0;\r\n var _currentPlayTime = 0;\r\n var _enabled = false;\r\n\r\n return {\r\n setVideoLoadStartTime: function(time) {\r\n _videoLoadStartTime = time;\r\n },\r\n setVideoLoadEndTime: function(time) {\r\n _videoLoadEndTime = time;\r\n },\r\n getVideoLoadTime: function() {\r\n var loadTime = 0;\r\n\r\n if (_videoLoadStartTime && _videoLoadEndTime) {\r\n loadTime = _videoLoadEndTime - _videoLoadStartTime;\r\n }\r\n\r\n return loadTime;\r\n },\r\n getNumberSegments: function() {\r\n return _numberSegments;\r\n },\r\n setCurrentPlayTime: function(time) {\r\n _currentPlayTime = time;\r\n },\r\n getCurrentPlayTime: function() {\r\n return _currentPlayTime;\r\n },\r\n getNumberWatchedSegments: function() {\r\n return _numberVideoSegmentWatched;\r\n },\r\n isPercentWatchedInitialized: function() {\r\n return _videoDuration > 0;\r\n },\r\n clearPercentWatched: function() {\r\n _numberSegments = 0;\r\n _videoSegments = [];\r\n _numberVideoSegmentWatched = 0;\r\n _currentPlayTime = 0;\r\n _videoDuration = 0;\r\n },\r\n initPercentWatched: function(videoDurationInMilliseconds) {\r\n if (videoDurationInMilliseconds <= 0) {\r\n return;\r\n }\r\n\r\n _videoDuration = videoDurationInMilliseconds;\r\n\r\n // determine video segment length\r\n _segmentLength = DEFAULT_SEGMENT_LENGTH;\r\n for (var i = 0; i < SEGMENT_CHOICES.length; i++) {\r\n if (videoDurationInMilliseconds <= SEGMENT_CHOICES[i].duration) {\r\n _segmentLength = SEGMENT_CHOICES[i].segmentLength;\r\n break;\r\n }\r\n }\r\n\r\n // create array to store percentage watched\r\n _videoSegments = [];\r\n\r\n _numberSegments = Math.ceil(videoDurationInMilliseconds / _segmentLength);\r\n\r\n for (var j = 0; j < _numberSegments; j++) {\r\n _videoSegments.push(false);\r\n }\r\n\r\n _numberVideoSegmentWatched = 0;\r\n },\r\n markTimeWatched: function(videoTimeInMilliseconds) {\r\n videoTimeInMilliseconds = Math.min(videoTimeInMilliseconds, _videoDuration);\r\n\r\n _currentPlayTime = videoTimeInMilliseconds / 1000;\r\n var index = Math.floor(videoTimeInMilliseconds / _segmentLength);\r\n\r\n if (index < 0 || index >= _numberSegments) {\r\n return;\r\n }\r\n\r\n if (!_videoSegments[index]) {\r\n _numberVideoSegmentWatched++;\r\n _videoSegments[index] = true;\r\n }\r\n },\r\n getPercentageWatched: function() {\r\n if (_numberSegments && _numberSegments > 0) {\r\n return _numberVideoSegmentWatched / _numberSegments;\r\n }\r\n return 0;\r\n },\r\n getPercentageWatchedForVideoSegment: function(startTimeInMilliseconds, endTimeInMilliseconds) {\r\n var percentageWatched = 0;\r\n\r\n if (_videoDuration > 0 && startTimeInMilliseconds <= endTimeInMilliseconds) {\r\n var startSegmentIndex = Math.floor(startTimeInMilliseconds / _segmentLength);\r\n var endSegmentIndex = Math.floor(endTimeInMilliseconds / _segmentLength);\r\n\r\n var numberSegmentsWatched = 0;\r\n var totalSegmentsInRange = endSegmentIndex - startSegmentIndex + 1;\r\n\r\n for (var i = startSegmentIndex; i <= endSegmentIndex; i++) {\r\n if (_videoSegments[i]) {\r\n numberSegmentsWatched++;\r\n }\r\n }\r\n\r\n percentageWatched = numberSegmentsWatched / totalSegmentsInRange;\r\n }\r\n\r\n return percentageWatched;\r\n },\r\n setEnabled: function(enabled) {\r\n _enabled = enabled;\r\n },\r\n isEnabled: function() {\r\n return _enabled;\r\n },\r\n getVideoSegmentSnapShot: function() {\r\n return _videoSegments.map(function(segmentValue) {\r\n return segmentValue === true ? '1' : '0';\r\n }).join(',');\r\n },\r\n populateVideoSegmentsWatch: function(videoSegmentSnapshot) {\r\n var videoSegmentSnapshotList = videoSegmentSnapshot.split(',');\r\n if (_videoSegments.length !== videoSegmentSnapshotList.length) {\r\n return;\r\n }\r\n\r\n videoSegmentSnapshotList.forEach(function(segmentValue, index) {\r\n if (segmentValue === '1') {\r\n _numberVideoSegmentWatched++;\r\n _videoSegments[index] = true;\r\n }\r\n });\r\n }\r\n };\r\n }());\r\n}(this));\r\n","(function(window, scormApiWrapperFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ScormApiWrapper = scormApiWrapperFactory(window, window.$, window.Q, namespace.localizationStrings, namespace.scormConstants);\r\n})(this, function(window, $, Q, localizationStrings, scormConstants) {\r\n 'use strict';\r\n var MAX_PARENTS_TO_SEARCH = 500;\r\n var SCORM_MANIFEST_FILE_NAME = 'imsmanifest.xml';\r\n var CAMTASIA_SCORM_1_2_MANIFEST_STRING = 'ADL SCORM 1.2';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class ScormApiWrapper\r\n * @classdesc Wrapper around Scorm API that handles Scorm 1.2 and 2004\r\n */\r\n var ScormApiWrapper = function() {\r\n var scormApi = null;\r\n var noAPIFound = false;\r\n var apiVersion = scormConstants.versions.NOT_DETECTED;\r\n var scormManifestDocString = null;\r\n\r\n /**\r\n * This function is used to communicate with the API, if it is found.\r\n * @memberof TSC.ScormApiWrapper\r\n * @function apiCall\r\n * @param {string} scormFunctionName - Name of the api function to call\r\n * @param {string} [dataModalID] - Name of the data model id defined in scorm constants object.\r\n * @param [dmeValue] - Value to write to data model\r\n * @return {string} - Value returned from the api call.\r\n */\r\n var apiCall = function(scormFunctionName, dataModalID, dmeValue) {\r\n var dataModel;\r\n var result;\r\n\r\n if (scormApi) {\r\n switch (scormFunctionName) {\r\n case scormConstants.fn.initialize:\r\n var initializedResult;\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n initializedResult = scormApi.Initialize('');\r\n } else {\r\n initializedResult = scormApi.LMSInitialize('');\r\n }\r\n\r\n if (initializedResult === 'true') {\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.GetValue(scormConstants.scorm2004DataModel.cmiCompletionStatus);\r\n } else {\r\n result = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\r\n }\r\n }\r\n break;\r\n case scormConstants.fn.terminate:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.Terminate('');\r\n } else {\r\n result = scormApi.LMSFinish('');\r\n }\r\n break;\r\n case scormConstants.fn.getValue:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\r\n if (dataModel) {\r\n result = scormApi.GetValue(dataModel);\r\n }\r\n } else {\r\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\r\n if (dataModel) {\r\n result = scormApi.LMSGetValue(dataModel);\r\n }\r\n }\r\n break;\r\n case scormConstants.fn.setValue:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\r\n if (dataModel) {\r\n result = scormApi.SetValue(dataModel, dmeValue);\r\n }\r\n } else {\r\n // In 1.2, lesson_status hold both complete/incomplete and pass/fail.\r\n // So if we've already used it for pass/fail, we don't want to\r\n // overwrite with 'completed'\r\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\r\n var canSetValue = !!dataModel;\r\n if (dataModalID === scormConstants.dataModelID.cmiCompletionStatus) {\r\n var lessonStatus = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\r\n if (dmeValue !== scormConstants.status.passed && dmeValue !== scormConstants.status.failed) {\r\n canSetValue = lessonStatus !== scormConstants.status.failed && lessonStatus !== scormConstants.status.passed;\r\n }\r\n }\r\n\r\n if (canSetValue) {\r\n result = scormApi.LMSSetValue(dataModel, dmeValue);\r\n }\r\n }\r\n break;\r\n case scormConstants.fn.commit:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.Commit('');\r\n } else {\r\n result = scormApi.LMSCommit('');\r\n }\r\n break;\r\n case scormConstants.fn.getLastError:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.GetLastError();\r\n } else {\r\n result = scormApi.LMSGetLastError();\r\n }\r\n break;\r\n case scormConstants.fn.getErrorString:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.GetErrorString(window.errCode);\r\n } else {\r\n result = scormApi.LMSGetErrorString(window.errCode);\r\n }\r\n break;\r\n case scormConstants.fn.getDiagnostic:\r\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\r\n result = scormApi.GetDiagnostic(window.error);\r\n } else {\r\n result = scormApi.LMSGetDiagnostic(window.errorCode);\r\n }\r\n break;\r\n }\r\n return result;\r\n }\r\n };\r\n\r\n var loadScormManifest = function() {\r\n return $.ajax({\r\n type: 'GET',\r\n url: SCORM_MANIFEST_FILE_NAME,\r\n dataType: 'text'\r\n });\r\n };\r\n\r\n var getScormManifestDoc = function() {\r\n var defer = Q.defer();\r\n\r\n if (scormManifestDocString === null) {\r\n loadScormManifest().done(function(data) {\r\n scormManifestDocString = data;\r\n defer.resolve(scormManifestDocString);\r\n }).fail(function() {\r\n defer.reject();\r\n });\r\n return defer.promise;\r\n }\r\n\r\n return Q(scormManifestDocString);\r\n };\r\n\r\n var getScormVersionFromManifestDoc = function() {\r\n return getScormManifestDoc().then(function(manifestDocAsString) {\r\n // manifest doc will contain a specific string only with SCORM version 1.2 produced with Camtasia\r\n if (manifestDocAsString.indexOf(CAMTASIA_SCORM_1_2_MANIFEST_STRING) !== -1) {\r\n return scormConstants.versions.SCORM_1_2;\r\n }\r\n\r\n return scormConstants.versions.SCORM_2004;\r\n });\r\n };\r\n\r\n var getScormApiOnWindow = function(windowRef) {\r\n // scorm 1.2 and 2004 api are defined on window\r\n if (windowRef.API && windowRef.API_1484_11) {\r\n return getScormVersionFromManifestDoc().then(function(scormApiVersion) {\r\n apiVersion = scormApiVersion;\r\n if (scormApiVersion === scormConstants.versions.SCORM_1_2) {\r\n return windowRef.API;\r\n }\r\n return windowRef.API_1484_11;\r\n });\r\n // look for scorm 1.2 api\r\n } else if (windowRef.API) {\r\n apiVersion = scormConstants.versions.SCORM_1_2;\r\n return Q(windowRef.API);\r\n // look for scorm 2004 api\r\n } else if (windowRef.API_1484_11) {\r\n apiVersion = scormConstants.versions.SCORM_2004;\r\n return Q(windowRef.API_1484_11);\r\n }\r\n return Q.reject();\r\n };\r\n\r\n /**\r\n * Searches all the parents of a given window until it finds an object named \"API_1484_11\" or \"API\".\r\n * If an object of that name is found, a reference to it is returned. Otherwise, this function returns null.\r\n * @function findAPI\r\n * @param {window} win - Window object\r\n * @return {object} - If the API object is found, it's returned, otherwise null is returned\r\n */\r\n var findAPI = function(win) {\r\n var findAPITries = 0;\r\n\r\n // Search each parent window until we find the API, encounter a window with no parent / the\r\n // same as the current window, or have reached our MAX_PARENTS_TO_SEARCH to search threshold\r\n while (!win.API && !win.API_1484_11 && win.parent !== win && findAPITries <= MAX_PARENTS_TO_SEARCH) {\r\n findAPITries++;\r\n win = win.parent;\r\n }\r\n\r\n return getScormApiOnWindow(win);\r\n };\r\n\r\n var lookForApiOnParentWindow = function() {\r\n if (window.parent !== window) {\r\n return findAPI(window.parent);\r\n }\r\n return Q.reject();\r\n };\r\n\r\n var lookForApiOnWindowTopOpener = function() {\r\n if (window.top.opener !== null) {\r\n return findAPI(window.top.opener);\r\n }\r\n return Q.reject();\r\n };\r\n\r\n /**\r\n * This function looks for an object named API, first in the current window's\r\n * frame hierarchy and then, if necessary, in the current window's opener window\r\n * hierarchy (if there is an opener window).\r\n * @function getAPI\r\n * @return {Promise} - A Promise that will resolve with API object if found or promise is rejected.\r\n */\r\n var getAPI = function() {\r\n return lookForApiOnParentWindow().catch(lookForApiOnWindowTopOpener);\r\n };\r\n\r\n /**\r\n * Returns the handle to API object if it was previously set, otherwise it returns null\r\n * @function getAPIHandle\r\n * @return {Promise} - A Promise that will resolve with the available SCORM api.\r\n */\r\n var getAPIHandle = function() {\r\n if (noAPIFound) {\r\n return Q.reject();\r\n }\r\n\r\n if (!scormApi) {\r\n return getAPI();\r\n }\r\n return Q(scormApi);\r\n };\r\n\r\n /**\r\n * Initialize SCORM module\r\n * @function init\r\n * @return {Promise} - A Promise that will resolve with the state of initialize.\r\n */\r\n var init = function() {\r\n return getAPIHandle().then(function(api) {\r\n scormApi = api;\r\n return apiCall(scormConstants.fn.initialize);\r\n }).catch(function() {\r\n var messageAlert = localizationStrings.strings.scormApiNotFoundMessage;\r\n window.alert(messageAlert); // eslint-disable-line\r\n noAPIFound = true;\r\n return 'false';\r\n });\r\n };\r\n\r\n return Object.defineProperties({\r\n init: init,\r\n apiCall: apiCall\r\n }, {\r\n apiVersion: {\r\n get: function() {\r\n return apiVersion;\r\n }\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Factory method that returns a new Scorm Api Wrapper object.\r\n * @function create\r\n * @memberof TSC.ScormApiWrapper\r\n * @static\r\n * @return new ScormApiWrapper instance\r\n */\r\n return {\r\n create: ScormApiWrapper\r\n };\r\n});\r\n","(function(window, scormDataModelFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ScormDataModel = scormDataModelFactory(window.JSON, namespace.scormConstants);\r\n})(this, function(JSON, scormConstants) {\r\n 'use strict';\r\n\r\n var V1_SUSPENDED_DATA_KEY = 'tscsp1';\r\n var V2_SUSPENDED_DATA_KEY = 'tscsp2';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class ScormDataModel\r\n * @classdesc Data modal for smart player suspended scorm data\r\n */\r\n var ScormDataModel = function() {\r\n var _percentageComplete = 0;\r\n var _quizModelSnapshot = '';\r\n var _videoAnalyticsSnapshot = '';\r\n var _videoTimeInSecondsSnapshot = 0;\r\n var _videoTimeInSeconds = 0;\r\n var _completionStatus = scormConstants.status.notAttempted;\r\n var _passingStatus = scormConstants.status.unknown;\r\n\r\n /**\r\n * @methodOf TSC.ScormDataModel\r\n * @method parseSuspendedDataString\r\n * @param {String} suspendedDataString - string containing suspended scorm data\r\n */\r\n var parseSuspendedDataString = function(suspendedDataString) {\r\n if (!suspendedDataString) {\r\n return;\r\n }\r\n\r\n try {\r\n var suspendedData = JSON.parse(suspendedDataString);\r\n if (suspendedData[V1_SUSPENDED_DATA_KEY]) {\r\n _percentageComplete = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].pc);\r\n _videoAnalyticsSnapshot = suspendedData[V1_SUSPENDED_DATA_KEY].vas;\r\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].cvt);\r\n } else if (suspendedData[V2_SUSPENDED_DATA_KEY]) {\r\n _percentageComplete = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].pc);\r\n _videoAnalyticsSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].vas;\r\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].cvt);\r\n _quizModelSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].qs;\r\n }\r\n } catch(e) {} // eslint-disable-line\r\n };\r\n\r\n /**\r\n * @methodOf TSC.ScormDataModel\r\n * @method getSuspendedDataString\r\n * Return string of suspended data\r\n * @returns {String} string containing suspended scorm data\r\n */\r\n var getSuspendedDataString = function() {\r\n var suspendedData = {};\r\n suspendedData[V2_SUSPENDED_DATA_KEY] = {\r\n pc: _percentageComplete,\r\n vas: _videoAnalyticsSnapshot,\r\n cvt: _videoTimeInSeconds,\r\n qs: _quizModelSnapshot\r\n };\r\n return JSON.stringify(suspendedData);\r\n };\r\n\r\n return Object.defineProperties(\r\n {\r\n parseSuspendedDataString: parseSuspendedDataString,\r\n getSuspendedDataString: getSuspendedDataString\r\n },\r\n {\r\n percentageComplete: {\r\n get: function() {\r\n return _percentageComplete;\r\n },\r\n set: function(percentageComplete) {\r\n _percentageComplete = percentageComplete;\r\n }\r\n },\r\n quizModelSnapshot: {\r\n get: function() {\r\n return _quizModelSnapshot;\r\n },\r\n set: function(quizModelSnapshot) {\r\n _quizModelSnapshot = quizModelSnapshot;\r\n }\r\n },\r\n videoAnalyticsSnapshot: {\r\n get: function() {\r\n return _videoAnalyticsSnapshot;\r\n },\r\n set: function(snapshot) {\r\n _videoAnalyticsSnapshot = snapshot;\r\n }\r\n },\r\n videoTimeInSecondsSnapshot: {\r\n get: function() {\r\n return _videoTimeInSecondsSnapshot;\r\n }\r\n },\r\n videoTimeInSeconds: {\r\n get: function() {\r\n return _videoTimeInSeconds;\r\n },\r\n set: function(timeInSeconds) {\r\n _videoTimeInSeconds = timeInSeconds;\r\n }\r\n },\r\n completionStatus: {\r\n get: function() {\r\n return _completionStatus;\r\n },\r\n set: function(completionStatus) {\r\n _completionStatus = completionStatus;\r\n }\r\n },\r\n passingStatus: {\r\n get: function() {\r\n return _passingStatus;\r\n },\r\n set: function(passingStatus) {\r\n _passingStatus = passingStatus;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: ScormDataModel\r\n };\r\n});\r\n","(function(window, scormControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.scormController = scormControllerFactory(window, namespace.scormConstants, namespace.ScormDataModel, namespace.ScormApiWrapper, namespace.videoAnalytics);\r\n})(window, function(window, scormConstants, ScormDataModel, ScormApiWrapper, videoAnalytics) {\r\n 'use strict';\r\n\r\n var DEFAULT_PASSING_SCORE = 80;\r\n var DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE = 1;\r\n var REPORT_INCREMENT = 0.025;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class scormController\r\n * @static\r\n * @classdesc Scorm Controller\r\n */\r\n var scormController = function() {\r\n var _minimumScoreToPass = DEFAULT_PASSING_SCORE;\r\n var _minimumViewPercentageToCompleteLesson = DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE;\r\n var _scormApiWrapper;\r\n var _isDisposed;\r\n var _initialized;\r\n var _scormModel;\r\n var _previousWriteVideoTime;\r\n var _quizModel = null;\r\n\r\n var initializeInternalState = function() {\r\n _scormApiWrapper = ScormApiWrapper.create();\r\n _isDisposed = false;\r\n _initialized = false;\r\n _scormModel = ScormDataModel.create();\r\n _previousWriteVideoTime = 0;\r\n };\r\n\r\n /**\r\n * Submit percentage of video watched to SCORM api\r\n * @function submitVideoWatchedPercentage\r\n * @memberof TSC.scormController\r\n * @param {Number} percentageWatched - Percentage of video watched from 0 - 1\r\n * @param {Number} timeInSeconds - Current time of video in seconds\r\n */\r\n var submitVideoWatchedPercentage = function(percentageWatched, timeInSeconds) {\r\n // Note: the percentage reported via value reports how much was actually watched\r\n // and not the percentage of the timeline that the playhead is at.\r\n // So, for example, if you started up a video and then immediately seeked to\r\n // the 75% pt, the values reported here would still start from zero.\r\n _scormModel.percentageComplete = Math.max(0, Math.min(1, percentageWatched));\r\n _scormModel.videoTimeInSeconds = timeInSeconds;\r\n\r\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\r\n _scormModel.completionStatus = scormConstants.status.completed;\r\n }\r\n\r\n // This gets called a lot, so we don't want to update the LMS every time.\r\n // We'll arbitrarily choose 2.5% increments\r\n if (_scormModel.percentageComplete - _previousWriteVideoTime >= REPORT_INCREMENT) {\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiProgressMeasure, _scormModel.percentageComplete);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuspendData, getSuspendData());\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiLocation, _scormModel.videoTimeInSeconds);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, _scormModel.completionStatus);\r\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\r\n\r\n _previousWriteVideoTime = _scormModel.percentageComplete;\r\n }\r\n };\r\n\r\n /**\r\n * Submit a score to the SCORM api\r\n * @memberof TSC.scormController\r\n * @function submitScore\r\n * @param {Number} currentScore - Score to report to Scorm\r\n * @param {Boolean} allQuestionsAnswered - Are all questions answered\r\n */\r\n var submitScore = function(currentScore, allQuestionsAnswered) {\r\n var scoreNeededToPass = _minimumScoreToPass;\r\n\r\n if (!isNaN(currentScore)) {\r\n var scoreNeededMultiplier = null;\r\n var maxPassingScoreValue = null;\r\n var minScore = 0;\r\n var maxScore = 100;\r\n\r\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_2004) {\r\n scoreNeededMultiplier = 100;\r\n maxPassingScoreValue = 1;\r\n } else if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\r\n scoreNeededMultiplier = 1;\r\n maxPassingScoreValue = 100;\r\n }\r\n\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, minScore);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, maxScore);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, currentScore);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreScaled, currentScore / maxScore);\r\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\r\n\r\n // lms defined mastery level will take precedence over sco defined mastery level\r\n var lmsPassingScore = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiScaledPassingScore);\r\n if (lmsPassingScore !== null && lmsPassingScore !== '' && lmsPassingScore >= 0 && lmsPassingScore <= maxPassingScoreValue) {\r\n scoreNeededToPass = lmsPassingScore * scoreNeededMultiplier;\r\n }\r\n\r\n if (allQuestionsAnswered) {\r\n if (currentScore >= scoreNeededToPass) {\r\n _scormModel.passingStatus = scormConstants.status.passed;\r\n } else {\r\n _scormModel.passingStatus = scormConstants.status.failed;\r\n }\r\n } else {\r\n _scormModel.passingStatus = scormConstants.status.unknown;\r\n }\r\n }\r\n };\r\n\r\n var getSuspendedDataFromAPI = function() {\r\n var suspendedData = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiSuspendData);\r\n _scormModel.parseSuspendedDataString(suspendedData);\r\n };\r\n\r\n var init = function() {\r\n initializeInternalState();\r\n\r\n return _scormApiWrapper.init().then(function(apiResult) {\r\n if (apiResult === 'false') {\r\n window.alert('Failed to initialize communications with the LMS!'); // eslint-disable-line\r\n return;\r\n }\r\n\r\n getSuspendedDataFromAPI();\r\n\r\n window.onbeforeunload = pageUnload;\r\n\r\n _scormModel.completionStatus = scormConstants.status.incomplete;\r\n _initialized = true;\r\n });\r\n };\r\n\r\n var getSuspendData = function() {\r\n if (_quizModel) {\r\n _scormModel.quizModelSnapshot = _quizModel.getSnapShot();\r\n }\r\n _scormModel.videoAnalyticsSnapshot = videoAnalytics.getVideoSegmentSnapShot();\r\n return _scormModel.getSuspendedDataString();\r\n };\r\n\r\n var dispose = function() {\r\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\r\n _scormModel.completionStatus = scormConstants.status.completed;\r\n }\r\n\r\n if (!_isDisposed) {\r\n var timeInSeconds = videoAnalytics.getCurrentPlayTime();\r\n\r\n var scoExitValue = scormConstants.exitStates.complete;\r\n var scoCompletionStatusValue = _scormModel.completionStatus;\r\n var scoSuccessStatusValue = _scormModel.passingStatus;\r\n\r\n if (_scormModel.passingStatus === scormConstants.status.unknown) {\r\n // SCORM 1.2 when video has quiz and not answered all questions complete status will be 'incomplete'\r\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && _quizModel !== null) {\r\n scoCompletionStatusValue = scormConstants.status.incomplete;\r\n }\r\n scoExitValue = scormConstants.exitStates.suspend;\r\n }\r\n\r\n // SCORM 1.2 completionStatus value can be 'incomplete', 'passed' or 'failed'\r\n // SCORM 1.2 does not have a key to store an independent success status.\r\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && _scormModel.passingStatus !== scormConstants.status.unknown && scoCompletionStatusValue === scormConstants.status.completed) {\r\n scoCompletionStatusValue = _scormModel.passingStatus;\r\n scoSuccessStatusValue = '';\r\n }\r\n\r\n var suspendedData = scoExitValue === scormConstants.exitStates.suspend ? getSuspendData() : '';\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiExit, scoExitValue);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuspendData, suspendedData);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiProgressMeasure, _scormModel.percentageComplete);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiLocation, timeInSeconds);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuccessStatus, scoSuccessStatusValue);\r\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scoCompletionStatusValue);\r\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\r\n _initialized = false;\r\n _isDisposed = true;\r\n }\r\n };\r\n\r\n var pageUnload = function() {\r\n window.onbeforeunload = null;\r\n dispose();\r\n _scormApiWrapper.apiCall(scormConstants.fn.terminate);\r\n };\r\n\r\n return Object.defineProperties({\r\n init: init,\r\n submitVideoWatchedPercentage: submitVideoWatchedPercentage,\r\n submitScore: submitScore\r\n }, {\r\n initialized: {\r\n get: function() {\r\n return _initialized;\r\n }\r\n },\r\n initialPercentageComplete: {\r\n get: function() {\r\n return _scormModel.percentageComplete;\r\n }\r\n },\r\n initialVideoAnalyticsSnapshot: {\r\n get: function() {\r\n return _scormModel.videoAnalyticsSnapshot;\r\n }\r\n },\r\n initialQuizModelSnapshot: {\r\n get: function() {\r\n return _scormModel.quizModelSnapshot;\r\n }\r\n },\r\n initialVideoTimeInSeconds: {\r\n get: function() {\r\n return _scormModel.videoTimeInSecondsSnapshot;\r\n }\r\n },\r\n minScoreToPassLesson: {\r\n get: function() {\r\n return _minimumScoreToPass;\r\n },\r\n set: function(minimumScoreToPass) {\r\n _minimumScoreToPass = minimumScoreToPass;\r\n }\r\n },\r\n minViewPercentageToCompleteLesson: {\r\n get: function() {\r\n return _minimumViewPercentageToCompleteLesson;\r\n },\r\n set: function(minimumViewPercentageToCompleteLesson) {\r\n _minimumViewPercentageToCompleteLesson = minimumViewPercentageToCompleteLesson;\r\n }\r\n },\r\n quizModel: {\r\n get: function() {\r\n return _quizModel;\r\n },\r\n set: function(quizModel) {\r\n _quizModel = quizModel;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return scormController();\r\n});\r\n","(function(window, quizControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.quizController = quizControllerFactory(\r\n window,\r\n window.$,\r\n window.Q,\r\n namespace.localizationStrings,\r\n namespace.deviceInfo,\r\n namespace.QuestionSetView,\r\n namespace.questionSetConfirmationView,\r\n namespace.QuizSetupView,\r\n namespace.reviewAnswersConfirmationView,\r\n namespace.quizService,\r\n namespace.questionType,\r\n namespace.playerConfiguration,\r\n namespace.progressTracker,\r\n namespace.questionGrader,\r\n namespace.fathomGrader,\r\n namespace.xmpGrader,\r\n namespace.questionSetReviewStatusView,\r\n namespace.events,\r\n namespace.urlService,\r\n namespace.hotkeyService,\r\n namespace.scormController,\r\n namespace.statusCodes,\r\n namespace.messageBarType,\r\n namespace.MessageBarView);\r\n})(this, function(window,\r\n $,\r\n Q,\r\n localizationStrings,\r\n deviceInfo,\r\n QuestionSetView,\r\n questionSetConfirmationView,\r\n QuizSetupView,\r\n reviewAnswersConfirmationView,\r\n quizService,\r\n questionType,\r\n playerConfiguration,\r\n progressTracker,\r\n questionGrader,\r\n fathomGrader,\r\n xmpGrader,\r\n questionSetReviewStatusView,\r\n events,\r\n urlService,\r\n hotkeyService,\r\n scormController,\r\n statusCodes,\r\n messageBarType,\r\n MessageBarView) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class quizController\r\n * @classdesc Quiz Controller manages questions state and views.\r\n */\r\n var _smartPlayerElement = null;\r\n var _quizSetupView = null;\r\n var _currentView = null;\r\n var _$container = null;\r\n var _quizModel = null;\r\n var _retrySubmissionMessageDisplayBar = null;\r\n\r\n var _numberQuestionSets = 0;\r\n var _currentQuestionSetIndex = 0;\r\n var _bottomPadding = 14;\r\n var _bottomOffset = 0;\r\n var _pointAt = null;\r\n var _quizEnabled = true;\r\n var _quizReady = false;\r\n var _enforceLinearAssessment = true;\r\n var _getVideoEl = null;\r\n var _mediaIsImage = false;\r\n var _lastStatusMessage = '';\r\n var _questionGrader;\r\n\r\n var submitToLMS = function() {\r\n if (_quizModel.useScorm) {\r\n // Built in Scorm support\r\n if (scormController.initialized) {\r\n scormController.submitScore(_quizModel.getScormScore(), _quizModel.isLastQuestionComplete());\r\n // Legacy Scorm support\r\n } else if (typeof window.userSubmitToLMS !== 'undefined') {\r\n window.userSubmitToLMS(_quizModel.getScormScore());\r\n }\r\n }\r\n };\r\n\r\n var completeQuestionSetEventDispatch = function() {\r\n _$container.trigger(events.Quizzing.Complete);\r\n hotkeyService.enableHotkeys();\r\n };\r\n\r\n var questionSetCompleteHandler = function() {\r\n _currentQuestionSetIndex = -1;\r\n _currentView.removeView(true);\r\n _currentView = null;\r\n completeQuestionSetEventDispatch();\r\n };\r\n\r\n var dispatchStatusEvent = function(ioMessage) {\r\n _lastStatusMessage = ioMessage;\r\n _$container.trigger(events.Quizzing.Status, {message: ioMessage});\r\n };\r\n\r\n var onContinueHandler = function() {\r\n _$container.off(events.Quizzing.CloseQuestionSetView, onContinueHandler);\r\n questionSetCompleteHandler();\r\n };\r\n\r\n var createQuestionSetFeedbackView = function(needOverlay) {\r\n var questionSetView = QuestionSetView.create(_$container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, true);\r\n _$container.on(events.Quizzing.CloseQuestionSetView, onContinueHandler);\r\n\r\n _currentView = questionSetView;\r\n\r\n updateViewBottom();\r\n\r\n if (_pointAt !== null) {\r\n _currentView.pointAt(_pointAt);\r\n }\r\n\r\n _currentView.showView();\r\n _currentView.updateViewPosition();\r\n };\r\n\r\n var continueVideoHandler = function() {\r\n $(reviewAnswersConfirmationView.getContinueControlRef()).unbind('click', continueVideoHandler);\r\n $(reviewAnswersConfirmationView.getReviewControlRef()).unbind('click', initQuestionSetFeedback);\r\n\r\n reviewAnswersConfirmationView.removeView(true);\r\n _currentView = null;\r\n completeQuestionSetEventDispatch();\r\n };\r\n\r\n var initQuestionSetFeedback = function() {\r\n $(reviewAnswersConfirmationView.getContinueControlRef()).unbind('click', continueVideoHandler);\r\n $(reviewAnswersConfirmationView.getReviewControlRef()).unbind('click', initQuestionSetFeedback);\r\n\r\n reviewAnswersConfirmationView.removeView(false);\r\n _currentView = null;\r\n createQuestionSetFeedbackView();\r\n };\r\n\r\n var createReviewAnswersConfirmationView = function() {\r\n var numberCorrectText = null;\r\n var percentCorrectText = null;\r\n var numberIncorrectText = null;\r\n var percentIncorrectText = null;\r\n var numberCorrect = 0;\r\n var numberIncorrect = 0;\r\n var numberUngradable = 0;\r\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\r\n\r\n if (possibleCorrect > 0) {\r\n numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\r\n numberIncorrect = possibleCorrect - numberCorrect;\r\n numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\r\n\r\n numberCorrectText = localizationStrings.strings.txtCorrect.replace('{{numberCorrect}}', numberCorrect);\r\n percentCorrectText = Math.round(100 * (numberCorrect / possibleCorrect)) + '%';\r\n numberIncorrectText = localizationStrings.strings.txtIncorrect.replace('{{numberIncorrect}}', numberIncorrect);\r\n percentIncorrectText = Math.round(100 * (numberIncorrect / possibleCorrect)) + '%';\r\n }\r\n\r\n if (numberUngradable === 1) {\r\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.strings.accessBtnWasNotGraded);\r\n } else {\r\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.strings.accessBtnWereNotGraded);\r\n }\r\n\r\n var markup = reviewAnswersConfirmationView.getViewMarkup(\r\n numberCorrectText,\r\n percentCorrectText,\r\n numberIncorrectText,\r\n percentIncorrectText,\r\n localizationStrings.strings.txtContinue,\r\n localizationStrings.strings.txtReviewAnswer);\r\n\r\n // add view template\r\n _$container.append(markup);\r\n\r\n _currentView = reviewAnswersConfirmationView;\r\n\r\n $(_currentView.getContinueControlRef()).bind('click', continueVideoHandler);\r\n $(_currentView.getReviewControlRef()).bind('click', initQuestionSetFeedback);\r\n\r\n // fade in view\r\n _currentView.showView();\r\n updateViewBottom();\r\n if (_pointAt !== null) {\r\n _currentView.pointAt(_pointAt);\r\n }\r\n };\r\n\r\n var createQuestionSetReviewStatusView = function() {\r\n var numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\r\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\r\n var numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\r\n\r\n questionSetReviewStatusView.setGradeableDetails(numberCorrect + localizationStrings.strings.accessBtnCorrectOutOf + possibleCorrect + localizationStrings.strings.accessBtnGradedQuestions);\r\n if (numberUngradable === 1) {\r\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.strings.accessBtnWasNotGraded);\r\n } else {\r\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.strings.accessBtnWereNotGraded);\r\n }\r\n\r\n var markup = questionSetReviewStatusView.getViewMarkup();\r\n\r\n _$container.append(markup);\r\n\r\n _currentView = questionSetReviewStatusView;\r\n\r\n $(questionSetReviewStatusView.getHideAnswersControlRef()).bind('click', hideQuizStatus);\r\n $(questionSetReviewStatusView.getShowAnswersControlRef()).bind('click', initFeedbackFromReviewStatusView);\r\n\r\n questionSetReviewStatusView.showView();\r\n _currentView.updateViewPosition();\r\n };\r\n\r\n var initFeedbackFromReviewStatusView = function() {\r\n $(questionSetReviewStatusView.getHideAnswersControlRef()).unbind('click', hideQuizStatus);\r\n $(questionSetReviewStatusView.getShowAnswersControlRef()).unbind('click', initFeedbackFromReviewStatusView);\r\n\r\n questionSetReviewStatusView.removeView(false);\r\n _currentView = null;\r\n createQuestionSetFeedbackView();\r\n };\r\n\r\n var hideQuizStatus = function() {\r\n _$container.trigger(events.Quizzing.HideQuiz);\r\n _currentView.hideView();\r\n };\r\n\r\n var onRationaleActionHandler = function(e, data) {\r\n if (e.type === events.Quizzing.RationaleActionLocation) {\r\n urlService.openUrl(data.location, '_blank');\r\n } else if (e.type === events.Quizzing.RationaleActionJumpToTime) {\r\n _$container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\r\n _$container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\r\n _$container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\r\n _$container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\r\n\r\n questionSetCompleteHandler();\r\n }\r\n };\r\n\r\n var onCloseQuestionSetView = function() {\r\n _$container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\r\n _$container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\r\n _$container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\r\n _$container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\r\n\r\n _$container.trigger(events.Quizzing.Submitted);\r\n\r\n if (_quizModel.questionSets[_currentQuestionSetIndex].displayFeedback) {\r\n if (_mediaIsImage) {\r\n _$container.trigger(events.Quizzing.TransitionImageQuizToAnswers);\r\n _currentView.removeView(true);\r\n createQuestionSetReviewStatusView();\r\n } else {\r\n _currentView.removeView(false);\r\n createReviewAnswersConfirmationView();\r\n }\r\n } else {\r\n questionSetCompleteHandler();\r\n }\r\n };\r\n\r\n var submitResults = function() {\r\n dispatchStatusEvent(localizationStrings.strings.txtSubmittingAnswers);\r\n\r\n if (_quizModel.useQuizApi) {\r\n var data = _quizModel.getApiDataForQuestionSet(_currentQuestionSetIndex);\r\n return quizService.submitQuestionSet(data).progress(function() {\r\n _$container.trigger(events.Quizzing.ShowSubmissionRetryMessage);\r\n }).then(function(results) {\r\n _$container.trigger(events.Quizzing.HideSubmissionRetryMessage);\r\n\r\n if (!_questionGrader.doesLocalGrading && results === undefined) {\r\n return Q.reject('Failed to get results for question set submission');\r\n }\r\n\r\n return results;\r\n });\r\n }\r\n return Q();\r\n };\r\n\r\n var gradeResults = function(results) {\r\n if (!_questionGrader.doesLocalGrading && results) {\r\n _questionGrader.processQuestionSetResults(_quizModel.questionSets[_currentQuestionSetIndex], results);\r\n } else {\r\n _questionGrader.gradeQuestionSet(_quizModel.questionSets[_currentQuestionSetIndex]);\r\n }\r\n return Q();\r\n };\r\n\r\n var onGradingComplete = function() {\r\n if (_quizModel.useScorm) {\r\n submitToLMS();\r\n }\r\n\r\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\r\n _$container.trigger(events.Quizzing.HideLoadingMessage);\r\n _currentView.showFeedbackForCurrentQuestion();\r\n } else {\r\n onCloseQuestionSetView();\r\n }\r\n };\r\n\r\n var onSubmit = function() {\r\n submitResults().then(gradeResults).then(onGradingComplete).catch(apiErrorEventHandler);\r\n };\r\n\r\n var createQuestionSetView = function(needOverlay) {\r\n var questionSetView = QuestionSetView.create(_$container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, false);\r\n\r\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\r\n _$container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\r\n _$container.on(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\r\n _$container.on(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\r\n _$container.on(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\r\n } else {\r\n _$container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\r\n }\r\n\r\n _currentView = questionSetView;\r\n\r\n updateViewBottom();\r\n\r\n if (_pointAt !== null) {\r\n _currentView.pointAt(_pointAt);\r\n }\r\n\r\n _currentView.showView();\r\n _currentView.updateViewPosition();\r\n };\r\n\r\n var reviewHandler = function() {\r\n _currentView.removeView(true);\r\n _currentView = null;\r\n\r\n _$container.trigger(events.Quizzing.Review);\r\n hotkeyService.enableHotkeys();\r\n };\r\n\r\n var onViewRemove = function() {\r\n if (_currentQuestionSetIndex < _numberQuestionSets) {\r\n createQuestionSetView(false);\r\n }\r\n };\r\n\r\n var confirmHandler = function() {\r\n _currentView.removeView();\r\n _currentView = null;\r\n onViewRemove();\r\n };\r\n\r\n var createConfirmView = function() {\r\n var reviewText;\r\n\r\n if (_enforceLinearAssessment) {\r\n reviewText = localizationStrings.strings.txtReview;\r\n } else {\r\n reviewText = localizationStrings.strings.txtContinue;\r\n }\r\n\r\n var markup = questionSetConfirmationView.getViewMarkup(reviewText, localizationStrings.strings.txtAnswerQuestion);\r\n _$container.append(markup);\r\n\r\n _currentView = questionSetConfirmationView;\r\n\r\n updateViewBottom();\r\n\r\n if (_quizModel.hideReplay === true) {\r\n $(questionSetConfirmationView.getReviewControlRef()).hide();\r\n }\r\n\r\n $(questionSetConfirmationView.getReviewControlRef()).bind('click', reviewHandler);\r\n $(questionSetConfirmationView.getConfirmControlRef()).bind('click', confirmHandler);\r\n\r\n questionSetConfirmationView.showView();\r\n questionSetConfirmationView.updateViewPosition();\r\n };\r\n\r\n var destroyQuizSetupView = function() {\r\n if (_quizSetupView) {\r\n _smartPlayerElement.off(events.Quizzing.BeginClicked, beginQuizHandler);\r\n _smartPlayerElement.off(events.Quizzing.SkipClicked, skipQuizHandler);\r\n _quizSetupView.destroy();\r\n if (_quizSetupView.$view) {\r\n _quizSetupView.$view.remove();\r\n }\r\n _quizSetupView = null;\r\n }\r\n };\r\n\r\n var beginQuizHandler = function(event, eventData) {\r\n event.preventDefault();\r\n\r\n destroyQuizSetupView();\r\n\r\n _$container.trigger(events.Quizzing.SubmittingInstance);\r\n\r\n if (_quizModel.useQuizApi) {\r\n startQuizApiInstance(eventData.firstName, eventData.lastName, eventData.email);\r\n }\r\n\r\n _$container.trigger(events.Quizzing.Begin);\r\n };\r\n\r\n var skipQuizHandler = function(e) {\r\n e.preventDefault();\r\n _quizEnabled = false;\r\n\r\n destroyQuizSetupView();\r\n\r\n _$container.trigger(events.Quizzing.Skip);\r\n };\r\n\r\n var createSetupView = function() {\r\n _quizSetupView = QuizSetupView.create(_$container, _smartPlayerElement);\r\n\r\n _smartPlayerElement.on(events.Quizzing.BeginClicked, beginQuizHandler);\r\n\r\n if (_quizModel.allowSkipQuiz) {\r\n _smartPlayerElement.on(events.Quizzing.SkipClicked, skipQuizHandler);\r\n } else {\r\n _quizSetupView.hideSkipButton();\r\n }\r\n };\r\n\r\n var updateViewBottom = function() {\r\n if (_currentView && _currentView.setBottomOffset) {\r\n _currentView.setBottomOffset(_bottomOffset);\r\n _currentView.updateViewPosition();\r\n }\r\n };\r\n\r\n var startQuizApiInstance = function(firstName, lastName, email) {\r\n if (_quizModel) {\r\n _$container.trigger(events.Quizzing.ShowQuizBar);\r\n _quizReady = true;\r\n _$container.trigger(events.Quizzing.Begin);\r\n\r\n return quizService.startQuizInstance(_quizModel, firstName, lastName, email, playerConfiguration).catch(function(data) {\r\n apiErrorEventHandler();\r\n return Q.reject(data);\r\n });\r\n }\r\n\r\n return Q();\r\n };\r\n\r\n var apiErrorEventHandler = function(response) {\r\n _quizEnabled = false;\r\n _$container.trigger(events.Quizzing.HideLoadingMessage);\r\n if (response && response.status === statusCodes.UnprocessableEntity) {\r\n _$container.trigger(events.Quizzing.QuizIsOutOfDate);\r\n } else {\r\n _$container.trigger(events.Quizzing.Error);\r\n }\r\n };\r\n\r\n var displaySetupView = function() {\r\n return _quizModel && _quizModel.quizID && _quizEnabled && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified();\r\n };\r\n\r\n var init = function(spElement, enforceLinearAssessment, videoFunc) {\r\n _smartPlayerElement = spElement;\r\n _enforceLinearAssessment = enforceLinearAssessment;\r\n _getVideoEl = videoFunc;\r\n\r\n if (_quizModel.useQuizApi) {\r\n if (_quizModel.requireUserId && !playerConfiguration.getIsUserIdentified() && !playerConfiguration.ignoreQuizQuestions) {\r\n createSetupView();\r\n } else {\r\n startQuizApiInstance();\r\n }\r\n } else {\r\n _quizReady = true;\r\n _$container.trigger(events.Quizzing.Begin);\r\n }\r\n };\r\n\r\n var simpleInit = function() {\r\n if (!displaySetupView()) {\r\n startQuizApiInstance();\r\n }\r\n };\r\n\r\n var setSmartplayerElement = function($spElement) {\r\n _smartPlayerElement = $spElement;\r\n };\r\n\r\n var gatherSetupIfNeeded = function() {\r\n if (displaySetupView()) {\r\n createSetupView();\r\n }\r\n };\r\n\r\n var getLastStatusMessage = function() {\r\n return _lastStatusMessage;\r\n };\r\n\r\n var removeSubmissionRetryMessage = function() {\r\n if (_retrySubmissionMessageDisplayBar === null) {\r\n return;\r\n }\r\n _retrySubmissionMessageDisplayBar.remove();\r\n _retrySubmissionMessageDisplayBar = null;\r\n };\r\n\r\n var showSubmissionRetryMessage = function() {\r\n if (_retrySubmissionMessageDisplayBar !== null) {\r\n return;\r\n }\r\n _retrySubmissionMessageDisplayBar = MessageBarView.create(_$container, messageBarType.info, localizationStrings.strings.txtQuizErrorMessage);\r\n };\r\n\r\n var showQuizIsOutOfDateMessage = function() {\r\n MessageBarView.create(_$container, messageBarType.warning, localizationStrings.strings.txtQuizOutOfDateMessage, localizationStrings.strings.txtQuizOutOfDateRefreshButtonText, function() {\r\n window.location.reload();\r\n });\r\n };\r\n\r\n var setViewContainer = function($container) {\r\n _$container = $container;\r\n _$container.on(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\r\n _$container.on(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\r\n _$container.on(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\r\n };\r\n\r\n var displayNextQuestionSet = function() {\r\n if (_currentQuestionSetIndex < _numberQuestionSets) {\r\n createQuestionSetView(true);\r\n }\r\n };\r\n\r\n var hasMultipleQuestionSets = function() {\r\n return _numberQuestionSets > 1;\r\n };\r\n\r\n var findQuestionSet = function(time) {\r\n var activeQuestionSetId = -1;\r\n var markerTime = -1;\r\n\r\n if (!playerConfiguration.ignoreQuizQuestions) {\r\n var markers = _quizModel.questionSetMarkerTimes;\r\n var numberMarkers = markers.length;\r\n\r\n for (var i = 0; i < numberMarkers; i++) {\r\n if (!markers[i].completed && (_enforceLinearAssessment && markers[i].startTime <= time && !markers[i].canSeekPast || markers[i].rangeStart <= time && time <= markers[i].rangeEnd)) {\r\n activeQuestionSetId = markers[i].questionSetIndex;\r\n markerTime = markers[i].startTime;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return {id: activeQuestionSetId, markerTime: markerTime};\r\n };\r\n\r\n var findPrevMarkerTimeForMarker = function(questionSetIndex) {\r\n return _quizModel.getPreviousMarkerTimeForMarker(questionSetIndex);\r\n };\r\n\r\n var updatePercentWatchedForQuestionSet = function(questionSetId, percentWatched) {\r\n _quizModel.questionSets[questionSetId].percentOfVideoSegmentWatched = percentWatched;\r\n };\r\n\r\n var displayConfirm = function(questionSetIndex) {\r\n if (!_currentView) {\r\n _currentQuestionSetIndex = questionSetIndex;\r\n\r\n hotkeyService.disableHotkeys();\r\n\r\n // no need to display confirm view if we are in the beginning of the video and force linear is on or if we are in the middle of a rationale quiz\r\n if (_enforceLinearAssessment && _quizModel.questionSets[questionSetIndex].startTime <= _quizModel.minMarkerTimeDiff || _quizModel.questionSets[questionSetIndex].inProgress) {\r\n createQuestionSetView(true);\r\n } else {\r\n createConfirmView();\r\n }\r\n }\r\n };\r\n\r\n var showQuiz = function() {\r\n if (_currentView === null) {\r\n createQuestionSetView(true);\r\n } else {\r\n _currentView.showView();\r\n }\r\n };\r\n\r\n var hideQuiz = function() {\r\n _currentView.hideView();\r\n };\r\n\r\n var pointViewAt = function(xPos) {\r\n _pointAt = xPos;\r\n if (_currentView) {\r\n if (_currentView.pointAt) {\r\n _currentView.pointAt(_pointAt);\r\n }\r\n updateViewBottom();\r\n }\r\n };\r\n\r\n var setViewControlBarOffset = function(bottom) {\r\n _bottomOffset = bottom + _bottomPadding;\r\n updateViewBottom();\r\n };\r\n\r\n var setQuestionGrader = function(grader) {\r\n switch (grader) {\r\n case questionGrader.FATHOM:\r\n {\r\n _questionGrader = fathomGrader;\r\n break;\r\n }\r\n case questionGrader.XMP:\r\n {\r\n _questionGrader = xmpGrader;\r\n break;\r\n }\r\n default:\r\n throw new Error('Grader type not recognized');\r\n }\r\n };\r\n\r\n var startTrackingProgress = function() {\r\n return quizService.getAnalyticsRate().then(function(rate) {\r\n progressTracker.start(_getVideoEl(), rate);\r\n return Q();\r\n });\r\n };\r\n\r\n var forceProgressUpdate = function(sampleRateInMilliseconds, segmentsCompleted) {\r\n return quizService.sendProgress(sampleRateInMilliseconds, segmentsCompleted);\r\n };\r\n\r\n var reset = function() {\r\n destroyQuizSetupView();\r\n\r\n if (_currentView) {\r\n _currentView.removeView(true);\r\n _currentView = null;\r\n }\r\n\r\n if (_$container) {\r\n _$container.off(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\r\n _$container.off(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\r\n _$container.off(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\r\n _$container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\r\n _$container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\r\n _$container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\r\n _$container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\r\n _$container = null;\r\n }\r\n\r\n removeSubmissionRetryMessage();\r\n\r\n _smartPlayerElement = null;\r\n _quizModel = null;\r\n\r\n _numberQuestionSets = 0;\r\n _currentQuestionSetIndex = 0;\r\n _bottomPadding = 14;\r\n _bottomOffset = 0;\r\n _pointAt = null;\r\n _quizEnabled = true;\r\n _quizReady = false;\r\n _enforceLinearAssessment = true;\r\n _getVideoEl = null;\r\n _mediaIsImage = false;\r\n _lastStatusMessage = '';\r\n _questionGrader = null;\r\n };\r\n\r\n var populateQuizModel = function(suspendedQuizData) {\r\n _quizModel.populateQuiz(suspendedQuizData);\r\n };\r\n\r\n return Object.defineProperties({\r\n reset: reset,\r\n init: init,\r\n simpleInit: simpleInit,\r\n hasMultipleQuestionSets: hasMultipleQuestionSets,\r\n gatherSetupIfNeeded: gatherSetupIfNeeded,\r\n setSmartplayerElement: setSmartplayerElement,\r\n getLastStatusMessage: getLastStatusMessage,\r\n displayNextQuestionSet: displayNextQuestionSet,\r\n findQuestionSet: findQuestionSet,\r\n findPrevMarkerTimeForMarker: findPrevMarkerTimeForMarker,\r\n updatePercentWatchedForQuestionSet: updatePercentWatchedForQuestionSet,\r\n setViewContainer: setViewContainer,\r\n displayConfirm: displayConfirm,\r\n showQuiz: showQuiz,\r\n hideQuiz: hideQuiz,\r\n pointViewAt: pointViewAt,\r\n setViewControlBarOffset: setViewControlBarOffset,\r\n startTrackingProgress: startTrackingProgress,\r\n setQuestionGrader: setQuestionGrader,\r\n forceProgressUpdate: forceProgressUpdate,\r\n populateQuizModel: populateQuizModel\r\n }, {\r\n quizEnabled: {\r\n get: function() {\r\n return _quizEnabled;\r\n },\r\n set: function(value) {\r\n _quizEnabled = value;\r\n }\r\n },\r\n quizReady: {\r\n get: function() {\r\n return _quizReady;\r\n }\r\n },\r\n hasQuiz: {\r\n get: function() {\r\n return _quizModel && _quizModel.quizID;\r\n }\r\n },\r\n viewIsOpen: {\r\n get: function() {\r\n return _currentView !== null;\r\n }\r\n },\r\n mediaIsImage: {\r\n set: function(mediaIsImage) {\r\n _mediaIsImage = mediaIsImage;\r\n }\r\n },\r\n quizModel: {\r\n get: function() {\r\n return _quizModel;\r\n },\r\n set: function(quizModel) {\r\n _quizModel = quizModel;\r\n _numberQuestionSets = _quizModel.numberQuestionSets;\r\n scormController.quizModel = _quizModel;\r\n }\r\n }\r\n });\r\n});\r\n","(function(window, mediaFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.Media = mediaFactory(window);\r\n})(this, function() {\r\n 'use strict';\r\n \r\n var Media = function(media, type, mimeType, uri) {\r\n var _media = media;\r\n var _type = type;\r\n var _mimeType = mimeType;\r\n var _uri = uri;\r\n\r\n return Object.defineProperties({}, {\r\n media: {\r\n get: function() {\r\n return _media;\r\n }\r\n },\r\n type: {\r\n get: function() {\r\n return _type;\r\n }\r\n },\r\n mimeType: {\r\n get: function() {\r\n return _mimeType;\r\n }\r\n },\r\n uri: {\r\n get: function() {\r\n return _uri;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: Media\r\n };\r\n});\r\n","(function(window, mediaListParserFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.MediaListParser = mediaListParserFactory(\r\n window,\r\n window.$,\r\n window.Q,\r\n namespace.playerConfiguration,\r\n namespace.mediaType,\r\n namespace.mediaMimeType,\r\n namespace.Media,\r\n namespace.MediaLibModel);\r\n})(this, function(window, $, Q, playerConfiguration, mediaType, mediaMimeType, Media, MediaLibModel) {\r\n 'use strict';\r\n\r\n var PLAYLIST_EXT = 'm3u';\r\n var TSCPROJ_EXT = 'tscproj';\r\n var TSCPROJ_EXT_JSON = 'json';\r\n var URN_PREFIX = 'urn:';\r\n\r\n var getFileExtension = function(fileName) {\r\n return fileName.split('#')[0].split('?')[0].split('.').pop().toLowerCase();\r\n };\r\n\r\n var findMediaMimeTypeByRequestHeader = function(mediaSource) {\r\n var defer = Q.defer();\r\n $.ajax({\r\n type: 'HEAD',\r\n url: mediaSource\r\n }).done(function(data, textStatus, jqXHR) {\r\n var contentType = jqXHR.getResponseHeader('content-type') || mediaMimeType.UNKNOWN;\r\n defer.resolve(contentType);\r\n }).fail(function() {\r\n defer.resolve(mediaMimeType.UNKNOWN);\r\n });\r\n return defer.promise;\r\n };\r\n\r\n var inferMimeTypeFromFileExtension = function(ext) {\r\n switch (ext) {\r\n case TSCPROJ_EXT:\r\n case TSCPROJ_EXT_JSON:\r\n return mediaMimeType.JSON;\r\n case PLAYLIST_EXT:\r\n return mediaMimeType.M3U;\r\n case 'mp4':\r\n case 'm4v':\r\n case 'mov':\r\n return mediaMimeType.MP4;\r\n case 'webm':\r\n return mediaMimeType.WEBM;\r\n case 'ogv':\r\n return mediaMimeType.OGV;\r\n case 'jpg':\r\n case 'jpeg':\r\n return mediaMimeType.JPEG;\r\n case 'png':\r\n return mediaMimeType.PNG;\r\n case 'gif':\r\n return mediaMimeType.GIF;\r\n default:\r\n return mediaMimeType.UNKNOWN;\r\n }\r\n };\r\n\r\n var mediaTypeFromMimeType = function(mimeType) {\r\n switch (mimeType) {\r\n case mediaMimeType.M3U:\r\n return mediaType.PLAYLIST;\r\n case mediaMimeType.JSON:\r\n return mediaType.TSCPROJ;\r\n case mediaMimeType.MP4:\r\n return mediaType.MP4;\r\n case mediaMimeType.WEBM:\r\n return mediaType.WEBM;\r\n case mediaMimeType.OGV:\r\n return mediaType.OGG;\r\n case mediaMimeType.PNG:\r\n return mediaType.PNG;\r\n case mediaMimeType.GIF:\r\n return mediaType.GIF;\r\n case mediaMimeType.JPEG:\r\n return mediaType.JPG;\r\n default:\r\n return mediaType.UNKNOWN;\r\n }\r\n };\r\n\r\n var loadPlaylistFile = function(playlistSrc) {\r\n return $.ajax({\r\n type: 'GET',\r\n url: playlistSrc,\r\n isLocal: true,\r\n dataType: 'text'\r\n });\r\n };\r\n\r\n /**\r\n * @memberof TSC\r\n * @class MediaListParser\r\n * @classdesc Parse media sources.\r\n * @param {Array} mediaSources - List of media source strings or objects.\r\n * @return new MediaListParser instance\r\n */\r\n var MediaListParser = function(mediaSources) {\r\n var _mediaList = [];\r\n var _ready = null;\r\n var _mediaProcessedPromises = [];\r\n\r\n var parseM3UData = function(playlistData) {\r\n var playListMediaPromises = [];\r\n var playListMedia = [];\r\n var defer = Q.defer();\r\n\r\n var playlistMediaUrls = playlistData.split(/\\r?\\n/g).filter(function(value) {\r\n return value !== '';\r\n });\r\n\r\n playlistMediaUrls.forEach(function(mediaSrc, index) {\r\n playListMediaPromises.push(parseMediaUrl(mediaSrc, playListMedia, index));\r\n });\r\n\r\n Q.all(playListMediaPromises).then(function() {\r\n defer.resolve(playListMedia);\r\n }).catch(function() {\r\n defer.reject('Failed to create media objects for the playlist sources.');\r\n });\r\n\r\n return defer.promise;\r\n };\r\n\r\n var createMediaFromFromTscProjectJson = function(mediaSource) {\r\n var mediaLibModel = MediaLibModel.create(mediaSource);\r\n return mediaLibModel.ready.then(function() {\r\n return Media.create(mediaLibModel, mediaType.TSCPROJ, mediaMimeType.JSON, mediaSource);\r\n });\r\n };\r\n\r\n var parseUrnSource = function(urnMediaSource, index) {\r\n var webConnector = playerConfiguration.getWebConnector();\r\n if (!webConnector) {\r\n return Q.reject('Media List: webconnector player configuration is not available and is required to load a URN uri');\r\n }\r\n\r\n var hasNoResolver = true;\r\n return webConnector.hasModuleByUrn(urnMediaSource, 'resolver').then(function(resolver) {\r\n hasNoResolver = false;\r\n return resolver.getContentType(urnMediaSource).then(function(contentType) {\r\n switch (contentType) {\r\n case mediaMimeType.JSON:\r\n return createMediaFromFromTscProjectJson(urnMediaSource);\r\n case mediaMimeType.MP4:\r\n case mediaMimeType.WEBM:\r\n case mediaMimeType.OGV:\r\n case mediaMimeType.PNG:\r\n case mediaMimeType.GIF:\r\n case mediaMimeType.JPEG:\r\n return resolver.getFileUrl(urnMediaSource).then(function(fileUrl) {\r\n return Media.create(fileUrl, mediaTypeFromMimeType(contentType), contentType, urnMediaSource);\r\n });\r\n default:\r\n return Q.reject('MediaListParser: Media Source (' + urnMediaSource + ') has unsupported contentType of (' + contentType + ')');\r\n }\r\n });\r\n }).then(function(media) {\r\n _mediaList[index] = media;\r\n return media;\r\n }).catch(function(e) {\r\n if (hasNoResolver) {\r\n return Q.reject('MediaListParser - no resolver found for urn(' + urnMediaSource + ')');\r\n }\r\n return Q.reject(e);\r\n });\r\n };\r\n\r\n var parseYouTubeMedia = function(youTubeMediaSource, index) {\r\n var media = Media.create(youTubeMediaSource, mediaType.YOUTUBE, mediaMimeType.UNKNOWN, youTubeMediaSource);\r\n _mediaList[index] = media;\r\n return Q(media);\r\n };\r\n\r\n var parsePlaylistSource = function(playlistMediaSource, index) {\r\n var defer = Q.defer();\r\n\r\n var jHxr = loadPlaylistFile(playlistMediaSource);\r\n jHxr.done(function(data) {\r\n parseM3UData(data).then(function(playlistMedia) {\r\n var media = Media.create(playlistMedia, mediaType.PLAYLIST, mediaMimeType.M3U, playlistMediaSource);\r\n _mediaList[index] = media;\r\n defer.resolve(media);\r\n }).catch(function() {\r\n defer.reject();\r\n });\r\n });\r\n jHxr.fail(function() {\r\n defer.reject('Failed to load the supplied playlist (' + playlistMediaSource + ')');\r\n });\r\n\r\n return defer.promise;\r\n };\r\n\r\n var parseMediaUrl = function(mediaSource, mediaList, index) {\r\n var defer = Q.defer();\r\n var media = null;\r\n\r\n if (playerConfiguration.getContentType()) {\r\n media = Media.create(mediaSource, mediaTypeFromMimeType(playerConfiguration.getContentType()), playerConfiguration.getContentType(), mediaSource);\r\n mediaList[index] = media;\r\n defer.resolve(media);\r\n } else {\r\n var inferredMimeType = inferMimeTypeFromFileExtension(getFileExtension(mediaSource));\r\n if (inferredMimeType === mediaMimeType.UNKNOWN) {\r\n findMediaMimeTypeByRequestHeader(mediaSource).then(function(mimeType) {\r\n if (mimeType !== mediaMimeType.UNKNOWN) {\r\n media = Media.create(mediaSource, mediaTypeFromMimeType(mimeType), mimeType, mediaSource);\r\n mediaList[index] = media;\r\n defer.resolve(media);\r\n } else {\r\n defer.reject('Could not determine the content type of media (' + mediaSource + ')');\r\n }\r\n });\r\n } else {\r\n media = Media.create(mediaSource, mediaTypeFromMimeType(inferredMimeType), inferredMimeType, mediaSource);\r\n mediaList[index] = media;\r\n defer.resolve(media);\r\n }\r\n }\r\n\r\n return defer.promise;\r\n };\r\n\r\n var parseMediaObject = function(mediaSource, index) {\r\n if (mediaSource.tscproj !== undefined) {\r\n return createMediaFromFromTscProjectJson(mediaSource).then(function(media) {\r\n _mediaList[index] = media;\r\n return media;\r\n });\r\n }\r\n return Q.reject('MediaListParser: unknown object passed in as media source.');\r\n };\r\n\r\n var parseTscProjectUrl = function(tscProjectSource, index) {\r\n return createMediaFromFromTscProjectJson(tscProjectSource).then(function(media) {\r\n _mediaList[index] = media;\r\n return media;\r\n });\r\n };\r\n\r\n var parseMedia = function(mediaSource, index) {\r\n if (typeof mediaSource === 'object') {\r\n return parseMediaObject(mediaSource, index);\r\n }\r\n\r\n var youtubeRegex = /youtu(?:\\.be|be\\.com)\\//;\r\n if (youtubeRegex.test(mediaSource)) {\r\n return parseYouTubeMedia(mediaSource, index);\r\n }\r\n\r\n if (mediaSource.indexOf(URN_PREFIX) === 0) {\r\n return parseUrnSource(mediaSource, index);\r\n }\r\n\r\n if (getFileExtension(mediaSource) === PLAYLIST_EXT) {\r\n return parsePlaylistSource(mediaSource, index);\r\n }\r\n\r\n if (getFileExtension(mediaSource) === TSCPROJ_EXT || getFileExtension(mediaSource) === TSCPROJ_EXT_JSON) {\r\n return parseTscProjectUrl(mediaSource, index);\r\n }\r\n\r\n return parseMediaUrl(mediaSource, _mediaList, index);\r\n };\r\n\r\n mediaSources.forEach(function(source, index) {\r\n _mediaProcessedPromises.push(parseMedia(source, index));\r\n });\r\n _ready = Q.all(_mediaProcessedPromises);\r\n\r\n return Object.defineProperties({}, {\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaListParser\r\n * @property {Array} ready - List of Media objects.\r\n */\r\n mediaList: {\r\n get: function() {\r\n return [].concat(_mediaList);\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaListParser\r\n * @property {Promise} ready - Promise that resolves when media sources has been parsed.\r\n */\r\n ready: {\r\n get: function() {\r\n return _ready;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new MediaListParser object.\r\n * @function create\r\n * @memberof TSC.MediaListParser\r\n * @static\r\n * @param {Array} mediaSources - List of media source strings or objects.\r\n * @return new MediaListParser instance\r\n */\r\n create: MediaListParser\r\n };\r\n});\r\n","(function(window, mediaListFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.MediaList = mediaListFactory(window, window.Q, namespace.MediaListParser, namespace.mediaType);\r\n})(this, function(window, Q, MediaListParser, mediaType) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class MediaList\r\n * @classdesc List of media\r\n * @param {Array} mediaSources - List of media source strings or objects.\r\n * @return new MediaList instance\r\n */\r\n var MediaList = function(mediaSources) {\r\n var _ready = Q.defer();\r\n var _mediaListParser;\r\n var _currentMediaIndex = 0;\r\n var _mediaList;\r\n\r\n _mediaListParser = MediaListParser.create(mediaSources);\r\n _mediaListParser.ready.then(function() {\r\n _mediaList = _mediaListParser.mediaList[0].type === mediaType.PLAYLIST ? _mediaListParser.mediaList[0].media : _mediaListParser.mediaList;\r\n _ready.resolve();\r\n }).catch(function() {\r\n _ready.reject();\r\n });\r\n\r\n var getMediaIndexByUri = function(uri) {\r\n var mediaIndex = -1;\r\n _mediaList.some(function(media, index) {\r\n if (media.uri === uri) {\r\n mediaIndex = index;\r\n }\r\n return media.uri === uri;\r\n });\r\n return mediaIndex;\r\n };\r\n\r\n var isMediaTypeAvailable = function(type) {\r\n return _mediaList.some(function(media) {\r\n return type === media.type;\r\n });\r\n };\r\n\r\n var setCurrentMediaIndex = function(mediaPosition) {\r\n if (typeof mediaPosition === 'string') {\r\n if (mediaPosition === 'next') {\r\n if (_currentMediaIndex < _mediaList.length - 1) {\r\n _currentMediaIndex++;\r\n }\r\n } else if (mediaPosition === 'previous') {\r\n if (_currentMediaIndex > 0) {\r\n _currentMediaIndex--;\r\n }\r\n }\r\n } else if (typeof mediaPosition === 'number') {\r\n if (mediaPosition >= 0 && mediaPosition < _mediaList.length) {\r\n _currentMediaIndex = mediaPosition;\r\n }\r\n }\r\n return _currentMediaIndex;\r\n };\r\n\r\n return Object.defineProperties({\r\n /**\r\n * Get the index of an uri in the media list.\r\n * @function isMediaTypeAvailable\r\n * @memberof TSC.MediaList\r\n * @param {String} uri - uri to search for.\r\n * @return {Number} index of uri or -1 if not found.\r\n */\r\n getMediaIndexByUri: getMediaIndexByUri,\r\n /**\r\n * Checks media list for supplied type and return true if found.\r\n * @function isMediaTypeAvailable\r\n * @memberof TSC.MediaList\r\n * @param {String} type - media type.\r\n * @return {Boolean} Is the type available.\r\n */\r\n isMediaTypeAvailable: isMediaTypeAvailable\r\n }, {\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Promise} ready - Promise that resolves when media list has been parsed.\r\n */\r\n ready: {\r\n get: function() {\r\n return _ready.promise;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {TSC.Media} currentMedia - Current Media object.\r\n */\r\n currentMedia: {\r\n get: function() {\r\n return _mediaList[_currentMediaIndex];\r\n }\r\n },\r\n /**\r\n * @public\r\n * @memberof TSC.MediaList\r\n * @property {Number} currentMediaIndex - Current index in the media list.\r\n */\r\n currentMediaIndex: {\r\n get: function() {\r\n return _currentMediaIndex;\r\n },\r\n set: setCurrentMediaIndex\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Array} mediaList - List of media objects.\r\n */\r\n mediaList: {\r\n get: function() {\r\n return _mediaList;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {String} currentMediaType - Current media object type.\r\n */\r\n currentMediaType: {\r\n get: function() {\r\n return _mediaList[_currentMediaIndex].type;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Boolean} onFirstMedia - Is the current index pointing to the first media element in the list.\r\n */\r\n onFirstMedia: {\r\n get: function() {\r\n return _currentMediaIndex === 0;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Boolean} onFirstMedia - Is the current index pointing to the last media element in the list.\r\n */\r\n onLastMedia: {\r\n get: function() {\r\n return _currentMediaIndex + 1 === _mediaList.length;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Boolean} hasImage - Is there an image in the media list.\r\n */\r\n hasImage: {\r\n get: function() {\r\n return _mediaList[0].type === mediaType.JPG ||\r\n _mediaList[0].type === mediaType.GIF ||\r\n _mediaList[0].type === mediaType.PNG;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Boolean} isPlaylist - Is the first media element a playlist.\r\n */\r\n isPlaylist: {\r\n get: function() {\r\n return _mediaListParser.mediaList[0].type === mediaType.PLAYLIST;\r\n }\r\n },\r\n /**\r\n * @public\r\n * @readonly\r\n * @memberof TSC.MediaList\r\n * @property {Boolean} isTscProj - Is the first media element a tsc project.\r\n */\r\n isTscProj: {\r\n get: function() {\r\n return _mediaList[0].type === mediaType.TSCPROJ;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new MediaList object.\r\n * @function create\r\n * @memberof TSC.MediaList\r\n * @static\r\n * @param {Array} mediaSources - List of media source strings or objects.\r\n * @return new MediaList instance\r\n */\r\n create: MediaList\r\n };\r\n});\r\n","(function(window, playerType, playerConfiguration, mediaType, deviceInfo) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.mediaPlayerController = (function() {\r\n var _currentPlayerType;\r\n\r\n var MIN_IE_VERSION = 9;\r\n\r\n var getPlayerType = function(mediaList) {\r\n var haveImage = mediaList.hasImage;\r\n var haveWebMAndCanPlay = mediaList.isMediaTypeAvailable(mediaType.WEBM) && deviceInfo.canPlayWebM();\r\n var haveMP4AndCanPlay = mediaList.isMediaTypeAvailable(mediaType.MP4) && deviceInfo.canPlayMP4();\r\n var haveOGGAndCanPlay = mediaList.isMediaTypeAvailable(mediaType.OGG) && deviceInfo.canPlayOgg();\r\n var haveYoutubeEmbedUrl = mediaList.isMediaTypeAvailable(mediaType.YOUTUBE);\r\n\r\n if (deviceInfo.isIE() && deviceInfo.getIEVersion() !== null && deviceInfo.getIEVersion() <= MIN_IE_VERSION) {\r\n return playerType.NOT_SUPPORTED;\r\n }\r\n\r\n if (mediaList.isTscProj) {\r\n return playerType.TSCPROJ;\r\n }\r\n\r\n if (haveYoutubeEmbedUrl) {\r\n return playerType.YOUTUBE;\r\n }\r\n\r\n if (haveWebMAndCanPlay || haveMP4AndCanPlay || haveOGGAndCanPlay) {\r\n return playerType.HTML5_VIDEO;\r\n }\r\n\r\n if (haveWebMAndCanPlay || haveMP4AndCanPlay || haveOGGAndCanPlay) {\r\n return playerType.HTML5_VIDEO;\r\n }\r\n\r\n if (haveImage) {\r\n return playerType.IMAGE;\r\n }\r\n\r\n return playerType.NOT_SUPPORTED;\r\n };\r\n\r\n return {\r\n getPlayerType: function(mediaList) {\r\n return _currentPlayerType || (_currentPlayerType = getPlayerType(mediaList));\r\n },\r\n clearPlayerType: function() {\r\n _currentPlayerType = undefined;\r\n }\r\n };\r\n }());\r\n}(this, window.TSC.playerType, window.TSC.playerConfiguration, window.TSC.mediaType, window.TSC.deviceInfo));\r\n","(function(window, iFrameBridgeDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.iFrameBridge = iFrameBridgeDefinition(window, window.JSON, namespace.playerConfiguration);\r\n})(this, function(window, JSON, playerConfiguration) {\r\n 'use strict';\r\n\r\n var postMessage = function(eventName, domain, data) {\r\n var message = {};\r\n message.smartPlayerEventName = eventName;\r\n if (playerConfiguration.getEmbedIFrameId()) {\r\n message.iFrameId = playerConfiguration.getEmbedIFrameId();\r\n }\r\n if (data) {\r\n message.data = data;\r\n }\r\n window.top.postMessage(JSON.stringify(message), domain);\r\n };\r\n\r\n var isInIframe = function() {\r\n return window !== window.top;\r\n };\r\n\r\n return {\r\n postMessage: postMessage,\r\n isInIframe: isInIframe\r\n };\r\n});\r\n","(function(window, externalMessageController, playerConfiguration, iFrameBridge, windowWrapper) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.queryParamsStripper = (function() {\r\n var parsePlayerURLParams = function(queryString) {\r\n var playerUrlParams = queryString.slice(queryString.indexOf('?') + 1).split('&');\r\n if (playerUrlParams && playerUrlParams.length > 0) {\r\n playerConfiguration.saveConfigurationFromQueryString(playerUrlParams);\r\n }\r\n };\r\n\r\n var requestEmbeddedURLParams = function() {\r\n externalMessageController.addCallback('PARENT-URL-PARAMS', parseEmbeddedURLParams);\r\n iFrameBridge.postMessage('GET-EMBEDDED-URL-VARS', '*');\r\n };\r\n\r\n var parseEmbeddedURLParams = function(data) {\r\n externalMessageController.removeCallback('PARENT-URL-PARAMS');\r\n parsePlayerURLParams(data);\r\n };\r\n\r\n return {\r\n strip: function() {\r\n parsePlayerURLParams(windowWrapper.getLocationHref());\r\n if (iFrameBridge.isInIframe()) {\r\n requestEmbeddedURLParams();\r\n }\r\n }\r\n };\r\n }());\r\n}(this, window.TSC.externalMessageController, window.TSC.playerConfiguration, window.TSC.iFrameBridge, window.TSC.windowWrapper));\r\n","(function(window, responsiveControllerFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.responsiveController = responsiveControllerFactory(window.$);\r\n})(this, function($) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class responsiveController\r\n * @classdesc Control responsive classes on player container\r\n */\r\n\r\n var _intervalID = null;\r\n var _$container = null;\r\n var _currentContainerSize = {\r\n width: null,\r\n height: null\r\n };\r\n\r\n var _responsiveBreakpoints = {\r\n 'small-mobile': {\r\n width: 1,\r\n height: 1\r\n },\r\n 'medium-mobile': {\r\n width: 250,\r\n height: 250\r\n },\r\n 'small-desktop': {\r\n width: 400,\r\n height: 400\r\n }\r\n };\r\n\r\n var checkForResize = function() {\r\n if (_$container.width() !== _currentContainerSize.width || _$container.height() !== _currentContainerSize.height) {\r\n _currentContainerSize.width = _$container.width();\r\n _currentContainerSize.height = _$container.height();\r\n _$container.trigger('resize', _currentContainerSize);\r\n }\r\n };\r\n\r\n var monitorContainerSize = function($container) {\r\n if (_intervalID) {\r\n clearInterval(_intervalID);\r\n }\r\n\r\n _$container = $container;\r\n\r\n // check for resize 4x/sec\r\n _intervalID = setInterval(checkForResize, 250);\r\n };\r\n\r\n var manageResponsiveClasses = function() {\r\n if (!_$container) {\r\n return;\r\n }\r\n\r\n $.each(_responsiveBreakpoints, function(key, breakpoint) {\r\n var widthClassName = [key, 'width'].join('-');\r\n var heightClassName = [key, 'height'].join('-');\r\n\r\n if (breakpoint.width && _currentContainerSize.width > breakpoint.width) {\r\n _$container.addClass(widthClassName);\r\n } else {\r\n _$container.removeClass(widthClassName);\r\n }\r\n if (breakpoint.height && _currentContainerSize.height > breakpoint.height) {\r\n _$container.addClass(heightClassName);\r\n } else {\r\n _$container.removeClass(heightClassName);\r\n }\r\n });\r\n };\r\n\r\n var forgetContainerSize = function() {\r\n if (_intervalID) {\r\n clearInterval(_intervalID);\r\n }\r\n _intervalID = null;\r\n _$container = null;\r\n _currentContainerSize = {\r\n width: null,\r\n height: null\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Monitor a jquery element for a change in size\r\n * @function monitorContainerSize\r\n * @param {Object} $container - jquery element to monitor\r\n * @memberof TSC.responsiveController\r\n * @static\r\n */\r\n monitorContainerSize: monitorContainerSize,\r\n /**\r\n * Forget to monitor a jquery element for a change in size\r\n * @function forgetContainerSize\r\n * @param {Object} $container - jquery element to monitor\r\n * @memberof TSC.responsiveController\r\n * @static\r\n */\r\n forgetContainerSize: forgetContainerSize,\r\n /**\r\n * Adds or removes responsive class to the specified container.\r\n * @function manageResponsiveClasses\r\n * @param {Object} $container - jquery element to apply classes to.\r\n * @memberof TSC.responsiveController\r\n * @static\r\n */\r\n manageResponsiveClasses: manageResponsiveClasses\r\n };\r\n});\r\n","(function(window, ioOverlayViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC || {};\r\n namespace.IoOverlayView = ioOverlayViewFactory(namespace.templates, namespace.localizationStrings);\r\n})(this, function(templates, localizationStrings) {\r\n 'use strict';\r\n\r\n var LOADER_IMG = 'data:image/gif;base64,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';\r\n\r\n /**\r\n * @memberof TSC.IoOverlayView\r\n * @class IoOverlayView\r\n * @classdesc IoOverlay View\r\n */\r\n var IoOverlayView = function($container) {\r\n var _viewOpen = false;\r\n\r\n var markup = templates.io_overlay_view_template({\r\n loaderImg: LOADER_IMG,\r\n loaderAltText: localizationStrings.strings.videoLoading\r\n });\r\n\r\n $container.append(markup);\r\n\r\n var _$ioContainer = $container.find('.tsc-io-container');\r\n var _$ioMessage = _$ioContainer.find('span');\r\n var _$ioImg = _$ioContainer.find('img');\r\n\r\n var setViewMessage = function(message) {\r\n _$ioMessage.html(message);\r\n };\r\n\r\n var hideLoadingGraphic = function() {\r\n _$ioImg.hide();\r\n };\r\n\r\n var showLoadingGraphic = function() {\r\n _$ioImg.show();\r\n };\r\n\r\n var showView = function() {\r\n _$ioContainer.stop()\r\n .css('opacity', 0)\r\n .show()\r\n .animate({opacity: 1}, 300);\r\n _viewOpen = true;\r\n };\r\n\r\n var hideView = function(completeCallback) {\r\n if (_viewOpen) {\r\n _viewOpen = false;\r\n _$ioContainer.stop().animate({opacity: 0}, 200, function() {\r\n if (completeCallback) {\r\n completeCallback.call();\r\n }\r\n _$ioContainer.hide();\r\n });\r\n }\r\n };\r\n\r\n var displayMessage = function(message, shouldHideLoadingGraphic) {\r\n setViewMessage(message);\r\n\r\n if (shouldHideLoadingGraphic) {\r\n hideLoadingGraphic();\r\n } else {\r\n showLoadingGraphic();\r\n }\r\n\r\n if (!_viewOpen) {\r\n showView();\r\n }\r\n };\r\n\r\n return {\r\n hideView: hideView,\r\n displayMessage: displayMessage\r\n };\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new IoOverlayView object.\r\n * @function create\r\n * @memberof TSC.IoOverlayView\r\n * @static\r\n * @param {Object} $container - jQuery element that is the smartplayer top-level container\r\n * @return new IoOverlayView instance\r\n */\r\n create: IoOverlayView\r\n };\r\n});\r\n\r\n","(function(window, playerSettingsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.PlayerSettingsView = playerSettingsViewFactory(\r\n window,\r\n window.$,\r\n window.tscme,\r\n namespace.templates,\r\n namespace.localizationStrings,\r\n namespace.deviceInfo,\r\n namespace.cssClasses,\r\n namespace.keys,\r\n namespace.tabIndex,\r\n namespace.events,\r\n namespace.highlightDisabler,\r\n namespace.hotkeyService);\r\n})(this, function(window, $, tscme, templates, localizationStrings, deviceInfo, cssClasses, keys, tabIndex, events, highlightDisabler, hotkeyService) {\r\n 'use strict';\r\n var _defaultPlaybackRate = 1.0;\r\n var _defaultAvailablePlaybackRates = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];\r\n\r\n var hideButton = function($container) {\r\n $container.find('.settings-button').hide();\r\n };\r\n\r\n /**\r\n * @memberof TSC\r\n * @class PlayerSettingsView\r\n * @classdesc PlayerSettings View\r\n */\r\n var PlayerSettingsView = function($container, mediaElement, xmp, playbackRates) {\r\n var _isOpen = false;\r\n var _currentPlaybackRate = _defaultPlaybackRate;\r\n var _availablePlaybackRates = playbackRates || _defaultAvailablePlaybackRates;\r\n var _minPlaybackRate = _availablePlaybackRates[0];\r\n var _maxPlaybackRate = _availablePlaybackRates[_availablePlaybackRates.length - 1];\r\n mediaElement.playbackRate = _currentPlaybackRate;\r\n mediaElement.defaultPlaybackRate = _currentPlaybackRate;\r\n\r\n var getPlaybackRates = function() {\r\n var playerRateOptionsLocalizedStrings = localizationStrings.strings.playerRateOptionsText;\r\n var playbackRatesList = [];\r\n\r\n for (var j = _availablePlaybackRates.length - 1; j >= 0; j--) {\r\n var rate = _availablePlaybackRates[j];\r\n playbackRatesList.push({rateValue: rate, rateLabel: playerRateOptionsLocalizedStrings[rate], selected: rate === _defaultPlaybackRate});\r\n }\r\n\r\n return playbackRatesList;\r\n };\r\n\r\n var getClosedCaptionLanguages = function() {\r\n var ccLanguageList = [];\r\n var selectedLanguageIdentifier = xmp.captionTrack.getActiveLanguageIdentifier();\r\n if (selectedLanguageIdentifier.identifier === tscme.languageIdentifiers.identifiers.default) {\r\n selectedLanguageIdentifier = tscme.LanguageIdentifier.create(localizationStrings.getLanguage());\r\n }\r\n\r\n var foundSelectedLanguageInAvailableList = false;\r\n xmp.captionTrack.getAvailableLanguages().forEach(function(languageIdentifierString) {\r\n var languageIdentifier = tscme.LanguageIdentifier.create(languageIdentifierString);\r\n var languageLabel = localizationStrings.getLanguageNameFromIdentifierString(languageIdentifierString);\r\n var languageShouldBeSelected = languageIdentifier.language === selectedLanguageIdentifier.language;\r\n if (languageShouldBeSelected) {\r\n foundSelectedLanguageInAvailableList = true;\r\n }\r\n ccLanguageList.push({languageValue: languageIdentifierString, languageLabel: languageLabel, selected: languageShouldBeSelected});\r\n });\r\n\r\n if (foundSelectedLanguageInAvailableList) {\r\n xmp.captionTrack.setActiveLanguageIdentifier(selectedLanguageIdentifier.identifier);\r\n } else {\r\n xmp.captionTrack.setActiveLanguageIdentifier(tscme.languageIdentifiers.identifiers.default);\r\n }\r\n\r\n return ccLanguageList;\r\n };\r\n\r\n var context = {\r\n playerRateText: localizationStrings.strings.playerRateText,\r\n playbackRates: getPlaybackRates(),\r\n accessBtnSettings: localizationStrings.strings.accessBtnSettings,\r\n settingsIndex: tabIndex.Settings,\r\n speedSettingIndex: tabIndex.SpeedSetting,\r\n hasMultipleLanguages: xmp ? xmp.captionsHasMultipleLanguages : false,\r\n ccLanguageText: localizationStrings.strings.ccLanguageText,\r\n ccLanguageSettingIndex: tabIndex.CCLanguageSetting,\r\n ccLanguages: xmp ? getClosedCaptionLanguages() : []\r\n };\r\n\r\n var playerSettingsViewMarkup = templates.settings_view_template(context);\r\n var _$playerSettingsWrapper = $container.find('.player-settings-wrapper');\r\n _$playerSettingsWrapper.html(playerSettingsViewMarkup);\r\n\r\n var _$playerSettingsViewEl = $container.find('.player-settings-container');\r\n var _$playbackRateSelectEl = _$playerSettingsViewEl.find('.player-speed-select');\r\n var _$ccLanguageSelectEl = _$playerSettingsViewEl.find('.cc-language-select');\r\n var _$playerSettingsButton = $container.find('.settings-button');\r\n var _$playerSettingsButtonGlyph = $container.find('.settings-button-glyph');\r\n\r\n var hideView = function() {\r\n _isOpen = false;\r\n _$playerSettingsViewEl.hide();\r\n _$playerSettingsButton.attr('aria-expanded', false);\r\n _$playerSettingsButton.removeClass(cssClasses.tertiaryButtonActive).addClass(cssClasses.tertiaryButton);\r\n _$playerSettingsButtonGlyph.removeClass(cssClasses.settingsButtonActiveGlyph).addClass(cssClasses.settingsButtonGlyph);\r\n removeClickHandler();\r\n };\r\n\r\n var showView = function() {\r\n _isOpen = true;\r\n _$playerSettingsViewEl.show();\r\n _$playerSettingsButton.attr('aria-expanded', true);\r\n _$playerSettingsButton.removeClass(cssClasses.tertiaryButton).addClass(cssClasses.tertiaryButtonActive);\r\n _$playerSettingsButtonGlyph.removeClass(cssClasses.settingsButtonGlyph).addClass(cssClasses.settingsButtonActiveGlyph);\r\n addClickHandler();\r\n };\r\n\r\n var addClickHandler = function() {\r\n $container.mouseup(hideSettingsViewOnClickOutside);\r\n };\r\n\r\n var removeClickHandler = function() {\r\n $container.off('mouseup', hideSettingsViewOnClickOutside);\r\n };\r\n\r\n var hideSettingsViewOnClickOutside = function(e) {\r\n if (!_isOpen) {\r\n return;\r\n }\r\n if (!_$playerSettingsViewEl.is(e.target) && _$playerSettingsViewEl.has(e.target).length === 0) {\r\n //This timeout is so that the click handler for the settings view button sees the right state\r\n setTimeout(function() {\r\n hideView();\r\n }, 50);\r\n }\r\n };\r\n\r\n var syncPlaybackRateControlsWithPlaybackRateValue = function() {\r\n var realPlaybackRate = mediaElement.playbackRate;\r\n if (realPlaybackRate !== Number(_$playbackRateSelectEl.find(':selected').val())) {\r\n if (realPlaybackRate > _maxPlaybackRate) {\r\n setPlaybackRate(_maxPlaybackRate);\r\n } else if (realPlaybackRate < _minPlaybackRate) {\r\n setPlaybackRate(_minPlaybackRate);\r\n } else {\r\n _$playbackRateSelectEl.find('.player-speed-option[value=\"' + mediaElement.playbackRate + '\"]').prop('selected', true);\r\n }\r\n }\r\n };\r\n\r\n var setPlaybackRate = function(playbackSpeed) {\r\n if (!playbackSpeed) {\r\n playbackSpeed = _defaultPlaybackRate;\r\n } else if (playbackSpeed < _minPlaybackRate) {\r\n playbackSpeed = _minPlaybackRate;\r\n } else if (playbackSpeed > _maxPlaybackRate) {\r\n playbackSpeed = _maxPlaybackRate;\r\n }\r\n _currentPlaybackRate = playbackSpeed;\r\n mediaElement.playbackRate = playbackSpeed;\r\n mediaElement.defaultPlaybackRate = playbackSpeed;\r\n // workaround to get iOS to apply the playback rate change right away\r\n if (deviceInfo.isIOS() && !mediaElement.paused) {\r\n mediaElement.pause();\r\n mediaElement.play();\r\n }\r\n };\r\n\r\n var onPlaybackRateControlChange = function() {\r\n var playbackSpeed = Number(_$playbackRateSelectEl.find(':selected').val());\r\n setPlaybackRate(playbackSpeed);\r\n };\r\n\r\n var onCCLanguageControlChange = function() {\r\n var ccLanguageCode = _$ccLanguageSelectEl.find(':selected').val();\r\n xmp.captionTrack.setActiveLanguageIdentifier(ccLanguageCode);\r\n $container.trigger(events.Captions.LanguageChanged);\r\n };\r\n\r\n var onPlaybackRateValueChange = function() {\r\n syncPlaybackRateControlsWithPlaybackRateValue();\r\n };\r\n\r\n var incrementPlaybackRate = function() {\r\n var indexOfCurrentRate = _availablePlaybackRates.indexOf(_currentPlaybackRate);\r\n if (indexOfCurrentRate === -1) {\r\n return;\r\n }\r\n if (indexOfCurrentRate + 1 < _availablePlaybackRates.length) {\r\n setPlaybackRate(_availablePlaybackRates[indexOfCurrentRate + 1]);\r\n }\r\n };\r\n\r\n var decrementPlaybackRate = function() {\r\n var indexOfCurrentRate = _availablePlaybackRates.indexOf(_currentPlaybackRate);\r\n if (indexOfCurrentRate === -1) {\r\n return;\r\n }\r\n if (indexOfCurrentRate > 0) {\r\n setPlaybackRate(_availablePlaybackRates[indexOfCurrentRate - 1]);\r\n }\r\n };\r\n\r\n var onKeyboardShortCut = function(e) {\r\n if (!hotkeyService.areHotkeysEnabled()) {\r\n return;\r\n }\r\n\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.upArrow) && e.shiftKey) {\r\n e.preventDefault();\r\n incrementPlaybackRate();\r\n } else if (keys.isKeyOfType(e.key, keys.keyTypes.downArrow) && e.shiftKey) {\r\n e.preventDefault();\r\n decrementPlaybackRate();\r\n } else if (keys.isKeyOfType(e.key, keys.keyTypes.escape)) {\r\n if (_isOpen) {\r\n if (_$playbackRateSelectEl.is(':focus') || _$ccLanguageSelectEl.is(':focus')) {\r\n _$playerSettingsButton.focus();\r\n }\r\n hideView();\r\n }\r\n }\r\n };\r\n\r\n var stopPropagation = function(e) {\r\n e.stopPropagation();\r\n };\r\n\r\n var disableControl = function() {\r\n _$playerSettingsButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$playerSettingsButton.attr('tabindex', tabIndex.Settings);\r\n };\r\n\r\n var onPlayerSettingsButtonClick = function(e) {\r\n e.preventDefault();\r\n if (_isOpen) {\r\n hideView();\r\n } else {\r\n showView();\r\n _$playbackRateSelectEl.focus();\r\n highlightDisabler.disableHighlightsOnMouseClick(_$playbackRateSelectEl, e);\r\n }\r\n };\r\n\r\n var initializeHandlers = function() {\r\n _$playbackRateSelectEl.on('click', stopPropagation);\r\n _$playbackRateSelectEl.on('mouseup', stopPropagation);\r\n _$playbackRateSelectEl.on('change', onPlaybackRateControlChange);\r\n\r\n _$ccLanguageSelectEl.on('click', stopPropagation);\r\n _$ccLanguageSelectEl.on('mouseup', stopPropagation);\r\n _$ccLanguageSelectEl.on('change', onCCLanguageControlChange);\r\n\r\n _$playerSettingsButton.on('click', onPlayerSettingsButtonClick);\r\n\r\n if (mediaElement.addEventListener) {\r\n mediaElement.addEventListener('ratechange', onPlaybackRateValueChange, false);\r\n } else if (mediaElement.on) {\r\n mediaElement.on('ratechange', onPlaybackRateValueChange);\r\n }\r\n\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n $container.on('keydown', onKeyboardShortCut);\r\n };\r\n\r\n var destroy = function() {\r\n _$playbackRateSelectEl.off('click', stopPropagation);\r\n _$playbackRateSelectEl.off('mouseup', stopPropagation);\r\n _$playbackRateSelectEl.off('change', onPlaybackRateControlChange);\r\n _$ccLanguageSelectEl.off('click', stopPropagation);\r\n _$ccLanguageSelectEl.off('mouseup', stopPropagation);\r\n _$ccLanguageSelectEl.off('change', onCCLanguageControlChange);\r\n _$playerSettingsButton.off('click', onPlayerSettingsButtonClick);\r\n\r\n if (mediaElement.removeEventListener) {\r\n mediaElement.removeEventListener('ratechange', onPlaybackRateValueChange);\r\n } else if (mediaElement.off) {\r\n mediaElement.off('ratechange', onPlaybackRateValueChange);\r\n }\r\n\r\n $container.off(events.Controls.Disable, disableControl);\r\n $container.off(events.Controls.Enable, enableControl);\r\n $container.off('keydown', onKeyboardShortCut);\r\n };\r\n\r\n var open = function() {\r\n if (!_isOpen) {\r\n showView();\r\n }\r\n };\r\n\r\n var close = function() {\r\n if (_isOpen) {\r\n hideView();\r\n }\r\n };\r\n\r\n initializeHandlers();\r\n hideView();\r\n\r\n return Object.defineProperties({\r\n open: open,\r\n close: close,\r\n destroy: destroy\r\n }, {\r\n isOpen: {\r\n get: function() {\r\n return _isOpen;\r\n }\r\n },\r\n playbackRate: {\r\n get: function() {\r\n return _currentPlaybackRate;\r\n },\r\n set: setPlaybackRate\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new PlayerSettingsView object.\r\n * @function create\r\n * @memberof TSC.PlayerSettingsView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .settings-button element and a .player-settings-wrapper element where the player settings controls will be injected\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @param {Array} playbackRates - optional - a list of available playback rates\r\n * @param {TSC.xmp} xmp - optional - xmp data model\r\n * @return new PlayerSettingsView instance\r\n */\r\n create: PlayerSettingsView,\r\n /**\r\n * Method that hides the settings button within a container.\r\n * @function hideButton\r\n * @memberof TSC.PlayerSettingsView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .settings-button element to be hidden\r\n */\r\n hideButton: hideButton\r\n };\r\n});\r\n","(function(window, pipControlViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.PipControlView = pipControlViewFactory(\r\n namespace.templates,\r\n namespace.tabIndex,\r\n namespace.localizationStrings,\r\n namespace.events,\r\n namespace.pipControllerFactory);\r\n})(this, function(templates, tabIndex, localizationStrings, events, pipControllerFactory) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class PipControlView\r\n * @classdesc PIP View Control\r\n * @param {Object} $container - jQuery element that contains a .settings-button element and a .player-settings-wrapper element where the player settings controls will be injected\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n */\r\n var PipControlView = function($container, mediaElement) {\r\n var _$pipButton = null;\r\n var _pipApiController = null;\r\n\r\n var onPresentationModeChange = function() {\r\n $container.trigger(events.Controls.PipChanged, {hideControls: _pipApiController.inPip});\r\n };\r\n\r\n var onPipControlClick = function(e) {\r\n e.preventDefault();\r\n _pipApiController.enter();\r\n };\r\n\r\n var handleSmartPlayerActionEvents = function() {\r\n if (_pipApiController && _pipApiController.inPip) {\r\n _pipApiController.exit();\r\n }\r\n };\r\n\r\n var disableControl = function() {\r\n _$pipButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$pipButton.attr('tabindex', tabIndex.Pip);\r\n };\r\n\r\n var createView = function() {\r\n var buttonTitle = localizationStrings.strings.accessBtnPip;\r\n var _markup = templates.pip_control_template({\r\n accessBtnPip: buttonTitle,\r\n pipButtonIndex: tabIndex.Pip\r\n });\r\n\r\n $container.find('.pip-wrapper').html(_markup);\r\n _$pipButton = $container.find('.pip-button');\r\n };\r\n\r\n var initializeHandlers = function() {\r\n _pipApiController.bindChangeEvent(onPresentationModeChange);\r\n\r\n _$pipButton.on('click', onPipControlClick);\r\n $container.on(events.Hotspots.Paused, handleSmartPlayerActionEvents);\r\n $container.on(events.Quizzing.Paused, handleSmartPlayerActionEvents);\r\n $container.on(events.Media.End, handleSmartPlayerActionEvents);\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n };\r\n\r\n var initialize = function() {\r\n _pipApiController = pipControllerFactory.getPipController(mediaElement);\r\n if (_pipApiController.isSupported) {\r\n createView();\r\n initializeHandlers();\r\n }\r\n };\r\n\r\n var destroy = function() {\r\n if (_pipApiController && _pipApiController.isSupported) {\r\n _pipApiController.unbindChangeEvent(onPresentationModeChange);\r\n _$pipButton.off('click', onPipControlClick);\r\n $container.off(events.Hotspots.Paused, handleSmartPlayerActionEvents);\r\n $container.off(events.Quizzing.Paused, handleSmartPlayerActionEvents);\r\n $container.off(events.Media.End, handleSmartPlayerActionEvents);\r\n $container.off(events.Controls.Disable, disableControl);\r\n $container.off(events.Controls.Enable, enableControl);\r\n }\r\n };\r\n\r\n return Object.defineProperties({\r\n initialize: initialize,\r\n destroy: destroy\r\n }, {});\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new PipControlView object.\r\n * @function create\r\n * @memberof TSC.PipControlView\r\n * @param {Object} $container - jQuery element that contains a .settings-button element and a .player-settings-wrapper element where the player settings controls will be injected\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @static\r\n * @return new PipControlView instance\r\n */\r\n create: PipControlView\r\n };\r\n});\r\n","(function(window, fullscreenControlViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.FullscreenControlView = fullscreenControlViewFactory(window,\r\n window.$,\r\n namespace.templates,\r\n namespace.localizationStrings,\r\n namespace.deviceInfo,\r\n namespace.cssClasses,\r\n namespace.playerConfiguration,\r\n namespace.iFrameBridge,\r\n namespace.events,\r\n namespace.tabIndex,\r\n namespace.urlService);\r\n})(this, function(window,\r\n $,\r\n templates,\r\n localizationStrings,\r\n deviceInfo,\r\n cssClasses,\r\n playerConfiguration,\r\n iFrameBridge,\r\n events,\r\n tabIndex,\r\n urlService) {\r\n 'use strict';\r\n\r\n var FULL_SCREEN_BUTTON_MODE = 'fullScreenMode';\r\n var FULL_FRAME_BUTTON_MODE = 'fullFrameMode';\r\n var EXPAND_BUTTON_MODE = 'expandMode';\r\n var HIDDEN_BUTTON_MODE = 'hiddenMode';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class FullscreenControlView\r\n * @classdesc Full Screen Control View\r\n */\r\n var FullscreenControlView = function($container) {\r\n var _inFullScreen = false;\r\n var _inFullFrame = false;\r\n var _$document = $(window.document);\r\n var _$fullScreenButton;\r\n var _$fullScreenGlyph;\r\n var _buttonMode = null;\r\n\r\n var findButtonMode = function() {\r\n if (deviceInfo.supportsFullScreen()) {\r\n _buttonMode = FULL_SCREEN_BUTTON_MODE;\r\n } else if (iFrameBridge.isInIframe()) {\r\n _buttonMode = playerConfiguration.getDisableFullframeMode() ? EXPAND_BUTTON_MODE : FULL_FRAME_BUTTON_MODE;\r\n } else {\r\n _buttonMode = HIDDEN_BUTTON_MODE;\r\n }\r\n };\r\n\r\n var createView = function() {\r\n var buttonTitle = localizationStrings.strings.accessBtnFullScreen;\r\n if (_buttonMode === EXPAND_BUTTON_MODE) {\r\n buttonTitle = localizationStrings.strings.accessBtnFullScreenExpand;\r\n }\r\n\r\n var _markup = templates.fullscreen_control_template({\r\n accessBtnFullScreen: buttonTitle,\r\n fullscreenIndex: tabIndex.Fullscreen\r\n });\r\n\r\n $container.find('.fullscreen-wrapper').html(_markup);\r\n _$fullScreenButton = $container.find('.fullscreen-button');\r\n _$fullScreenGlyph = $container.find('.fullscreen-button-glyph');\r\n\r\n if (_buttonMode === HIDDEN_BUTTON_MODE) {\r\n _$fullScreenButton.hide();\r\n }\r\n };\r\n\r\n var onFullScreenChange = function() {\r\n _inFullScreen = !_inFullScreen;\r\n\r\n if (_inFullScreen) {\r\n _$fullScreenGlyph.removeClass(cssClasses.fullscreenButtonGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.fullscreenButtonActiveGlyph);\r\n _$fullScreenButton.attr('aria-pressed', true);\r\n\r\n _$fullScreenButton.focus();\r\n\r\n $container.addClass(cssClasses.fullscreenMode);\r\n } else {\r\n _$fullScreenGlyph.removeClass(cssClasses.fullscreenButtonActiveGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.fullscreenButtonGlyph);\r\n _$fullScreenButton.attr('aria-pressed', false);\r\n\r\n $container.removeClass(cssClasses.fullscreenMode);\r\n }\r\n\r\n $container.trigger(events.Controls.FullScreenChange, {inFullScreen: _inFullScreen});\r\n };\r\n\r\n var initializeFullScreenSupport = function(canSupportExpandVideoMode) {\r\n switch (_buttonMode) {\r\n case FULL_SCREEN_BUTTON_MODE:\r\n var fullScreenEventNames = deviceInfo.getFullScreenChangeEventNames();\r\n _$document.off(fullScreenEventNames, onFullScreenChange);\r\n _$document.on(fullScreenEventNames, onFullScreenChange);\r\n break;\r\n case FULL_FRAME_BUTTON_MODE:\r\n _$fullScreenGlyph.removeClass(cssClasses.fullscreenButtonGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.fullFrameButtonGlyph);\r\n _$fullScreenButton.show();\r\n break;\r\n case EXPAND_BUTTON_MODE:\r\n if (canSupportExpandVideoMode) {\r\n _$fullScreenGlyph.removeClass(cssClasses.fullscreenButtonGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.expandButtonGlyph);\r\n _$fullScreenButton.show();\r\n } else {\r\n _$fullScreenButton.hide();\r\n }\r\n break;\r\n }\r\n };\r\n\r\n var cancelFullScreen = function() {\r\n _$fullScreenButton.attr('aria-pressed', false);\r\n if (window.document.exitFullscreen) {\r\n window.document.exitFullscreen();\r\n } else if (window.document.webkitExitFullscreen) {\r\n window.document.webkitExitFullscreen();\r\n } else if (window.document.msExitFullscreen) {\r\n window.document.msExitFullscreen();\r\n } else if (window.document.mozCancelFullScreen) {\r\n window.document.mozCancelFullScreen();\r\n }\r\n };\r\n\r\n var switchToFullScreenMode = function() {\r\n _$fullScreenButton.attr('aria-pressed', true);\r\n var myPlayer = $container.get(0);\r\n\r\n if (myPlayer.requestFullscreen) {\r\n myPlayer.requestFullscreen();\r\n } else if (myPlayer.webkitRequestFullscreen) {\r\n myPlayer.webkitRequestFullscreen();\r\n } else if (myPlayer.msRequestFullscreen) {\r\n myPlayer.msRequestFullscreen();\r\n } else if (myPlayer.mozRequestFullScreen) {\r\n myPlayer.mozRequestFullScreen();\r\n }\r\n };\r\n\r\n var switchFromFullScreenMode = function() {\r\n cancelFullScreen();\r\n };\r\n\r\n var toggleFullScreenMode = function() {\r\n if (!_inFullScreen) {\r\n switchToFullScreenMode();\r\n } else {\r\n switchFromFullScreenMode();\r\n }\r\n };\r\n\r\n var toggleFullFrameMode = function() {\r\n _inFullFrame = !_inFullFrame;\r\n if (_inFullFrame) {\r\n _$fullScreenGlyph.removeClass(cssClasses.fullFrameButtonGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.fullFrameButtonActiveGlyph);\r\n _$fullScreenButton.attr('aria-pressed', true);\r\n iFrameBridge.postMessage(events.IFrame.EnterFullFrame, '*');\r\n } else {\r\n _$fullScreenGlyph.removeClass(cssClasses.fullFrameButtonActiveGlyph);\r\n _$fullScreenGlyph.addClass(cssClasses.fullFrameButtonGlyph);\r\n iFrameBridge.postMessage(events.IFrame.ExitFullFrame, '*');\r\n _$fullScreenButton.attr('aria-pressed', false);\r\n }\r\n };\r\n\r\n var expandVideo = function() {\r\n $container.trigger(events.Controls.ExpandVideo);\r\n urlService.openUrl(urlService.generateCurrentUrlWithExtraQueryParam('theme', playerConfiguration.getTheme()), '_blank');\r\n };\r\n\r\n var onFullScreenClick = function() {\r\n switch (_buttonMode) {\r\n case FULL_SCREEN_BUTTON_MODE:\r\n toggleFullScreenMode();\r\n break;\r\n case FULL_FRAME_BUTTON_MODE:\r\n toggleFullFrameMode();\r\n break;\r\n case EXPAND_BUTTON_MODE:\r\n expandVideo();\r\n break;\r\n }\r\n };\r\n\r\n var onDoubleClick = function() {\r\n switch (_buttonMode) {\r\n case FULL_SCREEN_BUTTON_MODE:\r\n toggleFullScreenMode();\r\n break;\r\n case FULL_FRAME_BUTTON_MODE:\r\n toggleFullFrameMode();\r\n break;\r\n }\r\n };\r\n\r\n var initializeHandlers = function() {\r\n _$fullScreenButton.click(function(e) {\r\n onFullScreenClick();\r\n e.preventDefault();\r\n });\r\n\r\n var disableControl = function() {\r\n _$fullScreenButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$fullScreenButton.attr('tabindex', tabIndex.Fullscreen);\r\n };\r\n\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n };\r\n\r\n var onVideoEnd = function() {\r\n // must kick them out of full screen to get the replay button to show\r\n if (_inFullScreen) {\r\n cancelFullScreen();\r\n }\r\n };\r\n\r\n findButtonMode();\r\n createView();\r\n initializeHandlers();\r\n\r\n return Object.defineProperties({\r\n initializeFullScreenSupport: initializeFullScreenSupport,\r\n onVideoEnd: onVideoEnd,\r\n onDoubleClick: onDoubleClick\r\n }, {\r\n isFullScreen: {\r\n get: function() {\r\n return _inFullScreen;\r\n }\r\n },\r\n isFullFrame: {\r\n get: function() {\r\n return _inFullFrame;\r\n }\r\n },\r\n controlElement: {\r\n get: function() {\r\n return _$fullScreenButton;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new FullscreenControlView object.\r\n * @function create\r\n * @memberof TSC.FullscreenControlView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .fullscreen-wrapper element where the fullscreen controls will be injected\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @return new FullscreenControlView instance\r\n */\r\n create: FullscreenControlView\r\n };\r\n});\r\n","(function(window) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.playedTracker = function(video) {\r\n var mergeToleranceInSeconds = 0.5;\r\n\r\n var tracker = function() {\r\n var internalPlayed = [];\r\n var currentMediaSegmentIndex = 0;\r\n var that = this;\r\n\r\n this.start = function(segmentIndex) {\r\n if (segmentIndex < 0 || segmentIndex > internalPlayed.length - 1) {\r\n throw new Error('INDEX_SIZE_ERR');\r\n }\r\n return internalPlayed[segmentIndex].start;\r\n };\r\n\r\n this.end = function(segmentIndex) {\r\n if (segmentIndex < 0 || segmentIndex > internalPlayed.length - 1) {\r\n throw new Error('INDEX_SIZE_ERR');\r\n }\r\n return internalPlayed[segmentIndex].end;\r\n };\r\n\r\n Object.defineProperty(this, 'length', {\r\n get: function() {\r\n return internalPlayed.length;\r\n }\r\n });\r\n\r\n var createNewPlayedMediaSegment = function() {\r\n internalPlayed.push(new PlayedMediaSegment());\r\n currentMediaSegmentIndex = internalPlayed.length - 1;\r\n };\r\n\r\n var onTimeChange = function(event) {\r\n if (that.length === 0) {\r\n createNewPlayedMediaSegment();\r\n internalPlayed[0].recordTime(0);\r\n }\r\n internalPlayed[currentMediaSegmentIndex].recordTime(event.data);\r\n if (internalPlayed.length > 1) {\r\n mergeOverlappingMediaSegments();\r\n }\r\n };\r\n\r\n var onMediaSeek = function(event) {\r\n var mediaSegmentIndexForTime = getPlayedMediaSegmentIndexByTime(event.data);\r\n if (mediaSegmentIndexForTime === -1) {\r\n createNewPlayedMediaSegment();\r\n }\r\n };\r\n\r\n var mergeOverlappingMediaSegments = function() {\r\n var numberSegments = internalPlayed.length;\r\n for (var i = 0; i < numberSegments; i++) {\r\n if (currentMediaSegmentIndex !== i && that.areMediaSegmentsOverlapping(internalPlayed[currentMediaSegmentIndex], internalPlayed[i])) {\r\n mergeMediaSegments(currentMediaSegmentIndex, i);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n var mergeMediaSegments = function(segmentOneIndex, segmentTwoIndex) {\r\n var mergedIndex = Math.min(segmentOneIndex, segmentTwoIndex);\r\n var notMergedIndex = Math.max(segmentOneIndex, segmentTwoIndex);\r\n internalPlayed[mergedIndex].start = Math.min(internalPlayed[segmentOneIndex].start, internalPlayed[segmentTwoIndex].start);\r\n internalPlayed[mergedIndex].end = Math.max(internalPlayed[segmentOneIndex].end, internalPlayed[segmentTwoIndex].end);\r\n internalPlayed.splice(notMergedIndex, 1);\r\n currentMediaSegmentIndex = mergedIndex;\r\n };\r\n\r\n var getPlayedMediaSegmentIndexByTime = function(time) {\r\n var segmentIndex = -1;\r\n var numberPlayedSegments = internalPlayed.length;\r\n for (var i = 0; i < numberPlayedSegments; i++) {\r\n if (time >= internalPlayed[i].start && time <= internalPlayed[i].end) {\r\n segmentIndex = i;\r\n break;\r\n }\r\n }\r\n return segmentIndex;\r\n };\r\n\r\n video.addEventListener('seeked', onMediaSeek);\r\n video.addEventListener('timeupdate', onTimeChange);\r\n };\r\n\r\n tracker.prototype.areMediaSegmentsOverlapping = function(segment1, segment2) {\r\n var startInOuterSegment = segment2.start >= segment1.start - mergeToleranceInSeconds && segment2.start <= segment1.end + mergeToleranceInSeconds;\r\n var endInOuterSegment = segment2.end >= segment1.start - mergeToleranceInSeconds && segment2.end <= segment1.end + mergeToleranceInSeconds;\r\n return startInOuterSegment || endInOuterSegment;\r\n };\r\n\r\n return new tracker();\r\n };\r\n\r\n var PlayedMediaSegment = function() {\r\n var startTime = -1;\r\n var endTime = -1;\r\n var segment = {};\r\n\r\n Object.defineProperty(segment, 'start', {\r\n get: function() {\r\n return startTime;\r\n },\r\n set: function(value) {\r\n startTime = +value;\r\n }\r\n });\r\n\r\n Object.defineProperty(segment, 'end', {\r\n get: function() {\r\n return endTime;\r\n },\r\n set: function(value) {\r\n endTime = +value;\r\n }\r\n });\r\n\r\n segment.recordTime = function(time) {\r\n if (startTime === -1 || time < startTime) {\r\n startTime = time;\r\n }\r\n\r\n if (time > endTime) {\r\n endTime = time;\r\n }\r\n };\r\n\r\n return segment;\r\n };\r\n})(window);\r\n","(function(window, document, $, Q, playerConfiguration, deviceInfo, playedTracker, youtubeIdParser) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.youTube = namespace.youTube || {};\r\n\r\n window.onYouTubeIframeAPIReady = function() {\r\n window.onYouTubeIframeAPIReady.ready = true;\r\n for (var i = 0; i < window.onYouTubeIframeAPIReady.queued.length; i++) {\r\n window.onYouTubeIframeAPIReady.queued[i]();\r\n }\r\n };\r\n\r\n var youTubeApiUri = 'https://www.youtube.com/iframe_api';\r\n\r\n window.onYouTubeIframeAPIReady.queued = [];\r\n var playbackReadyDefer = Q.defer();\r\n namespace.youTube.playbackReadyPromise = playbackReadyDefer.promise;\r\n\r\n\r\n var youTubePlayer = function(videoId, iFrameId, onReady, onFirstPlay, onError, playerWidth, playerHeight, startTimeInSeconds) {\r\n if (!(this instanceof youTubePlayer)) {\r\n return new youTubePlayer();\r\n }\r\n var that = this;\r\n //Keep local variables to minimize cross-iframe communication\r\n var events = {};\r\n var currentTime = 0;\r\n var duration = 0;\r\n var loadedPercent = 0;\r\n var playbackRate = 1;\r\n var playerState = -1;\r\n var supportPlaybackRate = false;\r\n var volume = 0.5;\r\n var muted = false;\r\n var availableRateSettings = [];\r\n var ended = false;\r\n var displayAnnotations = 3; //3 indicates that annotations should be hidden\r\n\r\n if (typeof startTimeInSeconds !== 'number') {\r\n startTimeInSeconds = 0;\r\n }\r\n\r\n that.playbackReadyPromise = playbackReadyDefer.promise;\r\n\r\n this.addEventListener = function(eventName, handler) {\r\n events[eventName] = events[eventName] || [];\r\n events[eventName].push(handler);\r\n };\r\n\r\n this.removeEventListener = function(eventName, handler) {\r\n if (!events[eventName] || events[eventName].length === 0) {\r\n return;\r\n }\r\n var handlerIndex = events[eventName].indexOf(handler);\r\n if (handlerIndex !== -1) {\r\n events[eventName].splice(handlerIndex, 1);\r\n }\r\n };\r\n\r\n this.bind = function(arg1, arg2) {\r\n if (typeof arg1 === 'string') {\r\n this.addEventListener(arg1, arg2);\r\n } else if (typeof arg1 === 'object') {\r\n var keys = Object.keys(arg1);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n that.addEventListener(key, arg1[key]);\r\n }\r\n }\r\n };\r\n\r\n this.on = this.bind;\r\n\r\n this.unbind = function(eventName, handler) {\r\n if (typeof handler !== 'undefined') {\r\n this.removeEventListener(eventName, handler);\r\n } else {\r\n events[eventName] = [];\r\n }\r\n };\r\n\r\n this.off = this.unbind;\r\n\r\n var errorHandler = function(event) {\r\n switch (event.data) {\r\n case 2:\r\n //The watch URL is probably wrong - missing/too many characters, or invalid characters\r\n dispatchEvent('error', 'Invalid video url.');//\r\n break;\r\n case 5:\r\n //The internal HTML5_VIDEO player cannot play the content\r\n dispatchEvent('error', 'The video cannot be played.');\r\n break;\r\n case 100:\r\n //Video has been removed or marked private\r\n dispatchEvent('error', 'This video has been removed from YouTube and is no longer available for playback.');\r\n break;\r\n case 101:\r\n case 150:\r\n //The video has embedding disabled\r\n dispatchEvent('error', 'This video is unavailable. Its YouTube owner either disabled embedding or marked it private.');\r\n break;\r\n default:\r\n //Unknown video error?\r\n }\r\n };\r\n\r\n if (onError) {\r\n this.addEventListener('error', onError);\r\n }\r\n\r\n var firstPlay = function() {\r\n duration = player.getDuration();\r\n dispatchEvent('durationchange');\r\n\r\n onFirstPlay();\r\n dispatchEvent('loadedmetadata');\r\n dispatchEvent('loadeddata');\r\n dispatchEvent('canplay');\r\n //Ensure these events get fired in the proper order the first time, especially for mobile case\r\n that.removeEventListener('playing', firstPlay);\r\n dispatchEvent('playing');\r\n dispatchEvent('play');\r\n };\r\n\r\n var onStateChange = function(event) {\r\n playerState = event.data;\r\n switch (event.data) {\r\n case window.YT.PlayerState.PAUSED:\r\n dispatchEvent('pause');\r\n break;\r\n case window.YT.PlayerState.ENDED:\r\n ended = true;\r\n dispatchEvent('ended');\r\n break;\r\n case window.YT.PlayerState.PLAYING:\r\n dispatchEvent('playing');\r\n dispatchEvent('play');\r\n break;\r\n case window.YT.PlayerState.BUFFERING:\r\n dispatchEvent('waiting');\r\n break;\r\n }\r\n };\r\n\r\n var onPlaybackRateChange = function(event) {\r\n playbackRate = event.data;\r\n dispatchEvent('ratechange', playbackRate);\r\n };\r\n\r\n var removeFullScreenAttributes = function() {\r\n var playerIFrame = $('#' + iFrameId);\r\n var fullScreenAttributes = ['allowfullscreen', 'webkitAllowFullScreen', 'mozallowfullscreen'];\r\n fullScreenAttributes.forEach(function(attr) {\r\n playerIFrame.removeAttr(attr);\r\n });\r\n };\r\n\r\n var readyHandler = function() {\r\n dispatchEvent('loadstart');\r\n\r\n if (playerConfiguration.getDisableYouTubeFullscreen()) {\r\n removeFullScreenAttributes();\r\n }\r\n\r\n availableRateSettings = player.getAvailablePlaybackRates();\r\n if (availableRateSettings.length > 1) {\r\n supportPlaybackRate = true;\r\n }\r\n\r\n onReady();\r\n that.addEventListener('playing', firstPlay);\r\n playbackReadyDefer.resolve();\r\n };\r\n\r\n if (playerConfiguration.getShowYouTubeAnnotations()) {\r\n displayAnnotations = 1;\r\n }\r\n\r\n /* eslint camelcase:'off' */\r\n var player = new window.YT.Player(iFrameId, {\r\n width: playerWidth,\r\n height: playerHeight,\r\n videoId: videoId,\r\n playerVars: {\r\n wmode: 'opaque', //Fix for overlays when iframe is hosting flash content\r\n loop: 0,\r\n autoplay: 0,\r\n controls: playerConfiguration.getDisableYouTubeControls() ? 0 : 1,\r\n disablekb: playerConfiguration.getDisableYouTubeControls() ? 1 : 0,\r\n rel: 0,\r\n showsearch: 0,\r\n showinfo: 0,\r\n iv_load_policy: displayAnnotations,\r\n playsinline: 1,\r\n start: startTimeInSeconds,\r\n fs: playerConfiguration.getDisableYouTubeFullscreen() ? 0 : 1,\r\n modestbranding: 1\r\n },\r\n events: {\r\n onReady: readyHandler,\r\n onStateChange: onStateChange,\r\n onPlaybackRateChange: onPlaybackRateChange,\r\n onError: errorHandler\r\n }\r\n });\r\n\r\n var dispatchEvent = function(eventName, arg) {\r\n var event = {\r\n type: eventName,\r\n target: that,\r\n data: arg\r\n };\r\n\r\n if (events.hasOwnProperty(eventName)) {\r\n var eventHandlers = events[eventName].slice(0);\r\n for (var i = 0; i < eventHandlers.length; i++) {\r\n eventHandlers[i](event);\r\n }\r\n }\r\n };\r\n\r\n var _playedTracker = new playedTracker(this);\r\n\r\n //As the name suggests, this is mocking the behavior of the html5 spec 'loaded' parameter\r\n var loadedMock = function() {\r\n return {\r\n start: function() {\r\n return 0;\r\n },\r\n end: function() {\r\n return duration * loadedPercent;\r\n },\r\n length: 1\r\n };\r\n };\r\n\r\n Object.defineProperty(this, 'buffered', {\r\n get: loadedMock\r\n });\r\n\r\n Object.defineProperty(this, 'currentTime', {\r\n get: function() {\r\n return player.getCurrentTime();\r\n },\r\n set: function(value) {\r\n dispatchEvent('seeking');\r\n\r\n if (+value > that.buffered.end()) {\r\n player.seekTo(+value, true);\r\n } else {\r\n player.seekTo(+value);\r\n }\r\n\r\n dispatchEvent('seeked');\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'duration', {\r\n get: function() {\r\n return duration;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'paused', {\r\n get: function() {\r\n return playerState === window.YT.PlayerState.PAUSED;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'playbackRate', {\r\n get: function() {\r\n return playbackRate;\r\n },\r\n set: function(value) {\r\n player.setPlaybackRate(+value);\r\n //Don't set internal value here - let the emitted event update it\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'played', {\r\n get: function() {\r\n return _playedTracker;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'ended', {\r\n get: function() {\r\n return ended;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'seekable', {\r\n get: function() {\r\n return {\r\n start: function() {\r\n return 0;\r\n },\r\n end: function() {\r\n return duration;\r\n },\r\n length: 1\r\n };\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'supportPlaybackRate', {\r\n get: function() {\r\n return supportPlaybackRate;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'validRateSettings', {\r\n get: function() {\r\n return availableRateSettings;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'volume', {\r\n get: function() {\r\n return volume;\r\n },\r\n set: function(value) {\r\n //Youtube player decided to let volume be 1-100 instead of html5 spec 0-1\r\n var scaledValue = value * 100;\r\n player.setVolume && player.setVolume(scaledValue);\r\n volume = value;\r\n dispatchEvent('volumechange', null);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, 'muted', {\r\n get: function() {\r\n return muted;\r\n },\r\n set: function(value) {\r\n if (muted !== value) {\r\n muted = value;\r\n dispatchEvent('volumechange', null);\r\n }\r\n\r\n if (value) {\r\n player.mute && player.mute();\r\n } else {\r\n player.unMute && player.unMute();\r\n }\r\n }\r\n });\r\n\r\n this.play = function() {\r\n player.playVideo();\r\n };\r\n\r\n this.pause = function() {\r\n player.pauseVideo();\r\n };\r\n\r\n this.attr = function(property, value) {\r\n var domPlayer = document.getElementById(iFrameId);\r\n domPlayer.setAttribute(property, value);\r\n };\r\n\r\n this.load = function() {\r\n //Do nothing\r\n };\r\n\r\n var heartbeat = function() {\r\n if (typeof player.getCurrentTime === 'undefined') {\r\n return;\r\n }\r\n var time = player.getCurrentTime();\r\n if (currentTime !== time) {\r\n currentTime = time;\r\n dispatchEvent('timeupdate', time);\r\n }\r\n var videoLoadedFraction = player.getVideoLoadedFraction;\r\n if (typeof videoLoadedFraction === 'undefined' || videoLoadedFraction === null) {\r\n return;\r\n }\r\n var percentLoaded = player.getVideoLoadedFraction();\r\n\r\n if (loadedPercent !== percentLoaded) {\r\n loadedPercent = percentLoaded;\r\n dispatchEvent('progress');\r\n // not really sure on this, but if it's at 99%, should be able to play through...\r\n if (loadedPercent > 0.99) {\r\n dispatchEvent('canplaythrough');\r\n }\r\n }\r\n };\r\n setInterval(heartbeat, 100);\r\n };\r\n\r\n namespace.youTube.init = function(videoUrl, videoDiv, onReady, onFirstPlay, onError, playerWidth, playerHeight, startTime) {\r\n var videoId = youtubeIdParser.getIdFromUrl(videoUrl);\r\n\r\n if (window.onYouTubeIframeAPIReady.ready) {\r\n namespace.youTube.player = new youTubePlayer(videoId, videoDiv, onReady, onFirstPlay, onError, playerWidth, playerHeight, startTime);\r\n } else {\r\n window.onYouTubeIframeAPIReady.queued.push(function() {\r\n namespace.youTube.player = new youTubePlayer(videoId, videoDiv, onReady, onFirstPlay, onError, playerWidth, playerHeight, startTime);\r\n });\r\n }\r\n };\r\n namespace.youTube.addApi = function() {\r\n var youTubeApiFound = $(\"script[src='\" + youTubeApiUri + \"']\").length;\r\n if (!youTubeApiFound) {\r\n $.getScript(youTubeApiUri);\r\n }\r\n return !youTubeApiFound;\r\n };\r\n})(window, window.document, window.jQuery, window.Q, window.TSC.playerConfiguration, window.TSC.deviceInfo, window.TSC.playedTracker, window.TSC.youtubeIdParser);\r\n","(function(window, searchToolDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.searchTool = searchToolDefinition(namespace.textSanitizer);\r\n})(this, function(textSanitizer) {\r\n 'use strict';\r\n\r\n var TIME_SALT = new Date().getMilliseconds();\r\n var UNIQUE_TOKEN_1 = 'MJB_!_1_@__#_' + TIME_SALT;\r\n var UNIQUE_TOKEN_2 = 'MJB_!_2_@__#_' + TIME_SALT;\r\n var REGEX_REPLACEMENT_STRING = UNIQUE_TOKEN_1 + '$1' + UNIQUE_TOKEN_2;\r\n var TOKEN_1_REGEX = new RegExp(UNIQUE_TOKEN_1, 'g');\r\n var TOKEN_2_REGEX = new RegExp(UNIQUE_TOKEN_2, 'g');\r\n var REGEX_ESCAPE = /[.*+?^${}()|[\\]\\\\]/g;\r\n\r\n var createHighlightedText = function(text, searchRegex) {\r\n var textWithSearchMatchPlaceholders = text.replace(searchRegex, REGEX_REPLACEMENT_STRING);\r\n var sanitizedText = textSanitizer.htmlEncode(textWithSearchMatchPlaceholders);\r\n return sanitizedText.replace(TOKEN_1_REGEX, '')\r\n .replace(TOKEN_2_REGEX, '');\r\n };\r\n\r\n var simpleSearch = function(items, searchString) {\r\n var matches = [];\r\n if (!searchString) {\r\n return matches;\r\n }\r\n\r\n var searchRegex = new RegExp('(' + searchString.replace(REGEX_ESCAPE, '\\\\$&') + ')', 'gi');\r\n\r\n items.forEach(function(item) {\r\n var itemText = item.plainText || item.text || item.name || '';\r\n if (itemText.toLowerCase().indexOf(searchString) !== -1) {\r\n matches.push({\r\n rawText: itemText,\r\n text: createHighlightedText(itemText, searchRegex),\r\n startTime: item.startTime,\r\n file: item.file,\r\n imageRef: item.image,\r\n imageRect: item.imageRectangle\r\n });\r\n }\r\n });\r\n return matches;\r\n };\r\n\r\n var searchXmpForString = function(xmp, searchString) {\r\n searchString = searchString.toLowerCase();\r\n var itemsToSearch = xmp.tocItemArray.concat(xmp.captionItems).concat(xmp.screenTextItemArray);\r\n\r\n // captions are speech to text converted\r\n if (xmp.captionItems.length < 1 && xmp.speechTextItemArray.length > 0) {\r\n itemsToSearch = itemsToSearch.concat(xmp.speechTextItemArray);\r\n }\r\n\r\n return simpleSearch(itemsToSearch, searchString);\r\n };\r\n\r\n return {\r\n searchXmpForString: searchXmpForString\r\n };\r\n});\r\n","(function(window, captionsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.CaptionsView = captionsViewFactory(window,\r\n window.$,\r\n namespace.localStorageWrapper,\r\n namespace.playerConfiguration,\r\n namespace.templates,\r\n namespace.localizationStrings,\r\n namespace.cssClasses,\r\n namespace.tabIndex,\r\n namespace.events,\r\n namespace.languageCodes);\r\n})(this, function(window, $, localStorageWrapper, playerConfiguration, templates, localizationStrings, cssClasses, tabIndex, events, languageCodes) {\r\n 'use strict';\r\n\r\n var _ccCacheKey = 'captionEnabled';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class CaptionsView\r\n * @classdesc Captions View\r\n */\r\n\r\n var CaptionsView = function($container, captionsService) {\r\n var _markup = templates.captions_view_template({\r\n accessBtnClosedCaption: localizationStrings.strings.accessBtnClosedCaption,\r\n closedCaptionIndex: tabIndex.ClosedCaption\r\n });\r\n\r\n $container.find('.caption-wrapper').html(_markup);\r\n\r\n var _$controls = $container.find('#controls');\r\n var _$positionContainer = $container.find('.caption');\r\n var _$textContainer = $container.find('.caption > p');\r\n var _$closedCaptionButton = $container.find('.closed-caption-button');\r\n var _$closedCaptionGlyph = $container.find('.closed-caption-button-glyph');\r\n\r\n var _cachedCC = localStorageWrapper.getItem(_ccCacheKey);\r\n var _cachedCCValue = _cachedCC === 'true';\r\n var _fontSizeNormalized = captionsService.fontSize;\r\n var _canvasScale = 1.0;\r\n // if position is 'under' captions start as visible and the user cannot hide, else it is from config option\r\n var _visible = captionsService.position === 'under' ? true : playerConfiguration.getCaptionsEnabled();\r\n var _currentCaptionIndex = -1;\r\n\r\n var onClosedCaptionButtonClick = function() {\r\n setVisible(!_visible);\r\n localStorageWrapper.setItem(_ccCacheKey, _visible);\r\n handleDisplayCaptions();\r\n };\r\n\r\n var onCaptionLanguageChanged = function() {\r\n if (_currentCaptionIndex !== -1) {\r\n var currentCaption = captionsService.captionTrack.captionCollection.captions[_currentCaptionIndex];\r\n _$textContainer.html(currentCaption.markupText.replace('¶', '&para'));\r\n }\r\n };\r\n\r\n var disableControl = function() {\r\n _$closedCaptionButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$closedCaptionButton.attr('tabindex', tabIndex.ClosedCaption);\r\n };\r\n\r\n var setupEvents = function() {\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n $container.on(events.Captions.LanguageChanged, onCaptionLanguageChanged);\r\n\r\n _$closedCaptionButton.on('click', onClosedCaptionButtonClick);\r\n };\r\n\r\n var destroy = function() {\r\n $container.off(events.Controls.Disable, disableControl);\r\n $container.off(events.Controls.Enable, enableControl);\r\n $container.off(events.Captions.LanguageChanged, onCaptionLanguageChanged);\r\n _$closedCaptionButton.off('click', onClosedCaptionButtonClick);\r\n };\r\n\r\n var updateStyles = function() {\r\n _$textContainer.css({\r\n 'font-family': captionsService.fontEnclosedWithQuotes,\r\n color: captionsService.textColor.toString(),\r\n background: captionsService.backgroundColor.toString()\r\n });\r\n\r\n if (captionsService.position === 'under') {\r\n // toHexString masks the alpha component so we get a non-transparent full bg\r\n _$positionContainer.css('background', captionsService.backgroundColor.toHexString());\r\n _$positionContainer.addClass('caption_under_video');\r\n _$positionContainer.removeClass(cssClasses.hide);\r\n }\r\n };\r\n\r\n var setVisible = function(value) {\r\n if (value === true) {\r\n _$positionContainer.removeClass(cssClasses.hide);\r\n _$closedCaptionButton.attr('aria-expanded', true);\r\n _$closedCaptionButton.attr('aria-pressed', true);\r\n } else {\r\n _$positionContainer.addClass(cssClasses.hide);\r\n _$closedCaptionButton.attr('aria-expanded', false);\r\n _$closedCaptionButton.attr('aria-pressed', false);\r\n }\r\n _visible = value;\r\n };\r\n\r\n var setScale = function(value) {\r\n _canvasScale = value;\r\n\r\n var fontSize = Math.round(captionsService.fontSize * _canvasScale);\r\n fontSize = Math.min(Math.max(captionsService.fontSizeMin, fontSize), captionsService.fontSizeMax);\r\n _fontSizeNormalized = fontSize;\r\n\r\n if (captionsService.position === 'under') {\r\n _$positionContainer.css('height', captionsService.height * _canvasScale + 'px');\r\n }\r\n _$textContainer.css('font-size', _fontSizeNormalized);\r\n updateStyles();\r\n };\r\n\r\n var getVerticalAlignmentClass = function(verticalAlignment) {\r\n return verticalAlignment === 'top' ? 'captionVAlignTop' : 'captionVAlignBottom';\r\n };\r\n\r\n var getHorizontalAlignmentClass = function(horizontalAlignment) {\r\n switch (horizontalAlignment) {\r\n case 'left':\r\n return 'captionHAlignLeft';\r\n case 'right':\r\n return 'captionHAlignRight';\r\n default:\r\n return 'captionHAlignCenter';\r\n }\r\n };\r\n\r\n var handleDisplayCaptions = function() {\r\n if (captionsService.hasCaptions) {\r\n // deal with setting up captions 'under' video, causes us to restructure DOM elements a little =(\r\n if (captionsService.position === 'under') {\r\n playerConfiguration.setAutoHideControls(false);\r\n _$controls.addClass('caption_under_video');\r\n } else {\r\n var normalButtonClass = cssClasses.closedCaptionButtonGlyph;\r\n var activeButtonClass = cssClasses.closedCaptionButtonActiveGlyph;\r\n if (localizationStrings.getLanguage() !== languageCodes.ENGLISH) {\r\n normalButtonClass = cssClasses.closedCaptionNonEnglishButtonGlyph;\r\n activeButtonClass = cssClasses.closedCaptionNonEnglishButtonActiveGlyph;\r\n }\r\n _$closedCaptionButton.removeClass(cssClasses.hide);\r\n if (_visible === true) {\r\n _$closedCaptionGlyph.removeClass(normalButtonClass).addClass(activeButtonClass);\r\n _$closedCaptionButton.removeClass(cssClasses.tertiaryButton).addClass(cssClasses.tertiaryButtonActive);\r\n } else {\r\n _$closedCaptionGlyph.removeClass(activeButtonClass).addClass(normalButtonClass);\r\n _$closedCaptionButton.removeClass(cssClasses.tertiaryButtonActive).addClass(cssClasses.tertiaryButton);\r\n }\r\n }\r\n updateStyles();\r\n setScale(_canvasScale);\r\n } else {\r\n _$closedCaptionButton.addClass(cssClasses.hide);\r\n }\r\n };\r\n\r\n var updateCaption = function(currentTime, currentFile) {\r\n if (!captionsService.hasCaptions) {\r\n _$textContainer.html('');\r\n return;\r\n }\r\n\r\n var newCaptionIndex = -1;\r\n\r\n $.each(captionsService.captionTrack.captionCollection.captions, function(i, caption) {\r\n // this check is for playlist config, single media player use doesn't match here\r\n if (caption.file !== undefined && caption.file !== currentFile) {\r\n return;\r\n }\r\n\r\n if (caption.startTime <= currentTime && currentTime <= caption.endTime) {\r\n newCaptionIndex = i;\r\n }\r\n });\r\n\r\n if (newCaptionIndex === -1) {\r\n _$textContainer.html('');\r\n _currentCaptionIndex = -1;\r\n return;\r\n }\r\n\r\n if (newCaptionIndex !== _currentCaptionIndex) {\r\n _currentCaptionIndex = newCaptionIndex;\r\n var newCaption = captionsService.captionTrack.captionCollection.captions[newCaptionIndex];\r\n\r\n if (!(newCaption && newCaption.markupText)) {\r\n return;\r\n }\r\n\r\n _$positionContainer.removeClass('captionHAlignLeft captionHAlignCenter captionHAlignRight');\r\n _$positionContainer.addClass(getHorizontalAlignmentClass(newCaption.horizontalAlignment));\r\n\r\n _$positionContainer.removeClass('captionVAlignTop captionVAlignBottom');\r\n _$positionContainer.addClass(getVerticalAlignmentClass(newCaption.verticalAlignment));\r\n\r\n _$textContainer.html(newCaption.markupText.replace('¶', '&para'));\r\n\r\n updateStyles();\r\n $container.trigger(events.Captions.Changed, newCaption);\r\n }\r\n };\r\n\r\n if (localizationStrings.getLanguage() !== languageCodes.ENGLISH) {\r\n _$closedCaptionGlyph.removeClass(cssClasses.closedCaptionButtonGlyph).addClass(cssClasses.closedCaptionNonEnglishButtonGlyph);\r\n }\r\n\r\n if (!playerConfiguration.getIgnoreStoredCaptionVisibleSetting() && !_visible && _cachedCCValue) {\r\n setVisible(true);\r\n } else {\r\n setVisible(_visible);\r\n }\r\n\r\n setupEvents();\r\n\r\n return Object.defineProperties({\r\n updateCaption: updateCaption,\r\n handleDisplayCaptions: handleDisplayCaptions,\r\n destroy: destroy\r\n }, {\r\n visible: {\r\n get: function() {\r\n return _visible;\r\n },\r\n set: setVisible\r\n },\r\n scale: {\r\n get: function() {\r\n return _canvasScale;\r\n },\r\n set: function(value) {\r\n setScale(value);\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new CaptionsView object.\r\n * @function create\r\n * @memberof TSC.CaptionsView\r\n * @static\r\n * @param {Object} $container - jQuery element that is the smartplayer top-level container that contains #controls, .closed-caption-button, .caption, .caption > p\r\n * @param {TSC.CaptionService} CaptionService - a TSC.captionService created object\r\n * @return new CaptionView instance\r\n */\r\n create: CaptionsView\r\n };\r\n});\r\n","(function(window, audioDescriptionControlViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.AudioDescriptionControlView = audioDescriptionControlViewFactory(window,\r\n namespace.templates,\r\n namespace.localizationStrings,\r\n namespace.cssClasses,\r\n namespace.events,\r\n namespace.tabIndex);\r\n})(this, function(window,\r\n templates,\r\n localizationStrings,\r\n cssClasses,\r\n events,\r\n tabIndex) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class AudioDescriptionControlView\r\n * @classdesc Audio Description Control View\r\n * @param {Object} $container - jQuery element that contains a .audio-description-control-wrapper element where the control will be injected\r\n */\r\n var AudioDescriptionControlView = function($container) {\r\n var _audioDescriptionEnabled = false;\r\n var _$audioDescriptionButton;\r\n var _$audioDescriptionGlyph;\r\n\r\n var createView = function() {\r\n var buttonTitle = localizationStrings.strings.accessBtnAudioDescription;\r\n\r\n var _markup = templates.audio_description_button_template({\r\n accessBtnAudioDescription: buttonTitle,\r\n fullscreenIndex: tabIndex.AudioDescription\r\n });\r\n\r\n $container.find('.audio-description-control-wrapper').html(_markup);\r\n _$audioDescriptionButton = $container.find('.audio-description-button');\r\n _$audioDescriptionGlyph = $container.find('.audio-description-button-glyph');\r\n };\r\n\r\n var onButtonClick = function(e) {\r\n e.preventDefault();\r\n _audioDescriptionEnabled = !_audioDescriptionEnabled;\r\n\r\n if (_audioDescriptionEnabled) {\r\n _$audioDescriptionButton.attr('aria-pressed', true);\r\n _$audioDescriptionGlyph.removeClass(cssClasses.audioDescriptionButtonGlyph).addClass(cssClasses.audioDescriptionButtonActiveGlyph);\r\n _$audioDescriptionButton.removeClass(cssClasses.tertiaryButton).addClass(cssClasses.tertiaryButtonActive);\r\n } else {\r\n _$audioDescriptionButton.attr('aria-pressed', false);\r\n _$audioDescriptionGlyph.removeClass(cssClasses.audioDescriptionButtonActiveGlyph).addClass(cssClasses.audioDescriptionButtonGlyph);\r\n _$audioDescriptionButton.removeClass(cssClasses.tertiaryButtonActive).addClass(cssClasses.tertiaryButton);\r\n }\r\n\r\n $container.trigger(events.AudioDescription.Changed, {audioDescriptionEnabled: _audioDescriptionEnabled});\r\n };\r\n\r\n var audioDescriptionFailedToPlay = function() {\r\n _$audioDescriptionButton.attr('disabled', true);\r\n };\r\n\r\n var disableControl = function() {\r\n _$audioDescriptionButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$audioDescriptionButton.attr('tabindex', tabIndex.AudioDescription);\r\n };\r\n\r\n var initializeHandlers = function() {\r\n _$audioDescriptionButton.on('click', onButtonClick);\r\n $container.on(events.AudioDescription.Failed, audioDescriptionFailedToPlay);\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n };\r\n\r\n var destroy = function() {\r\n $container.off(events.AudioDescription.Failed, audioDescriptionFailedToPlay);\r\n $container.off(events.Controls.Disable, disableControl);\r\n $container.off(events.Controls.Enable, enableControl);\r\n _$audioDescriptionButton.off('click', onButtonClick);\r\n };\r\n\r\n createView();\r\n initializeHandlers();\r\n\r\n return Object.defineProperties({\r\n destroy: destroy\r\n }, {});\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new AudioDescriptionControlView object.\r\n * @function create\r\n * @memberof TSC.AudioDescriptionControlView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .audio-description-control-wrapper element where the control will be injected\r\n * @return new AudioDescriptionControlView instance\r\n */\r\n create: AudioDescriptionControlView\r\n };\r\n});\r\n","(function(window, audioDescriptionTrackViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.AudioDescriptionTrackView = audioDescriptionTrackViewFactory(\r\n namespace.templates,\r\n namespace.events);\r\n})(this, function(templates, events) {\r\n 'use strict';\r\n\r\n var SYNC_TOLERANCE_TIME_IN_SECONDS = .5;\r\n var BUFFER_TIME_OFFSET_IN_SECONDS = 1;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class AudioDescriptionTrackView\r\n * @classdesc Audio Description Track\r\n * @param {Object} $container - jQuery element to add audio description track audio dom.\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @param {String} audioDescriptionMediaSrc - Audio source string\r\n */\r\n var AudioDescriptionTrackView = function($container, mediaElement, audioDescriptionMediaSrc) {\r\n var _audioDescriptionAudioEl = null;\r\n var _audioTrackEnabled = false;\r\n var _videoIsSeeking = false;\r\n var _videoIsBuffering = false;\r\n var _lastBufferedVideoTime = 0;\r\n\r\n var onAudioError = function() {\r\n destroy();\r\n $container.trigger(events.AudioDescription.Failed);\r\n };\r\n\r\n var createView = function() {\r\n var _markup = templates.audio_description_track_template({\r\n audioDescriptionTrackSrc: audioDescriptionMediaSrc\r\n });\r\n\r\n $container.find('.audio-description-track-wrapper').html(_markup);\r\n _audioDescriptionAudioEl = $container.find('.audio-description-track')[0];\r\n };\r\n\r\n var syncAudioTimeWithVideoTime = function() {\r\n if (!isNaN(_audioDescriptionAudioEl.duration)) {\r\n _audioDescriptionAudioEl.currentTime = mediaElement.currentTime;\r\n }\r\n };\r\n\r\n var syncAudioVolumeWithVideoVolume = function() {\r\n _audioDescriptionAudioEl.volume = mediaElement.muted ? 0 : mediaElement.volume;\r\n };\r\n\r\n var syncAudioPlaybackRateWithVideoPlaybackRate = function() {\r\n _audioDescriptionAudioEl.playbackRate = mediaElement.playbackRate;\r\n _audioDescriptionAudioEl.defaultPlaybackRate = mediaElement.playbackRate;\r\n };\r\n\r\n var pauseAudioDescription = function() {\r\n _audioDescriptionAudioEl.pause();\r\n };\r\n\r\n var onVideoPlaying = function() {\r\n syncAudioTimeWithVideoTime();\r\n };\r\n\r\n var onVideoStartSeeking = function() {\r\n _videoIsSeeking = true;\r\n\r\n // some browsers do not fire 'waiting' event when seeking and no data is buffered\r\n // manually fire this to make sure player pauses audio and checks for video buffering\r\n onWaiting();\r\n\r\n _audioDescriptionAudioEl.volume = 0;\r\n pauseAudioDescription();\r\n };\r\n\r\n var onVideoSeeked = function() {\r\n _videoIsSeeking = false;\r\n syncAudioTimeWithVideoTime();\r\n };\r\n\r\n var playAudioDescriptionIfVideoIsPlaying = function() {\r\n if (mediaElement.paused || _videoIsBuffering) {\r\n return;\r\n }\r\n var promise = _audioDescriptionAudioEl.play();\r\n if (promise !== undefined) {\r\n promise.catch(function() {}); // eslint-disable-line\r\n }\r\n };\r\n\r\n var onRateChange = function() {\r\n syncAudioPlaybackRateWithVideoPlaybackRate();\r\n syncAudioTimeWithVideoTime();\r\n };\r\n\r\n var onAudioTrackSeeked = function() {\r\n if (_videoIsSeeking) {\r\n return;\r\n }\r\n\r\n var mediaTimeDelta = Math.abs(mediaElement.currentTime - _audioDescriptionAudioEl.currentTime);\r\n if (mediaTimeDelta >= SYNC_TOLERANCE_TIME_IN_SECONDS) {\r\n syncAudioTimeWithVideoTime();\r\n } else {\r\n syncAudioVolumeWithVideoVolume();\r\n playAudioDescriptionIfVideoIsPlaying();\r\n }\r\n };\r\n\r\n var onAudioDescriptionControlChange = function(e, eventData) {\r\n e.preventDefault();\r\n _audioTrackEnabled = eventData.audioDescriptionEnabled;\r\n _audioDescriptionAudioEl.muted = !_audioTrackEnabled;\r\n syncAudioTimeWithVideoTime();\r\n playAudioDescriptionIfVideoIsPlaying();\r\n };\r\n\r\n var onWaiting = function() {\r\n _videoIsBuffering = true;\r\n if (!_audioDescriptionAudioEl.paused) {\r\n pauseAudioDescription();\r\n }\r\n };\r\n\r\n var onTimeUpdate = function() {\r\n if (_videoIsBuffering) {\r\n var timeDiff = Math.abs(mediaElement.currentTime - _lastBufferedVideoTime);\r\n if (timeDiff > BUFFER_TIME_OFFSET_IN_SECONDS) {\r\n _videoIsBuffering = false;\r\n syncAudioTimeWithVideoTime();\r\n }\r\n } else {\r\n _lastBufferedVideoTime = mediaElement.currentTime;\r\n }\r\n };\r\n\r\n var initializeHandlers = function() {\r\n _audioDescriptionAudioEl.addEventListener('error', onAudioError);\r\n _audioDescriptionAudioEl.addEventListener('seeked', onAudioTrackSeeked);\r\n _audioDescriptionAudioEl.addEventListener('pause', syncAudioTimeWithVideoTime);\r\n $container.on(events.AudioDescription.Changed, onAudioDescriptionControlChange);\r\n mediaElement.addEventListener('playing', onVideoPlaying);\r\n mediaElement.addEventListener('seeking', onVideoStartSeeking);\r\n mediaElement.addEventListener('seeked', onVideoSeeked);\r\n mediaElement.addEventListener('pause', pauseAudioDescription);\r\n mediaElement.addEventListener('volumechange', syncAudioVolumeWithVideoVolume);\r\n mediaElement.addEventListener('ratechange', onRateChange);\r\n mediaElement.addEventListener('ended', pauseAudioDescription);\r\n mediaElement.addEventListener('waiting', onWaiting);\r\n mediaElement.addEventListener('timeupdate', onTimeUpdate);\r\n };\r\n\r\n var destroy = function() {\r\n _audioDescriptionAudioEl.removeEventListener('error', onAudioError);\r\n _audioDescriptionAudioEl.removeEventListener('seeked', onAudioTrackSeeked);\r\n _audioDescriptionAudioEl.removeEventListener('pause', syncAudioTimeWithVideoTime);\r\n $container.off(events.AudioDescription.Changed, onAudioDescriptionControlChange);\r\n mediaElement.removeEventListener('playing', onVideoPlaying);\r\n mediaElement.removeEventListener('seeking', onVideoStartSeeking);\r\n mediaElement.removeEventListener('seeked', syncAudioTimeWithVideoTime);\r\n mediaElement.removeEventListener('pause', pauseAudioDescription);\r\n mediaElement.removeEventListener('volumechange', syncAudioVolumeWithVideoVolume);\r\n mediaElement.removeEventListener('ratechange', onRateChange);\r\n mediaElement.removeEventListener('ended', pauseAudioDescription);\r\n mediaElement.removeEventListener('waiting', onWaiting);\r\n mediaElement.removeEventListener('timeupdate', onTimeUpdate);\r\n };\r\n\r\n createView();\r\n initializeHandlers();\r\n syncAudioVolumeWithVideoVolume();\r\n\r\n return Object.defineProperties({\r\n destroy: destroy\r\n }, {});\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new AudioDescriptionTrackView object.\r\n * @function create\r\n * @memberof TSC.AudioDescriptionTrackView\r\n * @param {Object} $container - jQuery element to add audio description track audio dom.\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @param {String} audioDescriptionMediaSrc - Audio source string\r\n * @static\r\n * @return new AudioDescriptionTrackView instance\r\n */\r\n create: AudioDescriptionTrackView\r\n };\r\n});\r\n","(function(window, tocViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.TocView = tocViewFactory(window,\r\n window.$,\r\n window.Q,\r\n namespace.templates,\r\n namespace.localizationStrings,\r\n namespace.playerConfiguration,\r\n namespace.deviceInfo,\r\n namespace.searchTool,\r\n namespace.events,\r\n namespace.keys,\r\n namespace.tabIndex,\r\n namespace.cssClasses,\r\n namespace.textSanitizer,\r\n namespace.highlightDisabler,\r\n namespace.hotkeyService);\r\n})(this, function(window, $, Q, templates, localizationStrings, playerConfiguration, deviceInfo, searchTool, events, keys, tabIndex, cssClasses, textSanitizer, highlightDisabler, hotkeyService) {\r\n 'use strict';\r\n\r\n var TOC_WIDTH = 250;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class TocView\r\n * @classdesc Table of Contents View\r\n * @param {Object} $container - jQuery element that contains a .toc-container element where ToC view will be injected, and a .toc-button-wrapper element where the toc toggle button will be injected\r\n * @param {TSC.Xmp} xmpModel - Xmp Model\r\n */\r\n var TocView = function($container, xmpModel) {\r\n var _viewVisible = false;\r\n var _viewIsOpen = false;\r\n var _searchFocus = false;\r\n var _scrolledToc = false;\r\n var _eventHandlers = {};\r\n var _keysEnabled = true;\r\n\r\n var _$tocHeadContainer = null;\r\n var _$searchContainer = null;\r\n var _$searchInput = null;\r\n var _$titleHeader = null;\r\n var _$clearSearchButton = null;\r\n var _$tocPipImageContainer = null;\r\n var _$searchInputDisabled = null;\r\n var _$tocContentScrollContainer = null;\r\n var _$tocContent = null;\r\n var _$tocContentScreenReaderLabel = null;\r\n var _$tocItemDomList = null;\r\n var _$tocButton;\r\n var _$tocGlyph;\r\n var _$tocContainer = $container.find('.toc-container');\r\n var _$noSearchResultsAlert = null;\r\n\r\n var _xmp = xmpModel;\r\n\r\n var _tocThumbsImage = null;\r\n var _tocPipImage = null;\r\n\r\n var createView = function() {\r\n var tocMarkup = templates.toc_template({\r\n searchLabel: localizationStrings.strings.search,\r\n msgSearch: localizationStrings.strings.searchPlaceholder,\r\n msgSearchIsDisabledInFS: localizationStrings.strings.searchDisabledFullScreen,\r\n accessBtnClearSearch: localizationStrings.strings.accessBtnClearSearch,\r\n tocSearchIndex: tabIndex.TOCSearch,\r\n tocEraseIndex: tabIndex.TOCErase\r\n });\r\n _$tocContainer.html(tocMarkup);\r\n\r\n _$tocHeadContainer = _$tocContainer.find('.toc-head-container');\r\n _$searchInput = _$tocContainer.find('.toc-search-input');\r\n _$titleHeader = _$tocContainer.find('.toc-media-title');\r\n _$searchContainer = _$tocContainer.find('.toc-search-container');\r\n _$clearSearchButton = _$tocContainer.find('.clear-search-button');\r\n _$tocPipImageContainer = _$tocContainer.find('.toc-pip-image-container');\r\n _$searchInputDisabled = _$tocContainer.find('.toc-full-screen-search-alert');\r\n _$tocContentScrollContainer = _$tocContainer.find('.toc-content-scroll-container');\r\n _$tocContent = _$tocContainer.find('.toc-content-container');\r\n _$tocContentScreenReaderLabel = _$tocContainer.find('#tocContentScreenReaderLabel');\r\n _$noSearchResultsAlert = $('
      ' + localizationStrings.strings.accessListNoSearchResults + '
      ');\r\n\r\n var tocButtonMarkup = templates.toc_button_template({\r\n accessBtnTableOfContents: localizationStrings.strings.accessBtnTableOfContents,\r\n tocIndex: tabIndex.TOC\r\n });\r\n\r\n $container.find('.toc-button-wrapper').html(tocButtonMarkup);\r\n\r\n _$tocButton = $container.find('.toc-button');\r\n _$tocGlyph = $container.find('.toc-button-glyph');\r\n\r\n var disableControl = function() {\r\n _$tocButton.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControl = function() {\r\n _$tocButton.attr('tabindex', tabIndex.TOC);\r\n };\r\n\r\n $container.on(events.Controls.Disable, disableControl);\r\n $container.on(events.Controls.Enable, enableControl);\r\n };\r\n\r\n var showView = function(animationSpeed) {\r\n if (animationSpeed) {\r\n _$tocContainer.stop(true, true).fadeIn(animationSpeed);\r\n } else {\r\n _$tocContainer.show();\r\n }\r\n\r\n _$tocGlyph.removeClass(cssClasses.tocButtonGlyph).addClass(cssClasses.tocButtonActiveGlyph);\r\n _$tocButton.attr('aria-expanded', true);\r\n _$tocButton.removeClass(cssClasses.tertiaryButton).addClass(cssClasses.tertiaryButtonActive);\r\n _viewVisible = true;\r\n };\r\n\r\n var hideView = function(animationSpeed) {\r\n if (animationSpeed) {\r\n _$tocContainer.stop(true, true).fadeOut(animationSpeed);\r\n } else {\r\n _$tocContainer.hide();\r\n }\r\n\r\n _$tocGlyph.removeClass(cssClasses.tocButtonActiveGlyph).addClass(cssClasses.tocButtonGlyph);\r\n _$tocButton.attr('aria-expanded', false);\r\n _$tocButton.removeClass(cssClasses.tertiaryButtonActive).addClass(cssClasses.tertiaryButton);\r\n _viewVisible = false;\r\n };\r\n\r\n var openView = function() {\r\n _viewIsOpen = true;\r\n showView();\r\n };\r\n\r\n var closeView = function() {\r\n _viewIsOpen = false;\r\n hideView();\r\n };\r\n\r\n var blurSearchInput = function() {\r\n _$searchInput.blur();\r\n };\r\n\r\n var resizeView = function() {\r\n var headerHeight = _$tocHeadContainer.height();\r\n _$tocContentScrollContainer.css('top', headerHeight + 'px');\r\n };\r\n\r\n var addEventListener = function(eventName, eventCallback) {\r\n if (typeof eventCallback !== 'function') {\r\n throw Error('Toc View : addEventListener expects eventCallback to be a function.');\r\n }\r\n _eventHandlers[eventName] = eventCallback;\r\n };\r\n\r\n var removeEventListener = function(eventName) {\r\n delete _eventHandlers[eventName];\r\n };\r\n\r\n var loadTocPipImage = function() {\r\n var defer = Q.defer();\r\n _tocPipImage = new Image();\r\n _tocPipImage.onerror = function() {\r\n defer.reject();\r\n };\r\n _tocPipImage.onload = function() {\r\n defer.resolve();\r\n };\r\n\r\n _tocPipImage.src = _xmp.tocImageSrc;\r\n\r\n return defer.promise;\r\n };\r\n\r\n var displayTocPipImage = function() {\r\n var imageWidth = _tocPipImage.width;\r\n var imageHeight = _tocPipImage.height;\r\n var scale = 1;\r\n var targetWidth;\r\n var targetHeight;\r\n var scaledReduction = .60;\r\n var padding = 20;\r\n\r\n if (imageHeight <= imageWidth) {\r\n if (imageWidth > TOC_WIDTH - padding) {\r\n scale = (TOC_WIDTH - padding) / imageWidth;\r\n targetWidth = TOC_WIDTH - padding;\r\n targetHeight = imageHeight * scale;\r\n } else {\r\n targetWidth = imageWidth;\r\n targetHeight = imageHeight;\r\n }\r\n } else if (imageHeight > TOC_WIDTH - padding) {\r\n scale = (imageWidth * scaledReduction - padding) / imageHeight;\r\n targetHeight = TOC_WIDTH * scaledReduction - padding;\r\n targetWidth = imageWidth * scale;\r\n } else {\r\n targetHeight = imageHeight;\r\n targetWidth = imageWidth;\r\n }\r\n\r\n var pipImageBackgroundStyle = 'background: url(' + _xmp.tocImageSrc + ') no-repeat;' +\r\n 'width: ' + targetWidth + 'px;' +\r\n 'height: ' + targetHeight + 'px;' +\r\n 'margin-left: ' + (TOC_WIDTH - targetWidth) / 2 + 'px;' +\r\n 'margin-right:' + (TOC_WIDTH - targetWidth) / 2 + 'px;';\r\n\r\n var pipImageBackground = $('
      ', {\r\n class: 'toc-pip-image-background',\r\n style: pipImageBackgroundStyle\r\n });\r\n\r\n _$tocPipImageContainer.append(pipImageBackground);\r\n _$tocPipImageContainer.show();\r\n };\r\n\r\n var loadTocThumbnailImage = function(tocThumbnailImageSrc) {\r\n var defer = Q.defer();\r\n\r\n if (_xmp.tocContainsThumbs) {\r\n _tocThumbsImage = new Image();\r\n _tocThumbsImage.onload = function() {\r\n defer.resolve();\r\n };\r\n _tocThumbsImage.onerror = function() {\r\n _tocThumbsImage.onload = undefined;\r\n _tocThumbsImage.onerror = undefined;\r\n _tocThumbsImage = null;\r\n defer.resolve();\r\n };\r\n _tocThumbsImage.src = tocThumbnailImageSrc;\r\n } else {\r\n defer.resolve();\r\n }\r\n\r\n return defer.promise;\r\n };\r\n\r\n var setupTocPosition = function() {\r\n _$tocContainer.toggleClass('right', playerConfiguration.getSidebarLocation() === 'right');\r\n };\r\n\r\n var setupSearch = function() {\r\n if (!playerConfiguration.getIsSearchable()) {\r\n _$searchContainer.hide();\r\n }\r\n };\r\n\r\n var setupTocHeader = function() {\r\n if (_xmp.tocImageSrc) {\r\n loadTocPipImage().then(displayTocPipImage).catch(function() {\r\n console.warn('Failed to load toc pip image ', _xmp.tocImageSrc);\r\n });\r\n }\r\n\r\n _$titleHeader.text(_xmp.title);\r\n };\r\n\r\n var clearTocContent = function() {\r\n _$tocContent.empty();\r\n };\r\n\r\n var generateTocItemThumbnail = function(tocItemThumbnailCanvasEl, imageThumbRect) {\r\n var defaultBgColor = '#000';\r\n var tocCellPadding = 20;\r\n var xPos = Number(imageThumbRect.x);\r\n var yPos = Number(imageThumbRect.y);\r\n var imageWidth = Number(imageThumbRect.width);\r\n var imageHeight = Number(imageThumbRect.height);\r\n\r\n var thumbScale = 1;\r\n if (imageWidth > TOC_WIDTH / 2 - tocCellPadding) {\r\n thumbScale = (TOC_WIDTH / 2 - tocCellPadding) / imageWidth;\r\n imageWidth = TOC_WIDTH / 2 - tocCellPadding;\r\n }\r\n\r\n var ctx = tocItemThumbnailCanvasEl.getContext('2d');\r\n tocItemThumbnailCanvasEl.width = imageWidth * thumbScale;\r\n tocItemThumbnailCanvasEl.height = imageHeight * thumbScale;\r\n ctx.scale(thumbScale, thumbScale);\r\n\r\n if (_tocThumbsImage) {\r\n ctx.drawImage(_tocThumbsImage, xPos, yPos, imageWidth, imageHeight, 0, 0, imageWidth, imageHeight);\r\n } else {\r\n ctx.fillStyle = defaultBgColor;\r\n ctx.fillRect(0, 0, imageWidth, imageHeight);\r\n }\r\n };\r\n\r\n var createTocItem = function(tocText, tocRawText, tocTime, tocFile, tocItemThumbnailCanvasEl, imageThumbRect, showText, showThumbnail) {\r\n var dataTocTime = 'data-time=' + tocTime;\r\n var dataFileText = tocFile ? 'data-file=' + tocFile : '';\r\n var centerContent = !showText;\r\n\r\n var tocItemMarkup = templates.toc_item_template({\r\n dataTocTime: dataTocTime,\r\n dataFileText: dataFileText,\r\n showThumbnail: showThumbnail,\r\n centerContent: centerContent,\r\n showText: showText,\r\n tocItemText: tocText,\r\n tocItemRawText: tocRawText,\r\n tocItemIndex: tabIndex.TOCItem\r\n });\r\n\r\n var $tocItem = $($.parseHTML(tocItemMarkup));\r\n\r\n if (showThumbnail) {\r\n generateTocItemThumbnail(tocItemThumbnailCanvasEl, imageThumbRect);\r\n tocItemThumbnailCanvasEl.classList.add('toc-item-thumbnail');\r\n $tocItem.find('.thumbnail-placeholder').replaceWith(tocItemThumbnailCanvasEl);\r\n }\r\n\r\n return $tocItem;\r\n };\r\n\r\n var createTocItems = function() {\r\n _$tocItemDomList = [];\r\n\r\n var tocItems = _xmp.tocItemArray;\r\n tocItems.forEach(function(tocItem) {\r\n var thumbnailCanvasEl = tocItem.imageRectangle ? document.createElement('canvas') : undefined;\r\n var showThumbnail = !!thumbnailCanvasEl;\r\n var showText = _xmp.tocCellLayoutType !== 'imageOnly' || !showThumbnail;\r\n _$tocItemDomList.push(createTocItem(textSanitizer.htmlEncode(tocItem.name), tocItem.name, tocItem.startTime, tocItem.file, thumbnailCanvasEl, tocItem.imageRectangle, showText, showThumbnail));\r\n });\r\n };\r\n\r\n var displayTocItems = function() {\r\n clearTocContent();\r\n\r\n if (_$tocItemDomList === null) {\r\n createTocItems();\r\n }\r\n\r\n _$tocContentScreenReaderLabel.html(localizationStrings.strings.accessListTableOfContents);\r\n _$tocContent.append(_$tocItemDomList);\r\n };\r\n\r\n var setupView = function() {\r\n setupTocPosition();\r\n setupSearch();\r\n setupTocHeader();\r\n\r\n loadTocThumbnailImage(_xmp.tocThumbImageSrc).then(displayTocItems);\r\n\r\n if (playerConfiguration.getSidebarEnabled()) {\r\n _$tocButton.removeClass('toc_off_button_normal').addClass('toc-button-normal').attr('aria-expanded', true);\r\n openView();\r\n $container.trigger(events.Controls.ShowToc);\r\n } else {\r\n _$tocButton.removeClass('toc-button-normal').addClass('toc_off_button_normal').attr('aria-expanded', false);\r\n }\r\n\r\n _$tocContainer.click(function(e) {\r\n e.stopPropagation();\r\n });\r\n };\r\n\r\n var tocItemClickHandler = function(event) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n\r\n if (deviceInfo.isTouchInterface() && _scrolledToc) {\r\n return;\r\n }\r\n seekToTocItem(event.currentTarget);\r\n };\r\n\r\n var seekToTocItem = function(target) {\r\n if (_eventHandlers.clickTocItem) {\r\n var $currentTarget = $(target);\r\n var timeToSeekTo = Number($currentTarget.attr('data-time')) / 1000;\r\n var fileToSeekTo = $currentTarget.attr('data-file');\r\n _eventHandlers.clickTocItem(timeToSeekTo, fileToSeekTo);\r\n }\r\n };\r\n\r\n var onTocItemPointerDown = function() {\r\n _scrolledToc = false;\r\n };\r\n\r\n var onTocItemPointerMove = function() {\r\n if (!deviceInfo.isTouchIEInterface()) {\r\n _scrolledToc = true;\r\n }\r\n };\r\n\r\n var onSearchTextInput = function(e) {\r\n updateSearchResults();\r\n\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.enter)) {\r\n var $tocButtons = _$tocContent.find('button');\r\n if ($tocButtons.length > 0) {\r\n $tocButtons.first().focus();\r\n } else {\r\n _$tocContent.after(_$noSearchResultsAlert);\r\n }\r\n }\r\n };\r\n\r\n var updateSearchResults = function() {\r\n if (_$searchInput.val() !== '') {\r\n clearTocContent();\r\n\r\n var searchResults = searchTool.searchXmpForString(_xmp, _$searchInput.val());\r\n\r\n var searchResultsTocItems = [];\r\n searchResults.forEach(function(result) {\r\n var thumbnailCanvasEl = result.imageRect ? document.createElement('canvas') : undefined;\r\n var showThumbnail = !!thumbnailCanvasEl;\r\n var showText = true;\r\n searchResultsTocItems.push(createTocItem(result.text, result.rawText, result.startTime, result.file, thumbnailCanvasEl, result.imageRect, showText, showThumbnail));\r\n });\r\n\r\n _$tocContentScreenReaderLabel.html(localizationStrings.strings.accessListSearchResults);\r\n _$tocContent.append(searchResultsTocItems);\r\n } else {\r\n _$noSearchResultsAlert.remove();\r\n displayTocItems();\r\n }\r\n };\r\n\r\n var clearSearch = function() {\r\n _$searchInput.val('');\r\n _$noSearchResultsAlert.remove();\r\n displayTocItems();\r\n };\r\n\r\n var disableSearch = function() {\r\n _$searchContainer.hide();\r\n _$searchInputDisabled.show();\r\n };\r\n\r\n var enableSearch = function() {\r\n if (playerConfiguration.getIsSearchable()) {\r\n _$searchContainer.show();\r\n _$searchInputDisabled.hide();\r\n }\r\n };\r\n\r\n var onSearchInputFocus = function() {\r\n _searchFocus = true;\r\n if (_eventHandlers.searchFocusChange) {\r\n _eventHandlers.searchFocusChange();\r\n }\r\n };\r\n\r\n var onSearchInputBlur = function() {\r\n _searchFocus = false;\r\n if (_eventHandlers.searchFocusChange) {\r\n _eventHandlers.searchFocusChange();\r\n }\r\n };\r\n\r\n var onTocItemKeyUp = function(e) {\r\n if (!_keysEnabled) {\r\n return;\r\n }\r\n\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.space, keys.keyTypes.enter)) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n seekToTocItem(e.currentTarget);\r\n }\r\n };\r\n\r\n var onTocItemKeyDown = function(e) {\r\n if (!_keysEnabled) {\r\n return;\r\n }\r\n\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.space)) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n var onKeyDownHandler = function(e) {\r\n if (!hotkeyService.areHotkeysEnabled()) {\r\n return;\r\n }\r\n\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.escape)) {\r\n if (_viewIsOpen) {\r\n if (_$tocContainer.is(':focus') || _$tocContainer.has(e.target).length > 0) {\r\n _$tocButton.focus();\r\n }\r\n toggleViewState(e);\r\n }\r\n } else if (keys.isKeyOfType(e.key, keys.keyTypes.tableOfContents)) {\r\n if (!_$searchInput.is(':focus')) {\r\n _$tocButton.focus();\r\n toggleViewState(e);\r\n }\r\n }\r\n };\r\n\r\n var disableKeyListeners = function() {\r\n _$tocContainer.attr('tabindex', tabIndex.Disabled);\r\n _keysEnabled = false;\r\n };\r\n\r\n var enableKeyListeners = function() {\r\n _$tocContainer.attr('tabindex', tabIndex.Progress);\r\n _keysEnabled = true;\r\n };\r\n\r\n var bindEvents = function() {\r\n _$tocContent.on('pointerup', '.toc-item', tocItemClickHandler);\r\n _$tocContent.on('keyup', '.toc-item', onTocItemKeyUp);\r\n _$tocContent.on('keydown', '.toc-item', onTocItemKeyDown);\r\n _$tocContent.on('pointerdown', '.toc-item', onTocItemPointerDown);\r\n _$tocContent.on('pointermove', '.toc-item', onTocItemPointerMove);\r\n _$tocButton.on('click', toggleViewState);\r\n $container.on('keydown', onKeyDownHandler);\r\n $container.on(events.Controls.Disable, disableKeyListeners);\r\n $container.on(events.Controls.Enable, enableKeyListeners);\r\n\r\n if (playerConfiguration.getIsSearchable()) {\r\n _$searchInput.on('keyup', onSearchTextInput);\r\n _$searchInput.on('focus', onSearchInputFocus);\r\n _$searchInput.on('blur', onSearchInputBlur);\r\n _$clearSearchButton.on('click', clearSearch);\r\n $container.on(events.Captions.LanguageChanged, updateSearchResults);\r\n }\r\n };\r\n\r\n var destroy = function() {\r\n _$tocContent.off('pointerup', '.toc-item', tocItemClickHandler);\r\n _$tocContent.off('keyup', '.toc-item', onTocItemKeyUp);\r\n _$tocContent.off('keydown', '.toc-item', onTocItemKeyDown);\r\n _$tocContent.off('pointerdown', '.toc-item', onTocItemPointerDown);\r\n _$tocContent.off('pointermove', '.toc-item', onTocItemPointerMove);\r\n _$tocButton.off('click', toggleViewState);\r\n $container.off('keydown', onKeyDownHandler);\r\n $container.off(events.Controls.Disable, disableKeyListeners);\r\n $container.off(events.Controls.Enable, enableKeyListeners);\r\n\r\n if (playerConfiguration.getIsSearchable()) {\r\n _$searchInput.off('keyup', onSearchTextInput);\r\n _$searchInput.off('focus', onSearchInputFocus);\r\n _$searchInput.off('blur', onSearchInputBlur);\r\n _$clearSearchButton.off('click', clearSearch);\r\n $container.off(events.Captions.LanguageChanged, updateSearchResults);\r\n }\r\n };\r\n\r\n var toggleViewState = function(e) {\r\n if (_viewIsOpen) {\r\n $container.trigger(events.Controls.HideToc);\r\n } else {\r\n $container.trigger(events.Controls.ShowToc);\r\n highlightDisabler.disableHighlightsOnMouseClick(_$searchInput, e);\r\n }\r\n };\r\n\r\n createView();\r\n setupView();\r\n bindEvents();\r\n\r\n return Object.defineProperties({\r\n open: openView,\r\n close: closeView,\r\n show: showView,\r\n hide: hideView,\r\n blurSearchInput: blurSearchInput,\r\n disableSearch: disableSearch,\r\n enableSearch: enableSearch,\r\n resize: resizeView,\r\n addEventListener: addEventListener,\r\n removeEventListener: removeEventListener,\r\n destroy: destroy\r\n }, {\r\n isOpen: {\r\n get: function() {\r\n return _viewIsOpen;\r\n }\r\n },\r\n visible: {\r\n get: function() {\r\n return _viewVisible;\r\n }\r\n },\r\n searchIsFocused: {\r\n get: function() {\r\n return _searchFocus;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new TocView object.\r\n * @function create\r\n * @memberof TSC.TocView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .toc-container element where ToC view will be injected, and a .toc-button-wrapper element where the toc toggle button will be injected\r\n * @param {TSC.Xmp} xmpModel - Xmp Model\r\n * @return new TocView instance\r\n */\r\n create: TocView\r\n };\r\n});\r\n","(function(window, hotspotViewModelFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.HotspotViewModel = hotspotViewModelFactory(namespace.localizationStrings, namespace.timeFormatter);\r\n})(this, function(localizationStrings, timeFormatter) {\r\n 'use strict';\r\n\r\n // time buffer value used to check if a media time is at the end of the hotspot\r\n var endingTimeBufferSizeInMilliseconds = 1000;\r\n\r\n var createHotspotDescription = function(hotspotXmpModel) {\r\n var hotspotText = localizationStrings.strings.txtHotspot;\r\n var jumpMediaText = localizationStrings.strings.txtJumpToMedia;\r\n var jumpTimeText = localizationStrings.strings.txtJumpToTime;\r\n var openLinkText = localizationStrings.strings.txtOpenLink;\r\n var playText = localizationStrings.strings.accessBtnPlay;\r\n\r\n if (hotspotXmpModel.jumpFile !== undefined) {\r\n return hotspotText + ': ' + jumpMediaText + ': ' + hotspotXmpModel.jumpFile;\r\n } else if (hotspotXmpModel.jumpTime !== undefined && hotspotXmpModel.jumpTime !== '') {\r\n return hotspotText + ': ' + jumpTimeText + ': ' + timeFormatter.formatTime(Number(hotspotXmpModel.jumpTime) / 1000);\r\n } else if (hotspotXmpModel.location !== undefined && hotspotXmpModel.location !== '') {\r\n return hotspotText + ': ' + openLinkText + ': ' + hotspotXmpModel.location;\r\n }\r\n return hotspotText + ': ' + playText;\r\n };\r\n\r\n var getHotspotViewPoints = function(hotspotXmpModel, videoNativeWidth, videoNativeHeight) {\r\n var viewPoints = [];\r\n hotspotXmpModel.boundingPoly.coordinates.forEach(function(coordinate) {\r\n var hsViewData = {\r\n xOrig: Math.round(coordinate.x),\r\n yOrig: Math.round(coordinate.y),\r\n xScale: Math.round(coordinate.x) / videoNativeWidth,\r\n yScale: Math.round(coordinate.y) / videoNativeHeight\r\n };\r\n\r\n viewPoints.push(hsViewData);\r\n });\r\n return viewPoints;\r\n };\r\n\r\n /**\r\n * @memberof TSC\r\n * @class HotspotViewModel\r\n * @classdesc HotSpot View Model\r\n * @param {Object} hotspotXmpModel - Hotspot XMP model\r\n * @param {Number} index - index of hotspot within all hotspots\r\n * @param {Number} videoNativeWidth - original width of video\r\n * @param {Number} videoNativeHeight - original height of video\r\n */\r\n var HotspotViewModel = function(hotspotXmpModel, index, videoNativeWidth, videoNativeHeight) {\r\n var _hotspotIndex = index;\r\n var _isActive = false;\r\n var _hasPausedAtEnd = false;\r\n var _viewPoints = getHotspotViewPoints(hotspotXmpModel, videoNativeWidth, videoNativeHeight);\r\n var _description = createHotspotDescription(hotspotXmpModel);\r\n\r\n var getCoordinates = function(hotspotViewWidth, hotspotViewHeight) {\r\n var coordinates = [];\r\n _viewPoints.forEach(function(viewPoint) {\r\n coordinates.push(viewPoint.xOrig >= 0 ? Math.round(viewPoint.xScale * hotspotViewWidth) : 0);\r\n coordinates.push(viewPoint.yOrig >= 0 ? Math.round(viewPoint.yScale * hotspotViewHeight) : 0);\r\n });\r\n return coordinates.join(',');\r\n };\r\n\r\n var isWithinTime = function(timeInMilliseconds) {\r\n return hotspotXmpModel.startTime < timeInMilliseconds && timeInMilliseconds <= hotspotXmpModel.endTime;\r\n };\r\n\r\n var isTimeNearEndOfHotspot = function(timeInMilliseconds) {\r\n return getTimeLeftUntilEnd(timeInMilliseconds) <= endingTimeBufferSizeInMilliseconds;\r\n };\r\n\r\n var shouldPauseAtTheEnd = function(timeInMilliseconds) {\r\n return hotspotXmpModel.pause === true && !_hasPausedAtEnd && isTimeNearEndOfHotspot(timeInMilliseconds);\r\n };\r\n\r\n var getTimeLeftUntilEnd = function(timeInMilliseconds) {\r\n return hotspotXmpModel.endTime - timeInMilliseconds;\r\n };\r\n\r\n return Object.defineProperties({\r\n getCoordinates: getCoordinates,\r\n isHotspotWithinTime: isWithinTime,\r\n isTimeNearEndOfHotspot: isTimeNearEndOfHotspot,\r\n shouldPauseAtTheEnd: shouldPauseAtTheEnd,\r\n getTimeLeftUntilEnd: getTimeLeftUntilEnd\r\n }, {\r\n index: {\r\n get: function() {\r\n return _hotspotIndex;\r\n }\r\n },\r\n description: {\r\n get: function() {\r\n return _description;\r\n }\r\n },\r\n isActive: {\r\n get: function() {\r\n return _isActive;\r\n },\r\n set: function(isActive) {\r\n _isActive = isActive;\r\n }\r\n },\r\n hasPausedAtEnd: {\r\n get: function() {\r\n return _hasPausedAtEnd;\r\n },\r\n set: function(hasPausedAtEnd) {\r\n _hasPausedAtEnd = hasPausedAtEnd;\r\n }\r\n },\r\n xmpModel: {\r\n get: function() {\r\n return hotspotXmpModel;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new HotspotViewModel object.\r\n * @function create\r\n * @memberof TSC.HotspotViewModel\r\n * @static\r\n * @param {Object} hotspotXmpModel - Hotspot XMP model\r\n * @param {Number} index - index of hotspot within all hotspots\r\n * @param {Number} videoNativeWidth - original width of video\r\n * @param {Number} videoNativeHeight - original height of video\r\n * @return new HotspotViewModel instance\r\n */\r\n create: HotspotViewModel\r\n };\r\n});\r\n","(function(window, hotspotViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.HotspotView = hotspotViewFactory(window, window.$, namespace.localizationStrings, namespace.events, namespace.playerConfiguration, namespace.templates, namespace.tabIndex, namespace.cssClasses, namespace.hotspotViewState);\r\n})(this, function(window, $, localizationStrings, events, playerConfiguration, templates, tabIndex, cssClasses, hotspotViewState) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class HotspotView\r\n * @classdesc Hotspot View\r\n * @param {Object} spContainer\r\n * @param {HTMLElement} mediaElement\r\n * @param {jquery} $hotspotsContainerElement\r\n * @param {TSC.HotspotViewModel} hotspotViewModel\r\n * @param {Number} hotspotContainerWidth\r\n * @param {Number} hotspotContainerHeight\r\n */\r\n var HotspotView = function(spContainer, mediaElement, $hotspotsContainerElement, hotspotViewModel, hotspotContainerWidth, hotspotContainerHeight) {\r\n var _$hotspotSvgElement;\r\n var _$hotspotLinkElement;\r\n var _timerId;\r\n\r\n var enableTabbing = function() {\r\n _$hotspotLinkElement.attr('tabindex', tabIndex.HotspotView);\r\n _$hotspotLinkElement.attr('focusable', true);\r\n };\r\n\r\n var disableTabbing = function() {\r\n _$hotspotLinkElement.attr('tabindex', tabIndex.Disabled);\r\n _$hotspotLinkElement.attr('focusable', false);\r\n };\r\n\r\n var onQuizEventHandler = function(e) {\r\n switch (e.type) {\r\n case events.Quizzing.Complete:\r\n case events.Quizzing.Review:\r\n enableTabbing();\r\n break;\r\n case events.Quizzing.Paused:\r\n disableTabbing();\r\n break;\r\n }\r\n };\r\n\r\n var onControlsUpdatedHandler = function() {\r\n if (playerConfiguration.disableInteractions) {\r\n hideHotspot();\r\n } else if (hotspotViewModel.isHotspotWithinTime(getCurrentTimeInMilliseconds())) {\r\n displayHotspot();\r\n }\r\n };\r\n \r\n var getCurrentTimeInMilliseconds = function() {\r\n return mediaElement.currentTime > mediaElement.duration ? mediaElement.duration : mediaElement.currentTime * 1000;\r\n };\r\n\r\n var getSvgElementWithLowerIndex = function(hotspotIndex) {\r\n var $svgElementWithLowerIndex = null;\r\n var svgElements = $hotspotsContainerElement.find('svg');\r\n svgElements.each(function(index, element) {\r\n var $svg = $(element);\r\n if (hotspotIndex > Number($svg.attr('data-hotspot-index'))) {\r\n $svgElementWithLowerIndex = $svg;\r\n }\r\n });\r\n return $svgElementWithLowerIndex;\r\n };\r\n\r\n var addHotspotViewToDom = function($svgView) {\r\n var $svgElementWithLowerIndex = getSvgElementWithLowerIndex(hotspotViewModel.index);\r\n if ($svgElementWithLowerIndex !== null) {\r\n $svgElementWithLowerIndex.after($svgView);\r\n } else {\r\n $hotspotsContainerElement.prepend($svgView);\r\n }\r\n _$hotspotSvgElement = $hotspotsContainerElement.find('svg[data-hotspot-index=\"' + hotspotViewModel.index + '\"]');\r\n _$hotspotLinkElement = _$hotspotSvgElement.find('a');\r\n };\r\n\r\n var createView = function() {\r\n var hotspotCoordinates = hotspotViewModel.getCoordinates(hotspotContainerWidth, hotspotContainerHeight);\r\n var hotspotCoordinatesSeparationBySpace = hotspotCoordinates.replace(/,/g, ' ');\r\n var descriptionId = 'hotspot-description-' + hotspotViewModel.index;\r\n var hotspotLinkClassName = 'hotspot-link-' + hotspotViewModel.index;\r\n\r\n var svgViewMarkup = templates.hotspot_view_template({\r\n hotspotContainerWidth: hotspotContainerWidth,\r\n hotspotContainerHeight: hotspotContainerHeight,\r\n hotspotIndex: hotspotViewModel.index,\r\n hotspotDescriptionId: descriptionId,\r\n hotspotDescription: hotspotViewModel.description,\r\n displayHotspotsShape: playerConfiguration.displayHotspotsShape,\r\n hotspotCoordinatesSeparationBySpace: hotspotCoordinatesSeparationBySpace,\r\n hotspotLinkClassName: hotspotLinkClassName\r\n });\r\n\r\n var $svgView = $(svgViewMarkup);\r\n\r\n addHotspotViewToDom($svgView);\r\n };\r\n\r\n var bindEvents = function() {\r\n spContainer.on(events.Quizzing.Complete, onQuizEventHandler);\r\n spContainer.on(events.Quizzing.Review, onQuizEventHandler);\r\n spContainer.on(events.Quizzing.Paused, onQuizEventHandler);\r\n spContainer.on(events.Controls.Updated, onControlsUpdatedHandler);\r\n };\r\n\r\n var displayHotspot = function() {\r\n if (playerConfiguration.disableInteractions) {\r\n return;\r\n }\r\n \r\n _$hotspotSvgElement.addClass(cssClasses.hotspotVisible);\r\n enableTabbing();\r\n };\r\n\r\n var hideHotspot = function() {\r\n _$hotspotSvgElement.removeClass(cssClasses.hotspotVisible);\r\n disableTabbing();\r\n };\r\n\r\n var getTimeToHotspotEnd = function(timeInMilliseconds, mediaPlaybackRate) {\r\n var frameBuffer = 10 / (mediaPlaybackRate * 30) * 1000;\r\n return hotspotViewModel.getTimeLeftUntilEnd(timeInMilliseconds) / mediaPlaybackRate - frameBuffer;\r\n };\r\n\r\n var pauseOnHotspot = function() {\r\n _timerId = null;\r\n hotspotViewModel.hasPausedAtEnd = true;\r\n mediaElement.pause();\r\n\r\n var eventData = {\r\n hasTimeChangeAction: !hotspotViewModel.xmpModel.location\r\n };\r\n spContainer.trigger(events.Hotspots.Paused, eventData);\r\n };\r\n\r\n var initPauseOnHotspot = function(timeInMilliseconds) {\r\n window.clearTimeout(_timerId);\r\n\r\n if (window.document.hidden) { //Can't use setTimeout if document is hidden\r\n pauseOnHotspot();\r\n } else {\r\n _timerId = setTimeout(pauseOnHotspot, getTimeToHotspotEnd(timeInMilliseconds, mediaElement.playbackRate));\r\n }\r\n };\r\n\r\n var update = function(timeInMilliseconds) {\r\n var hotspotState = hotspotViewState.hidden;\r\n if (hotspotViewModel.isHotspotWithinTime(timeInMilliseconds)) {\r\n if (!hotspotViewModel.isActive) {\r\n hotspotState = hotspotViewState.firstVisible;\r\n hotspotViewModel.isActive = true;\r\n displayHotspot();\r\n } else {\r\n hotspotState = hotspotViewState.visible;\r\n }\r\n if (hotspotViewModel.shouldPauseAtTheEnd(timeInMilliseconds) && !mediaElement.paused) {\r\n initPauseOnHotspot(timeInMilliseconds);\r\n }\r\n } else if (hotspotViewModel.isActive) {\r\n hotspotViewModel.isActive = false;\r\n hideHotspot();\r\n\r\n if (!_timerId && !mediaElement.paused) {\r\n resetHasPaused();\r\n }\r\n }\r\n return hotspotState;\r\n };\r\n\r\n var resetHasPaused = function() {\r\n hotspotViewModel.hasPausedAtEnd = false;\r\n };\r\n\r\n createView();\r\n bindEvents();\r\n hideHotspot();\r\n\r\n return Object.defineProperties({\r\n update: update,\r\n resetHasPaused: resetHasPaused\r\n }, {\r\n hotspotViewModel: {\r\n get: function() {\r\n return hotspotViewModel;\r\n }\r\n },\r\n controlElement: {\r\n get: function() {\r\n return _$hotspotLinkElement;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new HotspotView object.\r\n * @function create\r\n * @memberof TSC.HotspotView\r\n * @static\r\n * @return new HotspotView instance\r\n */\r\n create: HotspotView\r\n };\r\n});\r\n","(function(window, hotspotsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.HotspotsView = hotspotsViewFactory(window,\r\n window.document,\r\n window.$,\r\n namespace.templates,\r\n namespace.keys,\r\n namespace.localizationStrings,\r\n namespace.timeFormatter,\r\n namespace.events,\r\n namespace.cssClasses,\r\n namespace.hotspotViewState,\r\n namespace.HotspotViewModel,\r\n namespace.HotspotView);\r\n})(this, function(window, document, $, templates, keys, localizationStrings, timeFormatter, events, cssClasses, hotspotViewState, HotspotViewModel, HotspotView) {\r\n 'use strict';\r\n\r\n /**\r\n * @memberof TSC\r\n * @class HotspotsView\r\n * @classdesc Hotspots View\r\n */\r\n var HotspotsView = function(spContainer, xmp, mediaElement, tabController) {\r\n var _xmp = xmp;\r\n var _eventContainer = spContainer;\r\n var _spContainerId = spContainer.attr('id');\r\n var _hotspotsContainerId = [_spContainerId, 'hotspots'].join('-');\r\n var _hotspotXmpModels = _xmp.hotspotItemArray;\r\n var _hotspotViews = [];\r\n var _$hotspots;\r\n var _mediaNativeWidth = null;\r\n var _mediaNativeHeight = null;\r\n var _mediaCurrentWidth = null;\r\n var _mediaCurrentHeight = null;\r\n var _oneOrMoreHotspotActive = false;\r\n var _defaultScale = 16 / 9;\r\n var _scale = _defaultScale;\r\n var _currentFile;\r\n\r\n var createView = function() {\r\n var hotspotsMarkup = templates.hotspots_template({\r\n hotspotsContainerId: _hotspotsContainerId\r\n });\r\n _$hotspots = $($.parseHTML(hotspotsMarkup));\r\n };\r\n\r\n var preventEvent = function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n\r\n var bindEvents = function() {\r\n _$hotspots.on('click', 'svg', onHotspotClick);\r\n _$hotspots.on('mousedown', preventEvent);\r\n _$hotspots.on('touchend', 'svg', onHotspotClick);\r\n _$hotspots.on('keydown', 'svg', function(e) {\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.space)) {\r\n onHotspotClick(e);\r\n }\r\n });\r\n };\r\n\r\n var init = function(videoNativeWidth, videoNativeHeight, currentFile) {\r\n _scale = _defaultScale;\r\n _currentFile = currentFile;\r\n _mediaNativeWidth = videoNativeWidth;\r\n _mediaNativeHeight = videoNativeHeight;\r\n _oneOrMoreHotspotActive = false;\r\n\r\n // remove all current hotspots in the case we are loading consecutive video in a playlist\r\n _$hotspots.empty();\r\n _hotspotViews = [];\r\n _hotspotXmpModels.forEach(function(hotspotXmpModel, index) {\r\n // only init hotspots for this video\r\n if (hotspotXmpModel.file !== undefined && hotspotXmpModel.file !== _currentFile) {\r\n return;\r\n }\r\n var hotspotViewModel = HotspotViewModel.create(hotspotXmpModel, index, _mediaNativeWidth, _mediaNativeHeight);\r\n var hotspotView = HotspotView.create(spContainer, mediaElement, _$hotspots, hotspotViewModel, _mediaNativeWidth, _mediaNativeHeight);\r\n _hotspotViews.push(hotspotView);\r\n });\r\n };\r\n\r\n var removeScreenReaderAlert = function() {\r\n _$hotspots.find('.' + cssClasses.screenReaderAlert).remove();\r\n };\r\n\r\n var addScreenReaderAlert = function(numberHotspotsJustDisplayed) {\r\n var hotspotAlertStringToken = '{{numberOfHotspots}}';\r\n var hotspotAlertText = localizationStrings.strings.txtHotspotScreenReaderAlert;\r\n if (numberHotspotsJustDisplayed > 1) {\r\n hotspotAlertText = localizationStrings.strings.txtHotspotScreenReaderAlertPlural;\r\n }\r\n hotspotAlertText = hotspotAlertText.replace(hotspotAlertStringToken, numberHotspotsJustDisplayed);\r\n\r\n var screenReaderAlertMarkup = templates.hotspot_view_sr_alert_template({\r\n hotspotScreenReaderAlertText: hotspotAlertText\r\n });\r\n\r\n var $screenReaderAlert = $(screenReaderAlertMarkup);\r\n _$hotspots.append($screenReaderAlert);\r\n };\r\n\r\n var getLastActiveHotspotView = function() {\r\n for (var i = _hotspotViews.length - 1; i >= 0; i--) {\r\n if (_hotspotViews[i].hotspotViewModel.isActive) {\r\n return _hotspotViews[i];\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n var onHotspotActiveChange = function(oneOrMoreHotspotActive, numberHotspotsJustDisplayed) {\r\n if (_oneOrMoreHotspotActive !== oneOrMoreHotspotActive) {\r\n _oneOrMoreHotspotActive = oneOrMoreHotspotActive;\r\n\r\n var eventName = _oneOrMoreHotspotActive ? events.Hotspots.AreaActive : events.Hotspots.AreaInactive;\r\n _eventContainer.trigger(eventName);\r\n }\r\n\r\n if (_oneOrMoreHotspotActive) {\r\n var lastActiveHotspotView = getLastActiveHotspotView();\r\n if (lastActiveHotspotView) {\r\n tabController.lastTabEnabledElement = lastActiveHotspotView.controlElement;\r\n }\r\n\r\n if (numberHotspotsJustDisplayed > 0) {\r\n addScreenReaderAlert(numberHotspotsJustDisplayed);\r\n }\r\n } else {\r\n tabController.lastTabEnabledElement = null;\r\n removeScreenReaderAlert();\r\n }\r\n };\r\n\r\n var update = function(currentMediaTimeInMilliseconds) {\r\n var oneOrMoreHotspotActive = false;\r\n var numberHotspotsJustDisplayed = 0;\r\n _hotspotViews.forEach(function(hotspotView) {\r\n var hotspotState = hotspotView.update(currentMediaTimeInMilliseconds);\r\n if (hotspotState === hotspotViewState.firstVisible) {\r\n numberHotspotsJustDisplayed++;\r\n }\r\n if (hotspotState === hotspotViewState.firstVisible || hotspotState === hotspotViewState.visible) {\r\n oneOrMoreHotspotActive = true;\r\n }\r\n });\r\n onHotspotActiveChange(oneOrMoreHotspotActive, numberHotspotsJustDisplayed);\r\n };\r\n\r\n var size = function(scale, width, height) {\r\n _scale = scale;\r\n _mediaCurrentWidth = width;\r\n _mediaCurrentHeight = height;\r\n if (_mediaNativeWidth === null || _mediaNativeWidth < 0) {\r\n return;\r\n }\r\n\r\n var availableWidth = _mediaCurrentWidth;\r\n var availableHeight = _mediaCurrentHeight;\r\n var hotspotWidth = _mediaNativeWidth * _scale;\r\n var hotspotHeight = _mediaNativeHeight * _scale;\r\n var leftOffset = Math.max((availableWidth - hotspotWidth) / 2, 0);\r\n var topOffset = Math.max((availableHeight - hotspotHeight) / 2, 0);\r\n\r\n _$hotspots.css({\r\n width: hotspotWidth,\r\n height: hotspotHeight,\r\n left: leftOffset,\r\n top: topOffset\r\n });\r\n };\r\n\r\n var onHotspotClick = function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n var hotspotIndex = Number($(event.target).attr('data-hotspot-index'));\r\n var targetHotspotXmpModel = _hotspotXmpModels[hotspotIndex];\r\n var targetHotspotViewModel = _hotspotViews[hotspotIndex].hotspotViewModel;\r\n\r\n var eventData = {\r\n jumpFile: targetHotspotXmpModel.jumpFile,\r\n jumpTime: targetHotspotXmpModel.jumpTime,\r\n location: targetHotspotXmpModel.location,\r\n newWindow: targetHotspotXmpModel.newWindow\r\n };\r\n\r\n if (!eventData.location && targetHotspotViewModel.hasPausedAtEnd) {\r\n _eventContainer.trigger(events.Hotspots.Resume);\r\n }\r\n\r\n _eventContainer.trigger(events.Controls.HotspotClicked, eventData);\r\n };\r\n\r\n var resetHasPaused = function() {\r\n _hotspotViews.forEach(function(hotspotView) {\r\n hotspotView.resetHasPaused();\r\n });\r\n };\r\n\r\n createView();\r\n bindEvents();\r\n\r\n return Object.defineProperties({\r\n init: init,\r\n update: update,\r\n size: size,\r\n resetHasPaused: resetHasPaused\r\n }, {\r\n $hotspots: {\r\n get: function() {\r\n return _$hotspots;\r\n }\r\n },\r\n oneOrMoreHotspotActive: {\r\n get: function() {\r\n return _oneOrMoreHotspotActive;\r\n }\r\n },\r\n oneOrMoreHotspotsWithTimeActionArePaused: {\r\n get: function() {\r\n for (var i = 0; i < _hotspotViews.length; i++) {\r\n if (_hotspotViews[i].hotspotViewModel.hasPausedAtEnd && !_hotspotViews[i].hotspotViewModel.xmpModel.location) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new HotspotsView object.\r\n * @function create\r\n * @memberof TSC.HotspotsView\r\n * @static\r\n * @param {Object} spContainer - jQuery element that is the smartplayer top-level container\r\n * @param {TSC.Xmp} xmp - XMP model\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @param {TSC.TabController} tabController - Tab controller instance\r\n * @return new HotspotsView instance\r\n */\r\n create: HotspotsView\r\n };\r\n});\r\n","(function(window, playRewindControlsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.PlayRewindControlsView = playRewindControlsViewFactory(window.document, namespace.localizationStrings, namespace.viewHelper, namespace.templates, namespace.highlightDisabler, namespace.playerConfiguration, namespace.cssClasses, namespace.events, namespace.tabIndex);\r\n})(this, function(document, localizationStrings, viewHelper, templates, highlightDisabler, playerConfiguration, cssClasses, events, tabIndex) {\r\n 'use strict';\r\n\r\n var PlayRewindControlsView = function($container, mediaElement) {\r\n var _markup = templates.play_rewind_controls_template({\r\n accessBtnRewind: localizationStrings.strings.accessBtnRewind,\r\n accessBtnPlay: localizationStrings.strings.accessBtnPlay,\r\n rewindIndex: tabIndex.Rewind,\r\n playIndex: tabIndex.Play\r\n });\r\n $container.find('.play-rewind-controls').html(_markup);\r\n\r\n var _disabled = false;\r\n var _$playControl = $container.find('.play-control');\r\n var _$rewindControl = $container.find('.rewind-control');\r\n var _$playButtonGlyph = _$playControl.find('.play-button-glyph');\r\n var _$pauseButtonGlyph = _$playControl.find('.pause-button-glyph');\r\n\r\n var disableKeyListeners = function() {\r\n _$playControl.attr('tabindex', tabIndex.Disabled);\r\n _$rewindControl.attr('tabindex', tabIndex.Disabled);\r\n _disabled = true;\r\n };\r\n\r\n var enableKeyListeners = function() {\r\n _$playControl.attr('tabindex', tabIndex.Play);\r\n _$rewindControl.attr('tabindex', tabIndex.Rewind);\r\n _disabled = false;\r\n };\r\n\r\n $container.on(events.Controls.Disable, disableKeyListeners);\r\n $container.on(events.Controls.Enable, enableKeyListeners);\r\n\r\n mediaElement.addEventListener(events.Media.Play, function() {\r\n _$playButtonGlyph.hide();\r\n _$pauseButtonGlyph.show();\r\n _$playControl.attr('aria-pressed', true);\r\n });\r\n\r\n mediaElement.addEventListener(events.Media.Pause, function() {\r\n _$pauseButtonGlyph.hide();\r\n _$playButtonGlyph.show();\r\n _$playControl.attr('aria-pressed', false);\r\n });\r\n\r\n _$playControl.click(function(e) {\r\n e.preventDefault();\r\n togglePlay();\r\n });\r\n\r\n var togglePlay = function() {\r\n if (_disabled) {\r\n return;\r\n }\r\n\r\n if (mediaElement.paused) {\r\n mediaElement.play();\r\n } else {\r\n mediaElement.pause();\r\n }\r\n };\r\n\r\n var setInitialFocus = function() {\r\n if (viewHelper.elementOrChildHasFocus($container)) {\r\n _$playControl.focus();\r\n highlightDisabler.disableHighlights(_$playControl);\r\n }\r\n };\r\n\r\n if (playerConfiguration.getAllowRewind() !== -1) {\r\n _$rewindControl.click(function() {\r\n mediaElement.play(Number(mediaElement.currentTime) - playerConfiguration.getAllowRewind());\r\n });\r\n } else {\r\n _$rewindControl.addClass(cssClasses.hide);\r\n }\r\n\r\n _$pauseButtonGlyph.hide();\r\n\r\n return {\r\n togglePlay: togglePlay,\r\n setInitialFocus: setInitialFocus\r\n };\r\n };\r\n\r\n return {\r\n create: PlayRewindControlsView\r\n };\r\n});\r\n","(function(window, prevNextControlsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.PrevNextControlsView = prevNextControlsViewFactory(namespace.localizationStrings, namespace.templates, namespace.cssClasses, namespace.events, namespace.tabIndex);\r\n})(this, function(localizationStrings, templates, cssClasses, events, tabIndex) {\r\n 'use strict';\r\n\r\n var PrevNextControlsView = function($container) {\r\n var _markup = templates.prev_next_controls_template({\r\n accessBtnPrevious: localizationStrings.strings.accessBtnPrevious,\r\n accessBtnNext: localizationStrings.strings.accessBtnNext,\r\n previousIndex: tabIndex.Previous,\r\n nextIndex: tabIndex.Next\r\n });\r\n $container.find('.prev-next-controls').html(_markup);\r\n\r\n var _$previousControl = $container.find('.previous-control');\r\n var _$nextControl = $container.find('.next-control');\r\n\r\n var disableKeyListeners = function() {\r\n _$previousControl.attr('tabindex', tabIndex.Disabled);\r\n _$nextControl.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableKeyListeners = function() {\r\n _$previousControl.attr('tabindex', tabIndex.Previous);\r\n _$nextControl.attr('tabindex', tabIndex.Next);\r\n };\r\n\r\n $container.on(events.Controls.Disable, disableKeyListeners);\r\n $container.on(events.Controls.Enable, enableKeyListeners);\r\n\r\n _$previousControl.click(function() {\r\n $container.trigger(events.Controls.ClickPrev);\r\n });\r\n\r\n _$nextControl.click(function() {\r\n $container.trigger(events.Controls.ClickNext);\r\n });\r\n\r\n var hide = function() {\r\n _$previousControl.addClass(cssClasses.hide);\r\n _$nextControl.addClass(cssClasses.hide);\r\n };\r\n\r\n var show = function() {\r\n _$previousControl.removeClass(cssClasses.hide);\r\n _$nextControl.removeClass(cssClasses.hide);\r\n };\r\n\r\n var disablePreviousButton = function() {\r\n _$previousControl.addClass(cssClasses.disabled).attr('aria-disabled', true);\r\n };\r\n\r\n var enablePreviousButton = function() {\r\n _$previousControl.removeClass(cssClasses.disabled).attr('aria-disabled', false);\r\n };\r\n\r\n var disableNextButton = function() {\r\n _$nextControl.addClass(cssClasses.disabled).attr('aria-disabled', true);\r\n };\r\n\r\n var enableNextButton = function() {\r\n _$nextControl.removeClass(cssClasses.disabled).attr('aria-disabled', false);\r\n };\r\n\r\n return {\r\n show: show,\r\n hide: hide,\r\n disablePreviousButton: disablePreviousButton,\r\n enablePreviousButton: enablePreviousButton,\r\n disableNextButton: disableNextButton,\r\n enableNextButton: enableNextButton\r\n };\r\n };\r\n\r\n return {\r\n create: PrevNextControlsView\r\n };\r\n});\r\n","(function(window, progressBarControlViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ProgressBarControlView = progressBarControlViewFactory(\r\n window,\r\n window.$,\r\n namespace.templates,\r\n namespace.events,\r\n namespace.localizationStrings,\r\n namespace.keys,\r\n namespace.mouseButtons,\r\n namespace.tabIndex,\r\n namespace.highlightDisabler,\r\n namespace.timeFormatter,\r\n namespace.playerConfiguration,\r\n namespace.quizController,\r\n namespace.supportedPluginViewElements);\r\n})(this, function(window, $, templates, events, localizationStrings, keys, mouseButtons, tabIndex, highlightDisabler, timeFormatter, playerConfiguration, quizController, supportedPluginViewElements) {\r\n 'use strict';\r\n\r\n var SKIP_TIME = 5;\r\n var SHIFT_SKIP_TIME = 30;\r\n\r\n var ProgressBarControlView = function($container, mediaElement, quizModel) {\r\n var markup = templates.progress_bar_control_template({\r\n progressIndex: tabIndex.Progress,\r\n accessBtnProgressBar: localizationStrings.strings.accessBtnProgressBar\r\n });\r\n $container.find('.progress-bar-control').html(markup);\r\n\r\n var _$document = $(window.document);\r\n var _requestAnimationId = null;\r\n var _scrubbing = false;\r\n var _lastScrubTime = 0;\r\n var _wasPlayingBeforeSeek = false;\r\n var _quizModel = quizModel;\r\n var _$loadProgressBar = $container.find('.load-progress');\r\n var _$playProgressBar = $container.find('.play-progress');\r\n var _$playTimeDisplay = $container.find('.play-time');\r\n var _$scrubBar = $container.find('.progress-scrubbar-track');\r\n var _$quizMarkers = $container.find('.markers');\r\n var _$pluginContainer = $container.find('.plugin-container');\r\n var _markers = [];\r\n var _nextQuizTime;\r\n var _keysEnabled = true;\r\n var _durationDisplayInitialized = false;\r\n var _markersCreated = false;\r\n var _formattedDuration;\r\n var _lastUpdatedFormattedMediaTime = -1;\r\n var _lastUpdatedScrubTime = -1;\r\n\r\n var shouldRespectQuizMarkers = function() {\r\n return _quizModel && quizController.quizEnabled && !playerConfiguration.ignoreQuizQuestions;\r\n };\r\n\r\n var updateLoadProgress = function(progress) {\r\n _$loadProgressBar.width(progress);\r\n };\r\n\r\n var onDownSeek = function(e) {\r\n e.preventDefault();\r\n if (_scrubbing) {\r\n return;\r\n }\r\n\r\n if (!_nextQuizTime) {\r\n allowSkipQuestionSetMarkersBeforeTime(mediaElement.currentTime);\r\n }\r\n\r\n _$document.on('pointermove touchmove', onMoveSeek);\r\n // Safari needs mouseup, Safari reports wrong event.buttons code after user\r\n // right clicks on player. This causes pepjs to report pointerup event as pointermove event\r\n _$document.on('pointerup mouseup touchend mouseleave', onUpSeek);\r\n\r\n if (!mediaElement.paused) {\r\n _wasPlayingBeforeSeek = true;\r\n mediaElement.pause();\r\n } else {\r\n _wasPlayingBeforeSeek = false;\r\n }\r\n\r\n setScrubbing(true);\r\n _lastUpdatedScrubTime = -1;\r\n\r\n setPlayProgress(getClickX(e.originalEvent));\r\n };\r\n\r\n var onMoveSeek = function(e) {\r\n if (!_scrubbing) {\r\n return;\r\n }\r\n\r\n if (!mediaElement.paused) {\r\n mediaElement.pause();\r\n }\r\n\r\n setPlayProgress(getClickX(e.originalEvent));\r\n };\r\n\r\n var onUpSeek = function() {\r\n if (!_scrubbing) {\r\n return;\r\n }\r\n\r\n _$document.off('pointermove touchmove', onMoveSeek);\r\n _$document.off('pointerup mouseup touchend mouseleave', onUpSeek);\r\n\r\n var atVideoEndTime = Number(mediaElement.currentTime.toFixed(2)) >= Number(mediaElement.duration.toFixed(2));\r\n if (_wasPlayingBeforeSeek && !atVideoEndTime) {\r\n mediaElement.play();\r\n }\r\n\r\n setScrubbing(false);\r\n };\r\n\r\n var getClickX = function(event) {\r\n if (event.targetTouches && event.targetTouches[0] && event.targetTouches[0].pageX) {\r\n return event.targetTouches[0].pageX;\r\n }\r\n\r\n return event.pageX;\r\n };\r\n\r\n var setPlayProgress = function(clickX) {\r\n var clickRelPos = clickX - _$scrubBar.offset().left;\r\n var playRatio = Math.max(Math.min(clickRelPos / _$scrubBar.width(), 1), 0);\r\n\r\n var newTime = mediaElement.duration * playRatio;\r\n\r\n if (newTime < _lastScrubTime) {\r\n allowSkipQuestionSetMarkersBeforeTime(newTime);\r\n }\r\n\r\n // Stop scrubber from passing first quiz\r\n if ((_nextQuizTime || _nextQuizTime === 0) && _nextQuizTime < newTime) {\r\n newTime = _nextQuizTime;\r\n }\r\n\r\n _lastScrubTime = newTime;\r\n };\r\n\r\n var updatePlayProgress = function() {\r\n if (mediaElement.duration === 0) {\r\n return;\r\n }\r\n\r\n if (_scrubbing) {\r\n if (_lastScrubTime === _lastUpdatedScrubTime || _lastScrubTime < 0) {\r\n return;\r\n }\r\n\r\n _lastUpdatedScrubTime = _lastScrubTime;\r\n $container.trigger(events.Media.SeekToTime, _lastScrubTime);\r\n updateUi(_lastScrubTime);\r\n } else {\r\n if (mediaElement.seeking) {\r\n return;\r\n }\r\n updateUi(mediaElement.currentTime);\r\n }\r\n };\r\n\r\n var updateUi = function(currentTime) {\r\n var percentPlayed = currentTime * 100 / mediaElement.duration;\r\n _$playProgressBar.width(percentPlayed + '%');\r\n\r\n updateTimeDisplay(currentTime);\r\n };\r\n\r\n var updateTimeDisplay = function(currentTime) {\r\n var formattedCurrentTime = timeFormatter.formatTime(currentTime);\r\n if (formattedCurrentTime === _lastUpdatedFormattedMediaTime && _durationDisplayInitialized) {\r\n return;\r\n }\r\n\r\n _lastUpdatedFormattedMediaTime = formattedCurrentTime;\r\n\r\n var progressText = formattedCurrentTime;\r\n var progressDisplayText = formattedCurrentTime;\r\n\r\n if (!_durationDisplayInitialized && mediaElement.duration) {\r\n _durationDisplayInitialized = true;\r\n _formattedDuration = timeFormatter.formatTime(mediaElement.duration);\r\n _$scrubBar.attr('aria-valuemax', mediaElement.duration);\r\n }\r\n\r\n if (_durationDisplayInitialized) {\r\n progressText += ' of ' + _formattedDuration;\r\n progressDisplayText += ' / ' + _formattedDuration;\r\n }\r\n\r\n _$playTimeDisplay.html(progressDisplayText);\r\n _$scrubBar.attr('aria-valuenow', currentTime);\r\n _$scrubBar.attr('aria-valuetext', progressText);\r\n };\r\n\r\n var setMarkersXPos = function() {\r\n var mediaDurationInMilliseconds = mediaElement.duration * 1000;\r\n var xPos = 0;\r\n var timePercent = 0;\r\n var quizMarkerContainerWidth = _$quizMarkers.width();\r\n var quizMarkerContainerHeight = _$quizMarkers.height();\r\n\r\n _quizModel.questionSetMarkerTimes.forEach(function(questionSetMarker, i) {\r\n timePercent = questionSetMarker.startTime / mediaDurationInMilliseconds;\r\n xPos = Math.round(quizMarkerContainerWidth * timePercent - quizMarkerContainerHeight / 2);\r\n\r\n var marker = _markers[i];\r\n marker && marker.css('left', xPos + 'px');\r\n });\r\n };\r\n\r\n var updateQuizMarkers = function() {\r\n if (!shouldRespectQuizMarkers()) {\r\n return;\r\n }\r\n\r\n if (!_markersCreated) {\r\n createQuizMarkers();\r\n }\r\n\r\n updateMarkerVisibility();\r\n };\r\n\r\n var updateMarkerVisibility = function() {\r\n _quizModel.questionSetMarkerTimes.forEach(function(questionSetMarker, i) {\r\n if (questionSetMarker.completed) {\r\n var marker = _markers[i];\r\n marker && marker.hide();\r\n }\r\n });\r\n\r\n setMarkersXPos();\r\n };\r\n\r\n var createQuizMarkers = function() {\r\n if (!shouldRespectQuizMarkers()) {\r\n return;\r\n }\r\n\r\n _markersCreated = true;\r\n\r\n _quizModel.questionSetMarkerTimes.forEach(function() {\r\n _markers.push($('
      ').addClass('quiz-marker'));\r\n });\r\n\r\n _$quizMarkers.append(_markers);\r\n };\r\n\r\n var setScrubbing = function(value) {\r\n _scrubbing = value;\r\n if (_scrubbing) {\r\n $container.trigger(events.Scrubbing.Started);\r\n } else {\r\n $container.trigger(events.Scrubbing.Ended);\r\n }\r\n };\r\n\r\n var keyPressed = function(e) {\r\n if (!_keysEnabled) {\r\n return;\r\n }\r\n\r\n var timeToSkip = e.shiftKey ? SHIFT_SKIP_TIME : SKIP_TIME;\r\n if (keys.isKeyOfType(e.key, keys.keyTypes.rightArrow)) {\r\n mediaElement.currentTime = getSafeSeekTime(mediaElement.currentTime + timeToSkip);\r\n } else if (keys.isKeyOfType(e.key, keys.keyTypes.leftArrow)) {\r\n mediaElement.currentTime = getSafeSeekTime(mediaElement.currentTime - timeToSkip);\r\n } else if (keys.isKeyOfType(e.key, keys.keyTypes.space)) {\r\n if (mediaElement.paused) {\r\n mediaElement.play();\r\n } else {\r\n mediaElement.pause();\r\n }\r\n }\r\n };\r\n\r\n var onMousedown = function(e) {\r\n if (e.button === mouseButtons.mainButton) {\r\n onDownSeek(e);\r\n } else {\r\n highlightDisabler.disableHighlights($(this));\r\n }\r\n };\r\n\r\n var disableKeyListeners = function() {\r\n _$scrubBar.attr('tabindex', tabIndex.Disabled);\r\n _keysEnabled = false;\r\n };\r\n\r\n var enableKeyListeners = function() {\r\n _$scrubBar.attr('tabindex', tabIndex.Progress);\r\n _keysEnabled = true;\r\n };\r\n\r\n var getXPositionForQuestionSetMarker = function(questionSetMarkerId) {\r\n if (!shouldRespectQuizMarkers()) {\r\n return;\r\n }\r\n\r\n var questionSetMarker = null;\r\n for (var i = 0; i < _quizModel.questionSetMarkerTimes.length; i++) {\r\n questionSetMarker = quizModel.questionSetMarkerTimes[i];\r\n if (questionSetMarker.questionSetIndex === questionSetMarkerId) {\r\n var timePercent = questionSetMarker.startTime / (mediaElement.duration * 1000);\r\n var measuredContainerWidth = $container.width();\r\n var measuredQuizMarkerWidth = _$quizMarkers.width();\r\n // use the max width, when control is hidden width measurement is not correct.\r\n var usedElementWidth = Math.max(measuredContainerWidth, measuredQuizMarkerWidth);\r\n return Math.round(usedElementWidth * timePercent) + _$scrubBar.offset().left;\r\n }\r\n }\r\n };\r\n\r\n var allowSkipQuestionSetMarkersBeforeTime = function(timeInSeconds) {\r\n if (!shouldRespectQuizMarkers()) {\r\n return;\r\n }\r\n\r\n var foundNextMarker = false;\r\n var timeInMilliseconds = timeInSeconds * 1000;\r\n var nextQuizTime = null;\r\n _quizModel.questionSetMarkerTimes.forEach(function(questionSetMarker) {\r\n questionSetMarker.canSeekPast = questionSetMarker.startTime < timeInMilliseconds;\r\n\r\n if (questionSetMarker.startTime >= timeInMilliseconds && !questionSetMarker.canSeekPast && !foundNextMarker) {\r\n foundNextMarker = true;\r\n nextQuizTime = questionSetMarker.startTime / 1000;\r\n }\r\n });\r\n\r\n _nextQuizTime = nextQuizTime;\r\n };\r\n\r\n var getSafeSeekTime = function(timeInSeconds) {\r\n // question sets\r\n var timeInMilliseconds = timeInSeconds * 1000;\r\n var questionSetMarker;\r\n if (shouldRespectQuizMarkers()) {\r\n for (var i = 0; i < _quizModel.questionSetMarkerTimes.length; i++) {\r\n questionSetMarker = _quizModel.questionSetMarkerTimes[i];\r\n if (!questionSetMarker.canSeekPast && questionSetMarker.startTime < timeInMilliseconds) {\r\n return questionSetMarker.startTime / 1000;\r\n }\r\n }\r\n }\r\n\r\n // video time bounds\r\n if (timeInSeconds < 0) {\r\n return 0;\r\n }\r\n if (timeInSeconds > mediaElement.duration) {\r\n return mediaElement.duration;\r\n }\r\n return timeInSeconds;\r\n };\r\n\r\n var onQuizzingCompleteHandler = function() {\r\n allowSkipQuestionSetMarkersBeforeTime(mediaElement.currentTime);\r\n };\r\n\r\n var initPlugins = function() {\r\n var pluginController = playerConfiguration.getPluginController();\r\n if (!pluginController) {\r\n return;\r\n }\r\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.PROGRESS_BAR, _$pluginContainer);\r\n };\r\n\r\n var setup = function() {\r\n _$scrubBar.attr('aria-valuemin', 0);\r\n _$scrubBar.on('keydown', keyPressed);\r\n _$scrubBar.on('touchstart', onDownSeek);\r\n _$scrubBar.on('mousedown', onMousedown);\r\n $container.on(events.Controls.Disable, disableKeyListeners);\r\n $container.on(events.Controls.Enable, enableKeyListeners);\r\n $container.on(events.Quizzing.Complete, onQuizzingCompleteHandler);\r\n\r\n var onRequestAnimationFrame = function() {\r\n updatePlayProgress();\r\n _requestAnimationId = window.requestAnimationFrame(onRequestAnimationFrame);\r\n };\r\n\r\n _requestAnimationId = window.requestAnimationFrame(onRequestAnimationFrame);\r\n\r\n initPlugins();\r\n };\r\n\r\n var destroy = function() {\r\n _$scrubBar.off('keydown', keyPressed);\r\n _$scrubBar.off('touchstart', onDownSeek);\r\n _$scrubBar.off('mousedown', onMousedown);\r\n $container.off(events.Controls.Disable, disableKeyListeners);\r\n $container.off(events.Controls.Enable, enableKeyListeners);\r\n $container.off(events.Quizzing.Complete, onQuizzingCompleteHandler);\r\n\r\n if (_requestAnimationId !== null) {\r\n window.cancelAnimationFrame(_requestAnimationId);\r\n }\r\n };\r\n\r\n var durationHasChanged = function() {\r\n _durationDisplayInitialized = false;\r\n };\r\n\r\n setup();\r\n\r\n return Object.defineProperties({\r\n getSafeSeekTime: getSafeSeekTime,\r\n getXPositionForQuestionSetMarker: getXPositionForQuestionSetMarker,\r\n updateQuizMarkers: updateQuizMarkers,\r\n updateLoadProgress: updateLoadProgress,\r\n allowSkipQuestionSetMarkersBeforeTime: allowSkipQuestionSetMarkersBeforeTime,\r\n durationHasChanged: durationHasChanged,\r\n destroy: destroy\r\n }, {\r\n scrubbing: {\r\n get: function() {\r\n return _scrubbing;\r\n },\r\n set: setScrubbing\r\n }, lastScrubTime: {\r\n get: function() {\r\n return _lastScrubTime;\r\n }\r\n },\r\n controlElement: {\r\n get: function() {\r\n return _$scrubBar;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n create: ProgressBarControlView\r\n };\r\n});\r\n","(function(window, volumeControlViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.VolumeControlView = volumeControlViewFactory(\r\n window.$,\r\n namespace.localStorageWrapper,\r\n namespace.localizationStrings,\r\n namespace.templates,\r\n namespace.deviceInfo,\r\n namespace.cssClasses,\r\n namespace.tabIndex,\r\n namespace.events,\r\n namespace.highlightDisabler);\r\n})(this, function($, localStorageWrapper, localizationStrings, templates, deviceInfo, cssClasses, tabIndex, events, highlightDisabler) {\r\n 'use strict';\r\n var VOLUME_CACHE_KEY = 'volume';\r\n var MUTED_CACHE_KEY = 'muted';\r\n var VOLUME_SLIDER_MIN = 0;\r\n var VOLUME_SLIDER_MAX = 100;\r\n var MOUSEOUT_HIDE_SLIDER_TIMEOUT = 1000;\r\n var FOCUSOUT_HIDE_SLIDER_TIMEOUT = 200;\r\n var VOLUME_BUTTON_STRING = localizationStrings.strings.accessBtnVolume;\r\n var VOLUME_STRING = localizationStrings.strings.accessTxtVolume;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class VolumeControlView\r\n * @classdesc VolumeControl View\r\n */\r\n var VolumeControlView = function($container, mediaElement) {\r\n var _cachedVolume = localStorageWrapper.getItem(VOLUME_CACHE_KEY);\r\n var _cachedMuted = localStorageWrapper.getItem(MUTED_CACHE_KEY);\r\n var _sliderShowTimeoutId = -1;\r\n var _markup = templates.volume_control_template({\r\n accessBtnVolume: VOLUME_BUTTON_STRING,\r\n volumeIndex: tabIndex.Volume\r\n });\r\n\r\n var _$volumeContainer = $container.find('.volume-wrapper');\r\n _$volumeContainer.html(_markup);\r\n var _$volumeSlider = _$volumeContainer.find('.volume-slider');\r\n var _$volumeSliderContainer = _$volumeContainer.find('.volume-slider-container');\r\n var _$volumeControl = _$volumeContainer.find('.volume');\r\n var _$volumeSliderHandle;\r\n var _initialVolume = _cachedVolume === undefined || _cachedVolume === null ? 1 : +_cachedVolume;\r\n var _initialMuted = _cachedMuted === 'true';\r\n\r\n if (deviceInfo.getIOSSupportsInlineVideo() || deviceInfo.isAndroid()) {\r\n _$volumeControl.remove();\r\n }\r\n\r\n var setupVolumeSlider = function(volumeSliderObject) {\r\n volumeSliderObject.slider({\r\n orientation: 'horizontal',\r\n range: 'min',\r\n min: VOLUME_SLIDER_MIN,\r\n max: VOLUME_SLIDER_MAX,\r\n step: 2,\r\n value: mediaElement.volume * VOLUME_SLIDER_MAX,\r\n slide: function(event, ui) {\r\n setMuted(false);\r\n setVolume(ui.value / VOLUME_SLIDER_MAX);\r\n },\r\n stop: onSliderDragEnd\r\n });\r\n };\r\n\r\n var showVolumeSlider = function() {\r\n _$volumeSliderContainer.removeClass(cssClasses.hide);\r\n };\r\n\r\n var hideControls = function() {\r\n if (_sliderShowTimeoutId !== -1) {\r\n hideVolumeSlider();\r\n }\r\n };\r\n\r\n var hideVolumeSlider = function() {\r\n if (_sliderShowTimeoutId !== -1) {\r\n clearTimeout(_sliderShowTimeoutId);\r\n _sliderShowTimeoutId = -1;\r\n }\r\n\r\n _$volumeSliderContainer.addClass(cssClasses.hide);\r\n };\r\n\r\n var updateUi = function() {\r\n var volPercent = mediaElement.muted ? 0 : Math.round(mediaElement.volume * VOLUME_SLIDER_MAX);\r\n _$volumeSliderHandle.attr('aria-valuenow', volPercent);\r\n _$volumeSliderHandle.attr('aria-valuetext', volPercent + '% ' + VOLUME_STRING);\r\n _$volumeControl.attr('aria-pressed', !!mediaElement.muted);\r\n\r\n _$volumeSlider.slider('value', [volPercent]);\r\n _$volumeControl.removeClass(cssClasses.volumeHighButtonGlyph);\r\n _$volumeControl.removeClass(cssClasses.volumeMediumButtonGlyph);\r\n _$volumeControl.removeClass(cssClasses.volumeLowButtonGlyph);\r\n _$volumeControl.removeClass(cssClasses.volumeMutedButtonGlyph);\r\n\r\n if (volPercent === 0) {\r\n _$volumeControl.addClass(cssClasses.volumeMutedButtonGlyph);\r\n } else if (mediaElement.volume > .7) {\r\n _$volumeControl.addClass(cssClasses.volumeHighButtonGlyph);\r\n } else if (mediaElement.volume > .3) {\r\n _$volumeControl.addClass(cssClasses.volumeMediumButtonGlyph);\r\n } else {\r\n _$volumeControl.addClass(cssClasses.volumeLowButtonGlyph);\r\n }\r\n };\r\n\r\n var setVolume = function(newVol) {\r\n if (newVol > 1) {\r\n newVol = 1.0;\r\n } else if (newVol < 0) {\r\n newVol = 0.0;\r\n }\r\n\r\n localStorageWrapper.setItem(VOLUME_CACHE_KEY, newVol);\r\n mediaElement.volume = newVol;\r\n };\r\n\r\n var setMuted = function(muted) {\r\n mediaElement.muted = muted;\r\n localStorageWrapper.setItem(MUTED_CACHE_KEY, muted);\r\n };\r\n\r\n var onVolumeChanged = function() {\r\n updateUi();\r\n };\r\n\r\n var startHideSliderTimeout = function(timeout) {\r\n if (_sliderShowTimeoutId !== -1) {\r\n clearTimeout(_sliderShowTimeoutId);\r\n }\r\n\r\n _sliderShowTimeoutId = setTimeout(function() {\r\n hideVolumeSlider();\r\n _sliderShowTimeoutId = -1;\r\n }, timeout);\r\n };\r\n\r\n var isKeyboardEvent = function(e) {\r\n return e.key || e.originalEvent && e.originalEvent.keyCode;\r\n };\r\n\r\n var onSliderDragEnd = function(e) {\r\n if (!_$volumeContainer.has(e.toElement).length && !isKeyboardEvent(e)) {\r\n startHideSliderTimeout(MOUSEOUT_HIDE_SLIDER_TIMEOUT);\r\n }\r\n };\r\n\r\n var onContainerMouseOver = function() {\r\n if (_sliderShowTimeoutId !== -1) {\r\n clearTimeout(_sliderShowTimeoutId);\r\n _sliderShowTimeoutId = -1;\r\n }\r\n\r\n showVolumeSlider();\r\n };\r\n\r\n var onContainerMouseLeave = function(e) {\r\n if (e.buttons !== 1) {\r\n startHideSliderTimeout(MOUSEOUT_HIDE_SLIDER_TIMEOUT);\r\n }\r\n };\r\n\r\n var hideVolumeSliderOnFocusOut = function() {\r\n startHideSliderTimeout(FOCUSOUT_HIDE_SLIDER_TIMEOUT);\r\n };\r\n\r\n var onVolumeButtonClick = function() {\r\n if (!mediaElement.muted && mediaElement.volume === 0) {\r\n setVolume(1);\r\n } else {\r\n setMuted(!mediaElement.muted);\r\n }\r\n };\r\n\r\n var disableControls = function() {\r\n _$volumeControl.attr('tabindex', tabIndex.Disabled);\r\n _$volumeSliderHandle.attr('tabindex', tabIndex.Disabled);\r\n };\r\n\r\n var enableControls = function() {\r\n _$volumeControl.attr('tabindex', tabIndex.Volume);\r\n _$volumeSliderHandle.attr('tabindex', tabIndex.VolumeSlider);\r\n };\r\n\r\n var onSliderMouseDownHandler = function() {\r\n highlightDisabler.disableHighlights(_$volumeSliderHandle);\r\n };\r\n\r\n var initializeHandlers = function() {\r\n setupVolumeSlider(_$volumeSlider);\r\n\r\n _$volumeSliderHandle = _$volumeContainer.find('.ui-slider-handle');\r\n\r\n _$volumeContainer.on('mousemove', onContainerMouseOver);\r\n _$volumeContainer.on('mouseout', onContainerMouseLeave);\r\n _$volumeControl.on('click', onVolumeButtonClick);\r\n _$volumeSlider.on('mousedown', onSliderMouseDownHandler);\r\n _$volumeSliderHandle.on('focus', showVolumeSlider);\r\n _$volumeSliderHandle.on('focusout', hideVolumeSliderOnFocusOut);\r\n _$volumeSliderHandle.attr('tabindex', tabIndex.VolumeSlider);\r\n _$volumeSliderHandle.attr('aria-valuemin', VOLUME_SLIDER_MIN);\r\n _$volumeSliderHandle.attr('aria-valuemax', VOLUME_SLIDER_MAX);\r\n _$volumeSliderHandle.attr('role', 'slider');\r\n\r\n $container.on(events.Controls.Disable, disableControls);\r\n $container.on(events.Controls.Enable, enableControls);\r\n };\r\n\r\n var destroy = function() {\r\n _$volumeContainer.off('mousemove', onContainerMouseOver);\r\n _$volumeContainer.off('mouseout', onContainerMouseLeave);\r\n _$volumeControl.off('click', onVolumeButtonClick);\r\n _$volumeSlider.off('mousedown', onSliderMouseDownHandler);\r\n _$volumeSliderHandle.off('focus', showVolumeSlider);\r\n _$volumeSliderHandle.off('focusout', hideVolumeSliderOnFocusOut);\r\n $container.off(events.Controls.Disable, disableControls);\r\n $container.off(events.Controls.Enable, enableControls);\r\n };\r\n\r\n initializeHandlers();\r\n setMuted(_initialMuted);\r\n setVolume(_initialVolume);\r\n updateUi();\r\n\r\n return Object.defineProperties({\r\n hideControls: hideControls,\r\n onVolumeChanged: onVolumeChanged,\r\n destroy: destroy\r\n }, {\r\n volume: {\r\n get: function() {\r\n return mediaElement.volume;\r\n },\r\n set: setVolume\r\n },\r\n muted: {\r\n get: function() {\r\n return mediaElement.muted;\r\n },\r\n set: setMuted\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new VolumeControlView object.\r\n * @function create\r\n * @memberof TSC.VolumeControlView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .volume-wrapper element where the volume controls will be injected\r\n * @param {Object} mediaElement - html5 media DOM element (or wrapper presenting same interface)\r\n * @return new VolumeControlView instance\r\n */\r\n create: VolumeControlView\r\n };\r\n});\r\n","(function(window, beforeAfterPlayControlsViewFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.BeforeAfterPlayControlsView = beforeAfterPlayControlsViewFactory(namespace.templates, namespace.events, namespace.localizationStrings, namespace.viewHelper, namespace.tabIndex, namespace.highlightDisabler, namespace.playerConfiguration);\r\n})(this, function(templates, events, localizationStrings, viewHelper, tabIndex, highlightDisabler, playerConfiguration) {\r\n 'use strict';\r\n\r\n var rightParenRegex = /\\)/gi;\r\n var leftParenRegex = /\\(/gi;\r\n\r\n /**\r\n * @memberof TSC\r\n * @class BeforeAfterPlayControlsView\r\n * @classdesc View containing the large play video and replay video buttons at the beginning and end of videos\r\n */\r\n var BeforeAfterPlayControlsView = function($container) {\r\n var _markup;\r\n var _$videoClickToPlayLink;\r\n var _$videoClickToReplayLink;\r\n var _$videoClickToPlayGraphic;\r\n var _$videoClickToReplayGraphic;\r\n var _videoElementHasLoaded = false;\r\n\r\n var onPlayHandler = function(e) {\r\n e.preventDefault();\r\n if (playerConfiguration.disableInteractions) {\r\n return;\r\n }\r\n\r\n hideVideoClickToPlayLink();\r\n if (_videoElementHasLoaded) {\r\n $container.trigger(events.Controls.PlayControl);\r\n } else {\r\n $container.trigger(events.Controls.LoadAndPlayControl);\r\n }\r\n };\r\n\r\n var showVideoClickToPlayLink = function() {\r\n _$videoClickToPlayLink.show();\r\n };\r\n\r\n var hideVideoClickToPlayLink = function() {\r\n _$videoClickToPlayLink.hide();\r\n };\r\n\r\n var setVideoClickToPlayErrorState = function(state) {\r\n if (state) {\r\n _$videoClickToPlayLink.addClass('video-click-to-play-error');\r\n } else {\r\n _$videoClickToPlayLink.removeClass('video-click-to-play-error');\r\n }\r\n };\r\n\r\n var hideVideoClickToReplayLink = function() {\r\n _$videoClickToReplayLink.hide();\r\n };\r\n\r\n var showVideoClickToReplayLink = function() {\r\n _$videoClickToReplayLink.show();\r\n\r\n if (viewHelper.elementOrChildHasFocus($container)) {\r\n _$videoClickToReplayGraphic.focus();\r\n highlightDisabler.disableHighlights(_$videoClickToReplayGraphic);\r\n }\r\n };\r\n\r\n var addVideoClickToPlayBackground = function(posterSrc) {\r\n posterSrc = posterSrc.replace(rightParenRegex, '\\\\\\)');\r\n posterSrc = posterSrc.replace(leftParenRegex, '\\\\\\(');\r\n\r\n var url = 'url(' + posterSrc + ')';\r\n _$videoClickToPlayLink.css('background-image', url);\r\n _$videoClickToReplayLink.css('background-image', url);\r\n };\r\n\r\n var replayHandler = function() {\r\n hideVideoClickToReplayLink();\r\n $container.trigger(events.Media.Replay);\r\n };\r\n\r\n var createView = function() {\r\n _markup = templates.before_after_play_controls_template({\r\n playIndex: tabIndex.InitialPlay,\r\n replayIndex: tabIndex.EndReplay,\r\n playButtonIndex: tabIndex.Disabled,\r\n replayButtonIndex: tabIndex.Disabled,\r\n accessBtnClickToPlay: localizationStrings.strings.accessBtnPlay,\r\n accessBtnClickToReplay: localizationStrings.strings.accessBtnClickToReplayLink\r\n });\r\n $container.find('.before-after-play-controls').html(_markup);\r\n\r\n _$videoClickToPlayLink = $container.find('.video-click-to-play-link');\r\n _$videoClickToReplayLink = $container.find('.video-click-to-replay-link');\r\n _$videoClickToPlayGraphic = $container.find('.video-click-to-play');\r\n _$videoClickToReplayGraphic = $container.find('.video-click-to-replay');\r\n\r\n _$videoClickToReplayLink.hide();\r\n\r\n if (viewHelper.elementOrChildHasFocus($container)) {\r\n _$videoClickToPlayGraphic.focus();\r\n highlightDisabler.disableHighlights(_$videoClickToPlayGraphic);\r\n }\r\n };\r\n\r\n var bindEvents = function() {\r\n _$videoClickToReplayLink.on('click', replayHandler);\r\n _$videoClickToPlayLink.on('click', onPlayHandler);\r\n };\r\n\r\n var disableClickToPlayEvents = function() {\r\n _$videoClickToPlayLink.addClass('noClickToPlayEvents');\r\n };\r\n\r\n var destroy = function() {\r\n _$videoClickToReplayLink.off('click', replayHandler);\r\n _$videoClickToPlayLink.off('click', onPlayHandler);\r\n };\r\n\r\n createView();\r\n bindEvents();\r\n\r\n return Object.defineProperties(\r\n {\r\n showVideoClickToPlayLink: showVideoClickToPlayLink,\r\n hideVideoClickToPlayLink: hideVideoClickToPlayLink,\r\n setVideoClickToPlayErrorState: setVideoClickToPlayErrorState,\r\n hideVideoClickToReplayLink: hideVideoClickToReplayLink,\r\n showVideoClickToReplayLink: showVideoClickToReplayLink,\r\n addVideoClickToPlayBackground: addVideoClickToPlayBackground,\r\n disableClickToPlayEvents: disableClickToPlayEvents,\r\n destroy: destroy\r\n },\r\n {\r\n videoElementHasLoaded: {\r\n get: function() {\r\n return _videoElementHasLoaded;\r\n },\r\n set: function(videoElementHasLoaded) {\r\n _videoElementHasLoaded = videoElementHasLoaded;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Factory method that returns a new BeforeAfterPlayControlsView object.\r\n * @function create\r\n * @memberof TSC.BeforeAfterPlayControlsView\r\n * @static\r\n * @param {Object} $container - jQuery element that contains a .before-after-play-controls element where the before and after play controls will be injected\r\n * @return new BeforeAfterPlayControlsView instance\r\n */\r\n create: BeforeAfterPlayControlsView\r\n };\r\n});\r\n","(function(window, ClickControlsViewDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.ClickControlsView = ClickControlsViewDefinition(window.$, namespace.events, namespace.mouseButtons, namespace.playerConfiguration);\r\n})(this, function($, events, mouseButtons, playerConfiguration) {\r\n 'use strict';\r\n\r\n var DEFAULT_DOUBLE_CLICK_DELAY = 300;\r\n\r\n var ClickControlsView = function($container, mediaElement, fullscreenView, progressBarControlView, youTube, doubleClickDelay) {\r\n var _$clickControls = $container.find('.click-controls');\r\n var _$playPauseStateContainer = $container.find('.play-pause-state');\r\n var _$playPauseStateIndicator = $container.find('.play-pause-state-indicator');\r\n var _clicks = 0;\r\n var _doubleClickTimer = null;\r\n var _enabled = true;\r\n var _doubleClickDelay = doubleClickDelay || DEFAULT_DOUBLE_CLICK_DELAY;\r\n\r\n var onClickPlay = function() {\r\n if (mediaElement !== youTube.player && mediaElement.currentTime !== 0) {\r\n mediaElement.play();\r\n _$playPauseStateIndicator.removeClass('pause-button-background-glyph').addClass('play-button-background-glyph');\r\n _$playPauseStateContainer.show().fadeOut('slow');\r\n }\r\n };\r\n\r\n var onClickPause = function() {\r\n if (mediaElement !== youTube.player && mediaElement.currentTime !== mediaElement.duration) {\r\n mediaElement.pause();\r\n _$playPauseStateIndicator.removeClass('play-button-background-glyph').addClass('pause-button-background-glyph');\r\n _$playPauseStateContainer.show().fadeOut('slow');\r\n }\r\n };\r\n\r\n var processHotspotActiveChange = function(e, eventData) {\r\n if (e.type === events.Hotspots.Paused && eventData && eventData.hasTimeChangeAction) {\r\n disable();\r\n } else if (e.type === events.Hotspots.Resume) {\r\n enable();\r\n }\r\n };\r\n\r\n $container.on(events.Hotspots.Paused, processHotspotActiveChange);\r\n $container.on(events.Hotspots.Resume, processHotspotActiveChange);\r\n\r\n _$clickControls.click(function(e) {\r\n if (!_enabled || e.button !== mouseButtons.mainButton) {\r\n return;\r\n }\r\n\r\n _clicks++;\r\n clearTimeout(_doubleClickTimer);\r\n\r\n if (_clicks === 1) {\r\n var mediaPaused = mediaElement.paused;\r\n\r\n _doubleClickTimer = setTimeout(function() {\r\n _clicks = 0;\r\n\r\n if (!playerConfiguration.getEnableSingleClickControl()) {\r\n return;\r\n }\r\n\r\n if (mediaElement.paused === mediaPaused && !progressBarControlView.scrubbing) {\r\n mediaElement.paused ? onClickPlay() : onClickPause();\r\n }\r\n }, _doubleClickDelay);\r\n } else if (_clicks === 2) {\r\n _clicks = 0;\r\n\r\n if (!playerConfiguration.getEnableDoubleClickControl()) {\r\n return;\r\n }\r\n\r\n fullscreenView.onDoubleClick();\r\n }\r\n });\r\n\r\n var enable = function() {\r\n _enabled = true;\r\n };\r\n\r\n var disable = function() {\r\n _enabled = false;\r\n };\r\n\r\n return {\r\n enable: enable,\r\n disable: disable\r\n };\r\n };\r\n\r\n return {\r\n create: ClickControlsView\r\n };\r\n});\r\n","(function(window, playerViewDefinition) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.playerView = playerViewDefinition(window,\r\n window.jQuery,\r\n namespace.externalMessageController,\r\n namespace.deviceInfo,\r\n namespace.performanceWrapper,\r\n namespace.IoOverlayView,\r\n namespace.localizationStrings,\r\n namespace.templates,\r\n namespace.quizController,\r\n namespace.playerConfiguration,\r\n namespace.PlayerSettingsView,\r\n namespace.videoAnalytics,\r\n namespace.xmp,\r\n namespace.questionGrader,\r\n namespace.fathomService,\r\n namespace.youTube,\r\n namespace.iOSTextInputFix,\r\n namespace.RenderLibView,\r\n namespace.TocView,\r\n namespace.AudioDescriptionControlView,\r\n namespace.AudioDescriptionTrackView,\r\n namespace.CaptionsView,\r\n namespace.HotspotsView,\r\n namespace.VolumeControlView,\r\n namespace.PlayRewindControlsView,\r\n namespace.PrevNextControlsView,\r\n namespace.PipControlView,\r\n namespace.FullscreenControlView,\r\n namespace.ClickControlsView,\r\n namespace.cssClasses,\r\n namespace.events,\r\n namespace.responsiveController,\r\n namespace.ProgressBarControlView,\r\n namespace.BeforeAfterPlayControlsView,\r\n namespace.tabIndex,\r\n namespace.highlightDisabler,\r\n namespace.mediaType,\r\n namespace.urlService,\r\n namespace.viewHelper,\r\n namespace.ieFullscreenDimensionsFix,\r\n namespace.reportType,\r\n namespace.log,\r\n namespace.supportedPluginViewElements,\r\n namespace.scormController,\r\n namespace.endActionType,\r\n namespace.endActionsController,\r\n namespace.messageBarType,\r\n namespace.MessageBarView,\r\n namespace.TabController);\r\n})(this, function(window,\r\n $,\r\n externalMessageController,\r\n deviceInfo,\r\n performanceWrapper,\r\n IoOverlayView,\r\n localizationStrings,\r\n templates,\r\n quizController,\r\n playerConfiguration,\r\n PlayerSettingsView,\r\n videoAnalytics,\r\n xmp,\r\n questionGrader,\r\n fathomService,\r\n youTube,\r\n iOSTextInputFix,\r\n RenderLibView,\r\n TocView,\r\n AudioDescriptionControlView,\r\n AudioDescriptionTrackView,\r\n CaptionsView,\r\n HotspotsView,\r\n VolumeControlView,\r\n PlayRewindControlsView,\r\n PrevNextControlsView,\r\n PipControlView,\r\n FullscreenControlView,\r\n ClickControlsView,\r\n cssClasses,\r\n events,\r\n responsiveController,\r\n ProgressBarControlView,\r\n BeforeAfterPlayControlsView,\r\n tabIndex,\r\n highlightDisabler,\r\n mediaType,\r\n urlService,\r\n viewHelper,\r\n ieFullscreenDimensionsFix,\r\n reportType,\r\n log,\r\n supportedPluginViewElements,\r\n scormController,\r\n endActionType,\r\n endActionsController,\r\n messageBarType,\r\n MessageBarView,\r\n TabController) {\r\n 'use strict';\r\n\r\n var _self = this;\r\n var _$container = null;\r\n var _containerSelector = null;\r\n var _containerIDString = null;\r\n var _videoTagUniqueId = null;\r\n\r\n var _html5ViewEnabled = false;\r\n var _mediaList = null;\r\n var _playerViewEventCallbacks = {};\r\n var _queuedMediaBinds = {};\r\n var _initializedValues = {};\r\n var _captionService = null;\r\n\r\n var _mediaWrapper = null;\r\n var _mediaElement = null;\r\n var _$videoWrapper = null;\r\n var _$videoDiv = null;\r\n var _$controls = null;\r\n var _$hotspotsContainer = null;\r\n var _$mediaPluginContainer = null;\r\n var _$youtubePointerEventWorkaround = null;\r\n\r\n var _renderLibView = null;\r\n var _tocView = null;\r\n var _audioDescriptionControlView = null;\r\n var _audioDescriptionTrackView = null;\r\n var _captionsView = null;\r\n var _hotspotsView = null;\r\n var _beforeAfterPlayControlsView = null;\r\n var _playRewindControlsView = null;\r\n var _prevNextControlsView = null;\r\n var _progressBarControlView = null;\r\n var _volumeControlView = null;\r\n var _playerSettingsView = null;\r\n var _pipControlView = null;\r\n var _fullscreenControlView = null;\r\n var _ioOverlayView = null;\r\n var _clickControls = null;\r\n\r\n var _animationSpeed = 300;\r\n var _intrinsicWidth = -1;\r\n var _intrinsicHeight = -1;\r\n var _currentTime = 0;\r\n var _currentTimeInMilliseconds = 0;\r\n var _timeAfterSeek = -1;\r\n var _updateBufferedTimeout;\r\n var _lastClickTime;\r\n var _surfaceClickLeaveDelay = 100;\r\n var _mouseMoveTolerance = 5;\r\n var _lastMouseMoveCoords = {\r\n x: 0,\r\n y: 0\r\n };\r\n\r\n var _tabController = null;\r\n var _xmp = null;\r\n var _autoHideTimeoutId = -1;\r\n var _autoHideControllerTime = 5000;\r\n var _lastQuestionSetId = -1;\r\n var _lastQuestionSetMarkerTime = -1;\r\n var _eventLastPercentReported = 0;\r\n var _eventPercentWatchInc = 10;\r\n var _canPlayVideo = false;\r\n var _viewDirty = false;\r\n var _seeking = false;\r\n var _displayToc = false;\r\n var _controlsHidden = false;\r\n var _videoMetadataReady = false;\r\n var _processingEndOfVideo = false;\r\n var _atVideoEndTime = false;\r\n var _eventPlayTracking = true;\r\n var _eventCategory = 'HTML5-Video';\r\n var _haveYouTubePlayer = false;\r\n var _loadVideoTimeout = 10000;\r\n var _overlaysDisabled = false;\r\n var _startPlaybackOnInit = true;\r\n var _mediaFailedToPlay = false;\r\n var _autoHideControlsEnabled = false;\r\n var _playerInitializedAfterMetadataLoaded = false;\r\n\r\n var _lang = localizationStrings;\r\n var _uiInitialized = false;\r\n\r\n var _controlBarHeight = 48;\r\n\r\n var processPlayerEvent = function(action, label, value) {\r\n if (playerConfiguration.getCustomEventTracking()) {\r\n if (playerConfiguration.getCustomEventCallback()) {\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n playerConfiguration.getCustomEventCallback().call(this, {category: playerConfiguration.getMediaFileName(), action: action, label: label, value: value});\r\n } else {\r\n playerConfiguration.getCustomEventCallback().call(this, {category: _eventCategory, action: action, label: label, value: value});\r\n }\r\n }\r\n }\r\n\r\n if (playerConfiguration.getGoogleAnalyticsID()) {\r\n window._gaq.push(['_trackEvent', _eventCategory, action, label]);\r\n }\r\n };\r\n\r\n var onPlayPromiseError = function() {\r\n // Assume user interaction is needed to play\r\n _mediaFailedToPlay = true;\r\n disableAutoHideControls();\r\n hideControls(true, true);\r\n _beforeAfterPlayControlsView.videoElementHasLoaded = true;\r\n _beforeAfterPlayControlsView.showVideoClickToPlayLink();\r\n };\r\n\r\n var play = function() {\r\n var playPromise = _mediaElement.play();\r\n if (playPromise !== undefined) {\r\n playPromise.catch(onPlayPromiseError);\r\n }\r\n };\r\n\r\n var pause = function() {\r\n _mediaElement.pause();\r\n };\r\n\r\n var enableControls = function() {\r\n if (!isControlsHidden()) {\r\n _$container.trigger(events.Controls.Enable);\r\n }\r\n };\r\n\r\n var disableControls = function() {\r\n _$container.trigger(events.Controls.Disable);\r\n };\r\n\r\n var sizeCaptions = function() {\r\n if (_mediaWrapper === undefined || _intrinsicHeight <= 0) {\r\n return;\r\n }\r\n\r\n // size video div around captions if caption position is under\r\n if (_captionService.position === 'under') {\r\n var newHeight = _intrinsicHeight * ((_$videoWrapper.height() - _$controls.height()) / (_intrinsicHeight + parseFloat(_captionService.height)));\r\n _$videoDiv.height(newHeight);\r\n }\r\n _captionsView.scale = calculateCanvasScale();\r\n };\r\n\r\n var updateQuizPointAtPosition = function() {\r\n var playerXOffset = _$container.offset().left;\r\n var markerXPosition = _progressBarControlView.getXPositionForQuestionSetMarker(_lastQuestionSetId);\r\n var pointAtXPosition = markerXPosition - playerXOffset;\r\n quizController.pointViewAt(pointAtXPosition);\r\n };\r\n\r\n var sizePageElements = function() {\r\n responsiveController.manageResponsiveClasses();\r\n\r\n var isVideoFoundOnPage = _mediaWrapper && _mediaElement;\r\n if (isVideoFoundOnPage && _mediaElement.duration) {\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n _progressBarControlView.updateQuizMarkers();\r\n // update bubble position if quizzing is on and there is a view open\r\n if (quizController.viewIsOpen) {\r\n updateQuizPointAtPosition();\r\n }\r\n }\r\n }\r\n\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.resize();\r\n }\r\n\r\n sizeCaptions();\r\n\r\n if (_hotspotsView && _mediaWrapper !== undefined) {\r\n _hotspotsView.size(calculateCanvasScale(), _$videoDiv.width(), _$videoDiv.height());\r\n }\r\n };\r\n\r\n var calculateCanvasScale = function() {\r\n var scale = 1;\r\n if (_mediaWrapper !== undefined && _intrinsicWidth > 0 && _mediaWrapper.width() > 0) {\r\n var ratioOfWidth = _mediaWrapper.width() / _intrinsicWidth;\r\n var ratioOfHeight = _mediaWrapper.height() / _intrinsicHeight;\r\n scale = Math.min(ratioOfWidth, ratioOfHeight);\r\n }\r\n\r\n return scale;\r\n };\r\n\r\n var isControlsHidden = function() {\r\n return playerConfiguration.getDisableControls() || playerConfiguration.getDisableInteractions();\r\n };\r\n\r\n var handleControlsUpdated = function() {\r\n if (isControlsHidden()) {\r\n hideControls(true, true);\r\n } else {\r\n showControlsWithAutoHide();\r\n }\r\n\r\n //Toggle back and forth to avoid event handler leaking\r\n disableAutoHideControls();\r\n enableAutoHideControls();\r\n };\r\n\r\n var onVideoReady = function() {\r\n if (isControlsHidden()) {\r\n disableControls();\r\n } else {\r\n _$controls.show();\r\n }\r\n\r\n _playRewindControlsView.setInitialFocus();\r\n\r\n // setup how controller can be hidden / shown\r\n enableAutoHideControls();\r\n _ioOverlayView.hideView();\r\n\r\n _playerViewEventCallbacks[events.External.MediaReady].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n\r\n _$container.on(events.Controls.Updated, handleControlsUpdated);\r\n };\r\n\r\n var onExpandVideo = function() {\r\n pause();\r\n };\r\n\r\n var onFullScreenChange = function() {\r\n if (!_fullscreenControlView.isFullScreen) {\r\n _viewDirty = true;\r\n }\r\n _playerViewEventCallbacks[events.External.PlayerFullScreenModeChanged].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n sizePageElements();\r\n };\r\n\r\n var onPipChanged = function(event, eventData) {\r\n if (_processingEndOfVideo && endActionsController.getEndActionType() !== endActionType.hideReplayControls) {\r\n return;\r\n }\r\n\r\n if (!_controlsHidden && eventData.hideControls) {\r\n hideControls(true, true);\r\n disableAutoHideControls();\r\n } else if (_controlsHidden && !eventData.hideControls) {\r\n showControls(true);\r\n enableAutoHideControls();\r\n }\r\n };\r\n\r\n var finishInitializationAfterMetaDataLoaded = function() {\r\n _playerInitializedAfterMetadataLoaded = true;\r\n\r\n // scorm production does not support expand video into new window option\r\n var canSupportExpandVideoMode = !playerConfiguration.isScormLesson && !playerConfiguration.getReportScormComplete() && (_xmp === null || _xmp.quizReportMethod !== reportType.SCORM && _xmp.quizReportMethod !== reportType.APIANDSCORM);\r\n\r\n _fullscreenControlView.initializeFullScreenSupport(canSupportExpandVideoMode);\r\n\r\n // switching between video with picture-in-picture mode does not currently work.\r\n if (!_mediaList.isPlaylist) {\r\n _pipControlView.initialize();\r\n }\r\n\r\n _$container.on(events.Controls.ExpandVideo, onExpandVideo);\r\n _$container.on(events.Controls.FullScreenChange, onFullScreenChange);\r\n _$container.on(events.Controls.PipChanged, onPipChanged);\r\n\r\n if (_hotspotsView) {\r\n _$container.on(events.Controls.HotspotClicked, processHotspotClick);\r\n\r\n _mediaWrapper.on('ratechange', function() {\r\n _hotspotsView.update(_currentTime);\r\n }, false);\r\n _mediaWrapper.on('play', function() {\r\n _hotspotsView.update(_currentTime);\r\n }, false);\r\n }\r\n };\r\n\r\n var onLoadedMetadata = function() {\r\n _videoMetadataReady = true;\r\n _intrinsicWidth = _mediaElement.videoWidth;\r\n _intrinsicHeight = _mediaElement.videoHeight;\r\n _currentTime = 0;\r\n\r\n // check to see if quiz exists and it is ready to rumble\r\n if (_haveYouTubePlayer) {\r\n onVideoReady();\r\n } else if (!quizController.hasQuiz || quizController.hasQuiz && (!quizController.quizEnabled || quizController.quizReady)) {\r\n onVideoReady();\r\n } else { // update overlay with status of quiz code\r\n pause();\r\n _ioOverlayView.displayMessage(quizController.getLastStatusMessage());\r\n }\r\n\r\n if (videoAnalytics.isEnabled() && !videoAnalytics.isPercentWatchedInitialized()) {\r\n videoAnalytics.initPercentWatched(_mediaElement.duration * 1000);\r\n }\r\n\r\n performanceWrapper.createMeasure(events.Timing.VideoMetadataLoaded, events.Timing.VideoMetadataLoaded);\r\n triggerRumDataEvent([events.Timing.VideoMetadataLoaded]);\r\n\r\n // hotspots\r\n if (_hotspotsView) {\r\n var currentFile = _mediaList.isPlaylist ? _mediaList.currentMedia.media : undefined;\r\n _hotspotsView.init(_intrinsicWidth, _intrinsicHeight, currentFile);\r\n }\r\n\r\n if (!_playerInitializedAfterMetadataLoaded) {\r\n finishInitializationAfterMetaDataLoaded();\r\n }\r\n\r\n _viewDirty = true;\r\n sizePageElements();\r\n };\r\n\r\n var onVideoTimeUpdate = function() {\r\n // ignore time if quiz exists, but not ready, check for duration equal zero to fix issue seen on some Android devices\r\n if (!_canPlayVideo || _mediaElement.duration === 0 || quizController.hasQuiz && quizController.quizEnabled && !quizController.quizReady) {\r\n return;\r\n }\r\n\r\n if (_mediaElement) {\r\n _currentTime = _mediaElement.currentTime > _mediaElement.duration ? _mediaElement.duration : _mediaElement.currentTime;\r\n } else {\r\n _currentTime = 0;\r\n }\r\n\r\n if (isNaN(_currentTime)) {\r\n log.logMessage('Player view: Current time is now NaN (_mediaElement.currentTime=' + _mediaElement.currentTime + ', _mediaElement.duration=' + _mediaElement.duration + ')');\r\n }\r\n\r\n _atVideoEndTime = Number(_mediaElement.currentTime.toFixed(2)) >= Number(_mediaElement.duration.toFixed(2));\r\n\r\n _currentTimeInMilliseconds = _currentTime * 1000;\r\n\r\n // video analytics\r\n if (videoAnalytics.isEnabled()) {\r\n updateAnalytics();\r\n }\r\n\r\n // check for question set\r\n if (!getScrubbing() && quizController.hasQuiz && quizController.quizEnabled) {\r\n updateQuizzing();\r\n }\r\n\r\n if (_hotspotsView) {\r\n _hotspotsView.update(_currentTimeInMilliseconds);\r\n }\r\n updateCaptions();\r\n\r\n // check to see if video is at the end\r\n if (!getScrubbing() && _lastQuestionSetId === -1 && _atVideoEndTime && !_processingEndOfVideo) {\r\n processEndOfMedia();\r\n }\r\n };\r\n\r\n var updateCaptions = function() {\r\n var currentFile = _mediaList.isPlaylist ? _mediaList.currentMedia.media : null;\r\n _captionsView.updateCaption(_currentTimeInMilliseconds, currentFile);\r\n };\r\n\r\n var updateQuizzing = function() {\r\n var qs = quizController.findQuestionSet(_currentTimeInMilliseconds);\r\n\r\n if (qs.id < 0) {\r\n _lastQuestionSetId = -1;\r\n return;\r\n }\r\n\r\n if (_lastQuestionSetId !== qs.id) {\r\n viewHelper.saveActiveElement();\r\n // make sure control bar is shown up and auto hide is disabled.\r\n disableControls();\r\n disableAutoHideControls();\r\n showControlsWithoutAutoHide();\r\n\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.hide(_animationSpeed);\r\n }\r\n\r\n _lastQuestionSetId = qs.id;\r\n _lastQuestionSetMarkerTime = qs.markerTime / 1000;\r\n pause();\r\n\r\n _$container.trigger(events.Quizzing.Paused);\r\n\r\n setTimeout(function() {\r\n seek(_lastQuestionSetMarkerTime); // convert back to seconds\r\n }, 100);\r\n\r\n quizController.displayConfirm(qs.id);\r\n\r\n updateQuizPointAtPosition();\r\n\r\n if (videoAnalytics.isEnabled()) {\r\n if (!isNaN(qs.markerTime) && videoAnalytics.isPercentWatchedInitialized()) {\r\n videoAnalytics.markTimeWatched(qs.markerTime);\r\n } else {\r\n log.logMessage('Player-view: videoAnalytics percent watched not initialized, or Quiz Marker time is NaN (' + qs.markerTime + ')');\r\n }\r\n\r\n var percentWatched = videoAnalytics.getPercentageWatchedForVideoSegment(quizController.findPrevMarkerTimeForMarker(qs.id), qs.markerTime);\r\n quizController.updatePercentWatchedForQuestionSet(_lastQuestionSetId, percentWatched);\r\n }\r\n }\r\n };\r\n\r\n var updateAnalytics = function() {\r\n if (!_mediaElement.duration) {\r\n return;\r\n }\r\n\r\n if (!videoAnalytics.isPercentWatchedInitialized()) {\r\n videoAnalytics.initPercentWatched(_mediaElement.duration * 1000);\r\n }\r\n\r\n var percentWatched = Math.round(videoAnalytics.getPercentageWatched() * 100);\r\n\r\n if (!isNaN(_currentTimeInMilliseconds)) {\r\n videoAnalytics.markTimeWatched(_currentTimeInMilliseconds);\r\n } else {\r\n log.logMessage('Player-view: currentTime is NaN (' + _currentTime + ', ' + _currentTimeInMilliseconds + ')');\r\n }\r\n\r\n // Built in Scorm support\r\n if (scormController.initialized) {\r\n scormController.submitVideoWatchedPercentage(0.01 * percentWatched, videoAnalytics.getCurrentPlayTime());\r\n // Legacy Scorm support\r\n } else if (typeof window.onVideoWatchedPercentage === 'function') {\r\n window.onVideoWatchedPercentage(0.01 * percentWatched, videoAnalytics.getCurrentPlayTime());\r\n }\r\n\r\n if (playerConfiguration.getTrackEvents()) {\r\n if (percentWatched >= _eventLastPercentReported + _eventPercentWatchInc) {\r\n _eventLastPercentReported += _eventPercentWatchInc;\r\n\r\n if (_eventLastPercentReported < percentWatched) {\r\n _eventLastPercentReported = _eventPercentWatchInc * Math.floor(percentWatched / _eventPercentWatchInc) + _eventPercentWatchInc;\r\n }\r\n\r\n if (_eventLastPercentReported > 100) {\r\n _eventLastPercentReported = 100;\r\n }\r\n\r\n processPlayerEvent('Video_Percent_Viewed', 'Viewed: ' + _eventLastPercentReported + ' Percent');\r\n }\r\n }\r\n };\r\n\r\n var showToc = function(bShow) {\r\n if (bShow) {\r\n _tocView.open();\r\n _tocView.resize();\r\n } else {\r\n _tocView.close();\r\n }\r\n };\r\n\r\n var setupProgressBarAtPageLoad = function() {\r\n // this is a workaround because the ipad/iphone do not support the\r\n // progress event so we must check the buffering every second\r\n _mediaWrapper.on('durationchange', function() {\r\n updateBuffered();\r\n\r\n if (_updateBufferedTimeout) {\r\n window.clearInterval(_updateBufferedTimeout);\r\n }\r\n\r\n _updateBufferedTimeout = window.setInterval(updateBuffered, 1000);\r\n });\r\n };\r\n\r\n var updateBuffered = function() {\r\n var downloaded;\r\n if (_mediaWrapper && _mediaElement) {\r\n if (_mediaElement.buffered && _mediaElement.buffered.length) {\r\n downloaded = Math.min(100, Math.ceil(_mediaElement.buffered.end(_mediaElement.buffered.length - 1) * 100 / _mediaElement.duration));\r\n }\r\n\r\n _progressBarControlView.updateLoadProgress((downloaded || 0) + '%');\r\n\r\n if (downloaded === 100 && _updateBufferedTimeout) {\r\n window.clearInterval(_updateBufferedTimeout);\r\n }\r\n }\r\n };\r\n\r\n var getScrubbing = function() {\r\n return _progressBarControlView ? _progressBarControlView.scrubbing : false;\r\n };\r\n\r\n var setScrubbing = function(value) {\r\n _progressBarControlView.scrubbing = value;\r\n };\r\n\r\n var blockTextSelection = function() {\r\n document.body.focus();\r\n document.onselectstart = function() {\r\n return false;\r\n };\r\n };\r\n\r\n var unblockTextSelection = function() {\r\n document.onselectstart = function() {\r\n return true;\r\n };\r\n };\r\n\r\n var processEndOfMedia = function() {\r\n if (!_processingEndOfVideo) {\r\n _processingEndOfVideo = true;\r\n _progressBarControlView.updateQuizMarkers();\r\n pause();\r\n onVideoEnd();\r\n }\r\n };\r\n\r\n var seek = function(time) {\r\n if (_seeking) {\r\n _timeAfterSeek = time;\r\n return;\r\n }\r\n\r\n if (_mediaElement.currentTime.toFixed(4) === time.toFixed(4)) {\r\n return;\r\n }\r\n\r\n if (_hotspotsView) {\r\n _hotspotsView.resetHasPaused();\r\n _hotspotsView.update(time * 1000);\r\n }\r\n\r\n if (!getScrubbing() && time === _mediaElement.duration) {\r\n processEndOfMedia();\r\n } else {\r\n _mediaElement.currentTime = time;\r\n }\r\n };\r\n\r\n // seek with quizzing stops considered\r\n var safeSeek = function(time) {\r\n if (!_mediaWrapper || !_mediaElement) {\r\n playerConfiguration.setJumpToTime(time);\r\n }\r\n\r\n seek(_progressBarControlView.getSafeSeekTime(time));\r\n };\r\n\r\n var hideVideoAndShowClickToReplay = function() {\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.hide(_animationSpeed);\r\n }\r\n\r\n hideControls(true, true);\r\n _beforeAfterPlayControlsView.showVideoClickToReplayLink();\r\n };\r\n\r\n var reshowVideoAfterClickToReplay = function(time, playAfterSeek) {\r\n _processingEndOfVideo = false;\r\n _beforeAfterPlayControlsView.hideVideoClickToReplayLink();\r\n _$videoWrapper.css('visibility', 'visible');\r\n\r\n enableControls();\r\n\r\n if (!_mediaList.isPlaylist) {\r\n seek(time);\r\n }\r\n\r\n if (playAfterSeek) {\r\n if (_mediaList.isPlaylist) {\r\n _mediaList.currentMediaIndex = 0;\r\n initCurrentMedia();\r\n } else {\r\n play();\r\n }\r\n }\r\n\r\n if (_tocView && _tocView.isOpen && !_controlsHidden) {\r\n _tocView.show(_animationSpeed);\r\n }\r\n\r\n if (!enableAutoHideControls()) {\r\n _viewDirty = true;\r\n showControlsWithAutoHide();\r\n }\r\n };\r\n\r\n var showReplayControlsHandler = function() {\r\n _fullscreenControlView.onVideoEnd();\r\n\r\n disableAutoHideControls();\r\n disableControls();\r\n\r\n _playerSettingsView && _playerSettingsView.close();\r\n hideControls(true, true);\r\n hideVideoAndShowClickToReplay();\r\n };\r\n\r\n var onVideoEnd = function() {\r\n _$container.trigger(events.Media.End);\r\n\r\n if (_mediaList.isPlaylist && !_mediaList.onLastMedia) {\r\n _viewDirty = true;\r\n _mediaList.currentMediaIndex = 'next';\r\n initCurrentMedia();\r\n } else {\r\n pause();\r\n\r\n endActionsController.executeEndAction(reshowVideoAfterClickToReplay, showReplayControlsHandler);\r\n\r\n if (playerConfiguration.getTrackEvents()) {\r\n processPlayerEvent('Video_Finished_Action', playerConfiguration.getEndActionParam());\r\n }\r\n }\r\n };\r\n\r\n var setupControls = function() {\r\n _mediaWrapper.on('ended', function() {\r\n if (getScrubbing()) {\r\n return;\r\n }\r\n\r\n onVideoTimeUpdate();\r\n\r\n if (playerConfiguration.getTrackEvents()) {\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n processPlayerEvent('Video_Finished', _eventCategory);\r\n } else {\r\n processPlayerEvent('Video_Finished', _mediaList.currentMedia.uri);\r\n }\r\n }\r\n });\r\n\r\n _mediaElement.addEventListener(events.Media.Play, resetPlayStartAnalytics);\r\n _mediaElement.addEventListener(events.Media.Play, hideClickToPlayControl);\r\n\r\n _$container.on(events.Controls.ClickPrev, function() {\r\n if (!_mediaList.onFirstMedia) {\r\n _mediaList.currentMediaIndex = 'previous';\r\n initCurrentMedia();\r\n }\r\n });\r\n\r\n _$container.on(events.Controls.ClickNext, function() {\r\n if (!_mediaList.onLastMedia) {\r\n _mediaList.currentMediaIndex = 'next';\r\n initCurrentMedia();\r\n }\r\n });\r\n\r\n _$container.on(events.Media.SeekToTime, function(e, time) {\r\n if (_controlsHidden) {\r\n showControlsWithAutoHide();\r\n }\r\n\r\n seek(time);\r\n });\r\n\r\n _$container.on(events.Scrubbing.Started, function() {\r\n blockTextSelection();\r\n disableAutoHideControls();\r\n });\r\n\r\n _$container.on(events.Scrubbing.Ended, function() {\r\n unblockTextSelection();\r\n resetHideControlsTimeout();\r\n enableAutoHideControls();\r\n onVideoTimeUpdate();\r\n });\r\n\r\n setupProgressBarAtPageLoad();\r\n\r\n var onTocItemClicked = function(timeToSeekTo, fileToSeekTo) {\r\n if (fileToSeekTo !== undefined) {\r\n var videoIndex = _mediaList.getMediaIndexByUri(fileToSeekTo);\r\n if (videoIndex === _mediaList.currentMediaIndex) {\r\n seek(timeToSeekTo);\r\n } else {\r\n _mediaList.currentMediaIndex = videoIndex;\r\n initCurrentMedia();\r\n }\r\n } else {\r\n seek(timeToSeekTo);\r\n }\r\n };\r\n\r\n var setupPlayerSettingsView = function(validRateSettings) {\r\n _playerSettingsView = PlayerSettingsView.create(_$container, _mediaElement, _xmp, validRateSettings);\r\n if (typeof _initializedValues.playbackRate !== 'undefined') {\r\n _playerSettingsView.playbackRate = _initializedValues.playbackRate;\r\n }\r\n };\r\n\r\n if (_haveYouTubePlayer) {\r\n if (youTube.player.supportPlaybackRate) {\r\n setupPlayerSettingsView(youTube.player.validRateSettings);\r\n } else {\r\n PlayerSettingsView.hideButton(_$container);\r\n }\r\n } else {\r\n setupPlayerSettingsView();\r\n }\r\n\r\n // sidebar stuff\r\n if (_displayToc) {\r\n _tocView = TocView.create(_$container, _xmp);\r\n\r\n _tocView.addEventListener('clickTocItem', onTocItemClicked);\r\n\r\n _$container.on(events.Controls.ShowToc, function() {\r\n showToc(true);\r\n });\r\n\r\n _$container.on(events.Controls.HideToc, function() {\r\n showToc(false);\r\n });\r\n }\r\n\r\n if (deviceInfo.getIOSSupportsInlineVideo() || deviceInfo.isAndroid()) {\r\n window.addEventListener('orientationchange', function() {\r\n if (_fullscreenControlView.isFullFrame) {\r\n // when keyboard is up on ipad, the size of screen\r\n // is reported wrong until we get rid of it\r\n if (_tocView && _tocView.searchIsFocused) {\r\n _tocView.blurSearchInput();\r\n setTimeout(resizeAfterOrientationChange, 500);\r\n } else {\r\n resizeAfterOrientationChange();\r\n }\r\n }\r\n });\r\n }\r\n\r\n enableControls();\r\n\r\n if (isControlsHidden()) {\r\n hideControls(true, true);\r\n }\r\n };\r\n\r\n var replayVideo = function(time) {\r\n showControlsWithAutoHide();\r\n _playRewindControlsView && _playRewindControlsView.setInitialFocus();\r\n reshowVideoAfterClickToReplay(time, true);\r\n if (playerConfiguration.getTrackEvents()) {\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n processPlayerEvent('Video_Replay', _eventCategory);\r\n } else {\r\n processPlayerEvent('Video_Replay', _mediaList.currentMedia.uri);\r\n }\r\n }\r\n };\r\n\r\n var resizeAfterOrientationChange = function() {\r\n sizePageElements();\r\n };\r\n\r\n var showControlsWithoutAutoHide = function() {\r\n showControls(false);\r\n };\r\n\r\n var showControlsWithAutoHide = function() {\r\n showControls(true);\r\n };\r\n\r\n var onContainerClick = function() {\r\n _lastClickTime = new Date().getTime();\r\n showControlsWithAutoHide();\r\n };\r\n\r\n var onContainerLeave = function() {\r\n //Older Win touch devices emulate clicks with Enter -> Click -> Leave, so we need hax for them\r\n if (!_lastClickTime || new Date().getTime() - _lastClickTime > _surfaceClickLeaveDelay) {\r\n hideControlsOnTimeout();\r\n }\r\n };\r\n\r\n var onContainerMousemove = function(e) {\r\n var x = e.pageX;\r\n var y = e.pageY;\r\n\r\n if (!x && x !== 0 || !y && y !== 0) {\r\n //Just in case values aren't assigned for some reason\r\n showControlsWithAutoHide();\r\n return;\r\n }\r\n\r\n var deltaX = Math.abs(x - _lastMouseMoveCoords.x);\r\n var deltaY = Math.abs(y - _lastMouseMoveCoords.y);\r\n\r\n if (deltaX + deltaY > _mouseMoveTolerance) {\r\n _lastMouseMoveCoords.x = x;\r\n _lastMouseMoveCoords.y = y;\r\n showControlsWithAutoHide();\r\n }\r\n };\r\n\r\n var enableAutoHideControls = function() {\r\n if (_autoHideControlsEnabled || !playerConfiguration.getAutoHideControls() || _xmp && _xmp.hasCaptionItems && _xmp.captionPosition === 'under') {\r\n return false;\r\n }\r\n _autoHideControlsEnabled = true;\r\n\r\n _$container.on('mousemove', onContainerMousemove);\r\n _$container.on('keydown', showControlsWithAutoHide);\r\n _$container.on('click', onContainerClick);\r\n _$container.on('mouseleave', onContainerLeave);\r\n\r\n resetHideControlsTimeout();\r\n\r\n return true;\r\n };\r\n\r\n var disableAutoHideControls = function() {\r\n if (!_autoHideControlsEnabled) {\r\n return;\r\n }\r\n _autoHideControlsEnabled = false;\r\n clearHideControlsTimeout();\r\n _$container.off('mousemove', onContainerMousemove);\r\n _$container.off('keydown', showControlsWithAutoHide);\r\n _$container.off('click', onContainerClick);\r\n _$container.off('mouseleave', onContainerLeave);\r\n };\r\n\r\n var hideControlsOnTimeout = function(forceHide) {\r\n hideControls(forceHide, false);\r\n if (_controlsHidden) {\r\n _clickControls && _clickControls.disable();\r\n }\r\n };\r\n\r\n var hideControls = function(forceHide, hideElementAfterFadeOut) {\r\n var controlsAreBusy = getScrubbing() || _playerSettingsView && _playerSettingsView.isOpen;\r\n if (!forceHide && controlsAreBusy) {\r\n return;\r\n }\r\n\r\n _controlsHidden = true;\r\n _$controls.stop(true, true);\r\n _$controls.fadeTo(_animationSpeed, 0, function() {\r\n if (hideElementAfterFadeOut) {\r\n _$controls.hide();\r\n }\r\n });\r\n\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.hide(_animationSpeed);\r\n }\r\n\r\n _volumeControlView.hideControls();\r\n\r\n if (_haveYouTubePlayer && playerConfiguration.getDisableYouTubeControls()) {\r\n _$youtubePointerEventWorkaround.removeClass(cssClasses.hide);\r\n }\r\n };\r\n\r\n var showControls = function(onAutoHide) {\r\n if (isControlsHidden() || _mediaFailedToPlay) {\r\n return;\r\n }\r\n\r\n _$controls.show();\r\n\r\n if (_controlsHidden) {\r\n _controlsHidden = false;\r\n _$controls.stop(true, true);\r\n _$controls.fadeTo(_animationSpeed, 1);\r\n\r\n if (!_hotspotsView || !_hotspotsView.oneOrMoreHotspotsWithTimeActionArePaused) {\r\n if (deviceInfo.isTouchInterface()) {\r\n setTimeout(_clickControls.enable, _animationSpeed);\r\n } else {\r\n _clickControls.enable();\r\n }\r\n }\r\n\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.show(_animationSpeed);\r\n }\r\n\r\n if (_viewDirty) {\r\n _viewDirty = false;\r\n sizePageElements();\r\n }\r\n }\r\n\r\n if (onAutoHide) {\r\n resetHideControlsTimeout();\r\n }\r\n\r\n if (_haveYouTubePlayer) {\r\n _$youtubePointerEventWorkaround.addClass(cssClasses.hide);\r\n }\r\n };\r\n\r\n var clearHideControlsTimeout = function() {\r\n window.clearTimeout(_autoHideTimeoutId);\r\n };\r\n\r\n var resetHideControlsTimeout = function() {\r\n clearHideControlsTimeout();\r\n if (playerConfiguration.getAutoHideControls()) {\r\n _autoHideTimeoutId = window.setTimeout(hideControlsOnTimeout, _autoHideControllerTime);\r\n }\r\n };\r\n\r\n var disableOverlays = function() {\r\n _overlaysDisabled = true;\r\n _beforeAfterPlayControlsView.hideVideoClickToPlayLink();\r\n _beforeAfterPlayControlsView.hideVideoClickToReplayLink();\r\n };\r\n\r\n var onCanPlayVideo = function() {\r\n if (videoAnalytics.isEnabled()) {\r\n videoAnalytics.setVideoLoadEndTime(new Date().getTime());\r\n\r\n if (playerConfiguration.getTrackEvents()) {\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n if (playerConfiguration.getAltLoadTimeAsSeconds()) {\r\n processPlayerEvent('Video_Loading_Time_In_Seconds', _eventCategory, videoAnalytics.getVideoLoadTime() / 1000);\r\n } else {\r\n processPlayerEvent('Video_Loading_Time', _eventCategory, videoAnalytics.getVideoLoadTime());\r\n }\r\n } else if (playerConfiguration.getAltLoadTimeAsSeconds()) {\r\n processPlayerEvent('Video_Loading_Time_In_Seconds', _mediaList.currentMedia.uri, videoAnalytics.getVideoLoadTime() / 1000);\r\n } else {\r\n processPlayerEvent('Video_Loading_Time', _mediaList.currentMedia.uri, videoAnalytics.getVideoLoadTime());\r\n }\r\n }\r\n }\r\n\r\n performanceWrapper.createMeasure(events.Timing.VideoCanPlay, events.Timing.VideoCanPlay);\r\n triggerRumDataEvent([events.Timing.VideoCanPlay]);\r\n\r\n _canPlayVideo = true;\r\n\r\n _mediaWrapper.off('canplay', onCanPlayVideo);\r\n };\r\n\r\n var onSeeking = function() {\r\n _seeking = true;\r\n };\r\n\r\n var onSeeked = function() {\r\n _seeking = false;\r\n if (_timeAfterSeek > -1) {\r\n seek(_timeAfterSeek);\r\n _timeAfterSeek = -1;\r\n }\r\n };\r\n\r\n var processScormInitialData = function() {\r\n videoAnalytics.populateVideoSegmentsWatch(scormController.initialVideoAnalyticsSnapshot);\r\n if (scormController.initialQuizModelSnapshot) {\r\n quizController.populateQuizModel(scormController.initialQuizModelSnapshot);\r\n _progressBarControlView.updateQuizMarkers();\r\n }\r\n\r\n // seek video to last stored time unless using the quiz service\r\n if (quizController.quizModel === null || quizController.quizModel.reportMethod === reportType.SCORM) {\r\n var seekTime = scormController.initialVideoTimeInSeconds;\r\n if (seekTime < _mediaElement.duration) {\r\n videoAnalytics.markTimeWatched(seekTime * 1000);\r\n seek(seekTime);\r\n }\r\n }\r\n };\r\n\r\n var onPlayingEvent = function() {\r\n _mediaWrapper.off('playing', onPlayingEvent);\r\n _ioOverlayView.hideView();\r\n\r\n if (!_mediaList.isPlaylist && playerConfiguration.isScormLesson) {\r\n processScormInitialData();\r\n }\r\n\r\n if (playerConfiguration.getJumpToTime()) {\r\n var timeToSeek = convertUrlTime(playerConfiguration.getJumpToTime());\r\n if (timeToSeek < _mediaElement.duration) {\r\n seek(Number(timeToSeek));\r\n }\r\n }\r\n\r\n // send a playing/streaming confirmation if applicable\r\n _playerViewEventCallbacks[events.External.VideoPlay].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n };\r\n\r\n var onVolumeChanged = function() {\r\n _volumeControlView.onVolumeChanged();\r\n };\r\n\r\n var setupViews = function() {\r\n _captionsView = CaptionsView.create(_$container, _captionService);\r\n _tabController = TabController.create(_$container, _progressBarControlView.controlElement, _fullscreenControlView.controlElement);\r\n\r\n if (playerConfiguration.audioDescriptionMediaSrc) {\r\n _audioDescriptionControlView = AudioDescriptionControlView.create(_$container);\r\n _audioDescriptionTrackView = AudioDescriptionTrackView.create(_$container, _mediaElement, playerConfiguration.audioDescriptionMediaSrc);\r\n }\r\n };\r\n\r\n var setupXmpFeatures = function() {\r\n if (_xmp === null) {\r\n return;\r\n }\r\n\r\n if (_xmp.hasHotspotItems) {\r\n _hotspotsView = HotspotsView.create(_$container, _xmp, _mediaElement, _tabController);\r\n _$hotspotsContainer.replaceWith(_hotspotsView.$hotspots);\r\n }\r\n\r\n if (_xmp.hasCaptionItems) {\r\n _captionService.initFromXmp(_xmp);\r\n _captionsView.handleDisplayCaptions();\r\n }\r\n };\r\n\r\n var getHtmlForPlayer = function(mediaSources, includeControls, includePosterIfAvailable) {\r\n if (!includePosterIfAvailable) {\r\n includePosterIfAvailable = false;\r\n }\r\n\r\n var html = '';\r\n }\r\n html += playerConfiguration.getUnableToDisplayContentString() + '';\r\n\r\n return html;\r\n };\r\n\r\n var showVideoLoadingMessage = function() {\r\n if (!_haveYouTubePlayer) {\r\n _beforeAfterPlayControlsView.hideVideoClickToPlayLink();\r\n _ioOverlayView.displayMessage(_lang.strings.videoLoading);\r\n }\r\n };\r\n\r\n var getVideoElement = function() {\r\n if (_haveYouTubePlayer) {\r\n return youTube.player;\r\n }\r\n return $('video')[0];\r\n };\r\n\r\n var handleFirstPlay = function() {\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n initQuiz();\r\n } else {\r\n initUI();\r\n }\r\n };\r\n\r\n var initQuiz = function() {\r\n _beforeAfterPlayControlsView.hideVideoClickToPlayLink();\r\n quizController.init(_$container, playerConfiguration.getEnforceLinearAssessment(), getVideoElement);\r\n };\r\n\r\n var onYouTubeError = function(event) {\r\n MessageBarView.create(_$container, messageBarType.info, event.data);\r\n };\r\n\r\n var initMediaPlugins = function() {\r\n var pluginController = playerConfiguration.getPluginController();\r\n if (!pluginController) {\r\n return;\r\n }\r\n _$mediaPluginContainer.show();\r\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.MEDIA, _$mediaPluginContainer);\r\n };\r\n\r\n var onLoadStart = function() {\r\n performanceWrapper.createMarker(events.Timing.VideoMetadataLoaded);\r\n performanceWrapper.createMarker(events.Timing.VideoLoadedData);\r\n performanceWrapper.createMarker(events.Timing.VideoCanPlay);\r\n };\r\n\r\n var onLoadedData = function() {\r\n performanceWrapper.createMeasure(events.Timing.VideoLoadedData, events.Timing.VideoLoadedData);\r\n triggerRumDataEvent([events.Timing.VideoLoadedData]);\r\n };\r\n\r\n var initUI = function() {\r\n // this prevents double-click on click-to-play\r\n if (_uiInitialized) {\r\n return;\r\n }\r\n\r\n showVideoLoadingMessage();\r\n\r\n _uiInitialized = true;\r\n\r\n if (_haveYouTubePlayer) {\r\n _mediaWrapper = youTube.player;\r\n _mediaElement = youTube.player;\r\n } else if (_mediaList.isTscProj) {\r\n _mediaWrapper = _renderLibView;\r\n _mediaElement = _renderLibView.view;\r\n } else {\r\n var html = getHtmlForPlayer(_mediaList.mediaList, false);\r\n $('.video-div').html(html);\r\n\r\n _mediaWrapper = $(_containerSelector + ' video');\r\n if (_mediaWrapper.length > 0) {\r\n _mediaElement = _mediaWrapper[0];\r\n }\r\n }\r\n\r\n _playRewindControlsView = PlayRewindControlsView.create(_$container, _mediaElement);\r\n _prevNextControlsView = PrevNextControlsView.create(_$container);\r\n _progressBarControlView = ProgressBarControlView.create(_$container, _mediaElement, quizController.quizModel);\r\n _volumeControlView = VolumeControlView.create(_$container, _mediaElement);\r\n _pipControlView = PipControlView.create(_$container, _mediaElement);\r\n _fullscreenControlView = FullscreenControlView.create(_$container);\r\n _clickControls = ClickControlsView.create(_$container, _mediaElement, _fullscreenControlView, _progressBarControlView, youTube);\r\n if (typeof _initializedValues.muted !== 'undefined') {\r\n _volumeControlView.muted = _initializedValues.muted;\r\n }\r\n if (typeof _initializedValues.volume !== 'undefined') {\r\n _volumeControlView.volume = _initializedValues.volume;\r\n }\r\n\r\n if (!_mediaList.isPlaylist) {\r\n _prevNextControlsView.hide();\r\n } else {\r\n _prevNextControlsView.show();\r\n }\r\n\r\n processQueuedMediaBinds();\r\n\r\n // dispatch callback for media started event (note: after _mediaWrapper and _mediaElement are set)\r\n _playerViewEventCallbacks[events.External.VideoStart].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n\r\n var eventsToBind = {};\r\n if (_mediaList.isTscProj) {\r\n eventsToBind = {\r\n playing: onPlayingEvent,\r\n seeking: onSeeking,\r\n seeked: onSeeked,\r\n timeupdate: onVideoTimeUpdate,\r\n progress: updateBuffered,\r\n volumechange: onVolumeChanged\r\n };\r\n } else {\r\n eventsToBind = {\r\n loadstart: onLoadStart,\r\n loadedmetadata: onLoadedMetadata,\r\n loadeddata: onLoadedData,\r\n playing: onPlayingEvent,\r\n canplay: onCanPlayVideo,\r\n seeking: onSeeking,\r\n seeked: onSeeked,\r\n timeupdate: onVideoTimeUpdate,\r\n progress: updateBuffered,\r\n volumechange: onVolumeChanged\r\n };\r\n }\r\n\r\n _mediaWrapper.on(eventsToBind);\r\n _$videoWrapper.removeClass(cssClasses.hide);\r\n\r\n _$container.on(events.Captions.Changed, processCaptionChanged);\r\n _$container.on(events.Plugin.Added, initMediaPlugins);\r\n\r\n setupViews();\r\n setupXmpFeatures();\r\n initMediaPlugins();\r\n setupControls();\r\n _viewDirty = true;\r\n sizePageElements();\r\n\r\n // hide controls and show message while we wait for video to do initial load\r\n _$controls.hide();\r\n\r\n if (_mediaWrapper.metadataReady) {\r\n _mediaWrapper.metadataReady.then(function() {\r\n _$controls.show();\r\n onLoadedMetadata();\r\n return _mediaWrapper.canPlayReady.then(function() {\r\n onCanPlayVideo();\r\n initCurrentMedia();\r\n });\r\n });\r\n } else {\r\n initCurrentMedia();\r\n }\r\n };\r\n\r\n var videoNotFoundError = function() {\r\n _beforeAfterPlayControlsView.setVideoClickToPlayErrorState(true);\r\n _ioOverlayView.displayMessage(_lang.strings.mediaNotFound, true);\r\n\r\n // If the video somehow loads after the error is displayed, get rid of the error screen.\r\n _mediaWrapper.on('timeupdate', function(event) {\r\n if (_mediaElement.buffered.length !== 0) {\r\n _beforeAfterPlayControlsView.setVideoClickToPlayErrorState(false);\r\n _ioOverlayView.hideView();\r\n $(this).off(event);\r\n }\r\n });\r\n };\r\n\r\n var initCurrentMedia = function() {\r\n var clearVideoTimeout;\r\n // Safari 8 has a bug that prevents it from throwing errors on 404 video content,\r\n // so instead we'll give it x seconds to load something or error out.\r\n if (deviceInfo.isSafari() && deviceInfo.getSafariMajorVersion() === '8') {\r\n clearVideoTimeout = window.setTimeout(function() {\r\n if (_mediaElement.buffered.length === 0) {\r\n videoNotFoundError();\r\n }\r\n }, _loadVideoTimeout);\r\n }\r\n\r\n // Selecting video and sources because ie throws errors to video and everyone to sources\r\n $('video, video source').off('error').on('error', function() {\r\n if (quizController && quizController.viewIsOpen) {\r\n // HAX to fix busted state that happens sometimes in IE when you scroll to a quiz marker\r\n setTimeout(function() {\r\n play();\r\n if (_lastQuestionSetMarkerTime || _lastQuestionSetMarkerTime === 0) {\r\n seek(_lastQuestionSetMarkerTime);\r\n }\r\n pause();\r\n }, 300);\r\n\r\n return;\r\n }\r\n\r\n clearTimeout(clearVideoTimeout);\r\n videoNotFoundError();\r\n });\r\n\r\n _processingEndOfVideo = false;\r\n if (_mediaList.isPlaylist) {\r\n if (_mediaList.onFirstMedia) {\r\n _prevNextControlsView.disablePreviousButton();\r\n } else {\r\n _prevNextControlsView.enablePreviousButton();\r\n }\r\n\r\n if (_mediaList.onLastMedia) {\r\n _prevNextControlsView.disableNextButton();\r\n } else {\r\n _prevNextControlsView.enableNextButton();\r\n }\r\n\r\n if (videoAnalytics.isEnabled()) {\r\n videoAnalytics.clearPercentWatched();\r\n _eventLastPercentReported = 0;\r\n }\r\n\r\n _mediaElement.src = _mediaList.currentMedia.media;\r\n\r\n if (_progressBarControlView) {\r\n _progressBarControlView.durationHasChanged();\r\n }\r\n }\r\n\r\n if (_startPlaybackOnInit) {\r\n play();\r\n\r\n // OSX Safari on some machines fast forwards videos when we call play with a quiz at frame 0.\r\n // Resetting the current time resolves this behavior. Ref https://github.com/TechSmith/SmartPlayer/issues/387\r\n if (deviceInfo.isSafari() && !deviceInfo.isIOS() && _mediaElement.readyState === 0) {\r\n _mediaElement.addEventListener('canplay', function resetTime() {\r\n _mediaElement.currentTime = 0;\r\n _mediaElement.removeEventListener('canplay', resetTime);\r\n });\r\n }\r\n }\r\n };\r\n\r\n var hideClickToPlayControl = function() {\r\n _beforeAfterPlayControlsView.hideVideoClickToPlayLink();\r\n };\r\n\r\n var resetPlayStartAnalytics = function() {\r\n if (videoAnalytics.isEnabled()) {\r\n videoAnalytics.setVideoLoadStartTime(new Date().getTime());\r\n }\r\n\r\n if (playerConfiguration.getTrackEvents() && _eventPlayTracking) {\r\n _eventPlayTracking = false;\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n processPlayerEvent('Video_Started', _eventCategory);\r\n } else {\r\n processPlayerEvent('Video_Started', _mediaList.currentMedia.uri);\r\n }\r\n processPlayerEvent('Video_Percent_Viewed', 'Viewed: 0 Percent');\r\n }\r\n };\r\n\r\n var quizEventHandler = function(event, data) {\r\n switch (event.type) {\r\n case events.Quizzing.Complete:\r\n case events.Quizzing.Review:\r\n if (_processingEndOfVideo) {\r\n return;\r\n }\r\n\r\n if (_tocView && _tocView.isOpen) {\r\n _tocView.show(_animationSpeed);\r\n }\r\n\r\n enableControls();\r\n viewHelper.focusPreviousElement();\r\n\r\n enableAutoHideControls();\r\n\r\n _progressBarControlView.updateQuizMarkers();\r\n\r\n if (event.type === events.Quizzing.Review && playerConfiguration.getEnforceLinearAssessment()) {\r\n var prevMarkerTime = quizController.findPrevMarkerTimeForMarker(_lastQuestionSetId);\r\n _lastQuestionSetId = -1;\r\n seek(prevMarkerTime / 1000);\r\n play();\r\n } else {\r\n play();\r\n }\r\n break;\r\n case events.Quizzing.SubmittingInstance:\r\n showVideoLoadingMessage();\r\n break;\r\n case events.Quizzing.Begin:\r\n case events.Quizzing.Skip:\r\n if (!_mediaWrapper) {\r\n initUI();\r\n } else if (_videoMetadataReady && quizController.quizReady) {\r\n onVideoReady();\r\n if (_startPlaybackOnInit) {\r\n play();\r\n }\r\n _viewDirty = true;\r\n sizePageElements();\r\n }\r\n\r\n quizController.startTrackingProgress();\r\n\r\n break;\r\n case events.Quizzing.Error:\r\n if (!_mediaWrapper) {\r\n initUI();\r\n }\r\n\r\n MessageBarView.create(_$container, messageBarType.info, localizationStrings.strings.txtVideoQuizNetworkErrorMessage, localizationStrings.strings.close);\r\n break;\r\n case events.Quizzing.Status:\r\n _ioOverlayView.displayMessage(data.message);\r\n break;\r\n case events.Quizzing.HideLoadingMessage:\r\n case events.Quizzing.Submitted:\r\n _ioOverlayView && _ioOverlayView.hideView();\r\n break;\r\n case events.Quizzing.RationaleActionJumpToTime:\r\n var jumpToTimeInSeconds = data.jumpToTime / 1000;\r\n _progressBarControlView.allowSkipQuestionSetMarkersBeforeTime(jumpToTimeInSeconds);\r\n safeSeek(jumpToTimeInSeconds);\r\n break;\r\n }\r\n };\r\n\r\n var preventEvent = function(e) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n return false;\r\n };\r\n\r\n var onLoadAndPlayControlEvent = function() {\r\n _playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n\r\n showVideoLoadingMessage();\r\n\r\n var onPlaybackReady = function() {\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n initQuiz();\r\n } else {\r\n initUI();\r\n }\r\n };\r\n\r\n if (_haveYouTubePlayer) {\r\n youTube.playbackReadyPromise.then(onPlaybackReady);\r\n } else {\r\n onPlaybackReady();\r\n }\r\n };\r\n\r\n var onPlayControlEvent = function() {\r\n _mediaFailedToPlay = false;\r\n showControls(true);\r\n enableAutoHideControls();\r\n play();\r\n\r\n // need to handle jump to time\r\n if (playerConfiguration.jumpToTime) {\r\n var timeToSeek = convertUrlTime(playerConfiguration.jumpToTime);\r\n if (timeToSeek < _mediaElement.duration) {\r\n seek(Number(timeToSeek));\r\n }\r\n }\r\n };\r\n\r\n var initDomForHTML5 = function(containerSelector, displayToc) {\r\n _containerSelector = containerSelector;\r\n _containerIDString = _containerSelector.replace(/^[#]/, '');\r\n _videoTagUniqueId = [_containerIDString, 'video-div'].join('-');\r\n _displayToc = displayToc;\r\n\r\n // need this before setting vars proceeding\r\n var html5VideoMarkup = templates.html5_player_template({\r\n videoTagUniqueId: _videoTagUniqueId,\r\n videoWrapperIndex: tabIndex.VideoWrapper\r\n });\r\n\r\n _$container.html(html5VideoMarkup);\r\n\r\n _$controls = _$container.find('#controls');\r\n _$hotspotsContainer = _$container.find('.hotspots-container');\r\n _$mediaPluginContainer = _$container.find('.media-plugin-container');\r\n _$mediaPluginContainer.hide();\r\n _$videoWrapper = _$container.find('.video-wrapper');\r\n _$videoDiv = _$container.find('.video-div');\r\n _$youtubePointerEventWorkaround = _$container.find('.youtube-pointer-event-workaround');\r\n\r\n _beforeAfterPlayControlsView = BeforeAfterPlayControlsView.create(_$container);\r\n _ioOverlayView = IoOverlayView.create(_$container);\r\n if (_haveYouTubePlayer) {\r\n setupHeadlessMode();\r\n }\r\n\r\n _$container.css('background-color', playerConfiguration.getBackgroundColor());\r\n\r\n if (playerConfiguration.getPosterImageSrc() && !_haveYouTubePlayer) {\r\n _beforeAfterPlayControlsView.addVideoClickToPlayBackground(playerConfiguration.getPosterImageSrc());\r\n }\r\n\r\n _$container.on('mousedown', '*', function() {\r\n highlightDisabler.disableHighlights($(this));\r\n });\r\n\r\n _$container.on(events.Controls.LoadAndPlayControl, onLoadAndPlayControlEvent);\r\n _$container.on(events.Controls.PlayControl, onPlayControlEvent);\r\n\r\n if (playerConfiguration.getDisableContextMenuForVideo()) {\r\n _$videoDiv.on('contextmenu', preventEvent);\r\n }\r\n\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n quizController.setViewControlBarOffset(_controlBarHeight);\r\n quizController.setViewContainer(_$videoWrapper);\r\n _$container.on(events.Quizzing.Complete, quizEventHandler);\r\n _$container.on(events.Quizzing.Review, quizEventHandler);\r\n _$container.on(events.Quizzing.Begin, quizEventHandler);\r\n _$container.on(events.Quizzing.Skip, quizEventHandler);\r\n _$container.on(events.Quizzing.Error, quizEventHandler);\r\n _$container.on(events.Quizzing.Status, quizEventHandler);\r\n _$container.on(events.Quizzing.SubmittingInstance, quizEventHandler);\r\n _$container.on(events.Quizzing.Submitted, quizEventHandler);\r\n _$container.on(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\r\n _$container.on(events.Quizzing.HideLoadingMessage, quizEventHandler);\r\n }\r\n\r\n _$container.fadeIn(_animationSpeed);\r\n\r\n sizePageElements();\r\n\r\n _$container.resize(function() {\r\n _viewDirty = true;\r\n sizePageElements();\r\n });\r\n\r\n responsiveController.monitorContainerSize(_$container);\r\n };\r\n\r\n // TODO: setup in this function probably isn't the responsibility of the 'view' when we untangle this mess, but for now it is coupled\r\n var setupServices = function(captionsService) {\r\n _captionService = captionsService;\r\n };\r\n\r\n var setupHeadlessMode = function() {\r\n disableOverlays();\r\n _startPlaybackOnInit = false;\r\n _playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n };\r\n\r\n var triggerRumDataEvent = function(timingMeasureList) {\r\n var eventData = {\r\n rum: performanceWrapper.getRumEventData(timingMeasureList)\r\n };\r\n\r\n _playerViewEventCallbacks[events.External.PlayerRumData].forEach(function(callback) {\r\n callback.call(_self, eventData);\r\n });\r\n };\r\n\r\n var initHTML5 = function() {\r\n // ignore auto play if this is an iOS device that plays video inline or there is a quiz present\r\n // may want to move this out of the view at some point.\r\n if ((deviceInfo.getIOSSupportsInlineVideo() || deviceInfo.isAndroid() || quizController.hasQuiz && quizController.quizEnabled) && !playerConfiguration.getMobileWebViewCanAutoPlay()) {\r\n playerConfiguration.setAutoPlayMedia(false);\r\n }\r\n\r\n if (playerConfiguration.getAutoPlayMedia() === true && playerConfiguration.getJumpToTime() === undefined) {\r\n showVideoLoadingMessage();\r\n _playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function(callback) {\r\n callback.call(_self);\r\n });\r\n setTimeout(initUI, 80);\r\n } else if (playerConfiguration.getPreload() === 'metadata') {\r\n setupHeadlessMode();\r\n setTimeout(initUI, 80);\r\n }\r\n\r\n if (_haveYouTubePlayer) {\r\n _ioOverlayView.hideView();\r\n }\r\n\r\n _$container.on(events.Media.Replay, function() {\r\n replayVideo(0);\r\n });\r\n\r\n ieFullscreenDimensionsFix.initialize(_$container);\r\n\r\n // quiz\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n quizController.setViewControlBarOffset(_controlBarHeight);\r\n quizController.setViewContainer(_$videoWrapper);\r\n if (playerConfiguration.getJumpToTime() !== undefined || _overlaysDisabled) {\r\n setTimeout(initQuiz, 80);\r\n }\r\n } else if (playerConfiguration.getJumpToTime() !== undefined) {\r\n showVideoLoadingMessage();\r\n setTimeout(initUI, 80);\r\n }\r\n\r\n // turn on video analytics when using Google Analytics, Scorm or Quiz\r\n if (!_mediaList.isPlaylist && (playerConfiguration.getTrackEvents() || playerConfiguration.isScormLesson || playerConfiguration.getReportScormComplete() || quizController.hasQuiz && quizController.quizEnabled)) {\r\n videoAnalytics.setEnabled(true);\r\n }\r\n\r\n _html5ViewEnabled = true;\r\n\r\n performanceWrapper.createMeasure(events.Timing.PlayerLoaded, events.Timing.PlayerLoaded);\r\n performanceWrapper.createMeasure(events.Timing.PlayerInitialized, events.Timing.PlayerInitialized);\r\n\r\n triggerRumDataEvent([events.Timing.PlayerLoaded, events.Timing.PlayerInitialized]);\r\n };\r\n\r\n var processCaptionChanged = function(e, eventData) {\r\n if (eventData) {\r\n _playerViewEventCallbacks[events.External.CaptionChange].forEach(function(callback) {\r\n callback.call(_self, eventData.plainText);\r\n });\r\n }\r\n };\r\n\r\n var processHotspotClick = function(e, eventData) {\r\n if (eventData.jumpFile !== undefined) {\r\n _mediaList.currentMediaIndex = _mediaList.getMediaIndexByUri(eventData.jumpFile);\r\n initCurrentMedia();\r\n } else if (eventData.jumpTime !== undefined && eventData.jumpTime !== '') {\r\n safeSeek(Number(eventData.jumpTime) / 1000);\r\n play();\r\n } else if (eventData.location !== undefined && eventData.location !== '') {\r\n if (playerConfiguration.getTrackEvents()) {\r\n processPlayerEvent('Hotspot_Action', eventData.location);\r\n }\r\n var targetWindow = '_parent';\r\n if (eventData.newWindow !== undefined && eventData.newWindow === true) {\r\n targetWindow = '_blank';\r\n }\r\n urlService.openUrl(eventData.location, targetWindow);\r\n } else {\r\n play();\r\n }\r\n };\r\n\r\n var convertUrlTime = function(val) {\r\n if (isNaN(val)) {\r\n var hrs = 0;\r\n var min = 0;\r\n var sec = 0;\r\n var strTime = val.toLowerCase();\r\n // Regex patterns ----------------------------------------------------\r\n var hrsPattern = new RegExp('(\\\\d+[\\h])', 'g'); //( 999h )\r\n var minPattern = new RegExp('(\\\\d+[\\m])', 'g'); //( 999m )\r\n var secPattern = new RegExp('(\\\\d+[\\s])', 'g'); //( 999s )\r\n var numPattern = new RegExp('\\\\d+', 'g'); // * numerals\r\n // Match regex Tests -------------------------------------------------\r\n var hrsTest = strTime.match(hrsPattern);\r\n var minTest = strTime.match(minPattern);\r\n var secTest = strTime.match(secPattern);\r\n var numTest = strTime.match(numPattern);\r\n\r\n if (secTest || minTest || hrsTest) {\r\n // assumes we want the 1st pattern encountered in each array is\r\n // the time we want to use.\r\n\r\n if (hrsTest) {\r\n // 3600 seconds in 1 hour\r\n hrs = Number(hrsTest[0].split('h').join('')) * 60 * 60;\r\n }\r\n\r\n if (minTest) {\r\n // 60 seconds in 1 minute\r\n min = Number(minTest[0].split('m').join('')) * 60;\r\n }\r\n\r\n if (secTest) {\r\n // 1 seconds = 1 second\r\n sec = Number(secTest[0].split('s').join(''));\r\n }\r\n // return the Time in seconds\r\n return Number(hrs + min + sec);\r\n } else if (numTest) {\r\n sec = Number(numTest[0]);\r\n // return the Time assuming seconds\r\n return sec;\r\n }\r\n // not valid time or all non-numeric characters\r\n return 0;\r\n }\r\n if (val < 0) {\r\n val = 0;\r\n }\r\n\r\n return val;\r\n };\r\n\r\n var addMediaEventListener = function(event, handler) {\r\n if (_mediaWrapper) {\r\n _mediaWrapper.on(event, handler);\r\n } else {\r\n if (typeof _queuedMediaBinds[event] !== 'object') {\r\n _queuedMediaBinds[event] = [];\r\n }\r\n _queuedMediaBinds[event].push(handler);\r\n }\r\n };\r\n\r\n var removeMediaEventListener = function(event, handler) {\r\n if (_mediaWrapper) {\r\n _mediaWrapper.off(event, handler);\r\n } else {\r\n if (typeof _queuedMediaBinds[event] !== 'object') {\r\n return;\r\n }\r\n // if the same handler is bound multiple times?\r\n while (_queuedMediaBinds[event].indexOf(handler) !== -1) {\r\n _queuedMediaBinds[event].splice(_queuedMediaBinds[event].indexOf(handler), 1);\r\n }\r\n }\r\n };\r\n\r\n var processQueuedMediaBinds = function() {\r\n Object.keys(_queuedMediaBinds).forEach(function(event) {\r\n if (typeof _queuedMediaBinds[event] === 'object') {\r\n _queuedMediaBinds[event].forEach(function(callback) {\r\n _mediaWrapper.on(event, callback);\r\n });\r\n }\r\n });\r\n _queuedMediaBinds = {};\r\n };\r\n\r\n var isYouTube = function() {\r\n return _haveYouTubePlayer;\r\n };\r\n\r\n var getCaptionCollection = function() {\r\n return _captionService.captionTrack.captionCollection;\r\n };\r\n\r\n var getCaptionTrack = function() {\r\n return _captionService.captionTrack;\r\n };\r\n\r\n var setCaptionTrack = function(value) {\r\n _captionService.captionTrack = value;\r\n if (_captionsView) {\r\n _captionsView.handleDisplayCaptions();\r\n }\r\n };\r\n\r\n var getCaptionsVisible = function() {\r\n return _captionsView ? _captionsView.visible : playerConfiguration.getCaptionsEnabled();\r\n };\r\n\r\n var setCaptionsVisible = function(value) {\r\n if (_captionsView) {\r\n _captionsView.visible = value;\r\n _captionsView.handleDisplayCaptions();\r\n updateCaptions();\r\n } else {\r\n playerConfiguration.setCaptionsEnabled(value);\r\n }\r\n };\r\n\r\n var setupExternalEventCallbackHarness = function() {\r\n Object.keys(events.External).forEach(function(eventKey) {\r\n var eventName = events.External[eventKey];\r\n _playerViewEventCallbacks[eventName] = [];\r\n });\r\n };\r\n\r\n var externalEventIsSupported = function(eventName) {\r\n return Object.keys(events.External).some(function(eventKey) {\r\n return events.External[eventKey] === eventName;\r\n });\r\n };\r\n\r\n var destroy = function() {\r\n if (_$container) {\r\n _$container.off();\r\n }\r\n if (_mediaWrapper) {\r\n _mediaWrapper.off();\r\n }\r\n if (_$videoDiv) {\r\n _$videoDiv.off('contextmenu', preventEvent);\r\n }\r\n if (_progressBarControlView) {\r\n _progressBarControlView.destroy();\r\n }\r\n if (_volumeControlView) {\r\n _volumeControlView.destroy();\r\n }\r\n if (_tocView) {\r\n _tocView.destroy();\r\n }\r\n if (_audioDescriptionControlView) {\r\n _audioDescriptionControlView.destroy();\r\n }\r\n if (_audioDescriptionTrackView) {\r\n _audioDescriptionTrackView.destroy();\r\n }\r\n if (_captionsView) {\r\n _captionsView.destroy();\r\n }\r\n if (_beforeAfterPlayControlsView) {\r\n _beforeAfterPlayControlsView.destroy();\r\n }\r\n if (_playerSettingsView) {\r\n _playerSettingsView.destroy();\r\n }\r\n if (_pipControlView) {\r\n _pipControlView.destroy();\r\n }\r\n if (_tabController) {\r\n _tabController.destroy();\r\n }\r\n\r\n quizController.reset();\r\n\r\n clearHideControlsTimeout();\r\n responsiveController.forgetContainerSize(_$container);\r\n\r\n _$container = null;\r\n _containerSelector = null;\r\n _containerIDString = null;\r\n _videoTagUniqueId = null;\r\n\r\n _html5ViewEnabled = false;\r\n _mediaList = null;\r\n _playerViewEventCallbacks = {};\r\n _queuedMediaBinds = {};\r\n _initializedValues = {};\r\n _captionService = null;\r\n _mediaWrapper = null;\r\n _mediaElement = null;\r\n _$videoWrapper = null;\r\n _$videoDiv = null;\r\n _$controls = null;\r\n _$hotspotsContainer = null;\r\n _$youtubePointerEventWorkaround = null;\r\n _renderLibView = null;\r\n _tocView = null;\r\n _audioDescriptionControlView = null;\r\n _audioDescriptionTrackView = null;\r\n _captionsView = null;\r\n _hotspotsView = null;\r\n _beforeAfterPlayControlsView = null;\r\n _playRewindControlsView = null;\r\n _prevNextControlsView = null;\r\n _progressBarControlView = null;\r\n _volumeControlView = null;\r\n _playerSettingsView = null;\r\n _fullscreenControlView = null;\r\n _ioOverlayView = null;\r\n _clickControls = null;\r\n _intrinsicWidth = -1;\r\n _intrinsicHeight = -1;\r\n _currentTime = 0;\r\n _currentTimeInMilliseconds = 0;\r\n _timeAfterSeek = -1;\r\n _updateBufferedTimeout = null;\r\n _lastClickTime = null;\r\n _surfaceClickLeaveDelay = 100;\r\n _mouseMoveTolerance = 5;\r\n _lastMouseMoveCoords = {\r\n x: 0,\r\n y: 0\r\n };\r\n _xmp = null;\r\n _autoHideTimeoutId = -1;\r\n _autoHideControllerTime = 5000;\r\n _lastQuestionSetId = -1;\r\n _lastQuestionSetMarkerTime = -1;\r\n _eventLastPercentReported = 0;\r\n _eventPercentWatchInc = 10;\r\n _canPlayVideo = false;\r\n _viewDirty = false;\r\n _seeking = false;\r\n _displayToc = false;\r\n _controlsHidden = false;\r\n _videoMetadataReady = false;\r\n _processingEndOfVideo = false;\r\n _atVideoEndTime = false;\r\n _eventPlayTracking = true;\r\n _eventCategory = 'HTML5-Video';\r\n _haveYouTubePlayer = false;\r\n _loadVideoTimeout = 10000;\r\n _overlaysDisabled = false;\r\n _startPlaybackOnInit = true;\r\n _uiInitialized = false;\r\n _autoHideControlsEnabled = false;\r\n _playerInitializedAfterMetadataLoaded = false;\r\n\r\n setupExternalEventCallbackHarness();\r\n };\r\n\r\n setupExternalEventCallbackHarness();\r\n\r\n return {\r\n setupServices: setupServices,\r\n initHtml5View: function(containerSelector, displaySidebar, mediaList, xmpModel) {\r\n _mediaList = mediaList;\r\n _xmp = xmpModel;\r\n _$container = $(containerSelector);\r\n\r\n initDomForHTML5(containerSelector, displaySidebar);\r\n initHTML5();\r\n processPlayerEvent('Content_Loaded', _eventCategory, mediaList.currentMedia.uri);\r\n },\r\n initTscProjView: function(containerElement, displaySidebar, mediaList, xmpModel) {\r\n _mediaList = mediaList;\r\n _xmp = xmpModel;\r\n _$container = $(containerElement);\r\n\r\n var mediaLib = _mediaList.currentMedia.media;\r\n initDomForHTML5(containerElement, displaySidebar);\r\n\r\n _renderLibView = RenderLibView.create(mediaLib.model, mediaLib.theme);\r\n _renderLibView.ready.then(function() {\r\n _$videoDiv.append(_renderLibView.element);\r\n initHTML5();\r\n });\r\n },\r\n initYouTubeView: function(containerElement, displaySidebar, mediaList, xmpModel) {\r\n _mediaList = mediaList;\r\n _xmp = xmpModel;\r\n _$container = $(containerElement);\r\n\r\n var srcForMedia = _mediaList.currentMedia.media;\r\n\r\n _haveYouTubePlayer = true;\r\n initDomForHTML5(containerElement, displaySidebar);\r\n\r\n var startTime = playerConfiguration.getJumpToTime();\r\n if (startTime !== undefined) {\r\n startTime = convertUrlTime(startTime);\r\n } else {\r\n startTime = 0;\r\n }\r\n\r\n if (isControlsHidden()) {\r\n // Quiz location logic needs the controls to have reasonable width and height.\r\n // But in the case when we are using YouTube controls we want the controls hidden\r\n // so they can't be interacted with. By pushing it behind the player with z-index\r\n // it accomplishes \"hiding\" the controls but still allowing the controls to take\r\n // up the correct width and height for the quiz marker location logic. Using\r\n // _$controls.hide() does not accomplish the same affect and that is why it is\r\n // avoided here.\r\n _$controls.css('z-index', '-1');\r\n } else {\r\n _$videoWrapper.css('height', 'calc(100% - ' + _$controls.height() + 'px)');\r\n }\r\n\r\n youTube.init(srcForMedia, _videoTagUniqueId, initHTML5, handleFirstPlay, onYouTubeError, _$container.width(), _$container.height(), startTime);\r\n processPlayerEvent('Content_Loaded', _eventCategory, _mediaList.currentMedia.uri);\r\n },\r\n destroy: destroy,\r\n jsSeekTime: function(time) {\r\n if (_html5ViewEnabled) {\r\n if (_mediaWrapper) {\r\n if (_mediaElement.duration && time < _mediaElement.duration) {\r\n // replay video when video is at the end\r\n if (_atVideoEndTime) {\r\n replayVideo(time);\r\n // seek only when a quiz view isn't being shown\r\n } else if (!quizController.hasQuiz || quizController.hasQuiz && !quizController.viewIsOpen) {\r\n seek(time);\r\n }\r\n }\r\n } else {\r\n playerConfiguration.jumpToTime = time;\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n if (!quizController.viewIsOpen) {\r\n setTimeout(initQuiz, 80);\r\n }\r\n } else {\r\n setTimeout(initUI, 80);\r\n }\r\n }\r\n }\r\n },\r\n jsPlay: function() {\r\n if (_html5ViewEnabled) {\r\n if (_mediaWrapper) {\r\n // replay video when video is at the end\r\n if (_atVideoEndTime) {\r\n replayVideo(0);\r\n // seek only when a quiz view isn't being shown\r\n } else {\r\n play();\r\n }\r\n } else if (quizController.hasQuiz && quizController.quizEnabled) {\r\n if (!quizController.viewIsOpen) {\r\n setTimeout(initQuiz, 80);\r\n }\r\n } else {\r\n setTimeout(initUI, 80);\r\n }\r\n }\r\n },\r\n // html5 element methods\r\n play: play,\r\n pause: pause,\r\n getCurrentSrc: function() {\r\n return _mediaElement !== null && _mediaElement.currentSrc !== undefined ? _mediaElement.currentSrc : playerConfiguration.getMediaSrc();\r\n },\r\n getCurrentTime: function() {\r\n return _mediaElement !== null ? _mediaElement.currentTime : 0;\r\n },\r\n getDuration: function() {\r\n return _mediaElement !== null ? _mediaElement.duration : 0;\r\n },\r\n getEnded: function() {\r\n return _mediaElement !== null ? _mediaElement.ended : false;\r\n },\r\n getMuted: function() {\r\n return _volumeControlView !== null ? _volumeControlView.muted : false;\r\n },\r\n getPaused: function() {\r\n return _mediaElement !== null ? _mediaElement.paused : false;\r\n },\r\n getPlaybackRate: function() {\r\n return _playerSettingsView ? _playerSettingsView.playbackRate : 1;\r\n },\r\n getBuffered: function() {\r\n return _mediaElement !== null ? _mediaElement.buffered : [];\r\n },\r\n getPlayed: function() {\r\n return _mediaElement !== null ? _mediaElement.played : [];\r\n },\r\n getSeekable: function() {\r\n return _mediaElement !== null ? _mediaElement.seekable : [];\r\n },\r\n getSeeking: function() {\r\n return _seeking;\r\n },\r\n getVolume: function() {\r\n return _volumeControlView !== null ? _volumeControlView.volume : 0;\r\n },\r\n setCurrentTime: safeSeek,\r\n setMuted: function(value) {\r\n if (_volumeControlView) {\r\n _volumeControlView.muted = value;\r\n } else {\r\n _initializedValues.muted = value;\r\n }\r\n },\r\n setPlaybackRate: function(value) {\r\n if (_playerSettingsView) {\r\n _playerSettingsView.playbackRate = value;\r\n } else {\r\n _initializedValues.playbackRate = value;\r\n }\r\n },\r\n setVolume: function(value) {\r\n if (_volumeControlView) {\r\n _volumeControlView.volume = value;\r\n } else {\r\n _initializedValues.volume = value;\r\n }\r\n },\r\n // end html5 element functions\r\n isInFullScreenMode: function() {\r\n if (_fullscreenControlView) {\r\n return _fullscreenControlView.isFullScreen;\r\n }\r\n return false;\r\n },\r\n addEventListener: function(type, listener) {\r\n if (externalEventIsSupported(type)) {\r\n _playerViewEventCallbacks[type].push(listener);\r\n }\r\n },\r\n removeEventListener: function(type, listener) {\r\n if (externalEventIsSupported(type)) {\r\n // just in case the same listener pointer is bound more than once?\r\n while (_playerViewEventCallbacks[type].indexOf(listener) !== -1) {\r\n _playerViewEventCallbacks[type].splice(_playerViewEventCallbacks[type].indexOf(listener), 1);\r\n }\r\n }\r\n },\r\n addMediaEventListener: addMediaEventListener,\r\n removeMediaEventListener: removeMediaEventListener,\r\n // html5 extended\r\n getIsYouTube: isYouTube,\r\n getScrubbing: getScrubbing,\r\n setScrubbing: setScrubbing,\r\n getCaptionCollection: getCaptionCollection,\r\n getCaptionTrack: getCaptionTrack,\r\n setCaptionTrack: setCaptionTrack,\r\n getCaptionsVisible: getCaptionsVisible,\r\n setCaptionsVisible: setCaptionsVisible\r\n };\r\n});\r\n\r\n","(function(window, $, templates, playerConfiguration, quizController, localizationStrings, viewHelper, deviceInfo, IoOverlayView, responsiveController, highlightDisabler, events) {\r\n 'use strict';\r\n\r\n window.TSC = window.TSC || {};\r\n window.TSC.imageView = (function() {\r\n var _$container;\r\n\r\n // vars to hold jq elements\r\n var _imageDiv;\r\n var _quizBar;\r\n var _imageWrapper;\r\n\r\n var _animating = false;\r\n var _animationSpeed = 300;\r\n var _clickToTakeTheQuiz = localizationStrings.strings.accessBtnTakeQuiz;\r\n var _txtHideQuiz = localizationStrings.strings.accessBtnHideQuiz;\r\n var _txtShowQuiz = localizationStrings.strings.accessBtnShowQuiz;\r\n var _txtHideAnswer = localizationStrings.strings.accessBtnHideAnswer;\r\n var _txtShowAnswer = localizationStrings.strings.accessBtnShowAnswer;\r\n var _imageNotFound = localizationStrings.strings.mediaNotFound;\r\n\r\n var _defaultMarkup = templates.image_view_template({clickToTakeTheQuiz: _clickToTakeTheQuiz});\r\n var _eventCategory = 'Image';\r\n\r\n var _showQuizEventListeners = [];\r\n var _hideQuizEventListeners = [];\r\n var _showQuiz = false;\r\n var _quizBarShowingAnswers = false;\r\n var _submitting = false;\r\n var _loaded = false;\r\n var _minScale = 1;\r\n var _ioOverlayView;\r\n\r\n var setBackgroundImage = function(image, imageDisplayedCallback) {\r\n _imageDiv.bind('error', function() {\r\n _ioOverlayView.displayMessage(_imageNotFound, true);\r\n _imageDiv.hide();\r\n });\r\n _imageDiv.load(setupPanAndZooming);\r\n _imageDiv.attr('src', image);\r\n\r\n processPlayerEvent('Content_Loaded', _eventCategory, image);\r\n if (imageDisplayedCallback) {\r\n imageDisplayedCallback();\r\n }\r\n };\r\n\r\n var getMediaRotationDegrees = function() {\r\n if (!deviceInfo.isIOS()) {\r\n return playerConfiguration.getMediaRotation();\r\n }\r\n };\r\n\r\n var calculateMinScale = function() {\r\n var minScale = 1;\r\n var mediaRotationDegrees = getMediaRotationDegrees();\r\n if (mediaRotationDegrees === 90 || mediaRotationDegrees === 270) {\r\n if (_imageDiv.width() > _imageDiv.height()) {\r\n if (_imageDiv.width() > _imageWrapper.height()) {\r\n minScale = _imageWrapper.height() / _imageDiv.width();\r\n }\r\n } else if (_imageDiv.height() > _imageWrapper.width()) {\r\n minScale = _imageWrapper.width() / _imageDiv.height();\r\n }\r\n }\r\n return minScale;\r\n };\r\n\r\n var setupPanAndZooming = function() {\r\n _loaded = true;\r\n\r\n _imageDiv.panzoom('resetDimensions');\r\n\r\n // Image panning and zooming, modified from https://github.com/timmywil/jquery.panzoom/blob/master/demo/index.html\r\n var nativeScale = this.naturalWidth / this.clientWidth;\r\n\r\n _minScale = calculateMinScale();\r\n\r\n _imageDiv.panzoom({minScale: _minScale, maxScale: 200, rotate: getMediaRotationDegrees()});\r\n _imageDiv.panzoom('zoom', _minScale, {animate: false});\r\n\r\n // scroll zoom in / out\r\n _imageWrapper.on('mousewheel.focal DOMMouseScroll', function(mouseWheelEvent) {\r\n mouseWheelEvent.preventDefault();\r\n var delta = mouseWheelEvent.delta || mouseWheelEvent.originalEvent.wheelDelta || mouseWheelEvent.originalEvent.detail * -1;\r\n var zoomOut = delta ? delta < 0 : mouseWheelEvent.originalEvent.deltaY > 0 || mouseWheelEvent.originalEvent.detail > 0;\r\n // Firefox fix\r\n if (!mouseWheelEvent.clientX) {\r\n mouseWheelEvent.clientX = mouseWheelEvent.originalEvent.clientX;\r\n mouseWheelEvent.clientY = mouseWheelEvent.originalEvent.clientY;\r\n }\r\n _imageDiv.panzoom('zoom', zoomOut, {\r\n focal: mouseWheelEvent\r\n });\r\n });\r\n\r\n _imageDiv.on('panzoomzoom', function(zoomEvent, panzoom, scale) {\r\n _imageDiv.panzoom('option', 'increment', scale * 0.1);\r\n setZoomInOrOutCursor();\r\n });\r\n\r\n\r\n _imageDiv.on('panzoomend', function(zoomEvent, panzoom, matrix, changed) {\r\n var zoomEndNativeScale = this.naturalWidth / this.clientWidth;\r\n if (!changed) {\r\n if (zoomEndNativeScale === 1 || matrix[0] > 1) {\r\n _imageDiv.panzoom('zoom', _minScale, {focal: zoomEvent, animate: true});\r\n _imageDiv.css('cursor', 'zoom-in');\r\n } else {\r\n _imageDiv.panzoom('zoom', nativeScale, {focal: zoomEvent, animate: true});\r\n }\r\n }\r\n });\r\n\r\n _imageDiv.css('cursor', 'zoom-in');\r\n\r\n _$container.on('resize', onContainerResize);\r\n };\r\n\r\n var onContainerResize = function() {\r\n if (_showQuiz) {\r\n _imageWrapper.width('calc(100% - ' + getOffset() + 'px)');\r\n } else {\r\n _imageWrapper.width('100%');\r\n }\r\n _imageDiv.panzoom('resetDimensions');\r\n _imageDiv.panzoom('reset', {animate: false});\r\n _minScale = calculateMinScale();\r\n _imageDiv.panzoom('zoom', _minScale, {animate: false});\r\n responsiveController.manageResponsiveClasses();\r\n };\r\n\r\n var setZoomInOrOutCursor = function() {\r\n if (_imageDiv.panzoom('getMatrix')[0] > 1) {\r\n _imageDiv.css('cursor', 'zoom-out');\r\n } else {\r\n _imageDiv.css('cursor', 'zoom-in');\r\n }\r\n };\r\n\r\n var initDom = function($container) {\r\n _$container = $container;\r\n _$container.html(_defaultMarkup);\r\n _$container.fadeIn(_animationSpeed);\r\n $('body').css('background-color', 'transparent');\r\n\r\n _imageWrapper = $('#imageWrapper');\r\n _imageDiv = $('#imageDiv');\r\n _quizBar = $('#quizBar');\r\n _ioOverlayView = IoOverlayView.create($container);\r\n _quizBar.bind('click', toggleQuizBar);\r\n\r\n $container.on('mousedown', '*', function(e) {\r\n var $this = $(this);\r\n if (($this.is(':focus') || $this.is(e.target)) && !$this.is('input')) {\r\n highlightDisabler.disableHighlights($this);\r\n }\r\n });\r\n\r\n responsiveController.monitorContainerSize(_$container);\r\n\r\n setTimeout(function() {\r\n if (viewHelper.elementOrChildHasFocus(_$container)) {\r\n _quizBar.focus();\r\n highlightDisabler.disableHighlights(_quizBar);\r\n }\r\n }, 100);\r\n };\r\n\r\n var processPlayerEvent = function(action, label, value) {\r\n if (playerConfiguration.getCustomEventTracking()) {\r\n if (playerConfiguration.getCustomEventCallback()) {\r\n if (playerConfiguration.getAltEventCategoryAsFilename()) {\r\n playerConfiguration.getCustomEventCallback().call(this, {category: playerConfiguration.getMediaFileName(), action: action, label: label, value: value});\r\n } else {\r\n playerConfiguration.getCustomEventCallback().call(this, {category: _eventCategory, action: action, label: label, value: value});\r\n }\r\n }\r\n }\r\n\r\n if (playerConfiguration.getGoogleAnalyticsID()) {\r\n window._gaq.push(['_trackEvent', _eventCategory, action, label]);\r\n }\r\n };\r\n\r\n var toggleQuizBar = function() {\r\n if (_submitting || !_loaded) {\r\n return;\r\n }\r\n\r\n if (!_animating) {\r\n _imageDiv.addClass('imageDiv-animation-style');\r\n _animating = true;\r\n }\r\n\r\n if (_quizBarShowingAnswers) {\r\n if (_showQuiz) {\r\n _quizBar.html(_txtShowAnswer);\r\n hideQuiz();\r\n } else {\r\n _quizBar.html(_txtHideAnswer);\r\n showQuiz();\r\n }\r\n } else if (_showQuiz) {\r\n _quizBar.html(_txtShowQuiz);\r\n hideQuiz();\r\n } else {\r\n _quizBar.html(_txtHideQuiz);\r\n showQuiz();\r\n }\r\n };\r\n\r\n var getOffset = function() {\r\n if (_$container.height() <= 400) {\r\n return 0;\r\n }\r\n if (_$container.width() <= 720) {\r\n return 285;\r\n }\r\n return 300;\r\n };\r\n\r\n var calculateAspectRatioFit = function(srcWidth, srcHeight, maxWidth, maxHeight) {\r\n var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\r\n return {width: srcWidth * ratio, height: srcHeight * ratio};\r\n };\r\n\r\n var offsetImage = function(moveLeft) {\r\n var matrix = _imageDiv.panzoom('getMatrix');\r\n var offset = moveLeft ? getOffset() * -1 : getOffset();\r\n if (matrix[0] === _minScale) {\r\n var parentWidth = _imageWrapper.width() + offset;\r\n var parentHeight = _imageWrapper.height();\r\n\r\n var dimensions = calculateAspectRatioFit(_imageDiv.width(), _imageDiv.height(), parentWidth, parentHeight);\r\n\r\n if (_imageDiv[0].naturalWidth <= parentWidth && _imageDiv[0].naturalHeight <= parentHeight) {\r\n dimensions.width = _imageDiv[0].naturalWidth;\r\n dimensions.height = _imageDiv[0].naturalHeight;\r\n }\r\n\r\n var x = Math.min((parentWidth - dimensions.width) / 2);\r\n var y = Math.min((parentHeight - dimensions.height) / 2);\r\n _imageDiv.panzoom('pan', x, y);\r\n }\r\n\r\n _imageWrapper.one('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function() {\r\n _imageDiv.panzoom('resetDimensions');\r\n if (matrix[0] === _minScale) {\r\n _imageDiv.panzoom('reset', {animate: false});\r\n _imageDiv.panzoom('zoom', _minScale, {animate: false});\r\n _imageDiv.css('cursor', 'zoom-in');\r\n }\r\n });\r\n };\r\n\r\n var showQuiz = function() {\r\n offsetImage(true);\r\n _imageWrapper.width('calc(100% - ' + getOffset() + 'px)');\r\n $.each(_showQuizEventListeners, function(index, callback) {\r\n callback();\r\n });\r\n _showQuiz = true;\r\n };\r\n\r\n var hideQuiz = function() {\r\n offsetImage(false);\r\n _imageWrapper.width('100%');\r\n $.each(_hideQuizEventListeners, function(index, callback) {\r\n callback();\r\n });\r\n _showQuiz = false;\r\n };\r\n\r\n var showSubmitting = function() {\r\n _quizBar.html('');\r\n _submitting = true;\r\n $('#quiz_content').hide();\r\n $('#tsc_submitting').show();\r\n };\r\n\r\n var hideSubmitting = function() {\r\n _quizBar.html(_txtHideAnswer);\r\n _submitting = false;\r\n _quizBarShowingAnswers = true;\r\n };\r\n\r\n return {\r\n initView: function($container, imageSrc, imageDisplayedCallback) {\r\n quizController.mediaIsImage = true;\r\n initDom($container);\r\n setBackgroundImage(imageSrc, imageDisplayedCallback);\r\n },\r\n showQuizBar: function() {\r\n _imageWrapper.height('calc(100% - 40px');\r\n _quizBar.show();\r\n },\r\n initEvents: function() {\r\n this.addEventListener('SHOW_QUIZ', quizController.showQuiz);\r\n this.addEventListener('HIDE_QUIZ', quizController.hideQuiz);\r\n _$container.on(events.Quizzing.Status, showSubmitting);\r\n _$container.on(events.Quizzing.TransitionImageQuizToAnswers, hideSubmitting);\r\n _$container.on(events.Quizzing.ShowQuizBar, this.showQuizBar);\r\n _$container.on(events.Quizzing.HideQuiz, toggleQuizBar);\r\n },\r\n addEventListener: function(type, listener) {\r\n if (listener && typeof listener === 'function') {\r\n if (type === 'SHOW_QUIZ') {\r\n _showQuizEventListeners.push(listener);\r\n } else if (type === 'HIDE_QUIZ') {\r\n _hideQuizEventListeners.push(listener);\r\n } else {\r\n throw new Error('image-view.js: addEventListener() Type argument was not SHOWQUIZ or HIDEQUIZ');\r\n }\r\n } else {\r\n throw new Error('image-view.js: addEventListener() Listener argument was not a function');\r\n }\r\n }\r\n };\r\n }());\r\n})(this, window.jQuery, window.TSC.templates, window.TSC.playerConfiguration, window.TSC.quizController, window.TSC.localizationStrings, window.TSC.viewHelper, window.TSC.deviceInfo, window.TSC.IoOverlayView, window.TSC.responsiveController, window.TSC.highlightDisabler, window.TSC.events);\r\n","(function(window, mediaPlayerFactory) {\r\n 'use strict';\r\n\r\n window._gaq = window._gaq || [];\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.mediaPlayer = mediaPlayerFactory(\r\n window,\r\n window.jQuery,\r\n namespace.localizationStrings,\r\n namespace.events,\r\n namespace.performanceWrapper,\r\n namespace.deviceInfo,\r\n namespace.queryParamsStripper,\r\n namespace.iFrameBridge,\r\n namespace.playerConfiguration,\r\n namespace.mediaType,\r\n namespace.MediaList,\r\n namespace.playerType,\r\n namespace.mediaPlayerController,\r\n namespace.reportType,\r\n namespace.Quiz,\r\n namespace.Xmp,\r\n namespace.fathomService,\r\n namespace.CaptionService,\r\n namespace.playerView,\r\n namespace.youTube,\r\n namespace.preRollController,\r\n namespace.imageView,\r\n namespace.quizController,\r\n namespace.questionGrader,\r\n namespace.log,\r\n namespace.themeController,\r\n namespace.cssClasses,\r\n namespace.scormController,\r\n namespace.messageBarType,\r\n namespace.MessageBarView\r\n );\r\n})(window, function(window,\r\n $,\r\n localizationStrings,\r\n events,\r\n performanceWrapper,\r\n deviceInfo,\r\n queryParamsStripper,\r\n iFrameBridge,\r\n playerConfiguration,\r\n mediaType,\r\n MediaList,\r\n playerType,\r\n mediaPlayerController,\r\n reportType,\r\n Quiz,\r\n Xmp,\r\n fathomService,\r\n CaptionService,\r\n playerView,\r\n youTube,\r\n preRollController,\r\n imageView,\r\n quizController,\r\n questionGrader,\r\n log,\r\n themeController,\r\n cssClasses,\r\n scormController,\r\n messageBarType,\r\n MessageBarView) {\r\n 'use strict';\r\n\r\n // major, minor, build\r\n var PLAYER_VERSION = 'x.x.x';\r\n\r\n var _spElementId = null;\r\n var _$spElement = null;\r\n var _sentViewEvent = false;\r\n var _currentPlayerType = null;\r\n var _mediaList = null;\r\n var _xmp = null;\r\n var _quizModel = null;\r\n var _captionService = null;\r\n\r\n var mediaListError = function() {\r\n MessageBarView.create(_$spElement, messageBarType.warning, localizationStrings.strings.mediaNotFound);\r\n };\r\n\r\n var xmpErrorHandler = function() {\r\n if (_currentPlayerType === playerType.IMAGE) {\r\n MessageBarView.create(_$spElement, messageBarType.info, localizationStrings.strings.txtImageQuizNetworkErrorMessage, localizationStrings.strings.close);\r\n } else if (deviceInfo.isLocal()) {\r\n MessageBarView.create(_$spElement, messageBarType.info, localizationStrings.strings.xmpSecurity, localizationStrings.strings.close);\r\n } else {\r\n MessageBarView.create(_$spElement, messageBarType.info, localizationStrings.strings.xmpError);\r\n }\r\n };\r\n\r\n var imageQuizLoadErrorHandler = function() {\r\n log.logMessage('Media-player: setupPlayer() attempted to load an image quiz that contained multiple question sets.');\r\n MessageBarView.create(_$spElement, messageBarType.info, localizationStrings.strings.txtBadImageQuiz);\r\n };\r\n\r\n var initAnalytics = function() {\r\n window._gaq.push(['_setAccount', playerConfiguration.getGoogleAnalyticsID()]);\r\n\r\n if (playerConfiguration.getGAPageViewTracking()) {\r\n window._gaq.push(['_trackPageview', playerConfiguration.getMediaFileName()]);\r\n }\r\n\r\n (function() {\r\n var ga = document.createElement('script');\r\n ga.setAttribute('data-tsc-app-name', 'tsc-smart-player');\r\n ga.type = 'text/javascript';\r\n ga.async = true;\r\n ga.src = 'https://ssl.google-analytics.com/ga.js';\r\n var s = document.getElementsByTagName('script')[0];\r\n s.parentNode.insertBefore(ga, s);\r\n })();\r\n };\r\n\r\n var onPreRollStart = function() {\r\n continueInit();\r\n };\r\n\r\n var initPlayer = function() {\r\n setupServices();\r\n playerView.setupServices(_captionService);\r\n\r\n deviceInfo.lookAtDevice();\r\n\r\n queryParamsStripper.strip();\r\n\r\n themeController.setSmartPlayerContainerElement(_$spElement);\r\n\r\n if (playerConfiguration.getPreRollSrc()) {\r\n preRollController.createView(playerConfiguration.getPreRollSrc(), onPreRollStart);\r\n } else {\r\n continueInit();\r\n }\r\n };\r\n\r\n var continueInit = function() {\r\n var mediaSources = playerConfiguration.getMediaSources();\r\n _mediaList = MediaList.create(mediaSources);\r\n _mediaList.ready.then(mediaListReady, mediaListError);\r\n };\r\n\r\n var playbackInitiatedHandler = function() {\r\n playerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\r\n if (preRollController && preRollController.viewExists()) {\r\n preRollController.destroyView();\r\n }\r\n };\r\n\r\n var playerStartedHandler = function() {\r\n if (!_sentViewEvent) {\r\n if (_currentPlayerType !== playerType.IMAGE) {\r\n playerView.removeEventListener(events.External.VideoStart, playerStartedHandler);\r\n }\r\n $(document).trigger('techsmith.cloud.viewedMedia');\r\n _sentViewEvent = true;\r\n }\r\n };\r\n\r\n var mediaListReady = function() {\r\n _currentPlayerType = mediaPlayerController.getPlayerType(_mediaList);\r\n\r\n switch (_currentPlayerType) {\r\n case playerType.YOUTUBE: {\r\n youTube.addApi();\r\n processMediaAssets();\r\n break;\r\n }\r\n case playerType.HTML5_VIDEO: {\r\n processMediaAssets();\r\n break;\r\n }\r\n case playerType.TSCPROJ: {\r\n processMediaAssets();\r\n break;\r\n }\r\n case playerType.IMAGE: {\r\n processMediaAssets();\r\n break;\r\n }\r\n case playerType.NOT_SUPPORTED: {\r\n if (_mediaList.currentMediaType === mediaType.WEBM) {\r\n MessageBarView.create(_$spElement, messageBarType.warning, localizationStrings.strings.noWebMSupport);\r\n } else {\r\n MessageBarView.create(_$spElement, messageBarType.warning, localizationStrings.strings.videoNotSupported);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n var initQuiz = function(container) {\r\n if (quizController.hasQuiz && quizController.quizEnabled) {\r\n quizController.setViewContainer(container);\r\n var grader;\r\n if (playerConfiguration.getFathomId()) {\r\n grader = questionGrader.FATHOM;\r\n } else {\r\n grader = questionGrader.XMP;\r\n }\r\n quizController.setQuestionGrader(grader);\r\n }\r\n };\r\n\r\n var processMediaAssets = function() {\r\n if (playerConfiguration.getGoogleAnalyticsID()) {\r\n initAnalytics();\r\n }\r\n processXMP();\r\n };\r\n\r\n var setQuizModel = function(xmpModel) {\r\n if (xmpModel && xmpModel.hasQuiz) {\r\n _quizModel = Quiz.create(xmpModel);\r\n quizController.quizModel = _quizModel;\r\n }\r\n };\r\n\r\n var processQuizzing = function(successCallback) {\r\n if (playerConfiguration.getFathomId()) {\r\n fathomService.addEventListener('GET_COMPLETE', function(xmpModel) {\r\n setQuizModel(xmpModel);\r\n setupPlayer();\r\n if (typeof successCallback === 'function') {\r\n successCallback();\r\n }\r\n });\r\n fathomService.addEventListener('ERROR', function() {\r\n setupPlayer();\r\n xmpErrorHandler();\r\n });\r\n fathomService.getFathom(playerConfiguration.getFathomId());\r\n } else {\r\n setQuizModel(_xmp);\r\n setupPlayer();\r\n }\r\n };\r\n\r\n var processXMP = function() {\r\n if (playerConfiguration.getXMPSrc()) {\r\n _xmp = Xmp.create();\r\n\r\n if (typeof window.TSC.embedded_config_xml === 'string') {\r\n _xmp.parse(window.TSC.embedded_config_xml);\r\n } else {\r\n _xmp.load(playerConfiguration.getXMPSrc(), false);\r\n }\r\n\r\n _xmp.ready.then(function() {\r\n playerConfiguration.configureFromXmp(_xmp);\r\n localizationStrings.configureFromXmp(_xmp);\r\n processQuizzing();\r\n }).catch(function() {\r\n processQuizzing();\r\n xmpErrorHandler();\r\n });\r\n } else {\r\n processQuizzing();\r\n }\r\n };\r\n\r\n var captionChangeHandler = function(text) {\r\n if (iFrameBridge.isInIframe()) {\r\n iFrameBridge.postMessage('CAPTION-CHANGED', '*', text);\r\n }\r\n };\r\n\r\n var setupServices = function() {\r\n _captionService = CaptionService.create();\r\n };\r\n\r\n var setupBasicCss = function() {\r\n _$spElement.addClass(cssClasses.smartPlayerNamespace);\r\n\r\n if (playerConfiguration.getUseLargerProgressBar()) {\r\n _$spElement.addClass(cssClasses.largerProgressBar);\r\n }\r\n\r\n // mainly for backwards compat for pre-version 3.38.0 traverse parent-chain and set height/pad/etc if default\r\n if (playerConfiguration.getFullViewPort()) {\r\n _$spElement.parents().each(function(index, parentNode) {\r\n var $parentNode = $(parentNode);\r\n $parentNode.height('100%');\r\n if ($parentNode.prop('tagName').toLowerCase() === 'body') {\r\n $parentNode.css({\r\n margin: 0,\r\n padding: 0,\r\n border: 0,\r\n overflow: 'hidden'\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n var initPlayerView = function(displaySidebar, displayLocalWarning) {\r\n playerView.addEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\r\n playerView.addEventListener(events.External.VideoStart, playerStartedHandler);\r\n playerView.addEventListener(events.External.CaptionChange, captionChangeHandler);\r\n\r\n if (mediaPlayerController.getPlayerType(_mediaList) === window.TSC.playerType.YOUTUBE) {\r\n playerView.initYouTubeView(_spElementId, displaySidebar, _mediaList, _xmp);\r\n } else if (mediaPlayerController.getPlayerType(_mediaList) === window.TSC.playerType.TSCPROJ) {\r\n playerView.initTscProjView(_spElementId, displaySidebar, _mediaList, _xmp);\r\n } else {\r\n playerView.initHtml5View(_spElementId, displaySidebar, _mediaList, _xmp);\r\n }\r\n\r\n if (displayLocalWarning) {\r\n MessageBarView.create(_$spElement, messageBarType.info, localizationStrings.strings.xmpSecurity, localizationStrings.strings.close);\r\n }\r\n };\r\n\r\n var setupPlayer = function() {\r\n var displaySidebar = false;\r\n var displayLocalWarning = false;\r\n\r\n if (_currentPlayerType === playerType.IMAGE) {\r\n _$spElement.addClass('image-view');\r\n } else {\r\n _$spElement.addClass('video-view');\r\n }\r\n\r\n // General image path\r\n if (_currentPlayerType === playerType.IMAGE) {\r\n imageView.initView(_$spElement, _mediaList.currentMedia.media, playerStartedHandler);\r\n\r\n initQuiz(_$spElement);\r\n quizController.setSmartplayerElement(_$spElement);\r\n quizController.gatherSetupIfNeeded();\r\n\r\n if (quizController.hasQuiz && _quizModel.numberQuestionSets > 0) {\r\n if (quizController.hasMultipleQuestionSets()) {\r\n imageQuizLoadErrorHandler();\r\n } else {\r\n imageView.initEvents();\r\n }\r\n }\r\n\r\n //Record the view in quizzing analytics\r\n quizController.simpleInit();\r\n quizController.forceProgressUpdate(100, [0]);\r\n // advanced HTML5_VIDEO path\r\n } else {\r\n initQuiz(_$spElement);\r\n if (_xmp) {\r\n if (_xmp.hasTocItems || _xmp.hasSearchableItems && playerConfiguration.getIsSearchable()) {\r\n displaySidebar = true;\r\n }\r\n\r\n if (_xmp.hasCaptionItems) {\r\n if (iFrameBridge.isInIframe()) {\r\n iFrameBridge.postMessage('HAS-CAPTIONS', '*');\r\n }\r\n }\r\n }\r\n\r\n if (quizController.hasQuiz) {\r\n if (deviceInfo.isLocal() && _quizModel.reportMethod !== reportType.NONE) {\r\n displayLocalWarning = true;\r\n _quizModel.reportMethod = reportType.NONE;\r\n } else if (_quizModel.useScorm && _quizModel.totalNumberOfGradedQuestionSets === 0) {\r\n // legacy scorm support\r\n if (typeof window.onVideoWatchedPercentage === 'function') {\r\n playerConfiguration.setReportScormComplete(true);\r\n // Built in Scorm support\r\n } else {\r\n playerConfiguration.isScormLesson = true;\r\n }\r\n }\r\n }\r\n\r\n if (playerConfiguration.isScormLesson) {\r\n scormController.init().then(function() {\r\n initPlayerView(displaySidebar, displayLocalWarning);\r\n });\r\n } else {\r\n initPlayerView(displaySidebar, displayLocalWarning);\r\n }\r\n }\r\n };\r\n\r\n var triggerEvent = function(eventName, data) {\r\n if (_$spElement) {\r\n _$spElement.trigger(eventName, data);\r\n }\r\n };\r\n\r\n var init = function(spElementId) {\r\n performanceWrapper.createMarker(events.Timing.PlayerInitialized);\r\n _spElementId = spElementId;\r\n _$spElement = $(_spElementId);\r\n setupBasicCss();\r\n initPlayer();\r\n };\r\n\r\n var getSmartPlayerRootElement = function() {\r\n return _$spElement;\r\n };\r\n\r\n var destroy = function() {\r\n if (!_$spElement) {\r\n return;\r\n }\r\n playerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\r\n playerView.removeEventListener(events.External.VideoStart, playerStartedHandler);\r\n playerView.removeEventListener(events.External.CaptionChange, captionChangeHandler);\r\n playerView.destroy();\r\n\r\n _$spElement.removeClass(cssClasses.smartPlayerNamespace + ' ' + cssClasses.largerProgressBar + ' video-view image-view');\r\n\r\n _spElementId = null;\r\n _$spElement = null;\r\n _sentViewEvent = false;\r\n _currentPlayerType = null;\r\n _mediaList = null;\r\n _xmp = null;\r\n _quizModel = null;\r\n _captionService = null;\r\n };\r\n\r\n var getVersion = function() {\r\n return PLAYER_VERSION;\r\n };\r\n\r\n var jsSeekTime = function(time) {\r\n playerView.jsSeekTime(time);\r\n };\r\n\r\n var jsPlay = function() {\r\n playerView.jsPlay();\r\n };\r\n\r\n var jsDebugUI = function() {\r\n return 'HTML5_VIDEO player does not support this method.';\r\n };\r\n\r\n return Object.defineProperties({\r\n init: init,\r\n getSmartPlayerRootElement: getSmartPlayerRootElement,\r\n destroy: destroy,\r\n getVersion: getVersion,\r\n jsSeekTime: jsSeekTime,\r\n jsPlay: jsPlay,\r\n jsDebugUI: jsDebugUI,\r\n addEventListener: playerView.addEventListener,\r\n removeEventListener: playerView.removeEventListener,\r\n triggerEvent: triggerEvent\r\n }, {});\r\n});\r\n","(function(window, mediaInterfaceFactory) {\r\n 'use strict';\r\n\r\n var namespace = window.TSC = window.TSC || {};\r\n namespace.mediaInterface = mediaInterfaceFactory(window,\r\n window.$,\r\n namespace.log,\r\n namespace.deviceInfo,\r\n namespace.quizService,\r\n namespace.fathomService,\r\n namespace.mediaPlayer,\r\n namespace.playerView,\r\n namespace.playerConfiguration,\r\n namespace.events,\r\n namespace.themeController,\r\n namespace.PluginController);\r\n})(this, function(window, $, log, deviceInfo, quizService, fathomService, mediaPlayer, playerView, playerConfiguration, events, themeController, PluginController) {\r\n 'use strict';\r\n\r\n // all of these events may be valid, it is not guaranteed that all of these events will fire for every sp media type\r\n var _validEvents = [\r\n // events that we may not want to connect to media element directly\r\n // 'suspend', 'abort', 'emptied', 'stalled'\r\n 'loadstart', // TODO: it'd be neat if we could fire 'loadstart' event before the actual mediaElement is initialized, but problematic atm so just let the element fire it\r\n 'loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough',\r\n 'playing', 'waiting', 'seeking',\r\n 'seeked', 'ended', 'play', 'pause', 'resize', 'error',\r\n 'volumechange', 'durationchange', 'ratechange', 'timeupdate', 'progress'\r\n ];\r\n var _started = false;\r\n var _environment = 'live';\r\n var _controls = 'autohide';\r\n var _authInfo = {};\r\n var _lastError = null;\r\n var _pluginController = null;\r\n\r\n var addEventListener = function(type, callback) {\r\n if (_validEvents.indexOf(type) !== -1) {\r\n playerView.addMediaEventListener(type, callback);\r\n } else {\r\n playerView.addEventListener(type, callback);\r\n }\r\n };\r\n\r\n var removeEventListener = function(type, callback) {\r\n if (_validEvents.indexOf(type) !== -1) {\r\n playerView.removeMediaEventListener(type, callback);\r\n } else {\r\n playerView.removeEventListener(type, callback);\r\n }\r\n };\r\n\r\n var getAutoPlay = function(value) {\r\n playerConfiguration.setAutoPlayMedia(String(value).toLowerCase() === 'true');\r\n };\r\n\r\n var getCurrentTime = function() {\r\n return playerView.getCurrentTime();\r\n };\r\n\r\n var getControls = function() {\r\n return _controls;\r\n };\r\n\r\n var setControls = function(value) {\r\n if (String(value).toLowerCase() === 'false') {\r\n _controls = value;\r\n playerConfiguration.setDisableControls(true);\r\n playerConfiguration.setAutoHideControls(false);\r\n } else if (String(value).toLowerCase() === 'true') {\r\n _controls = value;\r\n playerConfiguration.setDisableControls(false);\r\n playerConfiguration.setAutoHideControls(false);\r\n } else { // default 'autohide'\r\n _controls = 'autohide';\r\n playerConfiguration.setDisableControls(false);\r\n playerConfiguration.setAutoHideControls(true);\r\n }\r\n\r\n mediaPlayer.triggerEvent(events.Controls.Updated, {newValue: value});\r\n };\r\n\r\n var setDisableInteractions = function(disableInteractions) {\r\n playerConfiguration.setDisableInteractions(disableInteractions);\r\n mediaPlayer.triggerEvent(events.Controls.Updated);\r\n };\r\n\r\n var getLoop = function() {\r\n var endActionParam = playerConfiguration.getEndActionParam();\r\n return playerConfiguration.getEndActionType().toLowerCase() === 'loop' && (endActionParam === 'true' || endActionParam === '1');\r\n };\r\n\r\n var setLoop = function(value) {\r\n if (String(value).toLowerCase() === 'true') {\r\n playerConfiguration.setEndActionType('loop');\r\n playerConfiguration.setEndActionParam('true');\r\n } else {\r\n playerConfiguration.setEndActionType('stop');\r\n playerConfiguration.setEndActionParam('true');\r\n }\r\n };\r\n\r\n var getError = function() {\r\n return _lastError;\r\n };\r\n\r\n var setMuted = function(value) {\r\n playerView.setMuted(String(value).toLowerCase() === 'true');\r\n };\r\n\r\n var getEnvironment = function() {\r\n return _environment;\r\n };\r\n\r\n var setEnvironment = function(value) {\r\n switch (String(value).toLowerCase()) {\r\n case '0':\r\n case 'local':\r\n {\r\n _environment = 0;\r\n break;\r\n }\r\n case '1':\r\n case 'dev':\r\n {\r\n _environment = 1;\r\n break;\r\n }\r\n case '2':\r\n case 'stage':\r\n {\r\n _environment = 2;\r\n break;\r\n }\r\n case '3':\r\n case 'live':\r\n default:\r\n {\r\n _environment = 3;\r\n break;\r\n }\r\n case '4':\r\n case 'te':\r\n case 'test':\r\n {\r\n _environment = 4;\r\n break;\r\n }\r\n }\r\n\r\n // these are the only uses of fathomService and quizService in this file, just to set this config =\\\r\n fathomService.setEnvironment(_environment);\r\n quizService.setEnvironment(_environment);\r\n };\r\n\r\n var getAuthInfo = function() {\r\n return _authInfo;\r\n };\r\n var setAuthInfo = function(value) {\r\n if (typeof value === 'object') {\r\n _authInfo = $.extend(_authInfo, value);\r\n }\r\n };\r\n\r\n var addMediaSrc = function(src) {\r\n playerConfiguration.addMediaSrc(src);\r\n };\r\n\r\n var generalErrorHandler = function(event) {\r\n _lastError = event.data;\r\n };\r\n\r\n var run = function(containerId) {\r\n if (_started) {\r\n return;\r\n }\r\n\r\n deviceInfo.lookAtDevice();\r\n if (deviceInfo.isIOS() && !deviceInfo.getIOSSupportsInlineVideo()) {\r\n if (_authInfo.signInToken && _authInfo.returnUrl) {\r\n playerConfiguration.setAdditionalAppQueryParamsFromJson({sourceurl: encodeURIComponent(playerConfiguration.getMediaSrc()), signintoken: _authInfo.signInToken, returnUrl: encodeURIComponent(_authInfo.returnUrl)});\r\n } else {\r\n playerConfiguration.setAdditionalAppQueryParamsFromJson({sourceurl: encodeURIComponent(playerConfiguration.getMediaSrc())});\r\n }\r\n }\r\n if (_authInfo.accessTokenEndpoint) {\r\n playerConfiguration.setTechSmithAccessTokenEndpoint(_authInfo.accessTokenEndpoint);\r\n }\r\n\r\n playerConfiguration.setDisableFullframeMode(true);\r\n playerConfiguration.setFullViewPort(false);\r\n\r\n mediaPlayer.init('#' + containerId);\r\n\r\n addEventListener('error', generalErrorHandler);\r\n\r\n _started = true;\r\n };\r\n\r\n var destroy = function() {\r\n if (!_started) {\r\n return;\r\n }\r\n var $spElement = mediaPlayer.getSmartPlayerRootElement();\r\n removeEventListener('error', generalErrorHandler);\r\n mediaPlayer.destroy();\r\n\r\n if ($spElement) {\r\n $spElement.remove();\r\n }\r\n\r\n playerConfiguration.clearConfiguration();\r\n\r\n _started = false;\r\n _environment = 'live';\r\n _controls = 'autohide';\r\n _authInfo = {};\r\n _lastError = null;\r\n _pluginController = null;\r\n };\r\n\r\n var setTheme = function(themeName) {\r\n themeController.setTheme(themeName);\r\n };\r\n\r\n var setupPluginController = function() {\r\n _pluginController = PluginController.create();\r\n playerConfiguration.setPluginController(_pluginController);\r\n };\r\n\r\n var registerPlugin = function(pluginName, viewElementType) {\r\n if (!_pluginController) {\r\n setupPluginController();\r\n }\r\n var pluginInitPromise = _pluginController.registerPlugin(pluginName, viewElementType);\r\n mediaPlayer.triggerEvent(events.Plugin.Added);\r\n return pluginInitPromise;\r\n };\r\n\r\n return Object.defineProperties({\r\n play: playerView.play,\r\n pause: playerView.pause,\r\n addEventListener: addEventListener,\r\n removeEventListener: removeEventListener,\r\n addSrc: addMediaSrc,\r\n run: run,\r\n destroy: destroy,\r\n setTheme: setTheme,\r\n registerPlugin: registerPlugin\r\n }, {\r\n autoplay: {\r\n get: playerConfiguration.getAutoPlayMedia,\r\n set: getAutoPlay\r\n },\r\n buffered: {\r\n get: playerView.getBuffered\r\n },\r\n controls: {\r\n get: getControls,\r\n set: setControls\r\n },\r\n disableInteractions: {\r\n get: playerConfiguration.getDisableInteractions,\r\n set: setDisableInteractions\r\n },\r\n currentSrc: {\r\n get: playerView.getCurrentSrc\r\n },\r\n currentTime: {\r\n get: getCurrentTime,\r\n set: playerView.setCurrentTime\r\n },\r\n duration: {\r\n get: playerView.getDuration\r\n },\r\n error: {\r\n get: getError\r\n },\r\n ended: {\r\n get: playerView.getEnded\r\n },\r\n loop: {\r\n get: getLoop,\r\n set: setLoop\r\n },\r\n muted: {\r\n get: playerView.getMuted,\r\n set: setMuted\r\n },\r\n paused: {\r\n get: playerView.getPaused\r\n },\r\n playbackRate: {\r\n get: playerView.getPlaybackRate,\r\n set: playerView.setPlaybackRate\r\n },\r\n played: {\r\n get: playerView.getPlayed\r\n },\r\n preload: {\r\n get: playerConfiguration.getPreload,\r\n set: playerConfiguration.setPreload\r\n },\r\n seekable: {\r\n get: playerView.getSeekable\r\n },\r\n seeking: {\r\n get: playerView.getSeeking\r\n },\r\n volume: {\r\n get: playerView.getVolume,\r\n set: playerView.setVolume\r\n },\r\n src: {\r\n get: playerConfiguration.getMediaSrc,\r\n set: playerConfiguration.setMediaSrc\r\n },\r\n // these are the SP extended interface options\r\n posterSrc: {\r\n get: playerConfiguration.getPosterImageSrc,\r\n set: playerConfiguration.setPosterImageSrc\r\n },\r\n xmpSrc: {\r\n get: playerConfiguration.getXMPSrc,\r\n set: playerConfiguration.setXMPSrc\r\n },\r\n tocSrc: {\r\n get: playerConfiguration.getTOCSpriteSrc,\r\n set: playerConfiguration.setTOCSpriteSrc\r\n },\r\n prerollSrc: {\r\n get: playerConfiguration.getPreRollSrc,\r\n set: playerConfiguration.setPreRollSrc\r\n },\r\n quizId: {\r\n get: playerConfiguration.getFathomId,\r\n set: playerConfiguration.setFathomId\r\n },\r\n background: {\r\n get: playerConfiguration.getBackgroundColor,\r\n set: playerConfiguration.setBackgroundColor\r\n },\r\n captions: {\r\n get: playerView.getCaptionCollection\r\n },\r\n captionTrack: {\r\n get: playerView.getCaptionTrack,\r\n set: playerView.setCaptionTrack\r\n },\r\n captionsVisible: {\r\n get: playerView.getCaptionsVisible,\r\n set: playerView.setCaptionsVisible\r\n },\r\n ignoreStoredCaptionVisible: {\r\n get: playerConfiguration.getIgnoreStoredCaptionVisibleSetting,\r\n set: playerConfiguration.setIgnoreStoredCaptionVisibleSetting\r\n },\r\n rotation: {\r\n get: playerConfiguration.getMediaRotation,\r\n set: playerConfiguration.setMediaRotation\r\n },\r\n scrubbing: {\r\n get: playerView.getScrubbing,\r\n set: playerView.setScrubbing\r\n },\r\n isYouTube: {\r\n get: playerView.getIsYouTube\r\n },\r\n isInFullScreenMode: {\r\n get: playerView.isInFullScreenMode\r\n },\r\n authInfo: {\r\n get: getAuthInfo,\r\n set: setAuthInfo\r\n },\r\n // debug layer flags\r\n environment: {\r\n get: getEnvironment,\r\n set: setEnvironment\r\n },\r\n endActionType: {\r\n get: playerConfiguration.getEndActionType,\r\n set: playerConfiguration.setEndActionType\r\n },\r\n endActionParam: {\r\n get: playerConfiguration.getEndActionParam,\r\n set: playerConfiguration.setEndActionParam\r\n },\r\n ignoreXmpControllerParameters: {\r\n get: playerConfiguration.getIgnoreXmpControllerParameters,\r\n set: playerConfiguration.setIgnoreXmpControllerParameters\r\n },\r\n ignoreQuizQuestions: {\r\n get: playerConfiguration.getIgnoreQuizQuestions,\r\n set: playerConfiguration.setIgnoreQuizQuestions\r\n },\r\n singleClickControlEnabled: {\r\n get: playerConfiguration.getEnableSingleClickControl,\r\n set: playerConfiguration.setEnableSingleClickControl\r\n },\r\n doubleClickControlEnabled: {\r\n get: playerConfiguration.getEnableDoubleClickControl,\r\n set: playerConfiguration.setEnableDoubleClickControl\r\n },\r\n useLargerProgressBar: {\r\n get: playerConfiguration.getUseLargerProgressBar,\r\n set: playerConfiguration.setUseLargerProgressBar\r\n },\r\n displayHotspotsShape: {\r\n get: playerConfiguration.getDisplayHotspotsShape,\r\n set: playerConfiguration.setDisplayHotspotsShape\r\n },\r\n disablePictureInPicture: {\r\n get: playerConfiguration.getDisablePictureInPicture,\r\n set: playerConfiguration.setDisablePictureInPicture\r\n },\r\n audioDescriptionMediaSrc: {\r\n get: playerConfiguration.getAudioDescriptionMediaSrc,\r\n set: playerConfiguration.setAudioDescriptionMediaSrc\r\n }\r\n });\r\n});\r\n"]}