diff --git a/modules/core/www/assets/js/loginuserpass.js b/modules/core/www/assets/js/loginuserpass.js
index 8667593a73740436b0ffe96e5afce01819d198e7..ff67c96f77ab5ffc5624ac256724eededaa9b664 100644
--- a/modules/core/www/assets/js/loginuserpass.js
+++ b/modules/core/www/assets/js/loginuserpass.js
@@ -1,4 +1,4 @@
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     var button = document.getElementById("submit_button");
     button.onclick = function () {
         this.innerHTML = button.getAttribute("data-processing");
@@ -8,5 +8,10 @@ ready(function () {
         form.submit();
         return true;
     };
+
+    button.focus();
+
+    var username = document.getElementById("username");
+    username.focus();
 });
 
diff --git a/package-lock.json b/package-lock.json
index 24c2c78aabf93cd1bcc10d1eae0d1fab0b606bd0..fab1daececa34fa26d6e0de1b417e8c39815bf13 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1387,11 +1387,6 @@
         }
       }
     },
-    "jquery": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
-      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
-    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
diff --git a/src/js/bundle/clipboard.js b/src/js/bundle/clipboard.js
index f3dfbeb81b1f602190dfb96c5dbe65607129e1f7..5a360f6b60f61099d59147827debf803cac7499d 100644
--- a/src/js/bundle/clipboard.js
+++ b/src/js/bundle/clipboard.js
@@ -1,7 +1,6 @@
 import ClipboardJS from "clipboard/dist/clipboard";
 
-ready(function () {
-    // Clipboard
+document.addEventListener("DOMContentLoaded", function(event) {
     var clipboard = new ClipboardJS('.copy');
     clipboard.on('success', function (e) {
         setTimeout(function () {
diff --git a/src/js/bundle/expander.js b/src/js/bundle/expander.js
index 42bb2e57d75a053e0e7a685756c0a47de89b49b2..2aadb247107c0ee0a65a5dd4f1203800ada9ccec 100644
--- a/src/js/bundle/expander.js
+++ b/src/js/bundle/expander.js
@@ -1,14 +1,9 @@
-ready(function () {
-    // Expander boxes
+document.addEventListener("DOMContentLoaded", function(event) {
     var expandable = document.querySelectorAll('.expandable > .expander');
     for (var i = 0; i < expandable.length; i++) {
         expandable[i].currentValue.onclick = function (e) {
             var parent = e.currentTarget.parentNode;
-            if (parent.className.match(/(?:^|\s)expanded(?!\S)/)) {
-                parent.className = parent.className.replace(/(?:^|\s)expanded(?!\S)/g , '');
-            } else {
-                parent.className += " expanded";
-            }
+            parent.classList.toggle('expanded');
             e.currentTarget.blur();
         };
     }
diff --git a/src/js/bundle/highlight.js b/src/js/bundle/highlight.js
index ce7b0728a9c8d10d893282ef17ef21987a87b98f..f1974a3373ae63e68397f9b79ed2586c722bff96 100644
--- a/src/js/bundle/highlight.js
+++ b/src/js/bundle/highlight.js
@@ -3,8 +3,7 @@ import xml from "highlight.js/lib/languages/xml";
 import php from "highlight.js/lib/languages/php";
 import json from "highlight.js/lib/languages/json";
 
-ready(function () {
-    // Syntax highlight
+document.addEventListener("DOMContentLoaded", function(event) {
     hljs.registerLanguage('xml', xml);
     hljs.registerLanguage('php', php);
     hljs.registerLanguage('json', json);
diff --git a/src/js/bundle/language.js b/src/js/bundle/language.js
index 5734632b4127a9318ad8d19aab5c536767be102d..72a6a72d4d64ed9155ab4561540f7b69e017955f 100644
--- a/src/js/bundle/language.js
+++ b/src/js/bundle/language.js
@@ -1,4 +1,4 @@
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     // Language selector
     var languageSelector = document.getElementById("language-selector");
     languageSelector.onchange = function() {
@@ -14,23 +14,11 @@ ready(function () {
         e.preventDefault();
 
         var layout = document.getElementById("layout");
-        if (layout.className.match(/(?:^|\s)active(?!\S)/)) {
-            layout.className = layout.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            layout.className += " active";
-        }
+        layout.classList.toggle('active');
 
         var foot = document.getElementById("foot");
-        if (foot.className.match(/(?:^|\s)active(?!\S)/)) {
-            foot.className = foot.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            foot.className += " active";
-        }
+        foot.classList.toggle('active');
 
-        if (menuLink.className.match(/(?:^|\s)active(?!\S)/)) {
-            menuLink.className = menuLink.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            menuLink.className += " active";
-        }
+        menuLink.classList.toggle('active');
     };
 });
diff --git a/src/js/bundle/main.js b/src/js/bundle/main.js
index dba68635934e40d8972a94801226b4a3b8fa0f49..066b0da96403c02cda5abd77127e1edfb7b983b8 100644
--- a/src/js/bundle/main.js
+++ b/src/js/bundle/main.js
@@ -2,7 +2,6 @@
 
 import "es5-shim";
 import "es6-shim";
-import * as ready from './ready';
 import * as language from './language';
 import * as expander from './expander';
 import * as clipboard from './clipboard';
diff --git a/src/js/bundle/ready.js b/src/js/bundle/ready.js
deleted file mode 100644
index 8e6c27a0972b743588bef8dc705dcc284251aed0..0000000000000000000000000000000000000000
--- a/src/js/bundle/ready.js
+++ /dev/null
@@ -1,15 +0,0 @@
-window.readyHandlers = [];
-window.ready = function ready(handler) {
-    window.readyHandlers.push(handler);
-    handleState();
-};
-
-window.handleState = function handleState () {
-    if (document.readyState === 'interactive' || document.readyState === "complete") {
-        while(window.readyHandlers.length > 0) {
-            (window.readyHandlers.shift())();
-        }
-    }
-};
-
-document.onreadystatechange = window.handleState;
diff --git a/src/js/logout/main.js b/src/js/logout/main.js
index f0f759031635922d2f2c456073f595b7a4ecfceb..5d859d2e853c1f0ea11e37ee068d11be57b579dd 100644
--- a/src/js/logout/main.js
+++ b/src/js/logout/main.js
@@ -2,6 +2,6 @@
 
 import SimpleSAMLLogout from './logout.js';
 
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     new SimpleSAMLLogout(document.body.id);
 });