rocky/rocky-austria/fileadmin/template-rocky/timeline/build/js/storyjs-embed.js

528 lines
17 KiB
JavaScript
Raw Permalink Normal View History

2025-02-12 13:28:47 +01:00
/*
TimelineJS - ver. 2015-02-12-22-19-24 - 2015-02-12
Copyright (c) 2012-2013 Northwestern University
a project of the Northwestern University Knight Lab, originally created by Zach Wise
https://github.com/NUKnightLab/TimelineJS
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
LazyLoad = function(doc) {
var env, head, pending = {},
pollCount = 0,
queue = {
css: [],
js: []
},
styleSheets = doc.styleSheets;
function createNode(name, attrs) {
var node = doc.createElement(name),
attr;
for (attr in attrs) {
if (attrs.hasOwnProperty(attr)) {
node.setAttribute(attr, attrs[attr])
}
}
return node
}
function finish(type) {
var p = pending[type],
callback, urls;
if (p) {
callback = p.callback;
urls = p.urls;
urls.shift();
pollCount = 0;
if (!urls.length) {
callback && callback.call(p.context, p.obj);
pending[type] = null;
queue[type].length && load(type)
}
}
}
function getEnv() {
var ua = navigator.userAgent;
env = {
async: doc.createElement("script").async === true
};
(env.webkit = /AppleWebKit\//.test(ua)) || (env.ie = /MSIE/.test(ua)) || (env.opera = /Opera/.test(ua)) || (env.gecko = /Gecko\//.test(ua)) || (env.unknown = true)
}
function load(type, urls, callback, obj, context) {
var _finish = function() {
finish(type)
},
isCSS = type === "css",
nodes = [],
i, len, node, p, pendingUrls, url;
env || getEnv();
if (urls) {
urls = typeof urls === "string" ? [urls] : urls.concat();
if (isCSS || env.async || env.gecko || env.opera) {
queue[type].push({
urls: urls,
callback: callback,
obj: obj,
context: context
})
} else {
for (i = 0, len = urls.length; i < len; ++i) {
queue[type].push({
urls: [urls[i]],
callback: i === len - 1 ? callback : null,
obj: obj,
context: context
})
}
}
}
if (pending[type] || !(p = pending[type] = queue[type].shift())) {
return
}
head || (head = doc.head || doc.getElementsByTagName("head")[0]);
pendingUrls = p.urls;
for (i = 0, len = pendingUrls.length; i < len; ++i) {
url = pendingUrls[i];
if (isCSS) {
node = env.gecko ? createNode("style") : createNode("link", {
href: url,
rel: "stylesheet"
})
} else {
node = createNode("script", {
src: url
});
node.async = false
}
node.className = "lazyload";
node.setAttribute("charset", "utf-8");
if (env.ie && !isCSS) {
node.onreadystatechange = function() {
if (/loaded|complete/.test(node.readyState)) {
node.onreadystatechange = null;
_finish()
}
}
} else if (isCSS && (env.gecko || env.webkit)) {
if (env.webkit) {
p.urls[i] = node.href;
pollWebKit()
} else {
node.innerHTML = '@import "' + url + '";';
pollGecko(node)
}
} else {
node.onload = node.onerror = _finish
}
nodes.push(node)
}
for (i = 0, len = nodes.length; i < len; ++i) {
head.appendChild(nodes[i])
}
}
function pollGecko(node) {
var hasRules;
try {
hasRules = !!node.sheet.cssRules
} catch (ex) {
pollCount += 1;
if (pollCount < 200) {
setTimeout(function() {
pollGecko(node)
}, 50)
} else {
hasRules && finish("css")
}
return
}
finish("css")
}
function pollWebKit() {
var css = pending.css,
i;
if (css) {
i = styleSheets.length;
while (--i >= 0) {
if (styleSheets[i].href === css.urls[0]) {
finish("css");
break
}
}
pollCount += 1;
if (css) {
if (pollCount < 200) {
setTimeout(pollWebKit, 50)
} else {
finish("css")
}
}
}
}
return {
css: function(urls, callback, obj, context) {
load("css", urls, callback, obj, context)
},
js: function(urls, callback, obj, context) {
load("js", urls, callback, obj, context)
}
}
}(this.document);
LoadLib = function(doc) {
var loaded = [];
function isLoaded(url) {
var i = 0,
has_loaded = false;
for (i = 0; i < loaded.length; i++) {
if (loaded[i] == url) {
has_loaded = true
}
}
if (has_loaded) {
return true
} else {
loaded.push(url);
return false
}
}
return {
css: function(urls, callback, obj, context) {
if (!isLoaded(urls)) {
LazyLoad.css(urls, callback, obj, context)
}
},
js: function(urls, callback, obj, context) {
if (!isLoaded(urls)) {
LazyLoad.js(urls, callback, obj, context)
}
}
}
}(this.document);
var WebFontConfig;
if (typeof embed_path == "undefined") {
var _tmp_script_path = getEmbedScriptPath("storyjs-embed.js");
var embed_path = _tmp_script_path.substr(0, _tmp_script_path.lastIndexOf("js/"))
}
function getEmbedScriptPath(scriptname) {
var scriptTags = document.getElementsByTagName("script"),
script_path = "",
script_path_end = "";
for (var i = 0; i < scriptTags.length; i++) {
if (scriptTags[i].src.match(scriptname)) {
script_path = scriptTags[i].src
}
}
if (script_path != "") {
script_path_end = "/"
}
return script_path.split("?")[0].split("/").slice(0, -1).join("/") + script_path_end
}(function() {
if (typeof url_config == "object") {
createStoryJS(url_config)
} else if (typeof timeline_config == "object") {
createStoryJS(timeline_config)
} else if (typeof storyjs_config == "object") {
createStoryJS(storyjs_config)
} else if (typeof config == "object") {
createStoryJS(config)
} else {}
})();
function createStoryJS(c, src) {
var storyjs_embedjs, t, te, x, isCDN = false,
js_version = "2.24",
jquery_version_required = "1.7.1",
jquery_version = "",
ready = {
timeout: "",
checks: 0,
finished: false,
js: false,
css: false,
jquery: false,
has_jquery: false,
language: false,
font: {
css: false,
js: false
}
},
path = {
base: embed_path,
css: embed_path + "css/",
js: embed_path + "js/",
locale: embed_path + "js/locale/",
jquery: "//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js",
font: {
google: false,
css: embed_path + "css/themes/font/",
js: "//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"
}
},
storyjs_e_config = {
version: js_version,
debug: false,
type: "timeline",
id: "storyjs",
embed_id: "timeline-embed",
embed: true,
width: "100%",
height: "100%",
source: "https://docs.google.com/spreadsheet/pub?key=0Agl_Dv6iEbDadFYzRjJPUGktY0NkWXFUWkVIZDNGRHc&output=html",
lang: "en",
font: "default",
css: path.css + "timeline.css?" + js_version,
js: "",
api_keys: {
google: "",
flickr: "",
twitter: ""
},
gmap_key: ""
},
font_presets = [{
name: "Merriweather-NewsCycle",
google: ["News+Cycle:400,700:latin", "Merriweather:400,700,900:latin"]
}, {
name: "NewsCycle-Merriweather",
google: ["News+Cycle:400,700:latin", "Merriweather:300,400,700:latin"]
}, {
name: "PoiretOne-Molengo",
google: ["Poiret+One::latin", "Molengo::latin"]
}, {
name: "Arvo-PTSans",
google: ["Arvo:400,700,400italic:latin", "PT+Sans:400,700,400italic:latin"]
}, {
name: "PTSerif-PTSans",
google: ["PT+Sans:400,700,400italic:latin", "PT+Serif:400,700,400italic:latin"]
}, {
name: "PT",
google: ["PT+Sans+Narrow:400,700:latin", "PT+Sans:400,700,400italic:latin", "PT+Serif:400,700,400italic:latin"]
}, {
name: "DroidSerif-DroidSans",
google: ["Droid+Sans:400,700:latin", "Droid+Serif:400,700,400italic:latin"]
}, {
name: "Lekton-Molengo",
google: ["Lekton:400,700,400italic:latin", "Molengo::latin"]
}, {
name: "NixieOne-Ledger",
google: ["Nixie+One::latin", "Ledger::latin"]
}, {
name: "AbrilFatface-Average",
google: ["Average::latin", "Abril+Fatface::latin"]
}, {
name: "PlayfairDisplay-Muli",
google: ["Playfair+Display:400,400italic:latin", "Muli:300,400,300italic,400italic:latin"]
}, {
name: "Rancho-Gudea",
google: ["Rancho::latin", "Gudea:400,700,400italic:latin"]
}, {
name: "Bevan-PotanoSans",
google: ["Bevan::latin", "Pontano+Sans::latin"]
}, {
name: "BreeSerif-OpenSans",
google: ["Bree+Serif::latin", "Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800:latin"]
}, {
name: "SansitaOne-Kameron",
google: ["Sansita+One::latin", "Kameron:400,700:latin"]
}, {
name: "Lora-Istok",
google: ["Lora:400,700,400italic,700italic:latin", "Istok+Web:400,700,400italic,700italic:latin"]
}, {
name: "Pacifico-Arimo",
google: ["Pacifico::latin", "Arimo:400,700,400italic,700italic:latin"]
}];
if (typeof c == "object") {
for (x in c) {
if (Object.prototype.hasOwnProperty.call(c, x)) {
storyjs_e_config[x] = c[x]
}
}
}
if (typeof src != "undefined") {
storyjs_e_config.source = src
}
if (typeof url_config == "object") {
isCDN = true;
if (storyjs_e_config.source.match("docs.google.com") || storyjs_e_config.source.match("json") || storyjs_e_config.source.match("storify")) {} else {
storyjs_e_config.source = "https://docs.google.com/spreadsheet/pub?key=" + storyjs_e_config.source + "&output=html"
}
}
if (storyjs_e_config.js.match("locale")) {
storyjs_e_config.lang = storyjs_e_config.js.split("locale/")[1].replace(".js", "");
storyjs_e_config.js = path.js + "timeline-min.js?" + js_version
}
if (storyjs_e_config.js.match("/")) {} else {
storyjs_e_config.css = path.css + storyjs_e_config.type + ".css?" + js_version;
storyjs_e_config.js = path.js + storyjs_e_config.type;
if (storyjs_e_config.debug) {
storyjs_e_config.js += ".js?" + js_version
} else {
storyjs_e_config.js += "-min.js?" + js_version
}
storyjs_e_config.id = "storyjs-" + storyjs_e_config.type
}
if (storyjs_e_config.lang.match("/")) {
path.locale = storyjs_e_config.lang
} else {
path.locale = path.locale + storyjs_e_config.lang + ".js?" + js_version
}
createEmbedDiv();
LoadLib.css(storyjs_e_config.css, onloaded_css);
if (storyjs_e_config.font == "default") {
ready.font.js = true;
ready.font.css = true
} else {
var fn;
if (storyjs_e_config.font.match("/")) {
fn = storyjs_e_config.font.split(".css")[0].split("/");
path.font.name = fn[fn.length - 1];
path.font.css = storyjs_e_config.font
} else {
path.font.name = storyjs_e_config.font;
path.font.css = path.font.css + storyjs_e_config.font + ".css?" + js_version
}
LoadLib.css(path.font.css, onloaded_font_css);
for (var i = 0; i < font_presets.length; i++) {
if (path.font.name == font_presets[i].name) {
path.font.google = true;
WebFontConfig = {
google: {
families: font_presets[i].google
}
}
}
}
if (path.font.google) {
LoadLib.js(path.font.js, onloaded_font_js)
} else {
ready.font.js = true
}
}
try {
ready.has_jquery = jQuery;
ready.has_jquery = true;
if (ready.has_jquery) {
var jquery_version_array = jQuery.fn.jquery.split(".");
var jquery_version_required_array = jquery_version_required.split(".");
ready.jquery = true;
for (i = 0; i < 2; i++) {
var have = jquery_version_array[i],
need = parseFloat(jquery_version_required_array[i]);
if (have != need) {
ready.jquery = have > need;
break
}
}
}
} catch (err) {
ready.jquery = false
}
if (!ready.jquery) {
LoadLib.js(path.jquery, onloaded_jquery)
} else {
onloaded_jquery()
}
function onloaded_jquery() {
LoadLib.js(storyjs_e_config.js, onloaded_js)
}
function onloaded_js() {
ready.js = true;
if (storyjs_e_config.lang != "en") {
LazyLoad.js(path.locale, onloaded_language)
} else {
ready.language = true
}
onloaded_check()
}
function onloaded_language() {
ready.language = true;
onloaded_check()
}
function onloaded_css() {
ready.css = true;
onloaded_check()
}
function onloaded_font_css() {
ready.font.css = true;
onloaded_check()
}
function onloaded_font_js() {
ready.font.js = true;
onloaded_check()
}
function onloaded_check() {
if (ready.checks > 40) {
return;
alert("Error Loading Files")
} else {
ready.checks++;
if (ready.js && ready.css && ready.font.css && ready.font.js && ready.language) {
if (!ready.finished) {
ready.finished = true;
buildEmbed()
}
} else {
ready.timeout = setTimeout("onloaded_check_again();", 250)
}
}
}
this.onloaded_check_again = function() {
onloaded_check()
};
function createEmbedDiv() {
var embed_classname = "storyjs-embed";
t = document.createElement("div");
if (storyjs_e_config.embed_id != "") {
te = document.getElementById(storyjs_e_config.embed_id)
} else {
te = document.getElementById("timeline-embed")
}
te.appendChild(t);
t.setAttribute("id", storyjs_e_config.id);
if (storyjs_e_config.width.toString().match("%")) {
te.style.width = storyjs_e_config.width.split("%")[0] + "%"
} else {
storyjs_e_config.width = storyjs_e_config.width - 2;
te.style.width = storyjs_e_config.width + "px"
}
if (storyjs_e_config.height.toString().match("%")) {
te.style.height = storyjs_e_config.height;
embed_classname += " full-embed";
te.style.height = storyjs_e_config.height.split("%")[0] + "%"
} else if (storyjs_e_config.width.toString().match("%")) {
embed_classname += " full-embed";
storyjs_e_config.height = storyjs_e_config.height - 16;
te.style.height = storyjs_e_config.height + "px"
} else {
embed_classname += " sized-embed";
storyjs_e_config.height = storyjs_e_config.height - 16;
te.style.height = storyjs_e_config.height + "px"
}
te.setAttribute("class", embed_classname);
te.setAttribute("className", embed_classname);
t.style.position = "relative"
}
function buildEmbed() {
VMM.debug = storyjs_e_config.debug;
storyjs_embedjs = new VMM.Timeline(storyjs_e_config.id);
storyjs_embedjs.init(storyjs_e_config);
if (isCDN) {
VMM.bindEvent(global, onHeadline, "HEADLINE")
}
}
}