HiskeSchipper - mod_media

HTML

<div id="wrapper">


<div id="mod_media">
	<a href="#" class="nav_prev"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
	<a href="#" class="nav_next"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
	<figure>
		<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4nGNgAAIAAAUAAXpeqz8=" style="background-image:url(https://placeholdit.imgix.net/~text?txtsize=100&bg=eeeeee&txtclr=0c0c0c&txt=600%20%C3%97%20400%0Apx&w=600&h=400);" alt="Title">
		<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
	</figure>
	<figure>
		<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4nGNgAAIAAAUAAXpeqz8=" style="background-image:url(https://placeholdit.imgix.net/~text?txtsize=100&bg=eeeeee&txtclr=b10101&txt=600%20%C3%97%20400%0Apx&w=600&h=400);" alt="Title">
		<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
	</figure>
	<figure>
		<video>
			<source src="https://www.w3schools.com/html/movie.mp4" type="video/mp4">
		</video>
		<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
	</figure>
	<figure>
		<audio>
			<source src="https://www.w3schools.com/html/horse.mp3" type="audio/mpeg">
		</audio>
		<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
	</figure>
	<figure>
		<div id="mod_media_1" class="youtube" data-video-id="M7lc1UVf-VE"></div>
		<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus...

SCSS

@import url('https://fonts.googleapis.com/css?family=Alegreya:400,400i,500i,700,700i|Josefin+Sans:300,300i,700,700i|Josefin+Slab:300,300i,700,700i');
@import url('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');

html, body {
    padding: 0px;
    margin: 0px;
}

body {
	background: #eee;
	font-family: 'Josefin Sans',sans-serif;
    font-weight: 300;
    font-size: 18px;
    line-height: 1.5;
	
	*, :before, :after {
		margin: 0px;
		padding: 0px;
		box-sizing: border-box;
	}
}
#wrapper {
	display: block;
	width: 100%;
	max-width: 1020px;
	margin: 0px auto;
}
$red: #df0101;
$dark-red: #b10101;
$light-grey: #bdc3c7;
$grey: #414141;

$text: #1C1823;
$nearly-white: #F8F7FF;


#mod_media {
	display: inline-block;
	position: relative;
	width: 100%;
	height: 500px;
	//padding: 0px 65px;

	> a.nav_prev, > a.nav_next {
		position: absolute;
		top: 50%;
		transform: translate(0%, -50%);
		width: 50px;
		height: 50px;
		background-color: $dark-red;
		color: #fff;
		z-index: 4;
		border-radius: 50%;
		
		&:hover, &:focus {
			background-color: $red;
		}
		
		> i {
			position: absolute;
			top: 50%;
			left: 50%;
			transform: translate(0%, -50%);
			font-size: 24px;
		}
	}
	> a.nav_prev {
		left: 0px;
		
		> i {
			margin-left: -10px;
		}
	}
	> a.nav_next {
		right: 0px;
		
		> i {
			margin-left: -6px;
		}
	}

	figure {
		display: inline-block;
		left: 65px;
		right: 65px;
		//left: 0px;
		//right: 0px;
		height: 100%;
		position: absolute;
		z-index: 1;
		background: $red;
		opacity: 0;
		transition: opacity 0.5s ease;
		padding-bottom: 80px;
		
		img, video, audio, iframe {
			display: inline-block;
			width: 100%;
			left: 0px;
			top: 0px;
			height: 100%;
			background-color: $dark-red;
			z-index: 1;
		}
		audio + .controls {
			opacity: 1 !important;
		}
		img {
			background-size: contain;
			background-repeat: no-repeat;
			background-position: center center;
			
			& + .fullscreen {
				position: absolute;
				display:...

JavaScript

/*
 * Inspired by: https://gist.github.com/ludo6577/53691fd3e71204f2ff36
 */
function isInFullscreen() {
	var tmp = document.fullScreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msIsFullScreen;
	return tmp;
}
function enterFullscreen(el) {
	var element = el || document.body;
	var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen || element.msRequestFullScreen;
	
	if (requestMethod) { // Native full screen.
		requestMethod.call(element);
	} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
		var wscript = new ActiveXObject("WScript.Shell");
		if (wscript !== null) {
			wscript.SendKeys("{F11}");
		}
	}
}
function leaveFullscreen() {
	if ( isInFullscreen() ) {
		var element = document;
		var requestMethod = element.cancelFullScreen || element.webkitCancelFullScreen || element.mozCancelFullScreen || element.msCancelFullscreen || element.msCancelFullScreen;
	
		if (requestMethod) { // Native full screen.
			requestMethod.call(element);
		} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
			var wscript = new ActiveXObject("WScript.Shell");
			if (wscript !== null) {
				wscript.SendKeys("{F11}");
			}
		}
	}
}

var mod_media_play_timer;
function onYouTubeIframeAPIReady() {
	$('#mod_media')
	.find('div.youtube')
		.each(function(idx, el){
			var $el = $(el),
				player;
			player = new YT.Player($el.attr('id'), {
				//height: '390',
				//width: '640',
				videoId: $el.data('video-id'),
				playerVars: {
					origin: window.location.hostname,
					enablejsapi: 1,
					modestbranding: 1,
					showinfo: 0,
					rel: 0,
					autoplay: 0,
				},
				events: {
					'onReady': function(e){
						$( e.target.getIframe() ).data('player', e.target);
					},
					//'onStateChange': function(e){},
				}
			});
		})
	.end();
	
}

function checkFullScreen() {
	// window.outerWidth should work, but is 16px short..?
	if (...