const cookie_control_banner = function(url, callback){ var banner = document.querySelector('.cookie-control_banner'); if (!banner) { finish('no banner'); return; } var saveButton = banner.querySelector('.cookie-control_banner_accept'); if (!saveButton) { finish('no save button'); return; } saveButton.addEventListener('click', function(evt) { return acceptCookies(evt, 'all'); }); var requiredButton = banner.querySelector('.cookie-control_banner_required'); if (requiredButton) { requiredButton.addEventListener('click', function(evt) { return acceptCookies(evt, 'required');}); } var submit_url = url ? url : '/slade/about/cookies/'; function acceptCookies(evt, which) { evt.currentTarget.classList.add('cookie-control_banner_button-processing') var r = new XMLHttpRequest(); r.open("POST", submit_url, true); r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); r.onreadystatechange = statechange; r.setRequestHeader('Accept', 'application/json'); r.send('allow=' + which); evt.preventDefault(); return false; } function statechange(evt) { if (evt.target.status == 200) { success(evt.target.responseText); } else if (evt.target.status == 404 || evt.target.status == 500) { fail(); } } function success(message) { banner.classList.add('cookie-control_banner-hidden'); finish('success'); } function fail() { saveButton.classList.remove('cookie-control_banner_button-processing'); finish('fail'); } function finish(message) { if (typeof callback === 'function') { callback({message: message}); } } };