258 lines
7.4 KiB
JavaScript
Executable File
258 lines
7.4 KiB
JavaScript
Executable File
//var $window = $(window);
|
|
//var $videoWrap = $('.video-wrap');
|
|
//var $video = $('.video');
|
|
//var videoHeight = $video.outerHeight();
|
|
//
|
|
//$window.on('scroll', function() {
|
|
// var windowScrollTop = $window.scrollTop();
|
|
// var videoBottom = videoHeight + $videoWrap.offset().top;
|
|
//
|
|
// if (windowScrollTop > videoBottom) {
|
|
// $videoWrap.height(videoHeight);
|
|
// $video.addClass('stuck');
|
|
// } else {
|
|
// $videoWrap.height('auto');
|
|
// $video.removeClass('stuck');
|
|
// }
|
|
//});
|
|
|
|
var ytIframeList, videoList, currentPlayer, closeButton, gradientOverlay, fullScreenIcon;
|
|
var inViewPortBol = true;
|
|
var ytIframeIdList = [];
|
|
var ytVideoId = [];
|
|
var ytPlayerId = [];
|
|
var videoTagId = [];
|
|
var events = new Array("pause", "playing");
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
|
|
/*Adding Youtube Iframe API to body*/
|
|
|
|
|
|
/*Getting all the iframe from the Page and finding out valid URL and ID. Then creating instance of players*/
|
|
|
|
|
|
|
|
/*Getting Video Tag List and Creating instances*/
|
|
|
|
videoList = document.getElementsByTagName("video");
|
|
for (i = 0; i < videoList.length; i++) {
|
|
videoList[i].id = "video-wrap" + i;
|
|
videoTagId.push("video" + i);
|
|
videoTagId[i] = document.getElementById(videoList[i].id);
|
|
|
|
}
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
for (var j in events) {
|
|
videoTagId[i].addEventListener(events[j], videoTagPlayerhandler, false);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
window.onYouTubeIframeAPIReady = function () {
|
|
for (i = 0; i < ytIframeIdList.length; i++) {
|
|
ytPlayerId[i] = new YT.Player(ytIframeList[i].id, {
|
|
events: {
|
|
"onStateChange": onPlayerStateChange
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
function videoTagPlayerhandler(e) {
|
|
/*Play Rules*/
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (e.target == videoTagId[i]) {
|
|
if (e.type == "playing") {
|
|
currentPlayer = videoTagId[i];
|
|
videoTagId[i].classList.remove("is-paused");
|
|
videoTagId[i].classList.add("is-playing");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (currentPlayer == videoTagId[i]) {
|
|
continue;
|
|
}
|
|
videoTagId[i].classList.remove("is-playing");
|
|
videoTagId[i].classList.add("is-paused");
|
|
}
|
|
|
|
/*Pause Rules*/
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (e.target == videoTagId[i]) {
|
|
if (e.type == "pause") {
|
|
videoTagId[i].classList.add("is-paused");
|
|
videoTagId[i].classList.remove("is-playing");
|
|
videoTagId[i].pause();
|
|
}
|
|
}
|
|
}
|
|
|
|
/*Sticky Rules*/
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (videoTagId[i].classList.contains("is-sticky")) {
|
|
videoTagId[i].pause();
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < ytPlayerId.length; i++) {
|
|
if (ytVideoId[i].classList.contains("is-sticky")) {
|
|
ytPlayerId[i].pauseVideo();
|
|
fullScreenIcon.style.display = "none";
|
|
|
|
}
|
|
}
|
|
|
|
/*End Rules*/
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (e.target == videoTagId[i]) {
|
|
if (e.type == "ended") {
|
|
videoTagId[i].classList.remove("is-playing");
|
|
videoTagId[i].classList.remove("is-paused");
|
|
}
|
|
}
|
|
}
|
|
videohandler();
|
|
};
|
|
|
|
function onPlayerStateChange(event) {
|
|
|
|
/*Play Rules*/
|
|
|
|
for (i = 0; i < ytPlayerId.length; i++) {
|
|
if (ytPlayerId[i].getPlayerState() === 1) {
|
|
currentPlayer = ytVideoId[i];
|
|
ytVideoId[i].classList.remove("is-paused");
|
|
ytVideoId[i].classList.add("is-playing");
|
|
break;
|
|
}
|
|
}
|
|
for (i = 0; i < ytVideoId.length; i++) {
|
|
if (currentPlayer == ytVideoId[i]) {
|
|
continue;
|
|
}
|
|
ytVideoId[i].classList.remove("is-playing");
|
|
ytVideoId[i].classList.add("is-paused");
|
|
}
|
|
|
|
/*Pause Rules*/
|
|
|
|
for (i = 0; i < ytPlayerId.length; i++) {
|
|
if (ytPlayerId[i].getPlayerState() === 2) {
|
|
ytVideoId[i].classList.add("is-paused");
|
|
ytVideoId[i].classList.remove("is-playing");
|
|
ytPlayerId[i].pauseVideo();
|
|
}
|
|
}
|
|
|
|
|
|
/*Sticky Rules*/
|
|
|
|
for (i = 0; i < ytPlayerId.length; i++) {
|
|
if (ytVideoId[i].classList.contains("is-sticky")) {
|
|
ytPlayerId[i].pauseVideo();
|
|
fullScreenIcon.style.display = "none";
|
|
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (videoTagId[i].classList.contains("is-sticky")) {
|
|
videoTagId[i].pause();
|
|
fullScreenIcon.style.display = "none";
|
|
|
|
}
|
|
}
|
|
|
|
/*End Rule*/
|
|
|
|
for (i = 0; i < ytPlayerId.length; i++) {
|
|
if (ytPlayerId[i].getPlayerState() === 0) {
|
|
ytVideoId[i].classList.remove("is-playing");
|
|
ytVideoId[i].classList.remove("is-paused");
|
|
}
|
|
}
|
|
videohandler();
|
|
}
|
|
|
|
function videohandler() {
|
|
|
|
if (currentPlayer) {
|
|
if (closeButton) {
|
|
closeButton.addEventListener("click", function (e) {
|
|
if (currentPlayer.classList.contains("is-sticky")) {
|
|
currentPlayer.classList.remove("is-sticky");
|
|
|
|
for (i = 0; i < ytVideoId.length; i++) {
|
|
if (currentPlayer == ytVideoId[i]) {
|
|
ytPlayerId[i].pauseVideo();
|
|
}
|
|
}
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (currentPlayer == videoTagId[i]) {
|
|
videoTagId[i].pause();
|
|
}
|
|
}
|
|
|
|
} else {
|
|
for (i = 0; i < ytVideoId.length; i++) {
|
|
if (currentPlayer != ytVideoId[i]) {
|
|
ytVideoId[i].classList.remove("is-sticky");
|
|
}
|
|
}
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (currentPlayer != videoTagId[i]) {
|
|
videoTagId[i].classList.remove("is-sticky");
|
|
}
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
window.addEventListener('scroll', function () {
|
|
|
|
inViewPortBol = inViewPort();
|
|
if (currentPlayer) {
|
|
if (!inViewPortBol && currentPlayer.classList.contains("is-playing")) {
|
|
for (i = 0; i < ytVideoId.length; i++) {
|
|
if (currentPlayer != ytVideoId[i]) {
|
|
ytVideoId[i].classList.remove("is-sticky");
|
|
}
|
|
}
|
|
for (i = 0; i < videoTagId.length; i++) {
|
|
if (currentPlayer != videoTagId[i]) {
|
|
videoTagId[i].classList.remove("is-sticky");
|
|
}
|
|
}
|
|
currentPlayer.classList.add("is-sticky");
|
|
} else {
|
|
if (currentPlayer.classList.contains("is-sticky")) {
|
|
currentPlayer.classList.remove("is-sticky");
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
function inViewPort() {
|
|
|
|
if (currentPlayer) {
|
|
var videoParentLocal = currentPlayer.parentElement.getBoundingClientRect();
|
|
return videoParentLocal.bottom > 0 &&
|
|
videoParentLocal.right > 0 &&
|
|
videoParentLocal.left < (window.innerWidth || document.documentElement.clientWidth) &&
|
|
videoParentLocal.top < (window.innerHeight || document.documentElement.clientHeight);
|
|
}
|
|
}
|
|
|