diff --git a/examples/AQuizmaker SCORM12/adlcp_rootv1p2.xsd b/examples/AQuizmaker SCORM12/adlcp_rootv1p2.xsd deleted file mode 100755 index f33b38d..0000000 --- a/examples/AQuizmaker SCORM12/adlcp_rootv1p2.xsd +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/AQuizmaker SCORM12/ims_xml.xsd b/examples/AQuizmaker SCORM12/ims_xml.xsd deleted file mode 100755 index 8d45b0c..0000000 --- a/examples/AQuizmaker SCORM12/ims_xml.xsd +++ /dev/null @@ -1 +0,0 @@ - In namespace-aware XML processors, the "xml" prefix is bound to the namespace name http://www.w3.org/XML/1998/namespace. Do not reference this file in XML instances Schawn Thropp: Changed the uriReference type to string type Refers to universal XML 1.0 lang attribute Refers to XML Base: http://www.w3.org/TR/xmlbase \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/imscp_rootv1p1p2.xsd b/examples/AQuizmaker SCORM12/imscp_rootv1p1p2.xsd deleted file mode 100755 index f8bc522..0000000 --- a/examples/AQuizmaker SCORM12/imscp_rootv1p1p2.xsd +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - - - - - - - - - DRAFT XSD for IMS Content Packaging version 1.1 DRAFT - Copyright (c) 2001 IMS GLC, Inc. - 2000-04-21, Adjustments by T.D. Wason from CP 1.0. - 2001-02-22, T.D.Wason: Modify for 2000-10-24 XML-Schema version. Modified to support extension. - 2001-03-12, T.D.Wason: Change filename, target and meta-data namespaces and meta-data fielname. Add meta-data to itemType, fileType and organizationType. - Do not define namespaces for xml in XML instances generated from this xsd. - Imports IMS meta-data xsd, lower case element names. - This XSD provides a reference to the IMS meta-data root element as imsmd:record - If the IMS meta-data is to be used in the XML instance then the instance must define an IMS meta-data prefix with a namespace. The meta-data targetNamespace should be used. - 2001-03-20, Thor Anderson: Remove manifestref, change resourceref back to identifierref, change manifest back to contained by manifest. --Tom Wason: manifest may contain _none_ or more manifests. - 2001-04-13 Tom Wason: corrected attirbute name structure. Was misnamed type. - 2001-05-14 Schawn Thropp: Made all complexType extensible with the group.any - Added the anyAttribute to all complexTypes. Changed the href attribute on the fileType and resourceType to xsd:string - Changed the maxLength of the href, identifierref, parameters, structure attributes to match the Information model. - 2001-07-25 Schawn Thropp: Changed the namespace for the Schema of Schemas to the 5/2/2001 W3C XML Schema - Recommendation. attributeGroup attr.imsmd deleted, was not used anywhere. Any attribute declarations that have - use = "default" changed to use="optional" - attr.structure.req. - Any attribute declarations that have value="somevalue" changed to default="somevalue", - attr.structure.req (hierarchical). Removed references to IMS MD Version 1.1. - Modified attribute group "attr.resourcetype.req" to change use from optional - to required to match the information model. As a result the default value also needed to be removed - Name change for XSD. Changed to match version of CP Spec - - - - Inclusions and Imports - - - - - - Attribute Declarations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - element groups - - - - - Any namespaced element from any namespace may be included within an "any" element. The namespace for the imported element must be defined in the instance, and the schema must be imported. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/AQuizmaker SCORM12/imsmanifest.xml b/examples/AQuizmaker SCORM12/imsmanifest.xml deleted file mode 100755 index b9e0c3b..0000000 --- a/examples/AQuizmaker SCORM12/imsmanifest.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - ADL SCORM - 1.2 - - - - <langstring xml:lang="x-none">QuizRedesTorreTCPIP</langstring> - - - Quiz sobre protocolos y la torre TCP/IP - - - - - 1 - - - - LOMv1.0 - - - Final - - - - - ADL SCORM 1.2 - - - - PT0H0M0S - - - - - - LOMv1.0 - - - yes - - - - - LOMv1.0 - - - yes - - - - - - - - QuizRedesTorreTCPIP - - QuizRedesTorreTCPIP - 80 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/imsmd_rootv1p2p1.xsd b/examples/AQuizmaker SCORM12/imsmd_rootv1p2p1.xsd deleted file mode 100755 index d8a7869..0000000 --- a/examples/AQuizmaker SCORM12/imsmd_rootv1p2p1.xsd +++ /dev/null @@ -1,573 +0,0 @@ - - - - - - - - - - - 2001-04-26 T.D.Wason. IMS meta-data 1.2 XML-Schema. - 2001-06-07 S.E.Thropp. Changed the multiplicity on all elements to match the - Final 1.2 Binding Specification. - Changed all elements that use the langstringType to a multiplicy of 1 or more - Changed centity in the contribute element to have a multiplicity of 0 or more. - Changed the requirement element to have a multiplicity of 0 or more. - 2001-07-25 Schawn Thropp. Updates to bring the XSD up to speed with the W3C - XML Schema Recommendation. The following changes were made: Change the - namespace to reference the 5/2/2001 W3C XML Schema Recommendation,the base - type for the durtimeType, simpleType, was changed from timeDuration to duration. - Any attribute declarations that have use="default" had to change to use="optional" - - attr.type. Any attribute declarations that have value ="somevalue" had to change - to default = "somevalue" - attr.type (URI) - 2001-09-04 Schawn Thropp - Changed the targetNamespace and namespace of schema to reflect version change - - - - - - - - - - - - - - - - - - - - Any namespaced element from any namespace may be used for an "any" element. The namespace for the imported element must be defined in the instance, and the schema must be imported. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/AQuizmaker SCORM12/index_lms.html b/examples/AQuizmaker SCORM12/index_lms.html deleted file mode 100755 index e7a20db..0000000 --- a/examples/AQuizmaker SCORM12/index_lms.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - QuizRedesTorreTCPIP - - - - - - - - - - - - - - - - - - - - - - - Your browser must be able to view frames for this content to display. - - diff --git a/examples/AQuizmaker SCORM12/index_lms_html5.html b/examples/AQuizmaker SCORM12/index_lms_html5.html deleted file mode 100755 index a31745d..0000000 --- a/examples/AQuizmaker SCORM12/index_lms_html5.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
- -
- -
-
- - -
-
-
-
- -
- -
-
-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/lms/AICCComm.html b/examples/AQuizmaker SCORM12/lms/AICCComm.html deleted file mode 100755 index 2eb6c0d..0000000 --- a/examples/AQuizmaker SCORM12/lms/AICCComm.html +++ /dev/null @@ -1,765 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/lms/AICCFunctions.js b/examples/AQuizmaker SCORM12/lms/AICCFunctions.js deleted file mode 100755 index 96ccb98..0000000 --- a/examples/AQuizmaker SCORM12/lms/AICCFunctions.js +++ /dev/null @@ -1,2775 +0,0 @@ - -var blnDirtyAICCData = false; -var blnCommitSavedData = false; - -var intAICCErrorNum = NO_ERROR; -var strAICCErrorDesc = ""; - -var aryAICCFoundItems = new Array(); //stores a list of data elements that have been found in a AICC GetParam result - -var blnUseLongInteractionResultValues = true; //we start off trying to submit verbose descriptions of interaction results, if this errors, we revert back to strict conformance - -var blnReviewModeSoReadOnly = false; - -//these variables come from and can go stright to the LMS -var AICC_LMS_Version = ""; -var AICC_Student_ID = ""; -var AICC_Student_Name = ""; -var AICC_Lesson_Location = ""; -var AICC_Score = ""; -var AICC_Credit = ""; -var AICC_Lesson_Status = ""; -var AICC_Time = ""; -var AICC_Mastery_Score = ""; -var AICC_Lesson_Mode = ""; -var AICC_Max_Time_Allowed = ""; -var AICC_Time_Limit_Action = ""; -var AICC_Audio = ""; -var AICC_Speed = ""; -var AICC_Language = ""; -var AICC_Text = ""; -var AICC_Launch_Data = ""; -var AICC_Data_Chunk = ""; -var AICC_Comments = ""; -var AICC_Objectives = null; -var AICC_CourseID = ""; - -//these variables are more logical representations of the above variables -var AICC_fltScoreRaw = ""; -var AICC_fltScoreMax = ""; -var AICC_fltScoreMin = ""; -var AICC_blnCredit = true; -var AICC_strLessonMode = MODE_NORMAL; -var AICC_intPreviouslyAccumulatedMilliseconds = 0; -var AICC_intMaxTimeAllowedMilliseconds = MAX_CMI_TIME; -var AICC_blnExitOnTimeout = false; -var AICC_blnShowMessageOnTimeout = true; -var AICC_TextPreference = PREFERENCE_DEFAULT; -var AICC_Status = LESSON_STATUS_NOT_ATTEMPTED; -var AICC_Entry = AICC_ENTRY_FLAG_DEFAULT; //must be the default b/c absense of entry flag indicates "review" -var AICC_AudioPlayPreference = PREFERENCE_DEFAULT; -var AICC_intAudioVolume = 100; -var AICC_intPercentOfMaxSpeed = 100; -var AICC_intSessionTimeMilliseconds = 0; -var AICC_aryObjectivesRead = new Array(); //objectives reported from LMS, read results from here, also store copy of currently set objectives here -var AICC_aryObjectivesWrite = new Array(); //objectives altered during this session (that is all we're supposed to report to AICC LMS) -var AICC_aryCommentsFromLearner = new Array(); -var AICC_aryInteractions = new Array(); - -//constants to define the meaning of the positions in the arrays to store objective information -//these arrays contain a top level array index by the obj index, these positions contain subarrays with these indicies -var AICC_OBJ_ARRAY_ID = 0; -var AICC_OBJ_ARRAY_SCORE = 1; -var AICC_OBJ_ARRAY_STATUS = 2; - -//constants to define the meaning of the positions in the arrays to store interaction information -var AICC_INTERACTIONS_ID = 0; -var AICC_INTERACTIONS_RESPONSE = 1; -var AICC_INTERACTIONS_CORRECT = 2; -var AICC_INTERACTIONS_CORRECT_RESPONSE = 3; -var AICC_INTERACTIONS_TIME_STAMP = 4; -var AICC_INTERACTIONS_TYPE = 5; -var AICC_INTERACTIONS_WEIGHTING = 6; -var AICC_INTERACTIONS_LATENCY = 7; -var AICC_INTERACTIONS_RESPONSE_LONG = 8; -var AICC_INTERACTIONS_CORRECT_RESPONSE_LONG = 9; - -var AICC_INTERACTION_TYPE_TRUE_FALSE = "T"; -var AICC_INTERACTION_TYPE_CHOICE = "C"; -var AICC_INTERACTION_TYPE_FILL_IN = "F"; -var AICC_INTERACTION_TYPE_MATCHING = "M"; -var AICC_INTERACTION_TYPE_PERFORMANCE = "P"; -var AICC_INTERACTION_TYPE_SEQUENCING = "S"; -var AICC_INTERACTION_TYPE_LIKERT = "L"; -var AICC_INTERACTION_TYPE_NUMERIC = "N"; - -var AICC_RESULT_CORRECT = "C"; -var AICC_RESULT_WRONG = "W"; -var AICC_RESULT_UNANTICIPATED = "U"; -var AICC_RESULT_NEUTRAL = "N"; - - -//error constants -var AICC_NO_ERROR = "0"; -var AICC_ERROR_INVALID_PREFERENCE = "-1"; -var AICC_ERROR_INVALID_STATUS = "-2"; -var AICC_ERROR_INVALID_SPEED = "-3"; -var AICC_ERROR_INVALID_TIMESPAN = "-4"; -var AICC_ERROR_INVALID_TIME_LIMIT_ACTION = "-5"; -var AICC_ERROR_INVALID_DECIMAL = "-6"; -var AICC_ERROR_INVALID_CREDIT = "-7"; -var AICC_ERROR_INVALID_LESSON_MODE = "-8"; -var AICC_ERROR_INVALID_ENTRY = "-9"; - -var blnReviewModeSoReadOnly = false; - -function AICC_Initialize(){ - - WriteToDebug("In AICC_Initialize"); - - //make getparam request, this will parse the data into local variables then begin loading the content - - window.AICCComm.MakeGetParamRequest(); - - return; -} - - -function AICC_Finish(strExitType, blnStatusWasSet){ - - WriteToDebug("In AICC_Finish, strExitType=" + strExitType + ", blnStatusWasSet=" + blnStatusWasSet); - - if (! blnStatusWasSet){ - if ( (strExitType == EXIT_TYPE_FINISH)){ - - WriteToDebug("Setting status to complete"); - - AICC_Status = LESSON_STATUS_COMPLETED; - } - else{ - WriteToDebug("Setting status to incomplete"); - - AICC_Status = LESSON_STATUS_INCOMPLETE; - } - } - - //Commit Data - AICC_CommitData(); - - //only kill time if we actually saved some data - if (blnCommitSavedData == true){ - KillTime(); - } - - //Make ExitAU Request - window.AICCComm.MakeExitAURequest(); - - return true; -} - - -function AICC_CommitData(){ - - var strAICCData; - - WriteToDebug("In AICC_CommitData"); - - if (blnReviewModeSoReadOnly === true){ - WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting."); - return true; - } - - //if there is data to save, make a putparam request - blnCommitSavedData = false; - if (IsThereDirtyAICCData()){ - - blnCommitSavedData = true; - - WriteToDebug("Found Dirty Data"); - - strAICCData = FormAICCPostData(); - - window.AICCComm.MakePutParamRequest(strAICCData); - - //if there is no course id, then the LMS doesn't support interactions - //MR - 5/24/05 - removed the course id check to allow aicc courses to be imported into an LMS without using the descriptor files - //also, Saba doesn't send the Course Id field even when imported with the descriptor files - if ( /*AICC_CourseID != "" && */ AICC_aryInteractions.length > 0){ - - WriteToDebug("Saving Interactions"); - - //strAICCData = FormAICCInteractionsData(); - //window.AICCComm.MakePutInteractionsRequest(strAICCData); - - //MR - 5/31/05 - Saba won't always accept two request if they come immediately after one another. Introduce an artifical delay between - //requests to ensure that they both get processed. - //window.setTimeout("AICC_SendInteractions()", 250); - - //MR - 12/14/05 - Replaced setTimeout call to properly handle this being invoked onunload - KillTime(); - AICC_SendInteractions(); - } - - ClearDirtyAICCData(); //if the PutParam request fails, the data will be set back to dirty via a call to AICC_PutParamFailed() - - } - - return true; -} - - -function KillTime(){ - /* - This function is necessary to space out the requests made by normal form posts - in a cross domain environment. If two requests are sent too close together, on some - server platforms, the first request will be ignored. We can't use a setTimout call - because there are situations where this wait needs to happen in the onunload event. - - First try to make requests for a file (on the content server) using the XmlHttp object. - If that is not available try an alternate method. - - We are using a document.write as the spaced because it is an expensive operation and - we have seen several instances where it provides enough spacing (when used to write to - the debug window) to seperate the requests. - */ - - WriteToDebug("In KillTime"); - - if (USE_AICC_KILL_TIME === false){ - WriteToDebug("Configuration disallows use of KillTime, exiting"); - return; - } - - var start = new Date(); - - if (window.AICCComm.blnCanUseXMLHTTP == false){ - - if (window.AICCComm.blnXMLHTTPIsAvailable == true){ - - var numBlankRequests = 3; - - for (var i=0; i < numBlankRequests; i++){ - window.AICCComm.GetBlankHtmlPage(i); - } - } - else{ - - window.NothingFrame.document.open(); - - var numLoops = 1000; - - for (var i=0; i < numLoops; i++){ - window.NothingFrame.document.write("waiting"); - } - - window.NothingFrame.document.close(); - } - - } - - var end = new Date(); - - WriteToDebug("Killed " + (end - start) + "milliseconds."); - -} - - -function AICC_SendInteractions(){ - - WriteToDebug("In AICC_SendInteractions."); - - if (blnReviewModeSoReadOnly === true){ - WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting."); - return true; - } - - var strAICCData = FormAICCInteractionsData(); - window.AICCComm.MakePutInteractionsRequest(strAICCData); -} - -function AICC_GetStudentID(){ - WriteToDebug("In AICC_GetStudentID, Returning " + AICC_Student_ID); - - return AICC_Student_ID ; -} - -function AICC_GetStudentName(){ - WriteToDebug("In AICC_GetStudentName, Returning " + AICC_Student_Name); - - return AICC_Student_Name; -} - -function AICC_GetBookmark(){ - WriteToDebug("In AICC_GetBookmark, Returning " + AICC_Lesson_Location); - - return AICC_Lesson_Location; -} - -function AICC_SetBookmark(strBookmark){ - WriteToDebug("In AICC_SetBookmark, strBookmark=" + strBookmark); - - SetDirtyAICCData(); - - AICC_Lesson_Location = strBookmark; - - return true; -} - -function AICC_GetDataChunk(){ - WriteToDebug("In AICC_GetDataChunk, Returning " + AICC_Data_Chunk); - return AICC_Data_Chunk ; -} - -function AICC_SetDataChunk(strData){ - //need to check for character limits here 4096 characters - WriteToDebug("In AICC_SetDataChunk, strData=" + strData ); - SetDirtyAICCData(); - AICC_Data_Chunk = strData; - return true; -} - - -function AICC_GetLaunchData(){ - WriteToDebug("In AICC_GetLaunchData, Returning " + AICC_Launch_Data ); - - return AICC_Launch_Data ; -} - -function AICC_GetComments(){ - WriteToDebug("In AICC_GetComments, Returning " + AICC_aryCommentsFromLearner.join(" | ")); - - //not available in AICC - return cached comments from this session - return AICC_aryCommentsFromLearner.join(" | "); -} - -function AICC_WriteComment(strComment){ - WriteToDebug("In AICC_WriteComment, strComment=" + strComment); - - var intNextIndex; - - //remove the "|" since AICC has its own delimiters - if (strComment.search(/ \| /) == 0){ - strComment = strComment.substr(3); - } - - //remove encoding of "|" - strComment.replace(/\|\|/g, "|") - - //add the comment to an array of comments - intNextIndex = AICC_aryCommentsFromLearner.length; - - WriteToDebug("Adding comment to array"); - - AICC_aryCommentsFromLearner[intNextIndex] = strComment; - - SetDirtyAICCData(); - - return true; -} - -function AICC_GetLMSComments(){ - WriteToDebug("In AICC_GetLMSComments, Returning " + AICC_Comments ); - - return AICC_Comments; -} - - -function AICC_GetAudioPlayPreference(){ - WriteToDebug("In AICC_GetAudioPlayPreference, Returning " + AICC_AudioPlayPreference); - - return AICC_AudioPlayPreference; -} - - - -function AICC_GetAudioVolumePreference(){ - WriteToDebug("In AICC_GetAudioVolumePreference, Returning " + AICC_intAudioVolume); - - return AICC_intAudioVolume; -} - - -function AICC_SetAudioPreference(PlayPreference, intPercentOfMaxVolume){ - WriteToDebug("In AICC_SetAudioPreference, Returning true"); - - AICC_AudioPlayPreference = PlayPreference; - AICC_intAudioVolume = intPercentOfMaxVolume; - - SetDirtyAICCData(); - return true; -} - - - - -function AICC_SetLanguagePreference(strLanguage){ - WriteToDebug("In AICC_SetLanguagePreference, Returning true"); - - SetDirtyAICCData(); - - AICC_Language = strLanguage; - - return true; -} - - -function AICC_GetLanguagePreference(){ - WriteToDebug("In AICC_GetLanguagePreference, Returning " + AICC_Language); - - return AICC_Language; -} - - -function AICC_SetSpeedPreference(intPercentOfMax){ - WriteToDebug("In AICC_SetSpeedPreference, Returning true"); - - AICC_intPercentOfMaxSpeed = intPercentOfMax; - - SetDirtyAICCData(); - - return true; -} - - -function AICC_GetSpeedPreference(){ - WriteToDebug("In AICC_GetSpeedPreference, Returning " + AICC_intPercentOfMaxSpeed); - - return AICC_intPercentOfMaxSpeed; -} - -function AICC_SetTextPreference(intPreference){ - WriteToDebug("In AICC_SetTextPreference, Returning true"); - - AICC_TextPreference = intPreference; - - SetDirtyAICCData(); - - return true; -} - - -function AICC_GetTextPreference(){ - WriteToDebug("In AICC_GetTextPreference, Returning " + AICC_TextPreference); - - return AICC_TextPreference; -} - -function AICC_GetPreviouslyAccumulatedTime(){ - WriteToDebug("In AICC_GetPreviouslyAccumulatedTime, Returning " + AICC_intPreviouslyAccumulatedMilliseconds); - - return AICC_intPreviouslyAccumulatedMilliseconds; -} - - -function AICC_SaveTime(intMilliSeconds){ - WriteToDebug("In intMilliSeconds, Returning true"); - - AICC_intSessionTimeMilliseconds = intMilliSeconds; - - SetDirtyAICCData(); - - return true; -} - -function AICC_GetMaxTimeAllowed(){ - WriteToDebug("In AICC_GetMaxTimeAllowed, Returning " + AICC_intMaxTimeAllowedMilliseconds); - - return AICC_intMaxTimeAllowedMilliseconds; -} - - - -function AICC_DisplayMessageOnTimeout(){ - WriteToDebug("In AICC_DisplayMessageOnTimeout, Returning " + AICC_blnShowMessageOnTimeout); - - return AICC_blnShowMessageOnTimeout; -} - -function AICC_ExitOnTimeout(){ - WriteToDebug("In AICC_ExitOnTimeout, Returning " + AICC_blnExitOnTimeout); - - return AICC_blnExitOnTimeout; -} - - -function AICC_GetPassingScore(){ - WriteToDebug("In AICC_GetPassingScore, Returning " + AICC_Mastery_Score); - - return AICC_Mastery_Score; - -} - - - -function AICC_GetScore(){ - WriteToDebug("In AICC_GetScore, Returning " + AICC_fltScoreRaw); - - return AICC_fltScoreRaw; -} - -function AICC_SetScore(fltScore, fltMaxScore, fltMinScore){ - WriteToDebug("In AICC_SetScore, fltScore=" + fltScore + ", fltMaxScore=" + fltMaxScore + ", fltMinScore=" + fltMinScore); - - AICC_fltScoreRaw = fltScore; - AICC_fltScoreMax = fltMaxScore; - AICC_fltScoreMin = fltMinScore; - - SetDirtyAICCData(); - - return true; -} - - -function AICC_RecordTrueFalseInteraction(strID, blnResponse, blnCorrect, blnCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordTrueFalseInteraction strID=" + strID + ", blnResponse=" + blnResponse + - ", blnCorrect=" + blnCorrect + ", blnCorrectResponse=" + blnCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - - var strResponse = ""; - var strCorrectResponse = ""; - - if (blnResponse){ - strResponse = "t"; - } - else{ - strResponse = "f"; - } - - if (blnCorrectResponse == true){ - strCorrectResponse = "t"; - } - else if(blnCorrectResponse == false){ //test for false b/c it could be null in which case we want to leave it as "" - strCorrectResponse = "f"; - } - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_TRUE_FALSE; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponse; - - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordMultipleChoiceInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordMultipleChoiceInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Short.replace(",", ""); - strResponseLong += aryResponse[i].Long.replace(",", ""); - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - strCorrectResponse += aryCorrectResponse[i].Short.replace(",", ""); - strCorrectResponseLong += aryCorrectResponse[i].Long.replace(",", ""); - } - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_CHOICE; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponseLong; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponseLong; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordFillInInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordFillInInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - if (strCorrectResponse == null || strCorrectResponse == undefined){strCorrectResponse="";} - - strResponse = new String(strResponse); - if (strResponse.length > 255) {strResponse = strResponse.substr(0, 255);} - - strCorrectResponse = new String(strCorrectResponse); - if (strCorrectResponse.length > 255) {strCorrectResponse = strCorrectResponse.substr(0, 255);} - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_FILL_IN; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponse; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordMatchingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordMatchingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Source.Short.replace(",", "").replace(".", "") + "." + aryResponse[i].Target.Short.replace(",", "").replace(".", ""); - strResponseLong += aryResponse[i].Source.Long.replace(",", "").replace(".", "") + "." + aryResponse[i].Target.Long.replace(",", "").replace(".", ""); - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - if (aryCorrectResponse[i].Source.Short != "" && aryCorrectResponse[i].Source.Long != ""){ - strCorrectResponse += aryCorrectResponse[i].Source.Short.replace(",", "").replace(".", "") + "." + aryCorrectResponse[i].Target.Short.replace(",", "").replace(".", ""); - strCorrectResponseLong += aryCorrectResponse[i].Source.Long.replace(",", "").replace(".", "") + "." + aryCorrectResponse[i].Target.Long.replace(",", "").replace(".", ""); - } - } - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_MATCHING; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponseLong; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponseLong; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordPerformanceInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordPerformanceInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - if (strCorrectResponse == null || strCorrectResponse == undefined){strCorrectResponse="";} - - strResponse = new String(strResponse); - if (strResponse.length > 255) {strResponse = strResponse.substr(0, 255);} - - strCorrectResponse = new String(strCorrectResponse); - if (strCorrectResponse.length > 255) {strCorrectResponse = strCorrectResponse.substr(0, 255);} - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_PERFORMANCE; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponse; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordSequencingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordSequencingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Short.replace(",", ""); - strResponseLong += aryResponse[i].Long.replace(",", ""); - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - strCorrectResponse += aryCorrectResponse[i].Short.replace(",", ""); - strCorrectResponseLong += aryCorrectResponse[i].Long.replace(",", ""); - } - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_SEQUENCING; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponseLong; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponseLong; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordLikertInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In RecordLikertInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - - var strResponse = response.Short; - var strResponseLong = response.Long; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - if (correctResponse != null){ - strCorrectResponse = correctResponse.Short; - strCorrectResponseLong = correctResponse.Long; - } - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_LIKERT; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponseLong; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponseLong; - - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_RecordNumericInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In AICC_RecordNumericInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var intTotalInteractions; - var aryData = new Array(10); - - intTotalInteractions = AICC_aryInteractions.length; - - if (intWeighting == null || intWeighting == undefined ){intWeighting="";} - if (intLatency == null || intLatency == undefined){intLatency="";} - if (blnCorrect == null || blnCorrect == undefined){blnCorrect="";} - if (strCorrectResponse == null || strCorrectResponse == undefined){strCorrectResponse="";} - - aryData[AICC_INTERACTIONS_ID] = strID; - aryData[AICC_INTERACTIONS_RESPONSE] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT] = blnCorrect; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE] = strCorrectResponse; - aryData[AICC_INTERACTIONS_TIME_STAMP] = dtmTime; - aryData[AICC_INTERACTIONS_TYPE] = AICC_INTERACTION_TYPE_NUMERIC; - aryData[AICC_INTERACTIONS_WEIGHTING] = intWeighting; - aryData[AICC_INTERACTIONS_LATENCY] = intLatency; - aryData[AICC_INTERACTIONS_RESPONSE_LONG] = strResponse; - aryData[AICC_INTERACTIONS_CORRECT_RESPONSE_LONG]= strCorrectResponse; - - //in AICC ignore the description field since there is nothing we can do with it - //in AICC, don't try to set the interaction objective because these need to specified in the descriptor files - - AICC_aryInteractions[intTotalInteractions] = aryData; - - WriteToDebug("Added to interactions array, index=" + intTotalInteractions); - - SetDirtyAICCData(); - return true; -} - -function AICC_GetEntryMode(){ - WriteToDebug("In AICC_GetEntryMode, Returning " + AICC_Entry); - - return AICC_Entry; -} - -function AICC_GetLessonMode(){ - WriteToDebug("In AICC_GetLessonMode, Returning " + AICC_strLessonMode); - - return AICC_strLessonMode; -} - -function AICC_GetTakingForCredit(){ - WriteToDebug("In AICC_GetTakingForCredit, Returning " + AICC_blnCredit); - - return AICC_blnCredit; -} - - - -function AICC_SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore){ - - WriteToDebug("In AICC_SetObjectiveScore, strObjectiveID=" + strObjectiveID + ", intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - var intNextID; - var intObjIndex; - var strAICCScore = ""; - - intObjIndex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesRead); - - if (intObjIndex != null){ - WriteToDebug("Found read objective"); - AICC_aryObjectivesRead[intObjIndex][AICC_OBJ_ARRAY_SCORE] = intScore; - } - else{ - WriteToDebug("Adding new read objective"); - - intNextID = AICC_aryObjectivesRead.length; - - AICC_aryObjectivesRead[parseInt(intNextID, 10)] = new Array(3); - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_ID] = strObjectiveID; - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_SCORE] = intScore; - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_STATUS] = ""; - } - - - intObjIndex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesWrite); - - if (intObjIndex != null){ - WriteToDebug("Found write objective"); - AICC_aryObjectivesWrite[intObjIndex][AICC_OBJ_ARRAY_SCORE] = intScore; - } - else{ - WriteToDebug("Adding new write objective"); - - intNextID = AICC_aryObjectivesWrite.length; - - AICC_aryObjectivesWrite[parseInt(intNextID, 10)] = new Array(3); - - strAICCScore = intScore; - - //prior to version 3, AICC scores cannot contain a decimal - if (AICC_LMS_Version < 3 && strAICCScore != ""){ - strAICCScore = parseInt(strAICCScore, 10); - } - - if ( (AICC_REPORT_MIN_MAX_SCORE === undefined || - AICC_REPORT_MIN_MAX_SCORE === null || - AICC_REPORT_MIN_MAX_SCORE === true) && - (AICC_LMS_Version >= 3 ) //min and max scores are only allowed after version 3 - ){ - - if ((intMaxScore != "") || (intMinScore != "")) { - WriteToDebug("Appending Max and Min scores"); - strAICCScore += "," + intMaxScore + "," + intMinScore; - } - - } - - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_ID] = strObjectiveID; - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_SCORE] = strAICCScore; - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_STATUS] = ""; - } - - SetDirtyAICCData(); - - return true; -} - - -function AICC_SetObjectiveStatus(strObjectiveID, Lesson_Status){ - - WriteToDebug("In AICC_SetObjectiveStatus, strObjectiveID=" + strObjectiveID + ", Lesson_Status=" + Lesson_Status); - - var intNextID; - var intObjIdex; - - intObjIdex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesRead); - - if (intObjIdex != null){ - WriteToDebug("Found read objective"); - AICC_aryObjectivesRead[intObjIdex][AICC_OBJ_ARRAY_STATUS] = Lesson_Status; - } - else{ - WriteToDebug("Adding new read objective"); - intNextID = AICC_aryObjectivesRead.length; - - AICC_aryObjectivesRead[parseInt(intNextID, 10)] = new Array(3); - - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_ID] = strObjectiveID; - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_STATUS] = Lesson_Status; - AICC_aryObjectivesRead[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_SCORE] = ""; - } - - - intObjIdex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesWrite); - - if (intObjIdex != null){ - WriteToDebug("Found write objective"); - AICC_aryObjectivesWrite[intObjIdex][AICC_OBJ_ARRAY_STATUS] = Lesson_Status; - } - else{ - WriteToDebug("Adding new write objective"); - intNextID = AICC_aryObjectivesWrite.length; - - AICC_aryObjectivesWrite[parseInt(intNextID, 10)] = new Array(3); - - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_ID] = strObjectiveID; - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_STATUS] = Lesson_Status; - AICC_aryObjectivesWrite[parseInt(intNextID, 10)][AICC_OBJ_ARRAY_SCORE] = ""; - } - - SetDirtyAICCData(); - - return true; -} - - -function AICC_SetObjectiveDescription(strObjectiveID, strObjectiveDescription){ - - WriteToDebug("In AICC_SetObjectiveDescription, strObjectiveID=" + strObjectiveID + ", strObjectiveDescription=" + strObjectiveDescription); - WriteToDebug("Objective descriptions are not supported prior to SCORM 2004"); - - return true; - -} - - -function AICC_GetObjectiveScore(strObjectiveID){ - WriteToDebug("In AICC_SetObjectiveScore, strObjectiveID=" + strObjectiveID); - - var intObjIndex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesRead) - - if (intObjIndex != null){ - WriteToDebug("Found objective, returning " + AICC_aryObjectivesRead[intObjIndex][AICC_OBJ_ARRAY_SCORE]); - return AICC_aryObjectivesRead[intObjIndex][AICC_OBJ_ARRAY_SCORE]; - } - else{ - WriteToDebug("Did not find objective, returning ''"); - return ""; - } -} - -function AICC_GetObjectiveDescription(strObjectiveID){ - WriteToDebug("In AICC_GetObjectiveDescription, strObjectiveID=" + strObjectiveID); - WriteToDebug("Objective descriptions are not supported prior to SCORM 2004"); - - return ""; -} - -function AICC_GetObjectiveStatus(strObjectiveID){ - - WriteToDebug("In AICC_SetObjectiveStatus, strObjectiveID=" + strObjectiveID); - - var intObjIndex = FindObjectiveById(strObjectiveID, AICC_aryObjectivesRead) - - if (intObjIndex != null){ - WriteToDebug("Found objective, returning " + AICC_aryObjectivesRead[intObjIndex][AICC_OBJ_ARRAY_STATUS]); - return AICC_aryObjectivesRead[intObjIndex][AICC_OBJ_ARRAY_STATUS]; - } - else{ - WriteToDebug("Did not find objective, returning " + LESSON_STATUS_NOT_ATTEMPTED); - return LESSON_STATUS_NOT_ATTEMPTED; - } -} - -function AICC_SetFailed(){ - WriteToDebug("In AICC_SetFailed, Returning true"); - - AICC_Status = LESSON_STATUS_FAILED; - - SetDirtyAICCData(); - - return true; -} - -function AICC_SetPassed(){ - WriteToDebug("In AICC_SetPassed, Returning true"); - - AICC_Status = LESSON_STATUS_PASSED; - - SetDirtyAICCData(); - - return true; -} - -function AICC_SetCompleted(){ - WriteToDebug("In AICC_SetCompleted, Returning true"); - - AICC_Status = LESSON_STATUS_COMPLETED; - - SetDirtyAICCData(); - - return true; -} - -function AICC_ResetStatus(){ - WriteToDebug("In AICC_ResetStatus, Returning true"); - - AICC_Status = LESSON_STATUS_INCOMPLETE; - - SetDirtyAICCData(); - - return true; -} - -function AICC_GetStatus(){ - WriteToDebug("In AICC_GetStatus, Returning " + AICC_Status); - - return AICC_Status; -} - -//public -function AICC_GetProgressMeasure(){ - WriteToDebug("AICC_GetProgressMeasure - AICC does not support progress_measure, returning false"); - return false; -} -//public -function AICC_SetProgressMeasure(){ - WriteToDebug("AICC_SetProgressMeasure - AICC does not support progress_measure, returning false"); - return false; -} - -//public -function AICC_GetObjectiveProgressMeasure(){ - WriteToDebug("AICC_GetObjectiveProgressMeasure - AICC does not support progress_measure, returning false"); - return false; -} -//public -function AICC_SetObjectiveProgressMeasure(){ - WriteToDebug("AICC_SetObjectiveProgressMeasure - AICC does not support progress_measure, returning false"); - return false; -} - -function AICC_SetPointBasedScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("AICC_SetPointBasedScore - AICC does not support SetPointBasedScore, returning false"); - return false; -} - -function AICC_GetScaledScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("AICC_GetScaledScore - AICC does not support GetScaledScore, returning false"); - return false; -} - -function AICC_GetLastError(){ - WriteToDebug("In AICC_GetLastError, Returning " + intAICCErrorNum); - - return intAICCErrorNum; -} - -function AICC_GetLastErrorDesc(){ - WriteToDebug("In AICC_GetLastErrorDesc, Returning '" + strAICCErrorDesc + "'"); - - return strAICCErrorDesc; -} - - - -//============================================================================== - - -function AICC_PutParamFailed(){ - WriteToDebug("ERROR: In AICC_PutParamFailed"); - - //set dirty data - SetDirtyAICCData(); - - //currently, just leaves the data as dirty, could also re-try or display an error as desired - - return; -} - -function AICC_PutInteractionsFailed(){ - WriteToDebug("ERROR: In AICC_PutInteractionsFailed"); - - //set dirty data - SetDirtyAICCData(); - - //the LMS probably only accepts strictly conformant interaction result values, so retry one more time - //with the short values which will be used from now on - - //this call originates from the child frame so be sure to reference the parent - if (parent.blnUseLongInteractionResultValues == true){ - - parent.blnUseLongInteractionResultValues = false; - - parent.AICC_CommitData(); - } - - return; -} - -function AICC_SetErrorInfo(strErrorNumLine, strErrorDescLine){ - WriteToDebug("ERROR: In AICC_SetErrorInfo, strErrorNumLine=" + strErrorNumLine + ", strErrorDescLine=" + strErrorDescLine); - - if (strErrorNumLine.toLowerCase().search(/error\s*=\s*0/) == -1){ - WriteToDebug("Detected No Error"); - intAICCErrorNum = NO_ERROR; - strAICCErrorDesc = ""; - } - else{ - WriteToDebug("Setting Error Info"); - AICC_SetError(GetValueFromAICCLine(strAICCErrorLine), GetValueFromAICCLine(strAICCErrorDesc)) - } -} - -function AICC_SetError(intErrorNum, strErrorDesc){ - WriteToDebug("ERROR: In AICC_SetError, intErrorNum=" + intErrorNum + ", strErrorDesc=" + strErrorDesc); - - intAICCErrorNum = intErrorNum; - strAICCErrorDesc = strAICCErrorDesc; -} - -function SetDirtyAICCData(){ - WriteToDebug("In SetDirtyAICCData"); - blnDirtyAICCData = true; -} - -function ClearDirtyAICCData(){ - WriteToDebug("In ClearDirtyAICCData"); - blnDirtyAICCData = false; -} - -function IsThereDirtyAICCData(){ - WriteToDebug("In IsThereDirtyAICCData, returning " + blnDirtyAICCData); - return blnDirtyAICCData; -} - - -function GetValueFromAICCLine(strLine){ - - WriteToDebug("In GetValueFromAICCLine, strLine=" + strLine); - - //find equal sign - //if found equal sign - //get all characters after equal sign - //remove leading and trailing white space (cr, lf, tab, space, etc) - - var intPos; - var strValue = ""; - var strTemp; - - strLine = new String(strLine); - - intPos = strLine.indexOf("="); - - WriteToDebug("intPos=" + intPos); - - if (intPos > -1 && ((intPos + 1) < strLine.length)){ - - WriteToDebug("Grabbing value"); - - strTemp = strLine.substring(intPos+1); - - WriteToDebug("strTemp=" + strTemp); - - strTemp = strTemp.replace(/^\s*/, ""); //replace leading whitespace - strTemp = strTemp.replace(/\s*$/, ""); //replace trailing whitespace - - strValue = strTemp; - } - - WriteToDebug("returning " + strValue); - - return strValue; - -} - -function GetNameFromAICCLine(strLine){ - //find equal sign - //if found equal sign - //get all characters after equal sign - //remove leading and trailing white space (cr, lf, tab, space, etc) - //else, look for brackets and return contents of brackets - - WriteToDebug("In GetNameFromAICCLine, strLine=" + strLine); - - var intPos; - var strTemp; - - var strName = ""; - - strLine = new String(strLine); - - intPos = strLine.indexOf("="); - - WriteToDebug("intPos=" + intPos); - - if (intPos > -1 && intPos < strLine.length){ - - WriteToDebug("Grabbing name from name/value pair"); - - strTemp = strLine.substring(0, intPos); - - WriteToDebug("strTemp=" + strTemp); - - strTemp = strTemp.replace(/^\s*/, ""); - strTemp = strTemp.replace(/\s*$/, ""); - - strName = strTemp; - } - - else{ - - WriteToDebug("Grabbing name from group / section heading"); - - intPos = strLine.indexOf("["); - - WriteToDebug("intPos=" + intPos); - - if (intPos > -1){ - - WriteToDebug("Replacing []"); - - strTemp = strLine.replace(/[\[|\]]/g, ""); //replace the square brackets - - WriteToDebug("strTemp=" + strTemp); - - strTemp = strTemp.replace(/^\s*/, ""); //replace leading whitespace - strTemp = strTemp.replace(/\s*$/, ""); //replace trailing whitespace - - strName = strTemp; - } - - } - - - WriteToDebug("returning " + strName); - - return strName; -} - - - -function GetIndexFromAICCName(strLineName){ - - WriteToDebug("In GetIndexFromAICCName, strLineName=" + strLineName); - - //find period - //if found period - //get all characters after preiod - //if there is an equal sign (we got an entire line instead of a line name - //remove all characters after the equal sign - //remove leading and trailing white space (cr, lf, tab, space, etc) - - var intPos; - var strIndex = ""; - var strTemp = ""; - - strLine = new String(strLineName); - - intPos = strLine.indexOf("."); - - WriteToDebug("intPos=" + intPos); - - if (intPos > -1 && (intPos+1) < strLine.length){ - - WriteToDebug("Grabbing index"); - - strTemp = strLine.substring(intPos + 1); - - - WriteToDebug("strTemp=" + strTemp); - - WriteToDebug("Checking for equal sign"); - - intPos = strTemp.indexOf("="); - - if (intPos > -1 && intPos < strTemp.length){ - WriteToDebug("Found and removing equal sign"); - strTemp = strLine.substring(0, intPos); - } - - WriteToDebug("Removing white space"); - - strTemp = strTemp.replace(/^\s*/, ""); //replace leading whitespace - strTemp = strTemp.replace(/\s*$/, ""); //replace trailing whitespace - - strIndex = strTemp; - } - - WriteToDebug("returning " + strIndex); - - return strIndex; -} - - -//============================================================================== - -function ParseGetParamData(strLMSResult){ - - WriteToDebug("In ParseGetParamData"); - - var aryAICCResponseLines; - var strLine; - var strLineName; - var strLineValue; - var i, j; //loop line counters - - //parse LMS Result into local variables - - strLMSResult = new String(strLMSResult); - aryAICCResponseLines = strLMSResult.split("\n"); //only use \n instead of \r\n b/c some LMS's will only use one character - - WriteToDebug("Split String"); - - for (i=0; i < aryAICCResponseLines.length; i++){ - - WriteToDebug("Processing Line #" + i + ": " + aryAICCResponseLines[i]); - - strLine = aryAICCResponseLines[i]; - - strLineName = ""; - strLineValue = ""; - - if (strLine.length > 0){ - - WriteToDebug("Found non-zero length string"); - - //remove \r from the beginning or end of the string in case we missed it in the original array split - if (strLine.charAt(0) == "\r"){ - WriteToDebug("Detected leading \\r"); - strLine = strLine.substr(1); - } - if (strLine.charAt(strLine.length - 1) == "\r"){ - WriteToDebug("Detected trailing \\r"); - strLine = strLine.substr(0, strLine.length - 1); - } - - if (strLine.charAt(0) != ";") { //semi-colon indicates a comment line, ignore these - WriteToDebug("Found non-comment line"); - - strLineName = GetNameFromAICCLine(strLine); - strLineValue = GetValueFromAICCLine(strLine); - - WriteToDebug("strLineName=" + strLineName + ", strLineValue=" + strLineValue); - } - } - - strLineName = strLineName.toLowerCase(); - - if (! AICC_HasItemBeenFound(strLineName)){ //only process an item the first time it is found since only the first instance is significant - - WriteToDebug("Detected an un-found item"); - - AICC_FoundItem(strLineName); - - switch (strLineName){ - - case "version": //version - WriteToDebug("Item is version"); - var tempVersion = parseFloat(strLineValue); - - if (isNaN(tempVersion)){tempVersion=0;} - - AICC_LMS_Version = tempVersion; - - break; - - case "student_id": //student id - WriteToDebug("Item is student_id"); - AICC_Student_ID = strLineValue; - break; - - case "student_name": //student name - WriteToDebug("Item is student_name"); - AICC_Student_Name = strLineValue; - break; - - case "lesson_location": //bookmark - WriteToDebug("Item is lesson_location"); - AICC_Lesson_Location = strLineValue; - break; - - case "score": //score - WriteToDebug("Item is score"); - AICC_Score = strLineValue; - - AICC_SeperateScoreValues(AICC_Score); - - break; - - case "credit": //credit - WriteToDebug("Item is credit"); - AICC_Credit = strLineValue; - - AICC_TranslateCredit(AICC_Credit); - - break; - - case "lesson_status": //status, flag for entry mode - WriteToDebug("Item is lesson_status"); - AICC_Lesson_Status = strLineValue; - - AICC_TranslateLessonStatus(AICC_Lesson_Status); - - break; - - case "time": //previous time - WriteToDebug("Item is time"); - AICC_Time = strLineValue; - - AICC_TranslateTimeToMilliseconds(AICC_Time); - - break; - - case "mastery_score": //passing score - WriteToDebug("Item is mastery_score"); - AICC_Mastery_Score = strLineValue; - - AICC_ValidateMasteryScore(AICC_Mastery_Score); - break; - - case "lesson_mode": //lesson mode (browse, normal, review) - WriteToDebug("Item is lesson_mode"); - AICC_Lesson_Mode = strLineValue; - - AICC_TranslateLessonMode(AICC_Lesson_Mode); - - break; - - case "max_time_allowed": //max time allowed - WriteToDebug("Item is max_time_allowed"); - AICC_Max_Time_Allowed = strLineValue; - - AICC_TranslateMaxTimeToMilliseconds(AICC_Max_Time_Allowed); - - break; - - case "time_limit_action": //display message on timeout, exit on timeout - WriteToDebug("Item is time_limit_action"); - AICC_Time_Limit_Action = strLineValue; - - AICC_TranslateTimeLimitAction(AICC_Time_Limit_Action); - - break; - - case "audio": //audio play, audio speed - WriteToDebug("Item is audio"); - AICC_Audio = strLineValue; - - AICC_TranslateAudio(AICC_Audio); - - break; - - case "speed": //content speed - WriteToDebug("Item is speed"); - AICC_Speed = strLineValue; - - AICC_TranslateSpeed(AICC_Speed); - - break; - - case "language": //language - WriteToDebug("Item is language"); - AICC_Language = strLineValue; - - break; - - case "text": //text - WriteToDebug("Item is text"); - AICC_Text = strLineValue; - - AICC_TranslateTextPreference(AICC_Text); - - break; - - case "course_id": //course id - WriteToDebug("Item is course id"); - AICC_CourseID = strLineValue; - - break; - - case "core_vendor": //launch data - WriteToDebug("Item is core_vendor"); - - AICC_Launch_Data = ""; - - strLine = ""; - j=1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - - //loop to the end of the file or current group - while ( ((i+j) < aryAICCResponseLines.length) && (! IsGroupIdentifier(strLine))){ - - if (strLine.charAt(0) != ";"){ - AICC_Launch_Data += strLine + "\n"; //add \n to make up for the one we dropped when splitting the string into the array - } - - j = j + 1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - } - - i = i + j - 1 - - AICC_Launch_Data = AICC_Launch_Data.replace(/\s*$/, ""); //replace trailing whitespace (we've added an extra \n to the end of the string) - - break; - - case "core_lesson": //data chunk - WriteToDebug("Item is core_lesson"); - - AICC_Data_Chunk = ""; - - strLine = ""; - j=1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - - //loop to the end of the file or current group - while ( ((i+j) < aryAICCResponseLines.length) && (! IsGroupIdentifier(strLine))){ - - if (strLine.charAt(0) != ";"){ - AICC_Data_Chunk += strLine + "\n"; //add \n to make up for the one we dropped when splitting the string into the array - } - - j = j + 1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - } - - i = i + j - 1 - - AICC_Data_Chunk = AICC_Data_Chunk.replace(/\s*$/, ""); //replace trailing whitespace (we've added an extra \n to the end of the string) - break; - - case "comments": //comments from LMS - WriteToDebug("Item is comments"); - - AICC_Comments = ""; - - strLine = ""; - j=1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - - //loop to the end of the file or current group - while ( ((i+j) < aryAICCResponseLines.length) && (! IsGroupIdentifier(strLine))){ - - if (strLine.charAt(0) != ";"){ - AICC_Comments += strLine + "\n"; //add \n to make up for the one we dropped when splitting the string into the array - } - - j = j + 1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - } - - i = i + j - 1 - - AICC_Comments = AICC_Comments.replace(/\s*$/, ""); //replace trailing whitespace (we've added an extra \n to the end of the string) - - break; - - case "objectives_status": //objectives - WriteToDebug("Item is objectives_status"); - - AICC_Objectives = ""; - - strLine = ""; - j=1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - - //loop to the end of the file or current group - while ( ((i+j) < aryAICCResponseLines.length) && (! IsGroupIdentifier(strLine))){ - - if (strLine.charAt(0) != ";"){ - AICC_Objectives += strLine + "\n"; //add \n to make up for the one we dropped when splitting the string into the array - } - - j = j + 1; - - if ((i+j) < aryAICCResponseLines.length){ - strLine = aryAICCResponseLines[i+j]; - } - } - - i = i + j - 1 - AICC_Objectives = AICC_Objectives.replace(/\s*$/, ""); //replace trailing whitespace (we've added an extra \r\n to the end of the string) - - AICC_FormatObjectives(AICC_Objectives); - - break; - - default: - //comment or empty line so do nothing - WriteToDebug("Unknown Item Found"); - break; - - } //end switch - } //end if AICC_HasItemBeenFound - } //end for - - - return true; - -} - - -function IsGroupIdentifier(strLine){ - WriteToDebug("In IsGroupIdentifier, strLine=" + strLine); - - var intPos; - - //remove leading white space - strLine = strLine.replace(/^\s*/, ""); - - intPos = strLine.search(/\[[\w]+\]/); - - WriteToDebug("intPos=" + intPos); - - if (intPos == 0){ - WriteToDebug("Returning True"); - return true; - } - else{ - WriteToDebug("Returning False"); - return false; - } -} - -function AICC_FoundItem(strItem){ - WriteToDebug("In AICC_FoundItem, strItem=" + strItem); - aryAICCFoundItems[strItem] = true; -} - -function AICC_HasItemBeenFound(strItem){ - WriteToDebug("In AICC_HasItemBeenFound, strItem=" + strItem); - - if (aryAICCFoundItems[strItem] == true){ - WriteToDebug("Returning True"); - return true; - } - else{ - WriteToDebug("Returning False"); - return false; - } -} - - - -//================================================================== -//functions for dealing with specific data elements -//================================================================== -function AICC_SeperateScoreValues(AICC_Score){ - WriteToDebug("In AICC_SeperateScoreValues, AICC_Score=" + AICC_Score); - - var aryScores; - aryScore = AICC_Score.split(","); - - AICC_fltScoreRaw = aryScore[0]; - - if (IsValidDecimal(AICC_fltScoreRaw)){ - WriteToDebug("Found a valid decimal"); - AICC_fltScoreRaw = parseFloat(AICC_fltScoreRaw); - } - else{ - WriteToDebug("ERROR - score from LMS is not a valid decimal"); - AICC_SetError(AICC_ERROR_INVALID_DECIMAL, "score is not a valid decimal") - } - - if (aryScore.length > 1){ - WriteToDebug("Max score found"); - AICC_fltScoreMax = aryScore[1]; - if ( IsValidDecimal(AICC_fltScoreMax)){ - WriteToDebug("Found a valid decimal"); - AICC_fltScoreMax = parseFloat(AICC_fltScoreMax); - } - else{ - WriteToDebug("ERROR - max score from LMS is not a valid decimal"); - AICC_SetError(AICC_ERROR_INVALID_DECIMAL, "max score is not a valid decimal") - } - } - - if (aryScore.length > 2){ - WriteToDebug("Max score found"); - AICC_fltScoreMin = aryScore[2]; - if (IsValidDecimal(AICC_fltScoreMin)){ - WriteToDebug("Found a valid decimal"); - AICC_fltScoreMin = parseFloat(AICC_fltScoreMin); - } - else{ - WriteToDebug("ERROR - min score from LMS is not a valid decimal"); - AICC_SetError(AICC_ERROR_INVALID_DECIMAL, "min score is not a valid decimal") - } - - } - -} - - -function AICC_ValidateMasteryScore(strScore){ - WriteToDebug("In AICC_ValidateMasteryScore, strScore=" + strScore); - - if (IsValidDecimal(strScore)){ - AICC_Mastery_Score = parseFloat(strScore); - } - else{ - WriteToDebug("ERROR - mastery score from LMS is not a valid decimal"); - AICC_SetError(AICC_ERROR_INVALID_DECIMAL, "mastery score is not a valid decimal") - } - -} - -function AICC_TranslateCredit(strCredit){ - WriteToDebug("In AICC_TranslateCredit, strCredit=" + strCredit); - - var strFirstChar; - - strFirstChar = strCredit.toLowerCase().charAt(0); - - if (strFirstChar == "c"){ - WriteToDebug("Credit = true"); - AICC_blnCredit = true; - } - else if (strFirstChar == "n"){ - WriteToDebug("Credit = false"); - AICC_blnCredit = false - } - else{ - WriteToDebug("ERROR - credit value from LMS is not a valid"); - AICC_SetError(AICC_ERROR_INVALID_CREDIT, "credit value from LMS is not a valid") - } - -} - -function AICC_TranslateLessonMode(strMode){ - WriteToDebug("In AICC_TranslateLessonMode, strMode=" + strMode); - var strFirstChar; - - strFirstChar = strMode.toLowerCase().charAt(0); - - if (strFirstChar == "b"){ - WriteToDebug("Lesson Mode = Browse"); - AICC_strLessonMode = MODE_BROWSE; - } - else if (strFirstChar == "n"){ - WriteToDebug("Lesson Mode = normal"); - AICC_strLessonMode = MODE_NORMAL; - } - else if (strFirstChar == "r"){ - WriteToDebug("Lesson Mode = review"); - AICC_strLessonMode = MODE_REVIEW; - - if (!(typeof(REVIEW_MODE_IS_READ_ONLY) == "undefined") && REVIEW_MODE_IS_READ_ONLY === true){ - blnReviewModeSoReadOnly = true; - } - - } - else{ - WriteToDebug("ERROR - lesson_mode value from LMS is not a valid"); - AICC_SetError(AICC_ERROR_INVALID_LESSON_MODE, "lesson_mode value from LMS is not a valid") - - } -} - - -function AICC_TranslateTimeToMilliseconds(strCMITime){ - WriteToDebug("In AICC_TranslateTimeToMilliseconds, strCMITime=" + strCMITime); - - if (IsValidCMITimeSpan(strCMITime)){ - AICC_intPreviouslyAccumulatedMilliseconds = ConvertCMITimeSpanToMS(strCMITime); - } - else{ - WriteToDebug("ERROR - Invalid CMITimeSpan"); - AICC_SetError(AICC_ERROR_INVALID_TIMESPAN, "Invalid timespan (previously accumulated time) received from LMS"); - } - -} - -function AICC_TranslateMaxTimeToMilliseconds(strCMITime){ - WriteToDebug("In AICC_TranslateMaxTimeToMilliseconds, strCMITime=" + strCMITime); - - if (IsValidCMITimeSpan(strCMITime)){ - AICC_intMaxTimeAllowedMilliseconds = ConvertCMITimeSpanToMS(strCMITime); - } - else{ - WriteToDebug("ERROR - Invalid CMITimeSpan"); - AICC_SetError(AICC_ERROR_INVALID_TIMESPAN, "Invalid timespan (max time allowed) received from LMS"); - } - -} - -function AICC_TranslateTimeLimitAction(strTimeLimitAction){ - WriteToDebug("In AICC_TranslateTimeLimitAction, strTimeLimitAction=" + strTimeLimitAction); - - var arySplit; - var blnError = false; - var strChar1 = ""; - var strChar2 = ""; - - //note - order of characters is not significant - - arySplit = strTimeLimitAction.split(","); - - if (arySplit.length == 2){ - - WriteToDebug("Found 2 elements"); - - strChar1 = arySplit[0].charAt(0).toLowerCase(); - strChar2 = arySplit[1].charAt(0).toLowerCase(); - - WriteToDebug("Got characters, strChar1=" + strChar1 + ", strChar2=" + strChar2); - - if ( (strChar1 != "e" && strChar1 != "c" && strChar1 != "m" && strChar1 != "n") || - (strChar2 != "e" && strChar2 != "c" && strChar2 != "m" && strChar2 != "n") || - (strChar1 == strChar2) - ) { - blnError = true - WriteToDebug("Found an invalid character, or 2 identical characters"); - } - - if (strChar1 == "e" || strChar2 == "e") {AICC_blnExitOnTimeout = true;} - if (strChar1 == "c" || strChar2 == "c") {AICC_blnExitOnTimeout = false;} - - if (strChar1 == "n" || strChar2 == "n") {AICC_blnShowMessageOnTimeout = false;} - if (strChar1 == "m" || strChar2 == "m") {AICC_blnShowMessageOnTimeout = true;} - - WriteToDebug("AICC_blnExitOnTimeout=" + AICC_blnExitOnTimeout + ", AICC_blnShowMessageOnTimeout" + AICC_blnShowMessageOnTimeout); - } - else{ - WriteToDebug("Line does not contain two comma-delimited elements"); - blnError = true; - } - - if (blnError){ - WriteToDebug("ERROR - Invalid Time Limit Action"); - AICC_SetError(AICC_ERROR_INVALID_TIME_LIMIT_ACTION, "Invalid time limit action received from LMS"); - - } - -} - - -function AICC_TranslateTextPreference(strPreference){ - WriteToDebug("In AICC_TranslateTextPreference, strPreference=" + strPreference); - - if (strPreference == -1){ - WriteToDebug("Text Preference = off"); - AICC_TextPreference = PREFERENCE_OFF; - } - else if (strPreference == 0){ - WriteToDebug("Text Preference = default"); - AICC_TextPreference = PREFERENCE_DEFAULT; - } - else if (strPreference == 1){ - WriteToDebug("Text Preference = on"); - AICC_TextPreference = PREFERENCE_ON; - } - else{ - WriteToDebug("ERROR - Invalid Text Preference"); - AICC_SetError(AICC_ERROR_INVALID_PREFERENCE, "Invalid Text Preference received from LMS"); - - } -} - - -function AICC_TranslateLessonStatus(strStatus){ - WriteToDebug("In AICC_TranslateLessonStatus, strStatus=" + strStatus); - - var strFirstChar; - var intPos; - var strEntry; - - strFirstChar = strStatus.charAt(0).toLowerCase(); - - AICC_Status = AICC_ConvertAICCStatusIntoLocalStatus(strFirstChar); - - WriteToDebug("AICC_Status=" + AICC_Status); - - //check for an entry flag - intPos = strStatus.indexOf(","); - if (intPos > 0){ - strEntry = strStatus.substr(intPos); - strEntry = strEntry.replace(/,/, ""); - - strFirstChar = strEntry.charAt(0).toLowerCase(); - - if (strFirstChar == "a"){ - WriteToDebug("Entry is Ab initio"); - AICC_Entry = ENTRY_FIRST_TIME; - } - else if (strFirstChar == "r"){ - WriteToDebug("Entry is Resume"); - AICC_Entry = ENTRY_RESUME; - } - else{ - WriteToDebug("ERROR - entry not found"); - AICC_SetError(AICC_ERROR_INVALID_ENTRY, "Invalid lesson status received from LMS"); - } - } - -} - - -function AICC_ConvertAICCStatusIntoLocalStatus(strFirstCharOfAICCStatus){ - WriteToDebug("In AICC_ConvertAICCStatusIntoLocalStatus, strFirstCharOfAICCStatus=" + strFirstCharOfAICCStatus); - - if (strFirstCharOfAICCStatus == "p"){ - WriteToDebug("Status is Passed"); - return LESSON_STATUS_PASSED; - } - else if (strFirstCharOfAICCStatus == "f"){ - WriteToDebug("Status is Failed"); - return LESSON_STATUS_FAILED; - } - else if (strFirstCharOfAICCStatus == "c"){ - WriteToDebug("Status is Completed"); - return LESSON_STATUS_COMPLETED; - } - else if (strFirstCharOfAICCStatus == "b"){ - WriteToDebug("Status is Browsed"); - return LESSON_STATUS_BROWSED; - } - else if (strFirstCharOfAICCStatus == "i"){ - WriteToDebug("Status is Incomplete"); - return LESSON_STATUS_INCOMPLETE; - } - else if (strFirstCharOfAICCStatus == "n"){ - WriteToDebug("Status is Not Attempted"); - return LESSON_STATUS_NOT_ATTEMPTED; - } - else{ - WriteToDebug("ERROR - status not found"); - AICC_SetError(SCORM_ERROR_INVALID_STATUS, "Invalid status"); - return LESSON_STATUS_NOT_ATTEMPTED; - } -} - - -function AICC_TranslateAudio(strAudio){ - - WriteToDebug("In AICC_TranslateAudio, strAudio=" + strAudio); - - var intTempPreference = parseInt(strAudio, 10); - - WriteToDebug("intTempPreference=" + intTempPreference); - - if (intTempPreference > 0 && intTempPreference <= 100){ - WriteToDebug("Returning On"); - AICC_AudioPlayPreference = PREFERENCE_ON; - AICC_intAudioVolume = intTempPreference; - } - else if (intTempPreference == 0){ - WriteToDebug("Returning Default"); - AICC_AudioPlayPreference = PREFERENCE_DEFAULT; - } - else if (intTempPreference < 0) { - WriteToDebug("returning Off"); - AICC_AudioPlayPreference = PREFERENCE_OFF; - } - else{ - //preference is not a number - WriteToDebug("Error: Invalid preference"); - AICC_SetError(AICC_ERROR_INVALID_PREFERENCE, "Invalid audio preference received from LMS"); - } -} - - -function AICC_TranslateSpeed(intAICCSpeed){ - - WriteToDebug("In AICC_TranslateSpeed, intAICCSpeed=" + intAICCSpeed); - - var intPercentOfMax; - - if ( ! ValidInteger(intAICCSpeed) ){ - WriteToDebug("ERROR - invalid integer"); - AICC_SetError(AICC_ERROR_INVALID_SPEED, "Invalid speed preference received from LMS - not an integer"); - return; - } - - intAICCSpeed = parseInt(intAICCSpeed, 10) - - if (intAICCSpeed < -100 || intAICCSpeed > 100){ - WriteToDebug("ERROR - out of range"); - AICC_SetError(AICC_ERROR_INVALID_SPEED, "Invalid speed preference received from LMS - out of range"); - return; - - } - - AICC_Speed = intAICCSpeed; - - intPercentOfMax = (intAICCSpeed + 100) / 2; - intPercentOfMax = parseInt(intPercentOfMax, 10); - - WriteToDebug("Returning " + intPercentOfMax); - - AICC_intPercentOfMaxSpeed = intPercentOfMax; - -} - - - -function AICC_FormatObjectives(strObjectivesFromLMS){ - - WriteToDebug("In AICC_FormatObjectives, strObjectivesFromLMS=" + strObjectivesFromLMS); - - var aryLines; - var i; - var strLineName; - var strLineValue; - var strLineType; - var strIndex; - - aryLines = strObjectivesFromLMS.split("\n"); - - //establish the read array with empty elements for all the IDs we'll encounter - for (i=0; i < aryLines.length; i++){ - WriteToDebug("Extracting Index From Line: " + aryLines[i]); - - strLineName = GetNameFromAICCLine(aryLines[i]); - strIndex = GetIndexFromAICCName(strLineName); - - strIndex = parseInt(strIndex, 10); - - WriteToDebug("strIndex: " + strIndex); - - AICC_aryObjectivesRead[parseInt(strIndex, 10)] = new Array(3); - } - - - //loop through the line again and now populate the actual data - for (i=0; i < aryLines.length; i++){ - WriteToDebug("Populating Line " + aryLines[i]); - - strLineName = GetNameFromAICCLine(aryLines[i]); - strLineValue = GetValueFromAICCLine(aryLines[i]); - - strIndex = GetIndexFromAICCName(strLineName); - - strIndex = strIndex; - - WriteToDebug("strLineName: " + strLineName); - WriteToDebug("strLineValue: " + strLineValue); - WriteToDebug("strIndex: " + strIndex); - - strLineType = strLineName.substr(0,4).toLowerCase(); - - if (strLineType == "j_id"){ - WriteToDebug("Found ID"); - AICC_aryObjectivesRead[parseInt(strIndex, 10)][AICC_OBJ_ARRAY_ID] = strLineValue; - } - else if (strLineType =="j_st"){ - WriteToDebug("Found Status"); - AICC_aryObjectivesRead[parseInt(strIndex, 10)][AICC_OBJ_ARRAY_STATUS] = AICC_ConvertAICCStatusIntoLocalStatus(strLineValue.charAt(0).toLowerCase()); - } - else if (strLineType == "j_sc"){ - WriteToDebug("Found Score"); - AICC_aryObjectivesRead[parseInt(strIndex, 10)][AICC_OBJ_ARRAY_SCORE] = AICC_ExtractSingleScoreFromObjective(strLineValue); - } - else{ - WriteToDebug("WARNING - unidentified objective data found - " + aryLines[i]); - } - - } - -} - - -function AICC_ExtractSingleScoreFromObjective(strLineValue){ - WriteToDebug("In AICC_ExtractSingleScoreFromObjective, strLineValue=" + strLineValue); - - //AICC objectives can have multiple score sets (raw,max,min) seperated by semi-colons,they represent the various attempts at an objective - //we're just concerned with the most recent attempt - - var aryParts; - - aryParts = strLineValue.split(";"); //drop the previous instances if any - aryParts = aryParts[0].split(","); //drop the max and min scores if any - - - WriteToDebug("returning " + aryParts[0]); - - return aryParts[0]; - -} - -function FindObjectiveById(strID, aryObjectives){ - - WriteToDebug("In FindObjectiveById, strID=" + strID); - - for (var i=0; i <= aryObjectives.length; i++){ - - WriteToDebug("Searching element " + i); - - if (aryObjectives[i]){ - WriteToDebug("Element Exists"); - - if (aryObjectives[i][AICC_OBJ_ARRAY_ID].toString() == strID.toString()){ - WriteToDebug("Element matches"); - return i; - } - } - } - - return null; -} - - - -//___________________________________________________________ -//Interaction Retrieval Functionality -//NOTE ON INTERACTION RETRIEVAL -//A. It is only available in certain standards, standards where it is unavailable will return nothing -//B. The interaction records are currently reported using "journaling", whereby each entry is appended -// Retrieval methods will retrieve only the most recent value - - -//___________________________________________________________ -//Helper Methods -function AICC_FindInteractionIndexFromID(strInteractionID){ - - WriteToDebug("AICC_FindInteractionIndexFromID - AICC does not support interaction retrieval, returning null"); - - return null; -} -//___________________________________________________________ - - -function AICC_GetInteractionType(strInteractionID) -{ - - WriteToDebug("AICC_GetInteractionType - AICC does not support interaction retrieval, returning empty string"); - return ''; - - -} - -//public -function AICC_GetInteractionTimestamp(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionTimestamp - AICC does not support interaction retrieval, returning empty string"); - return ''; -} - - - -//public -function AICC_GetInteractionCorrectResponses(strInteractionID) -{ - - WriteToDebug("AICC_GetInteractionCorrectResponses - AICC does not support interaction retrieval, returning empty array"); - return new Array(); - - -} - - - -//public -function AICC_GetInteractionWeighting(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionWeighting - AICC does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function AICC_GetInteractionLearnerResponses(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionLearnerResponses - AICC does not support interaction retrieval, returning empty array"); - return new Array(); - - -} - - -//public -function AICC_GetInteractionResult(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionResult - AICC does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function AICC_GetInteractionLatency(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionDescription - AICC does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function AICC_GetInteractionDescription(strInteractionID) -{ - WriteToDebug("AICC_GetInteractionDescription - AICC does not support interaction retrieval, returning empty string"); - return ''; -} - -//________________________________________________ - -//public -function AICC_CreateDataBucket(strBucketId, intMinSize, intMaxSize){ - WriteToDebug("AICC_CreateDataBucket - AICC does not support SSP, returning false"); - return false; -} - -//public -function AICC_GetDataFromBucket(strBucketId){ - WriteToDebug("AICC_GetDataFromBucket - AICC does not support SSP, returning empty string"); - return ""; -} - -//public -function AICC_PutDataInBucket(strBucketId, strData, blnAppendToEnd){ - WriteToDebug("AICC_PutDataInBucket - AICC does not support SSP, returning false"); - return false; -} - -//public -function AICC_DetectSSPSupport(){ - WriteToDebug("AICC_DetectSSPSupport - AICC does not support SSP, returning false"); - return false; -} - -//public -function AICC_GetBucketInfo(strBucketId){ - WriteToDebug("AICC_DetectSSPSupport - AICC does not support SSP, returning empty SSPBucketSize"); - return new SSPBucketSize(0, 0); -} - - - - -//================================================================== -//================================================================== - -function FormAICCPostData(){ - WriteToDebug("In FormAICCPostData"); - - var strAICCData = ""; - - - strAICCData += "[Core]\r\n"; - - strAICCData += "Lesson_Location=" + AICC_Lesson_Location + "\r\n"; - strAICCData += "Lesson_Status=" + AICC_TranslateLessonStatusToAICC(AICC_Status) + "\r\n"; - strAICCData += "Score=" + AICC_TranslateScoreToAICC() + "\r\n"; - strAICCData += "Time=" + AICC_TranslateTimeToAICC() + "\r\n"; - - strAICCData += "[Comments]\r\n" + AICC_TranslateCommentsToAICC() + "\r\n"; - - strAICCData += "[Objectives_Status]\r\n" + AICC_TranslateObjectivesToAICC() + "\r\n"; - - strAICCData += "[Student_Preferences]\r\n"; - - strAICCData += "Audio=" + AICC_TranslateAudioToAICC() + "\r\n"; - strAICCData += "Language=" + AICC_Language + "\r\n"; - strAICCData += "Speed=" + AICC_TranslateSpeedToAICC() + "\r\n"; - strAICCData += "Text=" + AICC_TranslateTextToAICC() + "\r\n"; - - strAICCData += "[Core_Lesson]\r\n"; - strAICCData += AICC_Data_Chunk; - - WriteToDebug("FormAICCPostData returning: " + strAICCData); - - return strAICCData; -} - -function AICC_TranslateLessonStatusToAICC(intStatus){ - - WriteToDebug("In AICC_TranslateLessonStatusToAICC"); - - switch (intStatus){ - - case LESSON_STATUS_PASSED: - WriteToDebug("Status is passed"); - AICC_Lesson_Status = "P"; - break; - - case LESSON_STATUS_COMPLETED: - WriteToDebug("Status is completed"); - AICC_Lesson_Status = "C"; - break; - - case LESSON_STATUS_FAILED: - WriteToDebug("Status is failed"); - AICC_Lesson_Status = "F"; - break; - - case LESSON_STATUS_INCOMPLETE: - WriteToDebug("Status is incomplete"); - AICC_Lesson_Status = "I"; - break; - - case LESSON_STATUS_BROWSED: - WriteToDebug("Status is browsed"); - AICC_Lesson_Status = "B"; - break; - - case LESSON_STATUS_NOT_ATTEMPTED: - WriteToDebug("Status is not attempted"); - AICC_Lesson_Status = "N"; - break; - } - - return AICC_Lesson_Status; -} - -function AICC_TranslateScoreToAICC(){ - - WriteToDebug("In AICC_TranslateScoreToAICC"); - - AICC_Score = AICC_fltScoreRaw; - - //prior to version 3, AICC scores cannot contain a decimal - if (AICC_LMS_Version < 3 && AICC_fltScoreRaw != ""){ - AICC_Score = parseInt(AICC_Score, 10); - } - - //some older versions may not have this setting available - if ( (AICC_REPORT_MIN_MAX_SCORE === undefined || - AICC_REPORT_MIN_MAX_SCORE === null || - AICC_REPORT_MIN_MAX_SCORE === true) && - (AICC_LMS_Version >= 3 ) //min and max scores are only allowed after version 3 - ){ - - WriteToDebug("Using max and min values if available."); - - if ((AICC_fltScoreMax != "") || (AICC_fltScoreMin != "")) { - WriteToDebug("Appending Max and Min scores"); - AICC_Score += "," + AICC_fltScoreMax + "," + AICC_fltScoreMin; - } - - } - - WriteToDebug("AICC_Score=" + AICC_Score); - - return AICC_Score; -} - -function AICC_TranslateTimeToAICC(){ - - WriteToDebug("In AICC_TranslateTimeToAICC"); - - var strTime; - - strTime = ConvertMilliSecondsToSCORMTime(AICC_intSessionTimeMilliseconds, false); - - return strTime; -} - -function AICC_TranslateCommentsToAICC(){ - - WriteToDebug("In AICC_TranslateCommentsToAICC"); - - var strComments = ""; - for (var i=0; i < AICC_aryCommentsFromLearner.length; i++){ - strComments += "<" + (i+1) + ">" + AICC_aryCommentsFromLearner[i] + ""; - } - return strComments; -} - -function AICC_TranslateObjectivesToAICC(){ - - WriteToDebug("In AICC_TranslateObjectivesToAICC"); - - var strObjectives = ""; - - for (var i=0; i\n"); - } - - } - return; -} - -//public -function ShowDebugWindow(){ - - if (winDebug && !winDebug.closed){ - winDebug.close(); - } - - winDebug = window.open("blank.html", "Debug", "width=600,height=300,resizable,scrollbars"); - - winDebug.document.write(aryDebug.join("
\n")); - - winDebug.document.close(); - - winDebug.focus(); - - return; -} - -//public -function DisplayError(strMessage){ - - var blnShowDebug; - - WriteToDebug("In DisplayError, strMessage=" + strMessage); - - blnShowDebug = confirm("An error has occured:\n\n" + strMessage + "\n\nPress 'OK' to view debug information to send to technical support."); - - if (blnShowDebug){ - ShowDebugWindow(); - } - -} - - -//public -//combines API error information with Standard's error information -function GetLastError(){ - - WriteToDebug("In GetLastError, intError=" + intError); - - if (intError != NO_ERROR){ - WriteToDebug("Returning API Error"); - return intError; - } - else if (IsLoaded() && objLMS.GetLastError() != NO_ERROR){ - WriteToDebug("Returning LMS Error"); - return ERROR_LMS; - } - - WriteToDebug("Returning No Error"); - return NO_ERROR; -} - -function GetLastLMSErrorCode(){ - - WriteToDebug("In GetLastLMSErrorCode, intError=" + intError); - - var LMSError = objLMS.GetLastError(); - - if (IsLoaded() && LMSError != NO_ERROR){ - - - WriteToDebug("Returning LMS Error: " + LMSError); - return LMSError; - } - - WriteToDebug("Returning No Error"); - return NO_ERROR; -} - -//public -function GetLastErrorDesc(){ - WriteToDebug("In GetLastErrorDesc"); - - if (intError != NO_ERROR){ - WriteToDebug("Returning API Error - " + strErrorDesc); - return strErrorDesc; - } - else if (IsLoaded() && objLMS.GetLastError() != NO_ERROR){ - WriteToDebug("returning LMS Error"); - return objLMS.GetLastErrorDesc; - } - - WriteToDebug("Returning No Error"); - return ""; -} - -//private -function SetErrorInfo(intErrorNumToSet, strErrorDescToSet){ - - - WriteToDebug("In SetErrorInfo - Num=" + intErrorNumToSet + " Desc=" + strErrorDescToSet); - - intError = intErrorNumToSet; - strErrorDesc = strErrorDescToSet; -} - -//private -function ClearErrorInfo(){ - WriteToDebug("In ClearErrorInfo"); - - var intError = NO_ERROR; - var strErrorDesc = ""; -} - - -//public -function CommitData(){ - WriteToDebug("In CommitData"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - //MR - 5/31/05 - We want to make sure this call happens someplace other than just in the onunload event, so periodically save the data as it accumulates - if (! blnOverrodeTime){ - WriteToDebug("Did not override time, saving incremental time"); - dtmEnd = new Date(); - AccumulateTime(); - dtmStart = new Date(); - objLMS.SaveTime(intAccumulatedMS); - } - - return objLMS.CommitData(); -} - - -//Finish functions - -//public -function Suspend(){ - WriteToDebug("In Suspend"); - ClearErrorInfo(); - - return ExecFinish(EXIT_TYPE_SUSPEND); -} - -//public -function Finish(){ - WriteToDebug("In Finish"); - ClearErrorInfo(); - - return ExecFinish(EXIT_TYPE_FINISH); -} - -//public -function TimeOut(){ - WriteToDebug("In TimeOut"); - ClearErrorInfo(); - - return ExecFinish(EXIT_TYPE_TIMEOUT); -} - -//public -function Unload(){ - WriteToDebug("In Unload"); - ClearErrorInfo(); - - return ExecFinish(DEFAULT_EXIT_TYPE); -} - -//public -function SetReachedEnd(){ - WriteToDebug("In SetReachedEnd"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (blnStatusWasSet == false){ - objLMS.SetCompleted(); - } - - blnReachedEnd = true; - - return true; -} - -//public -function ConcedeControl() -{ - WriteToDebug("Conceding control with type: " + EXIT_BEHAVIOR); - ClearErrorInfo(); - - //It's ok to always call Suspend in here and not Finish. The proper way to get an exit type - //of Finish is to call SetReachedEnd before calling ConcedeControl. This will ensure that - //the ExecFinish function always uses the ExitTypeFinish behavior (which is to set the status to completed - //if no status was previously set) - - var contentRoot = null; - var urlBase = null; - - switch (EXIT_BEHAVIOR) - { - case "SCORM_RECOMMENDED": - contentRoot = SearchParentsForContentRoot(); - - if (contentRoot==window.top) - { - Suspend(); - contentRoot.window.close(); - } - else - { - Suspend(); - if (contentRoot != null){ - //DE - 10/26/2010 - Add ability to specify absolute URL for EXIT_TARGET - if(IsAbsoluteUrl(EXIT_TARGET)){ - contentRoot.scormdriver_content.location.href = EXIT_TARGET; - } else { - urlBase = GetContentRootUrlBase(contentRoot); - contentRoot.scormdriver_content.location.href= urlBase + EXIT_TARGET; - } - } - } - break; - case "ALWAYS_CLOSE": - Suspend(); - window.close(); - break; - case "ALWAYS_CLOSE_TOP": - Suspend(); - window.top.close(); - break; - case "NOTHING": - Suspend(); - break; - case "REDIR_CONTENT_FRAME": - Suspend(); - contentRoot = SearchParentsForContentRoot(); - if (contentRoot != null){ - //DE - 10/26/2010 - Add ability to specify absolute URL for EXIT_TARGET - if(IsAbsoluteUrl(EXIT_TARGET)){ - contentRoot.scormdriver_content.location.href = EXIT_TARGET; - } else { - urlBase = GetContentRootUrlBase(contentRoot); - contentRoot.scormdriver_content.location.href= urlBase + EXIT_TARGET; - } - } - break; - } - - return true; - -} - -function GetContentRootUrlBase(contentRoot){ - - var urlParts = contentRoot.location.href.split("/"); - delete urlParts[urlParts.length - 1]; - contentRoot = urlParts.join("/"); - return contentRoot; -} - -function SearchParentsForContentRoot(){ - - var contentRoot = null; - var wnd = window; - var i=0; //safety guard to prevent infinite loop - - if (wnd.scormdriver_content){ - contentRoot = wnd; - return contentRoot; - } - - while (contentRoot == null && wnd != window.top && (i++ < 100)){ - if (wnd.scormdriver_content){ - contentRoot = wnd; - return contentRoot; - } - else{ - wnd = wnd.parent; - } - } - WriteToDebug("Unable to locate content root"); - return null; -} - - -//Storing and retrieving data - -//public -function GetStudentID(){ - WriteToDebug("In GetStudentID"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetStudentID(); - -} - -//public -function GetStudentName(){ - WriteToDebug("In GetStudentName"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetStudentName(); -} - -//public -function GetBookmark(){ - WriteToDebug("In GetBookmark"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetBookmark(); - -} - -//public -function SetBookmark(strBookmark){ - WriteToDebug("In SetBookmkar - strBookmark=" + strBookmark); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.SetBookmark(strBookmark); - -} - -//public -function GetDataChunk(){ - WriteToDebug("In GetDataChunk"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetDataChunk(); -} - -//public -function SetDataChunk(strData){ - WriteToDebug("In SetDataChunk strData=" + strData); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.SetDataChunk(strData); -} - -//public -function GetLaunchData(){ - WriteToDebug("In GetLaunchData"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetLaunchData(); -} - -//public -function GetComments(){ - - var strCommentString; - var aryComments; - var i; - - WriteToDebug("In GetComments"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return null; - } - - strCommentString = objLMS.GetComments(); - - WriteToDebug("strCommentString=" + strCommentString); - - strCommentString = new String(strCommentString); - - if (strCommentString != ""){ - - aryComments = strCommentString.split(" | "); - - for (i=0; i < aryComments.length; i++){ - WriteToDebug("Returning Comment #" + i); - aryComments[i] = new String(aryComments[i]); - aryComments[i] = aryComments[i].replace(/\|\|/g, "|"); - WriteToDebug("Comment #" + i + "=" + aryComments[i]); - } - } - else{ - aryComments = new Array(0); - } - - return aryComments; -} - -//public -function WriteComment(strComment){ - - var strExistingCommentString; - - WriteToDebug("In WriteComment strComment=" + strComment); - - ClearErrorInfo(); - - strComment = new String(strComment); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strComment = strComment.replace(/\|/g, "||"); - - strExistingCommentString = objLMS.GetComments(); - - if (strExistingCommentString != ""){ - strComment = " | " + strComment; - } - - strComment = strComment; - - return objLMS.WriteComment(strComment); -} - - -//public -function GetLMSComments(){ - WriteToDebug("In GetLMSComments"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetLMSComments(); -} - - -//Preferences - -//public -function GetAudioPlayPreference(){ - WriteToDebug("In GetAudioPlayPreference"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return PREFERENCE_DEFAULT; - } - - return objLMS.GetAudioPlayPreference(); -} - -//public -//returns int 1-100 -function GetAudioVolumePreference(){ - WriteToDebug("GetAudioVolumePreference"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 100; - } - - return objLMS.GetAudioVolumePreference(); -} - -//public -//percent is int 1-100 -//PlayPreference is On/Off -function SetAudioPreference(PlayPreference, intPercentOfMaxVolume){ - - WriteToDebug("In SetAudioPreference PlayPreference=" + PlayPreference + " intPercentOfMaxVolume=" + intPercentOfMaxVolume); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (PlayPreference != PREFERENCE_OFF && - PlayPreference != PREFERENCE_ON){ - - WriteToDebug("Error Invalid PlayPreference"); - - SetErrorInfo(ERROR_INVALID_PREFERENCE, "Invalid PlayPreference passed to SetAudioPreference, PlayPreference=" + PlayPreference); - - return false; - } - - if ( ! ValidInteger(intPercentOfMaxVolume) ){ - WriteToDebug("Error Invalid PercentOfMaxVolume - not an integer"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid PercentOfMaxVolume passed to SetAudioPreference (not an integer), intPercentOfMaxVolume=" + intPercentOfMaxVolume); - return false; - } - - intPercentOfMaxVolume = parseInt(intPercentOfMaxVolume, 10); - - if (intPercentOfMaxVolume < 1 || intPercentOfMaxVolume > 100){ - WriteToDebug("Error Invalid PercentOfMaxVolume - out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid PercentOfMaxVolume passed to SetAudioPreference (must be between 1 and 100), intPercentOfMaxVolume=" + intPercentOfMaxVolume); - return false; - } - - WriteToDebug("Calling to LMS"); - return objLMS.SetAudioPreference(PlayPreference, intPercentOfMaxVolume); - -} - -//public -function GetLanguagePreference(){ - WriteToDebug("In GetLanguagePreference"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ""; - } - - return objLMS.GetLanguagePreference(); -} - -//public -function SetLanguagePreference(strLanguage){ - WriteToDebug("In SetLanguagePreference strLanguage=" + strLanguage); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.SetLanguagePreference(strLanguage); - -} - -//public -function GetSpeedPreference(){ - WriteToDebug("In GetSpeedPreference"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 100; - } - - return objLMS.GetSpeedPreference(); -} - - -//public -function SetSpeedPreference(intPercentOfMax){ - WriteToDebug("In SetSpeedPreference intPercentOfMax=" + intPercentOfMax); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if ( ! ValidInteger(intPercentOfMax) ){ - WriteToDebug("ERROR Invalid Percent of MaxSpeed, not an integer"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid PercentOfMaxSpeed passed to SetSpeedPreference (not an integer), intPercentOfMax=" + intPercentOfMax); - return false; - } - - intPercentOfMax = parseInt(intPercentOfMax, 10); - - if (intPercentOfMax < 0 || intPercentOfMax > 100){ - WriteToDebug("ERROR Invalid Percent of MaxSpeed, out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid PercentOfMaxSpeed passed to SetSpeedPreference (must be between 1 and 100), intPercentOfMax=" + intPercentOfMax); - return false; - } - - WriteToDebug("Calling to LMS"); - return objLMS.SetSpeedPreference(intPercentOfMax); - -} - -//public -function GetTextPreference(){ - WriteToDebug("In GetTextPreference"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetTextPreference(); -} - -//public -function SetTextPreference(intPreference){ - WriteToDebug("In SetTextPreference intPreference=" + intPreference); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (intPreference != PREFERENCE_DEFAULT && - intPreference != PREFERENCE_OFF && - intPreference != PREFERENCE_ON){ - WriteToDebug("Error - Invalid Preference"); - SetErrorInfo(ERROR_INVALID_PREFERENCE, "Invalid Preference passed to SetTextPreference, intPreference=" + intPreference); - - return false; - } - - return objLMS.SetTextPreference(intPreference); - -} - - - - -//Timing - -//public -function GetPreviouslyAccumulatedTime(){ - WriteToDebug("In GetPreviouslyAccumulatedTime"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 0; - } - - return objLMS.GetPreviouslyAccumulatedTime(); -} - - - -//private -function AccumulateTime(){ - WriteToDebug("In AccumulateTime dtmStart=" + dtmStart + " dtmEnd=" + dtmEnd + " intAccumulatedMS=" + intAccumulatedMS); - if (dtmEnd != null && dtmStart != null){ - WriteToDebug("Accumulating Time"); - intAccumulatedMS += (dtmEnd.getTime() - dtmStart.getTime()); - WriteToDebug("intAccumulatedMS=" + intAccumulatedMS); - } - -} - - - -//public -function GetSessionAccumulatedTime(){ - - WriteToDebug("In GetSessionAccumulatedTime"); - - ClearErrorInfo(); - - WriteToDebug("Setting dtmEnd to now"); - - dtmEnd = new Date(); - - WriteToDebug("Accumulating Time"); - - AccumulateTime(); - - if (dtmStart != null){ - WriteToDebug("Resetting dtmStart"); - dtmStart = new Date(); - } - - WriteToDebug("Setting dtmEnd to null"); - dtmEnd = null; - - WriteToDebug("Returning " + intAccumulatedMS); - - return intAccumulatedMS; -} - - -//public -function SetSessionTime(intMilliseconds){ - - WriteToDebug("In SetSessionTime"); - - ClearErrorInfo(); - - if ( ! ValidInteger(intMilliseconds)){ - WriteToDebug("ERROR parameter is not an integer"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid intMilliseconds passed to SetSessionTime (not an integer), intMilliseconds=" + intMilliseconds); - return false; - } - - intMilliseconds = parseInt(intMilliseconds, 10); - - if (intMilliseconds < 0){ - WriteToDebug("Error, parameter is less than 0"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid intMilliseconds passed to SetSessionTime (must be greater than 0), intMilliseconds=" + intMilliseconds); - return false; - } - - blnOverrodeTime = true; - intTimeOverrideMS = intMilliseconds; - - //MR - 5/31/05 - added this immediate call because in AICC the onunload call isn't always reliable - objLMS.SaveTime(intTimeOverrideMS); - - return true; -} - -//public -function PauseTimeTracking(){ - - WriteToDebug("In PauseTimeTracking"); - - ClearErrorInfo(); - - WriteToDebug("Setting dtmEnd to now"); - dtmEnd = new Date(); - - WriteToDebug("Accumulating Time"); - AccumulateTime(); - - WriteToDebug("Setting Start and End times to null"); - dtmStart = null; - dtmEnd = null; - - return true; -} - -//public -//note in docs - can be used to start tracking at a point other than beginning -function ResumeTimeTracking(){ - - WriteToDebug("In ResumeTimeTracking"); - - ClearErrorInfo(); - - WriteToDebug("Setting dtmStart to now"); - - dtmStart = new Date(); - - return true; - -} - - -//public -function GetMaxTimeAllowed(){ - - WriteToDebug("In GetMaxTimeAllowed"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return MAX_CMI_TIME; - } - - return objLMS.GetMaxTimeAllowed(); - -} - - -//public -function DisplayMessageOnTimeout(){ - - WriteToDebug("In DisplayMessageOnTimeOut"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.DisplayMessageOnTimeout(); - -} - -//public -function ExitOnTimeout(){ - - WriteToDebug("In ExitOnTimeOut"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.ExitOnTimeout(); - -} - - -//Testing - -//public -function GetPassingScore(){ - WriteToDebug("In GetPassingScore"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 0; - } - - return objLMS.GetPassingScore(); - -} - -//public -function GetScore(){ - - WriteToDebug("In GetScore"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 0; - } - - return objLMS.GetScore(); - -} - -//public -function GetScaledScore(){ - - WriteToDebug("In GetScaledScore"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return 0; - } - - return objLMS.GetScaledScore(); - -} - -//public -function SetScore(intScore, intMaxScore, intMinScore){ - - WriteToDebug("In SetScore, intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (! IsValidDecimal(intScore)){ - WriteToDebug("ERROR - intScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetScore (not a valid decimal), intScore=" + intScore); - return false; - } - - if (! IsValidDecimal(intMaxScore)){ - WriteToDebug("ERROR - intMaxScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetScore (not a valid decimal), intMaxScore=" + intMaxScore); - return false; - } - - if (! IsValidDecimal(intMinScore)){ - WriteToDebug("ERROR - intMinScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetScore (not a valid decimal), intMinScore=" + intMinScore); - return false; - } - - WriteToDebug("Converting SCORES to floats"); - intScore = parseFloat(intScore); - intMaxScore = parseFloat(intMaxScore); - intMinScore = parseFloat(intMinScore); - - if (intScore < 0 || intScore > 100){ - WriteToDebug("ERROR - intScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetScore (must be between 0-100), intScore=" + intScore); - return false; - } - - if (intMaxScore < 0 || intMaxScore > 100){ - WriteToDebug("ERROR - intMaxScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetScore (must be between 0-100), intMaxScore=" + intMaxScore); - return false; - } - - if (intMinScore < 0 || intMinScore > 100){ - WriteToDebug("ERROR - intMinScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetScore (must be between 0-100), intMinScore=" + intMinScore); - return false; - } - - if (SCORE_CAN_ONLY_IMPROVE === true){ - - var previousScore = GetScore(); - - if (previousScore != null && previousScore != "" && previousScore > intScore){ - WriteToDebug("Previous score was greater than new score, configuration only allows scores to improve, returning."); - return true; - } - } - - WriteToDebug("Calling to LMS"); - return objLMS.SetScore(intScore, intMaxScore, intMinScore); - -} - -//public -function SetPointBasedScore(intScore, intMaxScore, intMinScore){ - - WriteToDebug("In SetPointBasedScore, intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (! IsValidDecimal(intScore)){ - WriteToDebug("ERROR - intScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetScore (not a valid decimal), intScore=" + intScore); - return false; - } - - if (! IsValidDecimal(intMaxScore)){ - WriteToDebug("ERROR - intMaxScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetScore (not a valid decimal), intMaxScore=" + intMaxScore); - return false; - } - - if (! IsValidDecimal(intMinScore)){ - WriteToDebug("ERROR - intMinScore not a valid decimal"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetScore (not a valid decimal), intMinScore=" + intMinScore); - return false; - } - - WriteToDebug("Converting SCORES to floats"); - intScore = parseFloat(intScore); - intMaxScore = parseFloat(intMaxScore); - intMinScore = parseFloat(intMinScore); - - if (intScore < 0 || intScore > 100){ - WriteToDebug("ERROR - intScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetScore (must be between 0-100), intScore=" + intScore); - return false; - } - - if (intMaxScore < 0 || intMaxScore > 100){ - WriteToDebug("ERROR - intMaxScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetScore (must be between 0-100), intMaxScore=" + intMaxScore); - return false; - } - - if (intMinScore < 0 || intMinScore > 100){ - WriteToDebug("ERROR - intMinScore out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetScore (must be between 0-100), intMinScore=" + intMinScore); - return false; - } - - if (SCORE_CAN_ONLY_IMPROVE === true){ - - var previousScore = GetScore(); - - if (previousScore != null && previousScore != "" && previousScore > intScore){ - WriteToDebug("Previous score was greater than new score, configuration only allows scores to improve, returning."); - return true; - } - } - - WriteToDebug("Calling to LMS"); - return objLMS.SetPointBasedScore(intScore, intMaxScore, intMinScore); - -} - - -//class to hold a short and long version of an identifier for an interaction response -function CreateResponseIdentifier(strShort, strLong){ - - //validate that the short id is a single alphanumeric character - - if (strShort.replace(" ", "") == ""){ - WriteToDebug("Short Identifier is empty"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid short identifier, strShort=" + strShort); - return false; - } - - if (strShort.length != 1){ - WriteToDebug("ERROR - Short Identifier not 1 character"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid short identifier, strShort=" + strShort); - return false; - } - - if ( ! IsAlphaNumeric(strShort) ){ - WriteToDebug("ERROR - Short Identifier not alpha numeric"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid short identifier, strShort=" + strShort); - return false; - } - - //convert the short identifier to lower case because it is unclear in the SCORM 1.2 spec whether or not - //the response is allowed to be upper case and some LMS's may only allow lower case - strShort = strShort.toLowerCase(); - - strLong = CreateValidIdentifier(strLong); - - - return new ResponseIdentifier(strShort, strLong); -} - - - - -function ResponseIdentifier(strShort, strLong){ - this.Short = new String(strShort); - this.Long = new String(strLong); - - this.toString = function (){ - return "[Response Identifier " + this.Short + ", " + this.Long + "]"; - }; -} - -//Represents a response to a matching interaction -//Contains two values, a source and a target, each of which can be a string or a ResponseIdentifier -function MatchingResponse(source, target){ - - if (source.constructor == String){ - source = CreateResponseIdentifier(source, source); - } - - if (target.constructor == String){ - target = CreateResponseIdentifier(target, target); - } - - this.Source = source; - this.Target = target; - - this.toString = function (){ - return "[Matching Response " + this.Source + ", " + this.Target + "]"; - }; -} - -function CreateMatchingResponse(pattern) -{ - var aryPairs = new Array(); - var aryEachPair = new Array(); - pattern = new String(pattern); - - - aryPairs = pattern.split("[,]"); - - for(var i=0; i 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryResponse = response; - } - else if(window.console && response.constructor.toString() == '(Internal Function)' && response.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryResponse = response; - } - else{ - if(window.console){ - window.console.log("ERROR_INVALID_INTERACTION_RESPONSE :: The response is not in the correct format."); - } - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - - if (correctResponse != null && correctResponse != undefined && correctResponse != ""){ - if (correctResponse.constructor == String){ - - aryCorrectResponse = new Array(); - responseIdentifier = CreateResponseIdentifier(correctResponse, correctResponse); - - if (responseIdentifier == false){ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The correct response is not in the correct format"); - return false; - } - - aryCorrectResponse[0] = responseIdentifier; - - } - else if (correctResponse.constructor == ResponseIdentifier){ - aryCorrectResponse = new Array(); - aryCorrectResponse[0] = correctResponse; - } - else if (correctResponse.constructor == Array || correctResponse.constructor.toString().search("Array") > 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryCorrectResponse = correctResponse; - } - else if(window.console && correctResponse.constructor.toString() == '(Internal Function)' && correctResponse.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryCorrectResponse = correctResponse; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The correct response is not in the correct format"); - return false; - } - } - else{ - aryCorrectResponse = new Array(); - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordMultipleChoiceInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); - - -} - - -function RecordFillInInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - - WriteToDebug("In RecordFillInInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordFillInInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); - -} - - -//public -//strResponse and strCorrectResponse can be either: -// -a single MatchingResponse object -// -an array of MatchingResponse objects representing multiple selections that must be/were made - -function RecordMatchingInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - - WriteToDebug("In RecordMatchingInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - var aryResponse; - var aryCorrectResponse; - - if (response.constructor == MatchingResponse){ - aryResponse = new Array(); - aryResponse[0] = response; - } - else if (response.constructor == Array || response.constructor.toString().search("Array") > 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryResponse = response; - } - else if(window.console && response.constructor.toString() == '(Internal Function)' && response.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryResponse = response; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - if (correctResponse != null && correctResponse != undefined){ - if (correctResponse.constructor == MatchingResponse){ - aryCorrectResponse = new Array(); - aryCorrectResponse[0] = correctResponse; - } - else if (correctResponse.constructor == Array || correctResponse.constructor.toString().search("Array") > 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryCorrectResponse = correctResponse; - } - else if(window.console && correctResponse.constructor.toString() == '(Internal Function)' && correctResponse.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryCorrectResponse = correctResponse; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - } - else{ - aryCorrectResponse = new Array(); - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordMatchingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); - -} - -function RecordPerformanceInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - - WriteToDebug("In RecordPerformanceInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordPerformanceInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); -} - -//public -//response and correctResponse can be either: -// -a string representing the response -// -a single ResponseIdentifier object -// -an array of ResponseIdentifier objects representing multiple steps that must be/were made - -function RecordSequencingInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - - WriteToDebug("In RecordSequencingInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - - var aryResponse; - var aryCorrectResponse; - - //translate the 3 possible argument types into to an array of ResponseIdentifier objects to be passed to the standard functions - if (response.constructor == String){ - - aryResponse = new Array(); - var responseIdentifier = CreateResponseIdentifier(response, response); - - if (responseIdentifier == false){ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - aryResponse[0] = responseIdentifier; - } - else if (response.constructor == ResponseIdentifier){ - aryResponse = new Array(); - aryResponse[0] = response; - } - else if (response.constructor == Array || response.constructor.toString().search("Array") > 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryResponse = response; - } - else if(window.console && response.constructor.toString() == '(Internal Function)' && response.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryResponse = response; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - - if (correctResponse != null && correctResponse != undefined && correctResponse != ""){ - if (correctResponse.constructor == String){ - - aryCorrectResponse = new Array(); - responseIdentifier = CreateResponseIdentifier(correctResponse, correctResponse); - - if (responseIdentifier == false){ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The correct response is not in the correct format"); - return false; - } - - aryCorrectResponse[0] = responseIdentifier; - - } - else if (correctResponse.constructor == ResponseIdentifier){ - aryCorrectResponse = new Array(); - aryCorrectResponse[0] = correctResponse; - } - else if (correctResponse.constructor == Array || correctResponse.constructor.toString().search("Array") > 0){ //sometimes the array constructor isn't handled correctly so we check its string - aryCorrectResponse = correctResponse; - } - else if(window.console && correctResponse.constructor.toString() == '(Internal Function)' && correctResponse.length > 0){ - // we're in Safari. Safari doesn't return the Array function as a string like IE and FireFox. It does however return the ResponseIdentifier function as a string - aryCorrectResponse = correctResponse; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The correct response is not in the correct format"); - return false; - } - } - else{ - aryCorrectResponse = new Array(); - } - - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordSequencingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); - -} - -//public -//response and correctResponse can be either: -// -a string representing the response -// -a single ResponseIdentifier object - -function RecordLikertInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - - WriteToDebug("In RecordLikertInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - var riResponse; - var riCorrectResponse; - - //translate the 3 possible argument types into to an array of ResponseIdentifier objects to be passed to the standard functions - if (response.constructor == String){ - riResponse = CreateResponseIdentifier(response, response); - } - else if (response.constructor == ResponseIdentifier){ - riResponse = response; - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - - if (correctResponse == null || correctResponse == undefined){ - riCorrectResponse = null; - } - else if (correctResponse.constructor == ResponseIdentifier){ - riCorrectResponse = correctResponse; - } - else if (correctResponse.constructor == String){ - riCorrectResponse = CreateResponseIdentifier(correctResponse, correctResponse); - } - else{ - SetErrorInfo(ERROR_INVALID_INTERACTION_RESPONSE, "The response is not in the correct format"); - return false; - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordLikertInteraction(strID, riResponse, blnCorrect, riCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); - -} - -function RecordNumericInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID){ - WriteToDebug("In RecordNumericInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + ", strLearningObjectiveID=" + strLearningObjectiveID); - - if (!(typeof(DO_NOT_REPORT_INTERACTIONS) == "undefined") && DO_NOT_REPORT_INTERACTIONS === true){ - WriteToDebug("Configuration specifies interactions should not be reported, exiting."); - return true; - } - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - if (! IsValidDecimal(strResponse)){ - WriteToDebug("ERROR - Invalid Response, not a valid decmial"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Response passed to RecordNumericInteraction (not a valid decimal), strResponse=" + strResponse); - return false; - } - - if (strCorrectResponse != undefined && strCorrectResponse != null && IsValidDecimal(strCorrectResponse) == false){ - WriteToDebug("ERROR - Invalid Correct Response, not a valid decmial"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Correct Response passed to RecordNumericInteraction (not a valid decimal), strCorrectResponse=" + strCorrectResponse); - return false; - } - - var dtmTime = new Date(); - - WriteToDebug("Calling to LMS"); - return objLMS.RecordNumericInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime); -} - - -//State Functions - -//public -function GetStatus(){ - - WriteToDebug("In GetStatus"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return LESSON_STATUS_INCOMPLETE; - } - - return objLMS.GetStatus(); - -} - -//public -function ResetStatus(){ - WriteToDebug("In ResetStatus"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - WriteToDebug("Setting blnStatusWasSet to false"); - - blnStatusWasSet = false; - - return objLMS.ResetStatus(); -} - -//public -function GetProgressMeasure(){ - WriteToDebug("In GetProgressMeasure"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return LESSON_STATUS_INCOMPLETE; - } - - return objLMS.GetProgressMeasure(); -} -//public -function SetProgressMeasure(numMeasure){ - WriteToDebug("In SetProgressMeasure, passing in: "+ numMeasure); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return LESSON_STATUS_INCOMPLETE; - } - - return objLMS.SetProgressMeasure(numMeasure); -} - -//public -//optional to call -function SetPassed(){ - WriteToDebug("In SetPassed"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - WriteToDebug("Setting blnStatusWasSet to true"); - - blnStatusWasSet = true; - - return objLMS.SetPassed(); - -} - -//public -function SetFailed(){ - WriteToDebug("In SetFailed"); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - WriteToDebug("Setting blnStatusWasSet to true"); - - blnStatusWasSet = true; - - return objLMS.SetFailed(); - -} - - -//public -function GetEntryMode(){ - WriteToDebug("In GetEntryMode"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return ENTRY_FIRST_TIME; - } - - return objLMS.GetEntryMode(); - -} - -//public -function GetLessonMode(){ - WriteToDebug("In GetLessonMode"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return MODE_NORMAL; - } - - return objLMS.GetLessonMode(); - -} - -//public -function GetTakingForCredit(){ - WriteToDebug("In GetTakingForCredit"); - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetTakingForCredit(); - -} - - -//Objectives - -//public -function SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore){ - - WriteToDebug("In SetObjectiveScore, intObjectiveID=" + strObjectiveID + ", intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strObjectiveID = new String(strObjectiveID); - if (strObjectiveID.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid ObjectiveID, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid ObjectiveID passed to SetObjectiveScore (must have a value), strObjectiveID=" + strObjectiveID); - return false; - } - - if (! IsValidDecimal(intScore)){ - WriteToDebug("ERROR - Invalid Score, not a valid decmial"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetObjectiveScore (not a valid decimal), intScore=" + intScore); - return false; - } - - if (! IsValidDecimal(intMaxScore)){ - WriteToDebug("ERROR - Invalid Max Score, not a valid decmial"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetObjectiveScore (not a valid decimal), intMaxScore=" + intMaxScore); - return false; - } - - if (! IsValidDecimal(intMinScore)){ - WriteToDebug("ERROR - Invalid Min Score, not a valid decmial"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetObjectiveScore (not a valid decimal), intMinScore=" + intMinScore); - return false; - } - - WriteToDebug("Converting Scores to floats"); - intScore = parseFloat(intScore); - intMaxScore = parseFloat(intMaxScore); - intMinScore = parseFloat(intMinScore); - - if (intScore < 0 || intScore > 100){ - WriteToDebug("ERROR - Invalid Score, out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Score passed to SetObjectiveScore (must be between 0-100), intScore=" + intScore); - return false; - } - - if (intMaxScore < 0 || intMaxScore > 100){ - WriteToDebug("ERROR - Invalid Max Score, out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Score passed to SetObjectiveScore (must be between 0-100), intMaxScore=" + intMaxScore); - return false; - } - - if (intMinScore < 0 || intMinScore > 100){ - WriteToDebug("ERROR - Invalid Min Score, out of range"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Score passed to SetObjectiveScore (must be between 0-100), intMinScore=" + intMinScore); - return false; - } - - WriteToDebug("Calling To LMS"); - return objLMS.SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore); - -} - -//public -function SetObjectiveStatus(strObjectiveID, Lesson_Status){ - - WriteToDebug("In SetObjectiveStatus strObjectiveID=" + strObjectiveID + ", Lesson_Status=" + Lesson_Status); - - ClearErrorInfo(); - - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - - strObjectiveID = new String(strObjectiveID); - if (strObjectiveID.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid ObjectiveID, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid ObjectiveID passed to SetObjectiveStatus (must have a value), strObjectiveID=" + strObjectiveID); - return false; - } - - if ( - (Lesson_Status != LESSON_STATUS_PASSED) && - (Lesson_Status != LESSON_STATUS_COMPLETED) && - (Lesson_Status != LESSON_STATUS_FAILED) && - (Lesson_Status != LESSON_STATUS_INCOMPLETE) && - (Lesson_Status != LESSON_STATUS_BROWSED) && - (Lesson_Status != LESSON_STATUS_NOT_ATTEMPTED) - ){ - WriteToDebug("ERROR - Invalid Status"); - SetErrorInfo(ERROR_INVALID_STATUS, "Invalid status passed to SetObjectiveStatus, Lesson_Status=" + Lesson_Status); - return false; - - } - - WriteToDebug("Calling To LMS"); - return objLMS.SetObjectiveStatus(strObjectiveID, Lesson_Status); - - -} - - -//public -function GetObjectiveStatus(strObjectiveID){ - - WriteToDebug("In GetObjectiveStatus, strObjectiveID=" + strObjectiveID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetObjectiveStatus(strObjectiveID); -} - - - - -//public -function SetObjectiveDescription(strObjectiveID, strObjectiveDescription){ - - WriteToDebug("In SetObjectiveDescription strObjectiveID=" + strObjectiveID + ", strObjectiveDescription=" + strObjectiveDescription); - - ClearErrorInfo(); - - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - - strObjectiveID = new String(strObjectiveID); - if (strObjectiveID.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid ObjectiveID, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid ObjectiveID passed to SetObjectiveStatus (must have a value), strObjectiveID=" + strObjectiveID); - return false; - } - - - //include validation for string length? - - WriteToDebug("Calling To LMS"); - return objLMS.SetObjectiveDescription(strObjectiveID, strObjectiveDescription); - - -} - - -//public -function GetObjectiveDescription(strObjectiveID){ - - WriteToDebug("In GetObjectiveDescription, strObjectiveID=" + strObjectiveID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetObjectiveDescription(strObjectiveID); -} - - - - - -//public -function GetObjectiveScore(strObjectiveID){ - - WriteToDebug("In GetObjectiveScore, strObjectiveID=" + strObjectiveID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetObjectiveScore(strObjectiveID); -} - - -//public -function IsLmsPresent(){ - return blnLmsPresent; -} - -//public -function SetObjectiveProgressMeasure(strObjectiveID, strObjectiveProgressMeasure){ - - WriteToDebug("In SetObjectiveProgressMeasure strObjectiveID=" + strObjectiveID + ", strObjectiveProgressMeasure=" + strObjectiveProgressMeasure); - - ClearErrorInfo(); - - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - - strObjectiveID = new String(strObjectiveID); - if (strObjectiveID.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid ObjectiveID, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid ObjectiveID passed to SetObjectiveProgressMeasure (must have a value), strObjectiveID=" + strObjectiveID); - return false; - } - - - //include validation for string length? - - WriteToDebug("Calling To LMS"); - return objLMS.SetObjectiveProgressMeasure(strObjectiveID, strObjectiveProgressMeasure); - - -} - - -//public -function GetObjectiveProgressMeasure(strObjectiveID){ - - WriteToDebug("In GetObjectiveProgressMeasure, strObjectiveID=" + strObjectiveID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetObjectiveProgressMeasure(strObjectiveID); -} - - - -//NOTE ON INTERACTION RETRIEVAL -//A. It is only available in certain standards, standards where it is unavailable will return nothing -//B. The interaction records are currently reported using "journaling", whereby each entry is appended -// Retrieval methods will retrieve only the most recent value -//public -function GetInteractionType(strInteractionID) -{ - WriteToDebug("In GetInteractionType, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionType(strInteractionID); -} - -//public -function GetInteractionTimestamp(strInteractionID) -{ - WriteToDebug("In GetInteractionTimestamp, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionTimestamp(strInteractionID); -} - - - -//public -function GetInteractionCorrectResponses(strInteractionID) -{ - WriteToDebug("In GetInteractionCorrectResponses, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionCorrectResponses(strInteractionID); -} - - - -//public -function GetInteractionWeighting(strInteractionID) -{ - WriteToDebug("In GetInteractionWeighting, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionWeighting(strInteractionID); -} - - - -//public -function GetInteractionLearnerResponses(strInteractionID) -{ - WriteToDebug("In GetInteractionLearnerResponses, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionLearnerResponses(strInteractionID); -} - - - -//public -function GetInteractionResult(strInteractionID) -{ - WriteToDebug("In GetInteractionResult, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionResult(strInteractionID); -} - - - -//public -function GetInteractionLatency(strInteractionID) -{ - WriteToDebug("In GetInteractionLatency, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionLatency(strInteractionID); -} - - - -//public -function GetInteractionDescription(strInteractionID) -{ - WriteToDebug("In GetInteractionDescription, strInteractionID=" + strInteractionID); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - return objLMS.GetInteractionDescription(strInteractionID); -} - - -//public -/* -Bucket sizes are listed in characters. In SCORM, all transmitted data is represented as JavaScript strings. -JavaScript strings use two bytes for each character so the actual size (in bytes) of what is allocated will be -double the value that is passed to this function. -*/ -function CreateDataBucket(strBucketId, intMinSize, intMaxSize){ - - WriteToDebug("In CreateDataBucket, strBucketId=" + strBucketId + ", intMinSize=" + intMinSize + ", intMaxSize=" + intMaxSize); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strBucketId = new String(strBucketId); - if (strBucketId.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid BucketId, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid strBucketId passed to CreateDataBucket (must have a value), strBucketId=" + strBucketId); - return false; - } - - if ( ! ValidInteger(intMinSize) ){ - WriteToDebug("ERROR Invalid Min Size, not an integer"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid intMinSize passed to CreateDataBucket (not an integer), intMinSize=" + intMinSize); - return false; - } - - if ( ! ValidInteger(intMaxSize) ){ - WriteToDebug("ERROR Invalid Max Size, not an integer"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid intMaxSize passed to CreateDataBucket (not an integer), intMaxSize=" + intMaxSize); - return false; - } - - intMinSize = parseInt(intMinSize, 10); - intMaxSize = parseInt(intMaxSize, 10); - - if (intMinSize < 0){ - WriteToDebug("ERROR Invalid Min Size, must be greater than or equal to 0"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Min Size passed to CreateDataBucket (must be greater than or equal to 0), intMinSize=" + intMinSize); - return false; - } - - if (intMaxSize <= 0){ - WriteToDebug("ERROR Invalid Max Size, must be greater than 0"); - SetErrorInfo(ERROR_INVALID_NUMBER, "Invalid Max Size passed to CreateDataBucket (must be greater than 0), intMaxSize=" + intMaxSize); - return false; - } - - //need to double the values to get from "characters" (the representation exposed by this API) to "octets" the value used by SSP - intMinSize = (intMinSize * 2); - intMaxSize = (intMaxSize * 2); - - return objLMS.CreateDataBucket(strBucketId, intMinSize, intMaxSize); -} - -//public -function GetDataFromBucket(strBucketId){ - - WriteToDebug("In GetDataFromBucket, strBucketId=" + strBucketId); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strBucketId = new String(strBucketId); - if (strBucketId.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid BucketId, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid strBucketId passed to GetDataFromBucket (must have a value), strBucketId=" + strBucketId); - return false; - } - - return objLMS.GetDataFromBucket(strBucketId); -} - -//public -function PutDataInBucket(strBucketId, strData, blnAppendToEnd){ - - WriteToDebug("In PutDataInBucket, strBucketId=" + strBucketId + ", blnAppendToEnd=" + blnAppendToEnd + ", strData=" + strData); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strBucketId = new String(strBucketId); - if (strBucketId.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid BucketId, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid strBucketId passed to PutDataInBucket (must have a value), strBucketId=" + strBucketId); - return false; - } - - if (blnAppendToEnd != true){ - WriteToDebug("blnAppendToEnd was not explicitly true so setting it to false, blnAppendToEnd=" + blnAppendToEnd); - blnAppendToEnd = false; - } - - return objLMS.PutDataInBucket(strBucketId, strData, blnAppendToEnd); -} - -//public -function DetectSSPSupport(){ - return objLMS.DetectSSPSupport(); -} - -//public returns a SSPBucketSize object containing information about the allocated size of the specified bucket -function GetBucketInfo(strBucketId){ - - WriteToDebug("In GetBucketInfo, strBucketId=" + strBucketId ); - - ClearErrorInfo(); - - if (! IsLoaded()){ - SetErrorInfo(ERROR_NOT_LOADED, "Cannot make calls to the LMS before calling Start"); - return false; - } - - strBucketId = new String(strBucketId); - if (strBucketId.replace(" ", "") == ""){ - WriteToDebug("ERROR - Invalid BucketId, empty string"); - SetErrorInfo(ERROR_INVALID_ID, "Invalid strBucketId passed to GetBucketInfo (must have a value), strBucketId=" + strBucketId); - return false; - } - - var bucketInfo = objLMS.GetBucketInfo(strBucketId); - - //bucket size needs to be halfed to translate from octets to characters - bucketInfo.TotalSpace = (bucketInfo.TotalSpace / 2); - bucketInfo.UsedSpace = (bucketInfo.UsedSpace / 2); - - WriteToDebug("GetBucketInfo returning " + bucketInfo ); - - return bucketInfo; -} - - -//Represents the size of an SSP Bucket -//Contains two values, a total space and used space, each of which is represented in characters -function SSPBucketSize(totalSpace, usedSpace){ - - this.TotalSpace = totalSpace; - this.UsedSpace = usedSpace; - - this.toString = function (){ - return "[SSPBucketSize " + this.TotalSpace + ", " + this.UsedSpace + "]"; - }; -} diff --git a/examples/AQuizmaker SCORM12/lms/APIConstants.js b/examples/AQuizmaker SCORM12/lms/APIConstants.js deleted file mode 100755 index d9fcfbf..0000000 --- a/examples/AQuizmaker SCORM12/lms/APIConstants.js +++ /dev/null @@ -1,56 +0,0 @@ - -var VERSION = "3.8.2"; - -var PREFERENCE_DEFAULT = 0; -var PREFERENCE_OFF = -1; -var PREFERENCE_ON = 1; - -var LESSON_STATUS_PASSED = 1; //the user completed the content with a score sufficient to pass -var LESSON_STATUS_COMPLETED = 2; //the user completed the content -var LESSON_STATUS_FAILED = 3; //the user completed the content but his/her score was not sufficient to pass -var LESSON_STATUS_INCOMPLETE = 4; //the user began the content but did not complete it -var LESSON_STATUS_BROWSED = 5; //the user looked at the content but was not making a recorded attempt at it -var LESSON_STATUS_NOT_ATTEMPTED = 6; //the user has not started the content - -var ENTRY_REVIEW = 1; -var ENTRY_FIRST_TIME = 2; -var ENTRY_RESUME = 3; - -var MODE_NORMAL = 1; -var MODE_BROWSE = 2; -var MODE_REVIEW = 3; - -var MAX_CMI_TIME = 36002439990; //max CMI Timespan 9999:99:99.99 - -var NO_ERROR = 0; -var ERROR_LMS = 1; -var ERROR_INVALID_PREFERENCE = 2; -var ERROR_INVALID_NUMBER = 3; -var ERROR_INVALID_ID = 4; -var ERROR_INVALID_STATUS = 5; -var ERROR_INVALID_RESPONSE = 6; -var ERROR_NOT_LOADED = 7; -var ERROR_INVALID_INTERACTION_RESPONSE = 8; - -var EXIT_TYPE_SUSPEND = "SUSPEND"; -var EXIT_TYPE_FINISH = "FINISH"; -var EXIT_TYPE_TIMEOUT = "TIMEOUT"; -var EXIT_TYPE_UNLOAD = "UNLOAD"; - -var INTERACTION_RESULT_CORRECT = "CORRECT"; -var INTERACTION_RESULT_WRONG = "WRONG"; -var INTERACTION_RESULT_UNANTICIPATED = "UNANTICIPATED"; -var INTERACTION_RESULT_NEUTRAL = "NEUTRAL"; - -var INTERACTION_TYPE_TRUE_FALSE = "true-false"; -var INTERACTION_TYPE_CHOICE = "choice"; -var INTERACTION_TYPE_FILL_IN = "fill-in"; -var INTERACTION_TYPE_LONG_FILL_IN = "long-fill-in"; -var INTERACTION_TYPE_MATCHING = "matching"; -var INTERACTION_TYPE_PERFORMANCE = "performance"; -var INTERACTION_TYPE_SEQUENCING = "sequencing"; -var INTERACTION_TYPE_LIKERT = "likert"; -var INTERACTION_TYPE_NUMERIC = "numeric"; - -var DATA_CHUNK_PAIR_SEPARATOR = '###'; -var DATA_CHUNK_VALUE_SEPARATOR = '$$'; diff --git a/examples/AQuizmaker SCORM12/lms/Configuration.js b/examples/AQuizmaker SCORM12/lms/Configuration.js deleted file mode 100755 index d0e9c4e..0000000 --- a/examples/AQuizmaker SCORM12/lms/Configuration.js +++ /dev/null @@ -1,70 +0,0 @@ -//Configuration Parameters -var blnDebug = true; //set this to false if you don't want the overhead of recording debug information - -var strLMSStandard = "SCORM"; //used in versions that support multiple standards, set to "NONE" to default - //to StandAlone mode. Possible values = "NONE", "SCORM", "AICC", ""SCORM2004", "AUTO" - //AUTO mode will automatically determine the best standard to use (it first tries SCORM 2004, then SCORM 1.2/1.1 then AICC, then NONE) - -var DEFAULT_EXIT_TYPE = EXIT_TYPE_SUSPEND; //When the content is unloaded without an API function indicating the type of exit, - //what default behavior do you want to assume. Use EXIT_TYPE_SUSPEND if you plan to - //call Finish when the content is complete. Use EXIT_TYPE_FINISH if you do not plan - //to call Finish. - - -var AICC_LESSON_ID = "1"; //if recording question answers in AICC in an LMS that supports interactions, - //this field need to match the system_id on line in the .DES file that describes - //this course, the default is 1. Be sure that this value does not contain double quote characters (") - -var EXIT_BEHAVIOR = "SCORM_RECOMMENDED"; //used to control window closing behavior on call of ConcedeControl - //Possible Values: SCORM_RECOMMENDED, ALWAYS_CLOSE, ALWAYS_CLOSE_TOP, NOTHING, REDIR_CONTENT_FRAME, LMS_SPECIFIED_REDIRECT - -var EXIT_TARGET = "lms/goodbye.html"; //Used in conjunction with EXIT_BEHAVIOR, only with REDIR_CONTENT_FRAME. This should be a neutral page that is displayed - //after the course has exited, but before it has been taked away by the LMS - -var LMS_SPECIFIED_REDIRECT_EVAL_STATEMENT = ""; //JS to be eval'ed during exit ONLY with EXIT_BEHAVIOR of LMS_SPECIFIED_REDIRECT - -var AICC_COMM_DISABLE_XMLHTTP = false; //false is the preferred value, true can be required in certain cross domain situations -var AICC_COMM_DISABLE_IFRAME = false; //false is the preferred value, true can be required in certain cross domain situations - -var AICC_COMM_PREPEND_HTTP_IF_MISSING = true; //Some AICC LMS's will omit the "http://" from the AICC_URL value. If this is the case, - //set this setting to true to have the API prepend the "http://" value - -var AICC_REPORT_MIN_MAX_SCORE = false; //Some AICC LMS's have trouble processing a score which contains a min and max value. Setting this - //value to false allows you to turn off that reporting to accommodate those LMS's. - - -var SHOW_DEBUG_ON_LAUNCH = false; //set this to true when debugging to force the debug window to launch immediately - -var DO_NOT_REPORT_INTERACTIONS = false; //set this to true to disable reporting of question results to the LMS as some LMS's - //particularly those supporting only AICC can have problems with interactions results - - -var SCORE_CAN_ONLY_IMPROVE = false; //set this to true to ensure that on subsequent attempts, a learner's score can only go up - -var REVIEW_MODE_IS_READ_ONLY = true; //set this to true if no new data should be saved when a course is launched in review mode (normally this is the LMS's responsibility) - - - - -/* -These variables control how long the API should wait on an AICC form submission before timing out -AICC_RE_CHECK_LOADED_INTERVAL = Number of milliseconds the API waits between checks to see if the form is loaded -AICC_RE_CHECK_ATTEMPTS_BEFORE_TIMEOUT = Number of times the API checks to see if the form is loaded -AICC_RE_CHECK_LOADED_INTERVAL * AICC_RE_CHECK_ATTEMPTS_BEFORE_TIMEOUT = Desired time out in milliseconds -*/ -var AICC_RE_CHECK_LOADED_INTERVAL = 250; -var AICC_RE_CHECK_ATTEMPTS_BEFORE_TIMEOUT = 240; - -var USE_AICC_KILL_TIME = true; //set this to false to disable the explicit extra waiting between AICC requests - -//This controls the entry default when it is not set by the LMS -//Possible options are -//ENTRY_REVIEW (normal default) - ENTRY_FIRST_TIME - ENTRY_RESUME -var AICC_ENTRY_FLAG_DEFAULT = ENTRY_REVIEW; - - -var FORCED_COMMIT_TIME = "60000"; //Used to force CommitData back to the LMS at the desired interval (in milliseconds). Set to 0 (zero) to not force a commit time. - -var ALLOW_NONE_STANDARD = true;//Set this to false to show an error message if no SCORM or AICC API can be found - Standalone will still work fine. - -var USE_2004_SUSPENDALL_NAVREQ = false; \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/lms/LMSAPI.js b/examples/AQuizmaker SCORM12/lms/LMSAPI.js deleted file mode 100755 index 76e0297..0000000 --- a/examples/AQuizmaker SCORM12/lms/LMSAPI.js +++ /dev/null @@ -1,90 +0,0 @@ - -function LMSStandardAPI(strStandard){ - - WriteToDebug("In LMSStandardAPI strStandard=" + strStandard); - - if (strStandard == ""){ - WriteToDebug("No standard specified, using NONE"); - strStandard = "NONE"; - } - - eval ("this.Initialize = " + strStandard + "_Initialize"); - eval ("this.Finish = " + strStandard + "_Finish"); - eval ("this.CommitData = " + strStandard + "_CommitData"); - eval ("this.GetStudentID = " + strStandard + "_GetStudentID"); - eval ("this.GetStudentName = " + strStandard + "_GetStudentName"); - eval ("this.GetBookmark = " + strStandard + "_GetBookmark"); - eval ("this.SetBookmark = " + strStandard + "_SetBookmark"); - eval ("this.GetDataChunk = " + strStandard + "_GetDataChunk"); - eval ("this.SetDataChunk = " + strStandard + "_SetDataChunk"); - eval ("this.GetLaunchData = " + strStandard + "_GetLaunchData"); - eval ("this.GetComments = " + strStandard + "_GetComments"); - eval ("this.WriteComment = " + strStandard + "_WriteComment"); - eval ("this.GetLMSComments = " + strStandard + "_GetLMSComments"); - eval ("this.GetAudioPlayPreference = " + strStandard + "_GetAudioPlayPreference"); - eval ("this.GetAudioVolumePreference = " + strStandard + "_GetAudioVolumePreference"); - eval ("this.SetAudioPreference = " + strStandard + "_SetAudioPreference"); - eval ("this.SetLanguagePreference = " + strStandard + "_SetLanguagePreference"); - eval ("this.GetLanguagePreference = " + strStandard + "_GetLanguagePreference"); - eval ("this.SetSpeedPreference = " + strStandard + "_SetSpeedPreference"); - eval ("this.GetSpeedPreference = " + strStandard + "_GetSpeedPreference"); - eval ("this.SetTextPreference = " + strStandard + "_SetTextPreference"); - eval ("this.GetTextPreference = " + strStandard + "_GetTextPreference"); - eval ("this.GetPreviouslyAccumulatedTime = " + strStandard + "_GetPreviouslyAccumulatedTime"); - eval ("this.SaveTime = " + strStandard + "_SaveTime"); - eval ("this.GetMaxTimeAllowed = " + strStandard + "_GetMaxTimeAllowed"); - eval ("this.DisplayMessageOnTimeout = " + strStandard + "_DisplayMessageOnTimeout"); - eval ("this.ExitOnTimeout = " + strStandard + "_ExitOnTimeout"); - eval ("this.GetPassingScore = " + strStandard + "_GetPassingScore"); - eval ("this.SetScore = " + strStandard + "_SetScore"); - eval ("this.GetScore = " + strStandard + "_GetScore"); - eval ("this.GetScaledScore = " + strStandard + "_GetScaledScore"); - - eval ("this.RecordTrueFalseInteraction = " + strStandard + "_RecordTrueFalseInteraction"); - eval ("this.RecordMultipleChoiceInteraction = " + strStandard + "_RecordMultipleChoiceInteraction"); - eval ("this.RecordFillInInteraction = " + strStandard + "_RecordFillInInteraction"); - eval ("this.RecordMatchingInteraction = " + strStandard + "_RecordMatchingInteraction"); - eval ("this.RecordPerformanceInteraction = " + strStandard + "_RecordPerformanceInteraction"); - eval ("this.RecordSequencingInteraction = " + strStandard + "_RecordSequencingInteraction"); - eval ("this.RecordLikertInteraction = " + strStandard + "_RecordLikertInteraction"); - eval ("this.RecordNumericInteraction = " + strStandard + "_RecordNumericInteraction"); - - eval ("this.GetEntryMode = " + strStandard + "_GetEntryMode"); - eval ("this.GetLessonMode = " + strStandard + "_GetLessonMode"); - eval ("this.GetTakingForCredit = " + strStandard + "_GetTakingForCredit"); - eval ("this.SetObjectiveScore = " + strStandard + "_SetObjectiveScore"); - eval ("this.SetObjectiveStatus = " + strStandard + "_SetObjectiveStatus"); - eval ("this.GetObjectiveScore = " + strStandard + "_GetObjectiveScore"); - eval ("this.GetObjectiveStatus = " + strStandard + "_GetObjectiveStatus"); - eval ("this.SetObjectiveDescription = " + strStandard + "_SetObjectiveDescription"); - eval ("this.GetObjectiveDescription = " + strStandard + "_GetObjectiveDescription"); - eval ("this.SetFailed = " + strStandard + "_SetFailed"); - eval ("this.SetPassed = " + strStandard + "_SetPassed"); - eval ("this.SetCompleted = " + strStandard + "_SetCompleted"); - eval ("this.ResetStatus = " + strStandard + "_ResetStatus"); - eval ("this.GetStatus = " + strStandard + "_GetStatus"); - eval ("this.GetLastError = " + strStandard + "_GetLastError"); - eval ("this.GetLastErrorDesc = " + strStandard + "_GetLastErrorDesc"); - - eval ("this.GetInteractionType = " + strStandard + "_GetInteractionType"); - eval ("this.GetInteractionTimestamp = " + strStandard + "_GetInteractionTimestamp"); - eval ("this.GetInteractionCorrectResponses = " + strStandard + "_GetInteractionCorrectResponses"); - eval ("this.GetInteractionWeighting = " + strStandard + "_GetInteractionWeighting"); - eval ("this.GetInteractionLearnerResponses = " + strStandard + "_GetInteractionLearnerResponses"); - eval ("this.GetInteractionResult = " + strStandard + "_GetInteractionResult"); - eval ("this.GetInteractionLatency = " + strStandard + "_GetInteractionLatency"); - eval ("this.GetInteractionDescription = " + strStandard + "_GetInteractionDescription"); - - eval ("this.CreateDataBucket = " + strStandard + "_CreateDataBucket"); - eval ("this.GetDataFromBucket = " + strStandard + "_GetDataFromBucket"); - eval ("this.PutDataInBucket = " + strStandard + "_PutDataInBucket"); - eval ("this.DetectSSPSupport = " + strStandard + "_DetectSSPSupport"); - eval ("this.GetBucketInfo = " + strStandard + "_GetBucketInfo"); - - eval ("this.GetProgressMeasure = " + strStandard + "_GetProgressMeasure"); - eval ("this.SetProgressMeasure = " + strStandard + "_SetProgressMeasure"); - - eval ("this.SetPointBasedScore = " + strStandard + "_SetPointBasedScore"); - - this.Standard = strStandard; -} diff --git a/examples/AQuizmaker SCORM12/lms/NONEFunctions.js b/examples/AQuizmaker SCORM12/lms/NONEFunctions.js deleted file mode 100755 index a6edbe7..0000000 --- a/examples/AQuizmaker SCORM12/lms/NONEFunctions.js +++ /dev/null @@ -1,462 +0,0 @@ - -function NONE_Initialize(){ - WriteToDebug("In NONE_Initialize, Returning true"); - - InitializeExecuted(true, ""); - - return true; -} - - -function NONE_Finish(strExitType, blnStatusWasSet){ - WriteToDebug("In NONE_Finish, Returning true"); - return true; -} - - -function NONE_CommitData(){ - WriteToDebug("In NONE_CommitData, Returning true"); - return true; -} - -function NONE_GetStudentID(){ - WriteToDebug("In NONE_GetStudentID, Returning ''"); - return ""; -} - -function NONE_GetStudentName(){ - WriteToDebug("In NONE_GetStudentName, Returning ''"); - return ""; -} - -function NONE_GetBookmark(){ - WriteToDebug("In NONE_GetBookmark, Returning ''"); - return ""; -} - -function NONE_SetBookmark(strBookmark){ - WriteToDebug("In NONE_SetBookmark, Returning true"); - return true; -} - -function NONE_GetDataChunk(){ - WriteToDebug("In NONE_GetDataChunk, Returning ''"); - return ""; -} - -function NONE_SetDataChunk(strData){ - WriteToDebug("In NONE_SetDataChunk, Returning true"); - return true; -} - - -function NONE_GetLaunchData(){ - WriteToDebug("In NONE_GetLaunchData, Returning ''"); - return ""; -} - -function NONE_GetComments(){ - WriteToDebug("In NONE_GetComments, Returning ''"); - return ""; -} - -function NONE_WriteComment(strComment){ - WriteToDebug("In NONE_WriteComment, Returning true"); - return true; -} - -function NONE_GetLMSComments(){ - WriteToDebug("In NONE_GetLMSComments, Returning ''"); - return ""; -} - - -function NONE_GetAudioPlayPreference(){ - WriteToDebug("In NONE_GetAudioPlayPreference, Returning " + PREFERENCE_DEFAULT); - return PREFERENCE_DEFAULT; -} - - - -function NONE_GetAudioVolumePreference(){ - WriteToDebug("In NONE_GetAudioVolumePreference, Returning 100"); - return 100; -} - - -function NONE_SetAudioPreference(PlayPreference, intPercentOfMaxSpeed){ - WriteToDebug("In NONE_SetAudioPreference, Returning true"); - return true; -} - - - -function NONE_SetLanguagePreference(strLanguage){ - WriteToDebug("In NONE_SetLanguagePreference, Returning true"); - return true; -} - - -function NONE_GetLanguagePreference(){ - WriteToDebug("In NONE_GetLanguagePreference, Returning ''"); - return ""; -} - - -function NONE_SetSpeedPreference(intPercentOfMax){ - WriteToDebug("In NONE_SetSpeedPreference, Returning true"); - return true; -} - - -function NONE_GetSpeedPreference(){ - WriteToDebug("In NONE_GetSpeedPreference, Returning 100"); - return 100; -} - -function NONE_SetTextPreference(intPreference){ - WriteToDebug("In NONE_SetTextPreference, Returning true"); - return true; -} - - -function NONE_GetTextPreference(){ - WriteToDebug("In NONE_GetTextPreference, Returning " + PREFERENCE_DEFAULT); - return PREFERENCE_DEFAULT; -} - -function NONE_GetPreviouslyAccumulatedTime(){ - WriteToDebug("In NONE_GetPreviouslyAccumulatedTime, Returning 0"); - return 0; -} - - -function NONE_SaveTime(intMilliSeconds){ - WriteToDebug("In intMilliSeconds, Returning true"); - return true; -} - -function NONE_GetMaxTimeAllowed(){ - WriteToDebug("In NONE_GetMaxTimeAllowed, Returning 36002439999"); - return MAX_CMI_TIME; -} - - - -function NONE_DisplayMessageOnTimeout(){ - WriteToDebug("In NONE_DisplayMessageOnTimeout, Returning false"); - return false; -} - -function NONE_ExitOnTimeout(){ - WriteToDebug("In NONE_ExitOnTimeout, Returning false"); - return false; -} - - -function NONE_GetPassingScore(){ - WriteToDebug("In NONE_GetPassingScore, Returning ''"); - return ''; -} - - - -function NONE_GetScore(){ - WriteToDebug("In NONE_GetScore, Returning 0"); - return 0; -} - -function NONE_SetScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("In NONE_SetScore, Returning true"); - return true; -} - - - -function NONE_RecordTrueFalseInteraction(){ - WriteToDebug("In NONE_RecordTrueFalseInteraction, Returning true"); - return true; -} -function NONE_RecordMultipleChoiceInteraction(strID, strResponse, blnCorrect, strCorrectResponse){ - WriteToDebug("In NONE_RecordMultipleChoiceInteraction, Returning true"); - return true; -} -function NONE_RecordFillInInteraction(){ - WriteToDebug("In NONE_RecordFillInInteraction, Returning true"); - return true; -} -function NONE_RecordMatchingInteraction(){ - WriteToDebug("In NONE_RecordMatchingInteraction, Returning true"); - return true; -} -function NONE_RecordPerformanceInteraction(){ - WriteToDebug("In NONE_RecordPerformanceInteraction, Returning true"); - return true; -} -function NONE_RecordSequencingInteraction(){ - WriteToDebug("In NONE_RecordSequencingInteraction, Returning true"); - return true; -} -function NONE_RecordLikertInteraction(){ - WriteToDebug("In RecordLikertInteraction, Returning true"); - return true; -} -function NONE_RecordNumericInteraction(){ - WriteToDebug("In NONE_RecordNumericInteraction, Returning true"); - return true; -} - - -function NONE_GetEntryMode(){ - WriteToDebug("In NONE_GetEntryMode, Returning " + ENTRY_FIRST_TIME); - return ENTRY_FIRST_TIME; -} - -function NONE_GetLessonMode(){ - WriteToDebug("In NONE_GetLessonMode, Returning " + MODE_NORMAL); - return MODE_NORMAL; -} - -function NONE_GetTakingForCredit(){ - WriteToDebug("In NONE_GetTakingForCredit, Returning true"); - return true; -} - - - -function NONE_SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore){ - WriteToDebug("In NONE_SetObjectiveScore, Returning true"); - return true; -} - - -function NONE_SetObjectiveStatus(strObjectiveID, Lesson_Status){ - WriteToDebug("In NONE_SetObjectiveStatus, Returning true"); - return true; -} - -function NONE_SetObjectiveDescription(strObjectiveID, strObjectiveDescription){ - WriteToDebug("In NONE_SetObjectiveDescription, Returning true"); - return true; -} - - -function NONE_GetObjectiveScore(strObjectiveID){ - WriteToDebug("In NONE_SetObjectiveScore, Returning ''"); - return ''; -} - - -function NONE_GetObjectiveStatus(strObjectiveID){ - WriteToDebug("In NONE_SetObjectiveStatus, Returning Not Attempted"); - return LESSON_STATUS_NOT_ATTEMPTED; -} - -function NONE_GetObjectiveDescription(strObjectiveID){ - WriteToDebug("In NONE_GetObjectiveDescription, ''"); - return ""; -} - - - -//___________________________________________________________ -//Interaction Retrieval Functionality -//NOTE ON INTERACTION RETRIEVAL -//A. It is only available in certain standards, standards where it is unavailable will return nothing -//B. The interaction records are currently reported using "journaling", whereby each entry is appended -// Retrieval methods will retrieve only the most recent value - - -//___________________________________________________________ -//Helper Methods -function NONE_FindInteractionIndexFromID(strInteractionID){ - - WriteToDebug("NONE_FindInteractionIndexFromID - NONE does not support interaction retrieval, returning null"); - - return null; -} -//___________________________________________________________ - - -function NONE_GetInteractionType(strInteractionID) -{ - - WriteToDebug("NONE_GetInteractionType - NONE does not support interaction retrieval, returning empty string"); - return ''; - - -} - -//public -function NONE_GetInteractionTimestamp(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionTimestamp - NONE does not support interaction retrieval, returning empty string"); - return ''; -} - - - -//public -function NONE_GetInteractionCorrectResponses(strInteractionID) -{ - - WriteToDebug("NONE_GetInteractionCorrectResponses - NONE does not support interaction retrieval, returning empty array"); - return new Array(); - - -} - - - -//public -function NONE_GetInteractionWeighting(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionWeighting - NONE does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function NONE_GetInteractionLearnerResponses(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionLearnerResponses - NONE does not support interaction retrieval, returning empty array"); - return new Array(); - - -} - - -//public -function NONE_GetInteractionResult(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionResult - NONE does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function NONE_GetInteractionLatency(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionDescription - NONE does not support interaction retrieval, returning empty string"); - return ''; - -} - - - -//public -function NONE_GetInteractionDescription(strInteractionID) -{ - WriteToDebug("NONE_GetInteractionDescription - NONE does not support interaction retrieval, returning empty string"); - return ''; - - -} - -//public -function NONE_CreateDataBucket(strBucketId, intMinSize, intMaxSize){ - WriteToDebug("NONE_CreateDataBucket - NONE does not support SSP, returning false"); - return false; -} - -//public -function NONE_GetDataFromBucket(strBucketId){ - WriteToDebug("NONE_GetDataFromBucket - NONE does not support SSP, returning empty string"); - return ""; -} - -//public -function NONE_PutDataInBucket(strBucketId, strData, blnAppendToEnd){ - WriteToDebug("NONE_PutDataInBucket - NONE does not support SSP, returning false"); - return false; -} - -//public -function NONE_DetectSSPSupport(){ - WriteToDebug("NONE_DetectSSPSupport - NONE does not support SSP, returning false"); - return false; -} - -//public -function NONE_GetBucketInfo(strBucketId){ - WriteToDebug("NONE_DetectSSPSupport - NONE does not support SSP, returning empty SSPBucketSize"); - return new SSPBucketSize(0, 0); -} - - -//________________________________________________ - - - - -function NONE_SetFailed(){ - WriteToDebug("In NONE_SetFailed, Returning true"); - return true; -} - -function NONE_SetPassed(){ - WriteToDebug("In NONE_SetPassed, Returning true"); - return true; -} - -function NONE_SetCompleted(){ - WriteToDebug("In NONE_SetCompleted, Returning true"); - return true; -} - -function NONE_ResetStatus(){ - WriteToDebug("In NONE_ResetStatus, Returning true"); - return true; -} - -function NONE_GetStatus(){ - WriteToDebug("In NONE_GetStatus, Returning " + LESSON_STATUS_INCOMPLETE); - return LESSON_STATUS_INCOMPLETE; -} - -//public -function NONE_GetProgressMeasure(){ - WriteToDebug("NONE_GetProgressMeasure - NONE does not support progress_measure, returning false"); - return false; -} -//public -function NONE_SetProgressMeasure(){ - WriteToDebug("NONE_SetProgressMeasure - NONE does not support progress_measure, returning false"); - return false; -} - -//public -function NONE_GetObjectiveProgressMeasure(){ - WriteToDebug("NONE_GetObjectiveProgressMeasure - NONE does not support progress_measure, returning false"); - return false; -} -//public -function NONE_SetObjectiveProgressMeasure(){ - WriteToDebug("NONE_SetObjectiveProgressMeasure - NONE does not support progress_measure, returning false"); - return false; -} - -function NONE_SetPointBasedScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("NONE_SetPointBasedScore - NONE does not support SetPointBasedScore, returning false"); - return false; -} - -function NONE_GetScaledScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("NONE_GetScaledScore - NONE does not support GetScaledScore, returning false"); - return false; -} - -function NONE_GetLastError(){ - WriteToDebug("In NONE_GetLastError, Returning " + NO_ERROR); - return NO_ERROR; -} - -function NONE_GetLastErrorDesc(){ - WriteToDebug("In NONE_GetLastErrorDesc, Returning ''"); - return ""; -} - diff --git a/examples/AQuizmaker SCORM12/lms/SCORM2004Functions.js b/examples/AQuizmaker SCORM12/lms/SCORM2004Functions.js deleted file mode 100755 index 98aa6cd..0000000 --- a/examples/AQuizmaker SCORM12/lms/SCORM2004Functions.js +++ /dev/null @@ -1,2603 +0,0 @@ - -var SCORM2004_LOGOUT = "logout"; -var SCORM2004_SUSPEND = "suspend"; -var SCORM2004_NORMAL_EXIT = "normal"; -var SCORM2004_TIMEOUT = "time-out"; - -var SCORM2004_PASSED = "passed"; -var SCORM2004_FAILED = "failed"; -var SCORM2004_UNKNOWN = "unknown"; - -var SCORM2004_COMPLETED = "completed"; -var SCORM2004_INCOMPLETE = "incomplete"; -var SCORM2004_NOT_ATTEMPTED = "not attempted"; - -//var SCORM2004_BROWSED = "browsed"; - -var SCORM2004_CREDIT = "credit"; -var SCORM2004_NO_CREDIT = "no-credit"; - -var SCORM2004_BROWSE = "browse"; -var SCORM2004_NORMAL = "normal"; -var SCORM2004_REVIEW = "review"; - -var SCORM2004_ENTRY_ABINITIO = "ab-initio"; -var SCORM2004_ENTRY_RESUME = "resume"; -var SCORM2004_ENTRY_NORMAL = ""; - -var SCORM2004_TLA_EXIT_MESSAGE = "exit,message"; -var SCORM2004_TLA_EXIT_NO_MESSAGE = "exit,no message"; -var SCORM2004_TLA_CONTINUE_MESSAGE = "continue,message"; -var SCORM2004_TLA_CONTINUE_NO_MESSAGE = "continue,no message"; - - -var SCORM2004_RESULT_CORRECT = "correct"; -var SCORM2004_RESULT_WRONG = "incorrect"; -var SCORM2004_RESULT_UNANTICIPATED = "unanticipated"; -var SCORM2004_RESULT_NEUTRAL = "neutral"; - -var SCORM2004_INTERACTION_TYPE_TRUE_FALSE = "true-false"; -var SCORM2004_INTERACTION_TYPE_CHOICE = "choice"; -var SCORM2004_INTERACTION_TYPE_FILL_IN = "fill-in"; -var SCORM2004_INTERACTION_TYPE_LONG_FILL_IN = "long-fill-in"; -var SCORM2004_INTERACTION_TYPE_MATCHING = "matching"; -var SCORM2004_INTERACTION_TYPE_PERFORMANCE = "performance"; -var SCORM2004_INTERACTION_TYPE_SEQUENCING = "sequencing"; -var SCORM2004_INTERACTION_TYPE_LIKERT = "likert"; -var SCORM2004_INTERACTION_TYPE_NUMERIC = "numeric"; - - -var SCORM2004_NO_ERROR = "0"; -var SCORM2004_ERROR_INVALID_PREFERENCE = "-1"; -var SCORM2004_ERROR_INVALID_STATUS = "-2"; -var SCORM2004_ERROR_INVALID_SPEED = "-3"; -var SCORM2004_ERROR_INVALID_TIMESPAN = "-4"; -var SCORM2004_ERROR_INVALID_TIME_LIMIT_ACTION = "-5"; -var SCORM2004_ERROR_INVALID_DECIMAL = "-6"; -var SCORM2004_ERROR_INVALID_CREDIT = "-7"; -var SCORM2004_ERROR_INVALID_LESSON_MODE = "-8"; -var SCORM2004_ERROR_INVALID_ENTRY = "-9"; - -var SCORM2004_TRUE = "true"; -var SCORM2004_FALSE = "false"; - -var SCORM2004_EARLIEST_DATE = new Date("1/1/1900"); - - - - -var intSCORM2004Error = SCORM2004_NO_ERROR; -var strSCORM2004ErrorString = ""; -var strSCORM2004ErrorDiagnostic = ""; - -var SCORM2004_objAPI = null; - -var blnReviewModeSoReadOnly = false; - -var blnSCORM2004_SSP_Is_Supported = null; - -function SCORM2004_Initialize(){ - - WriteToDebug("In SCORM2004_Initialize"); - - var blnResult = true; - - SCORM2004_ClearErrorInfo(); - - WriteToDebug("Grabbing API"); - - try{ - SCORM2004_objAPI = SCORM2004_GrabAPI(); - } - catch (e){ - WriteToDebug("Error grabbing 1.2 API-" + e.name + ":" + e.message); - } - - if (typeof(SCORM2004_objAPI) == "undefined" || SCORM2004_objAPI == null){ - WriteToDebug("Unable to acquire SCORM API:") - WriteToDebug("SCORM2004_objAPI=" + typeof(SCORM2004_objAPI)); - - InitializeExecuted(false, "Error - unable to acquire LMS API, content may not play properly and results may not be recorded. Please contact technical support."); - return false; - } - - WriteToDebug("Calling LMSInit"); - - blnResult = SCORM2004_CallInitialize(); - - if (! blnResult){ - WriteToDebug("ERROR Initializing LMS"); - - InitializeExecuted(false, "Error initializing communications with LMS"); - - return false; - } - - - - //only set the status to incomplete if it's not attempted yet - if (SCORM2004_GetStatus() == LESSON_STATUS_NOT_ATTEMPTED){ - WriteToDebug("Setting Status to Incomplete"); - blnResult = SCORM2004_CallSetValue("cmi.completion_status", SCORM2004_INCOMPLETE); - } - - - //we want to set the exit type to suspend immediately because some LMS's only store data if they get a suspend request - blnResult = SCORM2004_CallSetValue("cmi.exit", SCORM2004_TranslateExitTypeToSCORM(DEFAULT_EXIT_TYPE)) && blnResult; - - //if mode is review, check if we should go to read only mode - if (SCORM2004_GetLessonMode() == MODE_REVIEW){ - if (!(typeof(REVIEW_MODE_IS_READ_ONLY) == "undefined") && REVIEW_MODE_IS_READ_ONLY === true){ - blnReviewModeSoReadOnly = true; - } - } - - WriteToDebug("Calling InitializeExecuted with parameter-" + blnResult); - - InitializeExecuted(blnResult, ""); - - return; - -} - - - - -function SCORM2004_Finish(strExitType, blnStatusWasSet){ - - WriteToDebug("In SCORM2004_Finish strExitType=" + strExitType + ", blnStatusWasSet=" + blnStatusWasSet); - - var strStatusAfterCompletion; - var blnResult = true; - - SCORM2004_ClearErrorInfo(); - - if ( (strExitType == EXIT_TYPE_FINISH) && ! blnStatusWasSet ){ - - WriteToDebug("Getting completion status"); - - strStatusAfterCompletion = SCORM2004_GetCompletionStatus(); - - WriteToDebug("Setting completion status to " + strStatusAfterCompletion); - - blnResult = SCORM2004_CallSetValue("cmi.completion_status", strStatusAfterCompletion) && blnResult; - - } - - if( strExitType == EXIT_TYPE_SUSPEND && USE_2004_SUSPENDALL_NAVREQ ) { - WriteToDebug("Setting adl.nav.request to suspendAll"); - blnResult = SCORM2004_CallSetValue("adl.nav.request","suspendAll"); - } - - WriteToDebug("Setting Exit"); - - blnResult = SCORM2004_CallSetValue("cmi.exit", SCORM2004_TranslateExitTypeToSCORM(strExitType)) && blnResult; - - WriteToDebug("Calling Commit"); - - blnResult = SCORM2004_CallCommit() && blnResult; - - WriteToDebug("Calling Finish"); - - blnResult = SCORM2004_CallTerminate() && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; - -} - - -function SCORM2004_CommitData(){ - - WriteToDebug("In SCORM2004_CommitData"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallCommit(); - -} - - - -//--------------------------------------------------------------------------------- -//General Get and Set Values - -function SCORM2004_GetStudentID(){ - - WriteToDebug("In SCORM2004_GetStudentID"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.learner_id"); - -} - -function SCORM2004_GetStudentName(){ - - WriteToDebug("In SCORM2004_GetStudentName"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.learner_name"); - -} - -function SCORM2004_GetBookmark(){ - WriteToDebug("In SCORM2004_GetBookmark"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.location"); - -} - -function SCORM2004_SetBookmark(strBookmark){ - WriteToDebug("In SCORM2004_SetBookmark strBookmark=" + strBookmark); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallSetValue("cmi.location", strBookmark); -} - -function SCORM2004_GetDataChunk(){ - WriteToDebug("In SCORM2004_GetDataChunk"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.suspend_data"); -} - -function SCORM2004_SetDataChunk(strData){ - // 4000 characters for 2nd edition - // 64000 characters here for 3rd edition - WriteToDebug("In SCORM2004_SetDataChunk"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallSetValue("cmi.suspend_data", strData); -} - - -function SCORM2004_GetLaunchData(){ - WriteToDebug("In SCORM2004_GetLaunchData"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.launch_data"); -} - - -function SCORM2004_GetComments(){ - - WriteToDebug("In SCORM2004_GetComments"); - - SCORM2004_ClearErrorInfo(); - - var intCommentCount; - var strComments = ""; - - intCommentCount = SCORM2004_CallGetValue("cmi.comments_from_learner._count"); - - for (var i=0; i < intCommentCount; i++){ - - if (strComments.length > 0){ - strComments += " | "; - } - - strComments += SCORM2004_CallGetValue("cmi.comments_from_learner." + i + ".comment"); - } - - return strComments; - -} - -function SCORM2004_WriteComment(strComment){ - - WriteToDebug("In SCORM2004_WriteComment strComment=" + strComment); - - var intCurrentIndex; - var blnResult; - - SCORM2004_ClearErrorInfo(); - - //remove the "|" since we can use the comments collection - if (strComment.search(/ \| /) == 0){ - strComment = strComment.substr(3); - } - - //remove encoding of "|" - strComment.replace(/\|\|/g, "|") - - intCurrentIndex = SCORM2004_CallGetValue("cmi.comments_from_learner._count"); - - blnResult = SCORM2004_CallSetValue("cmi.comments_from_learner." + intCurrentIndex + ".comment", strComment); - blnResult = SCORM2004_CallSetValue("cmi.comments_from_learner." + intCurrentIndex + ".timestamp", ConvertDateToIso8601TimeStamp(new Date())) && blnResult; - - return blnResult; -} - - -function SCORM2004_GetLMSComments(){ - - WriteToDebug("In SCORM2004_GetLMSComments"); - - SCORM2004_ClearErrorInfo(); - - var intCommentCount; - var strComments = ""; - - intCommentCount = SCORM2004_CallGetValue("cmi.comments_from_lms._count"); - - for (var i=0; i < intCommentCount; i++){ - - if (strComments.length > 0){ - strComments += " \r\n"; - } - - strComments += SCORM2004_CallGetValue("cmi.comments_from_lms." + i + ".comment"); - } - - return strComments; -} - - -function SCORM2004_GetAudioPlayPreference(){ - - var intTempPreference; - - WriteToDebug("In SCORM2004_GetAudioPlayPreference"); - - SCORM2004_ClearErrorInfo(); - - intTempPreference = SCORM2004_CallGetValue("cmi.learner_preference.audio_level"); - - if (intTempPreference == ""){ - intTempPreference = 0; - } - - intTempPreference = parseInt(intTempPreference, 10); - - WriteToDebug("intTempPreference=" + intTempPreference); - - if (intTempPreference > 0){ - WriteToDebug("Returning On"); - return PREFERENCE_ON; - } - else if (intTempPreference <= 0) { - WriteToDebug("Returning Off"); - return PREFERENCE_OFF; - } - else{ - WriteToDebug("Error: Invalid preference"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_PREFERENCE, - "Invalid audio preference received from LMS", - "intTempPreference=" + intTempPreference); - return null; - } -} - - - -function SCORM2004_GetAudioVolumePreference(){ - - var intTempPreference; - - WriteToDebug("In SCORM2004_GetAudioVollumePreference"); - - SCORM2004_ClearErrorInfo(); - - intTempPreference = SCORM2004_CallGetValue("cmi.learner_preference.audio_level"); - - WriteToDebug("intTempPreference=" + intTempPreference); - - if (intTempPreference == "") { - intTempPreference = 100; - } - - intTempPreference = parseInt(intTempPreference, 10); - - if (intTempPreference <= 0){ - WriteToDebug("Setting to 100"); - intTempPreference = 100; - } - - if (! (intTempPreference > 0 && intTempPreference <= 100)){ - WriteToDebug("ERROR: invalid preference"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_PREFERENCE, - "Invalid audio preference received from LMS", - "intTempPreference=" + intTempPreference); - return null; - } - - WriteToDebug("Returning " + intTempPreference); - return intTempPreference; - -} - -function SCORM2004_SetAudioPreference(PlayPreference, intPercentOfMaxVolume){ - - WriteToDebug("In SCORM2004_SetAudioPreference PlayPreference=" + PlayPreference + ", intPercentOfMaxVolume=" + intPercentOfMaxVolume); - - SCORM2004_ClearErrorInfo(); - - if (PlayPreference == PREFERENCE_OFF){ - WriteToDebug("Setting percent to 0"); - intPercentOfMaxVolume = 0; - } - - return SCORM2004_CallSetValue("cmi.learner_preference.audio_level", intPercentOfMaxVolume); -} - - - -function SCORM2004_SetLanguagePreference(strLanguage){ - WriteToDebug("In SCORM2004_SetLanguagePreference strLanguage=" + strLanguage); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallSetValue("cmi.learner_preference.language", strLanguage); - -} - - -function SCORM2004_GetLanguagePreference(){ - WriteToDebug("In SCORM2004_GetLanguagePreference"); - SCORM2004_ClearErrorInfo(); - return SCORM2004_CallGetValue("cmi.learner_preference.language"); - -} - - -function SCORM2004_SetSpeedPreference(intPercentOfMax){ - - //SCORM 2004's scale is greater than 0, our range is 1 to 100, just store our range - - WriteToDebug("In SCORM2004_SetSpeedPreference intPercentOfMax=" + intPercentOfMax); - - SCORM2004_ClearErrorInfo(); - - return SCORM2004_CallSetValue("cmi.learner_preference.delivery_speed", intPercentOfMax); - -} - - -function SCORM2004_GetSpeedPreference(){ - - var intSCORMSpeed; - var intPercentOfMax; - - WriteToDebug("In SCORM2004_GetSpeedPreference"); - - SCORM2004_ClearErrorInfo(); - - intSCORMSpeed = SCORM2004_CallGetValue("cmi.learner_preference.delivery_speed"); - - WriteToDebug("intSCORMSpeed=" + intSCORMSpeed); - - if (intSCORMSpeed == ""){ - WriteToDebug("Detected empty string, defaulting to 100"); - intSCORMSpeed = 100; - } - - intSCORMSpeed = parseInt(intSCORMSpeed, 10); - - if (intSCORMSpeed < 0){ - WriteToDebug("ERROR - out of range"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_SPEED, - "Invalid speed preference received from LMS - out of range", - "intSCORMSpeed=" + intSCORMSpeed); - return null; - } - - WriteToDebug("intSCORMSpeed " + intSCORMSpeed); - - return intSCORMSpeed; - -} - - - - -function SCORM2004_SetTextPreference(intPreference){ - - WriteToDebug("In SCORM2004_SetTextPreference intPreference=" + intPreference); - - SCORM2004_ClearErrorInfo(); - - return SCORM2004_CallSetValue("cmi.learner_preference.audio_captioning", intPreference); - -} - - -function SCORM2004_GetTextPreference(){ - - var intTempPreference; - - WriteToDebug("In SCORM2004_GetTextPreference"); - - SCORM2004_ClearErrorInfo(); - - intTempPreference = SCORM2004_CallGetValue("cmi.learner_preference.audio_captioning"); - intTempPreference = parseInt(intTempPreference, 10); - - WriteToDebug("intTempPreference=" + intTempPreference); - - if (intTempPreference > 0){ - WriteToDebug("Returning On"); - return PREFERENCE_ON; - } - else if (intTempPreference == 0 || intTempPreference == ""){ - WriteToDebug("Returning Default"); - return PREFERENCE_DEFAULT; - } - else if (intTempPreference < 0) { - WriteToDebug("Returning Off"); - return PREFERENCE_OFF; - } - else{ - WriteToDebug("Error: Invalid preference"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_PREFERENCE, - "Invalid text preference received from LMS", - "intTempPreference=" + intTempPreference); - return null; - } -} - - - -//--------------------------------------------------------------------------------- -//Time Management Functions -function SCORM2004_GetPreviouslyAccumulatedTime(){ - - var strIso8601Time; - var intMilliseconds; - - WriteToDebug("In SCORM2004_GetPreviouslyAccumulatedTime"); - - - SCORM2004_ClearErrorInfo(); - - strIso8601Time = SCORM2004_CallGetValue("cmi.total_time") - - WriteToDebug("strIso8601Time=" + strIso8601Time); - - if (! IsValidIso8601TimeSpan(strIso8601Time)){ - WriteToDebug("ERROR - Invalid Iso8601Time"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_TIMESPAN, - "Invalid timespan received from LMS", - "strTime=" + strIso8601Time); - return null; - } - - intMilliseconds = ConvertScorm2004TimeToMS(strIso8601Time); - - WriteToDebug("Returning " + intMilliseconds); - - return intMilliseconds; - -} - - -function SCORM2004_SaveTime(intMilliSeconds){ - - var strISO8601Time; - - WriteToDebug("In SCORM2004_SaveTime intMilliSeconds=" + intMilliSeconds); - - SCORM2004_ClearErrorInfo(); - - strISO8601Time = ConvertMilliSecondsIntoSCORM2004Time(intMilliSeconds); - - WriteToDebug("strISO8601Time=" + strISO8601Time); - - return SCORM2004_CallSetValue("cmi.session_time", strISO8601Time); -} - -function SCORM2004_GetMaxTimeAllowed(){ - - var strIso8601Time; - var intMilliseconds; - - WriteToDebug("In SCORM2004_GetMaxTimeAllowed"); - - - SCORM2004_ClearErrorInfo(); - - strIso8601Time = SCORM2004_CallGetValue("cmi.max_time_allowed") - - WriteToDebug("strIso8601Time=" + strIso8601Time); - - if (strIso8601Time == ""){ - strIso8601Time = "20Y"; - } - - if (! IsValidIso8601TimeSpan(strIso8601Time)){ - WriteToDebug("ERROR - Invalid Iso8601Time"); - SCORM2004_SetErrorInfoManually(SCORM_ERROR_INVALID_TIMESPAN, - "Invalid timespan received from LMS", - "strIso8601Time=" + strIso8601Time); - return null; - } - - intMilliseconds = ConvertScorm2004TimeToMS(ConvertScorm2004TimeToMS); - - WriteToDebug("intMilliseconds=" + intMilliseconds); - - return intMilliseconds; - -} - - - -function SCORM2004_DisplayMessageOnTimeout(){ - - var strTLA; - WriteToDebug("In SCORM2004_DisplayMessageOnTimeout"); - - SCORM2004_ClearErrorInfo(); - - - strTLA = SCORM2004_CallGetValue("cmi.time_limit_action"); - - WriteToDebug("strTLA=" + strTLA); - - if (strTLA == SCORM2004_TLA_EXIT_MESSAGE || strTLA == SCORM2004_TLA_CONTINUE_MESSAGE){ - WriteToDebug("returning true"); - return true; - } - else if(strTLA == SCORM2004_TLA_EXIT_NO_MESSAGE || strTLA == SCORM2004_TLA_CONTINUE_NO_MESSAGE || strTLA == ""){ - WriteToDebug("returning false"); - return false; - } - else{ - WriteToDebug("Error invalid TLA"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_TIME_LIMIT_ACTION, - "Invalid time limit action received from LMS", - "strTLA=" + strTLA); - - return null; - } - -} - -function SCORM2004_ExitOnTimeout(){ - - var strTLA; - - WriteToDebug("In SCORM2004_ExitOnTimeout"); - - SCORM2004_ClearErrorInfo(); - - strTLA = SCORM2004_CallGetValue("cmi.time_limit_action"); - - WriteToDebug("strTLA=" + strTLA); - - if (strTLA == SCORM2004_TLA_EXIT_MESSAGE || strTLA == SCORM2004_TLA_EXIT_NO_MESSAGE){ - WriteToDebug("returning true"); - return true; - } - else if(strTLA == SCORM2004_TLA_CONTINUE_MESSAGE || strTLA == SCORM2004_TLA_CONTINUE_NO_MESSAGE || strTLA == ""){ - WriteToDebug("returning false"); - return false; - } - else{ - WriteToDebug("ERROR invalid TLA"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_TIME_LIMIT_ACTION, - "Invalid time limit action received from LMS", - "strTLA=" + strTLA); - - return null; - } - -} - - -function SCORM2004_GetPassingScore(){ - var fltScore; - - WriteToDebug("In SCORM2004_GetPassingScore"); - - SCORM2004_ClearErrorInfo(); - - fltScore = SCORM2004_CallGetValue("cmi.scaled_passing_score") - - WriteToDebug("fltScore=" + fltScore); - - if (fltScore == ""){ - fltScore = 0; - } - - if ( ! IsValidDecimal(fltScore)){ - WriteToDebug("Error - score is not a valid decimal"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_DECIMAL, - "Invalid mastery score received from LMS", - "fltScore=" + fltScore); - return null; - } - - fltScore = parseFloat(fltScore); - - //multiply by 100 to normalize from -1 to 1 to 0-100 - (we always set the score so we know it won't be negative) - fltScore = fltScore * 100; - - WriteToDebug("returning fltScore-" + fltScore); - - return fltScore; -} - - -function SCORM2004_SetScore(intScore, intMaxScore, intMinScore){ - - var blnResult; - var fltNormalizedScore; - - - WriteToDebug("In SCORM2004_SetScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - SCORM2004_ClearErrorInfo(); - - fltNormalizedScore = intScore / 100; - - RoundToPrecision(fltNormalizedScore, 7); - - blnResult = SCORM2004_CallSetValue("cmi.score.raw", intScore); - blnResult = SCORM2004_CallSetValue("cmi.score.max", intMaxScore) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.score.min", intMinScore) && blnResult; - - blnResult = SCORM2004_CallSetValue("cmi.score.scaled", fltNormalizedScore) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - -function SCORM2004_GetScore(){ - - - WriteToDebug("In SCORM2004_GetScore"); - - SCORM2004_ClearErrorInfo(); - - return SCORM2004_CallGetValue("cmi.score.raw"); - -} - -function SCORM2004_GetScaledScore(){ - - - WriteToDebug("In SCORM2004_GetScaledScore"); - - SCORM2004_ClearErrorInfo(); - - return SCORM2004_CallGetValue("cmi.score.scaled"); - -} - -function SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004InteractionType){ - - var blnResult; - var intInteractionIndex; - var strResult; - - blnCorrect = new String(blnCorrect); //have to cast as string to support false - - - SCORM2004_ClearErrorInfo(); - - intInteractionIndex = SCORM2004_CallGetValue("cmi.interactions._count"); - - WriteToDebug("intInteractionIndex=" + intInteractionIndex); - - if (intInteractionIndex == ""){ - WriteToDebug("Setting Interaction Index to 0"); - intInteractionIndex = 0; - } - - //need to leave support for blnCorrect=t/f for legacy implementations of RSECA - if (blnCorrect == true || blnCorrect =="true" || blnCorrect == INTERACTION_RESULT_CORRECT){ - strResult = SCORM2004_RESULT_CORRECT; - } - else if (String(blnCorrect) == "false" || blnCorrect == INTERACTION_RESULT_WRONG){ //compare against the string "false" because ("" == false) evaluates to true - strResult = SCORM2004_RESULT_WRONG; - } - else if (blnCorrect == INTERACTION_RESULT_UNANTICIPATED){ - strResult = SCORM2004_RESULT_UNANTICIPATED; - } - else if (blnCorrect == INTERACTION_RESULT_NEUTRAL){ - strResult = SCORM2004_RESULT_NEUTRAL; - } - else{ - strResult = ""; - } - - WriteToDebug("strResult=" + strResult); - - strID = CreateValidIdentifier(strID); - - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".id", strID); - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".type", SCORM2004InteractionType) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".learner_response", strResponse) && blnResult; - - if (strResult != undefined && strResult != null && strResult != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".result", strResult) && blnResult; - } - - if (strCorrectResponse != undefined && strCorrectResponse != null && strCorrectResponse != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".correct_responses.0.pattern", strCorrectResponse) && blnResult; - } - - if (strDescription != undefined && strDescription != null && strDescription != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".description", strDescription) && blnResult; - } - - if (intWeighting != undefined && intWeighting != null && intWeighting != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".weighting", intWeighting) && blnResult; - } - - if (intLatency != undefined && intLatency != null && intLatency != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".latency", ConvertMilliSecondsIntoSCORM2004Time(intLatency)) && blnResult; - } - - if (strLearningObjectiveID != undefined && strLearningObjectiveID != null && strLearningObjectiveID != ""){ - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".objectives.0.id", strLearningObjectiveID) && blnResult; - } - - blnResult = SCORM2004_CallSetValue("cmi.interactions." + intInteractionIndex + ".timestamp", ConvertDateToIso8601TimeStamp(dtmTime)) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - -function SCORM2004_RecordTrueFalseInteraction(strID, blnResponse, blnCorrect, blnCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordTrueFalseInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strCorrectResponse = null; - - if (blnResponse){ - strResponse = "true"; - } - else{ - strResponse = "false"; - } - - if (blnCorrectResponse == true){ - strCorrectResponse = "true"; - } - else if(blnCorrectResponse == false){ //test for false b/c it could be null in which case we want to leave it as "" - strCorrectResponse = "false"; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_TRUE_FALSE); -} - - -function SCORM2004_RecordMultipleChoiceInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordMultipleChoiceInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strCorrectResponse = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += "[,]";} - strResponse += aryResponse[i].Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += "[,]";} - strCorrectResponse += aryCorrectResponse[i].Long; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_CHOICE); -} - - -function SCORM2004_RecordFillInInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordFillInInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var interactionType; - - if (strCorrectResponse == null){ - strCorrectResponse = ""; - } - - strCorrectResponse = new String(strCorrectResponse); - - if (strCorrectResponse.length > 250 || strResponse.length > 250){ - interactionType = SCORM2004_INTERACTION_TYPE_LONG_FILL_IN; - } - else{ - interactionType = SCORM2004_INTERACTION_TYPE_FILL_IN; - } - - if (strCorrectResponse.length > 4000){strCorrectResponse = strCorrectResponse.substr(0, 4000);} - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, interactionType); -} - -function SCORM2004_RecordMatchingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordMatchingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strCorrectResponse = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += "[,]";} - strResponse += aryResponse[i].Source.Long + "[.]" + aryResponse[i].Target.Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += "[,]";} - strCorrectResponse += aryCorrectResponse[i].Source.Long + "[.]" + aryCorrectResponse[i].Target.Long; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_MATCHING); -} - -function SCORM2004_RecordPerformanceInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordPerformanceInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - strResponse = new String(strResponse); - if (strResponse.length > 250){strResponse = strResponse.substr(0, 250);} - - if (strCorrectResponse == null){ - strCorrectResponse = ""; - } - - strCorrectResponse = new String(strCorrectResponse); - if (strCorrectResponse.length > 250){strCorrectResponse = strCorrectResponse.substr(0, 250);} - - //we're only recording the step answer, not the step name - strResponse = "[.]" + strResponse; - strCorrectResponse = "[.]" + strCorrectResponse; - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_PERFORMANCE); -} - -function SCORM2004_RecordSequencingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordSequencingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strCorrectResponse = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += "[,]";} - strResponse += aryResponse[i].Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += "[,]";} - strCorrectResponse += aryCorrectResponse[i].Long; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_SEQUENCING); -} - - -function SCORM2004_RecordLikertInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In RecordLikertInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = response.Long; - var strCorrectResponse = ""; - - if (correctResponse != null){ - strCorrectResponse = correctResponse.Long; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_LIKERT); -} - -function SCORM2004_RecordNumericInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM2004_RecordNumericInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - if (strCorrectResponse != undefined && strCorrectResponse != null && strCorrectResponse != ""){ - strCorrectResponse = strCorrectResponse + "[:]" + strCorrectResponse; - } - - return SCORM2004_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM2004_INTERACTION_TYPE_NUMERIC); -} - - - -function SCORM2004_GetEntryMode(){ - var strEntry; - - WriteToDebug("In SCORM2004_GetEntryMode"); - - SCORM2004_ClearErrorInfo(); - - strEntry = SCORM2004_CallGetValue("cmi.entry"); - - WriteToDebug("strEntry=" + strEntry); - - if (strEntry == SCORM2004_ENTRY_ABINITIO){ - WriteToDebug("Returning first time"); - return ENTRY_FIRST_TIME; - } - else if (strEntry == SCORM2004_ENTRY_RESUME){ - WriteToDebug("Returning resume"); - return ENTRY_RESUME; - } - else if (strEntry == SCORM2004_ENTRY_NORMAL){ - WriteToDebug("returning normal"); - return ENTRY_REVIEW; - } - else{ - WriteToDebug("ERROR - invalid entry mode"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_ENTRY, - "Invalid entry vocab received from LMS", - "strEntry=" + strEntry); - return null; - } - -} - -function SCORM2004_GetLessonMode(){ - - var strLessonMode; - - WriteToDebug("In SCORM2004_GetLessonMode"); - - SCORM2004_ClearErrorInfo(); - - strLessonMode = SCORM2004_CallGetValue("cmi.mode"); - - WriteToDebug("strLessonMode=" + strLessonMode); - - if (strLessonMode == SCORM2004_BROWSE){ - WriteToDebug("Returning browse"); - return MODE_BROWSE; - } - else if(strLessonMode == SCORM2004_NORMAL){ - WriteToDebug("returning normal"); - return MODE_NORMAL; - } - else if(strLessonMode == SCORM2004_REVIEW){ - WriteToDebug("Returning Review"); - return MODE_REVIEW; - } - else{ - WriteToDebug("ERROR - invalid lesson mode"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_LESSON_MODE, - "Invalid lesson_mode vocab received from LMS", - "strLessonMode=" + strLessonMode); - return null; - } - -} - -function SCORM2004_GetTakingForCredit(){ - - var strCredit; - - WriteToDebug("In SCORM2004_GetTakingForCredit"); - - SCORM2004_ClearErrorInfo(); - - strCredit = SCORM2004_CallGetValue("cmi.credit"); - - WriteToDebug("strCredit=" + strCredit); - - if (strCredit == "credit"){ - WriteToDebug("Returning true"); - return true; - } - else if (strCredit == "no-credit"){ - WriteToDebug("Returning false"); - return false; - } - else{ - WriteToDebug("ERROR - invalid credit"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_CREDIT, - "Invalid credit vocab received from LMS", - "strCredit=" + strCredit); - return null; - } -} - - - -function SCORM2004_SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore){ - - var intObjectiveIndex; - var blnResult; - var fltNormalizedScore; - - WriteToDebug("In SCORM2004_SetObjectiveScore, strObejctiveID=" + strObjectiveID + ", intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - fltNormalizedScore = intScore / 100; - - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".id", strObjectiveID); - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".score.raw", intScore) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".score.max", intMaxScore) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".score.min", intMinScore) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".score.scaled", fltNormalizedScore) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; - -} - - -function SCORM2004_SetObjectiveStatus(strObjectiveID, Lesson_Status){ - - var intObjectiveIndex; - var blnResult; - var strSCORMSuccessStatus = ""; - var strSCORMCompletionStatus = ""; - - WriteToDebug("In SCORM2004_SetObjectiveStatus strObjectiveID=" + strObjectiveID + ", Lesson_Status=" + Lesson_Status); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - if (Lesson_Status == LESSON_STATUS_PASSED){ - strSCORMSuccessStatus = SCORM2004_PASSED; - strSCORMCompletionStatus = SCORM2004_COMPLETED; - } - else if (Lesson_Status == LESSON_STATUS_FAILED){ - strSCORMSuccessStatus = SCORM2004_FAILED; - strSCORMCompletionStatus = SCORM2004_COMPLETED; - } - else if (Lesson_Status == LESSON_STATUS_COMPLETED){ - strSCORMSuccessStatus = SCORM2004_UNKNOWN; - strSCORMCompletionStatus = SCORM2004_COMPLETED; - } - else if (Lesson_Status == LESSON_STATUS_BROWSED){ - strSCORMSuccessStatus = SCORM2004_UNKNOWN; - strSCORMCompletionStatus = SCORM2004_COMPLETED; - } - else if (Lesson_Status == LESSON_STATUS_INCOMPLETE){ - strSCORMSuccessStatus = SCORM2004_UNKNOWN; - strSCORMCompletionStatus = SCORM2004_INCOMPLETE; - } - else if (Lesson_Status == LESSON_STATUS_NOT_ATTEMPTED){ - strSCORMSuccessStatus = SCORM2004_UNKNOWN; - strSCORMCompletionStatus = SCORM2004_NOT_ATTEMPTED; - } - - WriteToDebug("strSCORMSuccessStatus=" + strSCORMSuccessStatus); - WriteToDebug("strSCORMCompletionStatus=" + strSCORMCompletionStatus); - - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".id", strObjectiveID); - - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".success_status", strSCORMSuccessStatus) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".completion_status", strSCORMCompletionStatus) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - - -function SCORM2004_SetObjectiveDescription(strObjectiveID, strObjectiveDescription){ - - var intObjectiveIndex; - - WriteToDebug("In SCORM2004_SetObjectiveDescription strObjectiveID=" + strObjectiveID + ", strObjectiveDescription=" + strObjectiveDescription); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - - - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".id", strObjectiveID); - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".description", strObjectiveDescription) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - - -function SCORM2004_GetObjectiveScore(strObjectiveID){ - - var intObjectiveIndex; - - WriteToDebug("In SCORM2004_GetObjectiveScore, strObejctiveID=" + strObjectiveID); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - return SCORM2004_CallGetValue("cmi.objectives." + intObjectiveIndex + ".score.raw"); - -} - - -function SCORM2004_GetObjectiveStatus(strObjectiveID){ - - var intObjectiveIndex; - var strSuccessStatus; - var strCompletionStatus; - - WriteToDebug("In SCORM2004_GetObjectiveStatus, strObejctiveID=" + strObjectiveID); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - strSuccessStatus = SCORM2004_CallGetValue("cmi.objectives." + intObjectiveIndex + ".success_status"); - strCompletionStatus = SCORM2004_CallGetValue("cmi.objectives." + intObjectiveIndex + ".completion_status"); - - if (strSuccessStatus == SCORM2004_PASSED){ - WriteToDebug("returning Passed"); - return LESSON_STATUS_PASSED; - } - else if (strSuccessStatus == SCORM2004_FAILED){ - WriteToDebug("Returning Failed"); - return LESSON_STATUS_FAILED; - } - else if (strCompletionStatus == SCORM2004_COMPLETED){ - WriteToDebug("Returning Completed"); - return LESSON_STATUS_COMPLETED; - } - else if (strCompletionStatus == SCORM2004_INCOMPLETE){ - WriteToDebug("Returning Incomplete"); - return LESSON_STATUS_INCOMPLETE; - } - else if (strCompletionStatus == SCORM2004_NOT_ATTEMPTED || strCompletionStatus == SCORM2004_UNKNOWN || strCompletionStatus == ""){ - WriteToDebug("Returning Not Attempted"); - return LESSON_STATUS_NOT_ATTEMPTED; - } - else{ - WriteToDebug("ERROR - status not found"); - SCORM2004_SetErrorInfoManually(SCORM2004_ERROR_INVALID_STATUS, - "Invalid objective status received from LMS or initial status not yet recorded for objective", - "strCompletionStatus=" + strCompletionStatus); - return null; - - } - -} - -function SCORM2004_GetObjectiveProgressMeasure(strObjectiveID){ - - var strProgressMeasure = SCORM2004_CallGetValue("cmi.objectives." + strObjectiveID + ".progress_measure"); - - return strProgressMeasure; - -} - - -function SCORM2004_GetObjectiveDescription(strObjectiveID){ - - var intObjectiveIndex; - var strSuccessStatus; - var strCompletionStatus; - - WriteToDebug("In SCORM2004_GetObjectiveDescription, strObejctiveID=" + strObjectiveID); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - strDescription = SCORM2004_CallGetValue("cmi.objectives." + intObjectiveIndex + ".description"); - - return strDescription; - -} - -function SCORM2004_FindObjectiveIndexFromID(strObjectiveID){ - - var intCount; - var i; - var strTempID; - - WriteToDebug("In SCORM2004_FindObjectiveIndexFromID"); - - intCount = SCORM2004_CallGetValue("cmi.objectives._count"); - - if (intCount == ""){ - WriteToDebug("Setting intCount=0"); - return 0; - } - - intCount = parseInt(intCount, 10); - - WriteToDebug("intCount=" + intCount); - - for (i=0; i value < 1 ÒincompleteÓ (typically, unless a cmi.completion_threshold is defined and the cmi.progress_measure is >= the cmi.completion_threshold) - - - GetValue(Òcmi.progress_measureÓ) - SetValue(Òcmi.progress_measureÓ,Ó0.75Ó) - SetValue(Òcmi.progress_measureÓ,Ó1.0Ó) - -*/ - -//public -function SCORM2004_SetProgressMeasure(numMeasure){ - WriteToDebug("In SCORM2004_SetProgressMeasure"); - - var blnResult; - - - SCORM2004_ClearErrorInfo(); - - blnResult = SCORM2004_CallSetValue("cmi.progress_measure", numMeasure); - - return blnResult; -} - -function SCORM2004_SetObjectiveProgressMeasure(strObjectiveID, numMeasure){ - WriteToDebug("In SCORM2004_SetObjectiveProgressMeasure"); - var intObjectiveIndex; - var blnResult; - - WriteToDebug("In SCORM2004_SetObjectiveProgressMeasure, strObejctiveID=" + strObjectiveID + ", numMeasure=" + numMeasure ); - - SCORM2004_ClearErrorInfo(); - - intObjectiveIndex = SCORM2004_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - SCORM2004_ClearErrorInfo(); - - blnResult = SCORM2004_CallSetValue("cmi.objectives." + intObjectiveIndex + ".progress_measure", numMeasure); - - return blnResult; -} - -function SCORM2004_IsContentInBrowseMode(){ - - var strLessonMode - - WriteToDebug("In SCORM2004_IsContentInBrowseMode"); - - strLessonMode = SCORM2004_CallGetValue("cmi.mode"); - - WriteToDebug("SCORM2004_IsContentInBrowseMode, strLessonMode=" + strLessonMode); - - if (strLessonMode == SCORM2004_BROWSE){ - WriteToDebug("Returning true"); - return true; - } - else{ - WriteToDebug("Returning false"); - return false; - } -} - - -function SCORM2004_TranslateExitTypeToSCORM(strExitType){ - - WriteToDebug("In SCORM2004_TranslatgeExitTypeToSCORM strExitType-" + strExitType); - - if (strExitType == EXIT_TYPE_SUSPEND){ - WriteToDebug("Returning suspend"); - return SCORM2004_SUSPEND; - } - else if (strExitType == EXIT_TYPE_UNLOAD){ - WriteToDebug("Returning Exit"); - return SCORM2004_NORMAL_EXIT; - } - else if (strExitType == EXIT_TYPE_FINISH){ - WriteToDebug("Returning Logout"); - return SCORM2004_NORMAL_EXIT; - } - else if (strExitType == EXIT_TYPE_TIMEOUT){ - WriteToDebug("Returning Timout"); - return SCORM2004_TIMEOUT; - } -} - - -function SCORM2004_GetCompletionStatus(){ - - WriteToDebug("In SCORM2004_GetCompletionStatus"); - - return SCORM2004_COMPLETED; - -} - -function SCORM2004_SetPointBasedScore(intScore, intMaxScore, intMinScore){ - - var blnResult; - var fltCalculatedScore; - - WriteToDebug("In SCORM2004_SetPointBasedScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - SCORM2004_ClearErrorInfo(); - - if(intScore >= intMinScore) - { - fltCalculatedScore = intScore / intMaxScore; - }else{ - WriteToDebug("intScore is lower than intMinScore. Overriding score with minscore for cmi.score.scaled"); - fltCalculatedScore = intMinScore / intMaxScore; - } - fltCalculatedScore = RoundToPrecision(fltCalculatedScore, 7); - - blnResult = SCORM2004_CallSetValue("cmi.score.raw", intScore); - blnResult = SCORM2004_CallSetValue("cmi.score.max", intMaxScore) && blnResult; - blnResult = SCORM2004_CallSetValue("cmi.score.min", intMinScore) && blnResult; - - blnResult = SCORM2004_CallSetValue("cmi.score.scaled", fltCalculatedScore) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; - -} - - -//___________________________________________________________ -//Interaction Retrieval Functionality -//NOTE ON INTERACTION RETRIEVAL -//A. It is only available in certain standards, standards where it is unavailable will return nothing -//B. The interaction records are currently reported using "journaling", whereby each entry is appended -// Retrieval methods will retrieve only the most recent value - - -//___________________________________________________________ -//Helper Methods -function SCORM2004_FindInteractionIndexFromID(strInteractionID){ - - //with interactions, this method returns the index for the MOST RECENT (by timestamp) - //interaction with this identifier - - var intCount; - var i; - var strTempID; - var dtmTempDate = new Date(); - var index; - var currentIndexTimestamp = new Date("1/1/1900"); - - - WriteToDebug("In SCORM2004_FindInteractionIndexFromID"); - - intCount = SCORM2004_CallGetValue("cmi.interactions._count"); - - if (intCount == ""){ - WriteToDebug("Setting intCount=0"); - return null; - } - - intCount = parseInt(intCount, 10); - - WriteToDebug("intCount=" + intCount); - - for (i=0; icurrentIndexTimestamp) - { - index = i; - currentIndexTimestamp = dtmTempDate; - } - } - } - - if (index>=0) return index; - - WriteToDebug("Did not find match, returning null"); - - return null; -} -//___________________________________________________________ - - -function SCORM2004_GetInteractionType(strInteractionID) -{ - - var intInteractionIndex; - - WriteToDebug("In SCORM2004_GetInteractionType, strInteractionID=" + strInteractionID); - - SCORM2004_ClearErrorInfo(); - - intInteractionIndex = SCORM2004_FindInteractionIndexFromID(strInteractionID); - - - if(intInteractionIndex == undefined || intInteractionIndex == null){ - return null; - } - - - WriteToDebug("intInteractionIndex=" + intInteractionIndex); - - var type = SCORM2004_CallGetValue("cmi.interactions." + intInteractionIndex + ".type"); - - switch (type) - { - case SCORM2004_INTERACTION_TYPE_FILL_IN: - return INTERACTION_TYPE_FILL_IN; - case SCORM2004_INTERACTION_TYPE_LONG_FILL_IN: - return INTERACTION_TYPE_LONG_FILL_IN; - case SCORM2004_INTERACTION_TYPE_CHOICE: - return INTERACTION_TYPE_CHOICE; - case SCORM2004_INTERACTION_TYPE_LIKERT: - return INTERACTION_TYPE_LIKERT; - case SCORM2004_INTERACTION_TYPE_MATCHING: - return INTERACTION_TYPE_MATCHING; - case SCORM2004_INTERACTION_TYPE_NUMERIC: - return INTERACTION_TYPE_NUMERIC; - case SCORM2004_INTERACTION_TYPE_PERFORMANCE: - return INTERACTION_TYPE_PERFORMANCE; - case SCORM2004_INTERACTION_TYPE_SEQUENCING: - return INTERACTION_TYPE_SEQUENCING; - case SCORM2004_INTERACTION_TYPE_TRUE_FALSE: - return INTERACTION_TYPE_TRUE_FALSE; - default: - return ""; - } - - -} - -//public -function SCORM2004_GetInteractionTimestamp(strInteractionID) -{ - WriteToDebug("In SCORM2004_GetInteractionTimestamp, strInteractionID=" + strInteractionID); - var intInteractionIndex = SCORM2004_FindInteractionIndexFromID(strInteractionID); - WriteToDebug("intInteractionIndex=" + intInteractionIndex); - - SCORM2004_ClearErrorInfo(); - - - - if(intInteractionIndex == undefined || intInteractionIndex == null){ - return null; - } - - - - return SCORM2004_CallGetValue(ConvertIso8601TimeStampToDate("cmi.interactions." + intInteractionIndex + ".timestamp")); - -} - - - -//public -function SCORM2004_GetInteractionCorrectResponses(strInteractionID) -{ - - WriteToDebug("In SCORM2004_GetInteractionCorrectResponses, strInteractionID=" + strInteractionID); - - var intInteractionIndex = SCORM2004_FindInteractionIndexFromID(strInteractionID); - WriteToDebug("intInteractionIndex=" + intInteractionIndex); - - SCORM2004_ClearErrorInfo(); - - - if(intInteractionIndex == undefined || intInteractionIndex == null){ - return null; - } - - - var strType = SCORM2004_CallGetValue("cmi.interactions." + intInteractionIndex + ".type"); - - var intCorrectResponseCount = SCORM2004_CallGetValue("cmi.interactions." + intInteractionIndex + ".correct_responses._count"); - - - if (intCorrectResponseCount == ""){ - WriteToDebug("Setting intCorrectResponseCount=0"); - return 0; - } - - intCorrectResponseCount = parseInt(intCorrectResponseCount, 10); - WriteToDebug("intCorrectResponseCount=" + intCorrectResponseCount); - if (intCorrectResponseCount==0) return new Array(); - if (intCorrectResponseCount>1) WriteToDebug("SCORM Driver is not currently implemented to support multiple correct response combinations and will only return the first"); - - var strResponse = new String(SCORM2004_CallGetValue("cmi.interactions." + intInteractionIndex + ".correct_responses.0.pattern")); - var aryResponse = strResponse.split("[,]"); - WriteToDebug("aryResponse.length = " + aryResponse.length); - aryResponse = SCORM2004_ProcessResponseArray(strType, aryResponse); - - /* - //this is the basis for handling N correct responses - //because the API currently does not allow for the posting of multiple - //correct response combinations, this functionality is not currently - //implemented - var aryResponses = new Array(); - - for (i=0; i 0 && intTempPreference <= 100)){ - WriteToDebug("ERROR: invalid preference"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_PREFERENCE, - "Invalid audio preference received from LMS", - "intTempPreference=" + intTempPreference); - return null; - } - - WriteToDebug("Returning " + intTempPreference); - return intTempPreference; - -} - -function SCORM_SetAudioPreference(PlayPreference, intPercentOfMaxVolume){ - - WriteToDebug("In SCORM_SetAudioPreference PlayPreference=" + PlayPreference + ", intPercentOfMaxVolume=" + intPercentOfMaxVolume); - - SCORM_ClearErrorInfo(); - - if (PlayPreference == PREFERENCE_OFF){ - WriteToDebug("Setting percent to -1"); - intPercentOfMaxVolume = -1; - } - - return SCORM_CallLMSSetValue("cmi.student_preference.audio", intPercentOfMaxVolume); -} - - - -function SCORM_SetLanguagePreference(strLanguage){ - WriteToDebug("In SCORM_SetLanguagePreference strLanguage=" + strLanguage); - SCORM_ClearErrorInfo(); - return SCORM_CallLMSSetValue("cmi.student_preference.language", strLanguage); - -} - - -function SCORM_GetLanguagePreference(){ - WriteToDebug("In SCORM_GetLanguagePreference"); - SCORM_ClearErrorInfo(); - return SCORM_CallLMSGetValue("cmi.student_preference.language"); - -} - - -function SCORM_SetSpeedPreference(intPercentOfMax){ - - var intSCORMSpeed; //SCORM's scale is -100 to +100, our range is 1 to 100 - - WriteToDebug("In SCORM_SetSpeedPreference intPercentOfMax=" + intPercentOfMax); - - SCORM_ClearErrorInfo(); - - intSCORMSpeed = (intPercentOfMax * 2) - 100; - - WriteToDebug("intSCORMSpeed=" + intSCORMSpeed); - - return SCORM_CallLMSSetValue("cmi.student_preference.speed", intSCORMSpeed); - -} - - -function SCORM_GetSpeedPreference(){ - - var intSCORMSpeed; - var intPercentOfMax; - - WriteToDebug("In SCORM_GetSpeedPreference"); - - SCORM_ClearErrorInfo(); - - intSCORMSpeed = SCORM_CallLMSGetValue("cmi.student_preference.speed"); - - WriteToDebug("intSCORMSpeed=" + intSCORMSpeed); - - if (intSCORMSpeed == ""){ - WriteToDebug("Detected empty string, defaulting to 100"); - intSCORMSpeed = 100; - } - - if ( ! ValidInteger(intSCORMSpeed) ){ - WriteToDebug("ERROR - invalid integer"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_SPEED, - "Invalid speed preference received from LMS - not an integer", - "intSCORMSpeed=" + intSCORMSpeed); - return null; - } - - intSCORMSpeed = parseInt(intSCORMSpeed, 10); - - if (intSCORMSpeed < -100 || intSCORMSpeed > 100){ - WriteToDebug("ERROR - out of range"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_SPEED, - "Invalid speed preference received from LMS - out of range", - "intSCORMSpeed=" + intSCORMSpeed); - return null; - } - - intPercentOfMax = (intSCORMSpeed + 100) / 2; - intPercentOfMax = parseInt(intPercentOfMax, 10); - - WriteToDebug("Returning " + intPercentOfMax); - - return intPercentOfMax; - -} - - - - -function SCORM_SetTextPreference(intPreference){ - WriteToDebug("In SCORM_SetTextPreference intPreference=" + intPreference); - - SCORM_ClearErrorInfo(); - - return SCORM_CallLMSSetValue("cmi.student_preference.text", intPreference); -} - - -function SCORM_GetTextPreference(){ - var intTempPreference; - - WriteToDebug("In SCORM_GetTextPreference"); - - SCORM_ClearErrorInfo(); - - intTempPreference = SCORM_CallLMSGetValue("cmi.student_preference.text"); - intTempPreference = parseInt(intTempPreference, 10); - - WriteToDebug("intTempPreference=" + intTempPreference); - - if (intTempPreference > 0){ - WriteToDebug("Returning On"); - return PREFERENCE_ON; - } - else if (intTempPreference == 0 || intTempPreference == ""){ - WriteToDebug("Returning Default"); - return PREFERENCE_DEFAULT; - } - else if (intTempPreference < 0) { - WriteToDebug("returning Off"); - return PREFERENCE_OFF; - } - else{ - WriteToDebug("Error: Invalid preference"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_PREFERENCE, - "Invalid text preference received from LMS", - "intTempPreference=" + intTempPreference); - return null; - } -} - - - -//--------------------------------------------------------------------------------- -//Time Management Functions -function SCORM_GetPreviouslyAccumulatedTime(){ - - var strCMITime; - var intMilliseconds; - - WriteToDebug("In SCORM_GetPreviouslyAccumulatedTime"); - - SCORM_ClearErrorInfo(); - - strCMITime = SCORM_CallLMSGetValue("cmi.core.total_time") - - WriteToDebug("strCMITime=" + strCMITime); - - if (! IsValidCMITimeSpan(strCMITime)){ - WriteToDebug("ERROR - Invalid CMITimeSpan"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_TIMESPAN, - "Invalid timespan received from LMS", - "strTime=" + strCMITime); - return null; - } - - intMilliseconds = ConvertCMITimeSpanToMS(strCMITime); - - WriteToDebug("Returning " + intMilliseconds); - - return intMilliseconds; - -} - - -function SCORM_SaveTime(intMilliSeconds){ - - var strCMITime; - - WriteToDebug("In SCORM_SaveTime intMilliSeconds=" + intMilliSeconds); - - SCORM_ClearErrorInfo(); - - strCMITime = ConvertMilliSecondsToSCORMTime(intMilliSeconds, true); - - WriteToDebug("strCMITime=" + strCMITime); - - return SCORM_CallLMSSetValue("cmi.core.session_time", strCMITime); -} - -function SCORM_GetMaxTimeAllowed(){ - - var strCMITime; - var intMilliseconds; - - WriteToDebug("In SCORM_GetMaxTimeAllowed"); - - SCORM_ClearErrorInfo(); - - strCMITime = SCORM_CallLMSGetValue("cmi.student_data.max_time_allowed") - - WriteToDebug("strCMITime=" + strCMITime); - - if (strCMITime == ""){ - strCMITime = "9999:99:99.99"; - } - - if (! IsValidCMITimeSpan(strCMITime)){ - WriteToDebug("ERROR - Invalid CMITimeSpan"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_TIMESPAN, - "Invalid timespan received from LMS", - "strTime=" + strCMITime); - return null; - } - - intMilliseconds = ConvertCMITimeSpanToMS(strCMITime); - - WriteToDebug("intMilliseconds=" + intMilliseconds); - - return intMilliseconds; -} - - - -function SCORM_DisplayMessageOnTimeout(){ - - var strTLA; - - SCORM_ClearErrorInfo(); - - WriteToDebug("In SCORM_DisplayMessageOnTimeout"); - - strTLA = SCORM_CallLMSGetValue("cmi.student_data.time_limit_action"); - - WriteToDebug("strTLA=" + strTLA); - - if (strTLA == SCORM_TLA_EXIT_MESSAGE || strTLA == SCORM_TLA_CONTINUE_MESSAGE){ - WriteToDebug("returning true"); - return true; - } - else if(strTLA == SCORM_TLA_EXIT_NO_MESSAGE || strTLA == SCORM_TLA_CONTINUE_NO_MESSAGE || strTLA == ""){ - WriteToDebug("returning false"); - return false; - } - else{ - WriteToDebug("Error invalid TLA"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_TIME_LIMIT_ACTION, - "Invalid time limit action received from LMS", - "strTLA=" + strTLA); - - return null; - } - -} - -function SCORM_ExitOnTimeout(){ - - var strTLA; - - WriteToDebug("In SCORM_ExitOnTimeout"); - - SCORM_ClearErrorInfo(); - - strTLA = SCORM_CallLMSGetValue("cmi.student_data.time_limit_action"); - - WriteToDebug("strTLA=" + strTLA); - - if (strTLA == SCORM_TLA_EXIT_MESSAGE || strTLA == SCORM_TLA_EXIT_NO_MESSAGE){ - WriteToDebug("returning true"); - return true; - } - else if(strTLA == SCORM_TLA_CONTINUE_MESSAGE || strTLA == SCORM_TLA_CONTINUE_NO_MESSAGE || strTLA == ""){ - WriteToDebug("returning false"); - return false; - } - else{ - WriteToDebug("ERROR invalid TLA"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_TIME_LIMIT_ACTION, - "Invalid time limit action received from LMS", - "strTLA=" + strTLA); - - return null; - } - -} - - -function SCORM_GetPassingScore(){ - var fltScore; - - WriteToDebug("In SCORM_GetPassingScore"); - - SCORM_ClearErrorInfo(); - - fltScore = SCORM_CallLMSGetValue("cmi.student_data.mastery_score") - - WriteToDebug("fltScore=" + fltScore); - - if (fltScore == ""){ - fltScore = 0; - } - - if ( ! IsValidDecimal(fltScore)){ - WriteToDebug("Error - score is not a valid decimal"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_DECIMAL, - "Invalid mastery score received from LMS", - "fltScore=" + fltScore); - return null; - } - - fltScore = parseFloat(fltScore); - - WriteToDebug("returning fltScore"); - - return fltScore; -} - - -function SCORM_SetScore(intScore, intMaxScore, intMinScore){ - - var blnResult; - - WriteToDebug("In SCORM_SetScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - SCORM_ClearErrorInfo(); - - blnResult = SCORM_CallLMSSetValue("cmi.core.score.raw", intScore); - blnResult = SCORM_CallLMSSetValue("cmi.core.score.max", intMaxScore) && blnResult; - blnResult = SCORM_CallLMSSetValue("cmi.core.score.min", intMinScore) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - -function SCORM_GetScore(){ - - - WriteToDebug("In SCORM_GetScore"); - - SCORM_ClearErrorInfo(); - - return SCORM_CallLMSGetValue("cmi.core.score.raw"); - -} - -function SCORM_SetPointBasedScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("SCORM_SetPointBasedScore - SCORM 1.1 and 1.2 do not support SetPointBasedScore, returning false"); - return false; -} - -function SCORM_GetScaledScore(intScore, intMaxScore, intMinScore){ - WriteToDebug("SCORM_GetScaledScore - SCORM 1.1 and 1.2 do not support GetScaledScore, returning false"); - return false; -} - -function SCORM_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, scormInteractionType, - strAlternateResponse, strAlternateCorrectResponse){ - - var blnResult; - var blnTempResult; - var intInteractionIndex; - var strResult; - - - SCORM_ClearErrorInfo(); - - //In SCORM 1.2, we always want to add a new interaction rather than updating an old interaction. - //This is because some LMS vendors have mis-interpreted the "write only" stipulation on interactions to mean "write once" - intInteractionIndex = SCORM_CallLMSGetValue("cmi.interactions._count"); - - WriteToDebug("intInteractionIndex=" + intInteractionIndex); - - if (intInteractionIndex == ""){ - WriteToDebug("Setting Interaction Index to 0"); - intInteractionIndex = 0; - } - - //need to leave support for blnCorrect=t/f for legacy implementations of RSECA - if (blnCorrect == true || blnCorrect == INTERACTION_RESULT_CORRECT){ - strResult = SCORM_RESULT_CORRECT; - } - else if (blnCorrect == "" || blnCorrect == "false" || blnCorrect == INTERACTION_RESULT_WRONG){ //compare against the string "false" because ("" == false) evaluates to true - strResult = SCORM_RESULT_WRONG; - } - else if (blnCorrect == INTERACTION_RESULT_UNANTICIPATED){ - strResult = SCORM_RESULT_UNANTICIPATED; - } - else if (blnCorrect == INTERACTION_RESULT_NEUTRAL){ - strResult = SCORM_RESULT_NEUTRAL; - } - - WriteToDebug("strResult=" + strResult); - - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".id", strID); - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".type", scormInteractionType) && blnResult; - - - //try to save the data using the verbose description of the interaciton results (this is not strictly conformant, but most LMS's will allow it and it still passes the Test Suite - //if the long version errs, try again with the short version (strict adherence to the standard) - this applies to response and correct response - - blnTempResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".student_response", strResponse); - - if (blnTempResult == false){ - blnTempResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".student_response", strAlternateResponse); - } - - blnResult = blnResult && blnTempResult; - - if (strCorrectResponse != undefined && strCorrectResponse != null && strCorrectResponse != ""){ - - blnTempResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".correct_responses.0.pattern", strCorrectResponse); - if (blnTempResult == false){ - blnTempResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".correct_responses.0.pattern", strAlternateCorrectResponse); - } - - blnResult = blnResult && blnTempResult; - } - - if (strResult != undefined && strResult != null && strResult != ""){ - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".result", strResult) && blnResult; - } - - //ignore the description parameter in SCORM 1.2, there is nothing we can do with it - - if (intWeighting != undefined && intWeighting != null && intWeighting != ""){ - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".weighting", intWeighting) && blnResult; - } - - if (intLatency != undefined && intLatency != null && intLatency != ""){ - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".latency", ConvertMilliSecondsToSCORMTime(intLatency, true)) && blnResult; - } - - if (strLearningObjectiveID != undefined && strLearningObjectiveID != null && strLearningObjectiveID != ""){ - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".objectives.0.id", strLearningObjectiveID) && blnResult; - } - - blnResult = SCORM_CallLMSSetValue("cmi.interactions." + intInteractionIndex + ".time", ConvertDateToCMITime(dtmTime)) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - -function SCORM_RecordTrueFalseInteraction(strID, blnResponse, blnCorrect, blnCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordTrueFalseInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strCorrectResponse = null; - - if (blnResponse == true){ - strResponse = "t"; - } - else{ - strResponse = "f"; - } - - if (blnCorrectResponse == true){ - strCorrectResponse = "t"; - } - else if(blnCorrectResponse == false){ //test for false b/c it could be null in which case we want to leave it as "" - strCorrectResponse = "f"; - } - - return SCORM_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_TRUE_FALSE, - strResponse, strCorrectResponse); -} - -function SCORM_RecordMultipleChoiceInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordMultipleChoiceInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Short; - strResponseLong += aryResponse[i].Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - strCorrectResponse += aryCorrectResponse[i].Short; - strCorrectResponseLong += aryCorrectResponse[i].Long; - } - - var blnSuccessfullySaved; - - blnSuccessfullySaved = SCORM_RecordInteraction(strID, strResponseLong, blnCorrect, strCorrectResponseLong, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_CHOICE, - strResponse, strCorrectResponse); - - return blnSuccessfullySaved; - -} - - -function SCORM_RecordFillInInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordFillInInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - strResponse = new String(strResponse); - if (strResponse.length > 255){strResponse = strResponse.substr(0, 255);} - - if (strCorrectResponse == null){ - strCorrectResponse = ""; - } - - strCorrectResponse = new String(strCorrectResponse); - if (strCorrectResponse.length > 255){strCorrectResponse = strCorrectResponse.substr(0, 255);} - - return SCORM_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_FILL_IN, - strResponse, strCorrectResponse); -} - -function SCORM_RecordMatchingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordMatchingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Source.Short + "." + aryResponse[i].Target.Short; - strResponseLong += aryResponse[i].Source.Long + "." + aryResponse[i].Target.Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - strCorrectResponse += aryCorrectResponse[i].Source.Short + "." + aryCorrectResponse[i].Target.Short; - strCorrectResponseLong += aryCorrectResponse[i].Source.Long + "." + aryCorrectResponse[i].Target.Long; - } - - var blnSuccessfullySaved; - - blnSuccessfullySaved = SCORM_RecordInteraction(strID, strResponseLong, blnCorrect, strCorrectResponseLong, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_MATCHING, - strResponse, strCorrectResponse); - - - return blnSuccessfullySaved; - -} - -function SCORM_RecordPerformanceInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordPerformanceInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - strResponse = new String(strResponse); - if (strResponse.length > 255){strResponse = strResponse.substr(0, 255);} - - if (strCorrectResponse == null){ - strCorrectResponse = ""; - } - - strCorrectResponse = new String(strCorrectResponse); - if (strCorrectResponse.length > 255){strCorrectResponse = strCorrectResponse.substr(0, 255);} - - return SCORM_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_PERFORMANCE, - strResponse, strCorrectResponse); -} - -function SCORM_RecordSequencingInteraction(strID, aryResponse, blnCorrect, aryCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordSequencingInteraction strID=" + strID + ", aryResponse=" + aryResponse + - ", blnCorrect=" + blnCorrect + ", aryCorrectResponse=" + aryCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - - var strResponse = ""; - var strResponseLong = ""; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - for (var i=0; i < aryResponse.length; i++){ - - if (strResponse.length > 0) {strResponse += ",";} - if (strResponseLong.length > 0) {strResponseLong += ",";} - - strResponse += aryResponse[i].Short; - strResponseLong += aryResponse[i].Long; - } - - for (var i=0; i < aryCorrectResponse.length; i++){ - - if (strCorrectResponse.length > 0) {strCorrectResponse += ",";} - if (strCorrectResponseLong.length > 0) {strCorrectResponseLong += ",";} - - strCorrectResponse += aryCorrectResponse[i].Short; - strCorrectResponseLong += aryCorrectResponse[i].Long; - } - - var blnSuccessfullySaved; - - blnSuccessfullySaved = SCORM_RecordInteraction(strID, strResponseLong, blnCorrect, strCorrectResponseLong, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_SEQUENCING, - strResponse, strCorrectResponse); - - - return blnSuccessfullySaved; - -} - -function SCORM_RecordLikertInteraction(strID, response, blnCorrect, correctResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordLikertInteraction strID=" + strID + ", response=" + response + - ", blnCorrect=" + blnCorrect + ", correctResponse=" + correctResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - var strResponse; - var strResponseLong; - - var strCorrectResponse = ""; - var strCorrectResponseLong = ""; - - strResponse = response.Short; - strResponseLong = response.Long; - - if (correctResponse != null){ - strCorrectResponse = correctResponse.Short; - strCorrectResponseLong = correctResponse.Long; - } - - var blnSuccessfullySaved; - - blnSuccessfullySaved = SCORM_RecordInteraction(strID, strResponseLong, blnCorrect, strCorrectResponseLong, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_LIKERT, - strResponse, strCorrectResponse); - - return blnSuccessfullySaved; -} - -function SCORM_RecordNumericInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, intWeighting, intLatency, strLearningObjectiveID, dtmTime){ - - WriteToDebug("In SCORM_RecordNumericInteraction strID=" + strID + ", strResponse=" + strResponse + - ", blnCorrect=" + blnCorrect + ", strCorrectResponse=" + strCorrectResponse + - ", strDescription=" + strDescription + ", intWeighting=" + intWeighting + ", intLatency=" + intLatency + - ", strLearningObjectiveID=" + strLearningObjectiveID + ", dtmTime=" + dtmTime); - - return SCORM_RecordInteraction(strID, strResponse, blnCorrect, strCorrectResponse, strDescription, - intWeighting, intLatency, strLearningObjectiveID, dtmTime, SCORM_INTERACTION_TYPE_NUMERIC, - strResponse, strCorrectResponse); -} - - -function SCORM_GetEntryMode(){ - var strEntry; - - WriteToDebug("In SCORM_GetEntryMode"); - - SCORM_ClearErrorInfo(); - - strEntry = SCORM_CallLMSGetValue("cmi.core.entry"); - - WriteToDebug("strEntry=" + strEntry); - - if (strEntry == SCORM_ENTRY_ABINITIO){ - WriteToDebug("Returning first time"); - return ENTRY_FIRST_TIME; - } - else if (strEntry == SCORM_ENTRY_RESUME){ - WriteToDebug("Returning resume"); - return ENTRY_RESUME; - } - else if (strEntry == SCORM_ENTRY_NORMAL){ - WriteToDebug("returning normal"); - return ENTRY_REVIEW; - } - else{ - WriteToDebug("ERROR - invalide entry mode"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_ENTRY, - "Invalid entry vocab received from LMS", - "strEntry=" + strEntry); - return null; - } - -} - -function SCORM_GetLessonMode(){ - - var strLessonMode; - - WriteToDebug("In SCORM_GetLessonMode"); - - SCORM_ClearErrorInfo(); - - strLessonMode = SCORM_CallLMSGetValue("cmi.core.lesson_mode"); - - WriteToDebug("strLessonMode=" + strLessonMode); - - if (strLessonMode == SCORM_BROWSE){ - WriteToDebug("Returning browse"); - return MODE_BROWSE; - } - else if(strLessonMode == SCORM_NORMAL){ - WriteToDebug("returning normal"); - return MODE_NORMAL; - } - else if(strLessonMode == SCORM_REVIEW){ - WriteToDebug("Returning Review"); - return MODE_REVIEW; - } - else{ - WriteToDebug("ERROR - invalid lesson mode"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_LESSON_MODE, - "Invalid lesson_mode vocab received from LMS", - "strLessonMode=" + strLessonMode); - return null; - } - -} - -function SCORM_GetTakingForCredit(){ - - var strCredit; - - WriteToDebug("In SCORM_GetTakingForCredit"); - - SCORM_ClearErrorInfo(); - - strCredit = SCORM_CallLMSGetValue("cmi.core.credit"); - - WriteToDebug("strCredit=" + strCredit); - - if (strCredit == "credit"){ - WriteToDebug("Returning true"); - return true; - } - else if (strCredit == "no-credit"){ - WriteToDebug("Returning false"); - return false; - } - else{ - WriteToDebug("ERROR - invalid credit"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_CREDIT, - "Invalid credit vocab received from LMS", - "strCredit=" + strCredit); - return null; - } -} - - - -function SCORM_SetObjectiveScore(strObjectiveID, intScore, intMaxScore, intMinScore){ - - var intObjectiveIndex; - var blnResult; - - WriteToDebug("In SCORM_SetObjectiveScore, strObejctiveID=" + strObjectiveID + ", intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore); - - SCORM_ClearErrorInfo(); - - intObjectiveIndex = SCORM_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".id", strObjectiveID); - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".score.raw", intScore) && blnResult; - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".score.max", intMaxScore) && blnResult; - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".score.min", intMinScore) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; - -} - -function SCORM_SetObjectiveDescription(strObjectiveID, strObjectiveDescription){ - - var intObjectiveIndex; - var blnResult; - - WriteToDebug("In SCORM_SetObjectiveDescription, strObjectiveDescription=" + strObjectiveDescription); - WriteToDebug("Objective Descriptions are not supported prior to SCORM 2004"); - - SCORM_ClearErrorInfo(); - - blnResult = SCORM_TRUE; - - WriteToDebug("Returning " + blnResult); - - return blnResult; - -} - - - -function SCORM_SetObjectiveStatus(strObjectiveID, Lesson_Status){ - - var intObjectiveIndex; - var blnResult; - var strSCORMStatus = ""; - - WriteToDebug("In SCORM_SetObjectiveStatus strObjectiveID=" + strObjectiveID + ", Lesson_Status=" + Lesson_Status); - - SCORM_ClearErrorInfo(); - - intObjectiveIndex = SCORM_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - if (Lesson_Status == LESSON_STATUS_PASSED){ - strSCORMStatus = SCORM_PASSED; - } - else if (Lesson_Status == LESSON_STATUS_FAILED){ - strSCORMStatus = SCORM_FAILED; - } - else if (Lesson_Status == LESSON_STATUS_COMPLETED){ - strSCORMStatus = SCORM_COMPLETED; - } - else if (Lesson_Status == LESSON_STATUS_BROWSED){ - strSCORMStatus = SCORM_BROWSED; - } - else if (Lesson_Status == LESSON_STATUS_INCOMPLETE){ - strSCORMStatus = SCORM_INCOMPLETE; - } - else if (Lesson_Status == LESSON_STATUS_NOT_ATTEMPTED){ - strSCORMStatus = SCORM_NOT_ATTEMPTED; - } - - WriteToDebug("strSCORMStatus=" + strSCORMStatus); - - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".id", strObjectiveID); - blnResult = SCORM_CallLMSSetValue("cmi.objectives." + intObjectiveIndex + ".status", strSCORMStatus) && blnResult; - - WriteToDebug("Returning " + blnResult); - - return blnResult; -} - - - -function SCORM_GetObjectiveScore(strObjectiveID){ - - var intObjectiveIndex; - - WriteToDebug("In SCORM_GetObjectiveScore, strObejctiveID=" + strObjectiveID); - - SCORM_ClearErrorInfo(); - - intObjectiveIndex = SCORM_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - return SCORM_CallLMSGetValue("cmi.objectives." + intObjectiveIndex + ".score.raw"); - -} - - -function SCORM_GetObjectiveDescription(strObjectiveID){ - - WriteToDebug("In SCORM_GetObjectiveDescription, strObejctiveID=" + strObjectiveID); - WriteToDebug("ObjectiveDescription is not supported prior to SCORM 2004"); - return ""; - -} - - -function SCORM_GetObjectiveStatus(strObjectiveID){ - - var intObjectiveIndex; - var strStatus; - - WriteToDebug("In SCORM_GetObjectiveStatus, strObejctiveID=" + strObjectiveID); - - SCORM_ClearErrorInfo(); - - intObjectiveIndex = SCORM_FindObjectiveIndexFromID(strObjectiveID); - - WriteToDebug("intObjectiveIndex=" + intObjectiveIndex); - - strStatus = SCORM_CallLMSGetValue("cmi.objectives." + intObjectiveIndex + ".status"); - - if (strStatus == SCORM_PASSED){ - WriteToDebug("returning Passed"); - return LESSON_STATUS_PASSED; - } - else if (strStatus == SCORM_FAILED){ - WriteToDebug("Returning Failed"); - return LESSON_STATUS_FAILED; - } - else if (strStatus == SCORM_COMPLETED){ - WriteToDebug("Returning Completed"); - return LESSON_STATUS_COMPLETED; - } - else if (strStatus == SCORM_BROWSED){ - WriteToDebug("Returning Browsed"); - return LESSON_STATUS_BROWSED; - } - else if (strStatus == SCORM_INCOMPLETE){ - WriteToDebug("Returning Incomplete"); - return LESSON_STATUS_INCOMPLETE; - } - else if (strStatus == SCORM_NOT_ATTEMPTED || strStatus == ""){ - WriteToDebug("Returning Not Attempted"); - return LESSON_STATUS_NOT_ATTEMPTED; - } - else{ - WriteToDebug("ERROR - status not found"); - SCORM_SetErrorInfoManually(SCORM_ERROR_INVALID_STATUS, - "Invalid objective status received from LMS or initial status not yet recorded for objective", - "strStatus=" + strStatus); - return null; - - } - -} - - -function SCORM_FindObjectiveIndexFromID(strObjectiveID){ - - var intCount; - var i; - var strTempID; - - WriteToDebug("In SCORM_FindObjectiveIndexFromID"); - - intCount = SCORM_CallLMSGetValue("cmi.objectives._count"); - - if (intCount == ""){ - WriteToDebug("Setting intCount=0"); - return 0; - } - - intCount = parseInt(intCount, 10); - - WriteToDebug("intCount=" + intCount); - - for (i=0; i=0 ){ - return true; - } - else{ - return false; - } - -} - - -function IsValidCMITimeSpan(strValue){ - - WriteToDebug("In IsValidCMITimeSpan strValue=" + strValue); - - //note that the spec does not say that minutes or seconds have to be < 60 - - var regValid = /^\d?\d?\d?\d:\d?\d:\d?\d(.\d\d?)?$/; - - if (strValue.search(regValid) > -1){ - WriteToDebug("Returning True"); - return true; - } - else{ - WriteToDebug("Returning False"); - return false; - } -} - - - -function IsValidIso8601TimeSpan(strValue){ - - WriteToDebug("In IsValidIso8601TimeSpan strValue=" + strValue); - - var regValid = /^P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(.\d\d?)?S)?)?$/; - - if (strValue.search(regValid) > -1){ - WriteToDebug("Returning True"); - return true; - } - else{ - WriteToDebug("Returning False"); - return false; - } -} - -function ConvertMilliSecondsToSCORMTime(intTotalMilliseconds, blnIncludeFraction){ - - var intHours; - var intintMinutes; - var intSeconds; - var intMilliseconds; - var intHundredths; - var strCMITimeSpan; - - WriteToDebug("In ConvertMilliSecondsIntoSCORMTime, intTotalMilliseconds = " + intTotalMilliseconds + ", blnIncludeFraction = " + blnIncludeFraction); - - if (blnIncludeFraction == null || blnIncludeFraction == undefined){ - blnIncludeFraction = true; - } - - //extract time parts - intMilliseconds = intTotalMilliseconds % 1000; - - intSeconds = ((intTotalMilliseconds - intMilliseconds) / 1000) % 60; - - intMinutes = ((intTotalMilliseconds - intMilliseconds - (intSeconds * 1000)) / 60000) % 60; - - intHours = (intTotalMilliseconds - intMilliseconds - (intSeconds * 1000) - (intMinutes * 60000)) / 3600000; - - WriteToDebug("Separated Parts, intHours=" + intHours + ", intMinutes=" + intMinutes + ", intSeconds=" + intSeconds + ", intMilliseconds=" + intMilliseconds); - - /* - deal with exceptional case when content used a huge amount of time and interpreted CMITimstamp - to allow a number of intMinutes and seconds greater than 60 i.e. 9999:99:99.99 instead of 9999:60:60:99 - note - this case is permissable under SCORM, but will be exceptionally rare - */ - - if (intHours == 10000) - { - WriteToDebug("Max intHours detected"); - - intHours = 9999; - - intMinutes = (intTotalMilliseconds - (intHours * 3600000)) / 60000; - if (intMinutes == 100) - { - intMinutes = 99; - } - intMinutes = Math.floor(intMinutes); - - intSeconds = (intTotalMilliseconds - (intHours * 3600000) - (intMinutes * 60000)) / 1000; - if (intSeconds == 100) - { - intSeconds = 99; - } - intSeconds = Math.floor(intSeconds); - - intMilliseconds = (intTotalMilliseconds - (intHours * 3600000) - (intMinutes * 60000) - (intSeconds * 1000)); - - WriteToDebug("Separated Parts, intHours=" + intHours + ", intMinutes=" + intMinutes + ", intSeconds=" + intSeconds + ", intMilliseconds=" + intMilliseconds); - - } - - //drop the extra precision from the milliseconds - intHundredths = Math.floor(intMilliseconds / 10); - - //put in padding 0's and concatinate to get the proper format - strCMITimeSpan = ZeroPad(intHours, 4) + ":" + ZeroPad(intMinutes, 2) + ":" + ZeroPad(intSeconds, 2); - - if (blnIncludeFraction){ - strCMITimeSpan += "." + intHundredths; - } - - WriteToDebug("strCMITimeSpan=" + strCMITimeSpan); - - //check for case where total milliseconds is greater than max supported by strCMITimeSpan - if (intHours > 9999) - { - strCMITimeSpan = "9999:99:99"; - - if (blnIncludeFraction){ - strCMITimeSpan += ".99"; - } - } - - WriteToDebug("returning " + strCMITimeSpan); - - return strCMITimeSpan; - -} - - -function ConvertMilliSecondsIntoSCORM2004Time(intTotalMilliseconds){ - - WriteToDebug("In ConvertMilliSecondsIntoSCORM2004Time intTotalMilliseconds=" + intTotalMilliseconds); - - var ScormTime = ""; - - var HundredthsOfASecond; //decrementing counter - work at the hundreths of a second level because that is all the precision that is required - - var Seconds; // 100 hundreths of a seconds - var Minutes; // 60 seconds - var Hours; // 60 minutes - var Days; // 24 hours - var Months; // assumed to be an "average" month (figures a leap year every 4 years) = ((365*4) + 1) / 48 days - 30.4375 days per month - var Years; // assumed to be 12 "average" months - - var HUNDREDTHS_PER_SECOND = 100; - var HUNDREDTHS_PER_MINUTE = HUNDREDTHS_PER_SECOND * 60; - var HUNDREDTHS_PER_HOUR = HUNDREDTHS_PER_MINUTE * 60; - var HUNDREDTHS_PER_DAY = HUNDREDTHS_PER_HOUR * 24; - var HUNDREDTHS_PER_MONTH = HUNDREDTHS_PER_DAY * (((365 * 4) + 1) / 48); - var HUNDREDTHS_PER_YEAR = HUNDREDTHS_PER_MONTH * 12; - - - HundredthsOfASecond = Math.floor(intTotalMilliseconds / 10); - - Years = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_YEAR); - HundredthsOfASecond -= (Years * HUNDREDTHS_PER_YEAR); - - Months = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_MONTH); - HundredthsOfASecond -= (Months * HUNDREDTHS_PER_MONTH); - - Days = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_DAY); - HundredthsOfASecond -= (Days * HUNDREDTHS_PER_DAY); - - Hours = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_HOUR); - HundredthsOfASecond -= (Hours * HUNDREDTHS_PER_HOUR); - - Minutes = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_MINUTE); - HundredthsOfASecond -= (Minutes * HUNDREDTHS_PER_MINUTE); - - Seconds = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_SECOND); - HundredthsOfASecond -= (Seconds * HUNDREDTHS_PER_SECOND); - - - if (Years > 0) { - ScormTime += Years + "Y"; - } - if (Months > 0){ - ScormTime += Months + "M"; - } - if (Days > 0){ - ScormTime += Days + "D"; - } - - //check to see if we have any time before adding the "T" - if ((HundredthsOfASecond + Seconds + Minutes + Hours) > 0 ){ - - ScormTime += "T"; - - if (Hours > 0){ - ScormTime += Hours + "H"; - } - - if (Minutes > 0){ - ScormTime += Minutes + "M"; - } - - if ((HundredthsOfASecond + Seconds) > 0){ - ScormTime += Seconds; - - if (HundredthsOfASecond > 0){ - ScormTime += "." + HundredthsOfASecond; - } - - ScormTime += "S"; - } - - } - - - if (ScormTime == ""){ - ScormTime = "0S"; - } - - ScormTime = "P" + ScormTime; - - WriteToDebug("Returning-" + ScormTime); - - return ScormTime; -} - - - -function ZeroPad(intNum, intNumDigits){ - - WriteToDebug("In ZeroPad intNum=" + intNum + " intNumDigits=" + intNumDigits); - - var strTemp; - var intLen; - var i; - - strTemp = new String(intNum); - intLen = strTemp.length; - - if (intLen > intNumDigits){ - WriteToDebug("Length of string is greater than num digits, trimming string"); - strTemp = strTemp.substr(0,intNumDigits); - } - else{ - for (i=intLen; i -1){ - WriteToDebug("Returning False - character other than a digit, dash or period found"); - return false; - } - - //if contains a dash, ensure it is first and that there is only 1 - if (strValue.search("-") > -1){ - if (strValue.indexOf("-", 1) > -1){ - WriteToDebug("Returning False - dash found in the middle of the string"); - return false; - } - } - - //ensure only 1 decimal point - if (strValue.indexOf(".") != strValue.lastIndexOf(".")){ - WriteToDebug("Returning False - more than one decimal point found"); - return false; - } - - //ensure there is at least 1 digit - if (strValue.search(/\d/) < 0){ - WriteToDebug("Returning False - no digits found"); - return false; - } - - WriteToDebug("Returning True"); - return true; - -} - - -function IsAlphaNumeric(strValue){ - WriteToDebug("In IsAlphaNumeric"); - if (strValue.search(/\w/) < 0){ - WriteToDebug("Returning false"); - return false; - } - else{ - WriteToDebug("Returning true"); - return true; - } -} - - -function ReverseNameSequence(strName) -{ - var strFirstName; - var strLastName; - var intCommaLoc; - - - //debug - if (strName=="") strName="Not Found, Learner Name"; - - intCommaLoc = strName.indexOf(","); - strFirstName = strName.slice(intCommaLoc+1); - strLastName = strName.slice(0, intCommaLoc); - - strFirstName = Trim(strFirstName); - strLastName = Trim(strLastName); - - - - return strFirstName + ' ' + strLastName; -} - - -function LTrim(str) { // remove leading spaces - str = new String(str); - return(str.replace(/^\s+/, '')); - -} - -function RTrim(str) { // remove trailing spaces - str = new String(str); - return(str.replace(/\s+$/, '')); -} - -function Trim(strToTrim) { - var str = LTrim(RTrim(strToTrim)); // remove leading and trailing spaces - return (str.replace(/\s{2,}/g," ")); // replace multiple spaces with single spaces -} - - - - -function GetValueFromDataChunk(strID) -{ - var strChunk = new String(GetDataChunk()); - var aryPairs = new Array(); - var aryValues = new Array(); - var i; - - aryPairs = strChunk.split(parent.DATA_CHUNK_PAIR_SEPARATOR); - - for (i=0;i - - - - - -   - - - diff --git a/examples/AQuizmaker SCORM12/lms/browsersniff.js b/examples/AQuizmaker SCORM12/lms/browsersniff.js deleted file mode 100755 index ad34950..0000000 --- a/examples/AQuizmaker SCORM12/lms/browsersniff.js +++ /dev/null @@ -1,206 +0,0 @@ - -// end hide JavaScript diff --git a/examples/AQuizmaker SCORM12/lms/goodbye.html b/examples/AQuizmaker SCORM12/lms/goodbye.html deleted file mode 100755 index 17b4309..0000000 --- a/examples/AQuizmaker SCORM12/lms/goodbye.html +++ /dev/null @@ -1,7 +0,0 @@ - -
-



-The content has ended. You may close this window. - -
- \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/lms/lms.js b/examples/AQuizmaker SCORM12/lms/lms.js deleted file mode 100755 index 18e46e1..0000000 --- a/examples/AQuizmaker SCORM12/lms/lms.js +++ /dev/null @@ -1,504 +0,0 @@ -/************** -Articulate LMS Libary --- -Modify data to fit the rsecAPI --- -Version 4.0.000 -**************/ - -var SURVEY_CORRECT_RESPONSE = "_"; - -// RSEC API -var lmsAPI = parent; -var g_bAPIPresent = false; -var g_bLMSPresent = false; - - -// Is Lesson Completed -var g_bLessonCompleted = false; - -// Resume data -var g_strResumeData = ""; - -// Save State Delay -var g_nSaveTimeout; -var g_nDelayCount = 0; -var g_strStatus = ""; - -if (lmsAPI && lmsAPI.IsLmsPresent) -{ - g_bAPIPresent = true; - g_bLMSPresent = lmsAPI.IsLmsPresent(); -} - -var g_strLDelim = "|~|"; -var g_strLInteractionDelim = "|#|"; - -function lms_DoFSCommand(command, args) -{ - if (g_bAPIPresent) - { - args = String(args); - command = String(command); - - var arrArgs = args.split(g_strLDelim); - - switch (command) - { - case "BW_StoreQuestionResult": - RecordInteraction(arrArgs); - break; - - case "BW_SetResumeData": - g_strResumeData = args; - SaveStateData(); - break; - - case "BW_UpdateStatus": - ReportStatus(); - break; - - case "BW_UpdateViewStatus": - SetStatus(normalizeStatus(g_oContentResults.strStatus)); - break; - - case "BW_InitResume": - if (arrArgs[0] == "true") - { - g_strStatus = "incomplete"; - } - else - { - SetStatus("incomplete"); - } - break; - case "BW_ClosePlayer": - // This is an important milestone, save the data - - ReportStatus(); - - LMSCommit(); - - lmsAPI.ConcedeControl() - - break; - } - } -} - -function ReportStatus() -{ - if (g_oContentResults.strType == "quiz") - { - lmsAPI.SetScore(g_oContentResults.nScore, 100, 0); - } - - SetStatus(normalizeStatus(g_oContentResults.strStatus)); -} - -function RecordInteraction(arrArgs) -{ - var bResult = true; - - var strQuizId = arrArgs[0]; - var strId = arrArgs[1]; - // var strId = arrArgs[2]; // Quiz id - var strType = arrArgs[3]; - var strCorrectResponse = arrArgs[4]; - var strStudentResponse = arrArgs[5]; - var nLatency = arrArgs[6]; - var strResult = arrArgs[7]; - var nPoints = arrArgs[8]; - var strTime = arrArgs[9]; - var strWeight = arrArgs[10]; - var nQuestionNumber = arrArgs[11]; - var strDescription = arrArgs[12]; - var strLearningObjectiveId = arrArgs[13]; - var bTracked = (arrArgs[14] == "true"); - var bSurvey = (strResult.toLowerCase() == "neutral"); - - if (bTracked) - { - strLearningObjectiveId = strLearningObjectiveId.replace(/[ \t\r\n\v\f]/g, "_"); - - strResult = normalizeResult(strResult); - - var strTemp = ""; - strTemp += "Description: " + strDescription + "\n"; - strTemp += "Time: " + strTime + "\n"; - strTemp += "Id: " + strId + "\n"; - strTemp += "Learning Objective Id: " + strLearningObjectiveId + "\n"; - strTemp += "Type: " + strType + "\n"; - strTemp += "Correct Response: " + strCorrectResponse + "\n"; - strTemp += "Student Response: " + strStudentResponse + "\n"; - strTemp += "Result: " + strResult + "\n"; - strTemp += "Weight: " + strWeight + "\n"; - strTemp += "Latency: " + parseInt(nLatency) + "\n"; - strTemp += "Survey: " + bSurvey; - - switch(strType) - { - case "truefalse": // True - False - var bUserResult = (strStudentResponse.toLowerCase() == "true"); - var bCorrectResult = (strCorrectResponse.toLowerCase() == "true"); - - bResult = lmsAPI.RecordTrueFalseInteraction(strId, - bUserResult, - strResult, - bCorrectResult, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - - case "wordbank": - case "hotspot": - case "multiplechoice": - case "multipleresponse": - var arrUserResult = strStudentResponse.split(g_strLInteractionDelim); - var arrCorrectResult = strCorrectResponse.split(g_strLInteractionDelim); - - for (var i = 0; i < arrUserResult.length; i++) - { - var objUserResult = lmsAPI.CreateResponseIdentifier(arrUserResult[i].substr(0,1), arrUserResult[i]); - arrUserResult[i] = objUserResult; - } - - if (!bSurvey) - { - for (var i = 0; i < arrCorrectResult.length; i++) - { - var strShort = ""; - if (arrCorrectResult[i].length > 0) - { - strShort = arrCorrectResult[i].substr(0,1); - } - - var objCorrectResponse = lmsAPI.CreateResponseIdentifier(strShort, arrCorrectResult[i]); - - arrCorrectResult[i] = objCorrectResponse; - } - } - else - { - arrCorrectResult = new Array(); - } - - - bResult = lmsAPI.RecordMultipleChoiceInteraction(strId, - arrUserResult, - strResult, - arrCorrectResult, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - - case "essay": - case "fillin": - case "numeric": - bResult = lmsAPI.RecordFillInInteraction(strId, - strStudentResponse, - strResult, - strCorrectResponse, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - - case "matching": // Matching - - var arrUserResult = strStudentResponse.split(g_strLInteractionDelim); - var arrCorrectResult = strCorrectResponse.split(g_strLInteractionDelim); - var arrNewUserResult = new Array(); - var arrNewCorrectResult = new Array(); - var nIndex = 0; - - for (var i = 0; i < arrUserResult.length; i += 2) - { - var strShort = "" + (nIndex + 1); - - var objSource = lmsAPI.CreateResponseIdentifier(strShort.substr(0,1), arrUserResult[i]); - var objUserResult = lmsAPI.CreateResponseIdentifier(arrUserResult[i + 1].substr(0,1), arrUserResult[i + 1]); - arrNewUserResult[nIndex] = new lmsAPI.MatchingResponse(objSource, objUserResult); - nIndex++; - } - - nIndex = 0; - - if (!bSurvey) - { - for (var i = 0; i < arrCorrectResult.length; i += 2) - { - var strShort = "" + (nIndex + 1); - - var objSource = lmsAPI.CreateResponseIdentifier(strShort.substr(0,1), arrCorrectResult[i]); - var objCorrectResponse = lmsAPI.CreateResponseIdentifier(arrCorrectResult[i + 1].substr(0,1), arrCorrectResult[i + 1]); - arrNewCorrectResult[nIndex] = new lmsAPI.MatchingResponse(objSource, objCorrectResponse); - nIndex++; - } - } - - bResult = lmsAPI.RecordMatchingInteraction(strId, - arrNewUserResult, - strResult, - arrNewCorrectResult, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - - case "sequence": - var arrUserResult = strStudentResponse.split(g_strLInteractionDelim); - var arrCorrectResult = strCorrectResponse.split(g_strLInteractionDelim); - - for (var i = 0; i < arrUserResult.length; i++) - { - var objUserResult = lmsAPI.CreateResponseIdentifier(arrUserResult[i].substr(0,1), arrUserResult[i]); - arrUserResult[i] = objUserResult; - } - - if (!bSurvey) - { - for (var i = 0; i < arrCorrectResult.length; i++) - { - var strShort = ""; - if (arrCorrectResult[i].length > 0) - { - strShort = arrCorrectResult[i].substr(0,1); - } - - var objCorrectResponse = lmsAPI.CreateResponseIdentifier(arrCorrectResult[i].substr(0,1), arrCorrectResult[i]); - arrCorrectResult[i] = objCorrectResponse; - } - } - else - { - arrCorrectResult = new Array(); - } - - bResult = lmsAPI.RecordSequencingInteraction(strId, - arrUserResult, - strResult, - arrCorrectResult, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - case "likert": - bResult = lmsAPI.RecordLikertInteraction(strId, - lmsAPI.CreateResponseIdentifier(strStudentResponse.substr(0,1), strStudentResponse), - strResult, - strCorrectResponse, - strDescription, - parseInt(strWeight), - parseInt(nLatency), - strLearningObjectiveId); - break; - break; - default: - // alert("Unhandled: " + strType); - break; - } - } -} - -function normalizeResult(result) -{ - switch (result.toUpperCase().charAt(0)) - { - case 'C': return lmsAPI.INTERACTION_RESULT_CORRECT; - case 'I': return lmsAPI.INTERACTION_RESULT_WRONG; - case 'W': return lmsAPI.INTERACTION_RESULT_WRONG; - case 'U': return lmsAPI.INTERACTION_RESULT_UNANTICIPATED; - case 'N': return lmsAPI.INTERACTION_RESULT_NEUTRAL; - } - return result; -} - -function normalizeStatus(status) -{ - switch (status.toUpperCase().charAt(0)) { - case 'C': return "completed"; - case 'I': return "incomplete"; - case 'N': return "not attempted"; - case 'F': return "failed"; - case 'P': return "passed"; - } - return status; -} - - -function timecodeToMilliSeconds( tCode) -{ - var results = tCode.split(":"); - var secs; - for (var i = 0; i < results.length; i++) - { - if (results[i].substr(0,1) == "0") - { - results[i] = results[i].substr(1); - } - } - secs = ((parseInt(results[0]) * 60) + parseInt(results[1])) * 60 + parseInt(results[2]); - return secs * 1000; -} - -function SetStatus(strStatus) -{ - if (strStatus != g_strStatus) - { - g_strStatus = strStatus; - - switch (strStatus) - { - case "complete": - case "completed": - lmsAPI.SetReachedEnd(); - break; - case "incomplete": - lmsAPI.ResetStatus(); - break; - case "not attempted": - break; - case "failed": - lmsAPI.SetFailed(); - break; - case "passed": - lmsAPI.SetPassed(); - break; - } - - ForceCommit(); - } -} - -function SaveStateData() -{ - g_nDelayCount++; - - if (g_nSaveTimeout) - { - clearTimeout(g_nSaveTimeout); - } - - if (g_nDelayCount >= 10) - { - SaveNow(); - } - else - { - g_nSaveTimeout = setTimeout("SaveNow()",500); - } -} - -function ForceCommit() -{ - if (g_bAPIPresent) - { - lmsAPI.SetDataChunk(g_strResumeData); - - LMSCommit(); - } -} - -function SaveNow() -{ - g_nDelayCount = 0; - - if (g_bAPIPresent) - { - lmsAPI.SetDataChunk(g_strResumeData); - } -} - -function RetrieveStateData() -{ - if (g_bAPIPresent) - { - // Get Resume Data - g_strResumeData = lmsAPI.GetDataChunk(); - - // Check to see if the lesson was completed - g_bLessonCompleted = (lmsAPI.GetStatus() == lmsAPI.LESSON_STATUS_COMPLETED); - } -} - -function LMSCommit() -{ - if (g_bWarnOnCommitFail) - { - var bResult = true; - - try - { - bResult = lmsAPI.CommitData(); - } - catch(e) - { - bResult = false; - }; - - if (!bResult) - { - WarnCommit(); - } - } - else - { - lmsAPI.CommitData(); - } -} - -function WarnCommit() -{ - var bResult = false; - - while (!bResult) - { - bResult = true; - if (confirm("The method CommitData failed sending data to LMS. Retry?")) - { - try - { - bResult = lmsAPI.CommitData(); - } - catch(e) - { - bResult = false; - }; - } - } -} - - -// Use this method to update the status at the last minute and then call the LMS APIs Unload method -function LMSUnload() -{ - if (g_bAPIPresent) - { - ReportStatus(); - - lmsAPI.Unload(); - } -} - -setInterval("ForceCommit()", 600000); - -if (g_bAPIPresent) -{ - - if (IE6) - { - setTimeout("ForceCommit()", 5000); - } - else - { - LMSCommit(); - } -} \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/meta.xml b/examples/AQuizmaker SCORM12/meta.xml deleted file mode 100755 index 79d4b42..0000000 --- a/examples/AQuizmaker SCORM12/meta.xml +++ /dev/null @@ -1 +0,0 @@ -Quiz sobre protocolos y la torre TCP/IP \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/mobile/app_store.png b/examples/AQuizmaker SCORM12/mobile/app_store.png deleted file mode 100755 index 81833c6..0000000 Binary files a/examples/AQuizmaker SCORM12/mobile/app_store.png and /dev/null differ diff --git a/examples/AQuizmaker SCORM12/mobile/data.js b/examples/AQuizmaker SCORM12/mobile/data.js deleted file mode 100755 index 68589d7..0000000 --- a/examples/AQuizmaker SCORM12/mobile/data.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('9d("<7h 5D:9c=\'5C://5G.5w.5y/5z/5T-9e\' 5D:9g=\'5C://5G.5w.5y/5z/5T\' j=\'W\' 96=\'4.0.98.9a\' 99=\'2.0\' 9h=\'1.0\' 9p=\'9o\' 9q=\'9s\' 9r=\'W.3s\' 9n=\'5t/5J.4L\' 9j=\'3y/5J.4t\' 9k=\'c\' 9m=\'0\' 9l=\'2C\'><5N><2o s=\'95\' e=\'5o\' w=\'c\' A=\'h\' /><2o s=\'8O\' e=\'z\' w=\'\' A=\'h\' /><2o s=\'8N\' e=\'z\' w=\'W.3s.3Z\' A=\'h\' /><2o s=\'8P\' e=\'5o\' w=\'c\' A=\'h\' /><2o s=\'6m\' e=\'z\' w=\'\' A=\'h\' /><2o s=\'4Y\' e=\'z\' w=\'\' A=\'h\' /><3t><1q j=\'5P\'><8Q /><1q j=\'5O\'><8M /><1q j=\'5x\'><8I /><1q j=\'5I\'><8H /><1q j=\'5L\'><8J /><1M 3H=\'8L\'><1V j=\'5P\' /><1M 3H=\'8S\'><1V j=\'5O\' /><1M 3H=\'8Z\'><1V j=\'5x\' /><1M 3H=\'94\'><1V j=\'5I\' /><1M 3H=\'8Y\'><1V j=\'5L\' /><5V 8T=\'3\'><1s j=\'1A.4v\' e=\'O\' /><1s j=\'1A.5j\' e=\'O\' /><1s j=\'1A.5e\' e=\'O\' /><1s j=\'1A.6n\' e=\'O\' /><1s j=\'1A.59\' e=\'O\' /><1s j=\'3s.3Z\' e=\'5s\'><3l><2y j=\'3x\' e=\'O\' /><2y j=\'5p\' e=\'4F\' I=\'W.1X\' /><1s j=\'3x.3F\' e=\'O\'><3l><2y j=\'5K\' e=\'4F\' I=\'W.1X\' /><1s j=\'3w\' e=\'4T\'><3l><2y j=\'1A.5e\' e=\'O\' /><2y j=\'1A.59\' e=\'O\' /><2y j=\'8V\' e=\'4F\' I=\'\' /><2y j=\'5K\' e=\'4F\' I=\'W.1X\' /><5R 9Y=\'3y/5U.4t\' 9X=\'3y/5U.a1\' x=\'a0\' y=\'9W\'><5W><2S j=\'2r\' 2b=\'9S\' x=\'3Y\' y=\'3X\' 4W=\'9R\' 1S=\'2z\' 4r=\'2z\' /><2S j=\'9T\' 2b=\'9V\' x=\'9U\' y=\'a2\' 4W=\'5X\' 1S=\'2z\' 4r=\'2z\' /><2S j=\'aa\' 2b=\'a9\' x=\'ab\' y=\'ad\' 4W=\'5X\' 1S=\'2z\' 4r=\'2z\' /><5A><6e><2L j=\'1A\' 1t=\'\' 5r=\'W.1A.4v\'><1R><1O M=\'3U\'><1w 3m=\'0\'><2a j=\'5b\' x=\'4E\' y=\'78\' A=\'c\' N=\'h\' 1j=\'\' G=\'13\' F=\'16\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4g.5\' 1h=\'39\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 4c=\'9D\' 4d=\'46\'><1G j=\'5h\' x=\'4b\' y=\'46\' A=\'c\' N=\'h\' 1j=\'\' G=\'0\' F=\'0\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4i\' 1h=\'23\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 3V=\'3W\' 3S=\'\'><1H R=\'0\' 1p=\'0\' 1o=\'0\' 1n=\'0\' 1D=\'¿9C 9y 9u 9t 9v 4U 9x 9w?\' 1m=\'c\'><1l l=\'1i\' i=\'48\' /><1I><1l l=\'1i\' i=\'49\' /><1u j=\'2c\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'9M\' F=\'3T\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'2\' P=\'h\' 1e=\'c\'><2f><1N 3R=\'c\'><1z><5F A=\'h\' /><1l l=\'1i\' i=\'50\' /><1u j=\'5B\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'9P\' F=\'3T\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'3\' P=\'h\' 1e=\'c\'><1z><5F A=\'c\' /><1l l=\'1i\' i=\'51\' /><1O M=\'3U\'><1w 3m=\'0\'><1G j=\'4V\' x=\'5d\' y=\'4y\' A=\'c\' N=\'h\' 1j=\'\' G=\'16\' F=\'0\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'9H.5\' 1h=\'52.5\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 3V=\'3W\' 3S=\'\'><1H R=\'0\' 1p=\'0\' 1o=\'5d\' 1n=\'4y\' 1D=\'5H 9I\' 1m=\'c\'><1l l=\'1i\' i=\'52\' /><1I><4Z>&E;5E&J;&E;p 3j=\'2C\' 1S=\'R\'&J;&E;1r 3i=\'3h\' 7L=\'7R\'b=\'#7Q\'&J;7P &6k;W.$7T; 7S 7K 7M O 7O 7N 7Z 84 83 7U 7W 7Y 7X 7v 7w 7x 7y.&E;/1r&J;&E;/p&J;&E;/5E&J;<1u j=\'6l\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'7J\' F=\'4y\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'2\' P=\'h\' 1e=\'c\'><1z><4p j=\'2r\' /><1l l=\'1i\' i=\'53\' /><1O M=\'3U\'><1w 3m=\'0\'><2a j=\'5f\' x=\'4E\' y=\'78\' A=\'c\' N=\'h\' 1j=\'\' G=\'13\' F=\'16\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4g.5\' 1h=\'39\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 4c=\'7G\' 4d=\'46\'><1G j=\'5c\' x=\'4b\' y=\'46\' A=\'c\' N=\'h\' 1j=\'\' G=\'0\' F=\'0\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4i\' 1h=\'23\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 3V=\'3W\' 3S=\'\'><1H R=\'0\' 1p=\'0\' 1o=\'0\' 1n=\'0\' 1D=\'5Z 85 4U 8v 60 3u 8x.\' 1m=\'c\'><1l l=\'1i\' i=\'48\' /><1I><1l l=\'1i\' i=\'54\' /><1u j=\'2c\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'5u\' F=\'3T\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'2\' P=\'h\' 1e=\'c\'><2f><1N 3R=\'c\'><1z><4p j=\'2r\' /><1l l=\'1i\' i=\'53\' /><3t><1q j=\'6i\'><8q 8p=\'h\' 8s=\'h\' 8r=\'h\' 8E=\'h\' 8D=\'h\' 8c=\'W.4Y\' 8b=\'W.6m\' 8d=\'8a\' /><4p j=\'2r\' /><1O M=\'3U\'><1w 3m=\'0\'><1w 3m=\'1\'><1N 3R=\'h\'><2a j=\'5g\' x=\'4E\' y=\'78\' A=\'c\' N=\'h\' 1j=\'\' G=\'13\' F=\'16\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4g.5\' 1h=\'39\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 4c=\'87\' 4d=\'46\'><1G j=\'5k\' x=\'4b\' y=\'46\' A=\'c\' N=\'h\' 1j=\'\' G=\'0\' F=\'0\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4i\' 1h=\'23\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 3V=\'3W\' 3S=\'\'><1H R=\'0\' 1p=\'0\' 1o=\'0\' 1n=\'0\' 1D=\'6h 6g 6j 8k 8n 8m 8j:\' 1m=\'c\'><1l l=\'1i\' i=\'48\' /><1I><1l l=\'1i\' i=\'55\' /><1u j=\'2c\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'5u\' F=\'3T\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'2\' P=\'h\' 1e=\'c\'><2f><1N 3R=\'c\'><1z><1V j=\'5n.6i\' /><1l l=\'1i\' i=\'53\' /><64 j=\'4X\' x=\'8f\' y=\'27\' A=\'c\' N=\'h\' 1j=\'\' G=\'13\' F=\'66\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'8i.5\' 1h=\'13.5\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'3\' P=\'h\' 1e=\'c\' 8h=\'\' 1S=\'R\' 86=\'c\' 8o=\'c\' 8A=\'c\' 8B=\'0\' 8y=\'14\' 8z=\'8C\' 8F=\'c\' 1r=\'8G\' 8t=\'2\' 8u=\'2\' 7H=\'2\' ae=\'2\'><63><6t 2o=\'W.4Y\' 3B=\'c4\'><1O M=\'3U\'><1w 3m=\'0\'><2a j=\'5a\' x=\'4E\' y=\'78\' A=\'c\' N=\'h\' 1j=\'\' G=\'13\' F=\'16\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4g.5\' 1h=\'39\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 4c=\'bD\' 4d=\'46\'><1G j=\'5l\' x=\'4b\' y=\'46\' A=\'c\' N=\'h\' 1j=\'\' G=\'0\' F=\'0\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'4i\' 1h=\'23\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'1\' P=\'h\' 1e=\'c\' 3V=\'3W\' 3S=\'\'><1H R=\'0\' 1p=\'0\' 1o=\'0\' 1n=\'0\' 1D=\'5Z bQ 5Y 61 60 3u bU al bM.\' 1m=\'c\'><1l l=\'1i\' i=\'48\' /><1I><1l l=\'1i\' i=\'56\' /><1u j=\'2c\' x=\'d\' y=\'30\' A=\'c\' N=\'h\' 1j=\'\' G=\'5u\' F=\'3T\' 1b=\'h\' 1f=\'0\' 1d=\'0\' 1a=\'50\' 1h=\'15\' 1c=\'d\' 1g=\'d\' k=\'d\' q=\'0\' 1k=\'2\' P=\'h\' 1e=\'c\'><2f><1N 3R=\'c\'><1z><4p j=\'2r\' /><1l l=\'1i\' i=\'53\' /><2L j=\'3s\' 1t=\'aJ\' 5r=\'W.3s.3Z\'><6f><5s j=\'3Z\' 1t=\'aM\' aL=\'c\' am=\'1\' 1W=\'-1\' 2l=\'1U\'><6c><2k><2d><4I 3B=\'ak\' 2g=\'W.1X.ao\' 2j=\'1T\' 2i=\'h\' 2e=\'5o\' /><1Z><1V j=\'W.1X.6O\' /><67 2S=\'ag\' af=\'1U\'><6d><5p><4A><1s j=\'3w\' aw=\'c\' av=\'c\' ay=\'c\' ax=\'c\' au=\'h\' /><2L j=\'3x\' 1t=\'ar\' 5r=\'W.3x.3F\'><1R><4T><1R><7q><7r j=\'2h\' 1t=\'bl\' 1Q=\'65 62 6r 6s 6p 6q 6v 6w 6u 4Q/4Po;\' e=\'bt\' bq=\'10\' bn=\'h\' bm=\'h\' 6K=\'c\' bp=\'c\'><3o><4w j=\'5S\' 1Q=\'bo\' /><4w j=\'6x\' 1Q=\'4Q\' /><4w j=\'7e\' 1Q=\'4P\' /><4w j=\'79\' 1Q=\'aY\' /><1P><4u j=\'4M\' 1Q=\'4C 3u b1\' /><4u j=\'5v\' 1Q=\'4C 3u b0\' /><4u j=\'4N\' 1Q=\'4C 3u aX\' /><4u j=\'4S\' 1Q=\'4C 3u aV a 4U b9\' /><5M><4e 4q=\'2h\' 2g=\'1P.4M\' 2j=\'z\' 2i=\'4f.b8.4k\' 2e=\'1T\' /><4e 4q=\'2h\' 2g=\'1P.5v\' 2j=\'z\' 2i=\'4f.bb.4k\' 2e=\'1T\' /><4e 4q=\'2h\' 2g=\'1P.4N\' 2j=\'z\' 2i=\'4f.ba.4k\' 2e=\'1T\' /><4e 4q=\'2h\' 2g=\'1P.4S\' 2j=\'z\' 2i=\'4f.b4.4k\' 2e=\'1T\' /><7t><4x j=\'b5\' 7f=\'10\' 7i=\'aB\'><4B><4m 4n=\'3o.5S\' 4j=\'1P.4M\' /><4m 4n=\'3o.6x\' 4j=\'1P.5v\' /><4m 4n=\'3o.7e\' 4j=\'1P.4N\' /><4m 4n=\'3o.79\' 4j=\'1P.4S\' /><2k><2d><4I 3B=\'b6\' 2g=\'2h.4R\' 2j=\'1T\' 2i=\'3\' 2e=\'4O\' /><1Z><3d K=\'H\' M=\'3D\' T=\'1\' U=\'\' V=\'c\' 4K=\'h\'><1V j=\'7c\' /><4x j=\'b7\' 7f=\'0\' 7i=\'b2\'><4B><2k><2d><4I 3B=\'E\' 2g=\'2h.4R\' 2j=\'1T\' 2i=\'3\' 2e=\'4O\' /><1Z><3d K=\'H\' M=\'3D\' T=\'1\' U=\'\' V=\'c\' 4K=\'c\'><2k><2d><4I 3B=\'aU\' 2g=\'2h.4R\' 2j=\'1T\' 2i=\'3\' 2e=\'4O\' /><1Z><3d K=\'H\' M=\'3D\' T=\'1\' U=\'\' V=\'c\' 4K=\'h\'><1V j=\'7c\' /><6G><4l j=\'1X\' 1Q=\'6J\' 6K=\'c\' 6F=\'80\' bu=\'6N\' br=\'6N\'><3t><1q j=\'6O\'><6L><6M><4A><1s j=\'W.3s.3Z\' /><6Y><6Q j=\'1i\'><7g j=\'8X\' e=\'4l\' 6F=\'80\' 8U=\'0\' 93=\'92\' 91=\'8K\'><7l><8R e=\'4l\' 9i=\'1X\' 97=\'1\' 9b=\'d\' 9f=\'c\' />");',62,759,'|||||||||||color|false|100|type|colors|fill|true||id|alpha||rgb|stop|actions||rotation|path|name|v00|linear||value|width|height|string|resume|show|apos|vectortext|lt|ypos|xpos|appear|data|gt|transition|events|duration|usehandcursor|slide|scrolling|objref|left|textdata|direction|animationid|reverse|_player|objects|vi20|255|||||||||||rotatexpos|tabenabled|xscale|yoffset|shufflelock|xoffset|yscale|rotateypos|Lib|shapemaskid|depth|pr|pngfb|bottom|right|top|actiongroup|font|slideref|lmsid|button|0xC7C7C7|event|v5w|vZB1|onrelease|MsgScene_6ea7FDtP3z1|hotlinkid|accstate|alttext|v003w_|shadowindex|vectorshape|vectordata|textlib|Xxh|4w00Xxh|3w_|onobjectevent|setfocus|timeline|statements|lmstext|slides|align|property|normal|exe_actiongroup|navindex|5s6zGTO9B71|v0w|then_actions|||||||||||scrollarea|linkid|btn0|condition|typeb|ontransitionincomplete|valuea|6DMP5SBWggv|valueb|typea|if_action|elapsedtimemode|globalaudioid|vZc|variable|viewgroupid|starttime|MessageWnd|trackviews|title|showmenuresulticon|enablereplay|enableseek|slidelock|link|center|historygroupid|videozoom|ltr|wipetrans|transduration|transdir|vWxhv5w|0x353535|btn_text_shadow|0xF5F5F5|0xF0F0F0|scene|0xB1B1B1|0x555555|slide_text|btn_hover|0x444444|html_text|window|0xF4F4F4|btn_bg|btn_border|0xF2F2F2|0xAFAFAF|btn_down|Nx6P4w00Nx6P4w00e20Nx6P4w00Nx6PkwMNg40Nx6PkwMNNx6PnwwyLxRzpwMNIx6PpwMNe20Ix6PpwMN4w00pwMNg404w00pwMN1wgfpwMN|||||||||||v00nwwy|v00kwMNe20|Nx6P3w_|show_slidelayer|vPxrw|v00LxRz0000Nx6P1wgfNx6P3w_|v00kwMN00004w00g4000004w0000001wgf1wgf|Articulate|face|dir|prompt|linksto|time|vMx6j5w|choices|_this|01|v000PE|6UKwZJlcmHi|actiongroups|de|btn_text|6C2Lo4hVEXI|6qXgecfr4Jc|quiz_content|v00Vx0M0000Xxh|vi10|operator|vZxPw|500||6EUtqLvLtwW|v00IwwS00004w00g4000004w0000001wgf1wgf|eventname|v00IwwSe20|NwwS4w00NwwSg404w00NwwS1wgfNwwS|v00LwfD|LwfDVx0MNwwSSxh|1wgfXxh|NwwSe20Sxh|4w00e20Xxh|IwwSXxh|IwwSg40Xxh|showrect|defaultaction|110|1000|acctype|text|210|420|6nVBX4G5fEm|||||||||||v_|388|contentwidth|contentheight|addpairresponse|6QT55BqdacC|205|v000t3w00px000000t0505010100w00PE|194|statementid|DragConnectData|quiz|pair|choiceid|3N000000E0a1g70Ix6P|close_window|interactionid|valign|v2wgL2wgL0w|swf|statement|ResumePromptSlide|choice|answer|105|v3PE|sliderefs|evaluate|Capa|00003403|411|action|vi00|vg400w|compare|Aceptar|hideothers|js|statement_6H3LmFk8FSI|statement_6XebfZw2XpD|number|IP|TCP|AttemptCount|statement_5yWItQKEMjQ|slidebank|la|Text|alignto|PrintPromptSlide_Input|PrintPromptUsername_6TmUjhGqtvj|vartext||||||||3h7tQA1|f4HL_WA100HL_WA100h7tQA1|ScrollPromptSlide|ScrollPromptSlide_Scroll|ResumePromptSlide_Scroll|InvalidPromptSlide_Text|383|InvalidPromptSlide|InvalidPromptSlide_Scroll|PrintPromptSlide_Scroll|ResumePromptSlide_Text|v401|ExternalInterfaceErrorSlide|PrintPromptSlide_Text|ScrollPromptSlide_Text|3N000000E0a1g70Sxh|_parent|boolean|nextunsubmittedslide|v001t3w00px000000t0505010100w00PE|startingslide|slidedraw|mobile|160|statement_5x4dvJg5oDU|w3|ActGrpOnFinishButtonClick|org|2001|error_msgs|btn1|http|xmlns|html|resume_player|www|Warning|ActGrpOnSubmitButtonClick|fonts|nextviewedslide|ActGrpOnSubmitAllButtonClick|response_definition|variables|ActGrpOnNextButtonClick|ActGrpOnPrevButtonClick|slideid|display|choice_6pnwocGXuQp|XMLSchema|frame|slidemap|windows|player|hacia|Debes|antes|abajo|cada|onlosefocus|textinput|Agrupa||gotoplay|Slide1|667|html5url|dataurl|exitaction|else_actions|scenes|slidedraws|tu|Introduce|PrintOkButtonClick|nombre|amp|buttonOK|PrintPromptWindowQuizVar_6TmUjhGqtvj|PrintPromptSlide|xA|su|capa|protocolo|con|adjustvar|Modelo|correspondiente|del|choice_5vFYRFUjBOb|00003401|f4Mvr8A100Mvr8A100svB3A1|00003404|00003402|f4wHC4A100wHC4A100InG7A1|3InG7A1|3svB3A1|passpercent|quizzes|3CrKVA1|f4mrJRA100mrJRA100CrKVA1|Results|issurvey|eval_all_unanswered|setquizcomplete|all|EvaluateQuiz|3N000000S0a1g70Sxh|pathlib|vE|vHwwme200w|vHwwm0w|v_0|A1912d2G00dw00dG00ow002d2G00ow00dG00dw00|vG0|v000|pathlibs|vWxhv2wgLWxhv5w|ve20Wxhv5w|v001t3w00px000000t0505010100w00N300000E0a1Eg70Rxhv0w|vUx0g0w|vMwwm2wgLMwwm0w|vKwf70w|vWxhvHwwmg40WxhvHwwmWxhvKwf7Ux0gMwwmRxhvMwwme20RxhvMwwm5w|vMwwmg405w|vmww20w||choice_5gUxa0ih2Wa|vjwNhe200w|vowNh2wgLowNh0w|DisableChoices_6QT55BqdacC|vowNhg405w|choice_6E8WsFnBRZP|points|scoring|bwContent|status|vjwNh0w|vi30|scorerefs|ve20Mx6j5w|3N000000S0a1g70Ix6P|v000t3w00px000000t0505010100w00N300000E0a1Eg70Hx6j0w|vMx6jjwNhg40Mx6jjwNhMx6jmww2KxR3owNhHx6jowNhe20Hx6jowNh5w|interactions|interaction|vMx6j2wgLMx6j5w|answers|vKxR30w|does|not|support|it|no|Respuesta|vA|lida|225|00c|vD0RkjdA111070jw00jw7y000bw0046w0058w0069w0075w0088w0095w00a|348|margintop|v00_B00Ex00E401|299|on|size|this|been|has|The|555555|18pt|feature|LastErrorFeature|locally|v00gwXK000dw001aw002bw00kaw0027w0034w0057w00lbw00agw00gbw00m4w00daw0026w00caw0046w0064w0054w00daw0044w005bw00m6w006aw002bw00nbw008bw0076w00caw0044w005aw004bw0076w00caw0027w0034w005bw009aw0024w005i00|because|browser|your|disabled||vM0llllA1110B0|device|viewing|while|completar|rtl|328|vM0llllA1110b0|v00DwXK000bw00e4w00d6w00c4w00fgw00gaw0044w005aw00haw0029w00i9w00j|var|quizid|usernamevar|quizidtype|vD0RkjdA111020Hw00jw7y0007w0003w001|385|vM0llllA1110E0|bindto|192|campo|en|v00gwXK0009w000dw001aw0027w003aw002aw0047w0034w0056w006aw002aw004bw007bw008bw009aw0046w0064w005bw009aw0027w003bw009aw0024w005bw009bw00abw007bw009aw0024w005bw009aw0024w00baw0047w0036w00caw0024w0054w00daw0044w005i00|siguiente|el|numeric|showuserscore|printresults|showpassfail|showpassingscore|marginleft|marginright|pregunta|vD0RkjdA111020Cw00jw7y000bw0029w003|enviarla|fontsize|textcolor|multiline|maxchars|0x000000|displayusername|showquizreview|bold|_sans|trigger_submit_slide|trigger_slide_finish|trigger_submitall_slide|incomplete|prev_pressed|trigger_next_slide|LastSlideViewed_6ea7FDtP3z1|CurrentQuiz_6nVBX4G5fEm|QuizAdvanceModeWarningShown|trigger_prev_slide|scoreref|next_pressed|queuesize|viewthreshold|playnextdrawslide|v00DwXK000bw00m6w006bw00a7w00law002bw009aw0026w0064w005aw0044w00d4w005aw002bw007aw00h4w00sbw00a4w00o|scoremgr|submitall_pressed|finish_pressed||failstatus|complete|passstatus|submit_pressed|ReviewMode_6nVBX4G5fEm|version|weight|1309|bwversion|2720|maxvalue|xsi|CreateData|instance|mustpass|xsd|tincan_version|ref|flashfonts|debugmode|textdirection|lessonduration|iosfonts|6IppZ4onlGs|projectid|courseid|entrypoint|6ea7FDtP3z1_course_id|donde|desde|dejaste|vez|última|reanudar|Reanudar|v00DwXK0007w00law004gw00gbw00mbw00a4w00q|vM0llllA111060|Deseas|380|v00gwXK0004w00pbw0076w00c6w006bw00abw009bw0087w00law0024w0056w00cbw0084w005bw007bw00agw00gbw00k6w006aw0024w005aw002bw0074w005aw0024w00d4w0057w0034w00fbw00nbw0084w00faw002bw0076w00caw0024w005i00|151|415|191|Message|vM0llllA111090|v00DwXK000aw002bw007aw00h4w00faw0046w0064w00daw0044w00o|Sí|107|vM0llllA1110A0|No|212|external_interface|content|StoryWindow|LightboxWnd|574|StoryPopup|571|framedata|windowswf|vM0llllA1110i0|687|xml|433|lmsresume|5eI3hCI327Y|flashresume|error|everyslide|vM0llllA1110D0|StoryPopupControls|LightboxControlsWnd|578|v00gwXK000dw001aw002bw00kaw0027w0034w005bw009aw0027w003bw00m4w00daw0049w00iaw0046w0066w00caw0024w005bw00raw0047w00l4w00faw0044w005aw004bw00kaw0044w00bbw00a4w005aw004bw0076w00caw0027w0034w005bw009aw0024w005i00|475|marginbottom|wndtype|_current|A1110c0dw00FwoC0007w00m9w0038w0016w0026w0054w00i9w0089w00a8w0066w00c4w00i9w008|vZA00M|A1N10|eq||shufflecount|A1a1ec0nwee4w0ThwNxawtzbwkR4w0T6wXY9wpLcwoFfwSr6wXYlwj8bwkRqwH0hwNxkweknweeqwH0swC6lwj8mw9qfwSrswC69wpL3t2w00px000000n0303010100w00E|AllQuestionsSubmitted|A111080zw00lwpC0009w0008w0018w00l4w00i6w0028w0066w00c4w00fi20|Slide|Scene2|f4PDc9A100PDc9A100orA2A1|3orA2A1|showinmenu|linknext|shuffleinclude|skipreview|linkprev|vD0bJQiA111040jw00sw7y000aw00o7w00p7w00p7w00q|vD0bJQiA1110n09w00sw7y0008w00r7w0068w00g7w0063w00f8w0077w0013w00faw00s6w00m6w00m7w0015w0028w0083w00f7w0063w00f3w0047w0063w00f8w0007w0018w007|correct|vD0bJQiA111030jw00rw7y0007w00p8w00r7w00q|vD0bJQiA1110g09w00rw7y0008w00r7w0068w00g7w0063w00f8w0077w0013w00f3w00u8w00a5w0057w0015w00c8w00a7w0015w005|v00nFcjtx00401|vX00000A1110O0kw00qwx8000gw00sdw00v8w00cdw003dw00gcw0065w00f9w00mcw006dw007cw0065w00fdw00g8w00cdw0088w005dw0089w00mdw0085w004dw0085w00f9w00mdw008dw00a5w00f8w002dw0035w00f9w00mcw006dw00gcw0065w00f9w00mdw0088w00c8w00ccw0018w002dw00gdw008dw00adw0075w00icw001dw00a8w005cw0015w00fi20|vD0bJQiA1110i09w00rw7y0008w00r7w0068w00g7w0063w00f8w0077w0013w00f7w00p5w00c7w0068w00a5w0028w00g8w0085w00c5w0057w001|vD0bJQiA1110i09w00sw7y0008w00r7w0068w00g7w0063w00f8w0077w0013w00faw00s8w00g3w0043w00i6w00m7w0066w00m3w00i8w00t8w00a|vD0bJQiA111020jw00rw7y0003w00u7w00q|Scene1|v00lz0X5x00401|shuffle|QuestionDraw01|v110000A1110g09w00twll000hw00new0086w00few00bdw0069w0026w00f9w002ew003ew00gdw0019w00cdw006ew007ew0086w00fi20|v00nFcjlBWBE|vD0bJQiA111080jw00sw7y0007w0095w0058w00b7w0015w00c8w00a7w0015w005|v110000A1110701x00Xwll000dw0016w0046w00few00hew0036w00ibw00ji20|vD00000A111010ey00Xw7y0003w00k|v00kwPu8w42swiEzwg82w1J3t2w00px000000n0303010100w00E|5YAiDLVnIVW|gte|Acceso|other|Internet|Ethernet|5gXMOxyfugf|Transporte|Aplicación|incorrect|5iYVK4BAiQt|5yWItQKEMjQ|6pnwocGXuQp|lte|61FvdO7PUG4|6H3LmFk8FSI|Red|6XebfZw2XpD|5x4dvJg5oDU|v00PzgA5x00401|v110000A1110h0hw00twll000dw009ew00aew00bew0089w00cdw006ew00dew003dw001ew00adw0066w00e6w00few00bdw0069w0026w00fi20|v004yBpzw67401|vU00000A1110909w00qwh4000cw000bw0018w002cw0035w0048w005bw006cw007cw008|v110000A1110g0ow00Xwll0009w002ew003ew00gdw0019w00cdw006ew007ew0086w00fdw0016w0046w00few00hew0036w00ibw00ji20|A1a1e60vwer|v008w42jwpL2w1JgwNN|vD00000A111010oz00Xw7y0003w00k|vZA0080A1N10|MatchingDragDrop|istracked|aoinclude|HTTP|skipenabled|maxpoints|scoretype|Id|matching|submitunanswered|v00CyiD00008wZjg4000008wZj00003wQa3wQa|v00CyiDe20|v00HyrM|v008wZj00003t3w00px000000E0505010100w00N10|9wedg40|iCYV4wP7iCYV9wediCYV9wediCYV9wediCYV9wede20iCYV9wediCYVBy1Kg40iCYVBy1KiCYVGysPeC8OKyfX9CKIKyfXe209CKIKyfX9wedKyfXg409wedKyfX4wP7KyfX0w00GysP0w00By1Ke200w00By1K|E0a1Eg709CJI0w00eC8O|3N10OaXIA1a1g70aC_B|361|3dTsPA1|f4M3fYA100M3fYA100dTsPA1|BLyfX8wZjLyfXg408wZjLyfX3wQaLyfX|BLyfXe20aC|v00fC7L0000jCYV3wQajCYV8wZjjCYV8wZjjCYV8wZjjCYV8wZje20jCYV8wZjjCYVCyiDg40jCYVCyiDjCYVHyrMfC7LLyfXaC|vNBz300|E0a1Ed|v00t0w00px002bIMA1101010100w00N10|envío|v00NByzywSb401|vG05lkhA1110809w00mwpC0009w0009w0016w0026w0028w0037w0046w0059w001|v00NByz6xZi401|desplazarte|4wP74wP70w009wed|9wed|vZN10WHL_A1a1d|proceder|vD05lkhA1110C09w00kw7y0005w00y8w00r8w0085w00c5w00c7w0016w00m5w0058w0085w00z3w00f3w00f7w00A7w0063w00f5w00c7w0015w0028w00g8w0037w0015w0025w0057w0063w00f7w0015w00c7w0063w00f6w00m8w0085w00c5w00c7w0016w00m5w0057w0063w00k|v00NByz|_XA100jfZQA1|vX00000A1110h0az00Swx8000dw007cw0015w0045w00flw00wdw008dw007cw0015w004dw0085w00fcw00pdw00rcw00q5w00x5w00ucw00q|vG05lkhA1110a09w00mwpC0004w0069w0077w0049w0016w0026w0028w0037w0046w0059w001|vD0fZQjA111090mw00iw7y0008w00r8w0088w00a5w0053w00i8w00a8w0037w0065w00c|v00qG00Dw0001ARsjBA1cYF009w00iw00iw00N20|v000ARsjBA1c|vD05lkhA1110F09w00kw7y000aw00n8w0083w00f8w00b7w0063w00f5w0027w0013w0047w0016w00m6w00m3w00i8w0088w00a7w0068w0078w0083w00f3w0047w0063w00f5w00c7w0015w0028w00g8w0037w0015w0025w0057w0063w00f6w00m8w0085w00c5w00c7w0016w00m5w0057w0063w00k|set|vv0fZQjA1110i04w00dwOc0002w00u6w00a4w0056w0016w00a4w0056w0062w0046w0082w00f6w0076w0012w00f6w00a6w0036w0015w00l6w008|vD05lkhA1110M09w00kw7y0007w00A7w0063w00f5w00c7w0015w0028w00g8w0037w0015w0025w0057w0063w00f8w00a8w0083w00f7w0015w0023w00f6w00m8w0085w00c5w00c7w0016w00m5w0057w0063w00k3w00f3w00u8w00a5w0057w00B8w00a5w0057w0013w0048w0083w00f8w0077w0013w00f8w00a8w0037w0017w00l8w0083w00k|v00qG00Dw0001AYcVtA1cYF009w00iw00iw00N20|v000AYcVtA1c|Desplazarse|A111080sA00rw3h000ew00bew0038w00a8w00acw006aw0058w008ew003|A1110a0jA00rw3h0006w00cew00daw005ew0038w00a8w00acw006aw0058w008ew003|f2L|00003405|vjCLy'.split('|'),0,{})) diff --git a/examples/AQuizmaker SCORM12/mobile/fonts.js b/examples/AQuizmaker SCORM12/mobile/fonts.js deleted file mode 100755 index b477cff..0000000 --- a/examples/AQuizmaker SCORM12/mobile/fonts.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('6p("<2P 39:3A=\'3b://3a.2Z.2p/2H/2B-3K\' 39:3U=\'3b://3a.2Z.2p/2H/2B\'>");',62,441,'||||||||||glyphs|font|Jx|xej|yJ|lA||Jx6j||Ox|hJ|name|vKGv|nF|id||NHrv1HOv2G2w4FiwJDiwdCiw|CouTDoutEou2FguEF8uaGXtIGKt6HxtxHjtNH6t|yJ6j|WG|fGoo||fGoofGKn3G6nTFtmtFZl4FsluE8lUDQk4DQk2CQkoBglLAHlnAhm||zSmQztnGz3oEzoo|Ez8qEz5rZzTrjAEsUActtBMteC4u|hJej|iy|7KCp7K0rEJesaJrtjIlusHevgGMv4FiwEDiwaCiw_AMvOzdvWyiu3yntBx9s8xXq8xzp8x9oBxYm3yKlVyRkMzYjZAsjaCXiEDXi7FXikGsjxHYjmIRkcJKlFJZm7Kbo7KCp|DHBpDHHolHQn4HZmAGjm4GElkFelAEQkEDQkICQkYBeldBElIAjmbAZmVzQnEzHoEzBpEzrqTzjr7AasCASs5BytRBZtBCouEDouGEouqFZtaGytFGSs9HasoHkrDHtqDHBp|cG|Ox6j|||ATvOzrvWyBu3yKtBxrs8x8r8xpp8xXnAxKm0yxlPyIkDzSjJApjQBXiaDXiJEXiNFujRG0kvH_kaIXlsIgnLIBoLI8q|pGMv|5GolLEQkADQkDCQkSBdl5BClyAgm0AVmJzNnrzEorzBprzlqFzcrTz2snAMsTAttGBXttCouFDousEou1FbuDF_tdGHt|FI|viyejEAejEA|Gsj2IYjKIQkqJIlMJUm7K3o7Kop|pGMvLF3wZEawcEiwsDiw2CiwSANvGzgvOynuWxttqxfsXw0rXwCpXweonx0nPxNlFyUkvz_jJAtjYBXivDXi8EXiUE4jEFcjiGrj|iA1lRAckYBAj4DXiAEXiYFXi|vLAEhHAEhHA|ZEUgvBxpsIxp|kGeuDF5vzEIvwDiw4CiwYAiw7AWvizyvMyTufybu_xftJxjsJxbr|vfJBrHABrWy|AjrTBdsMC6tZDCtaF5uyG5u1H5uyH1u4IZtAISt5JKtyJBt|JrtlKet|4B6j|nG|dy|vdyxeJAxeJA|||||||||||viw|vLDxenGxeLN|nGeu|zA|cG6j|3yxe|vby|vbyxeBBxeiJBslJBslJxeSLxeSL|zAKg|vWI7woIbwTHfwoHgwVGiwxGiwqEiwJCEv0B_uPzOtDyBsZxVqjxdpjx8njx9l|xxjHyUhVzJg8BxfQCUewEeeyGeeyHeexIpexJzetK_e|hKphpJVgwIGgDHrgGGrg8FrgVDZgGCuhOBpiWAjjrAykZzNlZzenZzNouA2q|qcGbqcGjp|4BZp4BHq7BnraB2soBzsDB3t3CntvCHtfDHt2EHtCEltaF_swFosTFOr1G|JTvsJ|fA1l|pvB8qVArqjAKqZzcrEzGrEzisEzKsRz7t2AvtmAOtHA5u6BfuyBou0Cou4DouMD3usEJtREdtfFJspF9sAFBrAF8r|QF|AFVpdFVpNEUplESpZDSp4DSphC|oB3soBusuBVsBBjtRBFt5C_ttCbuRCoupDoufEouZEXt|ZEXv|QFlu|WHetWHHtWHquWH8v1I|Charset1|By8kWyYjkzLjLzxjgAljOA9jrB2j5CXiUCXilEXijFkjhGIjRGpkqH6lGH5mWH3nWHeo|MFluwFHu9F2vOEoviEGvODXvaD6wyCiwOBiwWAiw5A6wgzWvBytvXx0vxxfu8xut8xls8x5rKxhqlytpez_o8AuobBiofC6o7D6o8E6oGE7ocF8oAF9oyFBntF|moFpm4FWlMErl8E8lwDQkqCQk8BQkaAgldzIlJy8m|oB8l|aw8l|awej|2z8l|Articulate|ZEXvDE3w3EawvDiwWCiw7CiwqB6wJAWvbAuvGz2vmzku2zCt2zys||2zej|MEej|ME8l||oBej|2zhg|oBxf|lAed|DHxpDHlnHG5mMFQk7EQk5DQknChlGBKldBqmMA6nyAZnlAPolACplArqzAirOA8sfBQsIBvtpCYt7Dou5EouTEouwF1uaGGtDG0t5HmsmHurDHBqDHxp|xed|fAclrANkNAnk7BYjyBEjZBkjuC8j0DXiBDXiYDXikE_iJE0j7F6j|7Fcl|7Kop7KNqNJ2ssJitMIfu5Ibv3HLv1GiwDEiw|xfB|fAej|lAfB|Ciw_BKvZAavoAeu|lAeu|||||||||||bAcl|WGopWGPnGGVmqG_lZFxlBF9l5F|kBEQkcEQkaDQkrCelJBEleBmmMA3nyA1olA_olA6q|Jxed|vOx6j8B6j8B|4Bed|gAej|7FclRE4ltE1l5E_kQD_kTC_kcCslyBVl7BFmJAonxAjolAeplA9q|bAej|vJxusdBusdB|gAgl|jAglOAhkVBCj0DXisEXiYGXi6ImkhJMlhJoo|lwzl|lw6j|MA1m|org|Pyzl|QA1mUAulcBVkwBkk_BTjsCpj2D6jFDPilEPi2FPinFVi|Py6j|8F6j|8Fzl|aCzl|Pyxg|aCsf|aC6j|BGTv|2Igv|XMLSchema|GTvRF4wIEiwADiwnCiwbBZv|OFhoIFVm1F5mnEgl5DglGBglXA6mdAXm5Aho|OFho|5ABqaAtrvA4sQAHskB4tQBttsCFt4DRtLDRtYERt0Gtt5H5t2Iys|nFgm|2001|BGTvQF7wZEcw7EiwfDiwLBiwzAQvozlvzysuLxztjxjsUw2rUwtpUw1ojxQmLxClxyJkjzQjtAkjDBPi5DPiiEPi6FYiWF4jnGej|4GUlEFHl6FylAEplQDplYCpljCKlGB3mfBDmQAbnCAXnoAHooAwpoAlqBA6rOASrdBrsEB0tiCmtYCHtTDHtsEHt9FxtTFmtsG5t|zEv1zTu3y5utxPsUwwrUwBpUweofx0nDxNlmyRk5zVjdAmjlBPiTCPiyEPiIFljTGSjCHSklIRlGIin|IKo|IBq|aCBraCHsACbt|vTE8wdEdwADiwWCiwYAiwTzcvPy5uPy3s|bwFonts|YASkdBskBB5kZBKjtCsjZC9jCD_igEPi7FPipHPitIdkyJClyJZn|UA6j|UASk|nKCpnKbrRJrskJHtpIyuvHovgGRv2FiwEDiw8CiwUAQvEzlvLytuTxBtnxnsUw8rUwEpUw1opxNmWxwlQyEkLzMjZAijcCPiDDPi0FPifGhjvHKjpIBkkJslRJKmnK0onKCp|TGhpTGzoHGSnvG9n5GDmIF5m4FLltEplDDplQCplcCKlBB3mbBCmOA8nBAQnoAwooAepoAgraBusZBHtDDHttEHt5FmtJF0t6GrsvGRrHG2rTGeqTGhp|nFgmYE6mCE3mgE0mRD0mqC0mNBen8Bro8BEq|MA6j|8B|ArticulateBold|w3|||||||||CHtODHt7EHtwEDtWEytgFmt|xmlns|www|http|vJxxedBxedB|cG_ocGdo7Gzn2GUmOFqmyFXl6FGlGEplZDpl4DplwCRlYBhmEBXmkBBncBko4B3p4BEp|RAdo|v8C|fH2AcGvAYEHAJDTAiCTA4BTA1ABA|vKztvLyXu6y3utxatax_rUwNqUwtpUwjocx7nwxXlay_kRy0kTzqjWAPinCPicDPiQD_isE9jVEsjnFKjIF6k2GukiGSk|yjAeyLztxbz1xlyBwwxBwowBwEvSw|u7xluwxNtWxdtpyIsUyaslzErXzZqoAeqRAupRAHo|00|yJMuyJawcJpxTIEy4IzziHvA|9GXtAFWutEtvnD|CXyLDMywEBy5F0yIFqxYFvwcGBvcGXt|F0BIEyBLCyBtByBoAjBjz5BiyGA|zyPxWy0yozcyTzoynAzyUALypBRyWBXylCXy|cGmpcGxo0GPnRF5nvFzmaF1mDEJl5EploDplUBpl8BymoAHnoArpoAbqAAUqMABr7B9svBJs0C2tyCntfDntDEntpFlscGjrcGmp|WA6j|WAXk|vJA|ZAXkIBMjJCijLDPiZEPilGPimHijnINj2JGkJJzl2KOmnK0onKup|zA1m|OC1mAD1mfESlWEHlpFllVF_kbGuktG_jtGjj|||GH|xsi|vzshPxsh2ASdMCSd|tGjjtGYhuFlhvEKgRCKg|ZEUpyEZo|lvHumRGOmcG6nwFen|wFhnaGwnyGZnWGpocH_o|xK|DCosDeotCeo|zAeo|oCxeODxe0FIefGTe9Hpf4IXfBISg7JNh7Jhj7J9kPIRkvIwl|instance|JxCmJx6jdB6jdBCm|cG1pcGro8GOn5G9nUFDmIF5mfFLlOEpl0Epl8DplACQl0CemGBSmlBuncBeo4BZo4BCp|TEjsTEmtuE6u5ESutDmvRCRv1C3wdBiwnAiwqziwCy9wOx0wWwBv|lGSk|lG6j|yJMu|4BSk|DxetryBtqzRtqA5ugB5uTB5utCWt4DKtzDot2E2tmEwsGE_rGEirGEPqxEoqoEZp0EzpFD9p0DMooCmooBVntAwnHz3nWyBmmy0mOxrluxIkaxYjaxYiaxUhzx0hZx7gIyvfrzTesAzetBeeJCeeMDeeKEpeIFAevGSe|9G9hcFLguEBgMDrgYCrgtBrgEA1hPzChPzIiPzBjtAfk8BUkDCzlFD3mxEzmqF3n1GInFGlo_GapkH_pkH6r|xsd|7BSkEB3kGCrjJDPi8FPiiGPi7HcjZHAjvIgk2JXkiJTlyJPmyJUn|HzmhDxmhHzId7DId|kH6rkHZr2HUsNGOt2GzukFjv4EPvRCiwYAiw3Aiw9z3wfyRvnxzv|dx_s2yntPyCtBzRtwARtoBRt2CstJC3tJCgsJCErhCjrRB_qcBMqzAxqOzlq2z8qpyLpMxlpkxGoUw_nUwPmUwMljx|kLxeksyLjazgj4A2j|dG3sdG6tOFVtoFHuGEevYDMvXC1wWBiwJAiwJziwIy6wHxXv0xKv|0yxe|WCxeZExeNGYeBInfXJogiLoh4M3jTMKkTMen|APiYBPiUCPiPDYiLE4jBFhj|vwFBvuF9vsFJuqF3u|nF3ucFruQEQutEdvXDyvpDTvMC4w8CiwsBiwyAiwJz1wUyMvgyhvExOugx4uUwmtUwtsUw3rtxcq2ylpZySoUzmo3BcofC1opD1o|AF|nFPlyEwlTDolcDgloCgllBglSAHloA5moAHmoAbnQAungBMnVB_nyCbojDqo4EFoIE5plFwpNFdqdGWqdG3s|LD1qaC1q7Byq5A2r5Ads5AWsAAot4BRtcCRtMCRtiDFtRDttgE2tMEys0FSrgFargF1q|eN|OxLgOxzd8Bzd8BLg|eN3oeNBnaN7n6NEmWMgmKMUllMFlYLplkLplBKpl6KLlDJ5mkJHm2JgnWI2oOIPoOIHp|sF|OI|wBet|vLC|0y|tQI2vYGxv4F|tDetwEetyFSsBGtspHIrdIXqJIPpdJHodJdn|TMenTMCp9MhrsLXs8K|Oxzd|OxLg|8Bzd|vOxed8Bed8B|8BLg|8BTw|yJed|cGed|8BTw8B8yRA1zzAXz1AuAwz2BNyiB3yyBdxyBRwyBpwvBZvsBCvlB|8B6j|KvXyrwWyRwOygxGytxoyGx7yKxExOxaxOxqw|iHId|TDId|cGtpcGVo2GdoVFwnyFUmcFgmCERl0Epl8DplkCplOBQlgBemYASmEAtnwAbooAVooAxpoAhqxA1rHAMr1BmsnBXsVBjtsCHtdDHtZDHtwEmt4F0tsFrsQFSr0G6rcGlqcGtp|gF1ogFumyETlQDglqCglyBglxAzlwzRloyFm|iyNjbzojlA6jvBPiRCPiLFPi1H6kkIolkI9okIbpkIUpkIzqkI5rlICrmI2snItsnIXspIDtqIhusIWuxI|OBmh||cGFk|TDmh|fGyuwFtvvEUvvDiwgCiwTAiwRzMvPyev9yjuwxntcx9sUwWqUwupUw9oaxYmtxKl6yQkMyVjOzmjQAPiiCPiJDPiCEkjwFQjaGFk|iG|iGyu|wBhh|zAUqzAtp1BfowB1nICSlwD1lTDpkfENjfE8jfEui_D1iJDAhiDkhUC3hoCYgUBQgoBQglAQglz8hlyrhwxQh|EDUq|C0sQBbt|TGwpTGVoLGcoDGunkGSm1GemuFQlYEpl7EplfDplGCRl5CgmKBUmnBwndBdo4BVo4Btp4BmqgB8rtBWrRBusdC2tNCntlDHt4EHtMEHtiFmtQF0taGssxGUrIG7rTGmqTGwp|fx3fbyNetzweMAeecCeepDeesExevFPegGnf1HXftHNgVHChVHIi|VHIiVHsjEH6knHMkZGklAGUl4GqmBFXm8FtnyE8o5EToEDCpEDpq|nA|vUwgtpDIlaxIlax6jnH6jnHSlZAntBHntBH|nAus|TD|TDus|4Bwu|nKupnKMsXIxuvHiwYEiwcEiwEDaw4D2wECPvcCzvQBfvtBWu7Bwu|4BfB|WDdoWDEpsDQq|JxfB|TGwpTGHoIGXnyGbnbGDmRF3mjFKlOEpl5EplnDplPCLlfC5mSBGmtBengB_n4BJo4Bwp4B9qdBVqnBErIBgs2CUsDCitcDHt4EHtUEHtqFitZFUshGgsBGErKGVqTG9qTGwp|ZAqu|nKupnKPsVIzusHiw2FiwODiwNCTvMBrv0Bqu|ZA|7BMkoBokKB2k5CHjyCqj0D8jCD_idEPiZEPinGPioHjjpIPj3JJkJJCl2KRmnK3onKup|4BMk|iZDPiJEPiyFPi9G|RAVk4BxkrB9kOBNjhCujMCbjmD|iNGbjdHwjGHQjZHekhIEktI4lYI8k_Juj1LPiuMPieNPiZN|AQ|iIObjhPKjTPhkdQflAQdmAQMn|OAVk|0B|sF5osFznoF5nkFCm7FemWESlxEEl8EplwDplLCplfCOlMBbmuBOmdBon6B8o0BUo0BCp|Gx|OA6j|Gx6j|A0uDAGufAjvfAZvfADwvA3xMAwxaBNxBB2y5C9yBCgy5DgygEgycFZx9GHxZGgx|fH2A|v4B|Uw|viw6jUz6j5Dus8DusfG6jBJ6j|BACm|5ECm|dJdndJRlLILkhIFjtHUiGG6iDFIhBEhhsDhh|5E6j|RE|BA6j|dESd|YGSd|WGKpWGNoHGVntG0n|Bsh|zA0p|GCxe7ExekFQeyG7foHLffIngJInhcJmicJKj|FDsh|FlmyFFlREfl8EQkdDQkkCQkFBgl|nyvy|yMyxzZy3AbzBAlz7BvzHBzzfCEzWCEzODEzxEmzgF5zOFyykG|xDGaxWGlwWGdv|AaFgBZDyBGCyBlByBgAiBbz2B7yGA|AIlyAom5A3nSzVnEzKoEzzpEzwqUzlr8AasCANs4BntKBKtoC5ucD5u|D5uGEMtlFqtRFRslGgsDGtrWGFqWGKp|hJwvhJixKIsycIDzhHjAnG|vcJ1oRA1oRA|vly|vlyxeRAxeRARlcJRlcJxeILxeIL|cJ|ED|vRA|vgwejRyejiCDtlCDtTFejdIej|cEKgcE|YCPmGEPmCF_lyG8lyGNj|cJKjcJblHIcmaIdnjHRnsGtokFLodE0p|C0p|zAPm|vIB|vIBKggwKggwxeDJxeDJKg|yGNjyGXibGmiQFNhfFqhGE3hZDVggDKgBCKg|YB5rOz5rtzxegCxe|by|vbyxeHAxeHAOt|vtzbtgCbtgC|tzHAOz8oYB8ogCHA|tz1mtzejgCejgC1m|tz|HOt|JKKvIJ0wEI9wAHiwJGiwMEiw1DPviBjv_zguHydtWxzraxUpaxwnaxklPxCjtyUhHzIgWAvfHCTetEeeLGeeRHeeVIseZJFeIKYe|sKVhLJuhQIehWH_gNG_gcF_g3EzhWC8icC2jvBXj9B3lQAbmQAhnQAHofBRpGB_qrCPrdDEsiE5toFytJGyt5HytAHwt4IttBIot7JitEJ9t9K0tAKPs|JKKv|fGSd|ZCsh|iBsh|wDSd|v4Aqv2zRunyXtJx0tqxVr8xNq8xHp8xCosxqnMxemsyel8zekeABjkBXiTCXivDXi5E2jIE8jfFojOFEjfG3kIGuk2H8l|5H8l|5Hej|v7B|WG0u|TG0udGUu6Fsv0E|vDC|hJwv|vfy|vfyxenCxeRH2teNxemRxemR|zxiwmviwnBeeADee|vOAUgLAUgLA|SO|vSOUgOOUg1J|vAG|v3ybtTAbtTA|RegisterFonts|DHxpDHlnHG5mLFQk8EQkaDQksCflLBFlgBlmOA0nzATnlAKolACplAwqAAnrQAdshBUsLBztrC_t8Dou5EouUEouyF0ucGDtFGZs7HjsnHrrDHzqDHxp|7Kop7KJqPJYrvJbtQI9uaI6v7HIv5GiwEEiwQDiw7D6wqCWvTBDvlBjvXAXuyAzuiAbu|YGZtLGounGPu|WGjpWGSnHGYmsG1mYFxlyF8l3F_kAEQkcEQkaDQkrCelJBEleBmmMA3nyA1olA_olA6q|lA3l|oA3lDAIkZAkkkBYjQBEjkCkj_C8jEDXitEXiYGXi6ImkhJMlhJoo|oA_kYA4kYBwjYCXiDEXi1GXi3Huj5I0kMIVksJNlNJYm7K6o7Kop|WGej|Lyjzvwjz3ybtTAbt|lA_k|fAbu|fA|GZt|1Hbu|ZGbuLGzulGXuYFjvoFDvREWv8E6wsDiwDCiwaBiw7AIv5z6vqy8uMxatsxXr8xHq8xop8x3ouxUmRxIlxyQkdzYjfAsjiBXiGCXilEXilFxjlG6kTG_k|WG_k|lAej|viyedEAedEA|WGCpWGKoHGTntG0n_FlmwFFlOEfl5EQk7DQkqBQkxA9mEztnEzzpEzrqRzjr3AaswASsZAytDBZtiCoucDouaEouTEXtBFut2GOsvG6sIGgrWGpqWGCp|lAHplAxqoAarrAOrzAhsHAMsUA7t5BttnBKtIB3uaCeuECou8DouYEouXF0tWGErWG8p|FdvtFzvYEUvgE5wADiwMCiwlAiwazTu|ly|vlyxe7Ixe7IKgRAKgRARltHRltH1oRA1oRAOt7IOt7I|xrt|WGed|hJed|xPq|WGju|TGjuiGev8FMv|FTstGbsHGlrWGuqWGCp|8yng8yKdOAKdOAng|DiwECiwfBiwcALvazbvuyfuPxittx1s8xMq8xlp8x0ovxSmTxHlzyPkfzXjgArjiBXiECXivDXicE8jWEkjsFEj|1Hej|hJfB|FYjnGkkLGIkZG3l|1H3l|WGCpWGPoIGZnvG6n2GqmBFKlSEhl8EQk8DQkfCQkABclWAzluAcm3ARmRzInEzzoEzxpEzEqVzyrbArsFA4t8BJtNB3uqCouaDou7EouQEZtyFyt|WGfB|4EulODklsDdl7D6lMC1lqCXk6CUkOBQkABQkDAQk_zellzEllzmmlz9nXzDnyA5oGBBosCXo1DipDDEp1E3qsEuqFE2rTEBrTEjs|AUqvACqMzgqfz0qJyJpbyppNx0pnxCo6x4oRwxnRwPmRw0l2y_jfzXisBXi5CXiRC5jBDejgErj|2xutzxPtny6ubzou|zou0BouHBXtnCttnCBsnCeseCZr5CHrOBrrvBar|v3xXtqE8lqx8lqxej9Hej9HhlOz5uqH5uqH'.split('|'),0,{})) diff --git a/examples/AQuizmaker SCORM12/mobile/linen_background.jpg b/examples/AQuizmaker SCORM12/mobile/linen_background.jpg deleted file mode 100755 index 01f3aea..0000000 Binary files a/examples/AQuizmaker SCORM12/mobile/linen_background.jpg and /dev/null differ diff --git a/examples/AQuizmaker SCORM12/mobile/masks.js b/examples/AQuizmaker SCORM12/mobile/masks.js deleted file mode 100755 index fde7bec..0000000 --- a/examples/AQuizmaker SCORM12/mobile/masks.js +++ /dev/null @@ -1 +0,0 @@ -// Intentionally left blank \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/mobile/mobile_icon.png b/examples/AQuizmaker SCORM12/mobile/mobile_icon.png deleted file mode 100755 index 20f3762..0000000 Binary files a/examples/AQuizmaker SCORM12/mobile/mobile_icon.png and /dev/null differ diff --git a/examples/AQuizmaker SCORM12/mobile/player.css b/examples/AQuizmaker SCORM12/mobile/player.css deleted file mode 100755 index 2c19940..0000000 --- a/examples/AQuizmaker SCORM12/mobile/player.css +++ /dev/null @@ -1,3405 +0,0 @@ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - font-weight: inherit; - font-style: inherit; - font-size: 100%; - font-family: inherit; - vertical-align: baseline; -} - -body { - font-family: Helvetica, Arial, Verdana, sans-serif; - line-height: 1.5; /* Unitless for proper inheritance */ - color: #434750; - /*background: #737d85 url(bg_horizontal.jpg) no-repeat 286px 45px;*/ - /*background: #fff;*/ -} - -body { font-size: 75%; } /* The font-size percentage is of 16px. (0.75 * 16px = 12px) */ -html > body { font-size: 12px; } /* All other browsers */ - -h1,h2,h3,h4,h5,h6 { font-weight: normal; color: #434750; } - -h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; } -h2 { font-size: 2em; margin-bottom: 0.75em; } -h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } -h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; height: 1.25em; } -h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } -h6 { font-size: 1em; font-weight: bold; } - -h1 img, h2 img, h3 img, -h4 img, h5 img, h6 img { - margin: 0; -} - - - - - -html, body -{ - margin: 0; - padding: 0; - height: 100%; - width: 100%; - -} - -body -{ - -webkit-user-select: none; - -webkit-touch-callout: none; - /*background: #000; - font-family: Arial, Sans-Serif; - font-size: 14px;*/ - /*overflow: hidden;*/ - position: absolute; - left: 0px; - top: 0px; -} - -body.paused div -{ - -webkit-animation-play-state:paused; - -webkit-transition-play-state:paused; -} - -img, div -{ - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); /*-webkit-transform:translate3d(0,0,0)*/ -} - -.framewrap.info -{ - left:0px!important; -} - -.datestamp -{ - background:#eee!important; - color:#000!important; - display:inline-block; -} - -.timerlist -{ - position:absolute; - background:#fff!important; - display:inline-block; - z-index:10000; -} - -#slidebg -{ - position:absolute; - background-color:transparent; - /* - width: 720px; - height: 540px; - */ - left:0; - top:0; - width:100%; - height:100%; - z-index:0; - border-radius:10px; -} - -#slideframe -{ - margin: auto; - overflow: hidden; - width: 720px; - height: 540px; - - position:absolute; - - - - - opacity: 0; -} - -#slideframe[orient="landscape"] -{ -} - -#slideframe[orient="landscape"] video -{ -/*margin-left:80px;*/ -} - -#slideframe[orient="portrait"] -{ - /* - position:absolute; - top:100px; - */ -} - -#slidecontainer -{ - position: relative; /*width:20000px;*/ - height: 100%; - - -} - -.window -{ - position: absolute; - z-index: 2500; - background-color: #F3F3F3; - border: solid 1px #E4E4E4; - border-radius: 10px; /*opacity:0.2;*/ -} -.window.prompt -{ - z-index: 2505; -} - - - -.window .slide -{ - margin-top: 0px; -} - -.window>h1 -{ - position: relative; - margin: 10px 15px; - color: #666; -} - -.window>hr -{ - position: relative; - margin: 0px 15px; - width:90%; - border: none; - border-bottom: solid 1px #D3D3D3; -} - -.window p -{ - margin: 0px; -} - -.window .scrollarea -{ - overflow:visible; -} -.disabledscrollarea -{ - overflow:visible!important; -} - - - -.window.LightboxWnd, .window.LightboxControlsWnd, .window.lightbox -{ - border-radius: 0px; - border:none; - background-color:transparent; - -webkit-box-shadow: rgba(0, 0, 0, 0.347656) 0px 0px 30px; - -moz-box-shadow: rgba(0, 0, 0, 0.347656) 0px 0px 30px; - -ms-box-shadow: rgba(0, 0, 0, 0.347656) 0px 0px 30px; - box-shadow: rgba(0, 0, 0, 0.347656) 0px 0px 30px; - border: solid 3px #232323; - background-color:#CFCFCF; -} -.window > .windowContent -{ - position:relative; -} -.window.LightboxWnd>.windowContent, .window.LightboxControlsWnd>.windowContent, .window.lightbox>.windowContent -{ - position:relative; - overflow:hidden; -} - - -.window.LightboxWnd>h1, .window.LightboxControlsWnd>h1,.window.LightboxWnd>hr, .window.LightboxControlsWnd>hr, .window.lightbox>h1, .window.lightbox>hr -{ - display:none; -} -/* -.window.LightboxWnd .slide, .window.LightboxControlsWnd .slide, window.lightbox .slide -{ - -webkit-transform-origin: top left; - -webkit-transform: translate3d(0px, 0px, 0px) scale(0.85) rotate(0deg); - margin:0px; -} -.window.LightboxWnd .windowContent, .window.LightboxControlsWnd .windowContent, .window.lightbox .windowContent -{ - -webkit-transform-origin: top left; - -webkit-transform: translate3d(0px, 0px, 0px) scale(0.85) rotate(0deg); - margin:0px; -} -*/ -.window.lightbox #controls -{ - -webkit-transform-origin: top left; - -webkit-transform: translate3d(0px, 0px, 0px) scale(0.85) rotate(0deg); - margin: -35px 5px; -} -.window.LightboxControlsWnd .slide -{ - margin:2px; -} -.window.LightboxControlsWnd -{ - background-color:#ccc; -} -.window .closeicon -{ - position:absolute; - top:-10px; - width:21px; - height:21px; - z-index:1000; - background-color:#f00; - border-radius:11px; - cursor:pointer; - display:none; -} -.window .closeicon span -{ - position:absolute; - - top: 1px; - left: 7px; - color:#fff; - text-shadow:#000 1px 1px 1px; - font-weight:bold; - font-size:12px; - cursor:pointer; -} - - -.window.LightboxControlsWnd #controls -{ - -webkit-transform-origin: top left; - -webkit-transform: translate3d(0px, 0px, 0px) scale(0.85) rotate(0deg); - left:0px; - margin-top:-33px; -} -.window.LightboxControlsWnd #controls #control-volume, .window.LightboxControlsWnd #controls #control-progress -{ - display:none; -} -.window #control-progress, .window #control-volume -{ - display:none!important; -} -#controls -{ -/*display:none;*/ -} - - - -.slide -{ - clear: none; - float: left; - position: relative; - - overflow: hidden; - width: 720px; - height: 540px; - -webkit-transform: translate3d(0px, 0px, 0px) scale(1.0) rotate(0deg); - -moz-transform: translate3d(0px, 0px, 0px) scale(1.0) rotate(0deg); - -o-transform: translate3d(0px, 0px, 0px) scale(1.0) rotate(0deg); - - opacity: 1; - -moz-opacity: 1; - -o-opacity: 1; - -} - -.slide.fadeable -{ - position: absolute; - opacity: 0; - -webkit-transition-property: opacity; - -webkit-transition-duration: 1s; - -moz-transition-property: opacity; - -moz-transition-duration: 1s; - -o-transition-property: opacity; - -o-transition-duration: 1s; - z-index: 1; -} - -.slide.fadeable.in -{ - opacity: 1; - -webkit-transition-property: opacity; - -webkit-transition-duration: 1s; - -moz-transition-property: opacity; - -moz-transition-duration: 1s; - -o-transition-property: opacity; - -o-transition-duration: 1s; - z-index: 2; -} - -.slide.transitionable -{ - position: absolute; - z-index: 1; -} - -.slide.transitionable.out -{ - z-index: 2; -} - -.slide.transitionable.in -{ - z-index: 3; -} - -.slide.transitionable.out.over -{ - z-index: 4; -} - -.slide.swipable -{ - display: none; -} - -.slide.swipable.in -{ - -webkit-transform: translate3d(0px, 0px, 0px) scale(1.0); - z-index: 3; - display: block; -} - -.slide.swipable.prev -{ - -webkit-transform: translate3d(-640px, 0px, 0px) scale(1.0); - z-index: 2; - display: block; -} - -.slide.swipable.next -{ - -webkit-transform: translate3d(640px, 0px, 0px) scale(1.0); - z-index: 2; - display: block; -} - -/* -.slide.swipable.before -{ - -webkit-transform: translate3d(-640px,0px,0px) scale(1.0); -} -.slide.swipable.after -{ - -webkit-transform: translate3d(640px,0px,0px) scale(1.0); -} -*/ - - -.layer -{ - position: absolute; - background: transparent; - z-index: 1000; - /* - */ - width:100%; - height:100%; - pointer-events:none; -} -.layer.currentlayer -{ - z-index: 1001; -} - -.text -{ - position: absolute; - font-size: 16px; - text-align: left; -} - -canvas, .canvas -{ - display: block; /*z-index:1;*/ -} - -canvas.simplebackground -{ - position: absolute; - left: 0px; - top: 0px; -} - -.item -{ - z-index: 2; - position: absolute; - text-align: left; - display: none; - pointer-events:visible; -} - -.item.unhideable -{ - display: block !important; -} - -.item p -{ - margin-top: 3px; -} - -/* -.item p -{ - width:100%; -} -img.item -{ - z-index:2; - border:none; -} -*/ -img.item.missing -{ - /* - border:dashed 1px #aaa; - opacity:0.5; - */ - } - -.item.vector -{ -/*border:dashed 1px #ccc;*/ -} - -.item.svg -{ -/*border:dashed 1px #fcc;*/ -} - -.item.textlib -{ -/*border:dashed 3px #f00;*/ -} - -.item.imagelib -{ -/*border:dashed 3px #0f0;*/ -} - -.item.textlib p -{ - margin: 0 0 2em 0; /*border:dashed 3px #00f;*/ -/* HACK */ -/*-webkit-transform: scale(0.5)!important;*/ -} - -/* -.item.dragitem -{ - cursor:pointer; -} -*/ -.item.sequenceitem -{ - cursor:pointer; -} -.item.sequencectrl.disabled .item.sequenceitem -{ - cursor:default; -} - -.item.clickable -{ - cursor:pointer; -} -.item.slideframe -{ - overflow:hidden; -} - -.pointercursor -{ - cursor:pointer; -} - -.item.droparea -{ -} - -.item .text-content -{ - z-index: 2; -} - -.item.scrolling -{ - z-index: 2; /*z-index:3;*/ -} - -.item.itemgroup -{ - z-index: inherit; -} - - -.item.simplified -{ -/*border:solid red 5px;*/ - z-index: 2; -} - -.item.interactive -{ - z-index: 4; -} - - - -.item.hotspotmarker -{ - z-index: 4; - cursor:pointer; - -} - -.item.dragging -{ - z-index: 10001!important; - -} - -.item input, .item textarea -{ - width: 100%; - height: 100%; -} - -.item.activedroparea -{ - background-color: Yellow; -} - -.item.failedcanvas -{ - - opacity: 0.5!important; - background-color: #f00; - -} - -.item.linkplaceholder -{ - - opacity: 0.5!important; - background-color: #00f; - display:block!important; - -} - -.item.stategroup -{ - overflow:visible!important; -} - - -.item.vartext -{ - width:100%; - height:100%; -} -.item.vartext.vcenter p -{ - padding:0 5px; -} -.item.vartext.vcenter p -{ - display:table-cell; - vertical-align: middle; -} - -.item.shapemask -{ - display:block; - /*background-color:rgba(0,1,0,0.1);*/ - overflow:hidden; -} - -/* -.item.video -{ - cursor:pointer!important; -} -*/ -/* -.item.imageitem -{ - -webkit-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - -ms-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 10px 10px rgba(0, 0, 0, 0.2); - -} -*/ -.glyph -{ - position:absolute; - /* - background-color:rgba(0,255,0,0.1); - border:solid 1px rgba(0,0,255,0.3); - */ -} - -.scrollwrapper -{ - position:absolute; - overflow-x:hidden; - overflow-y:auto; -} - -.scrollarea -{ - overflow:auto; - -webkit-overflow-scrolling:touch; -} - -.window .scrollwrapper -{ - overflow:visible!important; -} - -.item.scrollarea -{ - overflow-x:hidden; - overflow-y:visible; - overflow-y:auto; - /*overflow:scroll;*/ - -webkit-overflow-scrolling:touch; - margin: 0; - padding:0; - margin: 0px!important; -} -.window.prompt .item.scrollarea -{ - overflow:visible!important; -} -.scrollplaceholder -{ - position:absolute; - width:1px; - height:1px; - background-color:transparent; -} -.item.sequencectrl -{ - overflow-x:hidden; - overflow-y:auto; - -webkit-overflow-scrolling:touch; -} - -.item.expandinglabel .expandinglabelcontent -{ - margin: 36px 8px 0px 6px; -} - -.item.expandinglabel .expandinglabeltitle -{ - margin: 8px 8px 0px 8px; - height: 50px; -} -.expandinglabeltitlecanvas -{ - margin: 6px 8px 0px 6px; -} -.item.expandinglabel .expandinglabeltitle p -{ - line-height: 14px; - margin: 0px; - padding: 0px; -} - -.item.button -{ -} - -.itemid -{ - background-color: #fff; - border: solid 1px #ccc; - font-size: 8px; - font-family: arial; - letter-spacing: 1px; - position:absolute; - padding-left:10px; - z-index:1000; -} - -.item.dragitem > .item, .item.droparea > .item -{ - font-family: Articulate; /*padding:3px 0px;*/ - font-size: 12pt; - color: #666; - font-weight: bold; -} - -.item.droparea > .item -{ -/*padding:15px 0px;*/ -} - -.item.shufflegroup -{ - display:block; -} - -.offcanvas -{ - position:absolute; - left:-1000px; - top:-1000px; -} - -img.loader -{ - position: absolute; - left: -1000px; - top: -1000px; - /*display: none;*/ - -} - -.sequenceindicator -{ - position: absolute; /*width:100%;*/ - height: 2px; - background-color: #000; - display: none; - z-index:1; -} - -.sequencelinenumber -{ - position: absolute; - font-size: 14pt; - font-weight: bold; - cursor:default; -} - -.sequencelinenumber.correct -{ - color:#008520; -} - -.sequencelinenumber.incorrect -{ - color:#DB0000; -} - - -.zoombutton -{ - position:absolute; - width:29px; - height:22px; - margin-left:-15px; - margin-top:-11px; - - background: #eee; - background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ccc)); - border:solid 1px #ccc; - -webkit-box-shadow: inset #fff 0px 0px 1px 1px; - -moz-box-shadow: inset #fff 0px 0px 1px 1px; - -ms-box-shadow: inset #fff 0px 0px 1px 1px; - box-shadow: inset #fff 0px 0px 1px 1px; - border-radius:5px; - - -} -.zoombuttoninner -{ - width:16px; - height:22px; - margin-left:6px; - /*background:transparent url(controls.png) no-repeat;*/ - background:transparent no-repeat; - background-position: -230px 50%; - cursor:pointer; -} -.zoomimage -{ - position:absolute; - z-index:1500; -} - -.interstitial_play -{ - width:0px; - height:0px; - position: absolute; - background-color:transparent; - top: 35%; - left: 41%; - - - border:solid 60px transparent; - /*border-left:solid 100px #fff;*/ - border-left:solid 100px #ccc; - top:50%; - left:50%; - margin-left:-50px; - margin-top:-60px; - -} -.locked, ul.slidelist li.locked, .controlbar-button.locked, #control-submitall.locked, .toptab.locked, .toptab.locked>span -{ - cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAeCAYAAADHJYVoAAAD10lEQVRIS62WW0ibZxjH/59WJdEcUDy0euHEkLlETTGuqaE1XUxrK0IXVBCZtri1xkMPF8VNM9apiQlpG2u22mJXtlLqxW688KoI3YXZxS7aC8tAEJusuhuLh3nAQ/Td+77DdM4J+WpeeCCQ7/v9n+//HL5PsFZfJJ+ePwfjcT1ycj4QEMUjWM5Uk1BoCzbbBZhOHkdaWmrUBDi8qekCnj37BWbzCZSeMCA9PS0qAhzu6rVDIZfDc/teVAU43OP+BlrthwgE3kRVIAwvLNRga2trl8BBa7ALzhrlvwIHqcEeOBMIhUKYmgrijvc+zGUn37vIe+Db29tgsbm5ianXQfT3P0SZpfS9BHbBd8DMGhYbG5t4TQXu3f8Jp0+bRM9BGJ6fn8cz3gEza94J/IGHj56i/MwplIoYNA53u75GvjZvD5gJsGAWBYNv8OPjn3HtyiUUFGgiGjIO73XaodWoOXx29i2kUgnfMM7efgSC0/QXof9tY2VlFbdv3cRRXX7kcEfPV9B8pObgS7YbKKf+VlRY4HJ/h7w8Fc6WmyGXJUGgSLlcBqVSGTm8+9t2ZGSkcvDZ8k/w/Lkf169+gdjYWHjvDsLecQ1FRbqIgP9eqtyWK22fw/f9DxxspevX6fLhY30h9PoC9Pse4dixIlScK0Nm5mFRAsLFxqvE/+tvsDU1cLBSqcCLl+O40/cAtsuf4VBsDAYePKHZX6fZF4qDT0//SdbX1yGTJSIhIQEKhUKYn58nX3Y4YCo1QJWbA4fzLjqoNcX6o2F4S0sLGRsbo7OwQWshQK1Wo7u7my5AbfiafTN59ep3crPrFiRSKS/wKZMRR478Y0t9fT2RyWRobGxESkoKbYRZjIyMYHR0FF6vF8XFxfy6feGLi4tkYfEvfoGEtmZ8fDzb+UJraythN9bW1sLlcmFycpK3sN1ux/j4OCYmJtDV1QWdTseaS9wxm82kvb0dPp8Pzc3NUKlUHNDW1gar1YrBwUH09fWhpKREPNxkMhHmLcvU6XTSaS3g8MrKSjQ0NGBgYIBbYzQaxcFpZsTv9yMpKQnLy8u0CWSIi4vj8Lm5OUgkEjrFK6wpMDQ0tL/n/2cWy7qzsxMajWZfL1nn1NTUwO12i4cbDAZkZ2cjMTGR7iApkpOT6ddCOh2wTP5EMTEx9CVvRk9Pj3g4u4n5zDJkIBZsTbBg87K0tISqqqqDZc78ZZnSJUb3UgaysrL4kzBRi8UCh8MRnczX1tawurrK9z47dXV18Hg84uEzMzPhDtmpKnuDEUJ4sLOwsIDh4WFx8EAgQL8rQxFNXW5urvA3tRy5dCeU618AAAAASUVORK5CYII=), not-allowed; -} -.toptab.locked.ignorelocked, .toptab.locked.ignorelocked > span -{ - cursor: pointer; -} -.loading, .blocked -{ - background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAOhklEQVR4Xu3dZ6wkRxEHcEzOOcezTc5gECKKZJIIIolghOEDSEggJPyJLIKEEEl8QgIhTDBZJhhMFJZsMtgkY4xJzyabYIPJuX5i6jS3t2+ne2Z2d/bdtlSafXcd699VXVXT033YxTY/fSKGcP9mGJ+L50M3eUiHbXLnm76fGM/7NL9PjedjNnlMUwHkdsHEGwWd3IOZJ0SZezblvhDPY3rUccko85+GehQfr8i6AXlSDOW4Bowfx/PuPYb2spZUkJaX9qjjClHmEg0gf4/nP3vUMUqRdQPy+BjF64L+1dCj4vm9ypE9LfI/synz5ngeX1n+4pH/8kHJi782famsZpzs6wbkyjGMTwZdqWECZr6xcmhPjvzHNmXeHs93V5a/dORHmf5UWX7U7OsGxGBeHPSwoH8HnRtUuwY8Lso8seHKe+P5wUoOXS7ykxK8+EdDlVWMl30KgFw3hmNm/zeI6npO0E8qhvjIyJuWlTXkoxVljf+yDSCK/aXpR0UV42adAiBGZGG+bZDFFENr1M6DI//DG7Z8LJ6fqmDRpSIvkkioBX2taSqA3Du48IwGkF/G80UVXLlf5D26yf+ZeJ5SUfYykZe6kqgroKw1jQnIVWIkFuef9RzRq6McfU5tvSLogsJ6jop8D2rynhTPMwvLGbvFPHnwt8Jys9mYy6MBORYgwOCg0cePDrqox+ConXs0gFA9Xy2s4wZNm7J/KOjnheUwMtVVmt2FRfdnw79rB1n/ftM8a+s4IP8YgNw6aqTziT8dLLb0/B69umqUeVYQj5mUAbgkMQoe0mRkQv+qpFADRqqrvmuHPqcPk6AMcirHAIQv8bagI4KIvcG9pYKhbf6xlq4fZFAAKfEJrhX52rEsM7UkkQ7jNwFISG3i3VPR6kD6/NsgwPROYwCicR07PujqQQnKC+L3WZU9u1nkF5fCoK8E/aCg/NUiz12bfF+LZ8naQzKoLOPXFlBqEjC12wbj90PB0IGxAFHXkUGvCtJZoOjgS4J+VzPSyPuIhlnKnVZQloTepsn33Xj+saAMMICSvk9Bkf1ZlKOqElB1mAR9pOygdscEROX7gl7YdJbq+mGQWFVNumVkFvk1wC8Gdel3quPwpgEO5Z8LGktm9onwmgCp7oBxYdDkrKw2D24Rfzw3KFXXl+P3RwqYlFkYB3duBonBXWsCy87CLv0iiD+xKJmEuZjXMpJZrr1UVX+I36NIRnZ4bAnJeu8SPyzQCQrvuyaKa8azXizq4ltdydplLCXqMZmpzpq1g1SkRaUOktgFfle/D/r/ZQGiodsHMUcTlA/Eb+tKSTJw1hPLhRnbxbhUISUMSkC66mz3k0RRjVlWzGuQebsbE5YJiDYfEGSxB4rZ++mKgbBiMM1MHFMtGHOtaUpV5boDiL5efedkXDYgOuAtoEXaIOj4r3f26v8ZvFaVxgSjsOkDsgmv6EuayF1GRp829pdZBSAJCl8FKD8KKg1vDBrcCIUzvJIO5FLB0N8uQDhcZwf1iU21+WGG2cjgaVDen5d44SPwtHcVeNM2b0vWp67GrEXq3BXYRYCwtz8exOx8bRCfYEgy21hP2vTemvqqWViHtN2n7BDncV57jAKBSIDwz+aOfREgL49CNp1hHrIJ7a1B4jV9E33MejLbWColTlzftoaUG+KrzLZLK1wjiMomIYhn/+t5HVwECOlg6SQgGAgM5mvNS6DZds08Vstat9t0oJV8qbXGZqsFgjBLqr4EhKFiLT0oda0h/Ah7p6gvgCAAEbn3B5WGumcb7mN6dvBwUv9NKkzmfF+fEicyQDp2jbd1AWKUdB/VlftnU2I8Px/0paAxFrxJcbRnZ/ATv64YlNKQQUyGESAWrpslgGTfeM/eO9wtiCgnMOfHb1s4N8WU7cnrzmLUEjA8EwyFrJPAKFJ/NYBkj+hE7yy8u2ivLwKBwt9L82I7WbKeDHhoTRQUTdUEEGskiSgCIrveB5Asa8G6Y5B32oCxvpgJfAxScygkawUgMqwCCOobP3qZ9EMASYbb4OAdhlmSEmPhsuAvJQA3EaSpJoCkesp9XbUh/QOGMwYgWSFLjOOjkwmM9wVLDzesGCA8S6ex/dZxEBA5hjEByTot/qwM0kGN7UVAci9wnzeOC+fPMgDJBkmKWVO1qK14tk+uuWUCMrnBbkKHtoBMDKUtIBMFxO7zc4LmRiAn1ue92B1RcF7+BSSEgyeyyyLibX8/SCTSLhFBxG0anwMsUQC0nyy30wFiD9TrG0AyoptRXU+e90+DdoK8rCrZqjn+EDa3RtYmCeA4J/Fj2pRbW88GiC9h7Tpvh9fbwCQ4gmQZIrE73bsR23r8+172yGumQjqNAODJC78n45Ppu/3t38/LRf0ODXp2h6iIx51otoGYB1TGsATSBBYPtVB8gkASZmd+evSz0sCh5KPhVW51Us9FJVZWvgf2lNrfQ8yquASvZlZtet7dmJ7jyiCjiAUneeGELQFkEcNIkWR2eC2ZqG86k2v6j4cZdk/m94r0anQoIDUd3+Yt4MAWkAImrTLLFpBVcrugrS0gBUxaZZYtIKvkdkFbW0AKmLTKLFtAVsntgra2gBQwaZVZhgIiVpOOIaeQc3ioxbXy/bpnOoS9NzyUAHLNaEh8y1P+BAEQ7W2l7d+rnFTrbkvoJONYnvk7+5VfgInzAWzhpo8ExIf3GG3Tmwp9MuBvoRHxKpVl1HceCGJYGVw8FCUkv7RqAzL7uw1cahPgAAlvAXchQBw8+fRmtreZvwgE+3iF34GwtC9S1z31e7SPn7SJ8LsdjQKxbemZlabZv89Rgc+XX7lAAs6L//P+w0sqIDi5YJvKOZDg2KuWe9bmqTjgnAEQGd/TSAjme227E+RVbs3Zh+Vd3Ob02txOT7y3FdcTIKfkGuLT5W8HTfUTs70OIYlxGsX5JVbWXmfGpMa3BWRScGxfUE0MjuUCYpHq7bFOjlMHdohmWcom8mWoLA4l8y4PadlrjmL6DnjX9zTTXefbmIDYicdS0GEeKMfS8Rl7DRAxq/yMLe8dGW370xiAsKH3NZ0ERH7s6DimdZ/ksyzNl1dc5ElBgDHxfDE2aF/aEECopZsH2a+VEiGMwqs/VLabUs8cPMCkKuPLmYy9NEMfQHiZdjra5ZgSkWdh2aQ9aIYsa0ovsV5AOLUBMAkKiRFi8jVBFT9qADEb7hTkFgMpj+4jDd8M6jqscok8mUTV1tDrBImQt0PwPhH3RXKR+i4BRANCKw62zA/iEwxAfCeol3hOgo3jdgJ/gOKU1HYAkYnsOCoB2oXAdAECCPdzQD9BoKZU7GqIklNAxx3yZtRmEh8ZRI3le5E8vI1at87OTYsAeUOUEInMBduTXvxsUOm5ifMaNYssgqPb8CNilZ8O6OMQB9A59kcEUfdticFLFwcclBYB8tTI/cAWIKfH7w83oPQdu06ZNXnqwVTPRdFPL5os0t6QDok4AMNJF8DJRd9HUN+qBYSacmOaRfudQcLzQ5JZx0TOdUi9vXeJD+lIQVkT1fgBI/EvhkiKOqwtrFNOJemYu+52rSHuBtkJ4l8MSWbGjZsB5uHIU5WOHCcJobL13cQZfBVF1JGnYwN4buoCZAgI7bKAtW4Awx1TpSdcj9V+33pIieOoSAp/Qt+XmlYBiMP5bSECBiBKv+zNA/PHVmt5YEypCqJqUn05fmqpoCwbEBso2OTAMJhvBJUukEIzmJZbZcaYmXlurrpKD8VR5iZBaSmxNJn9S0nLBMSJc3k3oTXIJV+lhydTb4KWpKNkQc3dg11gG29uzanZvmQhFrdLK2knfg85LndXMJcFCKeIU0kyEDB2dYbm9M45t0Axi0vWm7zTg4nalTIYaE0ouY0n6/NqgU+RoFC9o598sQxADo+OulcwwbCdqPQKPIO3gApcUldmYZdUyU+aJGqxS0p40RZqUiXG1JW/DTBArtcChQoeNbI9NiD8DJcFm0Vp3nIma5JF1GzEKA5UV1AuL+jSBuZ0xdX0zZZZgACwNvzj5Iu8g8qkMdlqJG0hL8YExOL9lCAMog7MbPcb1h7k79B+zPJeocQio9/tRZZEnEsW6xtGvjQaSm6CazOReqSO85QG65xjcnf1LRYiMPOfYwFCDTw7iCMFDLP0XUG11gjG3jSIdOwElZxumpvEDc2e4xKH0/sLoQzA93mhRoIdlZsnNJh0jl/vks5ObMYAxEwDBt2aYLhJ59TO1g/O4NhZoJp1VEHJbNc+s1Q6N6gkqsBguFWQ9QczHU1Vm/hXpDlBISEi4FUvpGYbHQMQC/BxzeDMkDOCxL5qEylzbpdkLXBJZEmyoJMqiYrrMgKyTp9g5I0FAqcl4M/2h5TsCwKKieAGiRKrcNdxjQGIys3S5wVZgAUkS8zP2U6ZbawY0uGl104JGg1TzXbJGV+laxaJBmSqrbm3FXT0gaS5VJmKdQfwIOnQ1liAJChmea3VkmN2yzSDACAnB5WoHmUxlt8jUT0l6468JMsNQrmhr+8VHOoplcoOfMcFpLOxBRkw9F7NTGNCuvewNO1rAWKW75QWjHxUZKotr6NrnNeKZsqzjikh5a0enJPYs3qIvvcupeuHmoAprCGRkBrVIwotxENtcUJPGzKIMcpOARChjGObwQDkfUE1ao+1015DRAZKE4vOW1FqCygnBa31G5kpAOKyGEFIawcLxd3sNQkYDAKJMVBzxasypDNDKWfF7yH7BWr6PTfvugHh1PFhPAHiImOmY00CJv9Fsg6cWVM48trelNEBZvs7KsuPmn3dgIgLPbYBAyBvCqq91woYRzVc4U8ApSaJLLtIOdWWCeHuxrWkdQNidh4dJJQhDvWaHly4b5TJNQQY7sSqTWJw+mDtEsGtVXu17e2af92AZMdYWBjiyqTaZHbbQCH5ivjE2goiP4eUQ7n27bBTAaQHD/cXeUL8aseyWGkbm/YCIMcE970Uk3xXf8LGohEd/x+rngLvSgdKggAAAABJRU5ErkJggg==) no-repeat 0 0; -} -.loading -{ - width: 100px; - height: 100px; - position: absolute; - - - top:50%; - left:-100px; - /* -*/ - z-index:1201; - - animation-name: rotate; - animation-duration: 0.55s; - animation-duration: 1s; - animation-iteration-count: infinite; - animation-timing-function: linear; - - -webkit-animation-name: rotateWebkit; - -webkit-animation-duration: 0.55s; - -webkit-animation-duration: 1s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - - -moz-animation-name: rotateMoz; - -moz-animation-duration: 0.55s; - -moz-animation-duration: 1s; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - - -ms-animation-name: rotate; - -ms-animation-duration: 0.55s; - -ms-animation-duration: 1s; - -ms-animation-iteration-count: infinite; - -ms-animation-timing-function: linear; -} - - -.blocked -{ - width: 100px; - height: 100px; - position: absolute; - - top:50%; - left:-100px; - - - text-indent: -9000px; - - display: none; - z-index: 1203; - - animation-name: rotate; - animation-duration: 0.55s; - animation-duration: 1s; - animation-iteration-count: infinite; - animation-timing-function: linear; - - -webkit-animation-name: rotateWebkit; - -webkit-animation-duration: 0.55s; - -webkit-animation-duration: 1s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - - -moz-animation-name: rotateMoz; - -moz-animation-duration: 0.55s; - -moz-animation-duration: 1s; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - - -ms-animation-name: rotate; - -ms-animation-duration: 0.55s; - -ms-animation-duration: 1s; - -ms-animation-iteration-count: infinite; - -ms-animation-timing-function: linear; -} - - -.blocker -{ - position: absolute; - width: 100%; - height: 100%; - background:rgba(0,0,0,0); - z-index:2000; -} - -.interstitial -{ - position: absolute; - width: 100%; - height: 100%; - left: 0px; - top: 0px; - background: #000 no-repeat center; - opacity: 0.8; - opacity: 0.4; - z-index: 1200; -} - -.interstitial.ready -{ - background: #000 url(play_100.png) no-repeat center; -} - -.interstitial.black -{ - background-color:#000; - opacity:1.0; -} - -.interstitial.white -{ - background-color:transparent; - opacity:1.0; -} - -.frameInterstitial -{ - position: absolute; - width: 100%; - height: 100%; - left: 0px; - top: 0px; - background: #000 no-repeat center; - opacity: 0.4; - opacity: 0.15; - z-index: 1200; -} - -.presenterInterstitial -{ - position: absolute; - width: 100%; - height: 100%; - left: 0px; - top: 0px; - background: #000 no-repeat center; - opacity: 0.6; - z-index: 1200; -} - -.frameInterstitial.dark -{ - opacity:0.7; -} - -body.initialize .interstitial -{ - opacity:1.0; - z-index:1000; -} - -.pausemessage -{ - position: absolute; - width: 200px; - height: 200px; - left: 50%; - top: 50%; - margin-left: -100px; - margin-top: -100px; - - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - - color: #fff; - text-align: center; - - z-index: 1203; - - opacity: 1; - background: #000 url(play_100.png) no-repeat center; -} - -.interstitial.light -{ - opacity: 0.2; -} - -.modalfence -{ - position: absolute; - left: 0px; - top: 0px; - width: 200%; - height: 200%; - z-index: 999; - background-color: #000; - opacity: 0.4; - opacity: 0.01; -} - - - - -/* debugging */ -#indicator -{ - opacity: 0.1; -} - -#tracebox -{ - top: 0px !important; - width: 300px !important; - height: 400px !important; - margin: 0px 0 0 -300px !important; - opacity: 0.3; - /* - display:none; - */ -} - -.monitor -{ - position: absolute; - top: 0px; - right: 0px; - width: 300px; /*height:400px!important;*/ - opacity: 1; - z-index: 10000; - background-color: transparent; - color: #000!important; - text-shadow: 1px 1px 1px #fff; - text-shadow: 0px 0px 5px #fff; - font-size: 80%; - height:90%; - overflow:auto; -} -.monitor a -{ - color: #00f!important; -} - -.narrowmonitor -{ - position: absolute; - top: 0px !important; - right: 0px !important; - max-width: 100px !important; - max-height: 200px !important; - text-align: right; - overflow: hidden; - z-index: 10; - opacity: 0.8; - padding: 0px 5px; - background-color: #fff; - color: #000; - text-shadow: 1px 1px 1px #fff; - font-size: 60%; -} - -.item.monitoring -{ - border: dashed 1px #f00; -} - - - -.mousecursorfollow -{ - position:absolute; - width:5px; - height:5px; - background-color:Red; - z-index:20000; -} - - -.scrollkeeper -{ - position:absolute; - width:100%; - height:1px; - left:0px; - top:0px; -} - -.contentsizer -{ - position:absolute; - left:-1000px; - top:-1000px; -} - - - - - - -/* controls, toolbar & icons */ - -/* wee devices */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.clear -{ - display: inline-block; - clear: both; -} - -.clear:after -{ - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -* html .clear -{ - height: 1%; -} - -hr -{ - width: 100%; - height: 1px; - display: block; - margin: 0 0 1.45em 0; - border: none; -} - -* html hr -{ - margin: 0 0 1.2em 0; -} - -/* IE6 fix */ - -/* = INITIALIZE **********************************************/ - -body.initialize -{ - background: #000; -} - -body.initialize a, -body.initialize span -{ - width: 145px; - height: 145px; - text-indent: -9000px; - display: block; - /*background: url(icon_playbutton_large.gif) no-repeat;*/ -} - -/* -body.initialize span -{ - background: url(icon_loading.gif) no-repeat; -} -*/ - -/* = RESUME *************************************************/ - - -/* =TOP BAR *************************************************/ - - -/* =BOTTOM BAR *************************************************/ - - -/* =FLYOUT MENU *************************************************/ - -.top_bar .button span -{ - display: block; - position: absolute; - top: 54px; - left: 43%; - width: 20px; - height: 14px; - background: transparent url(ipad_controls_32.png) no-repeat; - background-position: -128px 50%; - z-index: 1001; -} - -.top_bar .button_wrap.right .button span -{ - right: 43%; -} - -.top-arrow -{ - position: absolute; - top: -10px; - /*left: 43%;*/ - left:35px; - width: 20px; - height: 14px; - background: transparent url(ipad_controls_32.png) no-repeat; - background-position: -128px 50%; - z-index: 1001; -} - -.menu -{ - position: absolute; - top: 64px; - left: 0px; - display: block; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.27, #393D42), color-stop(1, #000000)); - text-align: left; - width: 286px; - height: 389px; - border: 1px solid #272b2b; - z-index: 1000; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, 0.68); - -moz-box-shadow: 0 0 12px rgba(0, 0, 0, 0.68); - -ms-box-shadow: 0 0 12px rgba(0, 0, 0, 0.68); - -box-shadow: 0 0 12px rgba(0, 0, 0, 0.68); -} - -.button_wrap.right .menu -{ - left: -170px; -} - -/* -.menu:after { - display: block; - position:absolute; - left: 17px; - top: -20px; - content:" "; - border-color: transparent transparent #393d41 transparent; - border-style:solid; - border-width:11px; -} - -.menu:before { - display: block; - position:absolute; - left: 17px; - top: -22px; - content:" "; - border-color: transparent transparent #272b2b transparent; - border-style:solid; - border-width:11px; -} -*/ - -.highlight -{ - width: 270px; - padding: 7px 8px 8px 8px; - border-top: 1px solid #565c62; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -ul.menu_list -{ - width: 235px; - /*height: 368px;*/ - margin: 0; - padding: 5px 25px 0 10px; - list-style-type: none; - /*overflow: auto;*/ - overflow: visible; -} - -ul.menu_list li -{ - padding: 0 0 0 15px; - margin: 0; -} - -ul.menu_list a -{ - display: block; - position: relative; - z-index:1; - font-size: 13px; - font-weight: bold; - text-decoration: none; - /*background: #fff;*/ - color: #24282d; - padding: 13px 0 14px 0; - border-bottom: 1px solid #e9ebec; -} - -ul.menu_list li a span -{ - display: none; -} - - - -ul.menu_list li.has_children>span -{ - display: block; - position: relative; - z-index:2; - float:left; - left: -15px; - top: 16px; - width: 0; - height: 0; - border-left: 5px solid #7f868e; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-right: none; -} - -ul.menu_list li.has_children.open>span -{ - display: block; - left: -16px; - top: 19px; - border-top: 5px solid #7f868e; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-bottom: none; -} - -ul.menu_list li.has_children>ul -{ - display:none; -} - -ul.menu_list li.has_children.open>ul -{ - display:block; -} - - - -ul.menu_list ul -{ - margin: 0; - padding: 0; - list-style-type: none; -} - -ul.menu_list li.has_children ul li>a>span -{ - /*display: none;*/ -} - - -ul.menu_list li.selected, ul.menu_list li.selected>a -{ - background: #0272ed; - border:none; -} - -ul.menu_list li.selected -{ - margin-left:-100px; - padding-left:115px; - width:270px; -} - -ul.menu_list li>a -{ - width: 210px; - overflow-x: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - - -/* =LANDSCAPE MENU *************************************************/ - -.landscape_menu -{ - clear:none; - float: left; - width: 270px; - height: 548px; - height: 580px; - padding: 8px 7px 8px 8px; - /*background: url(bg_landscape_menu_tile.jpg) repeat-x;*/ - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.27, #393D42), color-stop(1, #000000)); - border-right: 1px solid #29292c; -} - -.logo_background -{ - width: 230px; - background: #fff; - padding: 20px 20px 15px 20px; - margin-bottom: 8px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-align: center; -} - -.logo_background>img -{ -} - -.logo_background .menu_divider -{ - display: block; - position:relative; - left: 0px; - top: 0px; - width:220px; - height:0px; - border-bottom:solid 1px red; - margin:4px 0px 10px 0px; -} - -.logo_background .menu_divider:first-child -{ - display:none; -} - -.logo_background .menu_divider:last-child -{ - display:none; -} - -.landscape_menu.no_logo .logo_background -{ - display: none; -} - -.landscape_menu ul.menu_list -{ - clear: both; - width: 235px; - /*height: 373px;*/ - margin: 0; - padding: 5px 25px 0 10px; - list-style-type: none; - background: transparent; -} - -.landscape_menu.no_nav .menu_container -{ - height: 403px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.landscape_menu.no_logo .menu_container -{ - height: 515px; -} - -.landscape_menu.no_logo.no_nav .menu_container -{ - height: 544px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - - -.presenter_info -{ - position:relative; - height:65px; - text-align:left; - margin-left:10px; -} -.presenter_info .imgwrap -{ - float:left; - margin-right:10px; - line-height:65px; -} -.presenter_info img -{ - vertical-align:middle; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} -.presenter_info span, .presenter_info a -{ - display:block; - font-size:10px; - white-space:nowrap; - text-overflow: ellipsis; - overflow:hidden; -} -.presenter_info a -{ - font-weight:bold; - position:relative; - margin-top:17px; -} -.presenter_info a:hover -{ - text-decoration:underline; -} -.presenter_info .presenter_name -{ - font-weight:bold; -} -.presenter_info .presenter_title -{ -} - -.presenter_info.video -{ - height:inherit; - margin:0px 10px; - text-align:center; -} -.presenter_info.video video -{ - margin-bottom:5px; -} - -.presenter_info.video a -{ - margin-top:inherit; - margin-bottom:5px; -} - -.presenter_detail -{ - position:absolute; - z-index: 1201; - width:340px; - height:225px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - left:50%; - top:50%; - margin-left:-170px; - margin-top:-113px; - -} - -.presenter_detail span, .presenter_detail a -{ - display:block; - font-size:10px; - margin-left:20px; - margin-right:20px; -} -.presenter_detail span:first-child -{ - margin-top:20px; -} -.presenter_detail a -{ - font-weight:bold; - position:relative; - margin-top:17px; -} -.presenter_detail a:hover -{ - text-decoration:underline; -} -.presenter_detail .presenter_name -{ - font-weight:bold; -} -.presenter_detail .presenter_title -{ -} -.presenter_detail .presenter_mail -{ - position:absolute; - bottom:20px; -} -.presenter_detail .presenter_close -{ - position:absolute; - bottom:20px; - right:0px; -} -.presenter_detail .presenter_closebutton -{ - position:absolute; - top:-13px; - right:-13px; - cursor:pointer; - -} - -.presenter_detail .presenter_bio -{ - max-height: 160px; - overflow-y: auto; -} - -/* MENU_NAV */ - - - -.menu_container -{ - position: relative; - height: 373px; - width: 270px; - overflow-x: hidden; - overflow-y: auto; - background: #fff; - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -.highlight>.menu_container -{ - height:373px!important; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -} - - - - - - - - - - - - -/* simplified slidelist */ -.slidelist_container -{ - width:220px; - height:474px; - border:solid 1px #ccc; -} -ul.slidelist -{ - margin:1px 3px 0px 3px; -} -.toptab ul.slidelist -{ - margin:14px 13px 0px 12px; -} -ul.slidelist li -{ - font-size: 11px; - font-weight:bold; - height:16px; - border:solid 1px transparent; - - white-space: nowrap; - text-overflow: ellipsis; - overflow:hidden; - - cursor:pointer; -} -ul.slidelist li.visited -{ -} -ul.slidelist li.selected -{ - background-color:#C0E2F1; - font-weight:bold; -} -ul.slidelist li.divider -{ - /*background-color:Yellow;*/ - border-bottom:solid 1px #f00; - height:0px; - margin:2px 0px 4px 0px; - cursor:default; -} -ul.slidelist li.divider:last-child -{ - display:none; -} -/* -ul.slidelist li.depth1 -{ - padding-left:4px; -} -ul.slidelist li.depth2 -{ - padding-left:32px; -} -ul.slidelist li.depth3 -{ - padding-left:56px; -} -*/ - -ul.slidelist li.correct -{ -} - -ul.slidelist li.correct:before -{ - content: ''; - position: absolute; - width: 16px; - height: 16px; - left:258px; - background-position: -246px 50%; -} -ul.slidelist li.incorrect:before -{ - content: ''; - position: absolute; - width: 16px; - height: 16px; - left:258px; - background-position: -262px 50%; -} - -ul.slidelist li.incorrect -{ -} - - - -ul.slidelist li>span -{ - display: block; - position: relative; - z-index:2; - float:left; - left: 0px; - top: 4px; - margin-right:12px; - width: 0; - height: 0; - border-left: 4px solid #7f868e; - border-top: 4px solid transparent; - border-bottom: 4px solid transparent; - border-right: none; -} - -ul.slidelist li.open>span -{ - display: block; - left: 0px; - top: 5px; - margin-right:8px; - border-top: 4px solid #7f868e; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-bottom: none; -} - -ul.slidelist li.neither>span -{ - display: block; - left: 0px; - top: 5px; - margin-right:8px; - border:4px solid transparent; -} - - - - -.spinning -{ - -webkit-animation-name: rotateSmoothWebkit; - -webkit-animation-duration: 0.6s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} - -.pulsing -{ - -webkit-animation-name: pulseWebkit; - -webkit-animation-duration: 1.5s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} - - - - -/* temporary styles for incompatible item types */ - -.incompatible -{ - width: 145px; - height: 120px; - position: relative; - margin:100px auto; - padding:25px 0px 0px 0px; - border: 0px solid #404040; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - -ms-border-radius: 10px; - border-radius: 10px; - -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - -ms-box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - background-color:Black; - text-align:center; - color:#fff; - z-index:1201; -} -.incompatible h1 -{ - color:#fff; - /*text-shadow: 1px 1px 1px #999;*/ -} - -/* -.item.annotation -{ - background:rgba(0,0,255,0.5); -} -*/ - -@media only screen and (orientation:landscape) -{ - .incompatible - { - margin:30px auto; - } -} - -@media only screen and (max-device-width: 1024px) and (orientation:portrait) -{ - .interstitial - { - width:768px; - height:946px; - } - - -} - -@media only screen and (max-device-width: 1024px) and (orientation:landscape) -{ - .interstitial - { - width:1024px; - height:690px; - } -} - - - -@media only screen and (max-device-width: 480px) and (orientation:portrait) -{ - .interstitial - { - width:480px; - height:668px; - } -} - - -@media only screen and (max-device-width: 480px) and (orientation:landscape) -{ - .interstitial - { - width:480px; - height:268px; - } -} - - - - - - - -/* ios launch screen */ -div.launch{display:none;position:absolute;left:0px;top:0px;z-index:50000;width:100%;height:110%;background:#737d85} -div.launch a img{border:0; width 290} -div.launch{font-family:Helvetica,Arial,Verdana,sans-serif;line-height:1.5;color:#434750;position:relative;font-size:75%} -div.launch h1{font-size:3em;line-height:1;margin-bottom:.5em;font-weight:400;color:#434750} -div.launch a,a:focus,a:hover{color:#434750;text-decoration:none;outline:0;cursor: pointer} -div.launch .button{float:left;font-size:14px;font-weight:700;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.75);padding:5px 22px 0;height:25px;border:1px solid #010101;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.12),inset 0 1px 0 rgba(255,255,255,.25);-webkit-border-radius:5px;background:-webkit-gradient(linear,left top,left bottom,from(#5d636b),to(#25272a),color-stop(.5,#494e54),color-stop(.51,#35393d))} -div.container{background:#fff;height:490px;margin:45px;padding:30px;-webkit-border-radius:5px;-webkit-box-shadow:0 0 20px rgba(0,0,0,.75)} -div.screenshot{float:right;width:390px;padding-left:20px;padding-bottom:10px} -div.screenshot img{-webkit-box-shadow:0 8px 6px -2px rgba(0,0,0,.2); width: 360px;} -div.container div.launch_meta{float:left;width:450px} -div.container h1{color:#3c4046;font-weight:700;font-size:25px;line-height:1.2em;font-family:'Helvetica Neue',Helvetica,Arial} -div.container p{font-size:16px;line-height:1.4em;font-family:'Helvetica Neue',Helvetica,Arial;margin:0 0 1.4em} -div.container a.button{font-size:20px;color:#fff;background:#0272ed;text-shadow:0 1px 0 rgba(11,62,180,1);padding:5px 22px 12px;border:1px solid #0b3eb4;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.12),inset 0 1px 0 rgba(255,255,255,.25);-webkit-border-radius:5px;background:-webkit-gradient(linear,left top,left bottom,from(#039ef4),to(#0b3eb4))} -div.container a.button:active{background:-webkit-gradient(linear,left bottom,left bottom,from(#039ef4),to(#0b3eb4));opacity:1.0;} -div.container a.button.disabled{opacity:0.5;-webkit-opacity:0.5;} -div.container a.button.disabled:active{opacity:1.0;} -div.mobile_app{background:url(mobile_icon.png) no-repeat;padding-left:148px;padding-top:20px} -div.mobile_app h1{margin:0;line-height:1.4em} -div.mobile_app a{color:#027fef;text-decoration:underline} -div.container a.app_store{width:172px;height:54px;text-indent:-9000px;display:block;background:url(app_store.png)} - - -@media only screen and (max-device-width:1024px) and (orientation:portrait){ - div.container{height:750px} - div.screenshot{width:290px} - div.screenshot img{width:290px} - div.container div.launch_meta{float:left;width:300px} - div.mobile_app h1{font-size:24px} -} - -@media only screen and (max-device-width: 480px) -{ -} -@media only screen and (max-device-width: 480px) and (orientation:portrait) -{ - div.launch{zoom:0.75;height:960px;width:640px;} - - div.container{height:640px;} - div.screenshot{width:305px;} - div.launch_meta>div.screenshot{float:none;padding-left:0px;} - div.screenshot img{width:305px} - div.container div.launch_meta{float:left;width:100%} - div.mobile_app h1{font-size:24px} - -} - - -@media only screen and (max-device-width: 480px) and (orientation:landscape) -{ - div.launch{zoom:0.5;height:640px;} - div.container{height:380px;margin:20px;} - div.screenshot{width:290px} - div.screenshot img{width:290px} - div.container div.launch_meta{float:left;width:470px} - div.mobile_app h1{font-size:24px} - -} - -/* - ::-webkit-scrollbar-thumb {border-radius: 4px;background-color: rgba(0,0,0,.5);-webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);} - ::-webkit-scrollbar {-webkit-appearance: none;width: 7px;} -*/ - - - - - - -.item.unsupported -{ - border: 0px solid #404040; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - box-shadow: 0 0 6px rgba(0, 0, 0, 0.18); - background-color:Black; - text-align:center; - color:#fff; - opacity:0.8!important; - -webkit-opacity:0.8; - -moz-opacity:0.8; -} -.item.unsupported h1 -{ - margin-top:25px; - color:#fff; -} - -.swf.unsupported, .item.unsupported -{ - display:none!important; -} - -.item.captureanimation -{ - visibility:hidden; -} - -.datafailed -{ - position:absolute; - z-index:1000; - bottom:0px; - background-color:Red; - height:5px; - width:100%; -} -.framefailed -{ - position:absolute; - z-index:1000; - bottom:5px; - background-color:orange; - height:5px; - width:100%; -} - -.topnavselector -{ - color:Black; - background-color:white; - position:absolute; - left:0px; - top:0px; - z-index:20000; -} -.diagnosticbutton -{ - background:white; - color:black; - border:solid 1px black; - padding:5px; - display:inline; - float:left; -} - -.vectorinspectorpanel -{ - position:absolute; - z-index:10000; - left:50px; - top:50px; - width:1200px; - height:600px; - background-color:#eee; - border:solid 3px #555; -} -.vectorinspectorpanel ul -{ - float:left; - clear:none; - width:400px; - height:600px; - overflow:auto; -} -.vectorinspectorpanel canvas -{ - background:#fff; -} - - -@keyframes rotate { -0% {transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.555% {transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.556% {transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.111% {transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.112% {transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.666% {transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.667% {transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.222% {transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.223% {transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.777% {transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.778% {transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.333% {transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.334% {transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.888% {transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.889% {transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.444% {transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.445% {transform:translate3d(0px, 0px, 0px) rotate(160deg);} -49.999% {transform:translate3d(0px, 0px, 0px) rotate(160deg);} -50% {transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.555% {transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.556% {transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.111% {transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.112% {transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.666% {transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.667% {transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.222% {transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.223% {transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.777% {transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.778% {transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.333% {transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.334% {transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.888% {transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.889% {transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.444% {transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.445% {transform:translate3d(0px, 0px, 0px) rotate(340deg);} -99.999% {transform:translate3d(0px, 0px, 0px) rotate(340deg);} -100% {transform:translate3d(0px, 0px, 0px) rotate(360deg);} -} - -@-webkit-keyframes rotateWebkit { -0% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.555% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.556% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.111% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.112% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.666% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.667% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.222% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.223% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.777% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.778% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.333% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.334% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.888% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.889% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.444% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.445% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(160deg);} -49.999% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(160deg);} -50% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.555% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.556% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.111% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.112% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.666% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.667% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.222% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.223% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.777% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.778% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.333% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.334% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.888% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.889% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.444% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.445% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(340deg);} -99.999% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(340deg);} -100% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(360deg);} -} - - -@-moz-keyframes rotateMoz { -0% {-moz-transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.555% {-moz-transform:translate3d(0px, 0px, 0px) rotate(0deg);} -5.556% {-moz-transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.111% {-moz-transform:translate3d(0px, 0px, 0px) rotate(20deg);} -11.112% {-moz-transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.666% {-moz-transform:translate3d(0px, 0px, 0px) rotate(40deg);} -16.667% {-moz-transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.222% {-moz-transform:translate3d(0px, 0px, 0px) rotate(60deg);} -22.223% {-moz-transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.777% {-moz-transform:translate3d(0px, 0px, 0px) rotate(80deg);} -27.778% {-moz-transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.333% {-moz-transform:translate3d(0px, 0px, 0px) rotate(100deg);} -33.334% {-moz-transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.888% {-moz-transform:translate3d(0px, 0px, 0px) rotate(120deg);} -38.889% {-moz-transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.444% {-moz-transform:translate3d(0px, 0px, 0px) rotate(140deg);} -44.445% {-moz-transform:translate3d(0px, 0px, 0px) rotate(160deg);} -49.999% {-moz-transform:translate3d(0px, 0px, 0px) rotate(160deg);} -50% {-moz-transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.555% {-moz-transform:translate3d(0px, 0px, 0px) rotate(180deg);} -55.556% {-moz-transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.111% {-moz-transform:translate3d(0px, 0px, 0px) rotate(200deg);} -61.112% {-moz-transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.666% {-moz-transform:translate3d(0px, 0px, 0px) rotate(220deg);} -66.667% {-moz-transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.222% {-moz-transform:translate3d(0px, 0px, 0px) rotate(240deg);} -72.223% {-moz-transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.777% {-moz-transform:translate3d(0px, 0px, 0px) rotate(260deg);} -77.778% {-moz-transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.333% {-moz-transform:translate3d(0px, 0px, 0px) rotate(280deg);} -83.334% {-moz-transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.888% {-moz-transform:translate3d(0px, 0px, 0px) rotate(300deg);} -88.889% {-moz-transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.444% {-moz-transform:translate3d(0px, 0px, 0px) rotate(320deg);} -94.445% {-moz-transform:translate3d(0px, 0px, 0px) rotate(340deg);} -99.999% {-moz-transform:translate3d(0px, 0px, 0px) rotate(340deg);} -100% {-moz-transform:translate3d(0px, 0px, 0px) rotate(360deg);} -} - -@-webkit-keyframes rotateSmoothWebkit -{ - 0% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(0deg);} - 100% {-webkit-transform:translate3d(0px, 0px, 0px) rotate(360deg);} -} - -@-webkit-keyframes pulseWebkit -{ - 0% {-webkit-transform:translate3d(0px, 0px, 0px) scale(0.5);} - 50% {-webkit-transform:translate3d(0px, 0px, 0px) scale(1.0);} - 100% {-webkit-transform:translate3d(0px, 0px, 0px) scale(0.5);} -} - -/* -.item_ProcessButtons -{ - border:solid 1px red; -} -.item.shapemask -{ - border:solid 1px green; -} -.item.image.vectorshape -{ - border:solid 1px blue; -} - */body -{ - background:#fff; - overflow:auto; -} - -.framewrap -{ - background:#ccc; - background: #fff; - position:absolute; - border-radius:10px; - border:solid 1px #000; -} - -#slideframe -{ - /*background-color:#fff;*/ - background-color:transparent; -} - -.window > h1 -{ - font-size:20px; -} -.window.MessageWnd -{ - -webkit-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - -ms-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1); -} - -.item -{ - color:#333; -} -.item.button -{ - border:solid 1px transparent; - -webkit-border-radius:5px; - -moz-border-radius:5px; - border-radius:5px; - font-weight:bold; -} -.item.textinput textarea, .item.textinput input -{ - background:transparent; - /*border:none;*/ - position:relative; - outline:none; - resize: none; - /* - border: solid 1px #EEECE1; - background: -webkit-gradient(linear, left top, left bottom, from(#EEECE1), to(#FEFEFD)); - */ - border:none; - background:transparent; - padding:0px; - padding-left:5px; -} -.item.textinput.defaultbackground textarea, .item.textinput.defaultbackground input -{ - background:#fff; - border: solid 1px #A0A0A0; - background: -webkit-linear-gradient(top, #F4F4F4 0%, #fff 90%); - background: -moz-linear-gradient(top, #F4F4F4 0%, #fff 90%); - background: -ms-linear-gradient(top, #F4F4F4 0%, #fff 90%); -} - -.landscape_menu -{ - position:absolute; - background: transparent; - border:none; - width: 220px; - padding: 10px; - border-width:0px; - z-index:10; - display:none; -} -.menu_container -{ - -webkit-border-radius: 0 0 8px 8px; - -moz-border-radius: 0 0 8px 8px; - border-radius: 0 0 8px 8px; -} -.landscape_menu.no_logo.no_nav .menu_container -{ - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; -} -.landscape_menu.no_nav .menu_container -{ - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; -} -.landscape_menu.left -{ - border-top-left-radius:10px; - border-bottom-left-radius:10px; - padding: 9px 10px 9px 9px; -} - -.landscape_menu.right -{ - border-top-right-radius:10px; - border-bottom-right-radius:10px; - padding: 9px 9px 9px 10px; -} - - -.menu_container -{ - width:220px; -} -ul.menu_nav -{ - width:200px; -} - - - - -ul.menu_nav -{ - float: left; - display: block; - list-style-type: none; - width: 270px; -} - -.landscape_menu.no_nav ul.menu_nav -{ - display: none; -} - -ul.menu_nav li -{ - display: inline; - float: left; -} - -ul.menu_nav li span -{ - display:block; - float:left; - padding: 0px 7px; - height: 25px; - -webkit-border-radius: 0 0 0 0; - -moz-border-radius: 0 0 0 0; - border-radius: 0 0 0 0; - font-size:12px; - font-weight:bold; - line-height:25px; - text-align: center; - cursor:pointer; - -} - - -ul.menu_nav li span.active -{ - background:#fff; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} - - - - - - - -.landscape_menu ul.menu_list, ul.menu_list -{ - width:200px; - padding: 0px 25px 0 8px; -} - -/* introduces giant space -ul.menu_list li > a -{ - width:180px; - padding:1px 0px; - border:none; -} -*/ -ul.menu_list li > a -{ - width:180px; - padding:1px 0px 0px 0px; - border:none; - font-size: 11px; -} -ul.menu_list li.visited > a -{ - /*color:#aaa;*/ -} - -/* fixes space but kills ellipsis -ul.menu_list li > a -{ - width: 200px; - padding: 5px 0px 0px 1px; - border: none; - margin-top: -1px; -} -*/ - -ul.menu_list li -{ - border-top: solid 1px transparent; - border-bottom: solid 1px transparent; - padding: 0 0 0 15px; -} -ul.menu_list li.selected -{ - /* - border-top: solid 1px #fff; - border-bottom: solid 1px #fff; - */ - border-top: solid 1px transparent; - border-bottom: solid 1px transparent; -} - - -li.has_children.open li>a:hover -{ - - margin-left: -100px; - padding-left: 100px; - width:182px; - -} - - -#menu_container>ul, #menu_container>div -{ - display:none; -} -#menu_container>ul.active, #menu_container>div.active -{ - display:block; -} - - -#topbar li.has_children.open li>a:hover -{ - width:282px; -} -ul.menu_list li.has_children > span -{ - top:9px; -} -ul.menu_list li.has_children.open > span -{ - top:12px; -} -ul.menu_list li.has_children > a -{ - - margin-top:5px; - margin-left:-5px; - -} -ul.menu_list li.has_children.open > a -{ - margin-top:0px; - margin-left:0px; -} - -/* only for 2nd level and below */ -ul.menu_list li.has_children li.has_children > a -{ - margin-top:-1px; - margin-left:0px; - padding-top:5px; -} -ul.menu_list li.has_children.open li.has_children.open > a -{ - - padding-top:0px; - margin-top:0px; - margin-left:0px; -} -ul.menu_list li.has_children li.has_children > a:hover -{ - margin-left: -100px; -} -ul.menu_list li.has_children.open li.has_children.open > a:hover -{ - margin-left: -100px; - -} -.logo_background -{ - width: 220px; - background: #fff; - padding: 10px 0px 4px 0px; - margin-bottom: 10px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - text-align: center; -} - - -ul.menu_list>li -{ - border-top:solid 1px #ccc; - margin-top:5px; -} -ul.menu_list>li:first-child -{ - border-top:solid 1px transparent; - margin-top:0px; -} - -ul.menu_nav -{ -} -.logo_background -{ - display: none; -} - -.timer -{ - position: absolute; - z-index: 1200; - right: 4px; - top: 4px; -} - -.timercaption -{ - position: absolute; - z-index: 1200; - right: 30px; - top: 8px; - font-weight: bold; - font-size: 10px; - -} - -/* controls, toolbar & icons */ - -#topbar -{ - font-size:13px; - height:51px; - position:absolute; - width: 100%; - z-index: 1003; - top: 0; -} -#topbar.singleline -{ - height:27px; - position:absolute; - background-color:Yellow; - width: 100%; - z-index: 1003; - top: 0; -} -#topbar.empty -{ - display:none; -} -#topbar > #storytitle -{ - font-weight:bold; - margin:10px 0px 0px 8px; -} -#topbar > #storytitle.alone -{ - margin:17px 0px 0px 6px; -} -#topbar > #toplinks_left -{ - background-color:aqua; - font-weight:bold; - margin:2px 0px 0px 0px; -} -#topbar > #toplinks_right -{ - font-weight:bold; - margin:1px 0px 0px 6px; -} -.presentation_timer -{ - font-size:80%; - margin-left:10px; - -} - -.toptab -{ - clear:none; - float:left; - position:relative; - max-width:20%; - overflow-x: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.toptab.tab -{ - max-width:initial; - overflow-x: initial; - white-space: initial; -} -.toptab.tab>span -{ - float:right; -} -.toptab.alone -{ - margin-top:-10px; -} -.toptab.notitle -{ - margin-top:6px; -} -#toplinks_right .toptab -{ - float:right; -} -.toptab>span -{ - /*float:right;*/ - font-size:9px; - padding:3px 8px 2px 8px; - line-height:16px; - cursor:pointer; - -} -.toptab.active>span -{ - background:#fff; - color:#555; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; - border:solid 1px #ccc; - border-bottom:none; - position:relative; - z-index:2; - margin-top:-1px; - margin-left:-1px; - - -} -#toplinks_right .toptab.active>span -{ - margin-right:-1px; -} - -.toptab.active -{ -} -.toptab_blocker -{ - display:none; - position:absolute; - bottom:-13px; - right:0px; - background-color:#fff; - border-right:solid 1px #ccc; - width:200%; - height:13px; - z-index:3; -} -.toptab .menu_container -{ - position:absolute; - margin-top:20px; - margin-left:-1px; - width:299px; - height:445px; - height:345px; - display:none; - border:solid 1px #ccc; - z-index:1; - -webkit-border-radius: 0px 0px 5px 5px; - -webkit-box-shadow: 0px 0px 20px #B8B8B8; - -webkit-box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.9); - -moz-border-radius: 0px 0px 5px 5px; - -moz-box-shadow: 0px 0px 20px #B8B8B8; - -moz-box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.9); - -ms-border-radius: 0px 0px 5px 5px; - -ms-box-shadow: 0px 0px 20px #B8B8B8; - -ms-box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.9); - border-radius: 0px 0px 5px 5px; - box-shadow: 0px 0px 20px #B8B8B8; - box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.9); -} -.toptab.active .menu_container -{ - display:block; -} - -#toplinks_left .toptab .menu_container -{ - -webkit-border-radius: 0px 5px 5px 5px; - -moz-border-radius: 0px 5px 5px 5px; - border-radius: 0px 5px 5px 5px; -} -#toplinks_right .toptab .menu_container -{ - right:0%; - -webkit-border-radius: 5px 0px 5px 5px; - -moz-border-radius: 5px 0px 5px 5px; - border-radius: 5px 0px 5px 5px; - margin-right:-1px; -} - - -.resources_container -{ - margin:10px; - font-size:12px; -} -.resources_container hr -{ - display: block; - margin:10px 0px; -/* - border-style: inset; - border-width: 1px; -*/ - border-bottom:solid 1px #ccc; -} -.resources_container a -{ - display:block; - text-decoration:none; - margin-bottom:5px; -} -.resources_container a .resources_icon -{ - margin-bottom:-2px; - margin-right:5px; -} - - -.glossary_container -{ - height:100%; -} -.glossary_section -{ - height:50%; - overflow-y:auto; - -webkit-overflow-scrolling:touch; -} -.glossary_section:first-child -{ - margin-bottom:-1px; -} -.glossary_section ul -{ - /*margin:8px 8px 0px 8px;*/ -} -.glossary_section li a -{ - text-decoration:none; -} -.glossary_section li -{ - padding:3px 8px; -} -/* -.glossary_section li:hover -{ - background-color:#ddd; -} -*/ -.glossary_section li.active -{ - background-color:#eee; -} - - -.glossary_section_header -{ - height:32px; - line-height:32px; - font-size:16px; - font-weight:bold; - padding:0px 8px; - border-top:solid 1px #ccc; - border-bottom:solid 1px #ccc; -} -.glossary_section:first-child -{ - border-bottom:solid 1px #ccc; -} -.glossary_section:first-child .glossary_section_header -{ - border-top:none 0px #ccc; -} -.definitiontext -{ - line-height:110%; - padding:8px 8px; - display:none; -} - - -.transcript_title -{ - font-size:14px; - line-height:14px; - font-weight:bold; - padding:8px 8px 0px 8px; -} -.transcript_container hr -{ - display: block; - margin:0px 0px 8px 0px; - border-bottom:solid 1px #ccc; -} -.transcript_content -{ - line-height:110%; - padding:8px 8px; - display:none; - -} - -#controls -{ - position: absolute; - width: 100%; - z-index: 1003; - /* - bottom:0px; - */ - display: none; - - top: 100%; - margin-top: -41px; - margin-top: -45px; -} - -.toolbar -{ - position: relative; - height: 30px; - line-height: 23px; - padding: 0px 0px 0px 50px; -} - -.toolbar-separator -{ - float: left; - clear: none; - width: 20px; - height: 30px; -} - -.toolbar-button -{ - float: left; - clear: none; - margin: 4px 2px; - padding: 2px; - border: solid 1px transparent; - border-radius: 2px; - -moz-border-radius: 2px; -} - -.toolbar-button.right -{ - float: right; -} - -.toolbar-button.disabled, .toolbar-button.disabled:hover -{ - background-color: transparent; - border: solid 1px transparent; - - opacity: 0.2; - -moz-opacity: 0.2; - filter: alpha(opacity = 20); - cursor:default; -} - -.controlbar-button.disabled, .controlbar-button.right.disabled -{ - background: transparent!important; - opacity: 0.3; - -moz-opacity: 0.3; - filter: alpha(opacity = 30); - cursor:default; -} -.controlbar-button.disabled:hover, .controlbar-button.right.disabled:hover -{ - background:transparent!important; - cursor:default; -} - -a.toolbar-button -{ - display: block; - line-height: 16px; -} - -.toolbar select -{ - margin: 5px 2px; - border-radius: 2px; - -moz-border-radius: 2px; - height: 22px; - -} - -.progress-container -{ - position: relative; - height: 17px; - width: 364px; - width: 372px; - border: solid 1px #B8B8B8; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - background-color: #E7E7E7; - background-color: #777; -} - -.progress-bar -{ - position: relative; - height: 17px; - - width: 0px; - border-right: solid 1px #B8B8B8; - -webkit-border-top-left-radius: 4px; - -moz-border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-bottom-left-radius: 4px; - background-color: #fff; -} - -.progress-bar.full -{ - -webkit-border-top-right-radius: 4px; - -moz-border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-bottom-right-radius: 4px; -} - -.progress-container.loading -{ - - position: absolute; - top: 260px; - left: 50%; - margin-left: -182px; - z-index: 5000; - -} -.controlbar-button > .progress-container -{ - clear: none; - float: left; - height: 16px; - margin: 0px 15px 0px 10px; - margin: 0px 9px 0px 8px; -} - -.controlbar-button .progress-bar -{ - height: 16px; -} - -.controlbar -{ - position: relative; - height: 31px; - line-height: 23px; - padding: 0px 0px 0px 0px; -} - -.controlbar-button -{ - float: left; - clear: none; - margin: 0px 10px 0px 0px; - padding: 6px 9px 5px 10px; - border: solid 1px #B1B1B1; - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - background: -webkit-gradient(linear, left top, left bottom, from(#F5F5F5), to(#C8C8C8)); /* F5F5F5 C8C8C8 */ - cursor:pointer; -} - -.controlbar-button -{ - margin: 0px 7px 0px 0px; - -} -.controlbar-button .label -{ - display:inline-block; - - font-family:Arial Black, Arial, Helvetica, sans-serif; - font-weight:bold; - font-size:11px; - -webkit-transform-origin:top left; - -webkit-transform:scale(0.82,1); - -moz-transform-origin:top left; - -moz-transform:scale(1.0,1); - -ms-transform-origin:top left; - -ms-transform:scale(0.9,1); - - margin-top:3px; - line-height:12px; -} - -.controlbar-button .label.finish -{ - position:relative; - left:5px; -} -.controlbar-button .label.submit -{ - position:relative; - left:5px; -} -.controlbar-button .label.submitall -{ - position:relative; - left:5px; -} -.controlbar-button#control-submitall -{ - padding-left:3px; - padding-right:4px; - -} - -@media only screen and (max-device-width: 1024px) -{ - .controlbar-button .label - { - margin-top:2px; - font-family:Verdana, Geneva, sans-serif; - font-weight:bold; - font-size:14px; - -webkit-transform-origin:top left; - -webkit-transform:scale(0.88,1); - -moz-transform-origin:top left; - -moz-transform:scale(0.88,1); - -ms-transform-origin:top left; - -ms-transform:scale(0.88,1); - } - .controlbar-button .label.submitall - { - -webkit-transform:scale(0.80,1); - } -} - -.controlbar-button.right -{ - float: right; - margin: 0px 0px 0px 7px; - min-width: 50px; -} - -.controlbar-button.center -{ - position: absolute; - left: 50%; - margin-left: -23px; -} - -.controlbar-button .icon -{ - display: block; - clear: none; - float: left; - width: 16px; - height: 18px; - background: transparent no-repeat; - /*background: transparent url(controls.png) no-repeat;*/ - background-position: 0px 50%; - border: none !important; -} - -.controlbar-button .icon.none -{ - background: transparent; -} - -.controlbar-button .icon.previous-slide -{ - background-position: 0px 50%; - /*width: 50px;*/ - - -} - -#control-previous -{ - padding: 6px 11px 5px 8px; -} - -.controlbar-button .icon.next-slide -{ - background-position: -50px 50%; - /*width: 50px;*/ - background-position: -90px 50%; - width:10px; - float:right; - margin-left:5px; -} - -.controlbar-button .icon.submit-slide -{ - background-position: -100px 50%; - width: 0px; -} -.controlbar-button .icon.finish-slide -{ - background-position: -100px 50%; - width: 0px; -} - - -.controlbar-button .icon.play -{ - background-position: -150px 50%; -} - -.controlbar-button .icon.pause -{ - background-position: -166px 50%; -} - -.controlbar-button .icon.restart -{ - background-position: -182px 50%; - margin-top:1px; -} - -.controlbar-button .icon.volume -{ - background-position: -198px 50%; -} - -.controlbar-button .icon.config -{ - background-position: -428px 50%; -} - - - -.controlbar-button .icon.disabled -{ - /* - -moz-opacity: 0.3; - -webkit-opacity: 0.3; - opacity: 0.3; - */ - cursor:default; - -} - -.controlbar-button .icon.volume.full -{ - width:16px; -} -.controlbar-button .icon.volume.half -{ - width:14px; -} -.controlbar-button .icon.volume.low -{ - width:12px; -} -.controlbar-button .icon.volume.off -{ - width:10px; -} - - -#control-pauseplay -{ -} -#control-pauseplay>.icon -{ - -} - - -#control-progress -{ - margin:0px; -} - -.controlbar-button.compact -{ - padding: 6px 8px 5px 7px; - min-width:16px; -} -.controlbar-button.compact.volume-open -{ - margin-top:-69px; - padding: 9px 8px 5px 7px; -} -.volume-touchpad -{ - display:block; -}.volume-slider -{ - display:none; - border:solid 1px #f00; - background-color:#ccc; -} -.volume-open .volume-touchpad -{ - display:block; - position:relative; - height:57px; - width:16px; - width:16px; - margin:2px 0px 7px 0px; -} -.volume-open .volume-slider -{ - display:block; - position:relative; - height:57px; - width:5px; - margin:0px 4px 0px 5px; -} -.volume-handle -{ - position:absolute; - top:20%; - left:-6px; - margin-top:-4px; - - width:15px; - height:5px; - border:solid 1px #aaa; - background-color:#ccc; - -webkit-box-shadow: inset #ddd 0px 0px 1px 1px; - -moz-box-shadow: inset #ddd 0px 0px 1px 1px; - -ms-box-shadow: inset #ddd 0px 0px 1px 1px; - box-shadow: inset #ddd 0px 0px 1px 1px; -} - - - \ No newline at end of file diff --git a/examples/AQuizmaker SCORM12/mobile/player_compiled.js b/examples/AQuizmaker SCORM12/mobile/player_compiled.js deleted file mode 100755 index 2ca8d92..0000000 --- a/examples/AQuizmaker SCORM12/mobile/player_compiled.js +++ /dev/null @@ -1,1667 +0,0 @@ -var buildDate="20130927 14:23 tgp";(function(a,b){function c(a){var b=na[a]={},c,d,a=a.split(/\s+/);for(c=0,d=a.length;cd||null==d)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;f").appendTo(b),d=c.css("display");c.remove();if("none"===d||""===d){if(!F)F=q.createElement("iframe"),F.frameBorder=F.width=F.height=0;b.appendChild(F);if(!O||!F.createElement)O=(F.contentWindow||F.contentDocument).document,O.write(("CSS1Compat"===q.compatMode?"":"")+""), -O.close();c=O.createElement(a);O.body.appendChild(c);d=i.css(c,"display");b.removeChild(F)}ea[a]=d}return ea[a]}function fa(a){return i.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var q=a.document,$a=a.navigator,ab=a.location,i=function(){function c(){if(!d.isReady){try{q.documentElement.doScroll("left")}catch(a){setTimeout(c,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,i=/\S/,j=/^\s+/,k=/\s+$/, -m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,l=/^[\],:{}\s]*$/,n=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,o=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,s=/(msie) ([\w.]+)/,bb=/(mozilla)(?:.*? rv:([\w.]+))?/,C=/-([a-z]|[0-9])/ig,B=/^-ms-/,u=function(a,b){return(b+"").toUpperCase()},A=$a.userAgent,Z,U,cb=Object.prototype.toString,ga=Object.prototype.hasOwnProperty,ha=Array.prototype.push,X=Array.prototype.slice, -sa=String.prototype.trim,ta=Array.prototype.indexOf,ua={};d.fn=d.prototype={constructor:d,init:function(a,c,e){var f;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if("body"===a&&!c&&q.body)return this.context=q,this[0]=q.body,this.selector=a,this.length=1,this;if("string"===typeof a){if((f="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:h.exec(a))&&(f[1]||!c)){if(f[1])return e=(c=c instanceof d?c[0]:c)?c.ownerDocument||c:q,(a=m.exec(a))? -d.isPlainObject(c)?(a=[q.createElement(a[1])],d.fn.attr.call(a,c,!0)):a=[e.createElement(a[1])]:(a=d.buildFragment([f[1]],[e]),a=(a.cacheable?d.clone(a.fragment):a.fragment).childNodes),d.merge(this,a);if((c=q.getElementById(f[2]))&&c.parentNode){if(c.id!==f[2])return e.find(a);this.length=1;this[0]=c}this.context=q;this.selector=a;return this}return!c||c.jquery?(c||e).find(a):this.constructor(c).find(a)}if(d.isFunction(a))return e.ready(a);if(a.selector!==b)this.selector=a.selector,this.context= -a.context;return d.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return X.call(this,0)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?ha.apply(e,a):d.merge(e,a);e.prevObject=this;e.context=this.context;if("find"===b)e.selector=this.selector+(this.selector?" ":"")+c;else if(b)e.selector=this.selector+"."+b+"("+c+")";return e},each:function(a, -b){return d.each(this,a,b)},ready:function(a){d.bindReady();Z.add(a);return this},eq:function(a){a=+a;return-1===a?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(X.apply(this,arguments),"slice",X.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:ha,sort:[].sort,splice:[].splice}; -d.fn.init.prototype=d.fn;d.extend=d.fn.extend=function(){var a,c,e,f,w,g=arguments[0]||{},h=1,i=arguments.length,j=!1;"boolean"===typeof g&&(j=g,g=arguments[1]||{},h=2);"object"!==typeof g&&!d.isFunction(g)&&(g={});i===h&&(g=this,--h);for(;hc?Math.max(0,d+c):c:0;ca.indexOf("compatible")&& -bb.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this);a.superclass=this;a.fn=a.prototype=this();a.fn.constructor=a;a.sub=this.sub;a.fn.init=function(c,e){e&&e instanceof d&&!(e instanceof a)&&(e=a(e));return d.fn.init.call(this,c,e,b)};a.fn.init.prototype=a.fn;var b=a(q);return a},browser:{}});d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){ua["[object "+b+"]"]=b.toLowerCase()}); -A=d.uaMatch(A);if(A.browser)d.browser[A.browser]=!0,d.browser.version=A.version;if(d.browser.webkit)d.browser.safari=!0;i.test("\u00a0")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/);g=d(q);q.addEventListener?U=function(){q.removeEventListener("DOMContentLoaded",U,!1);d.ready()}:q.attachEvent&&(U=function(){"complete"===q.readyState&&(q.detachEvent("onreadystatechange",U),d.ready())});return d}(),na={};i.Callbacks=function(a){var a=a?na[a]||c(a):{},d=[],e=[],f,g,h,j,k,m=function(b){var c,e,f,g;for(c=0,e=b.length;c< -e;c++)f=b[c],g=i.type(f),"array"===g?m(f):"function"===g&&(!a.unique||!n.has(f))&&d.push(f)},l=function(b,c){c=c||[];f=!a.memory||[b,c];g=!0;k=h||0;h=0;for(j=d.length;d&&k=f&&a&&i.isFunction(a.promise)?a:i.Deferred(),k=j.promise();if(1
a";c=k.getElementsByTagName("*");d=k.getElementsByTagName("a")[0];if(!c||!c.length||!d)return{};e=q.createElement("select");f=e.appendChild(q.createElement("option"));c=k.getElementsByTagName("input")[0];b={leadingWhitespace:3=== -k.firstChild.nodeType,tbody:!k.getElementsByTagName("tbody").length,htmlSerialize:!!k.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),opacity:/^0.55/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:"on"===c.value,optSelected:f.selected,getSetAttribute:"t"!==k.className,enctype:!!q.createElement("form").enctype,html5Clone:"<:nav>"!==q.createElement("nav").cloneNode(!0).outerHTML,submitBubbles:!0,changeBubbles:!0, -focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0};c.checked=!0;b.noCloneChecked=c.cloneNode(!0).checked;e.disabled=!0;b.optDisabled=!f.disabled;try{delete k.test}catch(m){b.deleteExpando=!1}!k.addEventListener&&k.attachEvent&&k.fireEvent&&(k.attachEvent("onclick",function(){b.noCloneEvent=!1}),k.cloneNode(!0).fireEvent("onclick"));c=q.createElement("input");c.value="t";c.setAttribute("type","radio");b.radioValue="t"===c.value; -c.setAttribute("checked","checked");k.appendChild(c);d=q.createDocumentFragment();d.appendChild(k.lastChild);b.checkClone=d.cloneNode(!0).cloneNode(!0).lastChild.checked;b.appendChecked=c.checked;d.removeChild(c);d.appendChild(k);k.innerHTML="";if(a.getComputedStyle)c=q.createElement("div"),c.style.width="0",c.style.marginRight="0",k.style.width="2px",k.appendChild(c),b.reliableMarginRight=0===(parseInt((a.getComputedStyle(c,null)||{marginRight:0}).marginRight,10)||0);if(k.attachEvent)for(h in{submit:1, -change:1,focusin:1})c="on"+h,j=c in k,j||(k.setAttribute(c,"return;"),j="function"===typeof k[c]),b[h+"Bubbles"]=j;d.removeChild(k);d=e=f=c=k=c=null;i(function(){var a,c,d,e,f=q.getElementsByTagName("body")[0];if(f){a=q.createElement("div");a.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";f.insertBefore(a,f.firstChild);k=q.createElement("div");a.appendChild(k);k.innerHTML="
t
"; -g=k.getElementsByTagName("td");j=0===g[0].offsetHeight;g[0].style.display="";g[1].style.display="none";b.reliableHiddenOffsets=j&&0===g[0].offsetHeight;k.innerHTML="";k.style.width=k.style.paddingLeft="1px";i.boxModel=b.boxModel=2===k.offsetWidth;if("undefined"!==typeof k.style.zoom)k.style.display="inline",k.style.zoom=1,b.inlineBlockNeedsLayout=2===k.offsetWidth,k.style.display="",k.innerHTML="
",b.shrinkWrapBlocks=2!==k.offsetWidth;k.style.cssText="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;visibility:hidden;border:0;"; -k.innerHTML="
";c=k.firstChild;d=c.firstChild;e={doesNotAddBorder:5!==d.offsetTop,doesAddBorderForTableAndCells:5===c.nextSibling.firstChild.firstChild.offsetTop};d.style.position="fixed";d.style.top="20px";e.fixedPosition= -20===d.offsetTop||15===d.offsetTop;d.style.position=d.style.top="";c.style.overflow="hidden";c.style.position="relative";e.subtractsBorderForOverflowNotVisible=-5===d.offsetTop;e.doesNotIncludeMarginInBodyOffset=1!==f.offsetTop;f.removeChild(a);k=null;i.extend(b,e)}});return b}();var Ua=/^(?:\{.*\}|\[.*\])$/,Ta=/([A-Z])/g;i.extend({cache:{},uuid:0,expando:"jQuery"+(i.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a= -a.nodeType?i.cache[a[i.expando]]:a[i.expando];return!!a&&!e(a)},data:function(a,c,d,e){if(i.acceptData(a)){var f;f=i.expando;var g="string"===typeof c,h=a.nodeType,j=h?i.cache:a,k=h?a[f]:a[f]&&f,m="events"===c;if(k&&j[k]&&(m||e||j[k].data)||!(g&&d===b)){k||(h?a[f]=k=++i.uuid:k=f);if(!j[k]&&(j[k]={},!h))j[k].toJSON=i.noop;if("object"===typeof c||"function"===typeof c)e?j[k]=i.extend(j[k],c):j[k].data=i.extend(j[k].data,c);f=a=j[k];if(!e){if(!a.data)a.data={};a=a.data}d!==b&&(a[i.camelCase(c)]=d);if(m&& -!a[c])return f.events;g?(d=a[c],null==d&&(d=a[i.camelCase(c)])):d=a;return d}}},removeData:function(a,b,c){if(i.acceptData(a)){var d,f,g,h=i.expando,k=a.nodeType,j=k?i.cache:a,m=k?a[h]:h;if(j[m]){if(b&&(d=c?j[m]:j[m].data)){i.isArray(b)||(b in d?b=[b]:(b=i.camelCase(b),b=b in d?[b]:b.split(" ")));for(f=0,g=b.length;fd)return null;a=g?d:0;for(c=g?d+1:f.length;ag.indexOf(":")?"on"+g:"",e){c.result=b;if(!c.target)c.target=e;d=null!=d?i.makeArray(d):[];d.unshift(c);m=i.event.special[g]||{};if(!(m.trigger&&!1===m.trigger.apply(e,d))){n= -[[e,m.bindType||g]];if(!f&&!m.noBubble&&!i.isWindow(e)){l=m.delegateType||g;h=Ba.test(l+g)?e:e.parentNode;for(k=null;h;h=h.parentNode)n.push([h,l]),k=h;k&&k===e.ownerDocument&&n.push([k.defaultView||k.parentWindow||a,l])}for(k=0;ke&&h.push({elem:this,matches:d.slice(e)});for(j=0;j+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e="sizcache"+(Math.random()+"").replace(".",""),f=0,g=Object.prototype.toString,h=!1,j=!0,k=/\\/g,m=/\r\n/g,l=/\W/;[0,0].sort(function(){j=!1;return 0});var n=function(a,b,c,e){var c=c||[],f=b=b||q;if(1!==b.nodeType&&9!== -b.nodeType)return[];if(!a||"string"!==typeof a)return c;var h,k,j,i,w,m=!0,l=n.isXML(b),z=[],N=a;do if(d.exec(""),h=d.exec(N))if(N=h[3],z.push(h[1]),h[2]){i=h[3];break}while(h);if(1":function(a,b){var c,d="string"===typeof b,e=0,f=a.length;if(d&&!l.test(b))for(b=b.toLowerCase();ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if("contains"===e)return 0<=(a.textContent||a.innerText||p([a])||"").indexOf(b[3]);if("not"===e){b=b[3];c=0;for(d=b.length;c"; -d.insertBefore(a,d.firstChild);if(q.getElementById(c))o.find.ID=function(a,c,d){if("undefined"!==typeof c.getElementById&&!d)return(c=c.getElementById(a[1]))?c.id===a[1]||"undefined"!==typeof c.getAttributeNode&&c.getAttributeNode("id").nodeValue===a[1]?[c]:b:[]},o.filter.ID=function(a,b){var c="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id");return 1===a.nodeType&&c&&c.nodeValue===b};d.removeChild(a);d=a=null})();(function(){var a=q.createElement("div");a.appendChild(q.createComment("")); -if(0

";if(!(b.querySelectorAll&& -0===b.querySelectorAll(".TEST").length)){n=function(b,c,d,e){c=c||q;if(!e&&!n.isXML(c)){var f=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(f&&(1===c.nodeType||9===c.nodeType)){if(f[1])return C(c.getElementsByTagName(b),d);if(f[2]&&o.find.CLASS&&c.getElementsByClassName)return C(c.getElementsByClassName(f[2]),d)}if(9===c.nodeType){if("body"===b&&c.body)return C([c.body],d);if(f&&f[3]){var g=c.getElementById(f[3]);if(g&&g.parentNode){if(g.id===f[3])return C([g],d)}else return C([],d)}try{return C(c.querySelectorAll(b), -d)}catch(h){}}else if(1===c.nodeType&&"object"!==c.nodeName.toLowerCase()){var f=c,j=(g=c.getAttribute("id"))||"__sizzle__",k=c.parentNode,i=/^\s*[+~]/.test(b);g?j=j.replace(/'/g,"\\$&"):c.setAttribute("id",j);if(i&&k)c=c.parentNode;try{if(!i||k)return C(c.querySelectorAll("[id='"+j+"'] "+b),d)}catch(w){}finally{g||f.removeAttribute("id")}}}return a(b,c,d,e)};for(var c in a)n[c]=a[c];b=null}}();(function(){var a=q.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector|| -a.msMatchesSelector;if(b){var c=!b.call(q.createElement("div"),"div"),d=!1;try{b.call(q.documentElement,"[test!='']:sizzle")}catch(e){d=!0}n.matchesSelector=function(a,e){e=e.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!n.isXML(a))try{if(d||!o.match.PSEUDO.test(e)&&!/!=/.test(e)){var f=b.call(a,e);if(f||!c||a.document&&11!==a.document.nodeType)return f}}catch(g){}return 0
"; -if(a.getElementsByClassName&&0!==a.getElementsByClassName("e").length&&(a.lastChild.className="e",1!==a.getElementsByClassName("e").length))o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if("undefined"!==typeof b.getElementsByClassName&&!c)return b.getElementsByClassName(a[1])},a=null})();n.contains=q.documentElement.contains?function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:q.documentElement.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:function(){return!1}; -n.isXML=function(a){return(a=(a?a.ownerDocument||a:0).documentElement)?"HTML"!==a.nodeName:!1};var D=function(a,b,c){for(var d,e=[],f="",b=b.nodeType?[b]:b;d=o.match.PSEUDO.exec(a);)f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;d=0;for(var g=b.length;d]*)\/>/ig,Fa=/<([\w:]+)/,sb=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"", -"
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},Ia=k(q);E.optgroup=E.option;E.tbody=E.tfoot=E.colgroup=E.caption=E.thead;E.th=E.td;if(!i.support.htmlSerialize)E._default=[1,"div
","
"];i.fn.extend({text:function(a){return i.isFunction(a)?this.each(function(b){var c=i(this);c.text(a.call(this,b,c.text()))}):"object"!==typeof a&&a!==b?this.empty().append((this[0]&& -this[0].ownerDocument||q).createTextNode(a)):i.text(this)},wrapAll:function(a){if(i.isFunction(a))return this.each(function(b){i(this).wrapAll(a.call(this,b))});if(this[0]){var b=i(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return i.isFunction(a)?this.each(function(b){i(this).wrapInner(a.call(this,b))}):this.each(function(){var b= -i(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=i.isFunction(a);return this.each(function(c){i(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){i.nodeName(this,"body")||i(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){1===this.nodeType&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){1===this.nodeType&&this.insertBefore(a, -this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=i.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a, -i.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;null!=(d=this[c]);c++)if(!a||i.filter(a,[d]).length)!b&&1===d.nodeType&&(i.cleanData(d.getElementsByTagName("*")),i.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;null!=(b=this[a]);a++)for(1===b.nodeType&&i.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a,b){a=null==a?!1:a;b=null==b?a:b;return this.map(function(){return i.clone(this, -a,b)})},html:function(a){if(a===b)return this[0]&&1===this[0].nodeType?this[0].innerHTML.replace(rb,""):null;if("string"===typeof a&&!ub.test(a)&&(i.support.leadingWhitespace||!ka.test(a))&&!E[(Fa.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ea,"<$1>");try{for(var c=0,d=this.length;ch.length&&g===q&&"<"===h.charAt(0)&&!vb.test(h)&& -(i.support.checkClone||!Ha.test(h))&&(i.support.html5Clone||!Ga.test(h)))e=!0,(f=i.fragments[h])&&1!==f&&(d=f);d||(d=g.createDocumentFragment(),i.clean(a,g,d,c));e&&(i.fragments[h]=f?d:1);return{fragment:d,cacheable:e}};i.fragments={};i.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){i.fn[a]=function(c){var d=[],c=i(c),e=1===this.length&&this[0].parentNode;if(e&&11===e.nodeType&&1===e.childNodes.length&&1===c.length)return c[b](this[0]), -this;for(var e=0,f=c.length;e");f=(Fa.exec(h)||["",""])[1].toLowerCase();var j=E[f]||E._default,m=j[0],l=b.createElement("div");b===q?Ia.appendChild(l):k(b).appendChild(l);for(l.innerHTML=j[1]+h+j[2];m--;)l= -l.lastChild;if(!i.support.tbody){m=sb.test(h);j="table"===f&&!m?l.firstChild&&l.firstChild.childNodes:""===j[1]&&!m?l.childNodes:[];for(f=j.length-1;0<=f;--f)i.nodeName(j[f],"tbody")&&!j[f].childNodes.length&&j[f].parentNode.removeChild(j[f])}!i.support.leadingWhitespace&&ka.test(h)&&l.insertBefore(b.createTextNode(ka.exec(h)[0]),l.firstChild);h=l.childNodes}else h=b.createTextNode(h);var n;if(!i.support.appendChecked)if(h[0]&&"number"===typeof(n=h.length))for(f=0;f)<[^<]*)*<\/script>/gi,Jb=/^(?:select|textarea)/i,pa=/\s+/,Kb=/([?&])_=[^&]*/,Oa=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,Pa=i.fn.load,da={},Qa={},I,M,Ra=["*/"]+["*"];try{I=ab.href}catch(Qb){I=q.createElement("a"),I.href= -"",I=I.href}M=Oa.exec(I.toLowerCase())||[];i.fn.extend({load:function(a,c,d){if("string"!==typeof a&&Pa)return Pa.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(0<=e)var f=a.slice(e,a.length),a=a.slice(0,e);e="GET";c&&(i.isFunction(c)?(d=c,c=b):"object"===typeof c&&(c=i.param(c,i.ajaxSettings.traditional),e="POST"));var g=this;i.ajax({url:a,type:e,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText;a.isResolved()&&(a.done(function(a){c=a}),g.html(f?i("
").append(c.replace(Ib, -"")).find(f):c));d&&g.each(d,[c,b,a])}});return this},serialize:function(){return i.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?i.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||Jb.test(this.nodeName)||Fb.test(this.type))}).map(function(a,b){var c=i(this).val();return null==c?null:i.isArray(c)?i.map(c,function(a){return{name:b.name,value:a.replace(Ma,"\r\n")}}):{name:b.name,value:c.replace(Ma, -"\r\n")}}).get()}});i.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){i.fn[b]=function(a){return this.on(b,a)}});i.each(["get","post"],function(a,c){i[c]=function(a,d,e,f){i.isFunction(d)&&(f=f||e,e=d,d=b);return i.ajax({type:c,url:a,data:d,success:e,dataType:f})}});i.extend({getScript:function(a,c){return i.get(a,b,c,"script")},getJSON:function(a,b,c){return i.get(a,b,c,"json")},ajaxSetup:function(a,b){b?C(a,i.ajaxSettings):(b=a,a=i.ajaxSettings);C(a, -b);return a},ajaxSettings:{url:I,isLocal:/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(M[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Ra},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":i.parseJSON, -"text xml":i.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:s(da),ajaxTransport:s(Qa),ajax:function(a,c){function d(a,c,l,n){if(2!==s){s=2;q&&clearTimeout(q);r=b;p=n||"";u.readyState=0a||304===a){if(e.ifModified){if(G=u.getResponseHeader("Last-Modified"))i.lastModified[m]=G;if(G=u.getResponseHeader("Etag"))i.etag[m]=G}if(304===a)n="notmodified",w=!0;else try{G=e;G.dataFilter&&(l=G.dataFilter(l,G.dataType));var E=G.dataTypes;v={};var W,F,L=E.length,H,Q=E[0],I,M,R,T,J;for(W=1;Wa&&(a=0);u.status=a;u.statusText=""+(c||n);w?h.resolveWith(f,[o,n,u]):h.rejectWith(f,[u,n,z]);u.statusCode(k);k=b;C&&g.trigger("ajax"+(w? -"Success":"Error"),[u,e,w?o:z]);j.fireWith(f,[u,n]);C&&(g.trigger("ajaxComplete",[u,e]),--i.active||i.event.trigger("ajaxStop"))}}"object"===typeof a&&(c=a,a=b);var c=c||{},e=i.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof i)?i(f):i.event,h=i.Deferred(),j=i.Callbacks("once memory"),k=e.statusCode||{},m,l={},n={},p,o,r,q,t,s=0,C,B,u={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase(),a=n[c]=n[c]||a;l[a]=b}return this},getAllResponseHeaders:function(){return 2=== -s?p:null},getResponseHeader:function(a){var c;if(2===s){if(!o)for(o={};c=Eb.exec(p);)o[c[1].toLowerCase()]=c[2];c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){if(!s)e.mimeType=a;return this},abort:function(a){a=a||"abort";r&&r.abort(a);d(0,a);return this}};h.promise(u);u.success=u.done;u.error=u.fail;u.complete=j.add;u.statusCode=function(a){if(a){var b;if(2>s)for(b in a)k[b]=[k[b],a[b]];else b=a[u.status],u.then(b,b)}return this};e.url=((a||e.url)+"").replace(Db,"").replace(Hb, -M[1]+"//");e.dataTypes=i.trim(e.dataType||"*").toLowerCase().split(pa);if(null==e.crossDomain)t=Oa.exec(e.url.toLowerCase()),e.crossDomain=!(!t||!(t[1]!=M[1]||t[2]!=M[2]||(t[3]||("http:"===t[1]?80:443))!=(M[3]||("http:"===M[1]?80:443))));if(e.data&&e.processData&&"string"!==typeof e.data)e.data=i.param(e.data,e.traditional);A(da,e,c,u);if(2===s)return!1;C=e.global;e.type=e.type.toUpperCase();e.hasContent=!Gb.test(e.type);C&&0===i.active++&&i.event.trigger("ajaxStart");if(!e.hasContent&&(e.data&&(e.url+= -(Na.test(e.url)?"&":"?")+e.data,delete e.data),m=e.url,!1===e.cache)){t=i.now();var D=e.url.replace(Kb,"$1_="+t);e.url=D+(D===e.url?(Na.test(e.url)?"&":"?")+"_="+t:"")}(e.data&&e.hasContent&&!1!==e.contentType||c.contentType)&&u.setRequestHeader("Content-Type",e.contentType);e.ifModified&&(m=m||e.url,i.lastModified[m]&&u.setRequestHeader("If-Modified-Since",i.lastModified[m]),i.etag[m]&&u.setRequestHeader("If-None-Match",i.etag[m]));u.setRequestHeader("Accept",e.dataTypes[0]&&e.accepts[e.dataTypes[0]]? -e.accepts[e.dataTypes[0]]+("*"!==e.dataTypes[0]?", "+Ra+"; q=0.01":""):e.accepts["*"]);for(B in e.headers)u.setRequestHeader(B,e.headers[B]);if(e.beforeSend&&(!1===e.beforeSend.call(f,u,e)||2===s))return u.abort(),!1;for(B in{success:1,error:1,complete:1})u[B](e[B]);if(r=A(Qa,e,c,u)){u.readyState=1;C&&g.trigger("ajaxSend",[u,e]);e.async&&0s)d(-1,v);else throw v;}}else d(-1,"No Transport");return u}, -param:function(a,c){var d=[],e=function(a,b){b=i.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(c===b)c=i.ajaxSettings.traditional;if(i.isArray(a)||a.jquery&&!i.isPlainObject(a))i.each(a,function(){e(this.name,this.value)});else for(var f in a)B(f,a[f],c,e);return d.join("&").replace(Cb,"+")}});i.extend({active:0,lastModified:{},etag:{}});var Lb=i.now(),ba=/(\=)\?(&|$)|\?\?/i;i.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return i.expando+"_"+Lb++}});i.ajaxPrefilter("json jsonp", -function(b,c,d){c="application/x-www-form-urlencoded"===b.contentType&&"string"===typeof b.data;if("jsonp"===b.dataTypes[0]||!1!==b.jsonp&&(ba.test(b.url)||c&&ba.test(b.data))){var e,f=b.jsonpCallback=i.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,g=a[f],h=b.url,j=b.data,k="$1"+f+"$2";!1!==b.jsonp&&(h=h.replace(ba,k),b.url===h&&(c&&(j=j.replace(ba,k)),b.data===j&&(h+=(/\?/.test(h)?"&":"?")+b.jsonp+"="+f)));b.url=h;b.data=j;a[f]=function(a){e=[a]};d.always(function(){a[f]=g;if(e&& -i.isFunction(g))a[f](e[0])});b.converters["script json"]=function(){e||i.error(f+" was not called");return e[0]};b.dataTypes[0]="json";return"script"}});i.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){i.globalEval(a);return a}}});i.ajaxPrefilter("script",function(a){if(a.cache===b)a.cache=!1;if(a.crossDomain)a.type="GET",a.global=!1});i.ajaxTransport("script", -function(a){if(a.crossDomain){var c,d=q.head||q.getElementsByTagName("head")[0]||q.documentElement;return{send:function(e,f){c=q.createElement("script");c.async="async";if(a.scriptCharset)c.charset=a.scriptCharset;c.src=a.url;c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||f(200,"success")};d.insertBefore(c,d.firstChild)},abort:function(){if(c)c.onload(0,1)}}}});var ma= -a.ActiveXObject?function(){for(var a in V)V[a](0,1)}:!1,Mb=0,V;i.ajaxSettings.xhr=a.ActiveXObject?function(){var b;if(!(b=!this.isLocal&&D()))a:{try{b=new a.ActiveXObject("Microsoft.XMLHTTP");break a}catch(c){}b=void 0}return b}:D;(function(a){i.extend(i.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})})(i.ajaxSettings.xhr());i.support.ajax&&i.ajaxTransport(function(c){if(!c.crossDomain||i.support.cors){var d;return{send:function(e,f){var g=c.xhr(),h,j;c.username?g.open(c.type,c.url,c.async,c.username, -c.password):g.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)g[j]=c.xhrFields[j];c.mimeType&&g.overrideMimeType&&g.overrideMimeType(c.mimeType);!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)g.setRequestHeader(j,e[j])}catch(k){}g.send(c.hasContent&&c.data||null);d=function(a,e){var j,k,m,l,n;try{if(d&&(e||4===g.readyState)){d=b;if(h)g.onreadystatechange=i.noop,ma&&delete V[h];if(e)4!==g.readyState&&g.abort();else{j=g.status;m=g.getAllResponseHeaders(); -l={};if((n=g.responseXML)&&n.documentElement)l.xml=n;l.text=g.responseText;try{k=g.statusText}catch(p){k=""}!j&&c.isLocal&&!c.crossDomain?j=l.text?200:404:1223===j&&(j=204)}}}catch(o){e||f(-1,o)}l&&f(j,k,l,m)};!c.async||4===g.readyState?d():(h=++Mb,ma&&(V||(V={},i(a).unload(ma)),V[h]=d),g.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ea={},F,O,Nb=/^(?:toggle|show|hide)$/,Ob=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,qa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width", -"marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],Y;i.fn.extend({show:function(a,b,c){if(a||0===a)return this.animate(v("show",3),a,b,c);for(var c=0,d=this.length;c=f.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();f.animatedProperties[this.prop]=!0;for(b in f.animatedProperties)!0!==f.animatedProperties[b]&&(d=!1);if(d){null!=f.overflow&&!i.support.shrinkWrapBlocks&&i.each(["","X","Y"],function(a,b){e.style["overflow"+b]=f.overflow[a]});f.hide&& -i(e).hide();if(f.hide||f.show)for(b in f.animatedProperties)i.style(e,b,f.orig[b]),i.removeData(e,"fxshow"+b,!0),i.removeData(e,"toggle"+b,!0);if(a=f.complete)f.complete=!1,a.call(e)}return!1}Infinity==f.duration?this.now=c:(a=c-this.startTime,this.state=a/f.duration,this.pos=i.easing[f.animatedProperties[this.prop]](this.state,a,0,1,f.duration),this.now=this.start+(this.end-this.start)*this.pos);this.update();return!0}};i.extend(i.fx,{tick:function(){for(var a,b=i.timers,c=0;c";trace.logShouldClear=!1}};trace.logMulti=function(){if(!trace.suppress){for(var a="",b=!0,c=0;cf.time-e.time&&30Math.abs(e.coords[1]-f.coords[1])?e.origin.trigger("swipe").trigger(e.coords[0]>f.coords[0]?"swipeleft":"swiperight"):1E3>f.time-e.time&&30Math.abs(e.coords[0]-f.coords[0])&&e.origin.trigger("swipe").trigger(e.coords[1]>f.coords[1]?"swipeup":"swipedown"));e=f=void 0})})}}; -(function(a){function b(){var a=d();a!==e&&(e=a,c.trigger("orientationchange"))}var c=a(window),d,e;a.event.special.orientationchange={setup:function(){if(a.support.orientation)return!1;e=d();c.bind("resize",b)},teardown:function(){if(a.support.orientation)return!1;c.unbind("resize",b)},add:function(a){var b=a.handler;a.handler=function(a){a.orientation=d();return b.apply(this,arguments)}}};d=function(){var a=document.documentElement;return a&&1.1>a.clientWidth/a.clientHeight?"portrait":"landscape"}})(jQuery); -$.each({scrollstop:"scrollstart",taphold:"tap",swipeup:"swipe",swipedown:"swipe",swipeleft:"swipe",swiperight:"swipe"},function(a,b){$.event.special[a]={setup:function(){$(this).bind(b,$.noop)}}});(function(){function a(a,b){var l;this.element="object"==typeof a?a:document.getElementById(a);this.wrapper=this.element.parentNode;this.element.style.webkitTransitionProperty="-webkit-transform";this.element.style.webkitTransitionTimingFunction="cubic-bezier(0,0,0.25,1)";this.element.style.webkitTransitionDuration="0";this.element.style.webkitTransform=j+"0,0"+k;this.options={bounce:c,momentum:c,checkDOMChanges:!0,topOnDOMChanges:!1,hScrollbar:c,vScrollbar:c,fadeScrollbar:d||!e,shrinkScrollbar:d|| -!e,desktopCompatibility:!1,overflow:"auto",snap:!1,bounceLock:!1,directionLock:!0,scrollbarColor:"rgba(150,150,150,0.5)",onScrollEnd:function(){}};if("object"==typeof b)for(l in b)this.options[l]=b[l];if(this.options.desktopCompatibility)this.options.overflow="hidden";this.onScrollEnd=this.options.onScrollEnd;delete this.options.onScrollEnd;this.wrapper.style.overflow=this.options.overflow;this.refresh();window.addEventListener("onorientationchange"in window?"orientationchange":"resize",this,!1); -if(e||this.options.desktopCompatibility)this.element.addEventListener(f,this,!1),this.element.addEventListener(g,this,!1),this.element.addEventListener(h,this,!1);this.options.checkDOMChanges&&this.element.addEventListener("DOMSubtreeModified",this,!1)}function b(a,b,c,d,e){var f=document;this.dir=a;this.fade=c;this.shrink=d;this.uid=++l;this.bar=f.createElement("div");this.bar.style.cssText="position:absolute;top:0;left:0;-webkit-transition-timing-function:cubic-bezier(0,0,0.25,1);pointer-events:none;-webkit-transition-duration:0;-webkit-transition-delay:0;-webkit-transition-property:-webkit-transform;z-index:10;background:"+ -e+";-webkit-transform:"+j+"0,0"+k+";"+("horizontal"==a?"-webkit-border-radius:3px 2px;min-width:6px;min-height:5px":"-webkit-border-radius:2px 3px;min-width:5px;min-height:6px");this.wrapper=f.createElement("div");this.wrapper.style.cssText="-webkit-mask:-webkit-canvas(scrollbar"+this.uid+this.dir+");position:absolute;z-index:10;pointer-events:none;overflow:hidden;opacity:0;-webkit-transition-duration:"+(c?"300ms":"0")+";-webkit-transition-delay:0;-webkit-transition-property:opacity;"+("horizontal"== -this.dir?"bottom:2px;left:2px;right:7px;height:5px":"top:2px;right:2px;bottom:7px;width:5px;");this.wrapper.appendChild(this.bar);b.appendChild(this.wrapper)}a.prototype={x:0,y:0,enabled:!0,handleEvent:function(a){switch(a.type){case f:this.touchStart(a);break;case g:this.touchMove(a);break;case h:this.touchEnd(a);break;case "webkitTransitionEnd":this.transitionEnd();break;case "orientationchange":case "resize":this.refresh();break;case "DOMSubtreeModified":this.onDOMModified(a)}},onDOMModified:function(a){var b= -this;a.target.parentNode==b.element&&(setTimeout(function(){b.refresh()},0),b.options.topOnDOMChanges&&(0!=b.x||0!=b.y)&&b.scrollTo(0,0,"0"))},refresh:function(){var a=this.x,c=this.y;this.scrollWidth=this.wrapper.clientWidth;this.scrollHeight=this.wrapper.clientHeight;this.scrollerWidth=this.element.offsetWidth;this.scrollerHeight=this.element.offsetHeight;this.maxScrollX=this.scrollWidth-this.scrollerWidth;this.maxScrollY=this.scrollHeight-this.scrollerHeight;this.directionY=this.directionX=0;if(this.scrollX)if(0<= -this.maxScrollX)a=0;else if(this.xthis.scrollWidth;this.scrollY=!this.options.bounceLock&&!this.scrollX|| -this.scrollerHeight>this.scrollHeight;if(this.options.hScrollbar&&this.scrollX)this.scrollBarX=this.scrollBarX||new b("horizontal",this.wrapper,this.options.fadeScrollbar,this.options.shrinkScrollbar,this.options.scrollbarColor),this.scrollBarX.init(this.scrollWidth,this.scrollerWidth);else if(this.scrollBarX)this.scrollBarX=this.scrollBarX.remove();if(this.options.vScrollbar&&this.scrollY&&this.scrollerHeight>this.scrollHeight)this.scrollBarY=this.scrollBarY||new b("vertical",this.wrapper,this.options.fadeScrollbar, -this.options.shrinkScrollbar,this.options.scrollbarColor),this.scrollBarY.init(this.scrollHeight,this.scrollerHeight);else if(this.scrollBarY)this.scrollBarY=this.scrollBarY.remove()},setPosition:function(a,b,c){this.x=a;this.y=b;this.element.style.webkitTransform=j+this.x+"px,"+this.y+"px"+k;c||(this.scrollBarX&&this.scrollBarX.setPosition(this.x),this.scrollBarY&&this.scrollBarY.setPosition(this.y))},setTransitionTime:function(a){a=a||"0";this.element.style.webkitTransitionDuration=a;if(this.scrollBarX)this.scrollBarX.bar.style.webkitTransitionDuration= -a,this.scrollBarX.wrapper.style.webkitTransitionDuration=c&&this.options.fadeScrollbar?"300ms":"0";if(this.scrollBarY)this.scrollBarY.bar.style.webkitTransitionDuration=a,this.scrollBarY.wrapper.style.webkitTransitionDuration=c&&this.options.fadeScrollbar?"300ms":"0"},touchStart:function(a){var b;if(this.enabled){a.preventDefault();a.stopPropagation();this.scrolling=!0;this.moved=!1;this.distY=this.distX=0;this.setTransitionTime("0");if(this.options.momentum||this.options.snap)if(b=new WebKitCSSMatrix(window.getComputedStyle(this.element).webkitTransform), -b.e!=this.x||b.f!=this.y)document.removeEventListener("webkitTransitionEnd",this,!1),this.setPosition(b.e,b.f),this.moved=!0;this.touchStartX=e?a.changedTouches[0].pageX:a.pageX;this.scrollStartX=this.x;this.touchStartY=e?a.changedTouches[0].pageY:a.pageY;this.scrollStartY=this.y;this.scrollStartTime=a.timeStamp;this.directionY=this.directionX=0}},touchMove:function(a){if(this.scrolling){var b=e?a.changedTouches[0].pageX:a.pageX,c=e?a.changedTouches[0].pageY:a.pageY,d=this.scrollX?b-this.touchStartX: -0,f=this.scrollY?c-this.touchStartY:0,g=this.x+d,h=this.y+f;a.stopPropagation();this.touchStartX=b;this.touchStartY=c;if(0<=g||gthis.distY)h=this.y,f=0;else if(this.distY-3>this.distX)g=this.x,d=0;this.setPosition(g, -h);this.moved=!0;this.directionX=0this.maxScrollY?this.y+this.scrollerHeight-this.scrollHeight:0)+this.scrollHeight/5:this.y+this.scrollerHeight-this.scrollHeight):{dist:0,time:0},d=Math.max(Math.max(a.time,c.time),1),f=this.x+a.dist,g=this.y+c.dist);if(this.options.snap)a= -this.snap(f,g),f=a.x,g=a.y,d=Math.max(a.time,d);this.scrollTo(f,g,d+"ms")}else if(this.resetPosition(),e){for(d=c.target;1!=d.nodeType;)d=d.parentNode;a.preventDefault();f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!0,a.view,1,c.screenX,c.screenY,c.clientX,c.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,0,null);f._fake=!0;d.dispatchEvent(f)}}},transitionEnd:function(){document.removeEventListener("webkitTransitionEnd",this,!1);this.resetPosition()},resetPosition:function(){var a= -this,b=a.x,c=a.y;if(0<=a.x)b=0;else if(a.xthis.directionX?Math.ceil(a/this.scrollWidth):Math.round(a/this.scrollWidth);this.pageX=-a;a*=this.scrollWidth;if(0< -a)a=this.pageX=0;else if(athis.directionY?Math.ceil(b/this.scrollHeight):Math.round(b/this.scrollHeight);this.pageY=-b;b*=this.scrollHeight;if(0c?(b=b*c/e/2.5,e=c):0>a&&e>d&&(b=b*d/e/2.5,e=d);f=b/1.2;return{dist:Math.round(e* -(0>a?-1:1)),time:Math.round(f)}},destroy:function(a){window.removeEventListener("onorientationchange"in window?"orientationchange":"resize",this,!1);this.element.removeEventListener(f,this,!1);this.element.removeEventListener(g,this,!1);this.element.removeEventListener(h,this,!1);document.removeEventListener("webkitTransitionEnd",this,!1);this.options.checkDOMChanges&&this.element.removeEventListener("DOMSubtreeModified",this,!1);if(this.scrollBarX)this.scrollBarX=this.scrollBarX.remove();if(this.scrollBarY)this.scrollBarY= -this.scrollBarY.remove();a&&this.wrapper.parentNode.removeChild(this.wrapper);return null}};b.prototype={init:function(a,b){var c=document,d=Math.PI;if("horizontal"==this.dir){if(this.maxSize!=this.wrapper.offsetWidth)this.maxSize=this.wrapper.offsetWidth,c=c.getCSSCanvasContext("2d","scrollbar"+this.uid+this.dir,this.maxSize,5),c.fillStyle="rgb(0,0,0)",c.beginPath(),c.arc(2.5,2.5,2.5,d/2,-d/2,!1),c.lineTo(this.maxSize-2.5,0),c.arc(this.maxSize-2.5,2.5,2.5,-d/2,d/2,!1),c.closePath(),c.fill()}else if(this.maxSize!= -this.wrapper.offsetHeight)this.maxSize=this.wrapper.offsetHeight,c=c.getCSSCanvasContext("2d","scrollbar"+this.uid+this.dir,5,this.maxSize),c.fillStyle="rgb(0,0,0)",c.beginPath(),c.arc(2.5,2.5,2.5,d,0,!1),c.lineTo(5,this.maxSize-2.5),c.arc(2.5,this.maxSize-2.5,2.5,0,d,!1),c.closePath(),c.fill();this.size=Math.max(Math.round(this.maxSize*this.maxSize/b),6);this.maxScroll=this.maxSize-this.size;this.toWrapperProp=this.maxScroll/(a-b);this.bar.style["horizontal"==this.dir?"width":"height"]=this.size+ -"px"},setPosition:function(a){"1"!=this.wrapper.style.opacity&&this.show();a=Math.round(this.toWrapperProp*a);0>a?(a=this.shrink?a+3*a:0,7>this.size+a&&(a=-this.size+6)):a>this.maxScroll&&(a=this.shrink?a+3*(a-this.maxScroll):this.maxScroll,7>this.size+this.maxScroll-a&&(a=this.size+this.maxScroll-6));a="horizontal"==this.dir?j+a+"px,0"+k:j+"0,"+a+"px"+k;this.bar.style.webkitTransform=a},show:function(){if(c)this.wrapper.style.webkitTransitionDelay="0";this.wrapper.style.opacity="1"},hide:function(){if(c)this.wrapper.style.webkitTransitionDelay= -"350ms";this.wrapper.style.opacity="0"},remove:function(){this.wrapper.parentNode.removeChild(this.wrapper);return null}};var c="WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix,d=/iphone|ipad/gi.test(navigator.appVersion),e="ontouchstart"in window,f=e?"touchstart":"mousedown",g=e?"touchmove":"mousemove",h=e?"touchend":"mouseup",j="translate"+(c?"3d(":"("),k=c?",0)":")",l=0;window.iScroll=a})();var util={};util.format=function(a){var b=util.format.arguments[1],c=1;if("object"==typeof b){for(key in b)a=a.replace("{"+key+"}",b[key]);return a}!b||!b.splice?b=util.format.arguments:c=0;for(var d=c;db?b:a};util.max=function(a,b){return a>2,c=(c&3)<<4|d>>4,g=(d&15)<<2|e>>6,h=e&63,isNaN(d)?g=h=64:isNaN(e)&&(h=64),b=b+this._keyStr.charAt(f)+this._keyStr.charAt(c)+this._keyStr.charAt(g)+this._keyStr.charAt(h);return b},decode:function(a){for(var b="",c,d,e,f,g,h=0,a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");h< -a.length;)c=this._keyStr.indexOf(a.charAt(h++)),d=this._keyStr.indexOf(a.charAt(h++)),f=this._keyStr.indexOf(a.charAt(h++)),g=this._keyStr.indexOf(a.charAt(h++)),c=c<<2|d>>4,d=(d&15)<<4|f>>2,e=(f&3)<<6|g,b+=String.fromCharCode(c),64!=f&&(b+=String.fromCharCode(d)),64!=g&&(b+=String.fromCharCode(e));return b=Base64._utf8_decode(b)},_utf8_encode:function(a){for(var a=a.replace(/\r\n/g,"\n"),b="",c=0;cd?b+=String.fromCharCode(d):(127d?b+=String.fromCharCode(d>> -6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){for(var b="",c=0,d=c1=c2=0;cd?(b+=String.fromCharCode(d),c++):191d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};function TaskQueue(){this.tasks=[];this.timeout=50;this.tick()}TaskQueue.prototype.add=function(a){this.tasks.push(a)};TaskQueue.prototype.tick=function(a){(a=this.tasks.shift())&&a();var b=this;setTimeout(function(){b.tick()},b.timeout)};function MatrixTransform(){this.reset()}MatrixTransform.PI_OVER_180=Math.PI/180;MatrixTransform.prototype.reset=function(){this.m=[1,0,0,1,0,0]};MatrixTransform.prototype.copy=function(a){a=new MatrixTransform;a.m=[this.m[0],this.m[1],this.m[2],this.m[3],this.m[4],this.m[5]];return a}; -MatrixTransform.prototype.multiply=function(a){var b=this.m[1]*a.m[0]+this.m[3]*a.m[1],c=this.m[0]*a.m[2]+this.m[2]*a.m[3],d=this.m[1]*a.m[2]+this.m[3]*a.m[3],e=this.m[0]*a.m[4]+this.m[2]*a.m[5]+this.m[4],f=this.m[1]*a.m[4]+this.m[3]*a.m[5]+this.m[5];this.m[0]=this.m[0]*a.m[0]+this.m[2]*a.m[1];this.m[1]=b;this.m[2]=c;this.m[3]=d;this.m[4]=e;this.m[5]=f}; -MatrixTransform.prototype.invert=function(){var a=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),b=-this.m[1]*a,c=-this.m[2]*a,d=this.m[0]*a,e=a*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),f=a*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);this.m[0]=this.m[3]*a;this.m[1]=b;this.m[2]=c;this.m[3]=d;this.m[4]=e;this.m[5]=f};MatrixTransform.prototype.rotateDegrees=function(a){this.rotate(a*MatrixTransform.PI_OVER_180)}; -MatrixTransform.prototype.rotate=function(a){var b=Math.cos(a),a=Math.sin(a),c=this.m[1]*b+this.m[3]*a,d=this.m[0]*-a+this.m[2]*b,e=this.m[1]*-a+this.m[3]*b;this.m[0]=this.m[0]*b+this.m[2]*a;this.m[1]=c;this.m[2]=d;this.m[3]=e};MatrixTransform.prototype.translate=function(a,b){this.m[4]+=this.m[0]*a+this.m[2]*b;this.m[5]+=this.m[1]*a+this.m[3]*b};MatrixTransform.prototype.scale=function(a,b){this.m[0]*=a;this.m[1]*=a;this.m[2]*=b;this.m[3]*=b}; -MatrixTransform.prototype.transformPoint=function(a,b){var c=a,d=b,a=c*this.m[0]+d*this.m[2]+this.m[4],b=c*this.m[1]+d*this.m[3]+this.m[5];return{x:a,y:b}};MatrixTransform.prototype.unTransformPoint=function(a,b){var c=this.copy();c.invert();return c.transformPoint(a,b)};MatrixTransform.prototype.applyContext=function(a){a.setTransform(this.m[0],this.m[1],this.m[2],this.m[3],this.m[4],this.m[5])}; -MatrixTransform.prototype.toCSSTransform=function(){return"matrix("+this.val(0)+","+this.val(1)+","+this.val(2)+","+this.val(3)+","+this.val(4)+","+this.val(5)+")"};MatrixTransform.prototype.val=function(a){return Math.round(100*this.m[a])/100};MatrixTransform.prototype.getRotation=function(){var a=this.transformPoint(0,0),b=this.transformPoint(1,0);return Math.atan2(b.y-a.y,b.x-a.x)};var Element=function(){this.ref=this.container=null;this.events=[];this.actionGroups={};this.variables={};this.states={};this.parent=null;this.children={};this.isDisabled=!1;this.log=[];this.absoluteId=""};Element.prototype.objectType="Element";Element.prototype.innerType="Element";Element.PixelSrc="data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="; -Element.prototype.childItems=function(){var a=[];$.each(this.children,function(b,c){"Item"==c.objectType&&a.push(c)});return a};Element.prototype.findDescendantById=function(a){var b=null,c;for(c in this.children){var d=this.children[c];!b&&d.id==a&&(b=d);!b&&d.findDescendantById&&(b=d.findDescendantById(a))}return b}; -Element.prototype.hasDescendantByType=function(a){var b=!1,c;for(c in this.children){var d=this.children[c];!b&&d.innerType.toLowerCase()==a.toLowerCase()&&(b=!0);!b&&d.hasDescendantByType&&(b=d.hasDescendantByType(a))}return b};Element.prototype.getDescendantsByType=function(a){var b=[],c;for(c in this.children){var d=this.children[c];"Storyline"==this.innerType&&"Slide"==d.innerType||(d.innerType.toLowerCase()==a.toLowerCase()&&b.push(d),d.getDescendantsByType&&(b=b.concat(d.getDescendantsByType(a))))}return b}; -Element.prototype.isAncestor=function(a){for(var b=this.parent;b;){if(a==b)return!0;b=b.parent}return!1};Element.prototype.findAncestorOfType=function(a){for(var b=this;b;){if(b.innerType==a)return b;b=b.parent}return null};Element.prototype.eachAncestor=function(a){for(var b=this.parent;b;)a(b),b=b.parent}; -Element.prototype.getFullObjref=function(a){var b=this.absoluteId;if(0>=this.absoluteId.length)b=this.parent&&this.parent.id&&this.parent.getFullObjref?this.absoluteId=this.parent.getFullObjref()+"."+this.id:this.id;a&&(b="_player."+b);return b};Element.prototype.getFullVariableRef=function(a){a=this.parseObjref(a);return"_player."+a.target.getFullObjref()+"."+a.variable}; -Element.prototype.restoreVariableResumeData=function(a){for(var b=$(this.xml).children("variables").children("[resume='true'][type='boolean']"),c=$(this.xml).children("variables").children("[resume='true'][type!='boolean']"),a=new bwChunk(a),d=0;!a.EOF();)for(var e=a.NextUBase10(1),f=1;f<=e;)e&f&&(d
"),g.ref.append(g.scrollKeeper); -var m=5,n=function(){if(g&&g.scrollKeeper&&g.ref&&(g.scrollKeeper.css("top",l),g.ref.get(0).scrollTop=l,clearTimeout(player.retrySetScrollTimeout),g.ref.get(0).scrollTop!=l&&0g;m="greater than";break;case "gte":l=k>=g;m="greater than or equal to"; -break;case "lt":l=k");this.webobject.attr("src",$(a).attr("url"));this.webobject.attr("width",$(a).attr("width"));this.webobject.attr("height",$(a).attr("height"));this.webobject.css("left",$(a).attr("xpos")+"px");this.webobject.css("top",$(a).attr("ypos")+"px");this.webobject.css("z-index",this.depth); -b.ref.append(this.webobject);this.webobject.show()};Element.prototype.destroyWebobjects=function(){if(this.webobject)this.webobject.remove(),this.webobject=null}; -Element.prototype.open_url=function(a){var b=$(a).attr("url"),c=$(a).attr("window"),d=$(a).attr("windowsize");$(a).attr("usedefaultcontrols");var e="true"==$(a).attr("status")?1:0,f="true"==$(a).attr("toolbar")?1:0,g="true"==$(a).attr("location")?1:0,h="true"==$(a).attr("menubar")?1:0,j="true"==$(a).attr("scrollbars")?1:0,k="true"==$(a).attr("resizable")?1:0,l=parseInt($(a).attr("width")),a=parseInt($(a).attr("height")),e="location="+g+",menubar="+h+",resizable="+k+",status="+e+",scrollbars="+j+",toolbar="+ -f;switch(d){case "fullscreen":e+=",width="+(screen.width-33)+",height="+(screen.height-150);break;case "custom":e+=",width="+l+",height="+a}story.popWindow=window.open(b,c,e);story.popWindow&&story.popWindow.focus&&story.popWindow.focus()}; -Element.prototype.exe_animation=function(a){var b=this.parseObjrefFromXML(a).target,c=$(a).attr("id"),a="true"==$(a).children("reverse").attr("value"),d=b.animations[c];EventLogger.logNote("exe_animation:"+c+", "+b.id);c=player;if(b.slide)c=b.slide;if(b.layer)c=b.layer;d.start(b.ref,a,c)}; -Element.prototype.slideY=function(){for(var a=0,b=this;b&&!isNaN(b.y);)a+=parseInt(b.y),!isNaN(b.yoffset)&&b!=this&&(a+=b.yoffset),"ScrollArea"==b.innerType&&b.ref&&b.ref.get(0)&&b.ref.get(0).scrollTop&&(a-=parseInt(b.ref.get(0).scrollTop)),b=b.parent;return parseInt(a)}; -Element.prototype.slideX=function(){for(var a=0,b=this;b&&!isNaN(b.x);)a+=parseInt(b.x),!isNaN(b.xoffset)&&b!=this&&(a+=b.xoffset),"ScrollArea"==b.innerType&&b.ref&&b.ref.get(0)&&b.ref.get(0).scrollLeft&&(a-=parseInt(b.ref.get(0).scrollLeft)),b=b.parent;return parseInt(a)}; -Element.prototype.testOver=function(a,b){var c=this.matrix.unTransformPoint(a+this.xoffset,b+this.yoffset),c=0<=c.x&&c.x<=this.width&&0<=c.y&&c.y<=this.height;return this.nearestScrollAreaAncestor&&this.nearestScrollAreaAncestor.hasScrollBars()&&this.nearestScrollAreaAncestor.matrix.unTransformPoint(a,b).x+18>this.nearestScrollAreaAncestor.width?!1:c}; -Element.prototype.deepEach=function(a,b,c){isNaN(c)&&(c=0);for(var d in this.children){var e=this.children[d];if(e&&(!b||b(e)))a(d,e,c),e.deepEach&&e.deepEach(a,b,c+1)}};Element.prototype.getAbsoluteMatrix=function(){for(var a=this.matrix.copy(),b=this.offsetParent,c=0;b&&b.matrix&&10>c++;)a.multiply(b.matrix),b=b.offsetParent;return a}; -Element.prototype.updateMatrixComplete=function(a){this.offsetParent&&this.offsetParent.updateMatrixComplete&&this.offsetParent.updateMatrix&&this.offsetParent.updateMatrixComplete(!1);this.updateMatrix();a&&this.deepEach(function(a,c){c.matrix&&(c.isStageItem||"Slide"==c.innerType)&&c.updateMatrix()})}; -Element.prototype.performGoToPlay=function(a,b){var c=!0;DragItem.cancelDrag();$(document.body).removeClass("pointercursor");"Scene"==b.innerType&&(b=b.getFirstSlide());if("SlideDraw"==b.innerType){var d=b,b=d.getFirstSlide();d.parent.compactResumeData=d.parent.getResumeData()}if("Slide"==b.innerType){d=!0;"_current"!=a&&(b.variables.WindowId=a);if("_current"!=a&&"_frame"!=a){TimelineAction.actparams._ActTargetWindow=a;player.pause();var e=story.parseObjref(a).target,d=e==player.currentWindow;e.showSlide(b)}else"_current"== -a&&null!=player.currentWindow?(TimelineAction.actparams._ActTargetWindow=player.currentWindow.getFullObjref(!0),player.pause(),player.currentWindow.showSlide(b)):(player.currentSlide()&&player.currentSlide(),e=player.currentSlide()==b,d=null==player.currentWindow,TimelineAction.actparams._ActTargetWindow="_frame",player.currentWindow=null,player.windowZoomModifier=1,e&&player.currentSlide().resetSlide(),player.showSlideIndex(b.slideIndex,null,!0,function(){player.pause();player.zoomParams=null;player.play()})); -d&&(c=!1)}return c};var Storyline=function(a){this.container=a;this.scenes=[];this.allSlides=[];this.slideLookup={};this.media=[];this.startingslide=null;this.quizzes={};this.timers={};this.pathlibs={};this.properties={};this.currentSceneIndex=0;this.constructElement()};Storyline.prototype=new Element;Storyline.prototype.objectType="Storyline";Storyline.prototype.innerType="Storyline"; -Storyline.prototype.saveToLocalStorage=function(){if(player.hasAdvanced)if(player.useCompactResume){var a=story.toResumeData();try{localStorageAlias[story.resumeID]=a}catch(b){}}else a=JSON.stringify(story.toData(!0)),localStorageAlias[story.resumeID]=a};Storyline.prototype.clearLocalStorage=function(){localStorageAlias.removeItem(story.resumeID)}; -Storyline.prototype.toResumeData=function(){var a="";if(0==player.history.length&&null==player.currentWindowSlide&&!player.hasAdvanced)return"";var b="",c=0;$.each(this.allSlides,function(a,d){d.variables.Visited&&d.trackviews&&(b+=bwChunk.UBase10toN(d.slideIndexForResume,2),c++)});1==c&&(b="");var a=a+bwChunk.CreateChunk(b),d="",e=Window.getWindowResumeData(0,story.allSlides[player.slideIndex],player.history),d=d+bwChunk.CreateChunk(e),f=0;$.each(this.children,function(a,b){if("Window"==b.innerType&& -(f++,b.visible)){var c=Window.getWindowResumeData(f,player.currentWindowSlide,b.history);d+=bwChunk.CreateChunk(c)}});var a=a+bwChunk.CreateChunk(d),e=story.getVariableResumeData(),a=a+e,g="";$.each(this.children,function(a,b){if("Scene"==b.innerType){var c=bwChunk.EMPTY_CHUNK;if(b.compactResumeData)c=b.compactResumeData;g+=c}});var a=a+g,h="";$.each(this.quizzes,function(a,b){h+=bwChunk.CreateChunk(b.GetResumeData())});var a=a+h,j="";$.each(this.timers,function(a,b){j+=bwChunk.CreateChunk(b.GetResumeData())}); -a+=j;e=bwChunk.UBase10toN(a.length);return a=bwChunk.CreateChunk(e)+a}; -Storyline.prototype.updateFromCompactData=function(a){var a=new bwChunk(a),b=a.Remainder(),c=bwChunk.UBaseNto10(a.Data());if(b.length!=c)return!1;a=a.NextChunk();c=a.NextChunk();b=new bwChunk(c.Data());c=c.NextChunk();story.restoreVariableResumeData(c.Data());c.Remainder();for(var c=c.NextChunk(),d=0,e=story.getDescendantsByType("Scene");!c.isNothing&&d

Title


");a.css("width",this.width);a.css("height",this.height);a.css("margin","auto");a.addClass(this.id);this.contentRef=a.children("div").first();this.titleRef=a.children("h1").first();this.isPrompt&&a.addClass("prompt");switch(this.align){case "center":a.css("left","50%"),a.css("margin-left",-this.width/2)}switch(this.valign){case "center":a.css("top","50%"),a.css("margin-top", --this.height/2)}$("#slidecontainer").append(a);this.ref=a;this.ref.hide()}; -Window.prototype.prepareLightbox=function(){var a=$(".frameInterstitial");0==a.length&&(a=$("
"),$(".framewrap").prepend(a));$(document.body).append($(".window.prompt"));if(!this.lightboxPrepared){$(document.body).append(this.ref);this.ref.addClass("lightbox");this.contentRef.css("width",this.width);this.contentRef.css("height",this.height);this.closeIcon=$("
x
");this.closeIcon.css("left",0.85*player.width-10+"px");this.ref.append(this.closeIcon); -var b=this;this.closeIcon.click(function(){b==player.currentWindow&&b.close()});this.lightboxPrepared=!0}}; -Window.prototype.prepareControls=function(){if(!(0"),$(".contentpane").append(Window.blocker);Window.blocker.show()}player.currentSlide().saveIfNecessary(); -player.currentWindowSlide&&(player.currentWindowSlide.saveIfNecessary(),player.currentWindowSlide.resetSlide());player.currentWindow=this;player.currentWindowSlide=a;this.ref.show();a.currentTime=0;a.createRef();this.appendSlide(a);a.ref.show();a.visible=!0;a.variables.WindowId=this.id;a.variableDefaults.WindowId=this.id;player.updateViewCount(a);a.update(0,!0);!b&&player.currentWindow&&player.currentWindowSlide&&player.currentWindow.history.push(player.currentWindowSlide.slideIndex);this.visible= -!0;if(this.isLightbox)c=$(".frameInterstitial"),c.addClass("dark"),c.show(),player.showingInterstitial=!0;player.currentSlide().handleEvent("ontransitionin",null,null,!1,!0);player.currentSlide().handleEvent("ontransitionincomplete",null,null,!1,!0);player.currentSlide().handleEvent("onslidestart");player.currentSlide().deepEach(function(a,b){b.handleEvent&&b.handleEvent("onslidestart",null,null,!1,!0)});this.previousTimeline=player.activeTimeline;player.pause();player.currentTime=0;a.transitionedIn= -!1;player.play(!1,!0,!1);if(player.hasShownFirstSlide)player.hasAdvanced=!0;player.hasShownFirstSlide=!0;story.saveToLocalStorage();player.windowZoomModifier=this.zoomModifier;a.fitToContainer();player.windowZoomModifier=this.zoomModifier}};var ResumePrompt=function(){this.xml="";this.constructElement();this.selected=!1};ResumePrompt.prototype=new Window;ResumePrompt.prototype.objectType="ResumePrompt";ResumePrompt.prototype.innerType="ResumePrompt"; -ResumePrompt.prototype.createRef=function(){var a=this,b=$("

Resume

Would you like to resume where you left off?

YesNo
");this.contentRef=b.children("p").first();this.titleRef=b.children("h1").first();this.suppressRef=$("
");$(document.body).append(b);this.ref=b;var c=b.find(".yes"),d=b.find(".no");b.find(".button").bind("mousedown touchstart",function(){$(this).addClass("pressed")}); -b.find(".button").bind("mouseup touchend mouseout",function(){$(this).removeClass("pressed")});c.bind("click",function(){a.slide.children.btn0.handleEvent("onrelease",null,null,!1,!1,!0);$(".interstitial").removeClass("resume");$(".interstitial").hide();$(".frameInterstitial").hide();player.showingInterstitial=!1});d.bind("click",function(){a.slide.children.btn1.handleEvent("onrelease",null,null,!1,!1,!0);$(".interstitial").removeClass("resume");$(".interstitial").hide();$(".frameInterstitial").hide(); -player.showingInterstitial=!1});this.ref.hide()};ResumePrompt.prototype.appendSlide=function(a){this.slide&&this.slide.ref.remove();this.slide=a;this.suppressRef.append(a.ref);this.titleRef.html($(a.title).text());setTimeout(function(){a.ref.find(".item_ResumePromptSlide_Text").text();$(".interstitial").removeClass("black");$(".interstitial").addClass("resume");$(".interstitial").show();player.showingInterstitial=!0},1)};var Scene=function(){this.slides=[];this.slideDraws=[];this.constructElement()};Scene.prototype=new Element;Scene.prototype.objectType="Scene";Scene.prototype.innerType="Scene"; -Scene.prototype.restoreFromResumeData=function(a){var b=this.getDescendantsByType("Slide"),c=[];$.each(b,function(a,b){b.resume&&c.push(b)});b=new bwChunk(a);this.restoreVariableResumeData(b.Data());for(var b=b.NextChunk(),d=0,e=0;!b.isNothing;){if(d>=c.length){var f=this.slideDraws[e];f&&f.restoreFromResumeData(b.Data());e++}else f=c[d],f.compactResumeData=b.ChunkData(),f.restoreFromResumeData(b.Data(),!0);b=b.NextChunk();d++}this.compactResumeData=bwChunk.CreateChunk(a)}; -Scene.prototype.getResumeData=function(){var a;a=""+this.getVariableResumeData();var b="";$.each(this.children,function(a,c){c.compactResumeData?b+=c.compactResumeData:c.resume&&(b+=bwChunk.EMPTY_CHUNK)});var c="";$.each(this.children,function(a,b){if("SlideDraw"==b.innerType){if(!b.compactResumeData)b.compactResumeData=b.getResumeData();c+=b.compactResumeData||"0"}});b+=c;return bwChunk.CreateChunk(a+b)}; -Scene.prototype.getFirstSlide=function(){for(var a=0;a=this.duration)&&(this.startPosition=this.currentPosition,this.startTime=new Date,this.render(),!this.interval))this.interval=setInterval(function(){a.tick()},100)};Timer.prototype.pause=function(){if(this.interval)clearInterval(this.interval),this.interval=null}; -Timer.prototype.tick=function(){this.currentPosition=this.startPosition+(new Date-this.startTime);if(this.currentPosition>this.duration)this.currentPosition=this.duration,this.pause(),this.handleEvent("timercomplete");this.updateText();this.render()}; -Timer.prototype.createRef=function(){if(!this.ref)this.ref=$("
"),this.captionRef=$(this.ref.get(0)),this.canvasRef=$(this.ref.get(1)),player.isIOSFrame?$(document.body).append(this.ref):$(".framewrap").append(this.ref),this.context=this.canvasRef.get(0).getContext("2d")}; -Timer.FormatMS=function(a){var b=Math.floor(a/1E3%60),c=Math.floor(a/1E3/60%60),a=Math.floor(a/1E3/60/60);return 0'):$('
'),this.ref.css("display","none"),this.ref.attr("runningindex",Slide.runningIndex++),this.background&&this.background.apply(this.ref),this.ref.get(0).id="slide_"+this.id,this.ref.get(0).item=this,this.fitToContainer(),$.each(this.children,function(a,c){c.createRef&&c.createRef()}), -this.container.append(this.ref),this.ref.css("width",this.width+"px"),this.ref.css("height",this.height+"px"),player.reorient(!0)}; -Slide.prototype.fitToContainer=function(){var a=player.frame.availableSlideWidth,b=player.frame.availableSlideHeight;if(player.currentWindow&&player.currentWindowSlide==this)a=player.currentWindow.width,b=player.currentWindow.height,player.currentWindow.isPrompt||(b=player.currentWindow.height-40);else if(player.currentFramedSlide==this||this.offsetParent&&"SlideFrame"==this.offsetParent.innerType)a=this.offsetParent.width,b=this.offsetParent.height;this.scale=1;if((this.width>a||this.height>b)&& -(!this.offsetParent||"SlideFrame"!=this.offsetParent.innerType||this.offsetParent.scalecontents))this.scale=Math.min(a/this.width,b/this.height);if(player.currentWindowSlide==this)player.currentWindow.zoomModifier=1;if(0.02>Math.abs(this.scale-1))this.scale=1;if(player.forceSlideScale)this.scale=player.forceSlideScale;this.y=this.x=0;if(this.width*this.scalea.currentTime)&&c.act(!1,!0)}this.deepEach(function(b,c){"video"==c.innerType&&!c.autoplay&&c.controllableFromTimeline&&!c.getIsPlaying()&&!(c.slide!=a&&c.slide!=player.currentFramedSlide)&&c.playClip()})};Slide.prototype.pause=function(a){this.paused=!0;this.playing=!1;this.pauseClips(a)}; -Slide.prototype.tick=function(){if(this.paused)this.tickPresenter();else if(!this.animating||this.animationEnded){this.currentTime+=player.currentTickDuration;this.ended=!1;if(this.currentTime>=this.duration)this.handleEvent("ontimelinecomplete"),player.layerPlaying||this.handleEvent("onallopentimelinescomplete"),this.currentTime=parseInt(this.duration),this.pause(!0,!1),this.endedAnimationTime=player.animationTime,this.ended=!0;this.tickPresenter()}}; -Slide.prototype.tickPresenter=function(){this.presenter&&this.presenter.tick(this)}; -Slide.prototype.update=function(a,b,c){this.currentTime=a;if(this.loadedChunkXML){for(;1=parseInt(this.currentTime);)this.currentIndex--,this.timelineEvents[this.currentIndex].revert(a);for(;this.currentIndex -a.time+1E3),this.currentIndex++;this.handleTransitionIn();this.updateLayers()}};Slide.prototype.playIntroMedia=function(){var a=this.timelineEvents[0];$.each(a.actions,function(b,c){("media_play"==c.type||"media_seek"==c.type||"media_toggle"==c.type)&&c.act(a,null,!1,!1,!1);"show"==c.type&&c.getItem()&&"video"==c.getItem().type&&c.act(a,null,!1,!1,!1)});this.playing=!0;this.paused=!1};Slide.prototype.tickLayers=function(){$.each(this.layers,function(a,b){b.visible&&!b.paused&&(b.currentTime+=player.currentTickDuration)})}; -Slide.prototype.updateLayers=function(){$.each(this.layers,function(a,b){b.visible&&b.update()})};Slide.prototype.handleTransitionIn=function(){if(!this.transitionedIn&&this.visible)this.transitionedIn=!0,this.handleEvent("ontransitionin",null,null,!1,!0),this.handleEvent("ontransitionincomplete",null,null,!1,!0),this.handleEvent("onslidestart"),this.deepEach(function(a,b){b.handleEvent&&b.handleEvent("onslidestart",null,null,!1,!0)})}; -Slide.prototype.handleTransitionOut=function(){if(this.transitionedIn)this.transitionedIn=!1,this.handleEvent("ontransitionout",null,null,!1,!0),this.handleEvent("ontransitionoutcomplete",null,null,!1,!0)};Slide.prototype.getQuiz=function(){var a=null;null!=this.quiz?a=this.quiz:null!=this.slideBank&&(a=this.slideBank.getQuiz());return a}; -Slide.prototype.addchoiceresponse=function(a){var b=this.children[$(a).attr("interactionid")],a=$(a).attr("value"),c=this.extractVariable(a)||"true",d=b.parseObjref(a).target;"Choice"!=d.innerType&&$.each(b.choices,function(a,b){b.lmstext.toLowerCase()==c.toLowerCase()&&(d=b)});b.m_bAnswered=!0;"Choice"==d.innerType?(b.responses[a]=d,b.lmsResponses.push(new ResponseData(!1,d.id,"",d.lmstext,"")),d.selected=!0):(b.variables.Value=c,a=b.parseObjref(c).target,"Choice"==a.innerType?(a.selected=!0,b.lmsResponses.push(new ResponseData(!1, -a.id,"",a.lmstext,""))):b.lmsResponses.push(new ResponseData(!1,c,"",c,"")))}; -Slide.prototype.addpairresponse=function(a){var b=this.children[$(a).attr("interactionid")],c=this.extractVariable($(a).attr("valuea"),$(a).attr("typea")),d=this.extractVariable($(a).attr("valueb"),$(a).attr("typeb"));if(c&&d)switch(a=b.parseObjref(c).target,d=b.parseObjref(d).target,a.addPair&&d.addPair&&(a.addPair(d),d.addPair(a)),b.interactionType){case "matching":case "sequence":case "likert":b.lmsResponses.push(new ResponseData(!0,d.id,a.id,d.lmstext,a.lmstext))}else b.parseObjref($(a).attr("valueb")); -b.m_bAnswered=!0};Slide.prototype.show_slidelayer=function(a){var b=this.parseObjrefFromXML(a).target,c=new Transition(b);c.loadFromXML(a);b.show(c);b.update(0)};Slide.prototype.set_frame_layout=function(a){player.currentSlide()==this||player.currentFramedSlide==this&&null==player.currentWindowSlide?player.frame.set_frame_layout(a):this.offsetParent&&this.offsetParent.slide&&"_frame"!=this.offsetParent.slide.variables.WindowId?this.set_window_control_layout(a):this.deferredFrameLayoutXML=a}; -Slide.prototype.set_window_control_layout=function(a){player.frame.set_window_control_layout(a)};Slide.prototype.isPointActive=function(){return!1};Slide.prototype.isPointObscured=function(){return!1};Slide.prototype.notifySelected=function(a){$("ul.menu_list li").removeClass("selected");$("ul.slidelist li").removeClass("selected");$.each(this.navLinks,function(b,c){c.actionlinkid==a&&$.each(c.listitems,function(a,b){b.addClass("selected")})});player.slideList.scrollSelectedIntoView()}; -Slide.prototype.simplify=function(a){var b=this.childItems(),c=$('');c.attr("width",player.width);c.attr("height",player.height);var d=c.get(0).getContext("2d");this.ref.prepend($(c));var e=0,f=0,g=!1,h=!0;$.each(b,function(a,b){if(player.renderVectorShapes&&player.renderVectorsAsSVG&&b.content.path)b.canSimplify=!1;if(player.renderVectorShapes&&(b.hasImagelib||b.hasTextlib))b.canSimplify=!1;b.canSimplify&&h&&!b.group?f++:(h=!1,b.canSimplify=!1)});var j=function(b, -c,d,h){g=!0;var j=function(){e++;if(e==f)l(),$(t).unbind("load"),t.src=Element.PixelSrc,a&&a()},t=new Image;$(t).bind("load",function(){j()});$(t).bind("error",function(){j()});player.renderVectorShapes&&!player.renderVectorsAsSVG&&h&&h.content.path&&!h.hasImagelib&&!h.hasTextlib?e++:t.src=b;k.push({img:t,x:c,y:d,item:h})},k=[],l=function(){$.each(k,function(a,b){if(player.renderVectorShapes&&!player.renderVectorsAsSVG&&b.item&&b.item.content.path&&!b.item.hasImagelib&&!b.item.hasTextlib){var e={canvas:c.get(0), -m_nXOffset:b.x,m_nYOffset:b.y,m_nWidth:b.item.width,m_nHeight:b.item.height};ppArt.DrawVector(e,b.item.content.path);b.item.ref.addClass("vector")}else d.drawImage(b.img,b.x,b.y)})};this.background&&this.background.src&&(f++,j(this.background.src,0,0),this.ref.css("background","transparent"));$.each(b,function(a,b){if(b.canSimplify)j(b.content.src,b.x,b.y,b),b.ref.addClass("simplified"),b.simplified=!0,b.ref.attr("src",Element.PixelSrc),b.ref.css("background","transparent"),b.hasEvents||b.ref.remove(), -g=!0});a&&!g&&a()};Slide.prototype.pauseClips=function(a){var b=this;this.paused=!0;$.each(this.clips,function(b,d){if(d.ref&&!a){d.pauseClip();if(d.scheduled&&player.scheduledMediaSrc==d.content.src)clearTimeout(player.mediaTimeout),player.scheduledMediaSrc=null;d.justPaused=!0;setTimeout(function(){d.justPaused=!1},100)}});$.each(player.webAudioClips,function(a,d){d.slide==b&&d.pauseClip()})}; -Slide.prototype.isSubmitted=function(){var a=!0;$.each(this.interactions,function(b,c){a=a&&(c.skipEnabled||c.variables.Status&&"incomplete"!=c.variables.Status&&void 0!=c.variables.Points)});return a};Slide.prototype.isAnswered=function(){var a=!0;$.each(this.interactions,function(b,c){a=a&&(c.m_bAnswered||c.skipEnabled)});return a};Slide.prototype.Viewed=function(){return this.variables.Visited?"true":"false"}; -Element.prototype.forceRepaint=function(a){if((!a||player.isIOS)&&this.ref&&"block"==this.ref.css("display"))a=this.ref.get(0),this.ref.hide(),player.uselessOffsetHeight=a.offsetHeight,this.ref.show()};var StageItem=function(a){this.container=a;this.ref=null;this.constructElement();this.dirty=!0;this.destroyed=this.actionMoved=this.actionControlled=!1;this.content={}};StageItem.prototype=new Element;StageItem.prototype.objectType="Item";StageItem.prototype.innerType="Item";var Item=StageItem;StageItem.prototype.isStageItem=!0; -StageItem.prototype.getItemIndex=function(){var a=this,b=0,c=-1;if(this.itemIndex)return this.itemIndex;(this.layer||this.slide).deepEach(function(d,e){e.isStageItem&&"ShuffleGroup"!=e.innerType&&(e==a&&(c=b),b++)},function(a){return"Layer"==a.innerType?!1:!0});return this.itemIndex=c}; -StageItem.prototype.getItemByResumeIndex=function(a){var b=0,c=null;(this.layer||this.slide).deepEach(function(d,e){e.isStageItem&&"ShuffleGroup"!=e.innerType&&(b==a&&(c=e),b++)},function(a){return"Layer"==a.innerType?!1:!0});return c};StageItem.FlagProperties={FLAG_STATE:1,FLAG_VARIABLE:2,FLAG_ONSTAGE:4,FLAG_DRAG_DROP:8,FLAG_USE_ANIMATION_FLAG:16,FLAG_DEPTH:32,FLAG_SHUFFLED:64,FLAG_ACTION_MOVED:128,FLAG_ACTION_CONTROLLED:256,FLAG_DISABLED:512,FLAG_REVIEW:1024,FLAG_MOUSE_OVER:2048}; -StageItem.FlagTween={FLAG_TWEEN_POSITION:1,FLAG_TWEEN_SCALE:2,FLAG_TWEEN_ROTATION:4,FLAG_TWEEN_ALPHA:8,FLAG_TWEEN_COLOR_TRANSFORMS:16,FLAG_TWEEN_COLOR_MATRIXES:32}; -StageItem.prototype.restoreFromResumeData=function(a){var b=StageItem.FlagProperties,a=new bwChunk(a),c=a.NextUBase10(2);if(c&b.FLAG_STATE){var d=a.NextUBase10(2),e="";$.each(this.states,function(a,b){b.index==d&&(e=a)});this.variables.ObjectState=e}c&b.FLAG_ONSTAGE?this.quickShow?this.quickShow():(this.show(),this.visible=!0):"ShuffleGroup"!=this.innerType&&(this.quickHide?this.quickHide():this.hide());if(c&b.FLAG_DRAG_DROP){var f=a.NextUBase10(2);a.NextUBase10(1);if("wordbank"==this.style)this.parent= -this.slide;if((f=this.getItemByResumeIndex(f))&&f.isDropArea)this.dropArea=f}if(c&b.FLAG_DEPTH)f=a.NextUBase10(2),this.ref?this.setZIndex(f):this.depth=f;if(c&b.FLAG_SHUFFLED){this.shuffled=!0;if(this.shuffleGroup)this.shuffleGroup.shuffled=!0;var f=a.NextBase10(2),g=a.NextBase10(2);this.shuffleX=f;this.shuffleY=g}if(c&b.FLAG_DISABLED)this.isDisabled=!0;f=a.Remainder();f=c&b.FLAG_VARIABLE?this.restoreVariableResumeData(a.NextString()):a.NextString();c&b.FLAG_USE_ANIMATION_FLAG&&this.SetAnimationResumeData(f); -if(c&b.FLAG_SHUFFLED&&!this.resumePositioned)this.x=this.shuffleX,this.y=this.shuffleY;if(c&b.FLAG_MOUSE_OVER)this.isMouseOver=!1,this.handleEvent("onrollout",null,null,!1,!1,!0)}; -StageItem.prototype.SetAnimationResumeData=function(a){var b=StageItem.FlagTween,a=new bwChunk(a),c=a.Data();if(""!=c){var d=bwChunk.UBaseNto10(c.charAt(0)),c=c.substr(1);this.resumePositioned=!1;if(d&b.FLAG_TWEEN_POSITION){this.resumePositioned=!0;this.x=bwChunk.BaseNto10(c.substr(0,2));this.y=bwChunk.BaseNto10(c.substr(2,2));var e=bwChunk.UBaseNto10(c.substr(4,2));switch(e){case 4094:break;case 4095:this.parent=this.slide;break;default:this.originalParent=this.parent,this.parent=this.getItemByResumeIndex(e)}c= -c.substr(6)}if(d&b.FLAG_TWEEN_SCALE)this.scaleX=bwChunk.BaseNto10(c.substr(0,2))/100,this.scaleY=bwChunk.BaseNto10(c.substr(2,2))/100,c=c.substr(4);if(d&b.FLAG_TWEEN_ROTATION)this.rotation=bwChunk.BaseNto10(c.substr(0,2)),c=c.substr(2);if(d&b.FLAG_TWEEN_ALPHA)this.alpha=bwChunk.UBaseNto10(c.substr(0,2))/100,c.substr(2)}return a.Remainder()}; -StageItem.prototype.GetResumeData=function(a){var b=StageItem.FlagProperties,c="",d="";if(this.resume||a){var e=this.shouldStoreVariableResume(),a=this.originalZ&&this.depth!=this.originalZ,f=0,g=this.x,h=this.y,g=this.shuffled&&(g!=this.shuffleX||h!=this.shuffleY)||!this.shuffled&&!isNaN(this.originalX)&&(g!=this.originalX||h!=this.originalY);if(this.variables.ObjectState!=bwUtils.DEFAULT_STATE){var j=(h=this.states[this.variables.ObjectState])?h.index:0;!h&&this.actionstates&&this.actionstateindices&& -(h=this.actionstates[this.variables.ObjectState],j=this.actionstateindices[this.variables.ObjectState]||0);0<=j&&(f+=b.FLAG_STATE,d+=bwChunk.UBase10toN(h.index,2))}e&&(f+=b.FLAG_VARIABLE);this.visible&&(f+=b.FLAG_ONSTAGE);this.dropArea&&(h=this.dropArea.getItemIndex(),j=this.dropArea.getDragItemIndex(this),-1"+b+""),b))this.textTemplate=b=b.replace(/size='(.*?)(pt|)'/ig,"style='font-size:$1pt'"),this.textTemplateHeight=parseInt(this.textlib.children("textdata").attr("height")), -this.textTemplateWidth=parseInt(this.textlib.children("textdata").attr("width"));this.loadMaskFromXML(a)};StageItem.prototype.loadMaskFromXML=function(a){a=$(a).children("mask");if(0this.width)this.width=b;if(c>this.height)this.height=c}this.originalX=this.x;this.originalY=this.y;this.originalXOffset=this.xoffset;this.originalyOffset=this.yoffset;this.rotatexpos=Math.round($(a).attr("rotatexpos"))||0;this.rotateypos=Math.round($(a).attr("rotateypos"))||0;this.rotation=parseInt($(a).attr("rotation"))||0;this.xscale=parseInt($(a).attr("xscale"))||0;this.yscale=parseInt($(a).attr("yscale"))||0;this.depth=parseInt($(a).attr("depth"))|| -1;if(0==this.depth)this.depth=1;this.originalZ=this.depth;if(this.depth>this.slide.topZ)this.slide.topZ=this.depth};StageItem.prototype.createResource=function(a,b,c){b=new Resource(this,b,function(){c&&c()});if(!a.resources)a=a.slide;a.pushResource(b);this.resources.push(b);return b}; -StageItem.prototype.createRef=function(){if(!this.destroyed)if(this.parent.ref||this.parent.createRef(),this.container=this.parent.ref,this.ref)this.render(null,!1,null,"StageItem createRef");else{this.ref=$('
');this.ref.addClass(this.type);this.ref.addClass(this.innerType.toLowerCase());this.ref.addClass("item_"+this.id);this.ref.get(0).id=this.getFullObjref();player.showItemInfo&&this.ref.append($('
'+this.id+"
"));this.applySize(this.ref);"dragitem"== -this.innerType&&this.setZIndex(this.depth);this.container.append(this.ref);this.ref.get(0).item=this;"video"!=this.type&&"audio"!=this.type&&this.bindEvents();for(var a in this.children){var b=this.children[a];b.createRef&&b.createRef()}this.initDrag&&(this.initDrag(),this.convertRefToDragItem());("DropArea"==this.innerType||this.isDropArea)&&this.ref.addClass("droparea");this.announceDragOver&&this.ref.addClass("dragover");this.applyMaskRectangle();this.visible=!1;this.nearestScrollAreaAncestor= -this.findAncestorOfType("ScrollArea")}};StageItem.prototype.setInteractive=function(){this.ref.addClass("interactive");this.parent.setInteractive&&this.parent.setInteractive()};StageItem.prototype.setZIndex=function(a){if(!("Layer"==this.innerType||"ExpandingLabel"==this.innerType)){for(var b in this.children){var c=this.children[b];if(c.depth>a)a=c.depth}this.ref.css("z-index",a);this.depth=a;this.parent&&this.parent.setZIndex&&this.parent.setZIndex(a)}}; -Element.prototype.updateMatrix=function(){this.matrix.reset();"ScrollArea"==this.innerType&&this.ref&&0!=this.ref.get(0).scrollTop&&this.matrix.translate(0,-this.ref.get(0).scrollTop);"sequencectrl"==this.innerType&&this.ref&&0!=this.ref.get(0).scrollTop&&this.matrix.translate(0,-this.ref.get(0).scrollTop);this.offsetParent&&!this.offsetParent.dragX&&!this.offsetParent.dragY&&(this.slide?this.matrix.translate(this.dragX*this.slide.scale||0,this.dragY*this.slide.scale||0):this.matrix.translate(this.dragX|| -0,this.dragY||0));this.offsetParent&&this.offsetParent.matrix&&this.matrix.multiply(this.offsetParent.matrix.copy());this.centerpoint={x:this.rotatexpos-this.xoffset,y:this.rotateypos-this.yoffset};this.matrix.translate(this.x+this.xoffset+this.centerpoint.x,this.y+this.yoffset+this.centerpoint.y);this.matrix.rotateDegrees(this.rotation);this.matrix.translate(-this.centerpoint.x,-this.centerpoint.y);void 0!=this.scale&&this.matrix.scale(this.scale,this.scale);this.isRotated=this.parent&&this.parent.isRotated|| -0!=this.rotation}; -Element.prototype.applySize=function(a){this.updateMatrix();if(player.showMatrixDebug){if(!player.testCanvas)player.testCanvas=$(""),$("#slideframe").append(player.testCanvas),player.testContext=player.testCanvas.get(0).getContext("2d"),player.testContext.fillStyle="rgba(255,255,0,0.5)",player.testContext.fillStyle="rgba(0,0,0,0.5)",player.testContext.strokeStyle="rgba(0,255,0,0.5)";player.testContext.save(); -this.matrix.applyContext(player.testContext);player.testContext.strokeStyle="rgba(0,255,0,0.5)";player.testContext.strokeRect(0,0,this.width,this.height);this.getAABB();player.testContext.restore()}a.css("left",this.x+this.xoffset+"px");a.css("top",this.y+this.yoffset+"px");"Video"!=this.innerType&&(a.css("width",this.width+"px"),a.css("height",this.height+"px"));"Layer"!=this.innerType&&"ExpandingLabel"!=this.innerType&&0=Math.abs(a.x)&&1>=Math.abs(a.y)?(this.maskref=$("
"),this.maskref.css("width",a.width),this.maskref.css("height",a.height),this.maskref.css("left",a.x),this.maskref.css("top",a.y),this.maskref.css("z-index",this.depth),this.maskref.show(),this.parent.ref.append(this.maskref),this.maskref.append(this.ref)):(this.maskref=$("
"), -this.maskref.css("width",a.width),this.maskref.css("height",a.height),this.maskref.css("left",a.x),this.maskref.css("top",a.y),this.maskref.css("z-index",this.depth),this.maskref.show(),this.parent.ref.append(this.maskref),this.maskref.append(this.ref),this.maskTranslate="translate3d("+-a.x+"px, "+-a.y+"px, 0px) ",this.maskTranslateIE="translate("+-a.x+"px, "+-a.y+"px) ",this.ref.css("-webkit-transform",this.maskTranslate),this.ref.css("-moz-transform",this.maskTranslate),this.ref.css("-ms-transform", -this.maskTranslateIE));a.isShapeMask=!0;this.setZIndexBase=StageItem.prototype.setZIndex;this.setZIndex=function(a){this.setZIndexBase(a);this.maskref.css("z-index",this.depth)};this.deepEach(function(b,c){c.ancestorMaskShape=a})}};StageItem.prototype.mediaReady=function(){return this&&this.ref&&this.ref.get(0)&&(4==this.ref.get(0).readyState||document.all&&3==this.ref.get(0).readyState)?!0:!1}; -StageItem.prototype.shouldBindEvent=function(a){if(player.showItemInfo)return!0;var b=this,c=!1;$.each(b.events,function(d,e){if(e.trigger==a)c=!0;else{var f=b.parent;f&&f.shouldBindEvent&&!c&&(c=f.shouldBindEvent(a))}});return c}; -StageItem.prototype.bindStoryEvent=function(a,b,c){if(this.shouldBindEvent(b)){var d=this;this.ref.bind(a,function(a){"onrelease"==b&&player.updateItemInfo(d);var f=d.findDownstreamMedia();f&&f.prep();var g=function(f,g){$.each(f,function(f,h){if(h.trigger==b&&(!c||"function"!=typeof c||c(a)))h.act(d,!0),g=!1});return g},f=g(d.events,!0);d.group&&d.group.events&&d.group.events.length&&(f=g(d.group.events,f));return f})}}; -Element.prototype.prepDownstreamMedia=function(){var a=this.findDownstreamMedia();a&&a.prep&&a.prep()};Element.prototype.prepEventMedia=function(a){var b=this,c=[],d=0;$.each(b.events,function(e,f){f.trigger==a&&f.findDownstreamMedia(b,c,++d)});0c.textTemplateHeight;)g-=b,a(0,f)}var c=this,d=c.textTemplate,d=d.replace(/pt'/ig,"px'"),e=d.match(/\&(.*?);/g);e&&$.each(e,function(a,b){var e=b.replace(/\&|\$|;/g,""),f=c.extractVariable(e);if(null=== -f||"undefined"===typeof f)f="";!isNaN(parseFloat(f))&&isFinite(f)&&(f=Math.round(100*parseFloat(f))/100);d=d.replace(b,f);c.bindVarListener(e)});if(!c.contentRef)c.contentRef=c.ref;c.contentRef.empty();var f=$(d);f.css("font-weight","bold");if(!StageItem.contentSizer)StageItem.contentSizer=$("
"),$(document.body).append(StageItem.contentSizer);StageItem.contentSizer.css("width",c.textTemplateWidth);StageItem.contentSizer.append(f);var g=1;b(0.05);1>g&&(g+=0.05,a(0,f), -b(0.01));c.contentRef.append(f);c.contentRef.find("p").first().css("width",c.width);c.contentRef.find("p").first().css("height",c.height)};StageItem.prototype.getBitMask=function(){return this.lastRenderedState&&this.stateMasks&&this.stateMasks[this.lastRenderedState]?this.stateMasks[this.lastRenderedState]:this.bitMask};StageItem.prototype.fixRef=function(){if(!this.isState&&this.ref.get(0).id){var a=$("#"+this.ref.get(0).id);if(a.get(0)&&this.ref.get(0)!=a.get(0))this.ref=a}}; -StageItem.prototype.getAABB=function(){var a=this,b={left:5E3,top:5E3,right:-5E3,bottom:-5E3};$.each([[0,0],[this.width,0],[this.width,this.height],[0,this.height]],function(c,d){var e=a.matrix.transformPoint(d[0]-a.xoffset,d[1]-a.yoffset),f=e.x,e=e.y;if(fb.right)b.right=f;if(eb.bottom)b.bottom=e});player.showDebugOverlap&&player.testContext&&setTimeout(function(){player.testContext.strokeStyle="rgba(0,0,255,0.5)";player.testContext.strokeRect(b.left,b.top, -b.right-b.left,b.bottom-b.top)},0);return b}; -StageItem.prototype.getAABB_simple=function(){if(0==this.rotation){var a={};a.left=this.x+this.dragX;a.top=this.y+this.dragY;a.right=this.x+this.dragX+this.width;a.bottom=this.y+this.dragY+this.height;return a}var a={left:5E3,top:5E3,right:-5E3,bottom:-5E3},b=[[-this.width/2,-this.height/2],[this.width/2,-this.height/2],[this.width/2,this.height/2],[-this.width/2,this.height/2]],c=Math.cos(this.rotation*Math.PI/180),d=Math.sin(this.rotation*Math.PI/180);$.each(b,function(b,f){x=-f[0]*c+f[1]*d;y=f[0]* -d-f[1]*c;if(xa.right)a.right=x;if(ya.bottom)a.bottom=y});a.left+=this.x+this.dragX+this.rotatexpos;a.top+=this.y+this.dragY+this.rotateypos;a.right+=this.x+this.dragX+this.rotatexpos;a.bottom+=this.y+this.dragY+this.rotateypos;player.showDebugOverlap&&player.testContext&&setTimeout(function(){player.testContext.strokeStyle="rgba(0,0,255,0.5)";player.testContext.strokeRect(a.left,a.top,a.right-a.left,a.bottom-a.top)},0);return a}; -StageItem.prototype.testRotatedOverlap=function(a){var b=this.getAABB(),c=a.getAABB(),d,e,f,g;d=BitMask.max(b.left,c.left);e=BitMask.min(b.right,c.right);f=BitMask.max(b.top,c.top);g=BitMask.min(b.bottom,c.bottom);if(b.rightc.right||b.bottomc.bottom)return!1;if(player.showDebugOverlap){if(!player.testCanvas)player.testCanvas=$(""),$("#slideframe").append(player.testCanvas), -player.testContext=player.testCanvas.get(0).getContext("2d"),player.testContext.fillStyle="rgba(255,255,0,0.5)";player.testCanvas.show();clearTimeout(player.testCanvasClear);player.testCanvasClear=setTimeout(function(){player.testCanvas.hide()},1E3);if(!player.showDebugOverlapPersistent)player.testContext.clearRect(0,0,1E3,1E3),player.testContext.fillStyle="rgba(0,255,255,0.2)",player.testContext.fillRect(b.left,b.top,b.right-b.left,b.bottom-b.top),player.testContext.fillStyle="rgba(0,0,255,0.2)", -player.testContext.fillRect(c.left,c.top,c.right-c.left,c.bottom-c.top),player.testContext.strokeStyle="rgba(255,0,255,0.8)",player.testContext.strokeRect(d,f,e-d,g-f)}b=e-d;g=b*(g-f);for(c=0;c"),this.parent.ref.append(this.modalfence),this.modalfence.bind("click",function(){});player.modalLayer=b;this.modalfence.show()}a=b.slide.topMostLayer();a!= -b&&a.handleEvent("endtopmostlayer");util.popArrayElement(this.slide.layerStack,this);this.slide.layerStack.push(this);this.handleEvent("ontopmostlayer");this.depth=this.slide.topZ+1;this.slide.topZ=this.depth;if(this.visible&&this.resume)this.ref.css("display","block");else{if(!this.visible)this.currentIndex=this.currentTime=0;if(this.resume&&this.compactResumeData&&(this.restoreFromResumeData(this.compactResumeData),player.activeTimeline==this))player.activeTimeline.currentTime=this.currentTime; -this.visible=!0;this.paused=!1}};Layer.prototype.emptyLayer=function(){this.timelineEvents=[]}; -Layer.prototype.hide=function(a){if(this.visible){this.visible=!1;player.modalLayer=null;var b=this,c=function(){b.ref.css("display","none");b.handleEvent("ontransitionoutcomplete",null,null,!1,!0);$.each(b.clips,function(a,b){b.pauseClip()});b.modalfence&&b.modalfence.hide();b.destroyWebobjects();b.resume?b.compactResumeData=b.getResumeData():b.reset();b.slide.topMostLayer()==b&&b.handleEvent("endtopmostlayer");util.popArrayElement(b.slide.layerStack,b);0parseInt(this.duration)+100)){if(ProgressBar.getCurrentProgressBar().dragging&&player.currentClip)player.currentClip.currentTime=(player.activeTimeline.currentTime-player.currentClipStartTime)/1E3;if(player.activeTimeline==this)ProgressBar.getCurrentProgressBar().index=player.activeTimeline.currentTime,ProgressBar.getCurrentProgressBar().count=player.activeTimeline.duration,ProgressBar.getCurrentProgressBar().update(),this.paused?($(".controlbar-button").find(".play").show(), -$(".controlbar-button").find(".pause").hide()):($(".controlbar-button").find(".play").hide(),$(".controlbar-button").find(".pause").show());var a=null;$.each(this.clips,function(b,c){c.getIsPlaying()&&(a=c)});if(a)this.currentTime=parseInt(1E3*a.getCurrentTime()+player.currentClipStartTime);for(player.layerPlaying=!0;0this.currentTime;)this.currentIndex--,this.timelineEvents[this.currentIndex].revert(this.currentTime);for(;this.currentIndex< -this.timelineEvents.length&&this.timelineEvents[this.currentIndex].time<=this.currentTime&&player.layerPlaying;)this.timelineEvents[this.currentIndex].act(),this.currentIndex++;if(this.currentTime>=this.duration)this.handleEvent("ontimelinecomplete",null,null,!1,!0),player.currentTime>=player.currentSlide().duration&&this.handleEvent("onallopentimelinescomplete"),player.layerPlaying=!1}};var SlideFrame=function(a,b,c){this.container=a||$(document.body);this.slide=b;this.layer=c;this.ref=null;this.constructElement();this.active=!0;this.visible=!1};SlideFrame.prototype=new StageItem;SlideFrame.prototype.innerType="SlideFrame";SlideFrame.prototype.objectType="Item"; -SlideFrame.prototype.loadFromXML=function(a){var b=this;this.id=$(a).attr("id");this.resume=$(a).attr("resume");this.shapemaskid=$(a).attr("shapemaskid");this.xscale=parseInt($(a).attr("xscale"));this.yscale=parseInt($(a).attr("yscale"));this.alpha=parseInt($(a).attr("alpha"));this.scrolling=$(a).attr("scrolling");this.startingslide=$(a).attr("startingslide");this.scalecontents="true"==$(a).attr("scalecontents");this.xml=a;this.loadElementInfoFromXML(a);this.loadSizeFromXML(a);this.loadAnimationsFromXML(a); -if(this.shapemaskid=$(a).attr("shapemaskid"))if(a=this.parseObjref(this.shapemaskid).target,"vectorshape"==a.innerType)a.isShapeMask=!0;$(b.xml).children("background").each(function(a,d){b.background=new Background(b.ref);b.background.loadFromXML(d)});this.canSimplify=!1};SlideFrame.prototype.createBaseRef=StageItem.prototype.createRef;SlideFrame.prototype.destroyBaseRef=StageItem.prototype.destroyRef;SlideFrame.prototype.createRef=function(){this.ref||(this.createBaseRef(),this.background&&this.background.apply(this.ref))}; -SlideFrame.prototype.destroyRef=function(){this.destroyBaseRef()};SlideFrame.prototype.pauseMyFramedSlides=function(){var a=this;$.each(player.framedSlides,function(b,c){c==a.framedSlide&&c.pauseClips()})};SlideFrame.prototype.pauseOtherFramedSlides=function(){var a=this;$.each(player.framedSlides,function(b,c){c!=a.framedSlide&&c.pauseClips()})}; -SlideFrame.prototype.showSlide=function(a){var b=this;this.framedSlide=a;player.updateViewCount(a);player.framedSlides[a.id]=a;a.loadContentFromXML();a.offsetParent=b;a.blockAndLoad(function(){a.restorePlayerControls();player.loadingSpinner.hide();player.shouldShowLoadingSpinner=!1;clearTimeout(player.loadingSpinnerTimeout);a.width');this.ref.append(this.contentRef);this.ref.css("width",a.originalWidth);this.ref.css("height",a.originalHeight);var b=$(a.xml).find("textdata").first().attr("valign");b&&a.contentRef.addClass("v"+b);this.markerEffect&&this.createMarkerEffectRef();b=$('');b.css("position","absolute");b.css("-webkit-transform","translate3d(0px,0px, 0px)");this.ref.append(b);this.jcanvas=b;this.canvas=b.get(0);this.context=this.canvas.getContext("2d");if(window.chrome)this.vectorImage=document.createElement("img"),this.vectorImage.style.webkitTransform="translate3d(0px,0px, 0px)",this.vectorImage.style.position="absolute",this.ref.append(a.vectorImage);if(this.renderAsBackground)this.altRef=$('
'),this.altRef.css("width", -a.originalWidth),this.altRef.css("height",a.originalHeight),this.ref.append(this.altRef);this.lastRenderedState=null;this.render(a.variables.ObjectState,!0,null,"VectorShape createRef");player.showLinkAreas&&$.each(a.links,function(b,d){d.createRef(a)});a.isShapeMask&&a.ref.remove()}}; -VectorShape.prototype.createMarkerEffectRef=function(){this.markerEffectRef=$('');this.markerEffectRef.css("position","absolute");var a=this.markerEffectRef.get(0).getContext("2d"),b=this.markerEffect.width/2;switch(this.markerEffect.type){case "swirl":this.markerEffectRef.addClass("spinning");a.moveTo(b,b);a.arc(b,1.1*b,0.87*b,3*Math.PI/2,2*Math.PI,!1);a.lineTo(b,1.4*b);a.closePath();b= -a.createLinearGradient(0,0,0,this.markerEffect.height);b.addColorStop(0,"rgba(255,255,255,0)");b.addColorStop(0.5,"rgba(255,255,255,1)");b.addColorStop(1,"rgba(255,255,255,1)");a.fillStyle=b;a.fill();break;case "glow":this.markerEffectRef.addClass("pulsing"),b=a.createRadialGradient(b,b,0,b,b,b),b.addColorStop(0,"rgba(255, 255, 255, 1)"),b.addColorStop(0.5,"rgba(255, 255, 255, 1)"),b.addColorStop(1,"rgba(255, 255, 255, 0)"),a.fillStyle=b,a.fillRect(0,0,this.markerEffect.width,this.markerEffect.width)}this.ref.append(this.markerEffectRef); -this.updateMarkerEffectPosition()};VectorShape.prototype.updateMarkerEffectPosition=function(){if(this.markerEffect){var a=-(this.markerEffect.height-this.height)/2;this.markerEffectRef.css("left",-(this.markerEffect.width-this.width)/2);this.markerEffectRef.css("top",a)}}; -VectorShape.prototype.destroyRef=function(){this.destroyBaseRef();if(this.canvas)$(this.canvas).remove(),this.canvas=null;if(null!=this.vectorImage)this.vectorImage.parentNode&&this.vectorImage.parentNode.removeChild(this.vectorImage),this.vectorImage.src="",this.vectorImage=null;if(this.contentRef)this.contentRef.remove(),this.contentRef=null;this.bitMask=this.lastRenderedState=null;this.stateMasks={}};VectorShape.prototype.renderCallback=function(){}; -StageItem.prototype.getMask=function(){var a={path:"",offX:0,offY:0,transform:null,type:""};if(this.maskpath)a.path=this.maskpath,a.type="maskpath";else if(this.shapemaskid){var b=this.parseObjref(this.shapemaskid).target;a.path=b.content.path;a.transform=b.currentTransform;a.type="shapemask";a.item=b}return a}; -VectorShape.prototype.render=function(a,b,c,d,e,f,g){if(this.ref&&(b||a!=this.lastRenderedState)){if(!a)a=this.lastRenderedState;this.allResourcesLoaded()?(this.renderOnUpdateValues={},this.renderOnUpdateValues.closePathCallback=c,this.renderOnUpdateValues.debugFrom=d,this.renderOnUpdateValues.deferred=e,this.renderOnUpdateValues.strLinkId=f,this.renderOnUpdateValues.bDoRender=!0,this.renderOnUpdateValues.state=a,this.renderScheduled=!0,g?this.renderOnUpdate():player.addToRenderQueue(this)):this.blocked= -!0}}; -VectorShape.prototype.renderOnUpdate=function(){var a=this.renderOnUpdateValues.state,b=this.renderOnUpdateValues.strLinkId;this.renderScheduled=this.renderOnUpdateValues.bDoRender=!1;this.lastRenderedState=a;if(this.ref&&!this.destroyed){var c=this;if(c.allResourcesLoaded()){c.blocked=!1;if(!c.canvas)c.canvas=$(this.ref).find("canvas").get(0);if(player.useSafeCanvas)this.canvas.getContext("2d"),this.ref.css("background-color","#"+parseInt(900*Math.random()+1100)%1E3);else{c.m_nXOffset=c.xoffset;c.m_nYOffset= -c.yoffset;c.width=c.width;c.height=c.height;var d=new ppTextLib(c.xml),e=c.content.path;if(c.states[a])e=c.states[a].path,c.rectShape=new ppRect(c.states[a].left,c.states[a].top,c.states[a].right,c.states[a].bottom);else if(this.originalRectShape)this.rectShape=this.originalRectShape;if(c.rectShape&&0==c.rectShape.right&&0==c.rectShape.bottom)c.rectShape.right=c.width,c.rectShape.bottom=c.height;if(e){var f=c.getMask(),g=f.path,h=c.canvas.getContext("2d"),j=null;g&&"shapemask"==f.type&&f.item.registerVariableEventSubscriber(c, -"animationstep");g&&(j=function(a){h.setTransform(1,0,0,1,0,0);f.item&&(f.item.m_nXOffset!=a.offX||f.item.m_nYOffset!=a.offY)&&h.translate(f.item.m_nXOffset-a.offX,f.item.m_nYOffset-a.offY);if(null!=f.transform&&null!=f.transform.scale&&!isNaN(f.transform.scale.x)){if(0==f.transform.scale.y)f.transform.scale.y=1.0E-6;if(0==f.transform.scale.x)f.transform.scale.x=1.0E-6;h.scale(f.transform.scale.x/100,f.transform.scale.y/100)}ppMask.DrawPath(h,c.rectShape,g,f.offX,f.offY);h.closePath();h.clip();h.setTransform(1, -0,0,1,0,0);if(player.drawMaskDebugShapes){if(!c.debugMaskContext)a=$('"),$(document.body).append(a),c.debugMaskContext=a.get(0).getContext("2d");c.debugMaskContext.fillStyle="#ccc";c.debugMaskContext.strokeStyle="#000";c.debugMaskContext.clearRect(0,0,1E3,1E3);c.debugMaskContext.fillRect(0,0,1E3,1E3);c.debugMaskContext.fillStyle="#000";c.debugMaskContext.beginPath(); -ppMask.DrawPath(c.debugMaskContext,c.rectShape,g,f.offX,f.offY);c.debugMaskContext.fill();c.debugMaskContext.fillStyle="#66f";c.debugMaskContext.font="10px sans-serif";c.debugMaskContext.fillText(c.getFullObjref(),0,20)}});var k=new Date;ppArt.itemID=c.id;ppArt.item=c;ppArt.m_bMaskMode=!1;ppArt.DrawVector(c,e,d,player.fontlib,c.imagelib,b,j);if(this.overStepped)c.height=c.requiredRenderHeight,c.rectShape.bottom=c.height,ppArt.DrawVector(c,e,d,player.fontlib,c.imagelib,b,j);ppArt.m_bRenderOnSlideBg&& -c.slide&&c.slide.renderBgLoadStack.push(c);if(null!=c.vectorImage)try{var l=c.canvas.toDataURL("image/png");c.canvas.style.visibility="hidden";c.vectorImage.src=l}catch(m){c.canvas.style.visibility="visible",c.vectorImage.style.visibility="hidden"}if(player.drawMaskDebugShapes&&c.debugMaskContext){if(!c.debugCopyContext)b=$(''),$(document.body).append(b),c.debugCopyContext=b.get(0).getContext("2d"); -c.debugCopyContext.fillStyle="#ccc";c.debugCopyContext.fillRect(0,0,1E3,1E3);c.debugCopyContext.drawImage(c.canvas,0,0,c.width,c.height,0,0,c.width,c.height)}for(var n in c.links)c.links[n].linkdx=ppArt.m_listTextOffsets[c.links[n].textid].x,c.links[n].linkdy=ppArt.m_listTextOffsets[c.links[n].textid].y;if(c.m_nXOffset!=c.xoffset||c.m_nYOffset!=c.yoffset)c.xoffset=c.m_nXOffset,c.yoffset=c.m_nYOffset,c.applySize(c.ref),c.updateMarkerEffectPosition();parseInt(new Date-k);if(a&&!c.stateMasks)c.stateMasks= -{};k=function(){if(player.usePixelTesting)return new BitMask(!0,c.width,c.height);var a=new BitMask(!1,c.width,c.height,c.imageWidth||c.width,c.imageHeight||c.height);if(!c.content.mask&&c.content.maskref)c.content.mask=player.bitmasks[c.content.maskref];if(c.content.mask)a.loadFromRLE(c.content.mask),a.pixels&&!a.isOpaque&&(c.width!=$(c.canvas).attr("width")||c.height!=$(c.canvas).attr("height"))&&a.resize($(c.canvas).attr("width"),$(c.canvas).attr("height"),-c.xoffset,-c.yoffset);else if(-1"+a+"");if(a)a=a.replace(/size='(.*?)(pt|)'/ig,"style='font-size:$1pt'"),this.textTemplate=a=a.replace(/pt'/ig,"px'"),this.renderTextTemplate()}else if(this.hasImagelib){if(!this.image)this.image=new Image, -this.image.src=this.content.src;this.ref.css("background","url("+escape(this.image.src)+")");this.ref.removeClass("failedcanvas")}};var Audio=function(a,b,c){this.container=a||$(document.body);this.slide=b;this.layer=c;this.ref=null;this.constructElement();this.currentIndex=0;this.content={};this.colors={};this.type="audio";this.active=!0;this.id=Math.random();this.name="item";this.visible=this.layered=!1;this.canSimplify=!0;this.hasEvents=!1;this.isMedia=!0;this.xml=""};Audio.prototype=new StageItem;Audio.prototype.objectType="Item";Audio.prototype.innerType="audio";Audio.prototype.loadBaseFromXML=StageItem.prototype.loadFromXML; -Audio.prototype.loadFromXML=function(a,b,c){this.parent=c?c:b;this.slide=b;this.layer=c;this.children={};this.id=$(a).attr("id");this.xml=a;this.loadElementInfoFromXML(a);this.content.src=player.basepath+$(a).attr("url");this.content.duration=parseInt($(a).attr("duration"));b&&b.clips&&b.clips.push&&b.clips.push(this);if(c&&c.clips&&c.clips.push)c.clips.push(this),this.layered=!0;if(!this.resource)this.resource=this.createResource(this.slide,this.content.src)}; -Audio.prototype.createRef=function(){if(!this.ref)if(player.silentMode)this.setSilent();else{var a=this;this.container=$(document.body);this.ref=$('');this.container.append(this.ref);this.ref.get(0).item=this;this.ref.bind("canplay",function(){if(player.blocked)player.currentSlide().currentIndex+=1,a.canPlayThrough=!0,player.unblock()});this.ref.bind("error",function(){player.isFF&&(Audio.setSilentMode(),a.setSilent())});this.ref.bind("stalled", -function(){player.isFF&&(Audio.setSilentMode(),a.setSilent())});this.ref.bind("timeupdate",function(){if(4==a.ref.get(0).readyState){if(player.blocked)player.currentSlide().currentIndex+=1,a.canPlayThrough=!0,player.unblock();$(".blocked").hide()}});this.ref.bind("suspend",function(){});this.ref.bind("ended",function(){a.handleEvent("onmediacomplete")});this.ref.bind("play",function(){if(!isNaN(a.correctedPosition)&&a.shouldSetPosition)try{a.setCurrentTime(a.correctedPosition),a.shouldSetPosition= -!1}catch(b){}})}};Audio.prototype.destroyRef=function(){};Audio.prototype.renderCallback=function(){};Audio.prototype.render=function(){};Audio.prototype.prep=function(){if(player.isIOS){var a=this;if(this.getFullObjref()!=player.nextPreparedClipID){var b=!1;$("audio,video").each(function(c,d){!d.paused&&!d.ended&&(d.item.slide!=a.slide?d.pause():b=!0)});if(!b)this.ref.get(0).load(),this.prepared=!0,player.nextPreparedClipID=this.getFullObjref()}}}; -Audio.prototype.getTimelineAncestor=function(){for(var a=this.parent,b=4;a&&0');this.ref.get(0).play=function(){player.unblock(!0);player.playing=!0;a.handleEvent("onmediacomplete")};this.ref.get(0).load=function(){};this.ref.get(0).pause=function(){};this.ref.get(0).src=this.content.src;this.ref.get(0).currentTime=0;this.playClip=function(){player.unblock(!0); -player.playing=!0;a.handleEvent("onmediacomplete")};this.pauseClip=function(){};this.getCurrentTime=function(){return 0};this.setCurrentTime=function(){};this.prep=function(){a.prepared=!0;player.nextPreparedClipID=a.getFullObjref()}}};var Video=function(a,b,c){this.container=a||$(document.body);this.slide=b;this.layer=c;this.storedRef=this.ref=null;this.constructElement();this.currentIndex=0;this.content={};this.colors={};this.type="video";this.active=!0;this.id=Math.random();this.name="item";this.visible=this.layered=!1;this.canSimplify=!0;this.hasEvents=!1;this.isMedia=!0;this.xml=""};Video.refStore={};Video.prototype=new StageItem;Video.prototype.objectType="Item";Video.prototype.innerType="video"; -Video.prototype.loadBaseFromXML=StageItem.prototype.loadFromXML; -Video.prototype.loadFromXML=function(a,b,c){this.slide=b;this.layer=c;this.children={};this.innerType=this.type="video";this.id=$(a).attr("id");this.xml=a;this.loadElementInfoFromXML(a);this.loadSizeFromXML(a);this.canSimplify=!1;this.content.src=player.basepath+$(a).find("videodata").attr("url");this.content.autoplay="true"==$(a).attr("autoplay");this.content.showcontrols="true"==$(a).attr("showcontrols");this.content.autorewind="true"==$(a).attr("autorewind");this.content.loop="true"==$(a).attr("loop"); -this.content.captureanimation="true"==$(a).attr("captureanimation");this.content.poster=player.basepath+$(a).find("videodata").attr("poster");this.content.hasPoster=""!=$(a).find("videodata").attr("poster");this.content.type=$(a).find("videodata").attr("type");this.isUnsupportedType="youtube"==this.content.type;this.usehandcursor="true"==$(a).attr("usehandcursor");this.loadMaskFromXML(a);if(player.usePlaceholderVideo)this.content.src="/aomock/DocumentHandler.ashx?mimetype=video/mp4&url=/test/video_3.mp4"; -this.content.src=this.content.src.replace(".flv",".mp4");this.showPlaceholder=-1');this.ref.addClass(this.type);this.content.hasPoster&&(player.isChrome|| -this.ref.attr("poster",this.content.poster));if(player.noVideo||this.showPlaceholder||this.isUnsupportedType){if(!this.content.hasPoster)this.ref=$('

Not Supported

Flash content is not supported in the HTML5 player.
'),this.ref.addClass(this.type);this.ref.css("width",this.width+"px");this.ref.css("height",this.height+"px");this.ref.get(0).play=function(){a.content.hasPoster&&(a.posterRef.show(),a.ref.hide());if(player.blocked&&player.blockedOn==a&& -!a.justPlayed)player.unblock(!0),a.handleEvent("onmediacomplete"),player.playing=!0,player.activeTimeline.play(!1,!1,!0);if(!a.justPlayed)a.justPlayed=!0,setTimeout(function(){a.justPlayed=!1},100)};this.ref.get(0).load=function(){};this.ref.get(0).pause=function(){}}if(this.content.captureanimation&&(player.suppressCaptureAnimations||player.isIOS))a.isSuppressedCaptureAnimation=!0,this.ref=$('
'),this.ref.css("width",this.width+"px"),this.ref.css("height", -this.height+"px"),this.ref.get(0).play=function(){player.unblock(!0);a.handleEvent("onmediacomplete")},this.ref.get(0).load=function(){},this.ref.get(0).pause=function(){},this.ref.get(0).src="[captureanimation: no source]";this.applySize(this.ref);this.posterRef=$("
");this.applySize(this.posterRef);this.content.hasPoster&&(this.posterRef.css("background-image","url("+this.content.poster+")"),player.isChrome||this.ref.attr("poster",this.content.poster));this.container.append(this.posterRef); -this.ref.get(0).item=this;this.ref.bind("canplay",function(){a.canPlayThrough=!0;player.unblock()});this.ref.bind("timeupdate",function(){if(4==a.ref.get(0).readyState)a.canPlayThrough=!0,player.unblock()});this.ref.bind("error",function(){a.canPlayThrough=!0;player.unblock()});this.ref.bind("ended",function(){a.handleEvent("onmediacomplete")});this.ref.bind("play",function(){var b=a.prepared;a.canPlayThrough=!0;a.prepared=!0;a.controllableFromTimeline=!0;player.nextPreparedClipID=a.getFullObjref(); -if(!isNaN(a.correctedPosition)&&a.shouldSetPosition)try{a.setCurrentTime(a.correctedPosition),a.shouldSetPosition=!1}catch(c){}if(!a.playingFromPlayClip&&player.activeTimeline.paused&&player.isIOS&&!b&&a.content.autoplay&&(player.activeTimeline.play(),player.activeTimeline.paused=!1,player.activeTimeline.playing=!0,!b))player.activeTimeline.currentTime=0});this.ref.bind("pause",function(){a.pausingFromPauseClip||a.ref.get(0)})}}; -Video.prototype.destroyRef=function(){this.pauseClip();if(this.ref&&this.ref.get&&this.ref.get(0))this.ref.get(0).src="";this.destroyBaseRef()};Video.prototype.renderCallback=function(){};Video.prototype.render=function(){};Video.prototype.showBase=StageItem.prototype.show; -Video.prototype.show=function(a,b,c){var d=this;this.showBase(a,b,c);if(this.ref||this.ref.get||this.ref.get(0))(this.ref.get(0).paused||this.ref.get(0).ended)&&this.posterRef.show();if(!player.noVideo&&(this.container&&!this.content.autoplay&&0==this.ref.parent().length&&(player.isIOS?"block"==this.container.css("display")&&(this.container.append(this.ref),this.ref.show()):(this.container.append(this.ref),this.ref.show())),!c))if(this.showPlaceholder)this.handleEvent("onmediacomplete");else{var e= -this;if(e.content.autoplay||!(a&&"StoryEvent"!=a.type))if(player.playing||player.layerPlaying){var f=e.getTimelineAncestor().currentTime-a.time;if(e.ref&&e.ref.get&&e.ref.get(0)){var g=e.ref.get(0);this.isSuppressedCaptureAnimation?e.playClip():(clearTimeout(player.mediaTimeout),player.scheduledMediaSrc=d.content.src,this.scheduled=!0,player.mediaTimeout=setTimeout(function(){player.mediaTimeout=null;player.scheduledMediaSrc=null;d.scheduled=!1;e.playClip();e.getFullObjref();player.currentClip=g; -player.currentClipStartTime=a.time;player.currentClipSyncToTimeline="TimelineEvent"==a.type;try{e.setCurrentTime(f/1E3)}catch(b){}},0))}}}};Video.prototype.prep=function(){if(player.isIOS&&this.getFullObjref()!=player.nextPreparedClipID&&this.ref&&this.ref.get&&this.ref.get(0))this.ref.get(0).load(),this.prepared=!0,player.nextPreparedClipID=this.getFullObjref()};Video.prototype.getTimelineAncestor=Audio.prototype.getTimelineAncestor;Video.extractZeroTimeAutoPlayEvent=function(){}; -Video.prototype.playClip=function(){var a=this;if(this.ref&&this.ref.get&&this.ref.get(0)&&this.ref.get(0).play)0==this.ref.parent().length&&(this.container.append(this.ref),this.ref.show()),this.posterRef.hide(),player.isIOS&&player.nextPreparedClipID!=this.getFullObjref()?(this.ref.get(0).setAttribute("controls","controls"),Animation.finishForTimeline(a.slide,a.slide.currentTime),player.activeTimeline.pause(!0,!1),a.slide.pause(!0,!1),setTimeout(function(){a.ref.get(0).setAttribute("controls","controls"); -player.unblock()},0)):(player.isIOS&&player.unblock(),this.controllableFromTimeline=this.playingFromPlayClip=!0,this.ref.get(0).play(),setTimeout(function(){a.playingFromPlayClip=!1},0))};Video.prototype.pauseClip=function(){var a=this;if(this.ref&&this.ref.get&&this.ref.get(0)&&this.ref.get(0).pause)this.pausingFromPauseClip=!0,this.ref.get(0).pause(),setTimeout(function(){a.pausingFromPauseClip=!1},0)}; -Video.prototype.getCurrentTime=function(){return this.ref&&this.ref.get&&this.ref.get(0)?this.ref.get(0).currentTime:0};Video.prototype.setCurrentTime=function(a){if(this.ref&&this.ref.get&&this.ref.get(0))this.ref.get(0).currentTime=a};Video.prototype.getScheduled=function(){return this.ref&&this.ref.get&&this.ref.get(0)?this.ref.get(0).scheduled:!1};Video.prototype.setScheduled=function(a){if(this.ref&&this.ref.get&&this.ref.get(0))this.ref.get(0).scheduled=a}; -Video.prototype.mediaReady=function(){return this&&this.ref&&this.ref.get(0)&&4==this.ref.get(0).readyState?!0:!1};Video.prototype.getClip=function(){return this.ref&&this.ref.get&&this.ref.get(0)?this.ref.get(0):null};Video.prototype.getIsPlaying=function(){return this.ref&&this.ref.get&&this.ref.get(0)&&!this.ref.get(0).paused&&!this.ref.get(0).ended?!0:!1}; -Video.prototype.isPointObscured=function(a,b,c,d){var e=this.matrix.unTransformPoint(a,b);return this.content.showcontrols&&e.y>this.height-35?!0:StageItem.prototype.isPointObscured.call(this,a,b,c,d)};var LinkArea=function(a,b,c,d){this.textid=d;this.linkdy=this.linkdx=0;this.container=a||$(document.body);this.slide=b;this.layer=c;this.ref=null;this.constructElement()};LinkArea.prototype=new VectorShape;LinkArea.prototype.innerType="LinkArea";LinkArea.prototype.objectType="Item";LinkArea.prototype.loadBaseFromXML=StageItem.prototype.loadFromXML;LinkArea.prototype.renderBase=VectorShape.prototype.render;LinkArea.prototype.renderOnUpdate=VectorShape.prototype.renderOnUpdate; -LinkArea.prototype.loadFromXML=function(a,b,c){this.loadBaseFromXML(a,b,c);b=$(a).children("textdata").children("vectortext").children("pr");if(1==b.length){a=$(a).children("textdata").children("vectortext");if(null!=$(a).attr("top"))this.originalRectShape=this.rectShape=new ppRect(parseInt($(a).attr("left")),parseInt($(a).attr("top")),parseInt($(a).attr("right")),parseInt($(a).attr("bottom")));if(1==b.length)this.content.path=PathLib.getPathFromXML(b)}this.type="LinkArea"}; -LinkArea.prototype.createRef=function(){if(player.showLinkAreas)this.ref=$("
"),this.applySize(this.ref),this.ref.show(),this.parent.ref.append(this.ref)};LinkArea.prototype.render=function(a){switch(a){case "onrollover":new ppTextLib(this.xml);this.parent.render(this.parent.lastRenderedState,!0,null,"LinkArea render",!1,this.id);break;case "onrollout":this.parent.render(null,!0)}}; -LinkArea.prototype.handleIfOver=function(a,b,c){b=this.parent.getCanvasPoint(b.x,b.y);if(b.x>this.xpos+this.linkdx&&b.xthis.ypos+this.linkdy&&b.ythis.xpos+this.linkdx&&c.xthis.ypos+this.linkdy&&c.ythis.content.maxchars)this.input.get(0).value=a.substr(0,this.content.maxchars);return!0}; -TextInput.prototype.createRef=function(){if(!this.ref){var a=this;this.container=this.parent.ref;this.ref=$('
');this.applySize(this.ref);this.container.append(this.ref);var b=this.content.multiline?$("