File: D:/HostingSpaces/JTent/tentje.com/wwwroot/2015_02_13/layout/tsg_mobile/content/js/scormfunctions.js
// Einstellungen SCORM
var lbZipData = false;
var liMaxScore = 0
var lsPassed = 'incomplete';
// LessonLocation
var lsLastPageBeforeEnd = "";
var gsLessonLocation = "";
// Flag ob SCORM Connection erfolgreich initalisiert wurde.
var lbSCORM = false;
function saveDataOnUnload() {
saveData(true);
}
function loadData() {
if (parent.mainframe.lbScorm == false) {
return;
}
/*var lsSusp = "obj1,obj2,obj3,obj4,obj5,obj6,obj7#1,1,0,1,1/1,0,1/1,0,1,0,0/0,0/0,0,0,0,0/0,0/0";
goNavigation.setSuspendData(lsSusp);*/
var lsScorm = doLMSInitialize("");
if (lsScorm == "true") {
lbSCORM = true;
var lsLessonStatus = doLMSGetValue("cmi.core.lesson_status");
if (lsLessonStatus == "not attempted") {
doLMSSetValue("cmi.core.lesson_status","incomplete");
doLMSCommit();
lsPassed = "incomplete";
}
if (lsLessonStatus == "passed") {
lsPassed = "passed";
}
if (lsLessonStatus == "failed") {
lsPassed = "failed";
}
var lsScore = doLMSGetValue("cmi.core.score.raw");
if ((error=doLMSGetLastError()) != "0" || lsScore == "") {
lsScore = "0";
}
liMaxScore = lsScore;
// obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8#1/1,1,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0/0,0,0,0,0/0/0
// obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8#1/1,0,1,0,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1/1,1,1,1,1/1/1
var lsData = "";
lsData = doLMSGetValue("cmi.suspend_data")
//lsData = doLMSGetValue("cmi.launch_data")
if ((error=doLMSGetLastError()) == "0" && lsData != "") {
var lsChaptData = lsData.split("#")[1];
for (var i=0;i<parent.navtree.themenu.items[1].sub.items.length;i++) {
var loChapter = parent.navtree.themenu.items[1].sub.items[i];
var lsPageData = lsChaptData.split("/")[i+1];
if (loChapter.sub != null && loChapter.sub.items != null && loChapter.sub.items.length > 0) {
for (var j=0;j<loChapter.sub.items.length;j++) {
var lsPageVis = lsPageData.split(",")[j];
var liVis = 0;
if (lsPageVis == 1) {
liVis = 1;
}
loChapter.sub.items[j].vis = liVis;
}
} else {
var lsPageVis = lsPageData.split(",")[0];
var liVis = 0;
if (lsPageVis == 1) {
liVis = 1;
}
loChapter.vis = liVis;
}
}
}
// Navigation -> vis setzen
/*
for (var i=0; i < parent.navtree.gaFlatNav.length; i++) {
var loParent = parent.navtree.gaFlatNav[i].parent;
while (loParent != null) {
var lbVis = 1;
if (loParent.sub != null && loParent.sub.items.length > 0) {
for (var i=0; i<loParent.sub.items.length; i++) {
if (loParent.sub.items[i].vis == 0) {
lbVis = 0;
}
}
}
loParent.vis = lbVis;
loParent = loParent.parent;
}
}
*/
var lsLessonLocation = "";
lsLessonLocation = doLMSGetValue("cmi.core.lesson_location");
if ((error=doLMSGetLastError()) != "0" || lsLessonLocation == "") {
lsLessonLocation = "";
}
if (lsLessonLocation != "") {
gsLessonLocation = lsLessonLocation;
}
}
}
function saveData(pbClose) {
if (!lbSCORM) return;
// Bearbeitungszeit speichern
doLMSSetValue("cmi.core.session_time",computeTime());
if ((error=doLMSGetLastError()) != "0") {
console.log("Fehler - cmi.core.session_time " + error);
}
doLMSCommit();
// Lesson_Location setzen
doLMSSetValue("cmi.core.lesson_location",lsLastPageBeforeEnd);
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.lesson_location" + error);
}
doLMSCommit();
// Ermitteln ob das Teil einen Test hat
var lbHasTest = false;
for (var i=0;i<parent.navtree.gaFlatNav.length;i++) {
if (parent.navtree.gaFlatNav[i].pagetype == "tp") {
lbHasTest = true;
}
}
// Ermitteln der besuchten Seiten
// obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8#1/1,1,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0,0,0,0,0,0,0,0,0,0/0,0,0,0,0/0,0,0,0,0/0/0
// obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8#1/1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1,1,1,1,1,1,1,1,1,1/1,1,1,1,1/1,1,1,1,1/1/1
var lsSuspendData = "obj1,"; //goNavigation.getSuspendData();
var liObjCnt = 2;
for (var i=0;i<parent.navtree.themenu.items[1].sub.items.length;i++) {
lsSuspendData += "obj"+liObjCnt+",";
liObjCnt++;
}
lsSuspendData = lsSuspendData.substr(0,lsSuspendData.length-1) + '#' + "1/";
for (var i=0;i<parent.navtree.themenu.items[1].sub.items.length;i++) {
var loChapter = parent.navtree.themenu.items[1].sub.items[i];
if (loChapter.sub != null && loChapter.sub.items != null && loChapter.sub.items.length > 0) {
for (var j=0;j<loChapter.sub.items.length;j++) {
var liVis = 0;
if (loChapter.sub.items[j].vis == true) {
liVis = 1;
}
lsSuspendData += liVis + ',';
}
lsSuspendData = lsSuspendData.substr(0,lsSuspendData.length-1) + '/';
} else {
var liVis = 0;
if (loChapter.vis == true) {
liVis = 1;
}
lsSuspendData = lsSuspendData + liVis + "/";
}
}
lsSuspendData = lsSuspendData.substr(0,lsSuspendData.length-1);
doLMSSetValue("cmi.suspend_data",lsSuspendData);
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.suspend_data " + error);
}
doLMSCommit();
// Score-Min
doLMSSetValue("cmi.core.score.min",0)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.score.min " + error);
}
doLMSCommit();
if (lbHasTest == true) {
// Score-Max
var liTempMax = 100;
if (lbHasTest == true) {
liTempMax = 70;
}
//doLMSSetValue("cmi.core.score.max",liTempMax)
doLMSSetValue("cmi.core.score.max",100)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.score.max " + error);
}
doLMSCommit();
var liScore = parent.mainframe.giScoreP;
if (liScore < liMaxScore) {
liScore = liMaxScore;
}
doLMSSetValue("cmi.core.score.raw",liScore)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.score.raw " + error);
}
doLMSCommit();
// Lesson-Status ermitteln und speichern
var lsStatus = "incomplete";
if ((parent.mainframe.gbTestStarted == true && parent.mainframe.gbTestPassed == true) || lsPassed == 'passed') {
lsStatus = "passed";
} else if ((parent.mainframe.gbTestStarted == true && parent.mainframe.gbTestPassed == false) || lsPassed == 'failed') {
if (parent.mainframe.lbSendFailed == true) {
lsStatus = "failed";
} else {
lsStatus = "incomplete";
}
} else {
lsStatus = lsPassed;
}
doLMSSetValue("cmi.core.lesson_status",lsStatus)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.lesson_status " + error);
}
doLMSCommit();
} else {
var liScore = 0;
var liSeen = 1;
var liMax = 1;
for (var i=0;i<parent.navtree.themenu.items[1].sub.items.length;i++) {
var loChapter = parent.navtree.themenu.items[1].sub.items[i];
if (loChapter.sub != null && loChapter.sub.items != null && loChapter.sub.items.length > 0) {
for (var j=0;j<loChapter.sub.items.length;j++) {
if (loChapter.sub.items[j].pagetype != "tp") {
liMax++;
if (loChapter.sub.items[j].vis == true) {
liSeen++;
}
}
}
} else {
liMax++;
if (loChapter.vis == true) {
liSeen++;
}
}
}
liScore = parseInt(liSeen/liMax*100)
// Score-Max
var liTempMax = 100;
doLMSSetValue("cmi.core.score.max",liTempMax)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.score.max " + error);
}
doLMSCommit();
if (liScore >= 98) {
liScore = 100;
}
doLMSSetValue("cmi.core.score.raw",liScore)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.score.raw " + error);
}
doLMSCommit();
var lsStatus = "incomplete";
if (liScore >= 98) {
lsStatus = "completed";
}
doLMSSetValue("cmi.core.lesson_status",lsStatus)
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.lesson_status " + error);
}
doLMSCommit();
}
if (pbClose == true) {
// Exit
doLMSSetValue("cmi.core.exit","suspend")
if ((error=doLMSGetLastError()) != "0") {
alert("Fehler - cmi.core.exit " + error);
}
doLMSCommit();
doLMSFinish("");
if (pbClose == true) {
//top.window.close();
}
}
}
var lsStartTime;
function startTimer() {
lsStartTime = new Date().getTime();
}
function computeTime() {
if (lsStartTime != 0) {
var currentDate = new Date().getTime();
var elapsedSeconds = ((currentDate - lsStartTime)/1000);
var formattedTime = convertTotalSeconds(elapsedSeconds);
} else {
formattedTime = "00:00:00.0";
}
return formattedTime;
}
function convertTotalSeconds(ts) {
var sec = (ts % 60);
ts -= sec;
var tmp = (ts % 3600); //# of seconds in the total # of minutes
ts -= tmp; //# of seconds in the total # of hours
// convert seconds to conform to CMITimespan type (e.g. SS.00)
sec = Math.round(sec*100)/100;
var strSec = new String(sec);
var strWholeSec = strSec;
var strFractionSec = "";
if (strSec.indexOf(".") != -1)
{
strWholeSec = strSec.substring(0, strSec.indexOf("."));
strFractionSec = strSec.substring(strSec.indexOf(".")+1, strSec.length);
}
if (strWholeSec.length < 2)
{
strWholeSec = "0" + strWholeSec;
}
strSec = strWholeSec;
if (strFractionSec.length)
{
strSec = strSec+ "." + strFractionSec;
}
if ((ts % 3600) != 0 )
var hour = 0;
else var hour = (ts / 3600);
if ( (tmp % 60) != 0 )
var min = 0;
else var min = (tmp / 60);
if ((new String(hour)).length < 2)
hour = "0"+hour;
if ((new String(min)).length < 2)
min = "0"+min;
var rtnVal = hour+":"+min+":"+strSec;
return rtnVal;
}