{"id":5216,"date":"2025-08-07T12:30:02","date_gmt":"2025-08-07T10:30:02","guid":{"rendered":"https:\/\/e-academyhub.com\/how-to-create-and-enrol-in-a-course\/"},"modified":"2025-10-17T11:15:15","modified_gmt":"2025-10-17T09:15:15","slug":"how-to-create-and-enrol-in-a-course","status":"publish","type":"page","link":"https:\/\/e-academyhub.com\/en\/how-to-create-and-enrol-in-a-course\/","title":{"rendered":"How to create and enrol in a course"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5216\" class=\"elementor elementor-5216 elementor-2891\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2246952 e-flex e-con-boxed e-con e-parent\" data-id=\"2246952\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4f0242 elementor-widget elementor-widget-heading\" data-id=\"e4f0242\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">FAQ<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e524150 e-con-full e-flex e-con e-child\" data-id=\"e524150\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7bd8327 e-con-full e-flex e-con e-child\" data-id=\"7bd8327\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bd893f elementor-widget elementor-widget-text-editor\" data-id=\"3bd893f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<main id=\"content\" class=\"site-main post-788 page type-page status-publish hentry\"><\/main><div class=\"page-content\"><p>To create an account, simply click on &#8220;Create account&#8221; and then select &#8220;Student registration&#8221;. Fill in the details requested &#8211; name, email, social security number, address and so on. <\/p><p>Already have an account? Then click on &#8220;My account&#8221; in the main menu and log in with your details. Once logged in, you can see, among other things, which courses you are registered for. Under &#8220;Courses&#8221; in the menu you will find all available courses.   <\/p><p>To register for a course, click on &#8220;Register course&#8221;. Courses are divided into different parts as you can see on the left. The course parts can consist of text, videos or PDF files.  <\/p><p>At the bottom left, you can select your preferred language. Most videos support multiple languages. When you are done with a course section, click on the button at the top right: &#8220;Mark as complete&#8221;.  <\/p><p>Each section of the course contains a test. This helps you learn as much as possible and prepares you for the final exam. <\/p><p>Once you&#8217;ve completed all parts, it&#8217;s time for the final test. It is done without any aids. You have 60 minutes and must get at least 80% correct to pass. Once you have passed the final test, you will receive a certificate confirming your competence.   <\/p><p>All videos in the training courses have subtitles in Albanian, Bulgarian, English, Norwegian, Polish, Portuguese, Spanish, Romanian and Czech. They are activated by first clicking on the subtitle icon on the YouTube video, then you can click on settings to choose your language. <\/p><h2 class=\"wp-block-heading\">Frequently asked questions (FAQ)<\/h2><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">1. What is CSWO Consulting \/ e-AcademyHub?<\/h3><p>It is a digital education platform that offers certification courses in the construction and professional industry in Sweden and Norway. The group behind it seems to be e-AcademyHub AB<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">2. What types of courses do you offer?<\/h3><p>They are available in certifications relevant to the construction sector, such as environmental training for foreign professionals and construction certifications<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">3. How do the training courses work?<\/h3><ul class=\"wp-block-list\"><li>The courses are self-paced.<\/li><li>The platform shows course progress and statistics.<\/li><li>Support is available from experienced instructors<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/li><\/ul><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">4. What payment options are available?<\/h3><p>Smooth and secure payments according to the website info. No details on methods, probably standard card payment<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">5. How to get in touch with CSWO Consulting\/E-AcademyHub?<\/h3><ul class=\"wp-block-list\"><li>Several office locations: Limhamn (HQ), Stockholm, Gothenburg and others. Telephone numbers and dedicated email addresses for sales, finance and CEO Andreas Andersson are available<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/li><li>Contact forms with name, company, email, phone and message are available directly on the site.<\/li><\/ul><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">6. How do I create an account?<\/h3><p>The &#8220;Create account&#8221; menu allows you to choose between student registration and instructor registration.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">7. I want to log in \/ access my account &#8211; how do I do this?<\/h3><p>You do this via &#8220;My account \/ Log in&#8221; in the menu.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">8. Is there a FAQ page?<\/h3><p>Yes, there is a separate FAQ section in the main menu, so probably more questions are answered there.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">9. What is the &#8220;How-To&#8221;?<\/h3><p>A section likely to contain help and guidance for using the platform.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">10. How do I know how far I have progressed in the course?<\/h3><p>The platform has clear progress tools and statistics so you can easily see your results and goals<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">11. What are the noticeable innovations?<\/h3><p>Current news on the site:<\/p><ul class=\"wp-block-list\"><li>Easier for foreign skilled workers to get their skills recognized in Sweden\/Norway.<\/li><li>New construction industry certifications launched at e-AcademyHub.<\/li><li>Launch of a new training platform<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/li><\/ul><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">12. How do I request a quote?<\/h3><p>There is a form to quickly request a quote &#8211; clear steps with personalized support and quick feedback<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">13. do you use cookies?<\/h3><p>Yes, they inform you that cookies are used for the best experience and that use implies consent.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">14. Do you have an environmental policy?<\/h3><p>Yes, there is an &#8220;Environmental Policy&#8221; tab in the menu (under Contact \/ About us).<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">15. What is your address?<\/h3><p>Postal\/visiting address for e-AcademyHub AB: Geijersgatan 2A, 216 18 Limhamn (Malm\u00f6)<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">16. What support do you offer?<\/h3><ul class=\"wp-block-list\"><li>Direct contact with course leaders.<\/li><li>Personal guidance via customer service.<\/li><li>A &#8220;CSWO AI Assistant&#8221; is activated via chat icon on the page<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com)<\/a><\/li><\/ul><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">17. What year was the site\/company founded?<\/h3><p>It says \u00a9 2021 COPYRIGHT ITKAB, indicating that the site was launched or last updated then.<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com<\/a>)<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">18. Who is the CEO?<\/h3><p>Andreas Andersson is CEO \/ Senior Partner, contactable by phone or email on the site.<a href=\"https:\/\/cswoconsulting.com\/?utm_source=chatgpt.com\">(cswoconsulting.com<\/a>)<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">19. What languages does the platform support?<\/h3><p>Probably Swedish and English, based on the fact that parts like &#8220;How-To&#8221; are in English. Exact language support is not clear &#8211; contact us for more info. <\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h3 class=\"wp-block-heading\">20. What is the CSWO AI assistant?<\/h3><p>A chat-based AI assistant to help you navigate, answer common questions and guide you through the platform.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><p>Hope this FAQ covers your concerns! Let me know if you want me to adjust, add more questions or translate in more detail. <\/p><\/div><div class=\"elementor elementor-762 elementor-location-footer\" data-elementor-type=\"footer\" data-elementor-id=\"762\" data-elementor-post-type=\"elementor_library\"><section class=\"elementor-section elementor-top-section elementor-element elementor-element-3dba033a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3dba033a\" data-element_type=\"section\" data-settings=\"{\"background_background\":\"gradient\"}\"><div class=\"elementor-background-overlay\"> <\/div><div class=\"elementor-container elementor-column-gap-wide\"><div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-762b1a3a\" data-id=\"762b1a3a\" data-element_type=\"column\"><div class=\"elementor-widget-wrap elementor-element-populated\"><div class=\"elementor-element elementor-element-2d6d423f elementor-widget elementor-widget-heading\" data-id=\"2d6d423f\" data-element_type=\"widget\" data-widget_type=\"heading.default\"><div class=\"elementor-widget-container\"> <\/div><\/div><\/div><\/div><\/div><\/section><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ef5b292 e-flex e-con-boxed e-con e-parent\" data-id=\"ef5b292\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fdcef99 e-flex e-con-boxed e-con e-parent\" data-id=\"fdcef99\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9124cd9 elementor-widget elementor-widget-shortcode\" data-id=\"9124cd9\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"custom-chatbot-wrapper\">\r\n    <button id=\"chatbot-toggle\" class=\"chatbot-toggle\" aria-label=\"\u00d6ppna chatbot\">\r\n                    <img decoding=\"async\" src=\"https:\/\/e-academyhub.com\/wp-content\/uploads\/2025\/08\/LOGO-TRANSPARENT.png\" alt=\"Chatbot Icon\" \/>\r\n            <\/button>\r\n\r\n    <div id=\"custom-chatbot\" class=\"cc-hidden\" aria-hidden=\"true\">\r\n        <div class=\"cc-header\">\r\n            <span class=\"cc-title\">e-Academyhub assistent<\/span>\r\n            <button id=\"cc-close\" class=\"cc-close\" aria-label=\"St\u00e4ng\">\u00d7<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"cc-messages\" id=\"cc-messages\" aria-live=\"polite\"><\/div>\r\n\r\n        <div class=\"cc-input\">\r\n            <input type=\"text\" id=\"cc-input\" placeholder=\"Skriv din fr\u00e5ga h\u00e4r...\" autocomplete=\"off\" \/>\r\n            <button class=\"cc-send\" id=\"cc-send\"><\/button>\r\n        <\/div>\r\n        <p class=\"cc-disclaimer\">Svaren genereras av AI och kan inneh\u00e5lla felaktigheter.<\/p>\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n.cc-ticket-offer {\r\n    margin: 10px 0;\r\n    text-align: center;\r\n    padding: 10px;\r\n}\r\n\r\n.cc-ticket-btn {\r\n    background: #007cba;\r\n    color: white;\r\n    border: none;\r\n    padding: 10px 20px;\r\n    border-radius: 20px;\r\n    cursor: pointer;\r\n    font-size: 14px;\r\n    transition: background 0.3s;\r\n}\r\n\r\n.cc-ticket-btn:hover {\r\n    background: #005a87;\r\n}\r\n\r\n.cc-ticket-form {\r\n    background: #f8f9fa;\r\n    border: 1px solid #e9ecef;\r\n    border-radius: 8px;\r\n    padding: 15px;\r\n    margin: 10px 0;\r\n}\r\n\r\n.cc-ticket-form h4 {\r\n    margin: 0 0 15px 0;\r\n    color: #333;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n}\r\n\r\n.cc-ticket-form input,\r\n.cc-ticket-form textarea {\r\n    width: 100%;\r\n    padding: 8px;\r\n    margin-bottom: 10px;\r\n    border: 1px solid #ddd;\r\n    border-radius: 4px;\r\n    box-sizing: border-box;\r\n    font-size: 14px;\r\n}\r\n\r\n.cc-ticket-form textarea {\r\n    resize: vertical;\r\n    min-height: 80px;\r\n}\r\n\r\n.cc-ticket-actions {\r\n    display: flex;\r\n    gap: 10px;\r\n}\r\n\r\n.cc-ticket-submit {\r\n    background: #28a745;\r\n    color: white;\r\n    border: none;\r\n    padding: 8px 16px;\r\n    border-radius: 4px;\r\n    cursor: pointer;\r\n    flex: 1;\r\n    font-size: 14px;\r\n}\r\n\r\n.cc-ticket-submit:hover {\r\n    background: #218838;\r\n}\r\n\r\n.cc-ticket-cancel {\r\n    background: #6c757d;\r\n    color: white;\r\n    border: none;\r\n    padding: 8px 16px;\r\n    border-radius: 4px;\r\n    cursor: pointer;\r\n    flex: 1;\r\n    font-size: 14px;\r\n}\r\n\r\n.cc-ticket-cancel:hover {\r\n    background: #5a6268;\r\n}\r\n\r\n.cc-ticket-success {\r\n    background: #d4edda;\r\n    border: 1px solid #c3e6cb;\r\n    color: #155724;\r\n    padding: 10px;\r\n    border-radius: 4px;\r\n    margin: 10px 0;\r\n    text-align: center;\r\n}\r\n<\/style>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    const chatbot = document.getElementById('custom-chatbot');\r\n    const toggleBtn = document.getElementById('chatbot-toggle');\r\n    const closeBtn = document.getElementById('cc-close');\r\n    const messages = document.getElementById('cc-messages');\r\n    const input = document.getElementById('cc-input');\r\n    const sendBtn = document.getElementById('cc-send');\r\n    const welcomeMessage = \"Hej! Hur kan hj\u00e4lpa dig idag?\";\r\n    const CHAT_EXPIRY_MINUTES = 10;\r\n\r\n    const CHATBOT_STATE_KEY = 'chatbot_open_session';\r\n    function openChatbot(saveState = true) {\r\n        chatbot.classList.remove('cc-hidden');\r\n        chatbot.setAttribute('aria-hidden', 'false');\r\n        if (saveState) sessionStorage.setItem(CHATBOT_STATE_KEY, 'true');\r\n    }\r\n\r\n    function closeChatbot(saveState = true) {\r\n        chatbot.classList.add('cc-hidden');\r\n        chatbot.setAttribute('aria-hidden', 'true');\r\n        if (saveState) sessionStorage.setItem(CHATBOT_STATE_KEY, 'false');\r\n    }\r\n\r\n\r\n\r\n    const pageLang = (window.customChatbot && window.customChatbot.lang)\r\n        ? window.customChatbot.lang\r\n        : 'sv';\r\n\r\n    loadMessages();\r\n\r\n    const storedState = sessionStorage.getItem(CHATBOT_STATE_KEY);\r\n\r\n\/\/ Auto-open only once per session\r\nif (storedState === null) {\r\n    openChatbot(true); \/\/ first page load in this session\r\n} else if (storedState === 'true') {\r\n    openChatbot(false);\r\n} else {\r\n    closeChatbot(false);\r\n}\r\n\r\n\r\n\r\n    toggleBtn.addEventListener('click', () => {\r\n    if (chatbot.classList.contains('cc-hidden')) {\r\n        openChatbot();\r\n    } else {\r\n        closeChatbot();\r\n    }\r\n    });\r\n\r\n\r\n    closeBtn.addEventListener('click', () => {\r\n        closeChatbot();\r\n    });\r\n\r\n\r\n    sendBtn.addEventListener('click', sendMessage);\r\n\r\n    input.addEventListener('keypress', (e) => {\r\n        if (e.key === 'Enter') sendMessage();\r\n    });\r\n\r\n    function sendMessage() {\r\n        const message = input.value.trim();\r\n        if (!message) return;\r\n\r\n        addMessage(message, 'user');\r\n        saveMessages();\r\n\r\n        input.value = '';\r\n        showTypingIndicator();\r\n\r\n        \/\/ Get conversation history for smart ticket detection\r\n        const conversationHistory = getConversationHistory();\r\n        \r\n        const restUrl = `${window.location.origin}\/wp-json\/custom-chatbot\/v1\/message`;\r\n        const payload = { \r\n            message, \r\n            lang: pageLang,\r\n            history: conversationHistory\r\n        };\r\n        const headers = { 'Content-Type': 'application\/json' };\r\n\r\n        const sendViaREST = () => fetch(restUrl, {\r\n            method: 'POST',\r\n            headers,\r\n            body: JSON.stringify(payload)\r\n        });\r\n\r\n        const sendViaAjax = () =>\r\n            fetch(customChatbot.ajaxurl, {\r\n                method: 'POST',\r\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\r\n                body: new URLSearchParams({\r\n                    action: 'custom_chatbot_message',\r\n                    nonce: customChatbot.nonce,\r\n                    message: message,\r\n                    lang: pageLang,\r\n                    history: JSON.stringify(conversationHistory)\r\n                })\r\n            });\r\n\r\n        sendViaREST()\r\n            .then(response => {\r\n                if (!response.ok) throw new Error('REST failed');\r\n                return response.json();\r\n            })\r\n            .then(data => {\r\n                removeTypingIndicator();\r\n                handleBotResponse(data);\r\n            })\r\n            .catch(() => {\r\n                sendViaAjax()\r\n                    .then(res => res.json())\r\n                    .then(data => {\r\n                        removeTypingIndicator();\r\n                        handleBotResponse(data.data);\r\n                    })\r\n                    .catch(() => {\r\n                        removeTypingIndicator();\r\n                        addMessage('N\u00e4tverksfel. F\u00f6rs\u00f6k igen.', 'bot');\r\n                    });\r\n            });\r\n    }\r\n\r\n    function handleBotResponse(data) {\r\n        if (!data || !data.success) {\r\n            addMessage('Ett fel uppstod. F\u00f6rs\u00f6k igen.', 'bot');\r\n            return;\r\n        }\r\n\r\n        addMessage(data.reply, 'bot');\r\n        \r\n        \/\/ Show ticket button if offered\r\n        if (data.offer_ticket) {\r\n            showTicketButton();\r\n        }\r\n        \r\n        saveMessages();\r\n    }\r\n\r\n    function addMessage(text, sender, isHTML = false) {\r\n        const messageDiv = document.createElement('div');\r\n        messageDiv.classList.add('cc-message', sender === 'user' ? 'user' : 'bot');\r\n        \r\n        if (isHTML) {\r\n            messageDiv.innerHTML = text;\r\n        } else {\r\n            messageDiv.textContent = text;\r\n        }\r\n        \r\n        messages.appendChild(messageDiv);\r\n        messages.scrollTop = messages.scrollHeight;\r\n    }\r\n\r\n    function showTypingIndicator() {\r\n        if (document.getElementById('cc-typing-indicator')) return;\r\n        const typingDiv = document.createElement('div');\r\n        typingDiv.id = 'cc-typing-indicator';\r\n        typingDiv.classList.add('cc-typing-indicator');\r\n\r\n        for (let i = 0; i < 3; i++) {\r\n            const dot = document.createElement('span');\r\n            typingDiv.appendChild(dot);\r\n        }\r\n\r\n        messages.appendChild(typingDiv);\r\n        messages.scrollTop = messages.scrollHeight;\r\n    }\r\n\r\n    function removeTypingIndicator() {\r\n        const ind = document.getElementById('cc-typing-indicator');\r\n        if (ind) ind.remove();\r\n    }\r\n\r\n    function getConversationHistory() {\r\n        const history = [];\r\n        messages.querySelectorAll('.cc-message').forEach(msg => {\r\n            history.push({\r\n                text: msg.textContent || msg.innerText,\r\n                sender: msg.classList.contains('user') ? 'user' : 'bot'\r\n            });\r\n        });\r\n        return history;\r\n    }\r\n\r\n    function showTicketButton() {\r\n        \/\/ Remove any existing ticket button to avoid duplicates\r\n        const existingButton = document.querySelector('.cc-ticket-offer');\r\n        if (existingButton) existingButton.remove();\r\n        \r\n        const buttonContainer = document.createElement('div');\r\n        buttonContainer.className = 'cc-ticket-offer';\r\n        \r\n        const ticketButton = document.createElement('button');\r\n        ticketButton.className = 'cc-ticket-btn';\r\n        \r\n        \/\/ Language-specific button text\r\n        const buttonText = {\r\n            'sv': 'Skicka in \u00e4rende',\r\n            'en': 'Submit ticket',\r\n            'bg': '\u041f\u043e\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u044f\u0432\u043a\u0430'\r\n        };\r\n        \r\n        ticketButton.textContent = buttonText[pageLang] || buttonText['sv'];\r\n        ticketButton.addEventListener('click', showTicketForm);\r\n        \r\n        buttonContainer.appendChild(ticketButton);\r\n        messages.appendChild(buttonContainer);\r\n        messages.scrollTop = messages.scrollHeight;\r\n    }\r\n\r\n    function showTicketForm() {\r\n        \/\/ Remove existing ticket form if any\r\n        const existingForm = document.querySelector('.cc-ticket-form');\r\n        if (existingForm) existingForm.remove();\r\n        \r\n        \/\/ Remove ticket button\r\n        const ticketButton = document.querySelector('.cc-ticket-offer');\r\n        if (ticketButton) ticketButton.remove();\r\n        \r\n        \/\/ Language-specific form text\r\n        const formText = {\r\n            'sv': {\r\n                title: 'Skicka \u00e4rende till e-AcademyHub',\r\n                email: 'Din e-post',\r\n                message: 'Beskriv ditt problem...',\r\n                submit: 'Skicka \u00e4rende',\r\n                cancel: 'Avbryt'\r\n            },\r\n            'en': {\r\n                title: 'Submit ticket to e-AcademyHub',\r\n                email: 'Your email',\r\n                message: 'Describe your problem...',\r\n                submit: 'Submit ticket',\r\n                cancel: 'Cancel'\r\n            },\r\n            'bg': {\r\n                title: '\u041f\u043e\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0434\u043e e-AcademyHub',\r\n                email: '\u0412\u0430\u0448\u0438\u044f\u0442 \u0438\u043c\u0435\u0439\u043b',\r\n                message: '\u041e\u043f\u0438\u0448\u0435\u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0438...',\r\n                submit: '\u0418\u0437\u043f\u0440\u0430\u0442\u0438 \u0437\u0430\u044f\u0432\u043a\u0430',\r\n                cancel: '\u041e\u0442\u043a\u0430\u0437'\r\n            }\r\n        };\r\n        \r\n        const text = formText[pageLang] || formText['sv'];\r\n        \r\n        const formHTML = `\r\n            <div class=\"cc-ticket-form\">\r\n                <h4>${text.title}<\/h4>\r\n                <input type=\"email\" id=\"cc-ticket-email\" placeholder=\"${text.email}\" required \/>\r\n                <textarea id=\"cc-ticket-message\" placeholder=\"${text.message}\" rows=\"4\" required><\/textarea>\r\n                <div class=\"cc-ticket-actions\">\r\n                    <button id=\"cc-ticket-submit\" class=\"cc-ticket-submit\">${text.submit}<\/button>\r\n                    <button id=\"cc-ticket-cancel\" class=\"cc-ticket-cancel\">${text.cancel}<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n        \r\n        addMessage(formHTML, 'bot', true);\r\n        \r\n        document.getElementById('cc-ticket-submit').addEventListener('click', submitTicket);\r\n        document.getElementById('cc-ticket-cancel').addEventListener('click', () => {\r\n            const form = document.querySelector('.cc-ticket-form');\r\n            if (form) form.remove();\r\n        });\r\n    }\r\n\r\n    function submitTicket() {\r\n        const email = document.getElementById('cc-ticket-email').value;\r\n        const message = document.getElementById('cc-ticket-message').value;\r\n        \r\n        if (!email || !message) {\r\n            alert('V\u00e4nligen fyll i b\u00e5de e-post och meddelande.');\r\n            return;\r\n        }\r\n        \r\n        if (!validateEmail(email)) {\r\n            alert('V\u00e4nligen ange en giltig e-postadress.');\r\n            return;\r\n        }\r\n        \r\n        const submitBtn = document.getElementById('cc-ticket-submit');\r\n        const originalText = submitBtn.textContent;\r\n        submitBtn.textContent = 'Skickar...';\r\n        submitBtn.disabled = true;\r\n        \r\n        const conversation = getConversationHistory();\r\n        \r\n        fetch('\/wp-json\/custom-chatbot\/v1\/ticket', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application\/json',\r\n            },\r\n            body: JSON.stringify({\r\n                email: email,\r\n                message: message,\r\n                conversation: conversation,\r\n                lang: pageLang\r\n            })\r\n        })\r\n        .then(response => response.json())\r\n        .then(data => {\r\n            const form = document.querySelector('.cc-ticket-form');\r\n            if (form) form.remove();\r\n            \r\n            if (data.success) {\r\n                const successMessage = {\r\n                    'sv': 'Tack! Ditt \u00e4rende har skickats. Vi kontaktar dig inom 24 timmar.',\r\n                    'en': 'Thank you! Your ticket has been submitted. We will contact you within 24 hours.',\r\n                    'bg': '\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c! \u0412\u0430\u0448\u0430\u0442\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0435 \u0438\u0437\u043f\u0440\u0430\u0442\u0435\u043d\u0430. \u0429\u0435 \u0441\u0435 \u0441\u0432\u044a\u0440\u0436\u0435\u043c \u0441 \u0432\u0430\u0441 \u0432 \u0440\u0430\u043c\u043a\u0438\u0442\u0435 \u043d\u0430 24 \u0447\u0430\u0441\u0430.'\r\n                };\r\n                \r\n                addMessage(successMessage[pageLang] || successMessage['sv'], 'bot');\r\n            } else {\r\n                const errorMessage = {\r\n                    'sv': 'Ett fel uppstod n\u00e4r \u00e4rendet skulle skickas. F\u00f6rs\u00f6k igen senare.',\r\n                    'en': 'An error occurred while submitting the ticket. Please try again later.',\r\n                    'bg': '\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430. \u041c\u043e\u043b\u044f, \u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e \u043f\u043e-\u043a\u044a\u0441\u043d\u043e.'\r\n                };\r\n                \r\n                addMessage(errorMessage[pageLang] || errorMessage['sv'], 'bot');\r\n            }\r\n            saveMessages();\r\n        })\r\n        .catch(() => {\r\n            submitBtn.textContent = originalText;\r\n            submitBtn.disabled = false;\r\n            \r\n            const errorMessage = {\r\n                'sv': 'N\u00e4tverksfel. F\u00f6rs\u00f6k igen senare.',\r\n                'en': 'Network error. Please try again later.',\r\n                'bg': '\u041c\u0440\u0435\u0436\u043e\u0432\u0430 \u0433\u0440\u0435\u0448\u043a\u0430. \u041c\u043e\u043b\u044f, \u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e \u043f\u043e-\u043a\u044a\u0441\u043d\u043e.'\r\n            };\r\n            \r\n            addMessage(errorMessage[pageLang] || errorMessage['sv'], 'bot');\r\n            saveMessages();\r\n        });\r\n    }\r\n\r\n    function validateEmail(email) {\r\n        const re = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n        return re.test(email);\r\n    }\r\n\r\n    function saveMessages() {\r\n        const chatData = {\r\n            time: Date.now(),\r\n            messages: []\r\n        };\r\n\r\n        messages.querySelectorAll('.cc-message').forEach(msg => {\r\n            chatData.messages.push({\r\n                text: msg.textContent || msg.innerText,\r\n                sender: msg.classList.contains('user') ? 'user' : 'bot'\r\n            });\r\n        });\r\n\r\n        localStorage.setItem('chatbot_messages', JSON.stringify(chatData));\r\n    }\r\n\r\n    function loadMessages() {\r\n        const stored = localStorage.getItem('chatbot_messages');\r\n\r\n        if (stored) {\r\n            try {\r\n                const chatData = JSON.parse(stored);\r\n                const ageMinutes = (Date.now() - chatData.time) \/ (1000 * 60);\r\n\r\n                if (ageMinutes > CHAT_EXPIRY_MINUTES) {\r\n                    localStorage.removeItem('chatbot_messages');\r\n                    addMessage(welcomeMessage, 'bot');\r\n                } else {\r\n                    chatData.messages.forEach(m =>\r\n                        addMessage(m.text, m.sender)\r\n                    );\r\n                }\r\n            } catch (e) {\r\n                addMessage(welcomeMessage, 'bot');\r\n            }\r\n        } else {\r\n            addMessage(welcomeMessage, 'bot');\r\n        }\r\n    }\r\n});\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>FAQ To create an account, simply click on &#8220;Create account&#8221; and then select &#8220;Student registration&#8221;. Fill in the details requested &#8211; name, email, social security number, address and so on. Already have an account? Then click on &#8220;My account&#8221; in the main menu and log in with your details. Once logged in, you can see, [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5216","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/pages\/5216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/comments?post=5216"}],"version-history":[{"count":2,"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/pages\/5216\/revisions"}],"predecessor-version":[{"id":5476,"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/pages\/5216\/revisions\/5476"}],"wp:attachment":[{"href":"https:\/\/e-academyhub.com\/en\/wp-json\/wp\/v2\/media?parent=5216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}