Welcome to Griffin MSI

Providing unique experiences

designed to spark scientific inquiry and creativity

This is our future

Inspiring the Next Generation of Innovators

From field trips to teacher resources, Griffin MSI provides learning experiences both inside and outside the classroom—because improving science education is critical.

Skip carousel
').html(clonedBackgrounds).insertBefore('#slideshow-' + recordUid); $('#slideshow-' + recordUid + '-background').find('.bh__background').first().addClass('active'); $('#slideshow-' + recordUid).cycle(); function getProgressBarPath() { if (!progressBarPath) { progressBarPath = new ProgressBar.Path(pauseIcon.querySelector(progressSelector), { duration: arrowAnimateTime, }); } return progressBarPath; } var pauseIcon = $('#pause-icon-' + recordUid).get(0), slideshowContainer = $('#slideshow-' + recordUid); $('#slideshow-' + recordUid).waypoint(function(direction) { if (autoplay) { if (pauseIcon && pauseIcon.querySelector(progressSelector)) { var path = getProgressBarPath(); path.animate(1.0, function() { path.set(0); }); } $('#slideshow-' + recordUid).cycle('resume'); } }, { offset: 'bottom-in-view' }) slideshowContainer.on('cycle-before', function( e, opts, outgoingSlideEl, incomingSlideEl, forwardFlag) { $('#slideshow-' + recordUid + '-background').find('.bh__background.active').removeClass('active'); $('#slideshow-' + recordUid + '-background').find('.bh__background').eq(opts.nextSlide).addClass('active'); if ( !(slideshowContainer.is('.cycle-paused')) && $('#pause-icon-' + recordUid).is(':visible') ) { var arrowAnimateTime = {arrowAnimateTime}; if (pauseIcon && pauseIcon.querySelector(progressSelector)) { var path = getProgressBarPath(true); path.set(0); path.animate(1.0, function() { path.set(0); }); } } $video = $('#slideshow-' + recordUid + '-background').find('.bh__background').eq(opts.currSlide).find('video'); if ($video.length) { $video.each(function() { $(this).hide(); this.pause(); }); } $video = $('#slideshow-' + recordUid + '-background').find('.bh__background').eq(opts.nextSlide).find('video'); if ($video.length) { $video.each(function() { $(this).show(); var playPromise = this.play(); if (playPromise !== undefined) { playPromise.then(_ => { $(this).parent().addClass('video-init'); }) .catch(error => { // Auto-play was prevented // Show paused UI. }); } }); } }); slideshowContainer.on('cycle-initialized', function( e, opts) { $video = $('#slideshow-' + recordUid + '-background').find('.bh__background').eq(0).find('video'); if ($video.length) { $video.each(function() { this.play(); }); } }); slideshowContainer.on('cycle-paused', function( e, opts) { $('#pause-' + recordUid).hide(); $('#resume-' + recordUid).show(); }); slideshowContainer.on('cycle-resumed', function( e, opts) { var path = getProgressBarPath(); path.set(0); path.stop(); path.animate(1.0, function() { path.set(0); }); $('#resume-' + recordUid).hide(); $('#pause-' + recordUid).show(); }); slideshowContainer.on('cycle-next cycle-prev', function( e, opts) { $('#slideshow-' + recordUid).cycle('resume'); }); // slideshowContainer.on('cycle-next cycle-prev cycle-pager-activated', function( e, opts ) { slideshowContainer.on('cycle-pager-activated', function( e, opts ) { slideshowContainer.cycle('pause'); // Reset the animation when paused. if (pauseIcon && pauseIcon.querySelector(progressSelector)) { var path = getProgressBarPath(); path.stop(); path.set(0); } }); $('body').on('addtovisit:opening', function() { slideshowContainer.cycle('pause'); // Reset the animation when paused. if (pauseIcon && pauseIcon.querySelector(progressSelector)) { var path = getProgressBarPath(); path.stop(); path.set(0); } }); $('body').on('addtovisit:closed', function() { slideshowContainer.cycle('resume'); var arrowAnimateTime = {arrowAnimateTime}; if (pauseIcon) { var path = getProgressBarPath(); path.stop(); path.set(0); path.animate(1.0, function() { path.set(0); }); } }); // @todo - See if we can get this working without causing problems on all of the non-feature slides on the site slideshowContainer.css('height', slideshowContainer.find('.slide.first').height()).cycle(); setTimeout(function() { slideshowContainer.css('height', 'auto'); }, 500); });