HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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;
}