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/action.js
<!--
/* ***********************************************************************************************************
   *****    Einstellungen                                                                                *****
   *********************************************************************************************************** */

var lsLearningResourceType		= '';
var lsLearningResourceSubType	= '';
var lsPageName					= searchReplace(myName(), '.htm', '');

var loObj2PosAtMouse			= null;				// Objekt, welches am Mauscursor positioniert werden soll
var loObj2PosAtMouseWidth		= 0;				// Breite des Objektes
var loObj2PosAtMouseHeight		= 0;				// Hoehe des Objektes
var loObj2PosAtMouseVis			= false;			// Sichtbarkeit des Objektes

var loScreenTextObjects			= new Array();		// Textobjekte
var loScreenGraphicObjects		= new Array();		// Grafikobjekte
var loScreenFlashObjects		= new Array();		// Flash-Objekte
var goAnimations				= new Array();		// Animationsobjekte
var loAudios    				= new Array();		// Audio-Objekte
var loVideos    				= new Array();		// Video-Objekte
var loExternals					= new Array();	    // Externe Dokumente
var loTodos						= new Array();	    // Todos
var loOtherScreenObjects		= new Array();		// Sonstige Objekte (z.B. Slider)
var lsAudio2Edit				= '';
var laFeedbacks					= new Array();		// ID's der Feedbacks auf der Seite

var goPeriods					= new Array();		// Perioden (Steps)
var goActions					= new Array();		// Aktionen eines Steps
var goActionsToDo				= new Array();		// Aktuelle Aktionen
var giPageStep					= 0;				// Aktueller Step auf der Seite

var lbReloadByBack = false;

// Fuer den Fall, dass Glossar z.B. in eigenes Frame geladen wird: Frame abpruefen
if (window.name == 'content') {
	var giContentX					= parent.getContentFrame().offsetLeft;		// X-Position des Content-Frames
	var giContentY					= parent.getContentFrame().offsetTop;		// Y-Position des Content-Frames
	var giContentWidth				= parent.getContentFrame().clientWidth;		// Breite des Content-Frames
	var giContentHeight				= parent.getContentFrame().clientHeight;	// Hoehe des Content-Frames
}

var loSequences					= new Array();
var liSequence					= 1;

var loDelayTimer				= null;

/* ***********************************************************************************************************
   *****    Actionhandling                                                                               *****
   *********************************************************************************************************** */

function addAction(psAction) {
	goActions.push(psAction);
}

function addPeriod() {
	goPeriods.push(goActions);
	goActions = new Array();
}

/* ***********************************************************************************************************
   *****    Aufbau der Seite                                                                             *****
   *********************************************************************************************************** */

function initPage() {
	setOrientation();
	
	if (parent != self) {
		// Wenn diese Seite im Frame geladen ist, dann initPage vom Frameset aufrufen
		parent.initPage();
	}
	
	// Auto-Menu-Popup mit Testabfrage
	if (parent.showPopupAuto == true) {
		var lbIsTest = false;
		try {
			for (var i=0;i<parent.goPageItem.parent.sub.items.length;i++) {
				if (parent.goPageItem.parent.sub.items[i].pagetype == "tp") {
					lbIsTest = true;
				}
			}
		} catch (e) {
		}
		
		if (lbIsTest == false) {
			showPopupMenu();
		}
		parent.showPopupAuto = false;
	}
	
	// alert(parent.goPageItem.id + " " + parent.parent.navtree.gaFlatNav[0].id);
	/*if (parent.goPageItem.id == parent.parent.navtree.gaFlatNav[0].id) {
		parent.parent.cmi.loadData();
	}*/
}

function doPageStep(pbFromButton) {
	// jw, 3811, 18.08.06
	parent.setAudioText('');
	// end jw, 3811, 18.08.06	
	clearDelay();
	if (parent.parent.gbEditMode) {
		if (goEditWindow != null) {
			return;
		}
	}
	if (goPeriods.length == 0) {
		return;
	}
	
	/*
	for (var i=0;i<loScreenTextObjects.length;i++) {
		var loObj = loScreenTextObjects[i];
		if (loObj != null)
			loObj.hide();
	}
	
	for (var i=0;i<loScreenGraphicObjects.length;i++) {
		var loObj = loScreenGraphicObjects[i];
		if (loObj != null) {
			try {
				loObj[2].hide();
			} catch (e) {}
		}
	}
	for (var i=0;i<goAnimations.length;i++) {
		var loObj = goAnimations[i];
		if (loObj != null) {
			try {
				eval(poObjectName).hide();
			} catch (e) {}
		}
	}
	*/
	if (parent.giGotoPageStep != null) {
		parent.giGotoPageStep--;
		if (parent.giGotoPageStep < 0)
			parent.giGotoPageStep = 0;
		goActionsToDo = new Array();
		var liCnt = 0;
		for (var i=0; i<=parent.giGotoPageStep; i++) {
			var lsAction = goPeriods[i]; 
			if (goPeriods[i] != null) {
				for (var j=0; j<lsAction.length; j++) {
					goActionsToDo.push(lsAction[j]);
					window.setTimeout('eval(goActionsToDo['+liCnt+']);',10*liCnt);
					liCnt++;
				}
				window.setTimeout('reorderObjects()',10*liCnt);

			}
		}
		
		giPageStep = parent.giGotoPageStep;
		parent.giGotoPageStep = null;
	} else {
		if (giPageStep < goPeriods.length) {
			goActionsToDo = new Array();
			var lsAction = goPeriods[giPageStep]; 
			if (lsAction.length > 0) {
				for (var i=0; i<lsAction.length; i++) {
					goActionsToDo.push(lsAction[i]);
					window.setTimeout('eval(goActionsToDo['+i+']);',10*i);
				}
				window.setTimeout('reorderObjects()',100);
			}	
		} else {
			if (pbFromButton == true) {
				parent.forward();
				return;
			}
		}
	}
	
	giPageStep++;

	parent.getPageName();
	initPageIndicator();
	handleNavigationButtons();
	window.setTimeout("initContentScroll()",100);
}

function doPageStepBack() {
	if (giPageStep < 2) {
		parent.back();
		return;
	}
	
	parent.repeat();
	return;
	
	if (lbReloadByBack == true || lbReloadByBack == "true") {
		document.location.reload();
	}
	
	if (giPageStep <= goPeriods.length) {
		goActionsToDo = new Array();
		var lsNewAction = '';
		var lsAction = goPeriods[giPageStep-1]; 
		if (lsAction.length > 0) {
			for (var i=0; i<lsAction.length; i++) {
				if ((lsAction[i].indexOf('showObj') == 0) || (lsAction[i].indexOf('hideObj'))) {
					lsNewAction = lsAction[i];
					lsNewAction = searchReplace(lsNewAction, 'showObj', '##');
					lsNewAction = searchReplace(lsNewAction, 'hideObj', 'showObj');
					lsNewAction = searchReplace(lsNewAction, '##', 'hideObj');
					goActionsToDo.push(lsNewAction);
				}
			}
		}
		var lsNewAction = '';
		var lsAction = goPeriods[giPageStep-2]; 
		if (lsAction.length > 0) {
			for (var i=0; i<lsAction.length; i++) {
				goActionsToDo.push(lsAction[i]);
			}
		}
		for (var i=0; i<goActionsToDo.length; i++) {
			var loAction = goActionsToDo[i];
			if (loAction.indexOf("delay") == -1) {
				window.setTimeout('eval(goActionsToDo['+i+']);',10*i);
			}
		}

	}		
	giPageStep--;

	parent.getPageName();
	initPageIndicator();
	handleNavigationButtons();
	initContentScroll();
}


/* ***********************************************************************************************************
   *****    Text-Objekte                                                                                 *****
   *********************************************************************************************************** */

function addScreenTextObject(psTextID, psTextType, pbScreenText) {
	if (getScreenTextType(psTextType) != null) {
		psScreenType = getScreenTextType(psTextType);
	} else {
		psScreenType = psTextType;
	}
	if (pbScreenText == null) {
		pbScreenText = true;
	}
	var loTextObject = new ScreenText(psTextID, psTextType, psScreenType, pbScreenText);
	loScreenTextObjects.push(loTextObject);
}

function getScreenTextObject(psName) {
	var loReturn = null;
	for (var i=0; i < loScreenTextObjects.length; i++) {
		var loObj = loScreenTextObjects[i];
		if (loObj.getName() == psName)
			loReturn = loObj;
	}
	return loReturn;
}

function addFeedback(psName) {
	laFeedbacks.push(psName);
	addScreenTextObject(psName,'Feedback',false);
}

/* ***********************************************************************************************************
   *****    Grafik-Objekte                                                                        		   *****
   *********************************************************************************************************** */

function addScreenGraphicObject(psGraphicID, psGraphicType, poGraphicObject, piLeft, piTop) {
	if (parent.liDevice == 0) {
		if (getScreenTextType(psGraphicType) != null) {
			psScreenType = getScreenTextType(psGraphicType);
		} else {
			psScreenType = psGraphicType;
		}
	
		loScreenTextObjects.push(eval(psGraphicID));
	}

	loScreenGraphicObjects.push([psGraphicID, psGraphicType, poGraphicObject, piLeft, piTop]);
}

function getScreenGraphicObject(psName) {
	var loReturn = null;
	psName = psName;
	for (var i=0; i<loScreenGraphicObjects.length; i++) {
		if (loScreenGraphicObjects[i][0] == psName) {
			loReturn = eval(loScreenGraphicObjects[i][2]);
			break;
		}
	}
	return loReturn;
}


function getScreenGraphicObjectsByType(psTypeName){
	var laReturn = new Array();
	for (var i=0; i<loScreenGraphicObjects.length; i++) {
		if (loScreenGraphicObjects[i][1] == psTypeName) {
			laReturn[laReturn.length] = eval(loScreenGraphicObjects[i][2]);			
		}
	}	
	return laReturn;
}

/* ***********************************************************************************************************
   *****    Flash-Objekte                                                                        		   *****
   *********************************************************************************************************** */

function addFlashObject(psID, psSrc, psVars, psDescription, psLegend) {
	loScreenFlashObjects.push([psID, psSrc, psVars, psDescription, psLegend]);
}

function drawFlashObjs() {
	for (var i=0; i<loScreenFlashObjects.length; i++) {
		lsID          = loScreenFlashObjects[i][0];
		lsSrc         = loScreenFlashObjects[i][1];
		lsVars        = loScreenFlashObjects[i][2];
		lsDescription = loScreenFlashObjects[i][3];
		lsLegend      = loScreenFlashObjects[i][4];
		if (lsVars != '=&') {
			lsSrc += '?'+lsVars;
		}
		lsFlash  = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="100%" height="100%" id="flash'+lsID+'">';
		lsFlash += '<param name="movie" value="'+lsSrc+'" />';
		lsFlash += '<param name="quality" value="high" />';
		lsFlash += '<param name="bgcolor" value="#FFFFFF" />';
		lsFlash += '<param name="wmode" value="transparent" />';
		lsFlash += '<param name="menu" value="false" />';
		lsFlash += '<embed src="'+lsSrc+'" id="flash'+lsID+'" quality="high" menu="false" bgcolor="#FFFFFF" width="100%" height="100%" type="application/x-shockwave-flash" pluginspace="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>';
		lsFlash += '</object>';
		lsFlash += '<p class="Legend">'+lsLegend+'</p>';
		if (document.location.href.indexOf("https:") != -1) {
			lsFlash = lsFlash.replace(/http:/g, "https:")
		}
		document.getElementById(lsID).innerHTML = lsFlash;
	}
}

function flashLoadError(psID) {
	alert("ERROR:"+psID);
}

/* ***********************************************************************************************************
   *****    Animation-Objekte                                                                            *****
   *********************************************************************************************************** */

function addAnimation(psAnimationID) {
	goAnimations.push(psAnimationID);
}

function playAnimation(poObjectName, psParam1) {
	if (psParam1 != null) {
		if (parent.liDevice == 1) {
			if (psParam1.toLowerCase().indexOf("portrait") != -1) {
				return;
			}
		} else if (parent.liDevice == 0) {
			if (psParam1.toLowerCase().indexOf("landscape") != -1) {
				return;
			}
		} else {
			if (psParam1.toLowerCase().indexOf("portrait") != -1) {
				return;
			}
		}
	}
	for (var i=0; i<goAnimations.length; i++) {
		if (goAnimations[i] == poObjectName) {
			eval(poObjectName).run();
			return;
		}
	}
	showObj(poObjectName);
}	

function hideAnimation(psName) {
	for (var i=0; i<goAnimations.length; i++) {
		if (goAnimations[i] == psName) {
			eval(goAnimations[i]).hide();
			eval(goAnimations[i]).reset();
		}
	}
}

function hideAnimations(psActualName) {
	for (var i=0; i<goAnimations.length; i++) {
		if (goAnimations[i] != psActualName) {
			eval(goAnimations[i]).hide();
		}
	}
}

/* ***********************************************************************************************************
   *****    Sonstige Objekte                                                                             *****
   *********************************************************************************************************** */

function addOtherScreenObject(psType, poObj) {
	loOtherScreenObjects.push({'type':psType,'obj':poObj});
	poObj.show = function() {
		this.htmlobj.style.visibility = 'visible';
	}
	poObj.hide = function() {
		this.htmlobj.style.visibility = 'hidden';
	}
}

/* ***********************************************************************************************************
   *****    Externe Dokumente                                                                            *****
   *********************************************************************************************************** */

function addExternal(psExternalID, poObj) {
	loExternals[psExternalID] = poObj;
}

/* ***********************************************************************************************************
   *****    Todos                                                                                        *****
   *********************************************************************************************************** */

function addTodo(psRef, psText, psStatus) {
	loTodos.push([psRef, psText, psStatus]);
}

/* ***********************************************************************************************************
   *****    Audiohandling                                                                                *****
   *********************************************************************************************************** */

function addAudio(psAudioID, poAudioObject) {
	loAudios[psAudioID] = poAudioObject;
}

function playAudio(psAudioID, psEvent) {
	try {
		var loOverlayMenu = document.getElementById("MenuOverlay");
		if (loOverlayMenu != null && loOverlayMenu.style.visibility == "visible") {
			window.setTimeout("playAudio('" + psAudioID + "','" + psEvent + "')",1000);
			return;
		}
	} catch (e) {
	}
	if (psEvent.indexOf("getValue") != -1) {
		var lsKey  = psEvent.split(",")[1];
		var lsEval = psEvent.split(",")[2];
		if (getValue(lsKey) == lsEval) {
			return;
		}
	}
	if ((loAudioObj = loAudios[psAudioID]) != null) {
		loAudioObj.play(psEvent);
		lsAudio2Edit = psAudioID;
	}
}

function audioCuePoint( point ) {
	doPageStep();
}

function getValue(psKey) {
	return parent.laValues[psKey];
}

function setValue(psKey, psValue) {
	parent.laValues[psKey] = psValue;
}

function removeValue(psKey) {
	parent.laValues[psKey] = null;
}


/* ***********************************************************************************************************
   *****    Videohandling                                                                                *****
   *********************************************************************************************************** */

function addVideo(psVideoID, poVideoObject) {
	loVideos[psVideoID] = poVideoObject;
}

// jw
function playVideo(psVideoID, psEvent) {
	if ((loVideoObj = loVideos[psVideoID]) != null) {
		loVideoObj.play(psEvent);
	}	
}

// end jw
/* ***********************************************************************************************************
   *****    Positionierte Objekte                                                                        *****
   *********************************************************************************************************** */

function isObjectTypeEqual(poObj2Show, loEqualsObj) {
	var lbObj2ShowVisibility = false;
	var lbObjTypeEqual = false;
	if (loEqualsObj.getVisibility() == 'visible') {
		lbObj2ShowVisibility = true;
	}
	if (loEqualsObj.screentype == poObj2Show.screentype) {
		lbObjTypeEqual = true;
	}
	if (lbObj2ShowVisibility == true && lbObjTypeEqual == true && loEqualsObj.positionObject == true) {
		return true;
	}
	return false;
}

function setObjPosition(poObj) {
	for (var i=0; i < loScreenTextObjects.length; i++) {
		var loObj = loScreenTextObjects[i];
		if (loObj == poObj) {
			//return;
		} else {
			//alert(isObjectTypeEqual(poObj, loObj) + " " + poObj.id + " " + loObj.id + " " + poObj.screentype + " " + poObj.positionObject);
			if (isObjectTypeEqual(poObj, loObj) && poObj.positionObject == true) {
				liTop = loObj.getTop(); 
				liHeight = loObj.getHeight();
				//alert(poObj.type + " " + loObj.type);
				var liDistance = 2;
				if (poObj.type == "TextScreen" && loObj.type == "TextMagentaBox") {
					liDistance = 20;
				} else if (poObj.type == loObj.type) {
					// Objekte gleichen Typs mit geringem Abstand
					liDistance = 4;
				} else {
					// Objekte unterschiedlichen Typs mit groe?rem Abstand
					liDistance = 8;
				}
				liObjectsNewTop = liTop + liHeight + liDistance;
				poObj.shiftTo(poObj.getLeft(), liObjectsNewTop);
			}
		}
	}
}

function setObj2Mouse(poObj) {
	hideObjectsOfType('TextPopup');
	closeVocabulary();
	loObj2PosAtMouse = poObj;
	loObj2PosAtMouseWidth = loObj2PosAtMouse.getWidth();
	loObj2PosAtMouseHeight = loObj2PosAtMouse.getHeight();
	loObj2PosAtMouseVis = false;
	document.onmousemove = moveToMouse;
}

function moveToMouse(e) {
	if (loObj2PosAtMouse != null) {
		if (loObj2PosAtMouseVis == false) {
			loObj2PosAtMouse.show();
			loObj2PosAtMouseVis = true;
		}
		var liLeft = getMousePos(e).x + 15;
		var liTop  = getMousePos(e).y + 15;
		if (liLeft + loObj2PosAtMouseWidth > giContentWidth) {
			liLeft -= loObj2PosAtMouseWidth - 5;
		}
		if (liTop + loObj2PosAtMouseHeight > giContentHeight) {
			liTop -= loObj2PosAtMouseHeight - 5;
		}
		loObj2PosAtMouse.shiftTo(liLeft, liTop);
	}
}

// Funktion setzt Buttons dynamisch unterhalb von Aufgabenelementen.
// Diese Funktion ist nur fuer OK- und Loesungsbutton gedacht!
function setButtonPosition(poObj) {
	if (getScreenTextType(poObj.lsName) == null) {
		return;
	}

	// Pruefen, ob ueberhaupt ein Aufgabenelement da ist, unter dem der Button platziert werden kann
	lsTaskElements = 'MCItem,CCItem,Matrix,Crossword';
	lbFound = false;
	for (var i=0; i < loScreenTextObjects.length; i++) {
		if (lsTaskElements.indexOf(loScreenTextObjects[i].type) != -1) {
			lbFound = true;
			break;
		}
	}
	if (!lbFound) {
		return;
	}

	var lsScreenType = getScreenTextType(poObj.lsName);
	for (var i=0; i < loScreenTextObjects.length; i++) {
		var loObj = loScreenTextObjects[i];
		if (loObj.screentype == lsScreenType) {
			liTop = loObj.getTop(); 
			liHeight = loObj.getHeight();
			var liDistance = 20;
			liObjectsNewTop = liTop + liHeight + liDistance;
			poObj.shiftTo(poObj.getLeft(), liObjectsNewTop);
		}
	}
}

/* ***********************************************************************************************************
   *****    SHOW-Funktionen                                                                              *****
   *********************************************************************************************************** */

function showFirstHideOthers(psObjIDs) {
	var laObjects = psObjIDs.split(',');
	for (var i=0; i<laObjects.length; i++) {
		if (i == 0) {
			showObj(laObjects[i]);
		} else {
			hideObj(laObjects[i]);
		}
	}
}

function showAndHideObjects(psObjIDs) {
	var laObjects = psObjIDs.split('~');
	hideObj(laObjects[1]);
	showObj(laObjects[0]);
}

function showObjs(psObjIDs) {
	showObj(psObjIDs);
}

function showObj(psObjID, psParam1) {
	if (psParam1 != null) {
		if (psParam1.indexOf("version=5") != -1) {
			return;
		}
	}
	var laObjects = psObjID.split(',');
	if (laObjects.length > 1) {
		for (var i=0; i<laObjects.length; i++) {
			showObj(laObjects[i]);
			//window.setTimeout('showObj("'+laObjects[i]+'")', 20);
		}
		return;
	}
	if (psObjID.toLowerCase() == 'exercise') {
		// Alle vorkommenden Aufgabenelemente anzeigen
		showObjectsOfType('InputField');
		showObjectsOfType('MCItem');
		showObjectsOfType('MCFeedback');
		showObjectsOfType('CCItem');
		showObjectsOfType('Matrix');
		showObjectsOfType('Crossword');
		showObjectsOfType('Scrabble');
		showObjectsOfType('CrossHints');
		showObjectsOfType('Slider');
		showObjectsOfType('Drag');
		showObjectsOfType('Target');
		//reorderDragDropObjects();
		//reorderSliders();
		//reorderOKButton();
		showObjectsOfType('Stamp');
		showObjectsOfType('StampTarget');
		showObjectsOfType('StampText');
		showObjectsOfType('StampMarker');
		showObjectsOfType('Formfield');
		showObjectsOfType('Field');
		// OK- und Feedback-Buttons unterhalb der Aufgabe positionieren
		if (liOKLeft == null && gbOKFix == false) {
			setButtonPosition(loOkButton);
			if (loSolution != null) {
				setButtonPosition(loSolution);
			}
		}
		// Weiter-Button bei Aufgaben sperren
		if (gbDisableNextButton == true) {
			parent.goNext.disable();
		}
		// Zurueck- und Wiederholen-Button auf Testseiten ausschalten
		if (parent.goPageItem.pagetype == 'tp') {
			if (parent.Test.laTestArray[1][0].filename == parent.goPageItem.filename) {
				parent.goBack.disable();
			}
			try {
				if (parent.goPageItem.result == "") {
					parent.goNext.disable();
				}
			} catch (e) {}
			//parent.goRepeat.disable();
		}
		// OK-Button anzeigen
		if (lbOKVisible == true) {
			if (parent.goPageItem.pagetype == 'tp') {
				loOkButton.lsSrcNormal		= "../../../../../layout/tsg_mobile/content/globalimages/button_oktest_01.png";
				loOkButton.lsSrcOver 			= "../../../../../layout/tsg_mobile/content/globalimages/button_oktest_02.png";
				loOkButton.lsSrcClicked		= "../../../../../layout/tsg_mobile/content/globalimages/button_oktest_03.png";
				loOkButton.lsSrcDisabled 	= "../../../../../layout/tsg_mobile/content/globalimages/button_oktest_04.png";
				loOkButton.disable();
				loOkButton.enable();
				loOkButton.hide();
			}
			loOkButton.show();
		}
		if (parent.parent.gbEditMode) {
			updateEditFlags();
		}
		if ((parent.goPageItem.pagetype == 'tp') && (parent.Test.lbFinished)) {
			if (lsLearningResourceSubType == 'MC' || lsLearningResourceSubType == 'SC' || lsLearningResourceSubType == 'MCMATRIX') {
				disableCursor();
			}
			if (lsLearningResourceSubType == 'DRAGDROP') {
				disableDrags();
			}
			if (lsLearningResourceSubType == 'INPUT') {
				disableInput();
			}
			if (lsLearningResourceSubType == 'FORM') {
				disableInput();
			}

			if (parent.gbShowUserInput == true) {
				setUserResult();
				loSolution.show();
			} else {
				loSolution.hide();
				showSolution();
			}
			
			loOkButton.hide();
			hideObjectsOfType('TextAnweisung');
			parent.goNext.enable();
		} else {
				// setUserResult();
		}
		return;
	}
	var loObj;
	if ((loObj = loExternals[psObjID]) != null) {
		loObj.show();
	}
	if ((loObj = getScreenTextObject(psObjID)) != null) {
		// Wenn das Objekt ein Text-Objekt ist
		if (loObj.getType() == 'Sequence') {
			loObj.show();
			// Zugehoeriges Audio abspielen / anderes Audio stoppen
			if (loAudios['a'+loSequences[liSequence-1]] != null) {
				playAudio('a'+loSequences[liSequence-1], 'false');
			} else {
				stopAudios();
			}
			handleSequences();
		} else if (loObj.getType() == 'Tab') {
			loObj.show();
			// Zugehoeriges Audio abspielen / anderes Audio stoppen
			if (loAudios['a'+psObjID] != null) {
				playAudio('a'+psObjID, 'false');
			} else {
				stopAudios();
			}
		} else if (loObj.getType() == 'TextPopup') {
			// Wenn das Objekt vom Typ Popup ist, dann alle anderen Popups schlie?n
			hideObjectsOfType('TextPopup');
			closeVocabulary();
			loObj.show();
		} else if (loObj.getType() == 'MouseObj') {
			// Objekt an Mauscursor positionieren
			setObj2Mouse(loObj);
		} else if (loObj.getType() == 'TextWBTTitle' || loObj.getType() == 'TextIntroTitle') {
			var lsTemp = parent.testtype;
			if (lsTemp == "test") {
				lsTemp = "Test";
			} else if (lsTemp == "pretest") {
				lsTemp = "Eingangstest";
			} else {
				lsTemp = "Abschlusstest";
			}
			parent.document.getElementById("LayerChapterTitle").innerHTML = searchReplace(searchReplace(loObj.htmlobj.innerHTML,"[TestTitle]",parent.testtitle),"[TestType]",lsTemp);
		} else {
			// sonst Objekt abhaengig vom Objekttyp positionieren und anzeigen
			if (loObj.getType() != "TextFreePos" && loObj.getType() != "TextMagentaBox") {
				setObjPosition(loObj);
			}
			loObj.show();
		}
	} else if ((loObj = getScreenGraphicObject(psObjID)) != null) {
		// Wenn das Objekt ein GrafikObjekt ist
		if (loObj.type == "GraphicScreenRight") {
			setObjPosition(loObj);
		}
		loObj.show();
	} else {
		// Wenn das Objekt ein DHTML-Objekt ist
		if ((loObj = document.getElementById(psObjID)) != null) {
			loObj.style.visibility = 'visible';
		}
	}
	if (parent.parent.gbEditMode) {
		updateEditFlags();
	}
}

function showObjectsOfType(psType) {
	// Im Array loOtherScreenObjects sind alle Objekte angelegt, die sich nicht als 
	// Text- oder Grafikobjekt zuordnen lassen
	for (var i=0; i<loOtherScreenObjects.length; i++) {
		if (loOtherScreenObjects[i].type == psType) {
			if (typeof(loOtherScreenObjects[i].obj) == 'string') {
				document.getElementById(loOtherScreenObjects[i].obj).style.visibility = 'visible';
			} else {
				if (loOtherScreenObjects[i].obj.show != null) {
					loOtherScreenObjects[i].obj.show();
				} else {
					loOtherScreenObjects[i].obj.style.visibility = 'visible';
				}
			}
		}
		
	}
	// Screentexte des angegebenen Typs positionieren und anzeigen
	for (var i=0; i<loScreenTextObjects.length; i++) {
		if (loScreenTextObjects[i].getType() == psType) {
			setObjPosition(loScreenTextObjects[i])
			loScreenTextObjects[i].show();
		}
	}
}

function showAllObjs() {
	for (var i=0; i<loOtherScreenObjects.length; i++) {
		if (typeof(loOtherScreenObjects[i].obj) == 'string') {
			document.getElementById(loOtherScreenObjects[i].obj).style.visibility = 'visible';
		} else {
			if (loOtherScreenObjects[i].obj.show != null) {
				loOtherScreenObjects[i].obj.show();
			} else {
				loOtherScreenObjects[i].obj.style.visibility = 'visible';
			}
		}
	}

	for (var i=0; i<loScreenTextObjects.length; i++) {
		loScreenTextObjects[i].show();
	}
}

/* ***********************************************************************************************************
   *****    HIDE-Funktionen                                                                              *****
   *********************************************************************************************************** */

function hideAndShowObjects(psObjIDs) {
	var laObjects = psObjIDs.split('~');
	hideObj(laObjects[0]);
	showObj(laObjects[1]);
}

function hideObjs(psObjIDs) {
	hideObj(psObjIDs);
}

function hideObj(psObjID, psParam1) {
	if (psParam1 != null) {
		if (parent.liDevice == 1) {
			if (psParam1.toLowerCase().indexOf("nover") != -1) {
				return;
			}
		} else if (parent.liDevice == 0) {
			if (psParam1.toLowerCase().indexOf("nohor") != -1) {
				return;
			}
		} else {
			if (psParam1.toLowerCase().indexOf("portrait") != -1) {
				return;
			}
		}
	}
	var laObjects = psObjID.split(',');
	if (laObjects.length > 1) {
		for (var i=0; i<laObjects.length; i++) {
			hideObj(laObjects[i]);
			//window.setTimeout('hideObj("'+laObjects[i]+'")', 20);
		}
		return;
	}
	//document.onmousemove = null;
	loObj2PosAtMouse = null;
	if (psObjID == 'feedback' && laFeedbacks) {
		// Alle Feedbacktexte ausblenden
		for (var i=0; i<laFeedbacks.length; i++) {
			document.getElementById(laFeedbacks[i]).style.visibility = 'hidden';
		}
	}
	if (psObjID.toLowerCase() == 'exercise') {
		// Alle vorkommenden Aufgabenelemente ausblenden
		hideObjectsOfType('TextFrage');
		hideObjectsOfType('InputField');
		hideObjectsOfType('MCItem');
		hideObjectsOfType('MCFeedback');
		hideObjectsOfType('CCItem');
		hideObjectsOfType('Matrix');
		hideObjectsOfType('Crossword');
		hideObjectsOfType('CrossHints');
		hideObjectsOfType('Slider');
		hideObjectsOfType('Drag');
		hideObjectsOfType('Target');
		hideObjectsOfType('Stamp');
		hideObjectsOfType('StampTarget');
		hideObjectsOfType('StampText');
		hideObjectsOfType('StampMarker');
		hideObjectsOfType('Formfield');
		hideObjectsOfType('Field');
		for (var i=0; i<laFeedbacks.length; i++) {
			document.getElementById(laFeedbacks[i]).style.visibility = 'hidden';
		}
		// Weiter-Button bei Aufgaben aktivieren (ist aber hier eigentlich nicht noetig, 
		// da bei dieser Aktion der User bereits auf Weiter geklickt haben muss
		if (gbDisableNextButton == true) {
			parent.goNext.enable();
		}
		loOkButton.hide();
		if (loSolution != null) {
			loSolution.hide();
		}
		if (parent.parent.gbEditMode) {
			updateEditFlags();
		}
		return;
	}
	var loObj;
	if ((loObj = getScreenTextObject(psObjID)) != null) {
		// Wenn das Objekt ein Textobjekt ist
		loObj.hide();
	} else if ((loObj = getScreenGraphicObject(psObjID)) != null) {
		// Wenn das Objekt ein Grafikobjekt ist
		loObj.hide();
	} else {
		// Wenn das Objekt ein DHTML-Objekt ist
		if ((loObj = document.getElementById(psObjID)) != null) {
			loObj.style.visibility = 'hidden';
		}
	}
	if (parent.parent.gbEditMode) {
		updateEditFlags();
	}
}	

function hideObjectsOfType(psType) {
	// Im Array loOtherScreenObjects sind alle Objekte angelegt, die sich nicht als 
	// Text- oder Grafikobjekt zuordnen lassen
	for (var i=0; i<loOtherScreenObjects.length; i++) {
		if (loOtherScreenObjects[i].type == psType) {
			if (typeof(loOtherScreenObjects[i].obj) == 'string') {
				document.getElementById(loOtherScreenObjects[i].obj).style.visibility = 'hidden';
			} else {
				if (loOtherScreenObjects[i].obj.hide != null) {
					loOtherScreenObjects[i].obj.hide();
				} else {
					loOtherScreenObjects[i].obj.style.visibility = 'hidden';
				}
			}
		}
	}
	// Screentexte des angegebenen Typs ausblenden
	for (var i=0; i<loScreenTextObjects.length; i++) {
		if (loScreenTextObjects[i].getType() == psType) {
			loScreenTextObjects[i].hide();
		}
	}
}

function startTimer(piTime) {
	loDelayTimer = window.setTimeout("doPageStep()",piTime * 1000);
}

/* ***********************************************************************************************************
   *****    Durchschleifende Funktionen                                                                  *****
   *********************************************************************************************************** */

document.onkeydown = keyDown;

function keyDown(e) {
	if (InternetExplorer) {
		var lsKey = window.event.keyCode;
	} else {
		var lsKey = e.which;
	}
	keyAction(lsKey);
	if (parent.keyAction) {
		parent.keyAction(lsKey);
	}
}

function keyAction(psKey) {
	if (psKey == 113 && parent.parent.gbEditMode) {
		// F2: Editierbare Objekte markieren
		toggleEditFlags();
	}
	if (parent.parent.gbEditMode == true) {
		if (gbDesignMode == true) {
			if (lsSelectedObject != null) {
				var liStep = 1;
				if (window.event.ctrlKey == true) {
					liStep = 10;
				}
				if (psKey >= 37 && psKey <= 40) {
					moveSelectedObj(psKey, liStep);
				}
			}
		}
	}
}


function mouseMove(e) {	
	if (InternetExplorer) {		
		giMouseY = event.clientY;
		giMouseX = event.clientX;
		window.clipboardData.setData("text",giMouseX + "," + giMouseY);
		window.status = giMouseX + "," + giMouseY;
	} else {
		giMouseY = e.pageY;
		giMouseX = e.pageX;
	}
}


function jumpTo(psURL) {
	parent.jumpTo(psURL);
}

function showDocument(psUrl) {
	if (psUrl.indexOf('http') != -1 || psUrl.indexOf('https') != -1) {
		parent.showHTMLDoc(psUrl);
	} else if (psUrl.indexOf('mailto:') != -1) {
		parent.showMailClient(psUrl);
	} else {
		parent.showPDFDoc(psUrl);
	}
}

function showPDF(psUrl) {
	parent.showPDFDoc(psUrl);
}

function getMousePos(e) {
	if (document.all) {
		return {'x':event.clientX,'y':event.clientY};
	} else {
		return {'x':e.clientX,'y':e.clientY};
	}
}

/* ***********************************************************************************************************
   *****    Interaktions-Funktionen                                                                      *****
   *********************************************************************************************************** */

function showFOD(psID) {
	if (psID != '') {
		var lsText  = '<table width="'+giFODWidth+'" cellspacing="0" cellpadding="'+giFODMargin+'" class="FOD">';
		    lsText += '<tr><td>'+document.getElementById('fod'+psID).innerHTML+'</td></tr></table>';
		document.getElementById('LayerFOD').innerHTML = lsText;
		document.onmousemove = moveFOD;
	} else {
		document.getElementById('LayerFOD').style.visibility = 'hidden';
		document.onmousemove = null;
	}
}

function moveFOD(e) {
	document.getElementById('LayerFOD').style.visibility = 'visible';
	var liLeft   = getMousePos(e).x + 15;
	var liTop    = getMousePos(e).y + 15;
	var liWidth  = document.getElementById('LayerFOD').clientWidth;
	var liHeight = document.getElementById('LayerFOD').clientHeight;
	if (liLeft+liWidth > parent.giMaxWidth) {
		liLeft = getMousePos(e).x - liWidth - 5;
	}
	if (liTop+liHeight > parent.giMaxHeight) {
		liTop = getMousePos(e).y - liHeight - 5;
	}
	document.getElementById('LayerFOD').style.left = liLeft;
	document.getElementById('LayerFOD').style.top  = liTop;
}

//

function stopAudioAndAnimations() {
	if (document.getElementById("AUDIO") != null) {
		var lsAudio = document.getElementById("AUDIO").title;
		if ((loAudioObj = loAudios[lsAudio]) != null) {
			loAudioObj.stop();
		}
	}
}

function handleSequences() {
	if (parent.giGotoSequence != null) {
		if (parent.giGotoSequence <= loSequences.length) {
			hideObj(loSequences[liSequence-1]);
			liSequence = parent.giGotoSequence;
			parent.giGotoSequence = null;
			showObj(loSequences[liSequence-1]);
		}
	}
	if (loSequences.length > 1) {
		goSequenceBack.show();
		goSequenceNext.show();
		if (liSequence == 1) {
			goSequenceBack.disable();
		} else {
			goSequenceBack.enable();
		}
		if (liSequence == loSequences.length) {
			goSequenceNext.disable();
		} else {
			goSequenceNext.enable();
		}
		document.getElementById('SequenceNumber').innerHTML = liSequence+' / '+loSequences.length;
	}
}

function sequenceBack() {
	if (liSequence > 1) {
		hideObj(loSequences[liSequence-1]);
		liSequence --;
		showObj(loSequences[liSequence-1]);
		// Zugehoeriges Audio abspielen / anderes Audio stoppen
		if (loAudios['a'+loSequences[liSequence-1]] != null) {
			playAudio('a'+loSequences[liSequence-1], 'false');
		} else {
			stopAudios();
		}
	}
}

function sequenceForward() {
	if (liSequence < loSequences.length) {
		hideObj(loSequences[liSequence-1]);
		liSequence ++;
		showObj(loSequences[liSequence-1]);
		if (loAudios['a'+loSequences[liSequence-1]] != null) {
			playAudio('a'+loSequences[liSequence-1], 'false');
		} else {
			stopAudios();
		}
	}
}

// Objekt bewegen
// Alle Perameter in einem String kommasepariert: 
// Objekt-ID, TargetX, TargetY, Anzahl Animationsschritte, Delay bis PageStep (ms)
function moveObj(psObj, psParams) {
	var loObj = document.getElementById(psObj);
	if (loObj == null) {
		loObj = document.getElementById('IMG'+psObj);
	}
	if (loObj == null) {
		return;
	}
	loObj.startX = loObj.offsetLeft;
	loObj.startY = loObj.offsetTop;
	loObj.targetX = parseInt(psParams.split(",")[0]);
	loObj.targetY = parseInt(psParams.split(",")[1]);
	loObj.speed = parseInt(psParams.split(",")[2]);
	loObj.delay = parseInt(psParams.split(",")[3]);
	loObj.step = 0;
	moveObj2(psObj);
}

function moveObj2(psObj) {
	var loObj	= document.getElementById(psObj);
	if (loObj == null) {
		loObj = document.getElementById('IMG'+psObj);
	}
	if (loObj == null) {
		return;
	}
	loObj.step++;
	loObj.style.left = loObj.startX + parseInt((loObj.targetX-loObj.startX) / loObj.speed * loObj.step);
	loObj.style.top  = loObj.startY + parseInt((loObj.targetY-loObj.startY) / loObj.speed * loObj.step);
	if (loObj.step <= loObj.speed) {
		window.setTimeout('moveObj2("'+psObj+'")',20);
	} else {
		loObj.style.left = loObj.targetX;
		loObj.style.top  = loObj.targetY;
		delay(loObj.delay);
	}
}

// Timer-Funktion
// loest automatisch nach der angegebenen Wartezeit (in ms) einen PageStep aus
function delay(psTime) {
	loDelayTimer = setTimeout('doPageStep()',parseInt(psTime));
}

function clearDelay() {
	if (loDelayTimer != null) {
		clearTimeout(loDelayTimer);
	}
	loDelayTimer = null;
}

function showVocabulary(psID, e) {
	// ggf. letztes Popup schlie?n
	hideObjectsOfType('TextPopup');
	// Position des aktuell geoeffneten Vokabl-Popups auch fuer neues Popup verwenden
	var liLeft = null;
	var liTop = null;
	if (document.getElementById('vocabulary') != null) {
		liLeft = document.getElementById('vocabulary').offsetLeft;
		liTop = document.getElementById('vocabulary').offsetTop;
		closeVocabulary();
	}
	loVocabFrame = parent.parent.vocabulary;
	var lsKey = null;
	var lsDescription = null;
	for (var i=0; i<loVocabFrame.k.length; i++) {
		if (loVocabFrame.k[i][0] == psID) {
			lsKey = loVocabFrame.k[i][1];
			lsDescription = loVocabFrame.d[i];
			break;
		}
	}
	if (lsDescription != null) {
		var loDiv = document.createElement('div');
		loDiv.id = 'vocabulary';
		loDiv.className = 'TextPopup';
		
		var lsStr  = '<table cellpadding="0" cellspacing="0" border="0" class="PopupBox"><tr><td>';
		    lsStr += '<div class="VocabularyDiv">';
			lsStr += '<b>'+lsKey+'</b><br><br>'+lsDescription;
			lsStr += '</div>';
			lsStr += '</td></tr></table>';
		    lsStr += '<table cellpadding="0" cellspacing="0" border="0" class="PopupCaption"><tr><td><img src="../../../../../layout/tsg_mobile/content/globalimages/button_popup_close_01.gif" hspace="11" vspace="5" style="cursor:pointer" onClick="closeVocabulary();"></td></tr></table>';
		loDiv.innerHTML = lsStr;
		document.getElementById('ContentScreen').appendChild(loDiv);
		if (liLeft == null) {
			var liLeft = getMousePos(e).x + 15;
			var liTop  = getMousePos(e).y + 15;
			if (liLeft + parseInt(document.getElementById('vocabulary').offsetWidth) > giContentWidth) {
				liLeft -= parseInt(document.getElementById('vocabulary').offsetWidth) - 5;
			}
			if (liTop + parseInt(document.getElementById('vocabulary').offsetHeight) > giContentHeight) {
				liTop -= parseInt(document.getElementById('vocabulary').offsetHeight) - 5;
			}
		}
		document.getElementById('vocabulary').style.left = liLeft;
		document.getElementById('vocabulary').style.top = liTop;
		document.getElementById('vocabulary').style.visibility = 'visible';
	} else {
		alert('Vokabluareintrag '+lsKey+' nicht gefunden!');
	}
}

function closeVocabulary() {
	if ((loObj = document.getElementById('vocabulary')) != null) {
		document.getElementById('ContentScreen').removeChild(loObj);
	}
}

function linkAction(poSrcElement) {
	e = linkAction.caller.arguments[0];
	lsFunction = poSrcElement.getAttribute('fn');
	lsArgs = poSrcElement.getAttribute('fnargs');
	if (lsFunction == 'over') {
		showObj(lsArgs);
		poSrcElement.onmouseout = function() {
			hideObj(lsArgs);
		}
	} else if (lsFunction == 'showVocabulary') {
		showVocabulary(lsArgs, e);
	} else {
		try {
			eval(lsFunction+'(\''+lsArgs+'\')');
		} catch (e) {
		}
	}
}

/* ************************************************************************** *
 * Seite vor.                                                                 *
 * @author	Klaus Schaab                                                      *
 * @date	26.04.2006                                                        *
 * @version	1.0                                                               *
 * ************************************************************************** */
function forward () {
	parent.forward();
}

/* ************************************************************************** *
 * Seite zurueck.                                                              *
 * @author	Klaus Schaab                                                      *
 * @date	26.04.2006                                                        *
 * @version	1.0                                                               *
 * ************************************************************************** */
function back () {
	parent.back();
}

/* ************************************************************************** *
 * Image mit Effekt ausblenden.                                               *
 * @author	Klaus Schaab                                                      *
 * @date	26.04.2006                                                        *
 * @version	1.0                                                               *
 * ************************************************************************** */
function fadeOut(psName,psDirection) {
	if (psDirection == null)
		psDirection = "right";
	if (psDirection == "alpha") {
		alphaOut(psName);
		return;
	}
	if ((loObj = getScreenGraphicObject(psName)) != null) {
		loObj.fadeOut(psDirection,10);
	}
}

/* ************************************************************************** *
 * Image mit Effekt einblenden.                                               *
 * @author	Klaus Schaab                                                      *
 * @date	26.04.2006                                                        *
 * @version	1.0                                                               *
 * ************************************************************************** */
function fadeIn(psName,psDirection) {
	if (psDirection == null)
		psDirection = "left";
	if (psDirection == "alpha") {
		alphaIn(psName);
		return;
	}
	if ((loObj = getScreenGraphicObject(psName)) != null) {
		loObj.fadeIn(psDirection,10);
	}
}

function alphaIn(psName) {
	if ((loObj = getScreenGraphicObject(psName)) != null) {
		loObj.alphaIn(0);
	} else if ((loObj = getScreenTextObject(psName)) != null) {
		setObjPosition(loObj);
		loObj.fadeIn(0);
	} else {
		// Wenn das Objekt ein DHTML-Objekt ist
		if ((loObj = document.getElementById(psName)) != null) {
			loObj.style.visibility = 'visible';
		}
	}
}

function alphaOut(psName) {
	if ((loObj = getScreenGraphicObject(psName)) != null) {
		loObj.alphaOut(100);
	} else if ((loObj = getScreenTextObject(psName)) != null) {
		loObj.fadeOut(100);
	} else {
		// Wenn das Objekt ein DHTML-Objekt ist
		if ((loObj = document.getElementById(psName)) != null) {
			loObj.style.visibility = 'hidden';
		}
	}
}


function cropImage(psName,psOptions) {
	if ((loObj = getScreenGraphicObject(psName)) != null) {
		loObj.crop(psOptions,10);
	}
}
//-->