CINXE.COM
Sign In
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <script> var jsPageName = "Sign In"; // pass strPageName to JavaScript, used in function setPageName() [accessibility.js] var jsAjaxRequest = ('0' === '1') ? true : false; </script> <!-- AX != 1 --> <script> var url = new URL(location.href); history.replaceState({type: "login"} , '', url.pathname + url.search); </script> <head> <!-- META TAGS --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,requiresActiveX=true"> <meta name="apple-itunes-app" content="app-id=566688504, affiliate-data=myAffiliateData, app-argument=myURL"> <title>Sign In</title> <meta name="description" content="The campus engagement platform for Bridgewater State University - Powered by CampusGroups."> <meta name="title" content="Bridgewater State University"> <!-- Google Tag Manager --> <script> dataLayer = [{ 'signedIn': false }]; </script> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-548G27F');</script> <!-- End Google Tag Manager --> <!-- CSS IMPORT --> <!-- FONT FOR DEV --> <link href="css/fonts/open-sans.css" rel="stylesheet" type="text/css" > <!-- FAVICON --> <link rel="icon" type="images/x-icon" href="/upload/bridgew/2024/s1_image_upload_2447305_Untitled_design_14_820113027.png"> <link rel="shortcut icon" type="images/x-icon" href="/upload/bridgew/2024/s1_image_upload_2447305_Untitled_design_14_820113027.png"> <!-- JQUERY UI --> <link rel="stylesheet" type="text/css" href="/bower_components/jquery-ui/themes/base/jquery-ui.min.css"> <!-- AUTOCOMPLETE --> <link rel="stylesheet" type="text/css" href="/js/jquery/jquery.autocomplete.css"> <!-- BOOTSTRAP & GLYPHICONS --> <link rel="stylesheet" type="text/css" href="/bower_components/bootstrap/dist/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="/static/plugins/bootstrap-multiselect/dist/css/bootstrap-multiselect.css"> <link rel="stylesheet" type="text/css" href="/glyphicons-pro/css/glyphicons-filetypes.css"> <!-- THICKBOX --> <link rel="stylesheet" type="text/css" href="/js/thickbox/thickbox.css"> <!-- JQUERY & FONT --> <script src="/bower_components/jquery/dist/jquery.min.js"></script> <script src="/bower_components/jquery-ui/jquery-ui.min.js"></script> <!-- BOOTSTRAP --> <script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script src="/static/plugins/bootstrap-multiselect/dist/js/bootstrap-multiselect.js"></script> <script type="text/javascript" src="/js/accessibility.js?v=20240514.1"></script> <script type="text/javascript" src="/js/scripts.js?v=20230316.1"></script> <link rel="stylesheet" type="text/css" href="/bower_components/mdi/css/materialdesignicons.min.css"> <link rel="stylesheet" type="text/css" href="/static/css/materialdesigniconscustom.css"> <link rel="stylesheet" type="text/css" href="/static/css/header.css?v=20220425.1"> <link rel="stylesheet" type="text/css" href="/css/bootstrap-customV.css?v=20241007.1"> </head> <body class="body-background " data-menu=""> <!-- SKIP links - skip to top of main content --> <div id="div-skip-links" class="skip-link-container-mobile"> <span style="padding: 5px"><a id="a-skip-to-main-content" href="javascript:" class="skip-link" onclick="setFocusToContent(true);" aria-label="Skip to Main Content">Skip to Main Content</a></span> <span id="span-skip-to-left-navigation" style="padding: 5px; display: none;"><a id="a-skip-to-left-navigation" href="javascript:" class="skip-link" onclick="setFocusToSidebar();" aria-label="Skip to Navigation">Skip to Navigation</a></span> <!-- ACCESSIBILITY --> <script> // if we're on mobile we will not enable the skip links const isMobileDevice = /Mobi/i.test(window.navigator.userAgent); // console.log('> isMobileDevice=' + isMobileDevice); $(window).on('load', function () { if (!isMobileDevice) { var elem = document.getElementById('div-skip-links'); if (typeof elem !== undefined) { elem.classList.remove('skip-link-container-mobile'); elem.classList.add('skip-link-container'); } } }); </script> </div> <!-- School custom code --> <!-- End school custom code --> <!-- Google Tag Manager (noscript) --> <!-- <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-548G27F" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> --> <!-- End Google Tag Manager (noscript) --> <!-- Modal --> <div id="primary-modal" class="modal fade" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <p class="loader"> <img alt="Loading" src="/images/loader-big.gif"> <br> Loading... </p> </div> </div> </div> <div id="secondary-modal" class="modal fade" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <p class="loader"> <img alt="Loading" src="/images/loader-big.gif"> <br> Loading... </p> </div> </div> </div> <script> $("#primary-modal").on("hide.bs.modal", function (e) { $("#primary-modal .modal-content").html(writeLoading("Loading")); }); $("#secondary-modal").on("hide.bs.modal", function (e) { $("#secondary-modal .modal-content").html(writeLoading("Loading")); }); </script> <!-- End Modal --> <script src="/static/js/modernizr.min.js"></script> <script src="/js/jquery-validate/jquery.validate.js"></script> <script src="/static/js/polyfill.js"></script> <!-- HEADER --> <style> .btn--school { background-color: #b10000; color: #fff; } .btn--school:hover { background-color: #b10000; color: #fff; } .btn--school:focus { background-color: #b10000; color: #fff; } .topbar { background: #b10000; border-color: #b10000; } .topbar ul.nav > li > a:hover, .topbar ul.nav > li > button:hover { background-color: #ffffff !important; } .topbar ul.nav > li > a:focus, .topbar ul.nav > li > button:focus { background-color: #ffffff !important; outline: none; } .topbar .topbar__sidebar-toggle:hover { background-color: #ffffff !important; } .topbar .topbar__sidebar-toggle:focus { background-color: #ffffff !important; outline: none; } .topbar .open:not(.topbar__left) > a, .topbar .open:not(.topbar__left) > a:focus, .topbar > .open:not(.topbar__left) > a:hover, .topbar .open:not(.topbar__left) > button, .topbar .open:not(.topbar__left) > button:focus, .topbar > .open:not(.topbar__left) > button:hover { background-color: #ffffff !important; } .topbar li:focus-within > button.mdi-menu { background-color: #ffffff !important; } .topbar li.active > a, .topbar li.active > button { background-color: #ffffff !important; } </style> <div id="generic">Loading</div> <div id="outer-shell" class="outer-shell "> <!-- Impersonate --> <!-- /.Impersonate --> <!-- Message / Maintenance --> <!-- /.Message --> <div id="topbar" class="topbar topbar-login topbar--reverse" role="navigation" aria-label="Topbar"> <div class="topbar__left"> <div role="banner"> <a id="a-top-bar-logo" aria-label="Bridgewater State University Logo. Opens the members homepage." role="button" class="logo" href="/groups"> <img class="topbar__icon-large" src="/upload/bridgew/2022/image_upload_2447305_1b_779460.png" alt="Bridgewater State University Logo Image." aria-label="Bridgewater State University Logo Image. Clicking opens the members home page." style="max-height: 50px; max-width: 165px;"> <img class="topbar__icon-small" src="/upload/bridgew/2020/image_upload_34747_bridgew_400x400jpg_112445213.jpeg" alt="Bridgewater State University Logo Image." aria-label="Bridgewater State University Logo Image. Clicking opens the members home page." style="max-height: 35px; max-width: 35px; margin: 0 5px;"> </a> </div> </div> <div class="topbar__center"> <nav aria-label="Topbar"> <ul class="nav"> <!-- Not Logged Buttons --> <!-- Home Website Buttons --> <li class="hidden-xs "> <a class="topbar__menu topbar__menu--large" href="/home_login" aria-label="Home" role="button">Home</a> </li> <li class="hidden-xs dropdown hasSubMenu"> <a class="topbar__menu topbar__menu--large" href="/home/navigate/" style="max-width: inherit"> Quick Links </a> <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;"> <li> <a href="/home/navigate/"> Navigate </a> </li><li> <a href="/home/blackboard/"> Blackboard </a> </li><li> <a href="/home/bsu-email/"> BSU Email </a> </li><li> <a href="/home/infobear/"> InfoBear </a> </li><li> <a href="/home/registrar/"> Registrar </a> </li><li> <a href="/home/library/"> Library </a> </li><li> <a href="/home/bridgenet/"> BridgeNet </a> </li><li> <a href="/home/ebill/"> eBill </a> </li><li> <a href="/home/ssta-payroll/"> SSTA Payroll </a> </li><li> <a href="/home/need-help/"> Need Help? </a> </li><li> <a href="/home/mybsu/"> MyBSU </a> </li> </ul> </li> <li class="hidden-xs dropdown hasNoSubMenu"> <a class="topbar__menu topbar__menu--large" href="/home/events/" style="max-width: inherit"> Events </a> <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;"> </ul> </li> <li class="hidden-xs dropdown hasNoSubMenu"> <a class="topbar__menu topbar__menu--large" href="/home/groups/" style="max-width: inherit"> Groups </a> <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;"> </ul> </li> <li class="hidden-xs dropdown hasNoSubMenu"> <a class="topbar__menu topbar__menu--large" href="/home/news/" style="max-width: inherit"> News </a> <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;"> </ul> </li> <li class="hidden-lg hidden-md hidden-sm dropdown hasSubMenu"> <button class="topbar__menu mdi mdi-menu" aria-label="Top Menu. Expanded. Press tab to enter the menu dropdown." tabindex="0"></button> <ul class="dropdown-menu dropdown-menu-left" style="overflow-y: auto;max-height: 80vh;min-width:220px;"> <li style="display: block;"><a href="/home_login" aria-label="Home" role="button">Home</a></li> <li style="display: block;"><a href="/home/mybsu/" aria-label="MyBSU Student Portal Section" role="button" tabindex="0">MyBSU Student Portal</a></li> <li style="display: block;"><a href="/home/navigate/" aria-label="Navigate Section" role="button" tabindex="0">Navigate</a></li> <li style="display: block;"><a href="/home/blackboard/" aria-label="Blackboard Section" role="button" tabindex="0">Blackboard</a></li> <li style="display: block;"><a href="/home/bsu-email/" aria-label="BSU Email Section" role="button" tabindex="0">BSU Email</a></li> <li style="display: block;"><a href="/home/infobear/" aria-label="InfoBear Section" role="button" tabindex="0">InfoBear</a></li> <li style="display: block;"><a href="/home/registrar/" aria-label="Registrar Section" role="button" tabindex="0">Registrar</a></li> <li style="display: block;"><a href="/home/library/" aria-label="Library Section" role="button" tabindex="0">Library</a></li> <li style="display: block;"><a href="/home/bridgenet/" aria-label="BridgeNet Section" role="button" tabindex="0">BridgeNet</a></li> <li style="display: block;"><a href="/home/ebill/" aria-label="eBill Section" role="button" tabindex="0">eBill</a></li> <li style="display: block;"><a href="/home/ssta-payroll/" aria-label="SSTA Payroll Section" role="button" tabindex="0">SSTA Payroll</a></li> <li style="display: block;"><a href="/home/need-help/" aria-label="Need Help? Section" role="button" tabindex="0">Need Help?</a></li> <li style="display: block;"><a href="/home/mybsu/" aria-label="MyBSU Section" role="button" tabindex="0">MyBSU</a></li> <li style="display: block;"><a href="/home/events/" aria-label="Events Section" role="button" tabindex="0">Events</a></li> <li style="display: block;"><a href="/home/groups/" aria-label="Groups Section" role="button" tabindex="0">Groups</a></li> <li style="display: block;"><a href="/home/news/" aria-label="News Section" role="button" tabindex="0">News</a></li> </ul> </li> <style> .hasSubMenu:hover > ul, .hasSubMenu:focus-within > ul { display:block; } </style> <!-- /.Home Website Buttons --> <!-- Group & Event Buttons --> <!-- /.Group & Event Buttons --> <!-- /.Not Logged Buttons --> <!-- Home Button --> <!-- /.Home Button --> <!-- Group Button --> <!-- /.Group Button --> <!-- Manage Button --> <!-- Event Button --> <!-- /.Event Button --> <!-- Chat Button --> <!-- /.Chat Button --> <!-- Admin / Setup Button --> <!-- /.Admin Button --> <li class="spacer" role="presentation"></li> <!-- Login Button --> <li class="active"> <a class="topbar__menu topbar__menu--row" href="/login_only" aria-label="Sign In Section" role="button"> <span class="mdi mdi-login-variant mdi-24px"></span> <span class="hidden-xs hidden-sm topbar__menu-text" style="overflow: initial;"> Sign In </span> </a> </li> <!-- /.Login Button --> <style> #a-top-bar-logo:focus > i { outline: 2px solid #ffffff; } </style> </ul> </nav> </div><!-- /.navbar-collapse --> </div><!-- /.topbar --> <div id="inner-shell" class="inner-shell"> <!-- END HEADER --> <div id="content-cont" class="content-cont container"> <div id="page-cont" class="content" role="main" aria-label="Main Content."> <div style="position: relative;"><span id="span-top-of-main-content--0" class="content__top-element" tabindex="0" aria-label="Top of Main Content." style="display: none;">Top of Main Content</span></div> <!-- Used in email_form --> <!-- END AX != 1 --> <div class="login__cont"> <div class="login__box"> <div class="login__card card"> <div class="card-block" style="padding: 20px 40px;"> <h1 class="header-cg--h2">Sign in</h1> <p style="margin-bottom: 15px;"> <strong>BSU Student and Employee Login</strong> <br> <small>Use your BSU email and password to login</small> </p> <p class="text-center"> <a class="btn btn--school btn--full-width" href="https://www.campusgroups.com/shibboleth/login?idp=bridgew&school=bridgew">BSU SIGN IN - CLICK HERE!</a> </p> <p> <p>BSU Community Members (all students and employees) must log in using the "BSU SIGN IN - CLICK HERE!" button above. You will be prompted to log in using your BSU BSU Email and Password.</p> </p> <div class="card-separator card-separator--20"></div> <p> <strong>Guest & Family/Supporter Log-in - </strong>Guests, including Families/Supporters of BSU students may create a limited access account for the purposes of accessing event registrations. To create an account, click "Create an Account", then select "Sign Up" under First Time Users. Returning guest and family/supporter users may sign in with their credentials below. </p> <form id="bridgew_login" style="" onLoad="document.form1.email.focus();" name="login" method="post" action="https://engage.bridgew.edu/student_login"> <div role="region" aria-label="Alternate login. Guest and Family slash Supporter Log-in - Guests, including Families slash Supporters of BSU students may create a limited access account for the purposes of accessing event registrations. To create an account, click “Create an Account“, then select “Sign Up“ under First Time Users. Returning guest and family slash supporter users may sign in with their credentials below."> <div class="form-group"> <input id="login_email" class="form-control" name="email" type="text" placeholder="Guest User's Email Address" title="Enter your Email" value="" aria-label="Login. Enter your Guest User's Email Address." /> </div> <div class="form-group"> <input class="form-control" name="password" type="password" placeholder="Password" title="Enter your password" value="" aria-label="Password." /> </div> <button id="loginButton" aria-label="Sign In" onclick="if(!$('#login_email').val()){alert('Please enter a valid email.');}else{loadButton($(this));$('form#bridgew_login').submit();}" class="btn btn--school btn--full-width" style="letter-spacing: 1px; padding: 8px; text-transform: uppercase;" type="button" value=" Sign In "> Sign In </button> <input type="hidden" name="update" value="1"> <input type="hidden" name="ssl" value="1"> <input type="hidden" name="redirect" value="student_index"> <input type="hidden" name="page" value="login"> <input type="hidden" name="user" value=""> <input type="hidden" name="_csrf" value="68LXT6CRVjpYPTsLqO1VqJ1PZeUI7/pLq6IzR8pB3WJn"> <div class="checkbox"> <input id="remember_me" type="checkbox" name="remember_me" value="1"> <label id="label_for_remember_me" for="remember_me">Keep me signed on</label> </div> <div class="small" style="margin-top: 15px;"> <a href="otp_signup">Create an Account</a> | <a class="thickbox" href="/password_boot?email=&embed=1&modal=true&TB_iframe=true&height=250&width=500" title="Forgot Password">Forgot Password?</a> </div> </div> </form> </div> </div> </div> </div> <div class="login__background-img" style="background-image: url(/upload/bridgew/2022/image_upload_2447305_20211012_DRONE_Sunset_Aerials_at_Boyden_QuadCP105jpg_314205537.jpeg);"></div> <!-- LL - 10/03/2017: Moved up here so ckeditor can work in popups --> <script> //YT Viewer if (typeof arrYoutubePlayerObjects != "undefined") { $("#youtubeScript").remove(); $("#www-widgetapi-script").remove(); if (window['YT'] != undefined) { window.YT.loading = 0; window.YT.loaded = 0; } var youtubeTag = document.createElement('script'); youtubeTag.id = "youtubeScript"; youtubeTag.src = "https://www.youtube.com/iframe_api"; youtubeTag.async = false; // Get First Script Tag & Insert Vimeo Script before that. var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(youtubeTag, firstScriptTag); // Array of Players var arrYoutubePlayers = []; // Functions to work on Youtube Players function onYoutubePlayerReady(event) { var player = event.target; $(window).blur(function() { player.pauseVideo(); }); $(window).scroll(function() { if ( !isInViewport(document.getElementById("player--" + player.youtubeObject.cgID))) { player.pauseVideo(); } }); var startTime = new Date(player.youtubeObject.startTime * 1000).toISOString(); var totalTime = new Date(player.getDuration() * 1000).toISOString(); if (player.getDuration() >= 3600) { startTime = startTime.substr(11, 8); totalTime = totalTime.substr(11, 8); } else { startTime = startTime.substr(14, 5); totalTime = totalTime.substr(14, 5); } $("#player-btn--" + player.youtubeObject.cgID + " div.timer").html("<span id='player-time--" + player.youtubeObject.cgID + "'>" + startTime + "</span> / " + totalTime); } function onYoutubePlayerStateChange(event) { var player = event.target; if (event.data == YT.PlayerState.PLAYING) { // Change Buttons $("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status", "pause").attr("aria-label", "Pause"); $("#player-btn--" + player.youtubeObject.cgID + " button.playpause span.mdi").removeClass("mdi-play").addClass("mdi-pause"); } if (event.data == YT.PlayerState.PLAYING && player.intervalFunction == null) { // HACK For Window BLUR window.focus(); // AJAX Recurring Call player.intervalFunction = setInterval(function() { postVideoViews(player.youtubeObject.cgUID, player.youtubeObject.cgUID_s, player.getCurrentTime()); }, 10000); // Timer player.intervalTimerFunction = setInterval(function() { var currentTime = new Date(player.getCurrentTime() * 1000).toISOString(); if (player.getDuration() >= 3600) { currentTime = currentTime.substr(11, 8); } else { currentTime = currentTime.substr(14, 5); } $("#player-time--" + player.youtubeObject.cgID).html(currentTime); }, 1000) } else if (event.data == YT.PlayerState.PAUSED || event.data == YT.PlayerState.ENDED) { // Change Buttons $("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play"); $("#player-btn--" + player.youtubeObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play"); clearInterval(player.intervalFunction); clearInterval(player.intervalTimerFunction); player.intervalFunction = null; player.intervalTimerFunction = null; postVideoViews(player.youtubeObject.cgUID, player.youtubeObject.cgUID_s, player.getCurrentTime(), (event.data == YT.PlayerState.ENDED ? 'true' : '')); //if (event.data == YT.PlayerState.ENDED) { //if (typeof refreshTrackChecklist !== "undefined") { refreshTrackChecklist(); } //else if (typeof parent.refreshTrackChecklist !== "undefined") { parent.refreshTrackChecklist(); } //} } } function youtubePlayerPlayPause(player) { var currentStatus = $("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status"); if (currentStatus == "play") { player.playVideo(); } else if (currentStatus == "pause") { player.pauseVideo(); } } /* Function that checks localStorage for the Vimeo/YouTube closed captions load policy. Returns number values: * 0 - closed captions should be be disabled (do not load closed captions) * 1 - closed captions should be loaded when video loads * If the local storage key is not defined we return 0 (as a number). */ function getVideoPlayerCCLoadPolicy() { try { const lsKey = 'cg-video-player-cc-load-policy'; const ccLoadPolicy = localStorage.getItem(lsKey); return (ccLoadPolicy === '1') ? 1 : 0; } catch(e) { return 0; } } /* Function that toggles the video player CC load policy stored in local storage. Toggled values are (strings values): * '0' - closed captions should be be disabled (do not load closed captions) * '1' - closed captions should be loaded when video loads * If the local storage key is not defined it is treated as though the value were '0' and toggles to '1'. * */ function toggleVideoPlayerCCLoadPolicy() { try { const lsKey = 'cg-video-player-cc-load-policy'; const ccLoadPolicy = localStorage.getItem(lsKey); if (ccLoadPolicy === '1') { localStorage.setItem(lsKey, '0'); } else { localStorage.setItem(lsKey, '1'); } } catch(e) { return; } } /* Function that prompts the user for confirmation before toggling the video player closed caption load policy. * - If closed captions are currently turned off, the user will be prompted to confirm before turning them on (and vice versa) * - Video player CC load policy setting is stored in local storage (see above functions) * - Vimeo and YouTube video players require reload of the associated IFrames to change the setting, * if user confirms yes to reload, the page will be reloaded. */ function toggleClosedCaptionsAndReloadVideoIframes() { const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on'; const message = 'Turning ' + turnClosedCaptionsOnOff + ' closed captions will reload this page, please save any outstanding changes before you choose to turn closed captions ' + turnClosedCaptionsOnOff + '. Are you sure you want to turn closed captions ' + turnClosedCaptionsOnOff + '?'; if (confirm(message)) { toggleVideoPlayerCCLoadPolicy(); location.reload(); } else { return false; } } // Called when the script is fully loaded. function onYouTubeIframeAPIReady() { // Loop through players arrYoutubePlayerObjects.forEach(function (youtubeObject, index) { arrYoutubePlayers[index] = new YT.Player("player--" + youtubeObject.cgID, { height: youtubeObject.height, width: youtubeObject.width, videoId: youtubeObject.videoID, playerVars: { modestbranding: 1, rel: 0, disablekb: 1, playsinline: 1, controls: 0, start: youtubeObject.startTime, cc_load_policy: (typeof getVideoPlayerCCLoadPolicy !== 'undefined') ? getVideoPlayerCCLoadPolicy() : 0 }, events: { 'onStateChange': onYoutubePlayerStateChange, 'onReady': onYoutubePlayerReady } }); arrYoutubePlayers[index].youtubeObject = youtubeObject; arrYoutubePlayers[index].intervalFunction = null; $("#player-btn--" + youtubeObject.cgID + " button.playpause").on('click', function() { youtubePlayerPlayPause(arrYoutubePlayers[index]); }); $("#player-btn--" + youtubeObject.cgID + " button.replay").on('click', function() { arrYoutubePlayers[index].seekTo(0); }); $("#player-btn--" + youtubeObject.cgID + " button.rewind").on('click', function() { arrYoutubePlayers[index].seekTo(arrYoutubePlayers[index].getCurrentTime() - 10); }); const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on'; $("#player-btn--" + youtubeObject.cgID + " button.closedcaption").attr('aria-label', 'Turn ' + turnClosedCaptionsOnOff + ' closed captions. Note, this requires a reload of the current page.'); $("#player-btn--" + youtubeObject.cgID + " button.closedcaption").on('click', function() { toggleClosedCaptionsAndReloadVideoIframes(); }); $("#player-btn--" + youtubeObject.cgID + " button.fullscreen").on('click', function() { arrYoutubePlayers[index].pauseVideo(); tb_show("", "/video_player?embed=1&uid=" + youtubeObject.cgUID + "&width=995&height=680&modal=true&TB_iframe=1", ""); }); }); arrYoutubePlayerObjects = undefined; } } //Vimeo Viewer if (typeof arrVimeoPlayerObjects != "undefined") { $("#vimeoScript").remove(); var vimeoTag = document.createElement('script'); vimeoTag.id = "vimeoScript"; vimeoTag.src = "https://player.vimeo.com/api/player.js"; vimeoTag.async = false; // Get First Script Tag & Insert Vimeo Script before that. var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(vimeoTag, firstScriptTag); // Array of Players var arrVimeoPlayers = []; // Functions to work on Vimeo Players function vimeoPlayerPlay(player) { // Change Buttons $("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "pause").attr("aria-label", "Pause"); $("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-play").addClass("mdi-pause"); // AJAX Recurring Call player.intervalFunction = setInterval( function() { player.getCurrentTime().then( function(seconds) { postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds); }) }, 10000) // Timer player.intervalTimerFunction = setInterval(function() { player.getCurrentTime().then( function(seconds) { var currentTime = new Date(seconds * 1000).toISOString(); if (player.totalDuration >= 3600) { currentTime = currentTime.substr(11, 8); } else { currentTime = currentTime.substr(14, 5); } $("#player-time--" + player.vimeoObject.cgID).html(currentTime); }) }, 1000) } function vimeoPlayerPause(player) { // Change Buttons $("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play"); $("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play"); // Clear AJAX Recurring Call clearInterval(player.intervalFunction); clearInterval(player.intervalTimerFunction); player.intervalFunction = null; player.intervalTimerFunction = null; player.getCurrentTime().then( function(seconds) { postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds); }); } function vimeoPlayerEnded(player) { // Change Buttons $("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play"); $("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play"); // Clear AJAX Recurring Call clearInterval(player.intervalFunction); clearInterval(player.intervalTimerFunction); player.intervalFunction = null; player.intervalTimerFunction = null; player.getCurrentTime().then( function(seconds) { postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds, 'true'); }); //if (typeof refreshTrackChecklist !== "undefined") { refreshTrackChecklist(); } //else if (typeof parent.refreshTrackChecklist !== "undefined") { parent.refreshTrackChecklist(); } } function vimeoPlayerPlayPause(player) { var currentStatus = $("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status"); if (currentStatus == "play") { player.play(); } else if (currentStatus == "pause") { player.pause(); } } // We wait until the script is fully loaded. $("#vimeoScript").on('load', function() { // Loop through players arrVimeoPlayerObjects.forEach(function (vimeoObject, index) { if (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) { // load with closed captions enabled (set texttrack to 'en') arrVimeoPlayers[index] = new Vimeo.Player("player--" + vimeoObject.cgID, { url: vimeoObject.URL , height: vimeoObject.height, width: vimeoObject.width, controls: false, texttrack: 'en' }); } else { arrVimeoPlayers[index] = new Vimeo.Player("player--" + vimeoObject.cgID, { url: vimeoObject.URL , height: vimeoObject.height, width: vimeoObject.width, controls: false }); } arrVimeoPlayers[index].vimeoObject = vimeoObject; arrVimeoPlayers[index].intervalFunction = null; if (vimeoObject.startTime != 0) { arrVimeoPlayers[index].setCurrentTime(vimeoObject.startTime); } arrVimeoPlayers[index].on('play', function() { vimeoPlayerPlay(this) } ); arrVimeoPlayers[index].on('pause', function() { vimeoPlayerPause(this) } ); arrVimeoPlayers[index].on('ended', function() { vimeoPlayerEnded(this) } ); $("#player-btn--" + vimeoObject.cgID + " button.playpause").on('click', function() { vimeoPlayerPlayPause(arrVimeoPlayers[index]); }); $("#player-btn--" + vimeoObject.cgID + " button.replay").on('click', function() { arrVimeoPlayers[index].setCurrentTime(0) }); $("#player-btn--" + vimeoObject.cgID + " button.rewind").on('click', function() { arrVimeoPlayers[index].getCurrentTime().then(function(seconds) { arrVimeoPlayers[index].setCurrentTime(Math.max(0, seconds - 10)); }) }); const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on'; $("#player-btn--" + vimeoObject.cgID + " button.closedcaption").attr('aria-label', 'Turn ' + turnClosedCaptionsOnOff + ' closed captions. Note, this requires a reload of the current page.'); $("#player-btn--" + vimeoObject.cgID + " button.closedcaption").on('click', function() { toggleClosedCaptionsAndReloadVideoIframes(); }); $("#player-btn--" + vimeoObject.cgID + " button.fullscreen").on('click', function() { arrVimeoPlayers[index].pause(); tb_show("", "/video_player?embed=1&uid=" + vimeoObject.cgUID + "&width=995&height=680&modal=true&TB_iframe=1", ""); }); $(window).blur(function() { arrVimeoPlayers[index].pause(); }); $(window).scroll(function() { if ( !isInViewport(document.getElementById("player--" + vimeoObject.cgID))) { arrVimeoPlayers[index].pause(); } }); var startTime = new Date(vimeoObject.startTime * 1000).toISOString(); var totalTime = 0; arrVimeoPlayers[index].getDuration().then(function(seconds) { arrVimeoPlayers[index].totalDuration = seconds; totalTime = new Date(seconds * 1000).toISOString(); if (seconds >= 3600) { startTime = startTime.substr(11, 8); totalTime = totalTime.substr(11, 8); } else { startTime = startTime.substr(14, 5); totalTime = totalTime.substr(14, 5); } $("#player-btn--" + vimeoObject.cgID + " div.timer").html("<span id='player-time--" + vimeoObject.cgID + "'>" + startTime + "</span> / " + totalTime); }); }); arrVimeoPlayerObjects = undefined; }); } </script> <script> $(document).ready(function(){ $("[data-toggle='tooltip']").tooltip(); $(".btn--loader").click(function() { loadButton($(this)); }); tb_init('a.thickbox, area.thickbox, input.thickbox'); // fix for the non editable input in ckeditor (ex: URL...) $(".modal").removeAttr("tabindex"); setupAjaxAccessibility(); }); </script> <!-- AX != 1 --> </div><!--/.content --> </div><!--/.content-page --> </div><!--/.inner-shell --> <style> .outer-shell { display:flex; flex-direction:column; min-height: 100vh; } @-moz-document url-prefix() { .inner-shell {flex:1; } } @media screen and (-webkit-min-device-pixel-ratio:0) { .inner-shell { flex:1; } } body.enlarged { min-height:initial; position:relative; } body.enlarged > .outer-shell { display:flex; flex-direction:column; min-height: 100vh; } </style> <footer class="footer__home"> <div> <div id="footer-links" class="row footer__cont" style="background: transparent;"> <div class="col-md-offset-1_5 col-md-3 col-sm-12 col-xs-12 text-center" style="padding-top:10px;"> <img alt="Bridgewater State University Website Logo" src="/upload/bridgew/2022/image_upload_2447305_1b_779460.png" style="max-width:150px;max-height:50px;border-radius:6px;"> </div> <div class="text-xs-center text-sm-left text-md-left col-md-3 col-sm-6 col-xs-12" style="display:flex;padding: 10px 10px;"> <div style="margin:auto" role="group" aria-label="Contact information."> <h2 class="footer__home--title" style="margin-top: 0; margin-bottom: 10px;">Contact</h2><br> <span style="margin-bottom:5px">Bridgewater State University</span><br> <span style="margin-bottom:5px;line-height:1.7">131 Summer Street<br>Bridgewater, MA 02325<br>United States</span><br> <a class="a-footer-contact-links" href="mailto:cse@bridgew.edu" aria-label="Send an email to cse@bridgew.edu">cse@bridgew.edu</a><br> </div> </div> <div class="text-xs-center text-sm-left text-md-left col-md-3 col-sm-6 col-xs-12" style="display:flex;vertical-align:top;padding: 10px 10px;"> <div style="margin:auto" role="group" aria-label="Links"> <h2 class="footer__home--title" style="margin-top: 0; margin-bottom: 10px;">Links</h2><br> <a class="a-footer-contact-links" href="/home/mybsu/">MyBSU Student Portal</a><br> <a class="a-footer-contact-links" href="/home/navigate/">Navigate</a><br> <a class="a-footer-contact-links" href="/home/blackboard/">Blackboard</a><br> <a class="a-footer-contact-links" href="/home/bsu-email/">BSU Email</a><br> <a class="a-footer-contact-links" href="/home/infobear/">InfoBear</a><br> <a class="a-footer-contact-links" href="/home/registrar/">Registrar</a><br> <a class="a-footer-contact-links" href="/home/library/">Library</a><br> <a class="a-footer-contact-links" href="/home/bridgenet/">BridgeNet</a><br> <a class="a-footer-contact-links" href="/home/ebill/">eBill</a><br> <a class="a-footer-contact-links" href="/home/ssta-payroll/">SSTA Payroll</a><br> <a class="a-footer-contact-links" href="/home/need-help/">Need Help?</a><br> <a class="a-footer-contact-links" href="/home/mybsu/">MyBSU</a><br> <a class="a-footer-contact-links" href="/home/events/">Events</a><br> <a class="a-footer-contact-links" href="/home/groups/">Groups</a><br> <a class="a-footer-contact-links" href="/home/news/">News</a><br> <a class="a-footer-contact-links" href="https://www.bridgew.edu/">Terms of Service</a><br> <a class="a-footer-contact-links" href="https://www.bridgew.edu/policy/website-privacy-statement">Privacy Policy</a><br> <a class="a-footer-contact-links" href="https://readyedu.atlassian.net/wiki/spaces/CGSD/overview?homepageId=302186786">Support Center</a> </div> </div> </div> <div class="row" style="padding:15px 20px 0 20px;border-top:1px solid #5a5a5a;margin-top: 10px;" role="group" aria-label="Footer Bar Links"> <div class="col-sm-6 col-xs-12 text-xs-center text-sm-left"></div> <div class="col-sm-6 col-xs-12 text-xs-center text-sm-right"> <a class="a-footer-contact-links" href="http://www.novalsys.com">©2024 CampusGroups</a> </div> </div> </div> </footer> <script type="text/javascript" src="/js/jquery-migrate-1.2.1.js"></script> <!-- THICKBOX --> <script src="/js/thickbox/thickbox.js"></script> <script type="text/javascript" src="/static/js/metisMenuCustom.js?v=1"></script> <script type="text/javascript" src="/static/js/jquery.slimscroll.js"></script> <!--<link href="/static/css/scrollbar.css" rel="stylesheet"> <script type="text/javascript" src="/static/js/scrollbar.js"></script>--> <script type="text/javascript">function $$(strId) { return document.getElementById(strId); }</script> <script type="text/javascript" src="/static/plugins/clamp/clamp.min.js"></script> <script type="text/javascript" src="/static/js/core.js"></script> <script type="text/javascript" src="/static/js/menu.js"></script> <script type="text/javascript" src="/static/js/routing.js"></script> <script type="text/javascript">$.ajaxSetup({cache:true})</script> <!-- @TODO: This is for jPrompt. We might to see if an update is available or give it a better style --> <link href="/js/jquery-alerts/jquery.alerts.css" rel="stylesheet" type="text/css"> <script src="/js/jquery-alerts/jquery.alerts.js" type="text/javascript"></script> <!-- @TODO: Check if used : put directly on /r and student_password--> <script> </script> <!-- Google Analytics --> <script> var _customTask = function() { return function(model){ var piiRegex = [ { name: 'Email', regex: /.{4}@.{4}/g}, { name: 'Phone_Number', regex: /^(\+|\d)[0-9]{7,16}$/g}, { name: 'SSN', regex: /^\d{3}-\d{2}-\d{4}$}/g}, { name: 'Address', regex: /^\d+\s[A-z]+\s[A-z]+/g}]; var globalSendTaskName = '_' + model.get('trackingId') + '_sendHitTask'; // Fetch reference to the original sendHitTask var originalSendTask = window[globalSendTaskName] = window[globalSendTaskName] || model.get('sendHitTask'); var i, hitPayload, parts, val; // Overwrite sendHitTask with PII purger model.set('sendHitTask', function(sendModel) { hitPayload = sendModel.get('hitPayload').split('&'); for (i = 0; i < hitPayload.length; i++) { parts = hitPayload[i].split('='); // Double-decode, to account for web server encode + analytics.js encode try { val = decodeURIComponent(decodeURIComponent(parts[1])); } catch(e) { val = decodeURIComponent(parts[1]); } piiRegex.forEach(function(pii) { val = val.replace(pii.regex, '[REDACTED ' + pii.name + ']'); }); parts[1] = encodeURIComponent(val); hitPayload[i] = parts.join('='); } sendModel.set('hitPayload', hitPayload.join('&'), true); originalSendTask(sendModel); }); }; } </script> <!-- GA4 implementation --> <script async src='https://www.googletagmanager.com/gtag/js?id=GTM-PBSLHP'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'GTM-PBSLHP', { 'send_page_view': true, 'name': 'school', custom_map: { 'dimension1': 'customTask' } }); gtag('event', 'page_view', { customTask: _customTask() }); </script> <!-- End Google Analytics --> <!-- Help --> <!-- End Help --> </body> <!-- END AX != 1 --> <style> /* Accessibility Mode OFF - Default outline on :focus (none) */ :focus { outline: none; } a:focus { outline: none; } button.close:focus { outline: none; } .button:focus { outline: none; } .button.focus { outline: none; } .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus { outline: none; } .dropdown-toggle:focus { outline: none; } #header__btn-cont--manage:focus, #header__btn-cont--manage:focus-within { outline: none; } /* no outline/focus on the following (various reasons including hover style on focus, other focus styles applied, etc.) */ h2:focus { outline: none; outline-offset: 0px; border: none; } /* .page__header--btns .btn:focus { outline: none !important; outline-offset: 0px !important; } */ /* a.btn--rounded:focus { outline: none !important; outline-offset: 0px !important; } */ </style> <!-- should always be last stylesheet loaded, version=yyyymmddx --> <link href="/static/css/accessibility.css?v=20220717.1" rel="stylesheet" /> </html>