1const cookieSet = idsk_cookie_data.cookieSet; 2const cookieExpire = idsk_cookie_data.cookieExpire; 3const cookie_banners = Array.from(document.getElementsByClassName( 'idsk-cookie-banner' )); 4const cookie_message = Array.from(document.getElementsByClassName( 'idsk-cookies-message' )); 5const cookies_accept_btn = Array.from(document.getElementsByClassName( 'idsk-cookies-accept' )); 6const cookies_reject_btn = Array.from(document.getElementsByClassName( 'idsk-cookies-reject' )); 7const cookies_close_btn = Array.from(document.getElementsByClassName( 'idsk-cookies-hide' )); 8 9/** 10 * Hide banner if cookie is set 11 */ 12if ( getCookie('idskCookies') || cookieSet == 1 ) { 13 cookie_banners.forEach( function(e) { toogleHidden(e) } ); 14} 15 16/** 17 * Accept button 18 */ 19cookies_accept_btn.forEach( function(e) { 20 const cookies_allowed = Array.from(document.getElementsByClassName( 'idsk-cookies-allow' )); 21 let cookies_ids = []; 22 23 e.addEventListener('click', function() { 24 cookies_allowed.forEach(function(cookie) { 25 if (cookie.checked == true && cookie.getAttribute('id') != 'idskCookies') { 26 cookies_ids.push(cookie.getAttribute('id')); 27 } 28 }); 29 30 idskCookieConsent(cookies_ids); 31 32 if (e.classList.contains('idsk-cookies-accept-form')) { 33 location.reload(); 34 } 35 }); 36}); 37 38/** 39 * Reject button 40 */ 41cookies_reject_btn.forEach( function(e) { 42 e.addEventListener('click', function() { 43 idskCookieDissent(); 44 }); 45}); 46 47/** 48 * Close button 49 */ 50cookies_close_btn.forEach( function(e) { 51 e.addEventListener('click', function() { 52 location.reload(); 53 }); 54}); 55 56/** 57 * Toogle attribute hidden 58 * @param {object} el 59 */ 60function toogleHidden(el) { 61 if (!el.hasAttribute('hidden') || el.getAttribute('hidden') === 'false') { 62 el.setAttribute('hidden', 'true'); 63 } else { 64 el.removeAttribute('hidden'); 65 } 66} 67 68/** 69 * Cookie consent 70 * @param {array} cids Cookies IDs 71 */ 72function idskCookieConsent(cids = []) { 73 const cookies_accepted = Array.from(document.getElementsByClassName( 'idsk-cookies-accepted' )); 74 75 deleteCookies(); 76 createCookie('accepted'); 77 78 cids.forEach(function(id) { 79 createCookie('accepted', id); 80 }); 81 82 cookie_message.forEach( function(e) { toogleHidden(e) } ); 83 cookies_accepted.forEach( function(e) { toogleHidden(e) } ); 84} 85 86/** 87 * Cookie dissent 88 */ 89function idskCookieDissent() { 90 const cookies_rejected = Array.from(document.getElementsByClassName( 'idsk-cookies-rejected' )); 91 92 deleteCookies(); 93 createCookie('rejected'); 94 95 cookie_message.forEach( function(e) { toogleHidden(e) } ); 96 cookies_rejected.forEach( function(e) { toogleHidden(e) } ); 97} 98 99/** 100 * Create cookie 101 * @param {string} value 102 * @param {string} cname Cookie name 103 */ 104function createCookie(value, cname = '') { 105 const today = new Date(); 106 const expire = new Date(); 107 const name = 'idskCookies' + ( cname != '' ? '_' + cname : '' ); 108 109 if (cookieExpire > 0) { 110 expire.setTime(today.getTime() + (cookieExpire * 24 * 60 * 60 * 1000) ); 111 cookieParams = name + "=" + value + "; expires=" + expire.toUTCString() + "; path=/"; 112 } else { 113 cookieParams = name + "=" + value + "; path=/"; 114 } 115 document.cookie = cookieParams; 116} 117 118/** 119 * Get cookie 120 * @param {string} cname Cookie name 121 * @returns {string} 122 */ 123function getCookie(cname) { 124 const name = cname + "="; 125 const decodedCookie = decodeURIComponent(document.cookie); 126 const cookies = decodedCookie.split(';'); 127 128 for (var i = 0; i < cookies.length; i++) { 129 var cookie = cookies[i]; 130 131 while (cookie.charAt(0) == ' ') { 132 cookie = cookie.substring(1); 133 } 134 135 if (cookie.indexOf(name) == 0) { 136 return cookie.substring(name.length, cookie.length); 137 } 138 } 139 140 return ""; 141} 142 143/** 144 * Delete cookies 145 */ 146function deleteCookies() { 147 document.cookie.split(";").forEach(function(cookie) { 148 document.cookie = cookie.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); 149 }); 150}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.