Initial archive: 15 SCORM modules + 9 PDFs - LFS Sachsen L363 CBRN-Erkundung

This commit is contained in:
2026-04-04 09:58:12 +02:00
commit 07a0980214
2475 changed files with 622335 additions and 0 deletions
@@ -0,0 +1,126 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="referrer" content="origin" />
<script>
/* jshint ignore:start */
// jscs:disable
// https://gist.github.com/982883
var uuid = function(a) {
return a // if the placeholder was passed, return
? ( // a random number from 0 to 15
a ^ // unless b is 8,
Math.random() // in which case
* 16 // a random number from
>> a/4 // 8 to 11
).toString(16) // in hexadecimal
: ( // or otherwise a concatenated string:
[1e7] + // 10000000 +
-1e3 + // -1000 +
-4e3 + // -4000 +
-8e3 + // -80000000 +
-1e11 // -100000000000,
).replace( // replacing
/[018]/g, // zeroes, ones, and eights with
uuid // random hex digits
);
};
window.frameHash = window.location.hash.replace(/^#/, '');
var postToParent = function(message) {
if (window.parent.postMessage != null) {
window.parent.postMessage(message, '*');
}
};
var onDidReceiveMessage = function(e) {
if (e.data.id === frameHash) {
var xhr = new XMLHttpRequest(),
now = new Date(),
data = {
messageId: uuid(),
sentAt: now.toISOString(),
batch: [ {
event: e.data.event,
properties: e.data.properties,
type: 'track',
messageId: uuid(),
timestamp: now.toISOString(),
context: {
ip: '0.0.0.0',
page: {
path: '/',
referrer: '',
search: '',
title: '',
url: 'http://'
}
},
integrations: {},
userId: e.data.aid
} ]
};
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
postToParent({
id: frameHash,
message: 'xhr sent'
});
window.onDidReceiveMessage = null;
}
};
xhr.open('POST', 'https://metrics.articulate.com/v1/import');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(data));
}
};
if ('onmessage' in window) {
window.addEventListener('message', onDidReceiveMessage, false);
} else {
// coming from flash, we will use older JS since we can expect some older IE versions
var validProps = [
'os', 'browser', 'playerVersion', 'playerType', 'lmsPresent', 'tinCanPresent',
'aoSupport', 'publishSource', 'protocol', 'productChannel', 'cid', 'screenResolution',
'pixelRatio'
];
var aid,
props = window.location.search.replace(/^\?/, '').split('&'),
config = {};
for (var i = 0, ii = props.length, currProp; i < ii; i++) {
currProp = props[i].split('=');
if (validProps.indexOf(currProp[0]) > -1 && currProp.length === 2) {
config[currProp[0]] = currProp[1];
} else if (currProp[0] === 'aid') {
aid = currProp[1];
}
}
window.onDidReceiveMessage({
data: {
id: frameHash,
event: 'player_course_load',
properties: config,
aid: aid
}
})
}
/* jshint ignore:end */
// jscs:enable
</script>
</head>
<body>
</body>
<script>
postToParent({
id: window.frameHash,
message: 'loaded'
});
</script>
</html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,273 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest identifier="_6Y4dTsX9b29_course_id" version="1.3" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd
http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd
http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd
http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd
http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd">
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>CAM 1.3</schemaversion>
<adlcp:location>metadata.xml</adlcp:location>
</metadata>
<organizations default="Bedienung_des_Photoionisationsdetektors_TIGER_ORG">
<organization identifier="Bedienung_des_Photoionisationsdetektors_TIGER_ORG" adlseq:objectivesGlobalToSystem="false">
<title>Bedienung des Photoionisationsdetektors TIGER</title>
<item identifier="Photoionisationsdetektro_SCO" identifierref="__6Y4dTsX9b29_course_id_RES" isvisible="true">
<title>Bedienung des Photoionisationsdetektors TIGER</title>
<imsss:sequencing>
<imsss:deliveryControls tracked="true" completionSetByContent="true" objectiveSetByContent="true" />
</imsss:sequencing>
</item>
<metadata>
<adlcp:location>metadata.xml</adlcp:location>
</metadata>
<imsss:sequencing>
<imsss:controlMode choice="true" flow="true" />
<imsss:deliveryControls tracked="true" completionSetByContent="false" objectiveSetByContent="false" />
</imsss:sequencing>
</organization>
</organizations>
<resources>
<resource identifier="__6Y4dTsX9b29_course_id_RES" type="webcontent" adlcp:scormType="sco" href="index_lms.html">
<file href="story_content/thumbnail.jpg" />
<file href="mobile/6nY59H7m6xO.png" />
<file href="story_content/5nAheWZMYsK_44100_48_0.mp3" />
<file href="mobile/639JHGrUAfI_M_1084_1084_P_203_0_2568_3064.png" />
<file href="mobile/5VKXz9wKf3k_M_1084_1084_P_497_0_2274_3064.png" />
<file href="mobile/5l0BxjZuDoG.png" />
<file href="mobile/6r2Ekmfbcrq_M_810_810.png" />
<file href="mobile/6F59RGyMgrI_M_810_810.png" />
<file href="story_content/6b7dOK4bfUa_44100_48_0.mp3" />
<file href="mobile/6CgEiaNiSQb_80.jpg" />
<file href="story_content/6OrlsUcOcGz_44100_48_0.mp3" />
<file href="story_content/6ZWSJqmUHG4_44100_48_0.mp3" />
<file href="mobile/5uEs2cPzEPw_80_P_58_159_1796_830.jpg" />
<file href="mobile/5uEs2cPzEPw_80_P_1626_935_43_48.jpg" />
<file href="mobile/5uEs2cPzEPw_80_P_1670_935_43_48.jpg" />
<file href="mobile/5uEs2cPzEPw_80_P_1757_931_89_58.jpg" />
<file href="mobile/5eYDryqSMU0_80_P_1798_931_50_57.jpg" />
<file href="mobile/6GV1xtZOwtO_80_P_461_937_37_46.jpg" />
<file href="mobile/5uEs2cPzEPw_80_P_466_940_31_40.jpg" />
<file href="mobile/5uEs2cPzEPw_80_P_472_173_36_27.jpg" />
<file href="mobile/6D4nbSvGJKX.png" />
<file href="mobile/6HaAVi5lEfo_M_810_810.png" />
<file href="mobile/67tAmK6zXuz_M_810_810.png" />
<file href="story_content/6UwgQnPrc5W_44100_48_0.mp3" />
<file href="story_content/6rNnC9t1d15_44100_48_0.mp3" />
<file href="mobile/6QiFOJ9xETX.png" />
<file href="mobile/5XrpSO6evuy_80.jpg" />
<file href="story_content/6XkEA5LkXGB_44100_48_0.mp3" />
<file href="mobile/60rB5DId97H_M_810_810.png" />
<file href="mobile/6gKqnalX8Zd_M_810_810.png" />
<file href="story_content/5p5kjeaFptJ_44100_48_0.mp3" />
<file href="mobile/6afTuKBrF7D_80.jpg" />
<file href="story_content/6mkRWiVE2CH_44100_48_0.mp3" />
<file href="story_content/5smdWlZiIjW_44100_48_0.mp3" />
<file href="story_content/6LRyQ5Sc9ES_44100_48_0.mp3" />
<file href="mobile/6qyTXrZn9za_80.jpg" />
<file href="story_content/5iMxWhyOaBm_44100_48_0.mp3" />
<file href="story_content/6AWhZkenucU_44100_48_0.mp3" />
<file href="mobile/5qvoOHwNtuc_M_810_810.png" />
<file href="story_content/6j1TAH1K3ba_44100_48_0.mp3" />
<file href="story_content/65qdMjczBaN_44100_48_0.mp3" />
<file href="story_content/6iT5USX0Zut_44100_48_0.mp3" />
<file href="story_content/5sNl588qD4z_44100_48_0.mp3" />
<file href="story_content/60azwK6foa8_44100_48_0.mp3" />
<file href="story_content/69jEK8UIxMB_44100_48_0.mp3" />
<file href="story_content/6T9WnGCjhuM_44100_48_0.mp3" />
<file href="mobile/6UnsbqNeOBb_M_400_400.png" />
<file href="mobile/6TPChSSrHZh_80.jpg" />
<file href="story_content/5XqeylU1yMp_44100_48_0.mp3" />
<file href="mobile/5xT2UjRlS0u.png" />
<file href="mobile/5laTjYmkPPB.png" />
<file href="mobile/6WPe72mkPY9.png" />
<file href="mobile/6PVkNlEdpHS.png" />
<file href="story_content/5lq4B9rzzgm_44100_48_0.mp3" />
<file href="mobile/6jXhkMyBJM6.png" />
<file href="mobile/5gCa4uTiba7.png" />
<file href="mobile/6Vbokvk15yw.png" />
<file href="mobile/5yZPqth7Fai.png" />
<file href="story_content/6pAMnmHv3iI_44100_48_0.mp3" />
<file href="mobile/6ciUlbDXkzN_80.jpg" />
<file href="story_content/5s4DxRcLa5A_44100_48_0.mp3" />
<file href="story_content/6moaUO4yFx4_44100_48_0.mp3" />
<file href="story_content/6VvHejs8mxi_44100_48_0.mp3" />
<file href="story_content/5yHW1dzMF98_44100_48_0.mp3" />
<file href="story_content/5dSnQuQkmC6_44100_48_0.mp3" />
<file href="mobile/6j3AK0JbL2Q_80_P_0_103_903_546.jpg" />
<file href="mobile/6bIUNWncpWU_80.jpg" />
<file href="mobile/6bIUNWncpWU_80_RD23200.jpg" />
<file href="mobile/5nsQxhnj1tb_80.jpg" />
<file href="mobile/5nsQxhnj1tb_80_RD23200.jpg" />
<file href="mobile/5o0Y8Ey4s9D_M_72_72.png" />
<file href="mobile/5o0Y8Ey4s9D_M_72_72_RD23200.png" />
<file href="mobile/5rUdhDVmitt_M_72_72.png" />
<file href="mobile/5rUdhDVmitt_M_72_72_RD23200.png" />
<file href="mobile/6fwTZsxhlUa_M_72_72.png" />
<file href="mobile/6fwTZsxhlUa_M_72_72_RD23200.png" />
<file href="mobile/5gbNDz88J3O_M_72_72.png" />
<file href="mobile/5gbNDz88J3O_M_72_72_RD23200.png" />
<file href="mobile/6QlRfJRZJek_M_72_72.png" />
<file href="mobile/6QlRfJRZJek_M_72_72_RD23200.png" />
<file href="mobile/6BuioR3tRMS_M_72_72.png" />
<file href="mobile/6BuioR3tRMS_M_72_72_RD23200.png" />
<file href="mobile/6iqs7AdlGLU_80.jpg" />
<file href="mobile/6iqs7AdlGLU_80_RD23200.jpg" />
<file href="mobile/5XznVlQYP15_M_72_72.png" />
<file href="mobile/5XznVlQYP15_M_72_72_RD23200.png" />
<file href="mobile/5zTrAog89RL_M_72_72.png" />
<file href="mobile/5zTrAog89RL_M_72_72_RD23200.png" />
<file href="mobile/6YHXiw9fUbp_80.jpg" />
<file href="mobile/6YHXiw9fUbp_80_RD23200.jpg" />
<file href="story_content/6b62sL3cONI_44100_48_0.mp3" />
<file href="mobile/5alAw7YbrXa_80.jpg" />
<file href="mobile/5alAw7YbrXa_80_RD23200.jpg" />
<file href="mobile/5lh8sYaTV2e_M_100_100.png" />
<file href="mobile/5lh8sYaTV2e_M_100_100_RD23200.png" />
<file href="mobile/6H6TLFViSmQ_M_168_168.png" />
<file href="mobile/6H6TLFViSmQ_M_168_168_RD23200.png" />
<file href="mobile/5iZKVKzjoGk_M_100_100.png" />
<file href="mobile/5iZKVKzjoGk_M_100_100_RD23200.png" />
<file href="mobile/5vs7ewaW8Sz_M_168_168.png" />
<file href="mobile/5vs7ewaW8Sz_M_168_168_RD23200.png" />
<file href="mobile/6LlfkOZAxeV_M_100_100.png" />
<file href="mobile/6LlfkOZAxeV_M_100_100_RD23200.png" />
<file href="mobile/6b71VFwkF4P_M_168_168.png" />
<file href="mobile/6b71VFwkF4P_M_168_168_RD23200.png" />
<file href="mobile/6c9JGy9syUV_80.jpg" />
<file href="mobile/6c9JGy9syUV_80_RD23200.jpg" />
<file href="mobile/65yaWZMvfQw_M_100_100.png" />
<file href="mobile/65yaWZMvfQw_M_100_100_RD23200.png" />
<file href="mobile/5le3Kpui3EJ_80.jpg" />
<file href="mobile/5le3Kpui3EJ_80_RD23200.jpg" />
<file href="story_content/6M0rI2ikYBx_44100_48_0.mp3" />
<file href="story_content/6ozc2K2jaj8_44100_48_0.mp3" />
<file href="story_content/5yKUwVvcKZi_44100_48_0.mp3" />
<file href="story_content/5VjNXAsJbeh_44100_48_0.mp3" />
<file href="story_content/605g3QkBHzX_44100_48_0.mp3" />
<file href="mobile/5boitUEtAW1_80.jpg" />
<file href="mobile/5ygDCTde1Wj_80.jpg" />
<file href="mobile/6V6KJe40JoU_80.jpg" />
<file href="mobile/6YxCcLTHDCl_M_256_256.png" />
<file href="mobile/6PHSL1Wu7rQ_80.jpg" />
<file href="mobile/6Rr6C307AtU_M_256_256.png" />
<file href="mobile/6HQYdTOwrFv_M_256_256.png" />
<file href="story_content/5xhv7IrTwIj_44100_48_0.mp3" />
<file href="story_content/6eyT6THWP9E_44100_48_0.mp3" />
<file href="mobile/5dqS45LPMpO_80.jpg" />
<file href="mobile/5uX9TOI3k3z_80.jpg" />
<file href="mobile/63Gt5D3KAxI_80.jpg" />
<file href="mobile/5Y6KPkkGws7_M_810_810.png" />
<file href="story_content/5XFvPethPG6_44100_48_0.mp3" />
<file href="mobile/67EdjiUNoRU_M_470_470.png" />
<file href="mobile/6D6GGy2SyZT_M_470_470.png" />
<file href="mobile/6cgbEbP7bcD_80.jpg" />
<file href="mobile/6kIklWkfqxh_80_P_0_0_1430_812.jpg" />
<file href="mobile/6k9ooRXmE5m_80.jpg" />
<file href="mobile/6bcewLjj0G0_80.jpg" />
<file href="mobile/64sEz3PLMt8_M_470_470.png" />
<file href="meta.xml" />
<file href="story_content/url.png" />
<file href="story_content/triggers.js" />
<file href="story_content/user.js" />
<file href="mobile/Slide6SL5SIOjHXs.jpg" />
<file href="mobile/Shape5waOeeayEcY.png" />
<file href="mobile/Shape69xPgqQhnrA.png" />
<file href="mobile/Shape6I8m9pyyGSK.png" />
<file href="mobile/txt__default_6gGvPq4yILq.png" />
<file href="mobile/txt__default_5ZWXZjccwbO.png" />
<file href="mobile/txt__default_6IXUXCtf6Kc.png" />
<file href="mobile/txt__default_5WyxhzQ4rRP.png" />
<file href="mobile/txt__default_6Ipe64EVU14.png" />
<file href="mobile/txt__default_5fm4RT60UwV.png" />
<file href="mobile/Shape6AuPthSKRKy.png" />
<file href="mobile/txt__default_6Z7bB6dkJto.png" />
<file href="mobile/Shape5gmKhFvJ3wl.png" />
<file href="mobile/txt__default_6TgFMdik7Sg.png" />
<file href="mobile/txt__default_63sFVlwjMi0.png" />
<file href="mobile/Shape6JSoKwd9bR5.png" />
<file href="mobile/txt__default_6FYm7J9qNQD.png" />
<file href="mobile/txt__default_5qSLJngBTsL.png" />
<file href="mobile/Shape6W2Oc6wQb96.png" />
<file href="mobile/txt__default_5h2AIm8ekUl.png" />
<file href="mobile/Shape6We6oVxH0pu.png" />
<file href="mobile/txt__default_5vcH3KcMWTM.png" />
<file href="mobile/txt__default_65Es1MnjOMJ.png" />
<file href="mobile/Shape5mEnyjJ28Yk.png" />
<file href="mobile/Shape5nE1pGPmQoj.png" />
<file href="mobile/Shape6dcTx5rpvqy.png" />
<file href="mobile/Shape6bl1TT7nhWA.png" />
<file href="mobile/Shape6lIQ8vZvQtP.png" />
<file href="mobile/txt__default_5YufrbkP52H.png" />
<file href="html5/data/css/output.min.css" />
<file href="html5/data/js/5agkTSz1vW9.js" />
<file href="html5/data/js/5bM9kJY2kjR.js" />
<file href="html5/data/js/5cjWHeEQkdH.js" />
<file href="html5/data/js/5dwfELLOTO2.js" />
<file href="html5/data/js/5iBhblylgEy.js" />
<file href="html5/data/js/5j1JRPowZb4.js" />
<file href="html5/data/js/5jwuL0iK8aI.js" />
<file href="html5/data/js/5nGU2BnxF1S.js" />
<file href="html5/data/js/5pyDSK3XckR.js" />
<file href="html5/data/js/5sUAyujWL4N.js" />
<file href="html5/data/js/5tz1pue8Txr.js" />
<file href="html5/data/js/5uMqpMQypV8.js" />
<file href="html5/data/js/5VkIJkB7EYP.js" />
<file href="html5/data/js/5W6WZbDUjMP.js" />
<file href="html5/data/js/5wloMYj1nbe.js" />
<file href="html5/data/js/5yggmeTCp39.js" />
<file href="html5/data/js/5Ygvs5w1WiN.js" />
<file href="html5/data/js/5ZugFkhb7FJ.js" />
<file href="html5/data/js/60DBFkCdXTV.js" />
<file href="html5/data/js/62eDtvKTaEq.js" />
<file href="html5/data/js/64LoQW9CZlg.js" />
<file href="html5/data/js/65eE5fan6jM.js" />
<file href="html5/data/js/65W3oeJMUhF.js" />
<file href="html5/data/js/6anqLZuXTfV.js" />
<file href="html5/data/js/6AZKLBuuXqG.js" />
<file href="html5/data/js/6BDQEMSmZGY.js" />
<file href="html5/data/js/6BfZ0mriWlw.js" />
<file href="html5/data/js/6BhuGETHG9w.js" />
<file href="html5/data/js/6EDteuE443u.js" />
<file href="html5/data/js/6G7UH7Np9ci.js" />
<file href="html5/data/js/6gIB7Q2dTp3.js" />
<file href="html5/data/js/6Giyfg8wMi6.js" />
<file href="html5/data/js/6GYwUle9cul.js" />
<file href="html5/data/js/6h0E0VufTUV.js" />
<file href="html5/data/js/6HTl9GM1MzM.js" />
<file href="html5/data/js/6iFHVWceplB.js" />
<file href="html5/data/js/6ISWVwd3Oyh.js" />
<file href="html5/data/js/6KGF7Ko7sEZ.js" />
<file href="html5/data/js/6KjcpeU2SoK.js" />
<file href="html5/data/js/6KQi8xDU3H0.js" />
<file href="html5/data/js/6nZqae66R9h.js" />
<file href="html5/data/js/6P5bUNtOIUO.js" />
<file href="html5/data/js/6X3ES0gTFo7.js" />
<file href="html5/data/js/6XW9DfCM1Iw.js" />
<file href="html5/data/js/6Y4cEje46mh.js" />
<file href="html5/data/js/6Y9DyNUxmFR.js" />
<file href="html5/data/js/6YoLRBsI8bS.js" />
<file href="html5/data/js/6ZepEBTglZM.js" />
<file href="html5/data/js/data.js" />
<file href="html5/data/js/frame.js" />
<file href="html5/data/js/paths.js" />
<file href="html5/lib/scripts/bootstrapper.min.js" />
<file href="html5/lib/scripts/frame.desktop.min.js" />
<file href="html5/lib/scripts/frame.mobile.min.js" />
<file href="html5/lib/scripts/slides.min.js" />
<file href="html5/lib/stylesheets/desktop.min.css" />
<file href="html5/lib/stylesheets/mobile.min.css" />
<file href="html5/lib/stylesheets/mobile-fonts/open-sans-bold.woff" />
<file href="html5/lib/stylesheets/mobile-fonts/open-sans-light.woff" />
<file href="html5/lib/stylesheets/mobile-fonts/open-sans-regular.woff" />
<file href="analytics-frame.html" />
<file href="story.html" />
<file href="index_lms.html" />
<file href="lms/AICCComm.html" />
<file href="lms/blank.html" />
<file href="lms/browsersniff.js" />
<file href="lms/goodbye.html" />
<file href="lms/scormdriver.js" />
</resource>
</resources>
</manifest>
@@ -0,0 +1,469 @@
<!doctype html>
<html lang="de-DE">
<head>
<meta charset="utf-8">
<!-- Erstellt mit Storyline 360 x64 ? http://www.articulate.com -->
<!-- version: 3.92.33225.0 -->
<title>Bedienung des Photoionisationsdetektors TIGER</title>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,shrink-to-fit=no,minimal-ui"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<style>
html, body { height: 100%; padding: 0; margin: 0 }
#app { height: 100%; width: 100%; }
</style>
<script>
window.DS = {};
window.globals = {
DATA_PATH_BASE: '',
HAS_FRAME: true,
HAS_SLIDE: true,
lmsPresent: true,
tinCanPresent: false,
cmi5Present: false,
aoSupport: false,
scale: 'noscale',
captureRc: false,
browserSize: 'optimal',
bgColor: '#282828',
features: 'DropInAcc,DropInBase,DropInCore,DropInInteractions,DropInMisc,DropInVectors,DropInVideo,LayerPresentAsDialog,MultipleQuizTracking,UpdatedThemeEditor',
themeName: 'unified',
preloaderColor: '#FFFFFF',
suppressAnalytics: false,
productChannel: 'stable',
publishSource: 'storyline',
aid: 'aid|0f3e427c-7616-4bd9-9499-cd3ff922f714',
cid: 'd28c7de1-839e-4c49-b25f-f580690341b4',
playerVersion: '3.92.33225.0',
publishTimestamp: '2025-10-24T07:49:42.2361780Z',
maxIosVideoElements: 10,
connectionSettings: { message: 'Sie%20sind%20offline.%20Die%20Verbindung%20wird%20wiederhergestellt%20...', useDarkTheme: false, mode: 'disabled' },
hasFeature: function(feature) {
return this.features.split(',').includes(feature);
},
parseParams: function(qs) {
if (window.globals.parsedParams != null) {
return window.globals.parsedParams;
}
qs = (qs || window.location.search.substr(1)).split('+').join(' ');
var params = {},
tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1]).trim()] =
decodeURIComponent(tokens[2]).trim();
}
window.globals.parsedParams = params;
return params;
}
};
</script>
<script>
var isIe11 = ('ActiveXObject' in window || window.MSBlobBuilder != null)
&& window.msCrypto != null && !window.ActiveXObject;
if (isIe11) {
window.globals.unsupportedBrowser = true;
document.write(atob('PHN0eWxlPg0KICBAZm9udC1mYWNlIHsNCiAgICBmb250LWZhbWlseTogIk9wZW4gU2FucyBGdWxsIjsNCiAgICBmb250LXN0eWxlOiBub3JtYWw7DQogICAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgICBzcmM6IHVybCgiLi9odG1sNS9saWIvc3R5bGVzaGVldHMvbW9iaWxlLWZvbnRzL29wZW4tc2Fucy1yZWd1bGFyLndvZmYiKSBmb3JtYXQoIndvZmYiKTsNCiAgfQ0KDQogICogew0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KICB9DQoNCiAgYm9keSwNCiAgaHRtbCB7DQogICAgYmFja2dyb3VuZDogYmxhY2s7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIGZvbnQtZmFtaWx5OiAiT3BlbiBTYW5zIEZ1bGwiLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogIH0NCg0KICAuc2xpZGUtbG9hZGVyIHsNCiAgICBkaXNwbGF5OiBub25lOw0KICB9DQoNCiAgLm1vYmlsZS1zdGFydC1jb3Vyc2UtdGl0bGUgew0KICAgIGZvbnQtc2l6ZTogMjlweDsNCiAgICBwYWRkaW5nLWJvdHRvbTogMzMuNzVweDsNCiAgICBwYWRkaW5nLXRvcDogMzMuNzVweDsNCiAgICB0ZXh0LXNoYWRvdzogNHB4IDRweCAyNXB4IHJnYigwLCAwLCAwLCAuMyk7DQogICAgY29sb3I6ICNlOGU4ZTg7DQogICAgei1pbmRleDogOTk5Ow0KICB9DQoNCiAgcCB7DQogICAgZm9udC1zaXplOiAxLjFlbTsNCiAgfQ0KDQogIHNwYW4gew0KICAgIGhlaWdodDogMTAwJTsNCiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgfQ0KDQogIC5jb250ZW50IHsNCiAgICBiYWNrZ3JvdW5kOiAjMDAwOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgZm9udC1zaXplOiAxNXB4Ow0KICAgIGNvbG9yOiAjYWFhOw0KICAgIHdpZHRoOiA4MCU7DQogICAgbWF4LXdpZHRoOiA1MzVweDsNCiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgfQ0KDQogIC5idG4tY29udGFpbiB7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIG1hcmdpbi10b3A6IDNlbTsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIH0NCg0KICAuaWUxMS13YXJuIHAgYSB7DQogICAgY29sb3I6ICM1ZGIwZmYgIWltcG9ydGFudDsNCiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50Ow0KICB9DQoNCiAgYS5sZWFybiB7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIGZsb2F0OiBsZWZ0Ow0KICAgIG1hcmdpbi1yaWdodDogMmVtOw0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsNCiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgcGFkZGluZzogLjVlbTsNCiAgICBwYWRkaW5nOiAxOHB4Ow0KICAgIHBhZGRpbmctbGVmdDogNTBweDsNCiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4Ow0KICAgIGJhY2tncm91bmQ6ICNmZmY7DQogICAgYm9yZGVyLXJhZGl1czogNDBweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogIH0NCg0KICBhLmxlYXJuOmFmdGVyIHsNCiAgICBjb250ZW50OiAiIjsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQogICAgbGVmdDogMjBweDsNCiAgICB0b3A6IDUwJTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7DQogICAgd2lkdGg6IDA7DQogICAgaGVpZ2h0OiAwOw0KICAgIGJvcmRlci1zdHlsZTogc29saWQ7DQogICAgYm9yZGVyLXdpZHRoOiA5cHggMCA5cHggMTVweDsNCiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM2ZTZlNmU7DQogICAgY2xlYXI6IGJvdGg7DQogIH0NCg0KICAuaWUxMS13YXJuIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgd2lkdGg6IDEwMCU7DQogICAgaGVpZ2h0OiAxMDAlOw0KICAgIGJhY2tncm91bmQ6IGJsYWNrOw0KICB9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJpZTExLXdhcm4iPg0KICA8c3Bhbj48L3NwYW4+DQogIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KICAgIDxkaXYgY2xhc3M9Im1vYmlsZS1zdGFydC1jb3Vyc2UtdGl0bGUiPkVuZCBvZiBTdXBwb3J0IGZvciBJbnRlcm5ldCBFeHBsb3JlciAxMTwvZGl2Pg0KICAgIDxwPkZvbGxvd2luZyBNaWNyb3NvZnQncyBsZWFkLCB3ZSBlbmRlZCBzdXBwb3J0IGZvciBJbnRlcm5ldCBFeHBsb3JlciAxMSAoSUUxMSkuDQogICAgICBBcyBvZiBKdWx5IDIwMjIsIHlvdSBjYW4gbm8gbG9uZ2VyIHZpZXcgUmlzZSAzNjAsIFN0b3J5bGluZSAzNjAsIG9yIFN0dWRpbyAzNjANCiAgICAgIGNvdXJzZXMgaW4gSUUxMS4gVXNlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHN1cHBvcnRlZCBicm93c2VyIC0NCiAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vY2hyb21lL2Rvd25sb2Fkcy8iIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgQ2hyb21lPC9hPiwNCiAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZWRnZSIgdGFyZ2V0PSJfYmxhbmsiPk1pY3Jvc29mdCBFZGdlPC9hPiwNCiAgICAgIG9yDQogICAgICA8YSBocmVmPSJodHRwczovL3d3dy5tb3ppbGxhLm9yZy9lbi1VUy9maXJlZm94L25ldy8iIHRhcmdldD0iX2JsYW5rIj5Nb3ppbGxhIEZpcmVmb3g8L2E+Lg0KICAgIDwvcD4NCiAgICA8ZGl2IGNsYXNzPSJidG4tY29udGFpbiI+DQogICAgICA8YSBjbGFzcz0ibGVhcm4iIGhyZWY9Imh0dHBzOi8vYXJ0aWN1bGF0ZS5jb20vc3VwcG9ydC9hcnRpY2xlL0VuZC1vZi1TdXBwb3J0LWZvci1JbnRlcm5ldC1FeHBsb3Jlci0xMSINCiAgICAgICAgdGFyZ2V0PSJfYmxhbmsiPkxlYXJuIE1vcmU8L2E+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQo='));
}
</script>
<script>
if (window.globals.hasFeature('MultiLanguageSinglePackageSupport')) {
}
</script>
<script src="lms/scormdriver.js" charset="utf-8"></script>
<script>window.THREE = { };</script>
</head>
<body style="background: #282828" class="cs-HTML theme-unified">
<!-- 360 -->
<script>!function(){var e,i=/iPhone/i,o=/iPod/i,n=/iPad/i,t=/\biOS-universal(?:.+)Mac\b/i,r=/\bAndroid(?:.+)Mobile\b/i,a=/Android/i,d=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,p=/Silk/i,l=/Windows Phone/i,u=/\bWindows(?:.+)ARM\b/i,b=/BlackBerry/i,s=/BB10/i,c=/Opera Mini/i,f=/\b(CriOS|Chrome)(?:.+)Mobile/i,h=/Mobile(?:.+)Firefox\b/i,v=function(e){return void 0!==e&&"MacIntel"===e.platform&&"number"==typeof e.maxTouchPoints&&e.maxTouchPoints>1&&"undefined"==typeof MSStream};e=function(e){var m={userAgent:"",platform:"",maxTouchPoints:0};e||"undefined"==typeof navigator?"string"==typeof e?m.userAgent=e:e&&e.userAgent&&(m={userAgent:e.userAgent,platform:e.platform,maxTouchPoints:e.maxTouchPoints||0}):m={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};var g=m.userAgent,y=g.split("[FBAN");void 0!==y[1]&&(g=y[0]),void 0!==(y=g.split("Twitter"))[1]&&(g=y[0]);var A=function(e){return function(i){return i.test(e)}}(g),w={apple:{phone:A(i)&&!A(l),ipod:A(o),tablet:!A(i)&&(A(n)||v(m))&&!A(l),universal:A(t),device:(A(i)||A(o)||A(n)||A(t)||v(m))&&!A(l)},amazon:{phone:A(d),tablet:!A(d)&&A(p),device:A(d)||A(p)},android:{phone:!A(l)&&A(d)||!A(l)&&A(r),tablet:!A(l)&&!A(d)&&!A(r)&&(A(p)||A(a)),device:!A(l)&&(A(d)||A(p)||A(r)||A(a))||A(/\bokhttp\b/i)},windows:{phone:A(l),tablet:A(u),device:A(l)||A(u)},other:{blackberry:A(b),blackberry10:A(s),opera:A(c),firefox:A(h),chrome:A(f),device:A(b)||A(s)||A(c)||A(h)||A(f)},any:!1,phone:!1,tablet:!1};return w.any=w.apple.device||w.android.device||w.windows.device||w.other.device,w.phone=w.apple.phone||w.android.phone||w.windows.phone,w.tablet=w.apple.tablet||w.android.tablet||w.windows.tablet,w}(),"object"==typeof exports&&"undefined"!=typeof module?module.exports=e:"function"==typeof define&&define.amd?define((function(){return e})):this.isMobile=e}();
window.isMobile.apple.tablet = window.isMobile.apple.tablet ||
(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
window.isMobile.apple.device = window.isMobile.apple.device || window.isMobile.apple.tablet;
window.isMobile.tablet = window.isMobile.tablet || window.isMobile.apple.tablet;
window.isMobile.any = window.isMobile.any || window.isMobile.apple.tablet;
</script>
<div id="focus-sink" tabindex="-1"></div>
<div id="preso"></div>
<script>
(function() {
var classTypes = [ 'desktop', 'mobile', 'phone', 'tablet' ];
var addDeviceClasses = function(prefix, testObj) {
var curr, i;
for (i = 0; i < classTypes.length; i++) {
curr = classTypes[i];
if (testObj[curr]) {
document.body.classList.add(prefix + curr);
}
}
};
var params = window.globals.parseParams(),
isDevicePreview = params.devicepreview === '1',
isPhoneOverride = params.deviceType === 'phone' || (isDevicePreview && params.phone == '1'),
isTabletOverride = (params.deviceType === 'tablet' || isDevicePreview) && !isPhoneOverride,
isMobileOverride = isPhoneOverride || isTabletOverride;
var deviceView = {
desktop: !window.isMobile.any && !isMobileOverride,
mobile: window.isMobile.any || isMobileOverride,
phone: isPhoneOverride || (window.isMobile.phone && !isTabletOverride),
tablet: isTabletOverride || window.isMobile.tablet
};
window.globals.deviceView = deviceView;
window.isMobile.desktop = !window.isMobile.any;
window.isMobile.mobile = window.isMobile.any;
addDeviceClasses('view-', deviceView);
})();
</script>
<script src='story_content/triggers.js' type=text/javascript></script>
<script src='story_content/user.js' type=text/javascript></script>
<div class="slide-loader"></div>
<script>
var doc = document, loader = doc.body.querySelector('.slide-loader'); [ 1, 2, 3 ].forEach(function(n) { var d = doc.createElement('div'); d.style.backgroundColor = window.globals.preloaderColor; d.classList.add('mobile-loader-dot'); d.classList.add('dot' + n); loader.appendChild(d); });
</script>
<div class="mobile-load-title-overlay" style="display: none">
<div class="mobile-load-title">Bedienung des Photoionisationsdetektors TIGER</div>
</div>
<div class="mobile-chrome-warning"></div>
<style>
.warn-connection-dialog {
display: none;
background: transparent;
pointer-events: all;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 999;
}
.warn-connection-content {
pointer-events: all;
border-radius: 4px;
background: white;
border: 1px solid #E7E7E7;
color: #333333;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
transition: all 150ms ease-out;
position: absolute;
white-space: nowrap;
}
.view-phone.is-landscape .warn-connection-content {
left: 23px;
bottom: 23px;
}
.view-tablet.is-landscape .warn-connection-content {
left: 50%;
top: 20px;
transform: translateX(-50%);
}
.view-mobile.is-portrait .warn-connection-content {
transform: translate(-50%, calc(-100% - 15px));
}
.warn-connection-content p {
display: inline-block;
margin: 0 8px 0 0;
line-height: 33px;
font-size: 11px;
}
.warn-connection-content svg {
position: relative;
vertical-align: middle;
margin: 0 2px 2px 8px;
}
.view-desktop .warn-connection-content {
left: 1.5em;
bottom: 1.5em;
}
.view-desktop .warn-connection-content p {
font-size: 1.1em;
}
.is-offline .warn-connection-dialog {
display: block;
}
.is-offline .cs-panel * {
pointer-events: none !important;
}
.is-offline .cs-panel {
pointer-events: all !important;
}
.is-offline #nav-controls * {
pointer-events: none !important;
}
.is-offline #nav-controls {
pointer-events: all !important;
}
</style>
<div class="warn-connection-dialog" role="alertdialog" aria-modal="true" tabindex="0" aria-labelledby="warn-connection-message">
<div class="warn-connection-content">
<svg width="17" height="15" viewBox="0 0 17 15" xmlns="http://www.w3.org/2000/svg">
<path fill="#8F0000" stroke="white" d="M16.07,12.98 L15.88,12.23 L9.51,1.21 C8.97,0.26,7.6,0.26,7.06,1.21 L0.69,12.23 C0.15,13.16,0.81,14.36,1.91,14.36 H14.65 C15.47,14.36,16.05,13.7,16.07,12.98 Z"/>
<path fill="white" stroke="white" d="M8.58,5.5 C8.35,5.28,8.5,5.35,8.21,5.32 C8.09,5.35,7.97,5.49,7.96,5.67 C7.97,5.79,7.98,5.92,7.98,6.04 L7.98,6.04 C7.99,6.17,8,6.31,8.01,6.43 L8.01,6.44 C8.03,6.92,8.06,7.41,8.09,7.9 L8.09,7.9 C8.12,8.39,8.14,8.88,8.17,9.37 C8.17,9.39,8.18,9.42,8.2,9.44 C8.23,9.46,8.25,9.47,8.28,9.47 C8.31,9.47,8.34,9.46,8.35,9.44 C8.37,9.43,8.38,9.4,8.39,9.35 L8.39,9.34 C8.39,9.24,8.4,9.15,8.4,9.05 L8.4,9.05 C8.41,8.96,8.41,8.86,8.42,8.75 C8.43,8.44,8.45,8.12,8.47,7.81 L8.47,7.81 C8.49,7.49,8.51,7.18,8.53,6.87 C8.55,6.46,8.56,6.05,8.59,5.64 L8.6,5.62 C8.6,5.57,8.59,5.53,8.58,5.5 L8.21,5.32 Z"/>
<circle fill="white" stroke="white" cx="8.3" cy="11.35" r="0.3"/>
</svg>
<p id="warn-connection-message">You are offline. Trying to reconnect...</p>
</div>
</div>
<script>
(function() {
window.DS.connection = {
warningShown: false,
assets: {},
loadingAssetGroup: false,
retryDelay: 500
};
var connectionSettings = window.globals.connectionSettings || {};
var useConnectionMessages = window.AbortController != null &&
window.location.protocol != 'file:' &&
connectionSettings.mode === 'normal';
window.DS.connection.useConnectionMessages = useConnectionMessages;
var assetCount = 0;
var checkLoadedId;
if (useConnectionMessages && connectionSettings != null) {
var contentEl = document.querySelector('.warn-connection-content');
var messageEl = contentEl.querySelector('p');
if (connectionSettings.useDarkTheme) {
contentEl.style.borderColor = '#BABBBA';
contentEl.style.backgroundColor = '#282828';
contentEl.style.color = '#FFFFFF';
}
if (connectionSettings.message != null) {
messageEl.textContent = window.decodeURIComponent(connectionSettings.message);
}
}
function checkAssetsReady() {
for (var i in DS.connection.assets) {
if (!DS.connection.assets[i].success) {
return false;
}
}
return true;
}
function stopAssetGroup() {
if (!useConnectionMessages) { return; }
assetCount = 0;
DS.connection.oldAssetGroup = DS.connection.assets;
DS.connection.assets = {};
DS.connection.loadingAssetGroup = false;
clearInterval(checkLoadedId);
}
function startAssetGroup() {
if (!useConnectionMessages) { return; }
var ticks = 0;
clearInterval(checkLoadedId);
checkLoadedId = setInterval(function() {
var loaded = 0;
if (assetCount === 0 && loaded === 0) {
clearInterval(checkLoadedId);
return;
}
for (var i in DS.connection.assets) {
if (DS.connection.assets[i].success) {
loaded++;
}
}
if (assetCount === loaded && checkAssetsReady()) {
for (var i in DS.connection.assets) {
if (DS.connection.assets[i].action) {
DS.connection.assets[i].action();
}
}
hideWarning();
stopAssetGroup();
}
}, 100)
}
function requiredAsset(url, action, retry, type) {
if (!useConnectionMessages) { return; }
if (DS.connection.assets[url]) { return; }
DS.connection.assets[url] = {
success: false, action: action, retry: retry, type: type
};
assetCount = Object.keys(DS.connection.assets).length;
if (!DS.connection.loadingAssetGroup) {
startAssetGroup();
}
DS.connection.loadingAssetGroup = true;
}
function assetLoaded(url) {
if (!useConnectionMessages) { return; }
if (DS.connection.assets[url]) {
DS.connection.assets[url].success = true;
}
}
function assetFailed(url) {
if (!useConnectionMessages) { return; }
if (!DS.connection.assets[url]) {
if (/\.js$/.test(url) && url.indexOf('transcripts') === -1) {
setTimeout(function() {
if (DS.connection.lastSlideLoaded != null) {
DS.connection.lastSlideLoaded();
}
}, DS.connection.retryDelay);
}
return;
}
if (!DS.connection.warningShown) { showWarning(); }
if (DS.connection.assets[url].retry) {
setTimeout(function() {
if (!DS.connection.assets[url].success) {
DS.connection.assets[url].retry()
}
}, DS.connection.retryDelay);
}
}
function hideWarning() {
document.body.classList.remove('is-offline');
DS.connection.warningShown = false;
enableKeys();
}
DS.connection.hideWarning = hideWarning
function showWarning(btn) {
document.body.classList.add('is-offline')
DS.connection.warningShown = true;
updateWarningPosition();
disableKeys();
}
function updateWarningPosition() {
if (!DS.connection.warningShown) {
return;
}
var isPortrait = document.body.classList.contains('is-portrait');
var isMobile = document.body.classList.contains('view-mobile');
var warningEl = document.querySelector('.warn-connection-content');
if (isPortrait && isMobile) {
var slide = document.querySelector('.primary-slide');
var slideRect = slide != null
? slide.getBoundingClientRect()
: { top: window.innerHeight, left: 0, width: window.innerWidth };
warningEl.style.top = `${slideRect.top}px`
warningEl.style.left = `${slideRect.left + slideRect.width / 2}px`
} else {
warningEl.style.top = null;
warningEl.style.left = null;
}
window.requestAnimationFrame(updateWarningPosition);
}
function onDisableKeyDown(e) {
e.preventDefault();
e.stopImmediatePropagation();
}
function onDisableKeyUp(e) {
e.preventDefault();
e.stopImmediatePropagation();
}
var accStyle = document.createElement('style');
var warnDialogEl = document.querySelector('.warn-connection-dialog');
function disableKeys() {
if (DS.views && DS.views.nsStack && DS.views.nsStack.length === 1) {
DS.views.nsStack[0].tabReachable = false
DS.views.nsStack[0].updateTabIndex(true, true);
}
accStyle.innerHTML = '.acc-shadow-dom { display: none; }';
document.body.appendChild(accStyle);
warnDialogEl.parentNode.append(warnDialogEl);
warnDialogEl.focus();
}
function enableKeys() {
accStyle.remove();
if (DS.views && DS.views.nsStack && DS.views.nsStack.length === 1 && DS.views.nsStack[0].name === '_frame') {
DS.views.nsStack[0].tabReachable = true;
DS.views.nsStack[0].updateTabIndex();
}
}
// these will all be noops if the feature flag isn't set in
// the data and `window.globals.features`
DS.connection.requiredAsset = requiredAsset;
DS.connection.assetLoaded = assetLoaded;
DS.connection.assetFailed = assetFailed;
DS.connection.stopAssetGroup = stopAssetGroup;
DS.connection.startAssetGroup = startAssetGroup;
})();
</script>
<script>
if (window.autoSpider && window.vInterfaceObject) {
document.querySelector('.mobile-load-title-overlay').style.display = 'none';
}
</script>
<link rel="stylesheet" href="html5/data/css/output.min.css" data-noprefix/>
</body>
<script src="html5/lib/scripts/bootstrapper.min.js"></script>
</html>
@@ -0,0 +1,970 @@
<html>
<head>
<script language="JavaScript">
function WriteToDebug(str){
window.parent.WriteToDebug("AICCComm - " + str);
}
function DisplayError(strMessage){
window.parent.DisplayError(strMessage);
}
var objXMLHTTP = null;
var objXDomainReq = null;
if (typeof XDomainRequest !== "undefined") {
objXDomainReq = new XDomainRequest();
}
if(typeof XMLHttpRequest !== "undefined"){
objXMLHTTP = new XMLHttpRequest();
}
//variables to check for the IFrame's load
var intReCheckLoadedInterval = window.parent.AICC_RE_CHECK_LOADED_INTERVAL;
var intReCheckAttemptsBeforeTimeout = window.parent.AICC_RE_CHECK_ATTEMPTS_BEFORE_TIMEOUT;
var intReCheckAttempts = 0;
var IFrameLoaded_TimeOutID = "";
var blnIFrameLoaded = false;
//AICC Data - content will set these variables (through public methods) for submission to the LMS
var strLessonLocation = "";
var strLessonStatus = "i";
var strScore = "";
var strTime = "00:00:00";
var lastPostType = {};
//Communication Capabilities of the current browser - we check the actual capabilities
//rather than specific browsers to ensure forward compatibility and compatibility with untested browsers
var blnCanUseXMLHTTP; //set in the onload event
var blnCanUseIFrame;
var blnXMLHTTPIsAvailable; //determines if the browser supports the XmlHttp object
var blnCanUseSyncXHR;
var blnAppearsToBeCrossDomain;
//constants
var REQUEST_TYPE_GET = "GETPARAM";
var REQUEST_TYPE_PUT = "PUTPARAM";
var REQUEST_TYPE_PUT_INTERACTIONS = "PUTINTERACTIONS";
var REQUEST_TYPE_EXIT = "EXITAU";
WriteToDebug("intReCheckLoadedInterval=" + intReCheckLoadedInterval);
WriteToDebug("intReCheckAttemptsBeforeTimeout=" + intReCheckAttemptsBeforeTimeout);
//---------------------------------------------------------------------
//Public Functions
//---------------------------------------------------------------------
function MakeGetParamRequest(){
var strAICCSID;
var strAICCURL;
WriteToDebug ("In MakeGetParamRequest");
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_GET, "");
}
function MakePutParamRequest(strAICCData){
var strAICCSID;
var strAICCURL;
var strAICCData;
WriteToDebug ("In MakePutParamRequest");
if (parent.blnReviewModeSoReadOnly){
WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting.");
return true;
}
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_PUT, strAICCData);
}
function MakePutInteractionsRequest(strAICCData){
var strAICCSID;
var strAICCURL;
var strAICCData;
WriteToDebug ("In MakePutInteractionsRequest");
if (parent.blnReviewModeSoReadOnly){
WriteToDebug("Mode is Review and configuration setting dictates this should be read only so exiting.");
return true;
}
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_PUT_INTERACTIONS, strAICCData);
}
function MakeExitAURequest(){
var strAICCSID;
var strAICCURL;
WriteToDebug ("In MakeExitAURequest");
strAICCSID = GetAICCSID();
strAICCURL = GetAICCURL();
WriteToDebug ("Submitting Form");
SubmitForm(strAICCURL, strAICCSID, REQUEST_TYPE_EXIT, "");
}
//---------------------------------------------------------------------
//Private Functions
//---------------------------------------------------------------------
//---------------------------------------------------------------------
//IFrame Functions
//---------------------------------------------------------------------
function CheckIFrameLoaded(strRequestType){
WriteToDebug("In CheckIFrameLoaded strRequestType=" + strRequestType);
if (blnIFrameLoaded){
WriteToDebug("Frame Loaded");
ProcessLMSResult(strRequestType, GetIFrameContents());
}
else{
//re-call, check for time out
WriteToDebug("Frame Not Loaded");
intReCheckAttempts ++;
if (intReCheckAttempts > intReCheckAttemptsBeforeTimeout){
WriteToDebug("Frame Timeout Error");
parent.InitializeExecuted(false, "The LMS timed out while responding to an AICC request.");
}
else{
WriteToDebug("Resetting CheckIFrameLoaded");
IFrameLoaded_TimeOutID = window.setTimeout("CheckIFrameLoaded('" + strRequestType + "')", intReCheckLoadedInterval);
}
}
}
function IFrameLoaded(){
WriteToDebug(" IFrameLoaded ");
blnIFrameLoaded = true;
}
function GetIFrameContents(){
var strContents;
WriteToDebug("In GetIFrameContents");
try{
strContents = window.AICCFrame.document.body.innerHTML;
}
catch (e){
WriteToDebug("Error submitting form via IFrame, falling back to normal form post and returning ''. Error=" + ((e.message)?e.message:e.toString()) );
blnCanUseIFrame = false;
strContents = "";
}
WriteToDebug("strContents=" + strContents);
return strContents;
}
function SubmitFormUsingIFrame(strAICCURL, strAICCSID, strRequestType, strAICCData){
WriteToDebug ("In SubmitFormUsingIFrame, setting fields");
document.frmAICC.action = strAICCURL;
document.frmAICC.session_id.value = strAICCSID;
document.frmAICC.command.value = URLEncode(strRequestType);
document.frmAICC.aicc_data.value = URLEncode(strAICCData);
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
document.frmAICC.version.value = URLEncode(window.parent.AICC_LMS_Version);
}else{
//default to 3.5
document.frmAICC.version.value = "3.5";
}
WriteToDebug ("Submitting Form");
document.frmAICC.submit();
blnIFrameLoaded = false;
intReCheckAttempts = 0;
WriteToDebug ("Clearing Timeout");
if (IFrameLoaded_TimeOutID != ""){
window.clearTimeout(IFrameLoaded_TimeOutID);
IFrameLoaded_TimeOutID = "";
}
CheckIFrameLoaded(strRequestType);
}
//---------------------------------------------------------------------
//XDomainRequest Object Functions
//---------------------------------------------------------------------
function SubmitFormUsingXDomainRequest(strAICCURL, strAICCSID, strRequestType, strAICCData){
var strReturn;
var strPostData;
WriteToDebug ("In SubmitFormUsingXDomainRequest, opening connetion");
objXDomainReq.open ("POST", strAICCURL);
WriteToDebug ("Creating Post Data");
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData = "session_id=" + URLEncode(strAICCSID);
}else{
strPostData = "session_id=" + strAICCSID;
}
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode(window.parent.AICC_LMS_Version);
}else{
strPostData += "&version="+window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode("3.5");
}else{
strPostData += "&version=3.5";
}
}
//always encode the command and aicc_data values
strPostData += "&command=" + URLEncode(strRequestType) + "&aicc_data=" + URLEncode(strAICCData);
var fakeStatus = null;
WriteToDebug ("Setting XDR onload");
objXDomainReq.onload = function () {
fakeStatus = 200;
};
WriteToDebug ("Setting XDR onerror");
objXDomainReq.onerror = function () {
fakeStatus = 400;
};
WriteToDebug ("Setting XDR ontimeout");
objXDomainReq.ontimeout = function () {
fakeStatus = 0;
};
WriteToDebug ("Setting XDR onprogress");
objXDomainReq.onprogress = function () {};
WriteToDebug ("Setting XDR timeout");
objXDomainReq.timeout = 0;
WriteToDebug ("Sending Post Data-" + strPostData);
objXDomainReq.send(strPostData);
if (!Date.now) {
Date.now = function () {
return +(new Date ());
};
}
until = 10000 + Date.now();
WriteToDebug("sendRequest - until: " + until );
while (Date.now() < until && fakeStatus === null) {
//log("calling __delay", LOG_SRC);
aiccDelay();
}
if(fakeStatus === 200){
WriteToDebug ("Looking up Response Text");
strReturn = objXDomainReq.responseText;
WriteToDebug ("LMS Response=" + strReturn);
ProcessLMSResult(strRequestType, strReturn);
}
else{
throw {
code: fakeStatus,
mesg: "XDomainRequest Failed"
};
}
}
//---------------------------------------------------------------------
//XML HTTP Object Functions
//---------------------------------------------------------------------
var waitingAiccResponse = false;
var aiccQueue = [];
function FormatPostData(strAICCSID, strRequestType, strAICCData) {
return "session_id=" + URLEncode(strAICCSID) +
"&version=" + URLEncode(window.parent.AICC_LMS_Version!="" ? window.parent.AICC_LMS_Version : "3.5") +
"&command=" + URLEncode(strRequestType) +
"&aicc_data=" + URLEncode(strAICCData)
}
function SubmitFormUsingXMLHTTP(strAICCURL, strAICCSID, strRequestType, strAICCData){
if (waitingAiccResponse) {
aiccQueue.push([strAICCURL, strAICCSID, strRequestType, strAICCData]);
return;
}
var strPostData = FormatPostData(strAICCSID, strRequestType, strAICCData);
WriteToDebug("In SubmitFormUsingXMLHTTP, opening connetion");
objXMLHTTP.open ("POST", strAICCURL);
WriteToDebug("Setting Request Header");
objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
WriteToDebug("Sending Post Data-" + strPostData);
waitingAiccResponse = true;
objXMLHTTP.onload = function (e) {
if (objXMLHTTP.readyState === 4) {
waitingAiccResponse = false;
WriteToDebug("LMS Response=" + objXMLHTTP.responseText);
ProcessLMSResult(strRequestType, objXMLHTTP.responseText);
SendNextQueue();
}
};
objXMLHTTP.send(strPostData);
}
function SubmitFormUsingSyncXHR(strAICCURL, strAICCSID, strRequestType, strAICCData) {
var strPostData = FormatPostData(strAICCSID, strRequestType, strAICCData);
objXMLHTTP.open("POST", strAICCURL, false);
objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
objXMLHTTP.send(strPostData);
ProcessLMSResult(strRequestType, objXMLHTTP.responseText);
}
function SendNextQueue() {
if (aiccQueue.length > 0) {
var queuedMsg = aiccQueue.shift();
SubmitFormUsingXMLHTTP(queuedMsg[0], queuedMsg[1], queuedMsg[2], queuedMsg[3]);
}
}
//---------------------------------------------------------------------
// Custom Comms Object Functions
//---------------------------------------------------------------------
function SubmitFormUsingCustomComms(strAICCURL, strAICCSID, strRequestType, strAICCData){
var strReturn;
var strPostData;
WriteToDebug ("In SubmitFormUsingCustomComms, building request information");
WriteToDebug ("Creating Post Data");
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData = "session_id=" + URLEncode(strAICCSID);
}else{
strPostData = "session_id=" + strAICCSID;
}
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode(window.parent.AICC_LMS_Version);
}else{
strPostData += "&version="+window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
//check to see if we should encode the version
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
strPostData += "&version="+URLEncode("3.5");
}else{
strPostData += "&version=3.5";
}
}
//always encode the command and aicc_data values
strPostData += "&command=" + URLEncode(strRequestType) + "&aicc_data=" + URLEncode(strAICCData);
WriteToDebug ("Sending Post Data-" + strPostData);
WriteToDebug ("Sending RequestType-" + strRequestType);
console.log('parent.CustomAICCCommunication='+parent.CustomAICCCommunication);
if(typeof parent.CustomAICCCommunication == 'function')
{
parent.CustomAICCCommunication(strAICCURL, strPostData, strRequestType, 'ProcessLMSResult');
}else{
WriteToDebug ("CustomAICCCommunication not found - falling back to normal mode");
parent.AICC_USE_CUSTOM_COMMS = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
function URLEncode(str){
str = new String(str);
str = escape(str);
str = str.replace(/%20/g, "+");
return str;
}
//---------------------------------------------------------------------
//Blind Form Submit Functions
//---------------------------------------------------------------------
function SubmitFormNormally(strAICCURL, strAICCSID, strRequestType, strAICCData){
WriteToDebug ("In SubmitFormNormally (BlindPost), setting fields");
document.frmAICC.target = "rusticisoftware_aicc_results"; //keep this name fairly unique to avoid a potential naming conflict with LMS frames
document.frmAICC.action = strAICCURL;
//check to see if we should encode the session_id
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.session_id.value = strAICCSID;
}else{
document.frmAICC.session_id.value = URLEncode(strAICCSID);
}
document.frmAICC.command.value = URLEncode(strRequestType);
document.frmAICC.aicc_data.value = URLEncode(strAICCData);
// added SD 3.8.6 (JBR) - check to see if we have version from LMS already
if(window.parent.AICC_LMS_Version!=""){
//check to see if we already have a version from the LMS cached
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode(window.parent.AICC_LMS_Version);
}else{
document.frmAICC.version.value = window.parent.AICC_LMS_Version;
}
}else{
//default to 3.5
if(window.parent.AICC_ENCODE_PARAMETER_VALUES==true || window.parent.AICC_ENCODE_PARAMETER_VALUES=='true'){
document.frmAICC.version.value = URLEncode("3.5");
}else{
document.frmAICC.version.value = "3.5";
}
}
WriteToDebug ("Submitting Form");
document.frmAICC.submit();
ProcessLMSResult(strRequestType, "");
}
//---------------------------------------------------------------------
//Form Submission Functions
//---------------------------------------------------------------------
function DetectPreferredCommMethod(){
//if we have an XMLHTTP object, use that
//else, if we can see the IFrame, use that
//else - use a blind (write only) form submit
/*
MR 5/30/07 - Don't do any hard and fast domain checking, we'll simply try the post in a try/catch and check for
a permission denied error. If the post does not succeed, we'll fall back on a normal form post.
The rules for cross domain scripting have gotten quite complicated recently, they now relate to
how the XmlHttp object was created, the browser type/version and the security context of each site.
*/
//if the domain of the strAICCURL does not match the current domain, then note that cross domain probably won't work
blnAppearsToBeCrossDomain = false;
var strContentDomain = window.document.domain;
var strAICCURL = GetAICCURL();
var aryUrlParts = strAICCURL.split("/");
var strLmsDomain;
var blnCrossDomain = false;
blnCanUseSyncXHR = /MSIE|Trident/.test(window.navigator.userAgent);
if (strAICCURL.toLowerCase().indexOf("http://") == 0 || strAICCURL.toLowerCase().indexOf("https://") == 0){
strLmsDomain = aryUrlParts[2]
}
else{
strLmsDomain = aryUrlParts[0];
}
if (strLmsDomain.toLowerCase() != strContentDomain.toLowerCase()){
//WriteToDebug("LMS and Content Domains don't match, falling back to write-only mode using form submit. strLmsDomain=" + strLmsDomain + ", strContentDomain=" + strContentDomain);
//blnCanUseXMLHTTP = false;
//blnCanUseIFrame = false;
//blnCrossDomain = true;
blnAppearsToBeCrossDomain = true;
}
if (objXMLHTTP != null){
blnXMLHTTPIsAvailable = true;
}
else{
blnXMLHTTPIsAvailable = false;
}
//if (!blnCrossDomain)
//{
if (parent.AICC_COMM_DISABLE_XMLHTTP)
{
WriteToDebug("In DetectPreferredCommMethod, config override of XMLHTTP to false");
blnCanUseXMLHTTP = false;
}
else
{
WriteToDebug("In DetectPreferredCommMethod, checking XMLHTTP");
if (objXMLHTTP != null){
blnCanUseXMLHTTP = true;
}
else{
blnCanUseXMLHTTP = false;
}
}
if (parent.AICC_COMM_DISABLE_IFRAME)
{
WriteToDebug("In DetectPreferredCommMethod, config override of IFRAME to false");
blnCanUseIFrame = false;
}
else
{
//note use of short circuit AND to prevent error if browser doesn't recognize part of the IFrame
//in Opera 7, there needs to be something in the body of the IFrame for the last condition to evaluate to true
//in opera 7.1, all tests will pass, but the onload event doesn not fire due to a bug, add a check for blnIFrameLoaded
//to ensure that the onload event fired
WriteToDebug("Checking IFrame");
if (window.AICCFrame &&
window.AICCFrame.document &&
window.AICCFrame.document.body &&
window.AICCFrame.document.body.innerHTML &&
blnIFrameLoaded){
blnCanUseIFrame = true;
}
else{
blnCanUseIFrame = false;
}
}
//}
WriteToDebug("blnCanUseXMLHTTP=" + blnCanUseXMLHTTP);
WriteToDebug("blnCanUseIFrame=" + blnCanUseIFrame);
}
var courseExiting = false;
var waitingToConcede = false;
function PrepareCourseExit(actionConceded) {
courseExiting = true;
waitingToConcede = actionConceded;
if (navigator.sendBeacon != null && !waitingToConcede) {
for (var i = 0; i < aiccQueue.length; i++) {
var queuedMsg = aiccQueue.shift();
SubmitWithBeacon(queuedMsg[0], queuedMsg[1], queuedMsg[2], queuedMsg[3]);
}
aiccQueue = [];
}
}
function SubmitWithBeacon(strAICCURL, strAICCSID, strRequestType, strAICCData) {
var strPostData = FormatPostData(strAICCSID, strRequestType, strAICCData);
navigator.sendBeacon(strAICCURL, new Blob([strPostData], { type: 'application/x-www-form-urlencoded' }))
}
function SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData){
if (lastPostType[strRequestType] === strAICCData) {
return;
}
WriteToDebug ("In SubmitForm, setting fields");
WriteToDebug ("strAICCURL = " + strAICCURL);
WriteToDebug ("strAICCSID = " + strAICCSID);
WriteToDebug ("strCommand = " + strRequestType);
WriteToDebug ("strAICCData = " + strAICCData);
WriteToDebug ("blnCanUseXMLHTTP = " + blnCanUseXMLHTTP);
WriteToDebug ("blnCanUseIFrame = " + blnCanUseIFrame);
// if(parent.AICC_USE_CUSTOM_COMMS && blnAppearsToBeCrossDomain){
if (courseExiting && !waitingToConcede && navigator.sendBeacon != null) {
SubmitWithBeacon(strAICCURL, strAICCSID, strRequestType, strAICCData);
} else if (parent.AICC_USE_CUSTOM_COMMS) {
WriteToDebug('Using Custom Cross Domain Communications for AICC');
SubmitFormUsingCustomComms(strAICCURL, strAICCSID, strRequestType, strAICCData);
}else if (blnCanUseXMLHTTP){
// try/catch is supported in all browsers that support xmlHttp
try{
if (blnCanUseSyncXHR) {
SubmitFormUsingSyncXHR(strAICCURL, strAICCSID, strRequestType, strAICCData);
} else {
SubmitFormUsingXMLHTTP(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
catch(e){
waitingAiccResponse = false;
if(objXDomainReq != null){
try{
SubmitFormUsingXDomainRequest(strAICCURL, strAICCSID, strRequestType, strAICCData)
}
catch(e){
//we have a cross domain issue, so fall back on normal form posts
WriteToDebug("Error submitting form via XDomainRequest, falling back . Error=" + ((e.message)?e.message:e.toString()));
blnCanUseXMLHTTP = false;
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
else{
//we have a cross domain issue, so fall back on normal form posts
WriteToDebug("Error submitting form via XmlHttp, falling back to normal form post. Error=" + ((e.message)?e.message:e.toString()));
blnCanUseXMLHTTP = false;
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
}
else if(blnCanUseIFrame){
//if we're in a browser that can trap errors, try to trap a permission denied error
//otherwise, check our rudimentary domain checking to see if we should try iFrame. If it is
//a disallowed cross domain request that results in a permission denied error
//then we need to manually disable the iFrame post in the configuration file.
//this try catch probably won't fire, it will be the one up in GetIFrameContents,
//in there we just set things to fall back on normal form posts
//no need to re-submit the form because it was just the initial Get that won't return data anyway
try{
SubmitFormUsingIFrame(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
catch (e){
//we have a cross domain issue, so fall back on normal form posts
WriteToDebug("Error submitting form via IFrame, falling back to normal form post. Error=" + ((e.message)?e.message:e.toString()));
blnCanUseIFrame = false;
SubmitForm(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
}
else{
SubmitFormNormally(strAICCURL, strAICCSID, strRequestType, strAICCData);
}
if (strRequestType != REQUEST_TYPE_GET) {
lastPostType[strRequestType] = strAICCData;
}
}
//---------------------------------------------------------------------
//AICC Functions
//---------------------------------------------------------------------
function ProcessLMSResult(strRequestType, strLMSResult){
if (waitingToConcede && strRequestType === REQUEST_TYPE_EXIT) {
parent.PerformConcedeActions();
}
WriteToDebug("In ProcessLMSResult, strRequestType=" + strRequestType + " strLMSResult=" + strLMSResult)
var blnMadeBlindSubmit;
var strAICCErrorLine = "";
var strAICCErrorTextLine = "";
var aryAICCResponseLines;
var strLine;
var strTrimmedLine;
var intPos;
var blnError;
var strErrorMessage;
//if we made a blind submit with a standard form, we can't read the result, so just proceed
blnMadeBlindSubmit = (!blnCanUseXMLHTTP && !blnCanUseIFrame);
WriteToDebug("blnMadeBlindSubmit=" + blnMadeBlindSubmit);
strLMSResult = new String(unescape(strLMSResult));
aryAICCResponseLines = strLMSResult.split("\n"); //only use \n instead of \r\n b/c some LMS's will only use one character
for (var i=0; i < aryAICCResponseLines.length; i++){
WriteToDebug("Processing Line #" + i + ": " + aryAICCResponseLines[i]);
strLine = aryAICCResponseLines[i];
strLine = strLine.replace(/\r/g, "");
strTrimmedLine = parent.Trim(strLine);
//need to look for the text "error" only at the start of the line since the
//value of the field can conceivably contain the text "error"
if (strTrimmedLine.toLowerCase().indexOf("error") == 0){
if (strTrimmedLine.toLowerCase().indexOf("error_text") == 0){
WriteToDebug("Found Error Text Line");
strAICCErrorTextLine = strLine;
}
else{
WriteToDebug("Found Error Number Line");
strAICCErrorLine = strLine;
}
}
}
//check for errors and alert if found, check for AICC error, as well as HTTP error like 404
blnError = false;
strErrorMessage = "";
if (!blnMadeBlindSubmit){
if (strAICCErrorLine == ""){
blnError = true;
strErrorMessage = "ERROR - LMS did not return a valid status code.";
}
if (strAICCErrorLine != "" && strAICCErrorLine.toLowerCase().search(/error\s*=\s*0/) == -1){
blnError = true;
strErrorMessage = "ERROR - LMS returned an error - " + strAICCErrorLine + " - " + strAICCErrorTextLine;
}
}
if (blnError){
WriteToDebug("Found Error");
if(objXDomainReq !== null){
WriteToDebug("This error may be caused by a strict AICC implementation - fallback");
objXDomainReq = null;
throw {
mesg: "This error may be caused by a strict AICC implementation - fallback"
};
}
parent.AICC_SetErrorInfo(strAICCErrorLine, strAICCErrorTextLine);
if (strRequestType == REQUEST_TYPE_GET){
parent.InitializeExecuted(false, strErrorMessage);
return;
}
if (strRequestType == REQUEST_TYPE_PUT){
parent.AICC_PutParamFailed();
return;
}
if (strRequestType == REQUEST_TYPE_PUT_INTERACTIONS){
parent.AICC_PutInteractionsFailed();
return;
}
else{
DisplayError(strErrorMessage);
return;
}
}
if (strRequestType == REQUEST_TYPE_GET){
WriteToDebug("In request type = get");
//keep default values if we made a blind submit
if (!blnMadeBlindSubmit){
window.parent.ParseGetParamData(strLMSResult);
}
WriteToDebug("Calling InitializeExecuted");
parent.InitializeExecuted(true, "");
}
}
function GetAICCSID(){
var strSID = "";
WriteToDebug("In GetAICCSID");
strSID = window.parent.GetQueryStringValue("AICC_SID", window.parent.document.location.search)
WriteToDebug("GetAICCSID returning: " + strSID);
return strSID;
}
function GetAICCURL(){
var strURL = "";
WriteToDebug("In GetAICCURL");
strURL = window.parent.GetQueryStringValue("AICC_URL", window.parent.document.location.search)
WriteToDebug("Querystring value = " + strURL);
if (strURL != null && strURL.length > 0){
if (window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === undefined ||
window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === null ||
window.parent.AICC_COMM_PREPEND_HTTP_IF_MISSING === true){
WriteToDebug("Checking for presense of 'http://'");
if (strURL.indexOf("http://") < 0 && strURL.indexOf("https://") < 0){
WriteToDebug("Prepending 'http://'");
strURL = "http://" + strURL;
}
}
}
WriteToDebug("GetAICCURL returning: " + strURL);
return strURL;
}
//MR 5/31/05 - added this because this frame is always slightly visible so we have an avenue into the debug information even if the content developer doesn't build one in
window.document.onkeypress = CheckForDebugCommand;
var intQuestionCounter = 0;
var ASCII_QUESTION = 63;
function CheckForDebugCommand(e){
var intKeyCode = 0;
if (window.event) {
e = window.event;
intKeyCode = e.keyCode;
}
else {
intKeyCode = e.which;
}
if (intKeyCode == ASCII_QUESTION){
intQuestionCounter++;
if (intQuestionCounter == 3){
intQuestionCounter = 0;
window.parent.ShowDebugWindow();
}
}
else if (intKeyCode !=0){ //in FireFox, the shift key comes through as a keypress with code of 0...we want to ignore this
intQuestionCounter = 0;
}
}
function getUUID() {
/*jslint bitwise: true, eqeq: true */
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
/[xy]/g,
function (c) {
var r = Math.random() * 16|0, v = c == "x" ? r : (r&0x3|0x8);
return v.toString(16);
}
);
}
//MR 5/31/05 - added this call in addition to the frameset onunload calls to give us a better chance of getting an AICC EXITAU call in before the frames unload
function ProcessUnload(){
if (window.parent){
window.parent.Unload();
}
}
</script>
</head>
<body onload="DetectPreferredCommMethod();" onunload="ProcessUnload();" onbeforeunload="ProcessUnload();">
<iframe id="AICCFrame"
name="AICCFrame"
style="width:10px; height:10px; border: 0px"
src="blank.html" onload="IFrameLoaded();"></iframe>
<form name="frmAICC" method="Post" action="blank.html" target="AICCFrame" ID="Form1">
<input type="hidden" name="session_id" value="" ID="Hidden1">
<input type="hidden" name="command" value="" ID="Hidden2">
<input type="hidden" name="version" value="3.5" ID="Hidden3">
<input type="hidden" name="aicc_data" value="" ID="Hidden4">
</form>
</body>
</html>
@@ -0,0 +1,48 @@
<html>
<head>
<script>
window.document.onkeypress = CheckForDebugCommand;
var intQuestionCounter = 0;
var ASCII_QUESTION = 63;
function CheckForDebugCommand(e){
var intKeyCode = 0;
if (window.event) {
e = window.event;
intKeyCode = e.keyCode;
}
else {
intKeyCode = e.which;
}
if (intKeyCode == ASCII_QUESTION){
intQuestionCounter++;
if (intQuestionCounter == 3){
intQuestionCounter = 0;
parent.ShowDebugWindow();
}
}
else if (intKeyCode !=0){ //in FireFox, the shift key comes through as a keypress with code of 0...we want to ignore this
intQuestionCounter = 0;
}
}
</script>
</head>
<body>
&nbsp;
<!--
If the course does not load and is stuck on this page:
-Click in the middle of the page
-Press the question mark key (?) three times
-A window should pop up containing debug information, send this information to technical support for further assistance
-If no information appears, try again 1 or 2 more times, sometimes that just does the trick
-->
</body>
</html>
@@ -0,0 +1,206 @@
//<!--
// Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001. Permission granted to reuse and distribute.
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
// also added support for IE5.5 Opera4&5 HotJava3 AOLTV
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4,
// correct Opera 5 detection
// add support for winME and win2k
// synch with browser-type-oo.js
// Revised 26 Mar 01 to correct Opera detection
// Revised 02 Oct 01 to add IE6 detection
// Revised 16 Oct 03 to add explict NS 6 detection vs NS 7 - Mike Rustici
// Everything you always wanted to know about your JavaScript client
// but were afraid to ask. Creates "is_" variables indicating:
// (1) browser vendor:
// is_nav, is_ie, is_opera, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
// (2) browser version number:
// is_major (integer indicating major version number: 2, 3, 4 ...)
// is_minor (float indicating full version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
// is_nav2, is_nav3, is_nav4, is_nav4up, is_nav6, is_nav6up, is_gecko, is_ie3,
// is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up, is_hotjava3, is_hotjava3up,
// is_opera2, is_opera3, is_opera4, is_opera5, is_opera5up
// (4) JavaScript version number:
// is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
// is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98, is_winme, is_win2k
// is_os2
// is_mac, is_mac68k, is_macppc
// is_unix
// is_sun, is_sun4, is_sun5, is_suni86
// is_irix, is_irix5, is_irix6
// is_hpux, is_hpux9, is_hpux10
// is_aix, is_aix1, is_aix2, is_aix3, is_aix4
// is_linux, is_sco, is_unixware, is_mpras, is_reliant
// is_dec, is_sinix, is_freebsd, is_bsd
// is_vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.
//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when new versions of browsers are released, so
// in conditional code forks, use is_ie5up ("IE 5.0 or greater")
// is_opera5up ("Opera 5.0 or greater") instead of is_ie5 or is_opera5
// to check version in code which you want to work on future
// versions.
// convert all characters to lowercase to simplify testing
var agt=navigator.userAgent.toLowerCase();
// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
// Note: Opera and WebTV spoof Navigator. We do strict client detection.
// If you want to allow spoofing, take out the tests for opera and webtv.
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
(agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5) && (agt.indexOf('rv:0') > -1));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up = (is_ie && (is_major >= 4));
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
// or if this is the first browser window opened. Thus the
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.
var is_aol = (agt.indexOf("aol") != -1);
var is_aol3 = (is_aol && is_ie3);
var is_aol4 = (is_aol && is_ie4);
var is_aol5 = (agt.indexOf("aol 5") != -1);
var is_aol6 = (agt.indexOf("aol 6") != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
var is_webtv = (agt.indexOf("webtv") != -1);
var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
var is_AOLTV = is_TVNavigator;
var is_hotjava = (agt.indexOf("hotjava") != -1);
var is_hotjava3 = (is_hotjava && (is_major == 3));
var is_hotjava3up = (is_hotjava && (is_major >= 3));
// *** JAVASCRIPT VERSION CHECK ***
var is_js;
if (is_nav2 || is_ie3) is_js = 1.0;
else if (is_nav3) is_js = 1.1;
else if (is_opera5up) is_js = 1.3;
else if (is_opera) is_js = 1.1;
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
else if (is_hotjava3up) is_js = 1.4;
else if (is_nav6 || is_gecko) is_js = 1.5;
// NOTE: In the future, update this code when newer versions of JS
// are released. For now, we try to provide some upward compatibility
// so that future versions of Nav and IE will show they are at
// *least* JS 1.x capable. Always check for JS version compatibility
// with > or >=.
else if (is_nav6up) is_js = 1.5;
// NOTE: ie5up on mac is 1.4
else if (is_ie5up) is_js = 1.3
// HACK: no idea for other browsers; always check for JS version with > or >=
else is_js = 0.0;
// *** PLATFORM ***
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
// NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
// Win32, so you can't distinguish between Win95 and WinNT.
var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));
// is this a 16 bit compiled version?
var is_win16 = ((agt.indexOf("win16")!=-1) ||
(agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
(agt.indexOf("windows 16-bit")!=-1) );
var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
(agt.indexOf("windows 16-bit")!=-1));
var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1));
// NOTE: Reliable detection of Win98 may not be possible. It appears that:
// - On Nav 4.x and before you'll get plain "Windows" in userAgent.
// - On Mercury client, the 32-bit version will return "Win98", but
// the 16-bit version running on Win98 will still return "Win95".
var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
var is_win32 = (is_win95 || is_winnt || is_win98 ||
((is_major >= 4) && (navigator.platform == "Win32")) ||
(agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));
var is_os2 = ((agt.indexOf("os/2")!=-1) ||
(navigator.appVersion.indexOf("OS/2")!=-1) ||
(agt.indexOf("ibm-webexplorer")!=-1));
var is_mac = (agt.indexOf("mac")!=-1);
// hack ie5 js version for mac
if (is_mac && is_ie5up) is_js = 1.4;
var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) ||
(agt.indexOf("68000")!=-1)));
var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) ||
(agt.indexOf("powerpc")!=-1)));
var is_sun = (agt.indexOf("sunos")!=-1);
var is_sun4 = (agt.indexOf("sunos 4")!=-1);
var is_sun5 = (agt.indexOf("sunos 5")!=-1);
var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
var is_irix = (agt.indexOf("irix") !=-1); // SGI
var is_irix5 = (agt.indexOf("irix 5") !=-1);
var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
var is_hpux = (agt.indexOf("hp-ux")!=-1);
var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
var is_aix = (agt.indexOf("aix") !=-1); // IBM
var is_aix1 = (agt.indexOf("aix 1") !=-1);
var is_aix2 = (agt.indexOf("aix 2") !=-1);
var is_aix3 = (agt.indexOf("aix 3") !=-1);
var is_aix4 = (agt.indexOf("aix 4") !=-1);
var is_linux = (agt.indexOf("inux")!=-1);
var is_sco = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
var is_unixware = (agt.indexOf("unix_system_v")!=-1);
var is_mpras = (agt.indexOf("ncr")!=-1);
var is_reliant = (agt.indexOf("reliantunix")!=-1);
var is_dec = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
(agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
(agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
var is_sinix = (agt.indexOf("sinix")!=-1);
var is_freebsd = (agt.indexOf("freebsd")!=-1);
var is_bsd = (agt.indexOf("bsd")!=-1);
var is_unix = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux ||
is_sco ||is_unixware || is_mpras || is_reliant ||
is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);
var is_vms = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
//--> end hide JavaScript
@@ -0,0 +1,11 @@
<!doctype html>
<html>
<body style="background-color: #ffffff;">
<p role="alert" style="color: #333333;font-family: Open Sans, articulate, tahoma, arial;font-size: medium;text-align: center;">
<br><br><br><br>
Kein Inhalt mehr verfügbar. Sie können dieses Fenster schließen.
</p>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><meta xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><project id="6ZhtPGCkafz" courseid="6Y4dTsX9b29_course_id" thumburl="story_content/thumbnail.jpg" title="Bedienung des Photoionisationsdetektors TIGER" datepublished="2025-10-24T07:49:21" version="1.0.0.0" flashdata="story_content/data.swf" html5data="mobile/data.json" mobiledata="mobile/data.gz" enabledownload="false" duration="Über 11 Minutes" totalaudio="676927" totalvideo="0"><description /><keywords /><slidemeta moniker="folie" monikerplural="folien" viewslides="48" slidecountdescription="48 folien" /><author name="jwalter" email="" website="" /><application name="Articulate Storyline" version="3.92.33225.0" xmlversion="4.0" /></project></meta>
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Some files were not shown because too many files have changed in this diff Show More