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);
}
}
//-->