'use strict'; // utils for cookie-law plugin window['cookieconsent_example_util'] = { // Fill a select element with options (html can be configured using `cb`) fillSelect: function(select, options, selected, cb) { if (!select) return; var html = ''; if (typeof cb !== 'function') { cb = this.getSimpleOption; } for (var prop in options) { html += cb(options[prop], prop, prop == selected); } select.innerHTML = html; }, getSimpleOption: function(label, value, selected) { return ( '' ); }, tabularObject: function(obj, formatVal, formatKey) { var html = ''; }, initialisePopupSelector: function(options) { if (!options.selector) return; var examples = Object.keys(options.popups); var itemOpen = '
  • '; var itemClose = '
  • '; var instances = []; options.selector.innerHTML = itemOpen + Object.keys(options.popups).join(itemClose + itemOpen) + itemClose; options.selector.onclick = function(e) { var targ = e.target, item; // if the target is the container, exit if (targ.isEqualNode(options.selector)) return; // from this point, only the child elements of opts.selector will get through. // out of these child elements, we want to find the closest direct decendant
  • while (targ.tagName !== 'LI' && targ.parentNode) { targ = targ.parentNode; } if (!targ.parentNode.isEqualNode(options.selector)) return; // from this point, 'targ' will be a direct decendant of opts.selector var idx = Array.prototype.indexOf.call(options.selector.children, targ); if (idx >= 0 && instances[idx]) { instances[idx].clearStatus(); // We could remember the popup that's currently open, but it gets complicated when we consider // the revoke button. Therefore, simply close them all regardless instances.forEach(function(popup) { if (popup.isOpen()) { popup.close(); } popup.toggleRevokeButton(false); }); instances[idx].open(); } }; for (var i = 0, l = examples.length; i < l; ++i) { options.popups[examples[i]].onPopupOpen = (function(options) { return function() { var codediv = document.getElementById('options'); if (codediv) { codediv.innerHTML = JSON.stringify(options, null, 2); } }; })(options.popups[examples[i]]); var myOpts = options.popups[examples[i]]; myOpts.autoOpen = false; options.cookieconsent.initialise( myOpts, function(idx, popup) { instances[idx] = popup; }.bind(null, i), function(idx, err, popup) { instances[idx] = popup; console.error(err); }.bind(null, i) ); } return instances; } };