PageSourceSearch

https://trainfo.ca/wp-content/themes/trainfo-splash/js/theme.js?ver=20150524

js trainfo.ca collected 2026-10-03 21:02:13 UTC 7,415 bytes, 340 lines download raw bytes

1jQuery(document).ready(function(){
2
3	// Define Elements
4	
5	//REL.E.elementname = jQuery('#elementname');
6	
7	
8	// trigger scroll reveal
9	window.sr = ScrollReveal();
10	sr.reveal('.reveal');
11	
12	
13	
14	jQuery(window).scroll(function(){
15		
16		if(jQuery(document).scrollTop()> jQuery('#primary').offset().top)
17		{
18			jQuery('.fixed-report-gen').addClass('fixed-section');
19
20			
21		}else {
22			jQuery('.fixed-report-gen').removeClass('fixed-section');
23
24		}
25	});
26	
27	
28	jQuery('.menu-menu-1-container li a').on('click',function(){
29		var el = jQuery(this);
30		el.closest('li').find('.sub-menu').toggleClass('sub-active');
31	});
32	
33	
34	
35if(jQuery('.slider_bg_img').length>0) {
36	jQuery(window).scroll(function(e){
37		
38	  var windowScrollPos = jQuery(this).scrollTop();
39	  jQuery('.slider_bg_img').each(function(){
40	    var el = jQuery(this);
41	    var relativeY = windowScrollPos;
42	    if(relativeY<0) relativeY *=-1;
43	    relativeY = relativeY*0.05;
44	    el.css('background-position','0% '+relativeY+'%')
45	    
46	  });
47	});
48	jQuery(window).trigger('scroll');
49}	
50	
51	jQuery('#home_filter').click(function(){
52        jQuery(this).toggleClass("active");
53        jQuery(".category_filter").toggleClass("active");
54    });
55	
56	
57	jQuery('.home_slider').slick({
58  		dots: true,
59  		infinite: true,
60  		slidesToShow: 1,
61  		arrows: false,
62	});
63	
64	
65	jQuery('.close').click(function(){
66        jQuery('.register_toggle').remove();
67    });
68    
69    
70    jQuery('#testimonials').slick({
71  		dots: true,
72  		infinite: true,
73  		slidesToShow: 1,
74  		arrows: false,
75	});
76	
77	
78	jQuery('#sponsors').slick({
79  		dots: false,
80  		infinite: true,
81  		slidesToShow: 4,
82  		arrows: true,
83  		autoplay: true,
84  		slidesToScroll: 1,
85  		autoplaySpeed: 2000,
86  		responsive: [
87    	{
88     		breakpoint: 1024,
89      		settings: {
90        		slidesToShow: 3,
91        		slidesToScroll: 3,
92        		infinite: true,
93      		}
94    	},
95    	{
96      		breakpoint: 600,
97      		settings: {
98        		slidesToShow: 2,
99        		slidesToScroll: 2
100     		}
101    	},
102    	{
103      		breakpoint: 580,
104      		settings: {
105        		slidesToShow: 1,
106        		slidesToScroll: 1
107      		}
108    	}
109  		]
110	});
111	
112	
113	
114    jQuery('#technologies').slick({
115  		dots: true,
116  		infinite: true,
117  		slidesToShow: 1,
118  		arrows: true,
119  		prevArrow: jQuery('.prev'),
120    	nextArrow: jQuery('.next'),
121	});
122	
123	
124	 jQuery('#video-carousal').slick({
125	 	slidesPerRow: 3,
126    	rows: 2,
127  		dots: false,
128  		infinite: true,
129  		arrows: true,
130  		responsive: [
131    	{
132     		breakpoint: 1024,
133      		settings: {
134        		slidesPerRow: 2,
135      		}
136    	},
137    	
138  		]
139	});
140	
141	
142	var acc = document.getElementsByClassName("accordion");
143	var i;
144
145	for (i = 0; i < acc.length; i++) {
146  		acc[i].addEventListener("click", function() {
147    		this.classList.toggle("active");
148    		var panel = this.nextElementSibling;
149    		if (panel.style.display === "block") {
150      			panel.style.display = "none";
151    		} else {
152     	 		panel.style.display = "block";
153    		}
154  		});
155	}
156	
157	REL.init();
158});
159
160
161var REL = {};
162REL.E = {};
163
164
165REL.init = function()
166{
167	REL.isotopeHomeModels();
168	REL.initScrollMagic();
169}
170
171REL.initScrollMagic = function() {
172	
173	
174	var controller = new ScrollMagic.Controller();
175	
176	jQuery('#how-it-works-block .row').each(function() {
177		var row = this;
178		new ScrollMagic.Scene({
179			triggerElement: this,
180			triggerHook: 'onLeave',
181			duration: "200%",
182		})
183		.setPin(this, {pushFollowers: false})
184		.addTo(controller);
185		
186		new ScrollMagic.Scene({
187			triggerElement: this,
188			triggerHook: 'onLeave',
189			duration: 0,
190		})
191		.on("end", function (e) {
192	        TweenMax.to(jQuery(row).prev().find('.arrow-cloud'), 0.2, {opacity: e.scrollDirection === "REVERSE" ? 1 : 0});
193	    })
194		.addTo(controller);
195	})
196	
197	
198}
199
200
201REL.isotopeHomeModels = function() {
202
203	var qsRegex;
204	
205	if(jQuery('.cases_filter').length>0) {
206	
207		var jQuerycontainer = jQuery('#filter_list'),
208			jQuerycheckboxes = jQuery('.category_filter .btn input');
209			
210		
211		jQuery('.category_filter label').click(function() {
212			jQuery(this).toggleClass('current');
213	    	
214		});
215			
216		
217		// init Isotope
218		var jQuerygrid = jQuery('.case-container').isotope({
219	  		itemSelector: '.cases_filter',
220	  		layoutMode: 'fitRows',
221	  		filter: function() {
222	    		var jQuerythis = jQuery(this);
223	    		var searchResult = qsRegex ? jQuerythis.text().match( qsRegex ) : true;
224	    		return searchResult;
225	 		}	
226		});
227		
228		
229		// use value of search field to filter
230		var jQueryquicksearch = jQuery('.quicksearch').keyup( debounce( function() {
231  			qsRegex = new RegExp( jQueryquicksearch.val(), 'gi' );
232  			jQuerygrid.isotope();
233		}, 200 ) );
234
235		// debounce so filtering doesn't happen every millisecond
236		function debounce( fn, threshold ) {
237  			var timeout;
238  			threshold = threshold || 100;
239  			return function debounced() {
240    			clearTimeout( timeout );
241    			var args = arguments;
242    			var _this = this;
243    			function delayed() {
244      				fn.apply( _this, args );
245    			}
246    			timeout = setTimeout( delayed, threshold );
247  			};
248		}
249				
250		
251		
252		jQuerycheckboxes.change(function(){
253			var filters = [];
254			// get checked checkboxes values
255			jQuerycheckboxes.filter(':checked').each(function(){
256				filters.push( this.value );
257			});
258			// ['.red', '.blue'] -> '.red, .blue'
259			filters = filters.join(', ');
260			jQuerycontainer.isotope({ filter: filters });
261			
262			updateFilterCounts();
263		});
264		
265		var jQueryitems = jQuerycontainer.children();
266		
267		jQuerycontainer.imagesLoaded().progress( function() {
268		  jQuerycontainer.isotope('layout');
269		});  
270		
271	
272		var initial_items = 6;
273		var next_items = 6;
274		
275		
276		function updateFilterCounts() {
277		    // get filtered item elements
278		    var itemElems = jQuerycontainer.isotope('getFilteredItemElements');
279		    var count_items = jQuery(itemElems).length;
280		   
281		    if (count_items > initial_items) {
282		        jQuery('#loadMore').show();
283		    }
284		    else {
285		        jQuery('#loadMore').hide();
286		    }
287		    if (jQuery('.cases_filter').hasClass('visible_item')) {
288		        jQuery('.cases_filter').removeClass('visible_item');
289		    }
290		    var index = 0;
291		
292		    jQuery(itemElems).each(function () {
293		        if (index >= initial_items) {
294		            jQuery(this).addClass('visible_item');
295		        }
296		        index++;
297		    });
298		    jQuerycontainer.isotope('layout');
299		}
300		
301		
302		function showNextItems(pagination) {
303		    var itemsMax = jQuery('.visible_item').length;
304		    var itemsCount = 0;
305		    jQuery('.visible_item').each(function () {
306		        if (itemsCount < pagination) {
307		            jQuery(this).removeClass('visible_item');
308		            itemsCount++;
309		        }
310		    });
311		    if (itemsCount >= itemsMax) {
312		        jQuery('#loadMore').hide();
313		    }
314		    jQuerycontainer.isotope('layout');
315		}
316		
317		
318		// function that hides items when page is loaded
319		function hideItems(pagination) {
320		    var itemsMax = jQuery('.cases_filter').length;
321		    var itemsCount = 0;
322		    jQuery('.cases_filter').each(function () {
323		        if (itemsCount >= pagination) {
324		            jQuery(this).addClass('visible_item');
325		        }
326		        itemsCount++;
327		    });
328		    if (itemsCount < itemsMax || initial_items >= itemsMax) {
329		        jQuery('#loadMore').hide();
330		    }
331		    jQuerycontainer.isotope('layout');
332		}
333		jQuery('#loadMore').on('click', function (e) {
334		    e.preventDefault();
335		    showNextItems(next_items);
336		});
337		hideItems(initial_items);
338	}
339		
340}

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.