var exitState = "";
var status = "";
var entryVal = "";
var courseTotalTime = 0;
/////////////////////////////////////////////////////////////////////////////
//
// Title: doinit()
//
// Description: This function is used to initialize the module including the
// retrieval of key SCORM data elements from the LMS which are passed to the
// controller.
//
/////////////////////////////////////////////////////////////////////////////
function doinit(){
//Initialize the LMS connection
var result = LMSInitialize("");
var lessonStatus = "";
//Once communication is established get appropriate values
if(result == "true" && result != null){
entryVal = LMSGetValue("cmi.core.entry");
status = LMSGetValue("cmi.core.lesson_status");
if (entryVal == "ab-initio" || entryVal == "resume")
{
status = "incomplete";
exitState = "suspend";
LMSSetValue("cmi.core.lesson_status",status);
LMSCommit();
}
else if (entryVal == "")
{
status = "completed";
exitState = "";
}
document.igc_controller.SetVariable("cmi_entry", entryVal);
document.igc_controller.SetVariable("cmi_temp_status", status);
setTimeout("updateCourseTime()",1000);
} else {
//Can't find the API. Present an error.
alert("The API is not present. Attempting to connect...Click Ok to continue.");
doinit();
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: updateCourseTime()
//
// Description: This function is used to update the amount of time a user spends in the course.
//
/////////////////////////////////////////////////////////////////////////////
function updateCourseTime(){
courseTotalTime = courseTotalTime + 1000;
setTimeout("updateCourseTime()",1000);
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: setBookmark(args)
//
// Description: This function is used to set a bookmark.
//
/////////////////////////////////////////////////////////////////////////////
function setBookmark(args){
LMSSetValue("cmi.core.lesson_location",args);
LMSCommit();
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: setClassScore(args)
//
// Description: This function is used to set a class complete score.
//
/////////////////////////////////////////////////////////////////////////////
function setClassScore(args){
LMSSetValue("cmi.core.score.raw",args);
LMSCommit();
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: getBookmark()
//
// Description: This function is used to get a bookmark.
//
/////////////////////////////////////////////////////////////////////////////
function getBookmark(){
lmsbookmark = LMSGetValue("cmi.core.lesson_location");
document.igc_controller.SetVariable("cmi_temp_bkmrk", lmsbookmark);
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: getClassProgress()
//
// Description: This function is used to get the classProgress.
//
/////////////////////////////////////////////////////////////////////////////
function getClassProgress(){
//for our purposes cmi.suspend_data will be a text string comprised as follows
//"l1e1-m1.c,m2.c,m3.c.93/l1e2-m1.c,m2.i,m3.x/" That breaks down as follows
//l1 = lesson 1
//e1 = exercise 1
//m1 = lecture, m2 = interactive, m3 = quiz
//m1.c = complete, m1.i = incomplete, m1.x = not present, m3.c.95 = quiz is complete and learner recieved a score of 93%
//commas separate modes, forward slash separates exercises, heirarchy denotes the rest
resumeD = LMSGetValue("cmi.suspend_data");
document.igc_controller.SetVariable("resumeD",resumeD);
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: setClassProgress()
//
// Description: This function is used to set the classProgress.
//
/////////////////////////////////////////////////////////////////////////////
function setClassProgress(args, courseScore, completeStatus){
//for our purposes cmi.suspend_data will be a text string comprised as follows
//"l1e1-m1.c,m2.c,m3.c.93/l1e2-m1.c,m2.i,m3.x/" That breaks down as follows
//l1 = lesson 1
//e1 = exercise 1
//m1 = lecture, m2 = interactive, m3 = quiz
//m1.c = complete, m1.i = incomplete, m1.x = not present, m3.c.95 = quiz is complete and learner recieved a score of 93%
//commas separate modes, forward slash separates exercises, heirarchy denotes the rest
LMSSetValue("cmi.suspend_data",args);
LMSCommit();
if (completeStatus == "true"){
if (courseScore >= 0){
setClassScore(courseScore);
}
prepComplete();
}
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: prepComplete()
//
// Description: This function is used to mark the course complete upon completion.
// of all exercises by removing the bookmark and setting a global complete var.
//
/////////////////////////////////////////////////////////////////////////////
function prepComplete(){
status = "completed";
exitState = "";
LMSSetValue("cmi.core.lesson_location","");
LMSCommit();
}
/////////////////////////////////////////////////////////////////////////////
//
// Title: dofinish()
//
// Description: This function is used to set and commit the appropriate status
// and exit state before closing the module. It is called on the onUnload event
//
/////////////////////////////////////////////////////////////////////////////
function dofinish(){
var seconds = "";
var minutes = "";
var hours = "";
seconds=Math.floor(courseTotalTime/1000);
minutes=Math.floor(seconds/60);
hours=Math.floor(minutes/60);
seconds = seconds % 60;
minutes = minutes % 60;
//add leading zero to second
if (seconds < 10){
if (seconds == 0) {
seconds = "00";
} else {
seconds = "0" + seconds;
}
}
//add leading zero to minutes
if (minutes < 10){
if (minutes == 0) {
minutes = "00";
} else {
minutes = "0" + minutes;
}
}
//add leading zeros to hours
if (hours < 10) {
if (hours == 0) {
hours = "0000";
} else {
hours = "000" + hours;
}
} else if (hours < 100) {
hours = "00" + hours;
} else if (hoursInt < 1000) {
hours = "0" + hours;
}
var session_time = "";
session_time = hours + ":" + minutes + ":" + seconds;
LMSSetValue("cmi.core.session_time", session_time);
LMSSetValue("cmi.core.lesson_status",status);
LMSSetValue("cmi.core.exit", exitState);
LMSCommit();
LMSFinish();
}