#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Genereert T14 Alcohol & Drugs Zero Tolerance e-learning
Phoenix Metals B.V.
"""

import os

# HTML template met inline CSS en JavaScript
HTML_TEMPLATE = """<!DOCTYPE html>
<html lang="nl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Phoenix Metals - T14: Alcohol & Drugs Zero Tolerance</title>
    <style>
        :root {
            --primary: #003366;
            --secondary: #1a5276;
            --bg: #e8f4f8;
            --accent: #f39c12;
            --error: #e74c3c;
            --correct: #27ae60;
        }
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: Arial, sans-serif;
            background-color: var(--bg);
            color: #333;
            line-height: 1.6;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }
        header {
            background-color: var(--primary);
            color: white;
            padding: 20px 0;
            text-align: center;
            position: sticky;
            top: 0;
            z-index: 100;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        .progress-bar {
            background-color: #ddd;
            height: 20px;
            width: 100%;
            position: sticky;
            top: 80px;
            z-index: 99;
            margin-bottom: 20px;
            border-radius: 10px;
            overflow: hidden;
        }
        .progress {
            background-color: var(--accent);
            height: 100%;
            width: 0%;
            transition: width 0.5s ease;
        }
        .module {
            background: white;
            padding: 25px;
            margin-bottom: 25px;
            border-radius: 10px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
        }
        .module h2 {
            color: var(--primary);
            border-bottom: 2px solid var(--accent);
            padding-bottom: 10px;
            margin-bottom: 15px;
        }
        .paragraph {
            margin-bottom: 15px;
            text-align: justify;
        }
        .info-box {
            background-color: #f0f8ff;
            border-left: 4px solid var(--secondary);
            padding: 15px;
            margin: 15px 0;
            border-radius: 0 5px 5px 0;
        }
        .info-box h3 {
            color: var(--secondary);
            margin-bottom: 10px;
            display: flex;
            align-items: center;
        }
        .practice-box {
            background-color: #fff8dc;
            border: 1px solid var(--accent);
            padding: 15px;
            margin: 15px 0;
            border-radius: 5px;
        }
        .practice-box h3 {
            color: var(--accent);
            margin-bottom: 10px;
        }
        .question {
            background-color: white;
            border: 1px solid #ddd;
            padding: 15px;
            margin: 15px 0;
            border-radius: 5px;
        }
        .question h3 {
            color: var(--primary);
            margin-bottom: 10px;
        }
        .options {
            display: grid;
            gap: 10px;
        }
        .option {
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            cursor: pointer;
            transition: all 0.3s;
        }
        .option:hover {
            background-color: #f0f0f0;
        }
        .option.selected {
            border-color: var(--primary);
            background-color: #f0f8ff;
        }
        .option.correct {
            background-color: var(--correct);
            color: white;
        }
        .option.incorrect {
            background-color: var(--error);
            color: white;
        }
        .certificate {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            padding: 30px;
            text-align: center;
            border-radius: 10px;
            margin-top: 30px;
        }
        .certificate h2 {
            color: var(--primary);
            margin-bottom: 20px;
        }
        .certificate-content {
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
        }
        .button {
            background-color: var(--primary);
            color: white;
            border: none;
            padding: 12px 25px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
        }
        .button:hover {
            background-color: var(--secondary);
        }
        .hidden {
            display: none;
        }
        .quiz-container {
            margin-top: 30px;
        }
        footer {
            background-color: var(--primary);
            color: white;
            text-align: center;
            padding: 20px;
            margin-top: 40px;
        }
    </style>
</head>
<body>
    <div class="progress-bar">
        <div class="progress" id="progress"></div>
    </div>
    
    <header>
        <h1>Phoenix Metals B.V. - T14: Alcohol & Drugs Zero Tolerance</h1>
        <p>Training Alcohol & Drugs Zero Tolerance (TR-303-05)</p>
    </header>

    <div class="container" id="modules">
        <!-- Modules komen hier -->
    </div>

    <div class="quiz-container hidden" id="quiz-container">
        <div class="module">
            <h2>Quiz - 10 vragen (80% cesuur)</h2>
            <div id="quiz-questions">
                <!-- Quiz vragen komen hier -->
            </div>
            <button class="button" onclick="checkQuiz()">Resultaten Controleren</button>
            <button class="button hidden" id="retry-button" onclick="resetQuiz()">Opnieuw Proberen</button>
            <button class="button hidden" id="certificate-button" onclick="showCertificate()">Certificaat Bekijken</button>
        </div>
    </div>

    <div class="certificate hidden" id="certificate">
        <h2>Bewijs van Voltooiing</h2>
        <div class="certificate-content">
            <p>Deze certificeert dat de deelnemer de training <strong>Alcohol & Drugs Zero Tolerance</strong> met succes heeft afgerond.</p>
            <p><strong>Deelnemer:</strong> _________________________</p>
            <p><strong>Bedrijf:</strong> Phoenix Metals B.V.</p>
            <p><strong>Training:</strong> T14: Alcohol & Drugs Zero Tolerance (TR-303-05)</p>
            <p><strong>Datum:</strong> _________________________</p>
            <p><strong>Resultaat:</strong> _________________________</p>
        </div>
    </div>

    <footer>
        <p>Phoenix Metals B.V. | Safety • Governance • Advisory | © 2026</p>
    </footer>

    <script>
        const totalModules = 10;
        const totalQuestions = 10;
        let currentProgress = 0;
        let correctAnswers = 0;

        // Modules data
        const modules = [
            {
                title: "Zero-tolerance beleid Phoenix Metals",
                paragraphs: [
                    "Phoenix Metals hanteert een strikt zero-tolerance beleid ten aanzien van alcohol, drugs en medicatie die de rijvaardigheid beïnvloeden. Dit beleid is ontworpen om een veilige werkplek te waarborgen in de procesindustrie, waar onvoorspelbaar gedrag ernstige gevolgen kan hebben voor veiligheid, productie en milieu.",
                    "De zero-tolerance aanpak is gebaseerd op wetenschappelijk bewijs dat zelfs kleine hoeveelheden alcohol of drugs de reactiesnelheid, concentratie en oordeelsvermogen aanzienlijk beïnvloeden. In de procesindustrie, waar we werken met gevaarlijke stoffen zoals V₂O₅, H₂SO₄ en zware machines, is dit risico onacceptabel.",
                    "Het beleid heeft een duidelijke scope die alcohol (inclusief bier, wijn en sterke dranken), illegale drugs (zoals cannabis, cocaïne en amfetaminen) en medicatie die de rijvaardigheid beïnvloeden (zoals benzodiazepinen en bepaalde pijnstillers) omvat. Ook medicinale cannabis valt onder dit beleid.",
                    "Phoenix Metals onderscheidt zich door niet alleen alcoholgebruik tijdens werktijd te verbieden, maar ook intoxicatie buiten werktijd die invloed kan hebben op de prestaties op de werkvloer. Dit is in lijn met de risico's in onze specifieke industrie.",
                    "Het beleid wordt ondersteund door regelmatige training, duidelijke communicatie en consequente handhaving. Alle medewerkers dienen dit beleid te kennen en te begrijpen, omdat van hen verwacht wordt dat ze de veiligheid van zichzelf en hun collega's waarborgen."
                ],
                fact: "Volgens onderzoek verhoogt alcoholgebruik de kans op een ongeval met 300% bij werken in de procesindustrie. Bij drugsgebruik kan dit oplopen tot 500%.",
                practice: "Controleer de actuele versie van het zero-tolerance beleid in het intranet en identificeer de specifieke situaties die onder het beleid vallen, inclusief het gebruik van medicatie.",
                question: "Waarom hanteert Phoenix Metals een zero-tolerance beleid voor alcohol en drugs?",
                options: [
                    "Om de productie te verhogen",
                    "Omdat dit wettelijk verplicht is",
                    "Om de veiligheid in de procesindustrie te waarborgen",
                    "Omedewerkers te disciplineren"
                ],
                correct: 2
            },
            {
                title: "Wettelijke kader",
                paragraphs: [
                    "Het zero-tolerance beleid van Phoenix Metals is gestoeld op meerdere wet- en regelgevingen. De Arbowet, artikel 11, legt de medewerkingsplicht op aan alle werknemers: zij moeten meewerken aan het realiseren van veilige arbeidsomstandigheden en mogen zich niet bezighouden met gedragingen die de veiligheid in gevaar brengen.",
                    "De Wegenverkeerswet stelt duidelijke grenzen voor alcoholgebruik bij het besturen van voertuigen en zware machines. Een bloedalcoholgehalte van meer dan 0.5 promille is strafbaar, en bij 1.3 promille is er sprake van rijden onder invloed met een strafrechtelijk karakter.",
                    "De Tabak- en alcoholwet reguleert de leeftijd waarop alcohol legaal gekocht en gebruikt mag worden. In Nederland is dit 18 jaar voor bier, wijn en sterke dranken. Phoenix Metals gaat verder door ook consumptie buiten werktijd te beperken vanwege de risico's in onze industrie.",
                    "De Gezondheid en veiligheidswetgeving vereist dat werkgevers een veilige en gezonde arbeidsomgeving bieden. Dit omvat het creëren van beleid dat onder invloede van alcohol of werken onveilig maakt, vooral in risicovolle omgevingen zoals onze fabrieken in IJmuiden en Rotterdam.",
                    "Phoenix Metals combineert deze wetgeving tot een strikt beleid dat niet alleen wettelijk compliant is, maar ook verder gaat door preventieve maatregelen te nemen en een proactieve aanpak te hanteren om risico's te minimaliseren."
                ],
                fact: "Volgens de Arbowart kunnen werkgevers bij herhaald alcohol- of drugsgebruik een traject van herstel verplichten, waarbij de werknemer moet bewijzen dat hij 'dropvrij' is voordat hij terug kan keren naar zijn functie.",
                practice: "Identificeer de relevante wetgeving voor uw specifieke functie binnen Phoenix Metals en documenteer welke gevolgen overtredingen van de wetgeving kunnen hebben voor uw baan.",
                question: "Wat is de belangrijkste verplichting van medewerkers volgens de Arbowet, artikel 11?",
                options: [
                    "Maximaal 2 glazen alcohol drinken",
                    "Meewerken aan veilige arbeidsomstandigheden",
                    "Elke overtreding melden aan de directie",
                    "Zelf beslissen wat veilig is"
                ],
                correct: 1
            },
            {
                title: "Effecten op reactievermogen",
                paragraphs: [
                    "Alcohol en drugs hebben een significant negatief effect op het reactievermogen, wat cruciaal is in de procesindustrie. Alcohol vertraagt de neurale signalen in de hersenen, wat resulteert in een vertraging van reactietijden tot 25% zelfs bij lage bloedspiegels van 0.5 promille.",
                    "Concentratieverlies is een ander kritisch effect. Alcohol verstoort de neurotransmitters in de hersenen, wat leidt tot verminderde aandacht en het vermogen om langdurig gefocust te blijven. In een omgeving waar precisie van levensbelang is, kan dit tot ernstige ongelukken leiden.",
                    "Coördinatieproblemen ontstaan doordat alcohol het zenuwstysteem beïnvloedt. Dit resulteert in onhandige bewegingen, trillen en een verminderde fijne motoriek. Bij het werken met kleine onderdelen, complexe machines of in beperkte ruimtes kunnen deze coördinatieproblemen rampzalig zijn.",
                    "Risicoperceptie is ernstig verminderd onder invloed van alcohol en drugs. Mensen nemen onterecht meer risico's, overschatten hun eigen vaardigheden en onderschatten gevaarden. In de procesindustrie, waar risico's inherent aan het werk zijn, is dit extra gevaarlijk omdat men geen veiligheidsprocedures meer volgt.",
                    "De combinatie van deze effecten maakt alcohol en drugs in de procesindustrie bijzonder gevaarlijk. Zelfs kleine hoeveelheden kunnen leiden tot fatale ongelukken, vooral bij het werken met gevaarlijke chemicaliën zoals V₂O₅, H₂SO₄ of bij het bedienen van zware machines."
                ],
                fact: "Studies tonen aan dat bij een bloedalcoholgehalte van 0.8 promille de kans op een ongeval 4 keer zo groot is. Bij 1.2 promilee is deze kans 10 keer zo groot.",
                practice: "Observeer uw eigen reactietijd en coördinatie bij verschillende alcoholverbruikniveaus (simulatie). Welk effect is het meest verrassend voor uw specifieke werkzaamheden?",
                question: "Welk effect is het meest direct gevaarlijk bij het werken met gevaarlijke chemicaliën?",
                options: [
                    "Verhoogde creativiteit",
                    "Verminderde risicoperceptie",
                    "Verbeterde coördinatie",
                    "Verminderde spierspanning"
                ],
                correct: 1
            },
            {
                title: "Risico's in procesindustrie",
                paragraphs: [
                    "De procesindustrie, zoals Phoenix Metals, kent specifieke risico's die verergerd worden door alcohol- of drugsgebruik. Het werken met vanadiumpentoxide (V₂O₅) is bijzonder gevaarlijk, omdat dit een toxische stof is die schade aan de longen en lever kan veroorzaken. Concentratieverlies door intoxicatie kan leiden tot onjuist hanteren van deze chemische stoffen.",
                    "Zwavelzuur (H₂SO₄) is een bijtende stof die bij contact met huid of ogen ernstige verbrandingen veroorzaakt. Bij intoxicatie zijn werknemers minder alert op lekkages, overflows of onjuiste dosering, wat kan leiden tot chemische ongevallen met verstrekkende gevolgen voor mens en milieu.",
                    "Stofexplosiegevaar is een significant risico in onze fabrieken, vooral bij het verwerken van poedervormige materialen. Alcohol en drugs verminderen de aandacht voor details en veiligheidsprocedures, waardoor risico's op ontsteking van explosieve atmosfeeren toenemen. De kleinste vonk kan leiden tot een catastrofale explosie.",
                    "Hoogtewerk is inherent aan veel processen bij Phoenix Metals, met name bij onderhoud en inspectie. Onder invloede van alcohol of drugs zijn werknemers meer onvoorspelbaar, minder coördinatie en hebben ze verminderde evenwichtsgevoeligheid. Dit verhoogt het risico op vallen en ongelukken van hoogte dramatisch.",
                    "De combinatie van deze risico's met de effecten van intoxicatie maakt dat zelfs kleine hoeveelheden alcohol of drugs in de procesindustrie tot fatale ongevallen kunnen leiden. Daarom is Phoenix Metals' zero-tolerance beleid niet alleen wettelijk verplicht, maar levensbeschermend voor alle medewerkers en omwonenden."
                ],
                fact: "Een studie toont aan dat 60% van de ernstige ongelukken in de procesindustrie verband houdt met menselijke fouten, waarvan een significant deel gerelateerd is aan drugs- of alcoholgebruik.",
                practice: "Identificeer de top 3 gevaarlijkste werkplekken in uw afdeling en analyseer hoe alcohol- of drugsgebruik het risico op ongevallen bij deze locaties zou verhogen.",
                question: "Welk chemisch product bij Phoenix Metals is bijzonder gevaarlijk bij intoxicatie?",
                options: [
                    "Water",
                    "Zwavelzuur",
                    "Zand",
                    "Lucht"
                ],
                correct: 1
            },
            {
                title: "Alcohol effecten",
                paragraphs: [
                    "Bloedspiegel promillen bepalen de ernst van de alcoholische intoxicatie. Bij 0.5 promille treden de eerste effecten op: ontremming, lichte euforie en verminderde oordeelsvermogen. Bij 1.0 promille treden duidelijke coördinatiestoornissen op, en vanaf 1.5 promille is er sprake van ernstige intoxicatie met verminderde bewustzijn.",
                    "Leveringsstops zijn directe gevolgen van alcoholconsumptie. De lever kan de alcohol niet snel genoeg afbreken, waardoor deze zich ophoopt in het bloed en andere organen. Dit verergert de effecten op de hersenen en verhoogt de risico's op ongevallen aanzienlijk.",
                    "Effecten per glas variëren sterk per persoon, maar over het algemeen is één standaardglas (10g alcohol) voldoende om de rijvaardigheid al merkbaar te beïnvloeden. Een glas bier, glas wijn of een shot sterke drank bevat ongeveer dezelfde hoeveelheid alcohol en heeft vergelijkbare effecten op de reactievermogen.",
                    "Kater-effecten kunnen 12-24 uur na consumptie blijven bestaan en omvatten hoofdpijn, misselijkheid, vermoeidheid en concentratieproblemen. Deze 'hangover' kan de prestaties op de werkvloer nog steeds negatief beïnvloeden, zelfs als de werknemer formeel 'nuchter' is.",
                    "Vermoeidheid wordt versterkt door alcohol, omdat het de slaapkwaliteit vermindert en de diepe slaap onderdrukt. In de procesindustrie, waar werknemers vaak in ploegendienst werken, is deze extra vermoeidheid extra gevaarlijk en kan leiden to microslaap en concentratieverlies."
                ],
                fact: "Het menselijk lichaam kan slechts ongeveer 1 standaardglas per uur afbreken. Het drinken van meerdere glazen betekent dus dat er alcohol in het bloed blijft circuleren, ook de volgende dag.",
                practice: "Documenteer de effecten van alcohol op uw eigen lichaam en prestaties. Welk effect vindt u het verrassendst of meest zorgwekkend voor uw werk?",
                question: "Hoeveel alcohol kan het menselijk lichaam per uur ongeveer afbreken?",
                options: [
                    "Meerdere glazen",
                    "Één standaardglas",
                    "Halve glas",
                    "Geen alcohol"
                ],
                correct: 1
            },
            {
                title: "Drugs soorten",
                paragraphs: [
                    "Cannabis (THC) verhoogt de reactietijd, vermindert de concentratie en kan paranoia veroorzaken. In de procesindustrie is dit extra gevaarlijk omdat werknemers onvoorspelbaar worden en veiligheidsprocedures negeren. Werken met V₂O₅ onder invloed van cannabis is ondenkbaar vanwege de verhoogde risico's op ongelukken.",
                    "Cocaïne stimuleert het zenuwstysteem en geeft een gevoel van alertheid en zelfvertrouwen. Echter, deze effecten zijn tijdelijk en worden gevolgd door ernstige vermoeidheid en concentratieproblemen. De verminderde oordeelskracht kan leiden tot riskant gedrag in een gevaarlijke omgeving.",
                    "Amfetaminen (speed, crystal meth) geven een euforisch gevoel en verhogen de energie, maar veroorzaken ook nervositeit, agressie en hartproblemen. In een industriële omgeving kan dit leiden tot impulsief gedrag, het negeren van veiligheidsvoorschriften en een verhoogd risico op hart- en vaatproblemen.",
                    "Medicatie die de rijvaardigheid beïnvloedt omvat benzodiazepinen (valium, oxazepam) die slaperigheid, coördinatieproblemen en geheugenverlies veroorzaken, en bepaalde pijnstillers (opioiden) die euforie, verminderde pijnperceptie en verslavingsrisico met zich meebrengen. Medicinale cannabis valt ook onder deze categorie bij Phoenix Metals.",
                    "GHB (gamma-hydroxybutyraat) is een depresor van het zenuwstysteem dat snel verslavend is en gevaarlijke bijwerkingen kan hebben, zoals bewustzijnsverlies, ademhalingsdepressie en coma. Het gebruik van GHB is volstrekt incompatibel met werken in de procesindustrie vanwege het onvoorspelbare en ernstige karakter van de effecten."
                ],
                fact: "De detectieperiode voor verschillende drugs varieert: cannabis kan tot 30 dagen aantoonbaar zijn in het haar, cocaïne en amfetaminen 2-4 dagen in urine, en GHB 12-24 uur in bloed.",
                practice: "Identificeer de risico's van de verschillende drugs soorten voor uw specifieke werkzaamheden binnen Phoenix Metals en documenteer welke veiligheidsmaatregelen extra belangrijk zijn bij elke categorie.",
                question: "Welke medicatie valt onder het zero-tolerance beleid van Phoenix Metals?",
                options: [
                    "Alledaagse pijnstillers zoals paracetamol",
                    "Benzodiazepinen en painstillers die de rijvaardigheid beïnvloeden",
                    "Vitamines en mineralen",
                    "Hoestdrank zonder alcohol"
                ],
                correct: 1
            },
            {
                title: "Testing protocol",
                paragraphs: [
                    "Pre-employment testing is een eerste screening bij de aanname van nieuwe medewerkers. Phoenix Metals eist een nuchtheidsverklaring en kan bij gerichte vacatures een drugstest eisen voordat een contract wordt aangeboden. Dit voorkomt dat personen met een geschiedenis van alcohol- of drugsproblemen direct in risicovolle functies worden geplaatst.",
                    "Bij vermoeden van intoxicatie kan de supervisor een medewerker vragen mee te werken aan een test. Dit gebeurt bij gedrag dat wijst op intoxicatie: slaperigheid, onduidelijke spraak, desoriëntatie of ongewoon gedrag. Weigeren om mee te werken wordt gelijkgesteld met een positieve test en kan leiden tot disciplinaire maatregelen.",
                    "Post-incident testing is verplicht na ongevallen, bijna-ongevallen of incidenten waarbij veiligheidsprocedures zijn geschonden. Een medewerker wordt dan direct getest om vast te stellen of intoxicatie een oorzaak was van het incident. Dit is cruciaal voor de analyse van de oorzaken en het bepalen van verdere maatregelen.",
                    "Steekproefsgewijs testing kan regelmatig worden uitgevoerd zonder specifieke verdenking. Dit heeft een preventief effect en voorkomt dat medewerkers denken dat ze 'onbespeurbaar' zijn alcohol of drugs te kunnen gebruiken. De steekproeven zijn onvoorspelbaar en kunnen gericht zijn op risicovolle afdelingen of functies.",
                    "De verschillende testmethoden hebben elk hun eigen toepassingsgebied: blaastests voor snelle screening van alcohol, speekseltests voor zowel alcohol als drugs (detectie tot 24-48 uur), urinetests voor langere detectieperiodes (tot 30 dagen voor cannabis) en haartests voor historisch gebruik (tot 90 dagen)."
                ],
                fact: "Volgens de privacywetgeving moeten medewerkers vooraf geïnformeerd worden over het testen en moeten resultaten vertrouwelijk worden behandeld. Positieve tests kunnen worden gedeeld met de bedrijfsarts voor medische beoordeling.",
                practice: "Documenteer het volledige testprotocol voor uw afdeling. Wat moet u doen als u een collega vermoedt onder invloede te zijn, maar er is geen direct bewijs?",
                question: "Wanneer is post-incident testing verplicht bij Phoenix Metals?",
                options: [
                    "Na elke werkdag",
                    "Bij incidenten waar veiligheid in het geding was",
                    "Alleen op verzoek van de medewerker",
                    "Nooit, dat is strikt verboden"
                ],
                correct: 1
            },
            {
                title: "Consequenties",
                paragraphs: [
                    "Ontslag op staande voet is de directe en zwaarste consequentie voor overtreding van het zero-tolerance beleid. Bij bewezen alcohol- of drugsgebruik tijdens werktijd, of als een medewerker weigert mee te werken aan een test, kan Phoenix Metals onmiddellijk het dienstverband beëindigen zonder opzegtermijn. Dit wettelijk recht is gebaseerd op de ernst van de overtreding en het gevaar voor veiligheid.",
                    "Aangifte bij justitie kan plaatsvinden bij ernstige overtredingen, zoals het dealen van drugs op de werkvloer, het meenemen van illegale chemicaliën naar de fabriek, of herhaaldelijke overtredingen. Phoenix Metals werkt nauw samen met autoriteiten om criminaliteit binnen het bedrijf te bestrijden en een veilige werkomgeving te garanderen.",
                    "Reputatieschade is een significant indirect gevolg van overtredingen. Phoenix Metals heeft een reputatie als veilige werkgever in de procesindustrie. Incidenten met alcohol of drugs kunnen leiden tot verlies van vertrouwen bij klanten, leveranciers en regelgevende instanties, wat op termijn kan leiden tot het verlies van contracten of vergunningen.",
                    "Collectieve straffen zijn een consequentie die Phoenix Metals kan oplegen aan hele teams of afdelingen als er structurele problemen worden geconstateerd. Dit kan betekenen dat extra trainingen verplicht worden, of dat afdelingen intensiever worden gecontroleerd. Dit stimuleert onderlinge controle en collegiale waakzaamheid.",
                    "Terugkeer na een overtreding is strikt gereguleerd. Medewerkers die in aanraking zijn gekomen met drugs of alcohol kunnen een hersteltraject moeten doorlopen onder begeleiding van de bedrijfsarts en een externe verslavingszorgspecialist. Pas na succesvolle afronding van dit traject kan terugkeer naar de oorspronkelijke functie worden overwogen."
                ],
                fact: "Volgens de arbeidsrechtelijke jurisprudentie is ontslag op staande voet bij alcohol- of drugsgebruik tijdens werk doorgaans rechtvaardig, mits de werkgever voldoende onderzoek heeft gedaan en de maatregel proportioneel is.",
                practice: "Bespreek met uw teamleider wat de specifieke consequenties zijn voor uw functie bij een overtreding. Wat is het protocol voor het melden van verdachte situaties?",
                question: "Wat is de zwaarste directe consequentie voor overtreding van het zero-tolerance beleid?",
                options: [
                    "Verwijdering uit de ploeg",
                    "Ontslag op staande voet",
                    "Verlaging salaris",
                    "Extra training"
                ],
                correct: 1
            },
            {
                title: "Hulpverlening",
                paragraphs: [
                    "Bedrijfsartsen van Phoenix Metals zijn het eerste aanspreekpunt voor medewerkers met alcohol- of drugsproblemen. Zij bieden medische beoordeling, begeleiden hersteltrajecten en kunnen verwijzingen naar gespecialiseerde hulpverlening maken. De bedrijfsarts heeft vertrouwelijke informatie en kan beoordelen of een medewerker geschikt is voor zijn functie.",
                    "Vertrouwenspersonen binnen Phoenix Metals bieden een luisterend oor en begeleiden medewerkers door het proces van herkenning, hulpverlening en herstel. Zijn zijn onafhankelijk van de directie en garanderen discretie. Medewerkers kunnen anoniem contact opnemen voor advies en ondersteuning zonder dat dit automatisch tot disciplinaire maatregelen leidt.",
                    "Verslavingszorgspecialisten worden ingeschakeld bij ernstige problemen. Zij bieden gespecialiseerde behandelingen zoals cognitieve gedragstherapie, groepstherapie en eventueel medische behandeling (zoals naltrexon bij alcoholverslaving). Het behandeltraject is maatwerk en duurt doorgaans 6-12 maanden.",
                    "Anonime melding is mogelijk via het meldpunt van Phoenix Metals. Medewerkers kunnen anoniem een collega of zichzelf melden zonder directe consequenties voor de melder. Het meldpunt handelt vertrouwelijk en zorgt voor de juiste begeleiding van de betrokken persoon. Dit stimuleert preventie en vroegtijdige interventie.",
                    "Re-integratie na succesvol herstel wordt gefaciliteerd door Phoenix Metals. Dit kan betekenen dat een medewerker na een periode van afwezigheid terugkeert in een aangepaste functie, met extra begeleiding en monitoring. De focus ligt op herstel van de werknemer en het behoud van zijn arbeidsrelatie binnen het bedrijf."
                ],
                fact: "Medewerkers die zichzelf anoniem melden en hulp zoeken vallen onder het 'zelfmeldingsbeleid' van Phoenix Metals, waardoor geen disciplinaire maatregelen worden opgelegd als de medewerker actief meewerkt aan de oplossing van het probleem.",
                practice: "Identificeer de contactgegevens van de bedrijfsarts, vertrouwenspersonen en het meldpunt binnen Phoenix Metals. Wat is het procedure voor het melden van een vermoeden van drugs- of alcoholprobleem bij een collega?",
                question: "Wie is het eerste aanspreekpunt voor medewerkers met alcohol- of drugsproblemen binnen Phoenix Metals?",
                options: [
                    "Directie",
                    "Bedrijfsarts",
                    "Collega's",
                    "Personeelsadministratie"
                ],
                correct: 1
            }
        ];

        // Quiz vragen
        const quizQuestions = [
            {
                question: "Waarom hanteert Phoenix Metals een zero-tolerance beleid voor alcohol en drugs?",
                options: [
                    "Om de productie te verhogen",
                    "Omdat dit wettelijk verplicht is",
                    "Om de veiligheid in de procesindustrie te waarborgen",
                    "Omedewerkers te disciplineren"
                ],
                correct: 2
            },
            {
                question: "Wat is de belangrijkste verplichting van medewerkers volgens de Arbowet, artikel 11?",
                options: [
                    "Maximaal 2 glazen alcohol drinken",
                    "Meewerken aan veilige arbeidsomstandigheden",
                    "Elke overtreding melden aan de directie",
                    "Zelf beslissen wat veilig is"
                ],
                correct: 1
            },
            {
                question: "Welk effect is het meest direct gevaarlijk bij het werken met gevaarlijke chemicaliën?",
                options: [
                    "Verhoogde creativiteit",
                    "Verminderde risicoperceptie",
                    "Verbeterde coördinatie",
                    "Verminderde spierspanning"
                ],
                correct: 1
            },
            {
                question: "Welk chemisch product bij Phoenix Metals is bijzonder gevaarlijk bij intoxicatie?",
                options: [
                    "Water",
                    "Zwavelzuur",
                    "Zand",
                    "Lucht"
                ],
                correct: 1
            },
            {
                question: "Hoeveel alcohol kan het menselijk lichaam per uur ongeveer afbreken?",
                options: [
                    "Meerdere glazen",
                    "Één standaardglas",
                    "Halve glas",
                    "Geen alcohol"
                ],
                correct: 1
            },
            {
                question: "Welke medicatie valt onder het zero-tolerance beleid van Phoenix Metals?",
                options: [
                    "Alledaagse pijnstillers zoals paracetamol",
                    "Benzodiazepinen en pijnstillers die de rijvaardigheid beïnvloeden",
                    "Vitamines en mineralen",
                    "Hoestdrank zonder alcohol"
                ],
                correct: 1
            },
            {
                question: "Wanneer is post-incident testing verplicht bij Phoenix Metals?",
                options: [
                    "Na elke werkdag",
                    "Bij incidenten waar veiligheid in het geding was",
                    "Alleen op verzoek van de medewerker",
                    "Nooit, dat is strikt verboden"
                ],
                correct: 1
            },
            {
                question: "Wat is de zwaarste directe consequentie voor overtreding van het zero-tolerance beleid?",
                options: [
                    "Verwijdering uit de ploeg",
                    "Ontslag op staande voet",
                    "Verlaging salaris",
                    "Extra training"
                ],
                correct: 1
            },
            {
                question: "Wie is het eerste aanspreekpunt voor medewerkers met alcohol- of drugsproblemen binnen Phoenix Metals?",
                options: [
                    "Directie",
                    "Bedrijfsarts",
                    "Collega's",
                    "Personeelsadministratie"
                ],
                correct: 1
            },
            {
                question: "Welk scenario toont het meest gevaarlijke combinatie van omstandigheden bij Phoenix Metals?",
                options: [
                    "Alcoholgebruik kantooromgeving",
                    "Cannabisgebruik tijdens pauze",
                    "Alcoholgebruik bij hoogtewerk met chemische stoffen",
                    "Medicatiegebruik na melding aan bedrijfsarts"
                ],
                correct: 2
            }
        ];

        // Functies voor module interactie
        function initModules() {
            const modulesContainer = document.getElementById('modules');
            
            modules.forEach((module, index) => {
                const moduleDiv = document.createElement('div');
                moduleDiv.className = 'module';
                moduleDiv.innerHTML = `
                    <h2>Module ${index + 1}: ${module.title}</h2>
                    ${module.paragraphs.map(p => `<p class="paragraph">${p}</p>`).join('')}
                    
                    <div class="info-box">
                        <h3>📖 Wist je dat?</h3>
                        <p>${module.fact}</p>
                    </div>
                    
                    <div class="practice-box">
                        <h3>🏭 Phoenix Metals Praktijk</h3>
                        <p>${module.practice}</p>
                    </div>
                    
                    <div class="question">
                        <h3>Controlevraag</h3>
                        <p><strong>${module.question}</strong></p>
                        <div class="options">
                            ${module.options.map((option, optIndex) => `
                                <div class="option" onclick="selectOption(this, ${optIndex}, ${module.correct}, 'module-${index}')">
                                    ${String.fromCharCode(65 + optIndex)}. ${option}
                                </div>
                            `).join('')}
                        </div>
                    </div>
                `;
                modulesContainer.appendChild(moduleDiv);
                
                // Update progress
                updateProgress(((index + 1) / totalModules) * 100);
            });

            // Voeg quiz knop toe
            const quizButton = document.createElement('div');
            quizButton.innerHTML = '<button class="button" onclick="showQuiz()">Quiz Voltooien</button>';
            modulesContainer.appendChild(quizButton);
        }

        function updateProgress(percent) {
            document.getElementById('progress').style.width = percent + '%';
            currentProgress = percent;
        }

        function selectOption(element, selectedIndex, correctIndex, moduleId) {
            // Reset alle opties
            const options = element.parentElement.querySelectorAll('.option');
            options.forEach(opt => {
                opt.classList.remove('selected', 'correct', 'incorrect');
            });
            
            // Markeer geselecteerde optie
            element.classList.add('selected');
            
            // Toon correct/incorrect na een korte tijd
            setTimeout(() => {
                if (selectedIndex === correctIndex) {
                    element.classList.add('correct');
                } else {
                    element.classList.add('incorrect');
                    // Markeer ook de correcte optie
                    options[correctIndex].classList.add('correct');
                }
                
                // Disable alle opties
                options.forEach(opt => {
                    opt.style.pointerEvents = 'none';
                });
            }, 300);
        }

        function showQuiz() {
            document.getElementById('modules').classList.add('hidden');
            document.getElementById('quiz-container').classList.remove('hidden');
            updateProgress(100);
            initQuiz();
        }

        function initQuiz() {
            const quizQuestionsContainer = document.getElementById('quiz-questions');
            
            quizQuestions.forEach((q, index) => {
                const questionDiv = document.createElement('div');
                questionDiv.className = 'question';
                questionDiv.innerHTML = `
                    <h3>Vraag ${index + 1}: ${q.question}</h3>
                    <div class="options">
                        ${q.options.map((option, optIndex) => `
                            <div class="option quiz-option" onclick="selectQuizOption(this, ${optIndex}, ${q.correct}, 'q-${index}')">
                                ${String.fromCharCode(65 + optIndex)}. ${option}
                            </div>
                        `).join('')}
                    </div>
                `;
                quizQuestionsContainer.appendChild(questionDiv);
            });
        }

        function selectQuizOption(element, selectedIndex, correctIndex, questionId) {
            // Reset alle opties voor deze vraag
            const questionElement = element.closest('.question');
            const options = questionElement.querySelectorAll('.option');
            
            options.forEach(opt => {
                opt.classList.remove('selected', 'correct', 'incorrect');
                opt.style.pointerEvents = 'none';
            });
            
            // Markeer geselecteerde optie
            element.classList.add('selected');
            
            // Toon correct/incorrect
            if (selectedIndex === correctIndex) {
                element.classList.add('correct');
                correctAnswers++;
            } else {
                element.classList.add('incorrect');
                // Markeer ook de correcte optie
                options[correctIndex].classList.add('correct');
            }
        }

        function checkQuiz() {
            const percentage = (correctAnswers / totalQuestions) * 100;
            const message = percentage >= 80 ? 
                `Gefeliciteerd! U heeft ${correctAnswers}/${totalQuestions} vragen correct beantwoord (${percentage.toFixed(1)}%).` :
                `Helaas heeft u ${correctAnswers}/${totalQuestions} vragen correct beantwoord (${percentage.toFixed(1)}%). De vereiste score van 80% is niet behaald.`;
            
            alert(message);
            
            // Toon juiste knoppen
            if (percentage >= 80) {
                document.getElementById('certificate-button').classList.remove('hidden');
            } else {
                document.getElementById('retry-button').classList.remove('hidden');
            }
        }

        function resetQuiz() {
            // Reset quiz
            document.getElementById('quiz-questions').innerHTML = '';
            document.getElementById('retry-button').classList.add('hidden');
            document.getElementById('certificate-button').classList.add('hidden');
            correctAnswers = 0;
            initQuiz();
        }

        function showCertificate() {
            document.getElementById('quiz-container').classList.add('hidden');
            document.getElementById('certificate').classList.remove('hidden');
        }

        // Initialize when page loads
        window.onload = function() {
            initModules();
        };
    </script>
</body>
</html>"""

def generate_html():
    # Maak de output directory aan als deze niet bestaat
    os.makedirs('/root/projects/jg/2026-PM-eLearning/deliverables', exist_ok=True)
    
    # Genereer de HTML file
    output_path = '/root/projects/jg/2026-PM-eLearning/deliverables/PM_EL_T14_Alcohol_Drugs_Zero_Tolerance_eLearning_v1.1.html'
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(HTML_TEMPLATE)
    
    # Controleer de bestandsgrootte
    file_size = os.path.getsize(output_path)
    print(f"T14 HTML gegenereerd: {output_path}")
    print(f"Bestandsgrootte: {file_size} bytes ({file_size/1024:.1f} KB)")
    
    return output_path, file_size

if __name__ == "__main__":
    output_path, file_size = generate_html()
    print(f"Succesvol voltooid! Bestandsgrootte: {file_size} bytes")