114 lines
2.6 KiB
JavaScript
114 lines
2.6 KiB
JavaScript
|
javascript:
|
||
|
|
||
|
CSS = ""
|
||
|
+ "* {margin: 0; padding: 0}"
|
||
|
+ "html {height: 95%}"
|
||
|
+ "body {height: 100%; background-color: #000}"
|
||
|
+ "div { display:inline-block; }"
|
||
|
+ "video {"
|
||
|
+ " min-width: 100%;"
|
||
|
+ " min-height: 100%;"
|
||
|
+ " max-width: 100%;"
|
||
|
+ " max-height: 100%;"
|
||
|
+ " overflow: hidden;"
|
||
|
+ "}"
|
||
|
;
|
||
|
|
||
|
var VIDEO_TYPES = ["\\.mp4", "\\.m4v", "\\.webm", "\\.ogv"].join("|");
|
||
|
|
||
|
function apply_css()
|
||
|
{
|
||
|
console.log("applying CSS");
|
||
|
var css = document.createElement("style");
|
||
|
css.innerHTML = CSS;
|
||
|
document.head.appendChild(css);
|
||
|
}
|
||
|
|
||
|
function get_media_links()
|
||
|
{
|
||
|
var anchors = document.getElementsByTagName("a");
|
||
|
var media_links = [];
|
||
|
for (var index = 0; index < anchors.length; index += 1)
|
||
|
{
|
||
|
var anchor = anchors[index];
|
||
|
if (anchor.href.match(VIDEO_TYPES))
|
||
|
{
|
||
|
media_links.push(anchor.href);
|
||
|
}
|
||
|
}
|
||
|
return media_links;
|
||
|
}
|
||
|
|
||
|
function clear_page()
|
||
|
{
|
||
|
/* Remove EVERYTHING */
|
||
|
console.log("clearing page");
|
||
|
document.removeChild(document.documentElement);
|
||
|
|
||
|
var html = document.createElement("html");
|
||
|
document.appendChild(html);
|
||
|
|
||
|
var head = document.createElement("head");
|
||
|
html.appendChild(head);
|
||
|
|
||
|
var body = document.createElement("body");
|
||
|
html.appendChild(body);
|
||
|
|
||
|
document.documentElement = html;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function create_video_players(width, height)
|
||
|
{
|
||
|
var css_width = (100 / width).toString() + "%";
|
||
|
var css_height = (100 / height).toString() + "%";
|
||
|
console.log(css_width);
|
||
|
|
||
|
var players = [];
|
||
|
for (var index = 0; index < width * height; index += 1)
|
||
|
{
|
||
|
var player_holder = document.createElement("div");
|
||
|
var player = document.createElement("video");
|
||
|
player_holder.style.width = css_width;
|
||
|
player_holder.style.height = css_height;
|
||
|
player.holder = player_holder;
|
||
|
players.push(player);
|
||
|
player_holder.appendChild(player);
|
||
|
document.body.appendChild(player_holder);
|
||
|
}
|
||
|
return players;
|
||
|
}
|
||
|
|
||
|
function swap_source(player, source_list)
|
||
|
{
|
||
|
var index = Math.floor(Math.random() * source_list.length);
|
||
|
var href = source_list[index];
|
||
|
player.pause();
|
||
|
player.src = href;
|
||
|
player.load();
|
||
|
player.play();
|
||
|
}
|
||
|
|
||
|
function main()
|
||
|
{
|
||
|
var WIDTH = 3;
|
||
|
var HEIGHT = 3;
|
||
|
var MEDIAS = get_media_links();
|
||
|
|
||
|
clear_page();
|
||
|
apply_css();
|
||
|
|
||
|
var PLAYERS = create_video_players(WIDTH, HEIGHT);
|
||
|
function ended_callback()
|
||
|
{
|
||
|
swap_source(this, MEDIAS);
|
||
|
}
|
||
|
for (var index = 0; index < PLAYERS.length; index += 1)
|
||
|
{
|
||
|
var player = PLAYERS[index];
|
||
|
player.addEventListener("ended", ended_callback);
|
||
|
swap_source(player, MEDIAS);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
main();
|