PageSourceSearch

https://www.landmarkoutreach.org/wp-content/themes/jrd-landmark-v3/ui/js/jquery.init.js?ver=1788415795

js landmarkoutreach.org collected 2026-10-02 11:06:10 UTC 12,948 bytes, 389 lines download raw bytes

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] += "&nbsp;" + 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.