if (!window.bt) window.bt = {}; window.bt.tool = "events"; window.bt.render = function(postrender,data,id=''){ id = (id=='')?'btContainer':id; document.getElementById(id).innerHTML = data.html; if (postrender) postrender(); }; window.bt.load = function(args={}){ var url = window.location.href; if (url.indexOf('?') > -1) url = url.substr(0,url.indexOf('?')); if (!args) args = {}; const urlParams = new URLSearchParams(window.location.search); if (urlParams.get('t') && !args.hasOwnProperty('t')) args.t = urlParams.get('t'); if (urlParams.get('s') && !args.hasOwnProperty('s')) args.s = urlParams.get('s'); var query = Object.keys(args) .map(function(k) {return encodeURIComponent(k) + '=' + encodeURIComponent(args[k]);}) .join('&'); window.location.href = url+'?'+query; }; window.bt.action = function(e,action,args){ if (e) e.preventDefault(); if (!args) args = {}; args.a = action; const urlParams = new URLSearchParams(window.location.search); if (urlParams.get('t') && !args.hasOwnProperty('t')) args.t = urlParams.get('t'); if (urlParams.get('s') && !args.hasOwnProperty('s')) args.s = urlParams.get('s'); window.bt.lastAction = action; window.bt.load(args); return false; }; window.bt.actionOnElem = function(e,action,elem,args){ if (e) e.preventDefault(); if (!args) args = {}; args.a = action; args.el = elem; window.bt.lastAction = action; var query = Object.keys(args) .map(function(k) {return encodeURIComponent(k) + '=' + encodeURIComponent(args[k]);}) .join('&'); var s = document.createElement("script"); s.type = "text/javascript"; s.src = "https://boom-production.azurewebsites.net/tools/"+window.bt.tool+"/?"+query; document.head.appendChild(s); return false; } window.bt.initNavigation = function(){ window.bt.prevHash = window.location.hash; if ('onhashchange' in window) { window.onhashchange = function () { if (window.bt.onNavigate) window.bt.onNavigate( window.bt.prevHash ); window.bt.prevHash = window.location.hash; } } else { window.setInterval(function () { if (window.location.hash != window.bt.prevHash) { if (window.bt.onNavigate) window.bt.onNavigate( window.bt.prevHash ); window.bt.prevHash = window.location.hash; } }, 100); } }; window.bt.navigate = function( hash ){ if(history.pushState) { history.pushState(null, null, '#'+hash); } else { location.hash = '#'+hash; } }; window.bt.setCookie = function( name, jsonData, exp=60 ) { var d = new Date(); d.setTime(d.getTime() + (exp*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); if (jsonData!='') jsonData = JSON.stringify(jsonData); document.cookie = name + "=" + jsonData + ";" + expires + ";path=/"; }; window.bt.getCookie = function(name, defaultCookie={}) { name = name + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i =0) filterCats.splice(filterCats.indexOf(id),1); } data.filterCats = filterCats; window.bt.setCookie(window.bt.dataCookieName,data); }; window.bt.checkPresetFilters = function(){ // Get set filters var filters = []; var cbs = document.getElementsByClassName('bt-filter-checkbox'); for (var i=0; i 0) { var data = window.bt.getCookie(window.bt.dataCookieName); data.filters = filters; window.bt.setCookie(window.bt.dataCookieName,data); } }; window.bt.changeFilter = function( e ){ var target = (e.currentTarget)?e.currentTarget:e.srcElement; var id = target.id; if (id){ var data = window.bt.getCookie(window.bt.dataCookieName); filters = data.filters?data.filters:[]; if (target.checked){ if (filters.indexOf(id)<0) filters.push(id); } else{ if (filters.indexOf(id)>=0) filters.splice(filters.indexOf(id),1); } data.filters = filters; window.bt.setCookie(window.bt.dataCookieName,data); window.bt.applyFilters(); } }; window.bt.applyFilters = function(){ // Get results var results = document.getElementsByClassName('bt-result'); if (results.length==0) return; // Get filters var data = window.bt.getCookie(window.bt.dataCookieName); var filtersAll = data.filters?data.filters:['btActive']; // Filter map // OR within group, AND between groups var filterMap = [ { btAuckland: 'campus-auckland', btManawatu: 'campus-manawatu', btWellington: 'campus-wellington', btNonCampus: 'campus-none' }, { btAudienceFutureStudents: 'audience-future-student', btAudienceStudent: 'audience-student', btAudienceStaff: 'audience-staff', btAudiencePublic: 'audience-public' }, { btStatusPublished: 'published', btStatusReview: 'review', btStatusDraft: 'draft' }, { btActive: 'active', btExpired: 'expired' } ]; // Step each result var resultCount = results.length; var visibleCount = resultCount; for (var i=0; i=0) anyGroupFilterSet = true; } } if (affectedByFilters && !anyGroupFilterSet) showResult = false; } if (!showResult){ results[i].style.display = 'none'; visibleCount--; } } // Show or hide 'no results' document.getElementById('btResult-none').style.display = (visibleCount>0)?'none':'block'; } window.bt.changeOrder = function( e ){ // Determine selected order var target = (e.currentTarget)?e.currentTarget:e.srcElement; s = target.value; // Save cookie value var data = window.bt.getCookie(window.bt.dataCookieName); if (data.order!=s){ data.order = s; window.bt.setCookie(window.bt.dataCookieName,data); } window.bt.applyOrder(); } window.bt.applyOrder = function(){ // Determine selected order var data = window.bt.getCookie(window.bt.dataCookieName); var s = data.order?data.order:'date-'; // Change the select box document.getElementById('btOrder').value=s; // Grab results var p = document.getElementById('btResults'); var r = p.childNodes; var ra = []; for (var i in r) if (r[i].nodeType == 1) ra.push(r[i]); // Ignore text nodes // Order results if (s=='date'){ ra.sort(function(a,b){ var av = parseInt(a.getAttribute('data-date')); var bv = parseInt(b.getAttribute('data-date')); if (av == bv) return 0; return (av < bv)?-1:1; // Reverse }); } else if (s=='date-'){ ra.sort(function(a,b){ var av = parseInt(a.getAttribute('data-date')); var bv = parseInt(b.getAttribute('data-date')); if (av == bv) return 0; return (av > bv)?-1:1; }); } else if (s=='name'){ ra.sort(function(a,b){ var av = a.getAttribute('data-name'); var bv = b.getAttribute('data-name'); return av.localeCompare(bv); }); } else if (s=='name-'){ ra.sort(function(a,b){ var av = a.getAttribute('data-name'); var bv = b.getAttribute('data-name'); return -av.localeCompare(bv); }); } else if (s=='status'){ ra.sort(function(a,b){ var av = a.getAttribute('data-status'); var bv = b.getAttribute('data-status'); return -av.localeCompare(bv); }); } // Order DOM for (i = 0; i < ra.length; ++i) p.appendChild(ra[i]); }; window.bt.view = function (e,id){ window.bt.action(event,'view',{id:id}); } window.bt.hasClass = function( elem, name ){ var arr = elem.className.split(' '); if (arr.indexOf(name) > -1) return true; return false; }; window.bt.addClass = function( elem, name ){ var arr = elem.className.split(' '); if (arr.indexOf(name) == -1) elem.className += ' '+name; }; window.bt.removeClass = function( elem, name ){ var arr = elem.className.split(' '); if (arr.indexOf(name) > -1){ arr.splice( arr.indexOf(name), 1 ); elem.className = arr.join(' '); } }; window.bt.shortlist = function(e,id){ var target = (e.currentTarget)?e.currentTarget:e.srcElement; var data = window.bt.getCookie(window.bt.dataCookieName); var sl = data.saved?data.saved:[]; if (window.bt.hasClass(target, 'bt-saved')){ window.bt.removeClass( target, 'bt-saved' ); if (sl.indexOf(id)>=0) sl.splice(sl.indexOf(id),1); } else{ window.bt.addClass( target, 'bt-saved' ); if (sl.indexOf(id)<0) sl.push(id); } data.saved = sl; window.bt.setCookie(window.bt.dataCookieName,data); window.bt.applyShortlist(); }; window.bt.shortlistRemove = function(e,id){ if (e) e.preventDefault(); var elem = document.getElementById('btSave-'+id); if (elem) window.bt.removeClass( elem, 'bt-saved' ); var data = window.bt.getCookie(window.bt.dataCookieName); var sl = data.saved?data.saved:[]; if (sl.indexOf(id)>=0) sl.splice(sl.indexOf(id),1); data.saved = sl; window.bt.setCookie(window.bt.dataCookieName,data); window.bt.applyShortlist(); }; window.bt.applyShortlist = function(){ var data = window.bt.getCookie(window.bt.dataCookieName); var saved = data.saved?data.saved:[]; // Color shortlist buttons for (var i=0; i