1// jshint esversion: 6 2/* ========================================================================= */ 3/* BE SURE TO COMMENT CODE/IDENTIFY PER PLUGIN CALL */ 4/* ========================================================================= */ 5 6jQuery(function($){ 7 8 // ALERT 9 if(Cookies.get('alert_cookie') != 'hide'){ 10 $('#alert').css('display','block'); 11 } 12 $('#alert .close').on('click',function(){ 13 $('#alert').slideUp(100); 14 Cookies.set('alert_cookie', 'hide', { expires: 1, path: '/' }); 15 }); 16 17 $('[data-anchor]').on('click', function(e){ 18 e.preventDefault(); 19 var anchor = $(this).data('anchor'); 20 var href = $(this).attr('href'); 21 Cookies.set('redirect_anchor', anchor, { path: '/', expires: 1 }); 22 window.location.href = href; 23 }) 24 25 // TOGGLE MENU 26 $("#menu-toggle").on('click', function () { 27 $("#header").toggleClass("active"); 28 $(this).toggleClass("active"); 29 $('#main-nav').focus(); 30 }); 31 32 $('.orphan').unrunt(); 33 34 $(window).on('load resize', function(){ 35 $('.product-item p').shave(113); 36 $('.team-buckets--bucket p').shave(161, { classname: 'shaved'}); 37 }); 38 39 $('.unshave').on('click', function(){ 40 var $to_unshave = $(this).prev('.shaveme').children('p'); 41 if ( $(this).data('x') == 0 ) { 42 $('.js-shave-char', $to_unshave).remove(); 43 $($to_unshave).html($($to_unshave).text()) 44 $(this).text('Read Less').data('x', 1); 45 } else { 46 $($to_unshave).shave(161, { classname: 'shaved'}); 47 $(this).text('Read More').data('x', 0); 48 } 49 }); 50 51 // PARALLAX 52 $.fn.plax = function(x, y){ 53 this.css({ 54 'webkitTransform' : 'translate3d('+x+'px, '+y+'px, 0)', 55 'MozTransform' : 'translate3d('+x+'px, '+y+'px, 0)', 56 'msTransform' : 'translateX('+x+'px) translateY('+y+'px)', 57 'OTransform' : 'translate3d('+x+'px, '+y+'px, 0)', 58 'transform' : 'translate3d('+x+'px, '+y+'px, 0)' 59 }); 60 }; 61 62 /* 63 $(document).scroll(function(){ 64 var nm = $("html").scrollTop(); 65 var nw = $("body").scrollTop(); 66 var n = (nm > nw ? nm : nw); 67 68 $('#element').plax(0,n); 69 70 // if transform3d isn't available, use top over background-position 71 //$('#element').css('top', Math.ceil(n/2) + 'px'); 72 73 }); 74 */ 75 76 var catalogTable = new DataTable( '#course-catalog', { 77 fixedHeader: true, 78 autoWidth: false, 79 responsive: { 80 details: { 81 display: DataTable.Responsive.display.childRowImmediate, 82 target: '', 83 type: 'none', 84 renderer: function (api, rowIdx, columns) { 85 let data = columns 86 .map((col, i) => { 87 return col.hidden 88 ? '<tr data-dt-row="' + 89 col.rowIndex + 90 '" data-dt-column="' + 91 col.columnIndex + 92 '">' + 93 '<td>' + 94 col.title + 95 '</td> ' + 96 '<td>' + 97 col.data + 98 '</td>' + 99 '</tr>' 100 : ''; 101 }) 102 .join(''); 103 104 let table = document.createElement('table'); 105 table.innerHTML = data; 106 107 return data ? table : false; 108 } 109 } 110 }, 111 columns: [ 112 { responsivePriority: 1, width: 'min(100%, 340px)' }, 113 { orderable: false }, 114 null, 115 null, 116 { orderable: false }, 117 { orderable: false, width: '125px', responsivePriority: 2 }, 118 { visible: false }, 119 { visible: false }, 120 ], 121 paging: false, 122 initComplete: function(){ 123 this.api().columns().every(function(){ 124 let column = this, 125 header = this.header().innerHTML; 126 $(`.course-filters .filter select[data-header="${header}"]`).on('change', function(){ 127 var val = DataTable.util.escapeRegex( $(this).val() ); 128 column 129 .search(val ? `.*${val}.*` : '', true, false) 130 .draw(); 131 }); 132 }); 133 this.api().column(6).visible(false); 134 $(`.course-filters .filter select`).trigger('change'); 135 }, 136 order: [[2, 'asc']] 137 }); 138 139 $(document).ready(function(){
140 var urlParams = new URLSearchParams(window.location.search); 141 var filters = Object.fromEntries(urlParams.entries()); 142 var event = filters['event-type']; 143 var subject = filters['subject']; 144 var grade = filters['grade']; 145 if ( event || subject || grade ) { 146 if ( event ) { 147 $('select[name="event-type"]').val(event); 148 } 149 if ( subject ) { 150 $('select[name="event-type"]').val(subject); 151 } 152 if ( grade ) { 153 $('select[name="event-type"]').val(grade); 154 } 155 $(`.course-filters .filter select`).trigger('change'); 156 } 157 }); 158 159 new Swiper('.testimonials--swiper', { 160 pagination: { 161 el: '.testimonials--dots', 162 clickable: true, 163 }, 164 effect: 'fade', 165 loop: true, 166 } ); 167 168 new Swiper('.mod-related-blogs .swiper', { 169 loop: true, 170 spaceBetween: 30, 171 autoHeight: true, 172 pagination: { 173 el: '.blog--dots', 174 clickable: true, 175 }, 176 breakpoints: { 177 540: { 178 slidesPerView: 1, 179 }, 180 600: { 181 slidesPerView: 2 182 }, 183 800: { 184 slidesPerView: 3 185 } 186 } 187 }); 188 189 $('.accordions dt button').on('click tap',function(e){ 190 if($(this).attr('aria-expanded') === 'true') { 191 /* Do Nothing */ 192 } else { 193 $('.accordions dt button').attr('aria-expanded','false'); 194 $('.accordions dd').attr('aria-hidden','true').slideUp(200); 195 $(this).attr('aria-expanded','true'); 196 $(this).parent().next().attr('aria-hidden','false').slideDown(200); 197 } 198 }); 199 200 $('.util-search').on('click', function(){ 201 $(this).siblings('form').find('input').focus(); 202 }); 203 204 $('.calendar-item--inner').each(function(){ 205 let $el = $(this), 206 c = $el.css('--bgcolor'), 207 b = tinycolor(c).getBrightness(); 208 let newColor = "#fff"; 209 if(b >= 127.5){ 210 newColor = '#002050'; 211 } 212 $el.css('color', newColor); 213 }); 214 215 $('.tooltip-icon').each(function(){ 216 $(this).tooltip({ 217 content: function () { 218 return $(this).next('.tooltip-text').html(); 219 }, 220 position: { 221 my: 'left+10 top+2', 222 at: 'right top' 223 } 224 }); 225 }); 226 227 228 $(document).on('click', 'a', function(){ 229 var href = $(this).attr('href'); 230 if ( 231 href.indexOf( 'youtube.com/watch' ) > 0 232 || href.indexOf( 'youtu.be/' ) > 0 233 || href.indexOf( 'vimeo.com/' ) > 0 234 ) { 235 $.magnificPopup.open({ 236 items: [ 237 { 238 src: href, 239 type: 'iframe' 240 } 241 ] 242 }); 243 return false; 244 } 245 }) 246 247 function activAjax(){ 248 var $filters = $('.filters'); 249 var serial = $filters.serialize().replace(/[\w\d-]+=&/g, ''); 250 serial = '?' + serial; 251 serial = serial.replace(/[?&][\w\d-]+=$/g, ''); 252 var url = $filters.data('url') + serial; 253 history.pushState('', $(document).find("title").text(), url); 254 $('.ajax-container').animate({'opacity':0.2},400); 255 $.post(url,function(data){ 256 var $elements = $('<div>').append(data); 257 var $new_content = $elements.find('.ajax-container').wrapInner('').html(); 258 $('.ajax-container').html($new_content); 259 if ( $elements.find('.featured-pub').length ) { 260 $('.featured-pub').slideDown(150); 261 } else { 262 $('.featured-pub').slideUp(150); 263 } 264 }).done(function(data){ 265 $('.ajax-container').animate({'opacity':1},150); 266 if ( $(document).find('.ajax-no-results').length ) { 267 $('.load-more').hide(); 268 } else { 269 $('.load-more').show(); 270 } 271 }); 272 } 273 274 $('.filters select').on('change',function(){ 275 activAjax(); 276 }); 277 278 $('.load-more a').on('click', function(){ 279 var url = $(this).attr('href'); 280 $.post(url,function(data){ 281 $('.alert-msg').remove(); 282 var $elements = $('<div>').append(data); 283 $('.ajax-container .ajax-item:last-child').after('<div tabindex="-1" class="alert-msg">New results have been loaded below.</div>'); 284 var $new_content = $elements.find('.ajax-container').wrapInner('').html(); 285 $('.ajax-container').append($new_content); 286 var newurl = $elements.find('.load-more a').attr('href'); 287 if ( newurl !== url && newurl !== undefined ) { 288 $('.load-more a').attr('href',newurl); 289 } 290 }).done(function(data){ //alert('done'); 291 $('.alert-msg').focus(); 292 }); 293 return false;
294 }); 295 296 $(document).on('click', 'a.gated-lightbox', function(){ 297 $a = $(this); 298 $.magnificPopup.open({ 299 items: [ 300 { 301 src: '.ajax-login-lb', 302 type: 'inline' 303 } 304 ], 305 callbacks: { 306 open: function(){ 307 console.log($a.attr('href')); 308 $('.mfp-content .resource-ajax-login').attr('data-redirect', $a.attr('href') ); 309 } 310 } 311 }); 312 return false; 313 }) 314 315 316 $(document).on('submit', 'form.resource-ajax-login', function(){ 317 var $form = $(this); 318 $form.find('.validation-container').html(''); 319 var user = $form.find('input[name="username"]').val(); 320 var pass = $form.find('input[name="password"]').val(); 321 var remember = $form.find('input[name="rememberme"]').val(); 322 var redirect = $form.attr('data-redirect'); 323 $.ajax({ 324 type: "POST", 325 url: lmo.ajax_url, 326 data: { 327 action : 'lmo_signon', 328 username: user, 329 password: pass, 330 rememberme: remember 331 }, 332 success:function(data) { 333 data = JSON.parse(data); 334 console.log(data); 335 if ( data.type === 'error' ) { 336 $form.find('.validation-container').append('<div class="validation_error">'+data.msg+'</div>'); 337 } else if ( data.type === 'success' ) { 338 $form.find('.validation-container').append('<div class="validation_success">'+data.msg+'</div>'); 339 setTimeout(function(){ 340 window.location.href = redirect; 341 }, 1000); 342 } 343 }, 344 error: function(errorThrown){ 345 console.log("ERROR"); 346 console.log(errorThrown); // error 347 } 348 }); 349 return false; 350 }) 351 352}); 353 354// UNRUNT 355jQuery.fn.unrunt = function(){ 356 jQuery(this).each(function(){ 357 var u = unruntify( jQuery(this).html() ); 358 jQuery(this).html( u ); 359 }); 360}; 361 362function unruntify( str ){ 363 var pieces = str.trim().split(' '); 364 var new_pieces = []; 365 pieces.forEach(function(x,i){ 366 if ( x.indexOf('<') == 0 && x.indexOf('>') == -1 ) { 367 var element = x; 368 var remove_items = []; 369 for( ++i; i < pieces.length; i++ ) { 370 element += ' ' + pieces[i]; 371 remove_items.push(i-1); 372 if ( pieces[i].indexOf('>') != -1 ) { 373 remove_items.forEach(function(x){ // jshint ignore:line 374 pieces.splice(x, 1); 375 }); 376 break; 377 } 378 } 379 new_pieces.push(element); 380 } else { 381 new_pieces.push(x); 382 } 383 }); 384 if (new_pieces.length > 1) { 385 new_pieces[new_pieces.length-2] += " " + new_pieces[new_pieces.length-1]; 386 new_pieces.pop(); 387 } 388 return new_pieces.join(' '); 389}
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.