jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
NO
<div id="test"></div>
if (typeof jwplayer == "undefined") {
var jwplayer = function(a) {
if (jwplayer.api) {
return jwplayer.api.selectPlayer(a)
}
};
var $jw = jwplayer;
jwplayer.version = "5.7.1896";
jwplayer.vid = document.createElement("video");
jwplayer.audio = document.createElement("audio");
jwplayer.source = document.createElement("source");
(function(b) {
b.utils = function() {};
b.utils.typeOf = function(d) {
var c = typeof d;
if (c === "object") {
if (d) {
if (d instanceof Array) {
c = "array"
}
} else {
c = "null"
}
}
return c
};
b.utils.extend = function() {
var c = b.utils.extend["arguments"];
if (c.length > 1) {
for (var e = 1; e < c.length; e++) {
for (var d in c[e]) {
c[0][d] = c[e][d]
}
}
return c[0]
}
return null
};
b.utils.clone = function(f) {
var c;
var d = b.utils.clone["arguments"];
if (d.length == 1) {
switch (b.utils.typeOf(d[0])) {
case "object":
c = {};
for (var e in d[0]) {
c[e] = b.utils.clone(d[0][e])
}
break;
case "array":
c = [];
for (var e in d[0]) {
c[e] = b.utils.clone(d[0][e])
}
break;
default:
return d[0];
break
}
}
return c
};
b.utils.extension = function(c) {
if (!c) {
return ""
}
c = c.substring(c.lastIndexOf("/") + 1, c.length);
c = c.split("?")[0];
if (c.lastIndexOf(".") > -1) {
return c.substr(c.lastIndexOf(".") + 1, c.length).toLowerCase()
}
return
};
b.utils.html = function(c, d) {
c.innerHTML = d
};
b.utils.wrap = function(c, d) {
if (c.parentNode) {
c.parentNode.replaceChild(d, c)
}
d.appendChild(c)
};
b.utils.ajax = function(g, f, c) {
var e;
if (window.XMLHttpRequest) {
e = new XMLHttpRequest()
} else {
e = new ActiveXObject("Microsoft.XMLHTTP")
}
e.onreadystatechange = function() {
if (e.readyState === 4) {
if (e.status === 200) {
if (f) {
f(e)
}
} else {
if (c) {
c(g)
}
}
}
};
try {
e.open("GET", g, true);
e.send(null)
} catch (d) {
if (c) {
c(g)
}
}
return e
};
b.utils.load = function(d, e, c) {
d.onreadystatechange = function() {
if (d.readyState === 4) {
if (d.status === 200) {
if (e) {
e()
}
} else {
if (c) {
c()
}
}
}
}
};
b.utils.find = function(d, c) {
return d.getElementsByTagName(c)
};
b.utils.append = function(c, d) {
c.appendChild(d)
};
b.utils.isIE = function() {
return ((!+"\v1") || (typeof window.ActiveXObject != "undefined"))
};
b.utils.isLegacyAndroid = function() {
var c = navigator.userAgent.toLowerCase();
return (c.match(/android 2.[012]/i) !== null)
};
b.utils.isIOS = function(d) {
if (typeof d == "undefined") {
d = /iP(hone|ad|od)/i
}
var c = navigator.userAgent.toLowerCase();
return (c.match(d) !== null)
};
b.utils.isIPad = function() {
return b.utils.isIOS(/iPad/i)
};
b.utils.isIPod = function() {
return b.utils.isIOS(/iP(hone|od)/i)
};
b.utils.getFirstPlaylistItemFromConfig = function(c) {
var d = {};
var e;
if (c.playlist && c.playlist.length) {
e = c.playlist[0]
} else {
e = c
}
d.file = e.file;
d.levels = e.levels;
d.streamer = e.streamer;
d.playlistfile = e.playlistfile;
d.provider = e.provider;
if (!d.provider) {
if (d.file && (d.file.toLowerCase().indexOf("youtube.com") > -1 || d.file.toLowerCase().indexOf("youtu.be") > -1)) {
d.provider = "youtube"
}
if (d.streamer && d.streamer.toLowerCase().indexOf("rtmp://") == 0) {
d.provider = "rtmp"
}
if (e.type) {
d.provider = e.type.toLowerCase()
}
}
if (d.provider == "audio") {
d.provider = "sound"
}
return d
};
b.utils.getOuterHTML = function(c) {
if (c.outerHTML) {
return c.outerHTML
} else {
try {
return new XMLSerializer().serializeToString(c)
} catch (d) {
return ""
}
}
};
b.utils.setOuterHTML = function(f, e) {
if (f.outerHTML) {
f.outerHTML = e
} else {
var g = document.createElement("div");
g.innerHTML = e;
var c = document.createRange();
c.selectNodeContents(g);
var d = c.extractContents();
f.parentNode.insertBefore(d, f);
f.parentNode.removeChild(f)
}
};
b.utils.hasFlash = function() {
if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] != "undefined") {
return true
}
if (typeof window.ActiveXObject != "undefined") {
try {
new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
return true
} catch (c) {}
}
return false
};
b.utils.getPluginName = function(c) {
if (c.lastIndexOf("/") >= 0) {
c = c.substring(c.lastIndexOf("/") + 1, c.length)
}
if (c.lastIndexOf("-") >= 0) {
c = c.substring(0, c.lastIndexOf("-"))
}
if (c.lastIndexOf(".swf") >= 0) {
c = c.substring(0, c.lastIndexOf(".swf"))
}
if (c.lastIndexOf(".js") >= 0) {
c = c.substring(0, c.lastIndexOf(".js"))
}
return c
};
b.utils.getPluginVersion = function(c) {
if (c.lastIndexOf("-") >= 0) {
if (c.lastIndexOf(".js") >= 0) {
return c.substring(c.lastIndexOf("-") + 1, c.lastIndexOf(".js"))
} else {
if (c.lastIndexOf(".swf") >= 0) {
return c.substring(c.lastIndexOf("-") + 1, c.lastIndexOf(".swf"))
} else {
return c.substring(c.lastIndexOf("-") + 1)
}
}
}
return ""
};
b.utils.getAbsolutePath = function(j, h) {
if (!b.utils.exists(h)) {
h = document.location.href
}
if (!b.utils.exists(j)) {
return undefined
}
if (a(j)) {
return j
}
var k = h.substring(0, h.indexOf("://") + 3);
var g = h.substring(k.length, h.indexOf("/", k.length + 1));
var d;
if (j.indexOf("/") === 0) {
d = j.split("/")
} else {
var e = h.split("?")[0];
e = e.substring(k.length + g.length + 1, e.lastIndexOf("/"));
d = e.split("/").concat(j.split("/"))
}
var c = [];
for (var f = 0; f < d.length; f++) {
if (!d[f] || !b.utils.exists(d[f]) || d[f] == ".") {
continue
} else {
if (d[f] == "..") {
c.pop()
} else {
c.push(d[f])
}
}
}
return k + g + "/" + c.join("/")
};
function a(d) {
if (!b.utils.exists(d)) {
return
}
var e = d.indexOf("://");
var c = d.indexOf("?");
return (e > 0 && (c < 0 || (c > e)))
}
b.utils.pluginPathType = {
ABSOLUTE: "ABSOLUTE",
RELATIVE: "RELATIVE",
CDN: "CDN"
};
b.utils.getPluginPathType = function(d) {
if (typeof d != "string") {
return
}
d = d.split("?")[0];
var e = d.indexOf("://");
if (e > 0) {
return b.utils.pluginPathType.ABSOLUTE
}
var c = d.indexOf("/");
var f = b.utils.extension(d);
if (e < 0 && c < 0 && (!f || !isNaN(f))) {
return b.utils.pluginPathType.CDN
}
return b.utils.pluginPathType.RELATIVE
};
b.utils.mapEmpty = function(c) {
for (var d in c) {
return false
}
return true
};
b.utils.mapLength = function(d) {
var c = 0;
for (var e in d) {
c++
}
return c
};
b.utils.log = function(d, c) {
if (typeof console != "undefined" && typeof console.log != "undefined") {
if (c) {
console.log(d, c)
} else {
console.log(d)
}
}
};
b.utils.css = function(d, g, c) {
if (b.utils.exists(d)) {
for (var e in g) {
try {
if (typeof g[e] === "undefined") {
continue
} else {
if (typeof g[e] == "number" && !(e == "zIndex" || e == "opacity")) {
if (isNaN(g[e])) {
continue
}
if (e.match(/color/i)) {
g[e] = "#" + b.utils.strings.pad(g[e].toString(16), 6)
} else {
g[e] = Math.ceil(g[e]) + "px"
}
}
}
d.style[e] = g[e]
} catch (f) {}
}
}
};
b.utils.isYouTube = function(c) {
return (c.indexOf("youtube.com") > -1 || c.indexOf("youtu.be") > -1)
};
b.utils.transform = function(c, d) {
c.style.webkitTransform = d;
c.style.MozTransform = d;
c.style.OTransform = d
};
b.utils.stretch = function(h, n, m, f, l, g) {
if (typeof m == "undefined" || typeof f == "undefined" || typeof l == "undefined" || typeof g == "undefined") {
return
}
var d = m / l;
var e = f / g;
var k = 0;
var j = 0;
n.style.overflow = "hidden";
b.utils.transform(n, "");
var c = {};
switch (h.toUpperCase()) {
case b.utils.stretching.NONE:
c.width = l;
c.height = g;
break;
case b.utils.stretching.UNIFORM:
if (d > e) {
c.width = l * e;
c.height = g * e
} else {
c.width = l * d;
c.height = g * d
}
break;
case b.utils.stretching.FILL:
if (d > e) {
c.width = l * d;
c.height = g * d
} else {
c.width = l * e;
c.height = g * e
}
break;
case b.utils.stretching.EXACTFIT:
b.utils.transform(n, ["scale(", d, ",", e, ")", " translate(0px,0px)"].join(""));
c.width = l;
c.height = g;
break;
default:
break
}
c.top = (f - c.height) / 2;
c.left = (m - c.width) / 2;
b.utils.css(n, c)
};
b.utils.stretching = {
NONE: "NONE",
FILL: "FILL",
UNIFORM: "UNIFORM",
EXACTFIT: "EXACTFIT"
};
b.utils.deepReplaceKeyName = function(h, e, c) {
switch (b.utils.typeOf(h)) {
case "array":
for (var g = 0; g < h.length; g++) {
h[g] = b.utils.deepReplaceKeyName(h[g], e, c)
}
break;
case "object":
for (var f in h) {
var d = f.replace(new RegExp(e, "g"), c);
h[d] = b.utils.deepReplaceKeyName(h[f], e, c);
if (f != d) {
delete h[f]
}
}
break
}
return h
};
b.utils.isInArray = function(e, d) {
if (!(e) || !(e instanceof Array)) {
return false
}
for (var c = 0; c < e.length; c++) {
if (d === e[c]) {
return true
}
}
return false
};
b.utils.exists = function(c) {
switch (typeof(c)) {
case "string":
return (c.length > 0);
break;
case "object":
return (c !== null);
case "undefined":
return false
}
return true
};
b.utils.empty = function(c) {
if (typeof c.hasChildNodes == "function") {
while (c.hasChildNodes()) {
c.removeChild(c.firstChild)
}
}
};
b.utils.parseDimension = function(c) {
if (typeof c == "string") {
if (c === "") {
return 0
} else {
if (c.lastIndexOf("%") > -1) {
return c
} else {
return parseInt(c.replace("px", ""), 10)
}
}
}
return c
};
b.utils.getDimensions = function(c) {
if (c && c.style) {
return {
x: b.utils.parseDimension(c.style.left),
y: b.utils.parseDimension(c.style.top),
width: b.utils.parseDimension(c.style.width),
height: b.utils.parseDimension(c.style.height)
}
} else {
return {}
}
};
b.utils.timeFormat = function(c) {
str = "00:00";
if (c > 0) {
str = Math.floor(c / 60) < 10 ? "0" + Math.floor(c / 60) + ":" : Math.floor(c / 60) + ":";
str += Math.floor(c % 60) < 10 ? "0" + Math.floor(c % 60) : Math.floor(c % 60)
}
return str
}
})(jwplayer);
(function(a) {
a.events = function() {};
a.events.COMPLETE = "COMPLETE";
a.events.ERROR = "ERROR"
})(jwplayer);
(function(jwplayer) {
jwplayer.events.eventdispatcher = function(debug) {
var _debug = debug;
var _listeners;
var _globallisteners;
this.resetEventListeners = function() {
_listeners = {};
_globallisteners = []
};
this.resetEventListeners();
this.addEventListener = function(type, listener, count) {
try {
if (!jwplayer.utils.exists(_listeners[type])) {
_listeners[type] = []
}
if (typeof(listener) == "string") {
eval("listener = " + listener)
}
_listeners[type].push({
listener: listener,
count: count
})
} catch (err) {
jwplayer.utils.log("error", err)
}
return false
};
this.removeEventListener = function(type, listener) {
if (!_listeners[type]) {
return
}
try {
for (var listenerIndex = 0; listenerIndex < _listeners[type].length; listenerIndex++) {
if (_listeners[type][listenerIndex].listener.toString() == listener.toString()) {
_listeners[type].splice(listenerIndex, 1);
break
}
}
} catch (err) {
jwplayer.utils.log("error", err)
}
return false
};
this.addGlobalListener = function(listener, count) {
try {
if (typeof(listener) == "string") {
eval("listener = " + listener)
}
_globallisteners.push({
listener: listener,
count: count
})
} catch (err) {
jwplayer.utils.log("error", err)
}
return false
};
this.removeGlobalListener = function(listener) {
if (!_globallisteners[type]) {
return
}
try {
for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) {
if (_globallisteners[globalListenerIndex].listener.toString() == listener.toString()) {
_globallisteners.splice(globalListenerIndex, 1);
break
}
}
} catch (err) {
jwplayer.utils.log("error", err)
}
return false
};
this.sendEvent = function(type, data) {
if (!jwplayer.utils.exists(data)) {
data = {}
}
if (_debug) {
jwplayer.utils.log(type, data)
}
if (typeof _listeners[type] != "undefined") {
for (var listenerIndex = 0; listenerIndex < _listeners[type].length; listenerIndex++) {
try {
_listeners[type][listenerIndex].listener(data)
} catch (err) {
jwplayer.utils.log("There was an error while handling a listener: " + err.toString(), _listeners[type][listenerIndex].listener)
}
if (_listeners[type][listenerIndex]) {
if (_listeners[type][listenerIndex].count === 1) {
delete _listeners[type][listenerIndex]
} else {
if (_listeners[type][listenerIndex].count > 0) {
_listeners[type][listenerIndex].count = _listeners[type][listenerIndex].count - 1
}
}
}
}
}
for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) {
try {
_globallisteners[globalListenerIndex].listener(data)
} catch (err) {
jwplayer.utils.log("There was an error while handling a listener: " + err.toString(), _globallisteners[globalListenerIndex].listener)
}
if (_globallisteners[globalListenerIndex]) {
if (_globallisteners[globalListenerIndex].count === 1) {
delete _globallisteners[globalListenerIndex]
} else {
if (_globallisteners[globalListenerIndex].count > 0) {
_globallisteners[globalListenerIndex].count = _globallisteners[globalListenerIndex].count - 1
}
}
}
}
}
}
})(jwplayer);
(function(a) {
var b = {};
a.utils.animations = function() {};
a.utils.animations.transform = function(c, d) {
c.style.webkitTransform = d;
c.style.MozTransform = d;
c.style.OTransform = d;
c.style.msTransform = d
};
a.utils.animations.transformOrigin = function(c, d) {
c.style.webkitTransformOrigin = d;
c.style.MozTransformOrigin = d;
c.style.OTransformOrigin = d;
c.style.msTransformOrigin = d
};
a.utils.animations.rotate = function(c, d) {
a.utils.animations.transform(c, ["rotate(", d, "deg)"].join(""))
};
a.utils.cancelAnimation = function(c) {
delete b[c.id]
};
a.utils.fadeTo = function(m, f, e, j, h, d) {
if (b[m.id] != d && a.utils.exists(d)) {
return
}
if (m.style.opacity == f) {
return
}
var c = new Date().getTime();
if (d > c) {
setTimeout(function() {
a.utils.fadeTo(m, f, e, j, 0, d)
}, d - c)
}
if (m.style.display == "none") {
m.style.display = "block"
}
if (!a.utils.exists(j)) {
j = m.style.opacity === "" ? 1 : m.style.opacity
}
if (m.style.opacity == f && m.style.opacity !== "" && a.utils.exists(d)) {
if (f === 0) {
m.style.display = "none"
}
return
}
if (!a.utils.exists(d)) {
d = c;
b[m.id] = d
}
if (!a.utils.exists(h)) {
h = 0
}
var k = (e > 0) ? ((c - d) / (e * 1000)) : 0;
k = k > 1 ? 1 : k;
var l = f - j;
var g = j + (k * l);
if (g > 1) {
g = 1
} else {
if (g < 0) {
g = 0
}
}
m.style.opacity = g;
if (h > 0) {
b[m.id] = d + h * 1000;
a.utils.fadeTo(m, f, e, j, 0, b[m.id]);
return
}
setTimeout(function() {
a.utils.fadeTo(m, f, e, j, 0, d)
}, 10)
}
})(jwplayer);
(function(a) {
a.utils.arrays = function() {};
a.utils.arrays.indexOf = function(c, d) {
for (var b = 0; b < c.length; b++) {
if (c[b] == d) {
return b
}
}
return -1
};
a.utils.arrays.remove = function(c, d) {
var b = a.utils.arrays.indexOf(c, d);
if (b > -1) {
c.splice(b, 1)
}
}
})(jwplayer);
(function(a) {
a.utils.extensionmap = {
"3gp": {
html5: "video/3gpp",
flash: "video"
},
"3gpp": {
html5: "video/3gpp"
},
"3g2": {
html5: "video/3gpp2",
flash: "video"
},
"3gpp2": {
html5: "video/3gpp2"
},
flv: {
flash: "video"
},
f4a: {
html5: "audio/mp4"
},
f4b: {
html5: "audio/mp4",
flash: "video"
},
f4v: {
html5: "video/mp4",
flash: "video"
},
mov: {
html5: "video/quicktime",
flash: "video"
},
m4a: {
html5: "audio/mp4",
flash: "video"
},
m4b: {
html5: "audio/mp4"
},
m4p: {
html5: "audio/mp4"
},
m4v: {
html5: "video/mp4",
flash: "video"
},
mp4: {
html5: "video/mp4",
flash: "video"
},
rbs: {
flash: "sound"
},
aac: {
html5: "audio/aac",
flash: "video"
},
mp3: {
html5: "audio/mp3",
flash: "sound"
},
ogg: {
html5: "audio/ogg"
},
oga: {
html5: "audio/ogg"
},
ogv: {
html5: "video/ogg"
},
webm: {
html5: "video/webm"
},
m3u8: {
html5: "audio/x-mpegurl"
},
gif: {
flash: "image"
},
jpeg: {
flash: "image"
},
jpg: {
flash: "image"
},
swf: {
flash: "image"
},
png: {
flash: "image"
},
wav: {
html5: "audio/x-wav"
}
}
})(jwplayer);
(function(e) {
e.utils.mediaparser = function() {};
var g = {
element: {
width: "width",
height: "height",
id: "id",
"class": "className",
name: "name"
},
media: {
src: "file",
preload: "preload",
autoplay: "autostart",
loop: "repeat",
controls: "controls"
},
source: {
src: "file",
type: "type",
media: "media",
"data-jw-width": "width",
"data-jw-bitrate": "bitrate"
},
video: {
poster: "image"
}
};
var f = {};
e.utils.mediaparser.parseMedia = function(j) {
return d(j)
};
function c(k, j) {
if (!e.utils.exists(j)) {
j = g[k]
} else {
e.utils.extend(j, g[k])
}
return j
}
function d(n, j) {
if (f[n.tagName.toLowerCase()] && !e.utils.exists(j)) {
return f[n.tagName.toLowerCase()](n)
} else {
j = c("element", j);
var o = {};
for (var k in j) {
if (k != "length") {
var m = n.getAttribute(k);
if (e.utils.exists(m)) {
o[j[k]] = m
}
}
}
var l = n.style["#background-color"];
if (l && !(l == "transparent" || l == "rgba(0, 0, 0, 0)")) {
o.screencolor = l
}
return o
}
}
function h(n, k) {
k = c("media", k);
var l = [];
var j = e.utils.selectors("source", n);
for (var m in j) {
if (!isNaN(m)) {
l.push(a(j[m]))
}
}
var o = d(n, k);
if (e.utils.exists(o.file)) {
l[0] = {
file: o.file
}
}
o.levels = l;
return o
}
function a(l, k) {
k = c("source", k);
var j = d(l, k);
j.width = j.width ? j.width : 0;
j.bitrate = j.bitrate ? j.bitrate : 0;
return j
}
function b(l, k) {
k = c("video", k);
var j = h(l, k);
return j
}
f.media = h;
f.audio = h;
f.source = a;
f.video = b
})(jwplayer);
(function(a) {
a.utils.loaderstatus = {
NEW: "NEW",
LOADING: "LOADING",
ERROR: "ERROR",
COMPLETE: "COMPLETE"
};
a.utils.scriptloader = function(c) {
var d = a.utils.loaderstatus.NEW;
var b = new a.events.eventdispatcher();
a.utils.extend(this, b);
this.load = function() {
if (d == a.utils.loaderstatus.NEW) {
d = a.utils.loaderstatus.LOADING;
var e = document.createElement("script");
e.onload = function(f) {
d = a.utils.loaderstatus.COMPLETE;
b.sendEvent(a.events.COMPLETE)
};
e.onerror = function(f) {
d = a.utils.loaderstatus.ERROR;
b.sendEvent(a.events.ERROR)
};
e.onreadystatechange = function() {
if (e.readyState == "loaded" || e.readyState == "complete") {
d = a.utils.loaderstatus.COMPLETE;
b.sendEvent(a.events.COMPLETE)
}
};
document.getElementsByTagName("head")[0].appendChild(e);
e.src = c
}
};
this.getStatus = function() {
return d
}
}
})(jwplayer);
(function(a) {
a.utils.selectors = function(b, e) {
if (!a.utils.exists(e)) {
e = document
}
b = a.utils.strings.trim(b);
var c = b.charAt(0);
if (c == "#") {
return e.getElementById(b.substr(1))
} else {
if (c == ".") {
if (e.getElementsByClassName) {
return e.getElementsByClassName(b.substr(1))
} else {
return a.utils.selectors.getElementsByTagAndClass("*", b.substr(1))
}
} else {
if (b.indexOf(".") > 0) {
var d = b.split(".");
return a.utils.selectors.getElementsByTagAndClass(d[0], d[1])
} else {
return e.getElementsByTagName(b)
}
}
}
return null
};
a.utils.selectors.getElementsByTagAndClass = function(e, h, g) {
var j = [];
if (!a.utils.exists(g)) {
g = document
}
var f = g.getElementsByTagName(e);
for (var d = 0; d < f.length; d++) {
if (a.utils.exists(f[d].className)) {
var c = f[d].className.split(" ");
for (var b = 0; b < c.length; b++) {
if (c[b] == h) {
j.push(f[d])
}
}
}
}
return j
}
})(jwplayer);
(function(a) {
a.utils.strings = function() {};
a.utils.strings.trim = function(b) {
return b.replace(/^\s*/, "").replace(/\s*$/, "")
};
a.utils.strings.pad = function(c, d, b) {
if (!b) {
b = "0"
}
while (c.length < d) {
c = b + c
}
return c
};
a.utils.strings.serialize = function(b) {
if (b == null) {
return null
} else {
if (b == "true") {
return true
} else {
if (b == "false") {
return false
} else {
if (isNaN(Number(b)) || b.length > 5 || b.length == 0) {
return b
} else {
return Number(b)
}
}
}
}
};
a.utils.strings.seconds = function(d) {
d = d.replace(",", ".");
var b = d.split(":");
var c = 0;
if (d.substr(-1) == "s") {
c = Number(d.substr(0, d.length - 1))
} else {
if (d.substr(-1) == "m") {
c = Number(d.substr(0, d.length - 1)) * 60
} else {
if (d.substr(-1) == "h") {
c = Number(d.substr(0, d.length - 1)) * 3600
} else {
if (b.length > 1) {
c = Number(b[b.length - 1]);
c += Number(b[b.length - 2]) * 60;
if (b.length == 3) {
c += Number(b[b.length - 3]) * 3600
}
} else {
c = Number(d)
}
}
}
}
return c
};
a.utils.strings.xmlAttribute = function(b, c) {
for (var d = 0; d < b.attributes.length; d++) {
if (b.attributes[d].name && b.attributes[d].name.toLowerCase() == c.toLowerCase()) {
return b.attributes[d].value.toString()
}
}
return ""
};
a.utils.strings.jsonToString = function(f) {
var h = h || {};
if (h && h.stringify) {
return h.stringify(f)
}
var c = typeof(f);
if (c != "object" || f === null) {
if (c == "string") {
f = '"' + f + '"'
} else {
return String(f)
}
} else {
var g = [],
b = (f && f.constructor == Array);
for (var d in f) {
var e = f[d];
switch (typeof(e)) {
case "string":
e = '"' + e + '"';
break;
case "object":
if (a.utils.exists(e)) {
e = a.utils.strings.jsonToString(e)
}
break
}
if (b) {
if (typeof(e) != "function") {
g.push(String(e))
}
} else {
if (typeof(e) != "function") {
g.push('"' + d + '":' + String(e))
}
}
}
if (b) {
return "[" + String(g) + "]"
} else {
return "{" + String(g) + "}"
}
}
}
})(jwplayer);
(function(c) {
var d = new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);
c.utils.typechecker = function(g, f) {
f = !c.utils.exists(f) ? b(g) : f;
return e(g, f)
};
function b(f) {
var g = ["true", "false", "t", "f"];
if (g.toString().indexOf(f.toLowerCase().replace(" ", "")) >= 0) {
return "boolean"
} else {
if (d.test(f)) {
return "color"
} else {
if (!isNaN(parseInt(f, 10)) && parseInt(f, 10).toString().length == f.length) {
return "integer"
} else {
if (!isNaN(parseFloat(f)) && parseFloat(f).toString().length == f.length) {
return "float"
}
}
}
}
return "string"
}
function e(g, f) {
if (!c.utils.exists(f)) {
return g
}
switch (f) {
case "color":
if (g.length > 0) {
return a(g)
}
return null;
case "integer":
return parseInt(g, 10);
case "float":
return parseFloat(g);
case "boolean":
if (g.toLowerCase() == "true") {
return true
} else {
if (g == "1") {
return true
}
}
return false
}
return g
}
function a(f) {
switch (f.toLowerCase()) {
case "blue":
return parseInt("0000FF", 16);
case "green":
return parseInt("00FF00", 16);
case "red":
return parseInt("FF0000", 16);
case "cyan":
return parseInt("00FFFF", 16);
case "magenta":
return parseInt("FF00FF", 16);
case "yellow":
return parseInt("FFFF00", 16);
case "black":
return parseInt("000000", 16);
case "white":
return parseInt("FFFFFF", 16);
default:
f = f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi, "$2");
if (f.length == 3) {
f = f.charAt(0) + f.charAt(0) + f.charAt(1) + f.charAt(1) + f.charAt(2) + f.charAt(2)
}
return parseInt(f, 16)
}
return parseInt("000000", 16)
}
})(jwplayer);
(function(a) {
a.utils.parsers = function() {};
a.utils.parsers.localName = function(b) {
if (!b) {
return ""
} else {
if (b.localName) {
return b.localName
} else {
if (b.baseName) {
return b.baseName
} else {
return ""
}
}
}
};
a.utils.parsers.textContent = function(b) {
if (!b) {
return ""
} else {
if (b.textContent) {
return b.textContent
} else {
if (b.text) {
return b.text
} else {
return ""
}
}
}
}
})(jwplayer);
(function(a) {
a.utils.parsers.jwparser = function() {};
a.utils.parsers.jwparser.PREFIX = "jwplayer";
a.utils.parsers.jwparser.parseEntry = function(c, d) {
for (var b = 0; b < c.childNodes.length; b++) {
if (c.childNodes[b].prefix == a.utils.parsers.jwparser.PREFIX) {
d[a.utils.parsers.localName(c.childNodes[b])] = a.utils.strings.serialize(a.utils.parsers.textContent(c.childNodes[b]))
}
if (!d.file && String(d.link).toLowerCase().indexOf("youtube") > -1) {
d.file = d.link
}
}
return d
};
a.utils.parsers.jwparser.getProvider = function(c) {
if (c.type) {
return c.type
} else {
if (c.file.indexOf("youtube.com/w") > -1 || c.file.indexOf("youtube.com/v") > -1 || c.file.indexOf("youtu.be/") > -1) {
return "youtube"
} else {
if (c.streamer && c.streamer.indexOf("rtmp") == 0) {
return "rtmp"
} else {
if (c.streamer && c.streamer.indexOf("http") == 0) {
return "http"
} else {
var b = a.utils.strings.extension(c.file);
if (extensions.hasOwnProperty(b)) {
return extensions[b]
}
}
}
}
}
return ""
}
})(jwplayer);
(function(a) {
a.utils.parsers.mediaparser = function() {};
a.utils.parsers.mediaparser.PREFIX = "media";
a.utils.parsers.mediaparser.parseGroup = function(d, f) {
var e = false;
for (var c = 0; c < d.childNodes.length; c++) {
if (d.childNodes[c].prefix == a.utils.parsers.mediaparser.PREFIX) {
if (!a.utils.parsers.localName(d.childNodes[c])) {
continue
}
switch (a.utils.parsers.localName(d.childNodes[c]).toLowerCase()) {
case "content":
if (!e) {
f.file = a.utils.strings.xmlAttribute(d.childNodes[c], "url")
}
if (a.utils.strings.xmlAttribute(d.childNodes[c], "duration")) {
f.duration = a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c], "duration"))
}
if (a.utils.strings.xmlAttribute(d.childNodes[c], "start")) {
f.start = a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c], "start"))
}
if (d.childNodes[c].childNodes && d.childNodes[c].childNodes.length > 0) {
f = a.utils.parsers.mediaparser.parseGroup(d.childNodes[c], f)
}
if (a.utils.strings.xmlAttribute(d.childNodes[c], "width") || a.utils.strings.xmlAttribute(d.childNodes[c], "bitrate") || a.utils.strings.xmlAttribute(d.childNodes[c], "url")) {
if (!f.levels) {
f.levels = []
}
f.levels.push({
width: a.utils.strings.xmlAttribute(d.childNodes[c], "width"),
bitrate: a.utils.strings.xmlAttribute(d.childNodes[c], "bitrate"),
file: a.utils.strings.xmlAttribute(d.childNodes[c], "url")
})
}
break;
case "title":
f.title = a.utils.parsers.textContent(d.childNodes[c]);
break;
case "description":
f.description = a.utils.parsers.textContent(d.childNodes[c]);
break;
case "keywords":
f.tags = a.utils.parsers.textContent(d.childNodes[c]);
break;
case "thumbnail":
f.image = a.utils.strings.xmlAttribute(d.childNodes[c], "url");
break;
case "credit":
f.author = a.utils.parsers.textContent(d.childNodes[c]);
break;
case "player":
var b = d.childNodes[c].url;
if (b.indexOf("youtube.com") >= 0 || b.indexOf("youtu.be") >= 0) {
e = true;
f.file = a.utils.strings.xmlAttribute(d.childNodes[c], "url")
}
break;
case "group":
a.utils.parsers.mediaparser.parseGroup(d.childNodes[c], f);
break
}
}
}
return f
}
})(jwplayer);
(function(b) {
b.utils.parsers.rssparser = function() {};
b.utils.parsers.rssparser.parse = function(f) {
var c = [];
for (var e = 0; e < f.childNodes.length; e++) {
if (b.utils.parsers.localName(f.childNodes[e]).toLowerCase() == "channel") {
for (var d = 0; d < f.childNodes[e].childNodes.length; d++) {
if (b.utils.parsers.localName(f.childNodes[e].childNodes[d]).toLowerCase() == "item") {
c.push(a(f.childNodes[e].childNodes[d]))
}
}
}
}
return c
};
function a(d) {
var e = {};
for (var c = 0; c < d.childNodes.length; c++) {
if (!b.utils.parsers.localName(d.childNodes[c])) {
continue
}
switch (b.utils.parsers.localName(d.childNodes[c]).toLowerCase()) {
case "enclosure":
e.file = b.utils.strings.xmlAttribute(d.childNodes[c], "url");
break;
case "title":
e.title = b.utils.parsers.textContent(d.childNodes[c]);
break;
case "pubdate":
e.date = b.utils.parsers.textContent(d.childNodes[c]);
break;
case "description":
e.description = b.utils.parsers.textContent(d.childNodes[c]);
break;
case "link":
e.link = b.utils.parsers.textContent(d.childNodes[c]);
break;
case "category":
if (e.tags) {
e.tags += b.utils.parsers.textContent(d.childNodes[c])
} else {
e.tags = b.utils.parsers.textContent(d.childNodes[c])
}
break
}
}
e = b.utils.parsers.mediaparser.parseGroup(d, e);
e = b.utils.parsers.jwparser.parseEntry(d, e);
return new b.html5.playlistitem(e)
}
})(jwplayer);
(function(a) {
var c = {};
var b = {};
a.plugins = function() {};
a.plugins.loadPlugins = function(e, d) {
b[e] = new a.plugins.pluginloader(new a.plugins.model(c), d);
return b[e]
};
a.plugins.registerPlugin = function(h, f, e) {
var d = a.utils.getPluginName(h);
if (c[d]) {
c[d].registerPlugin(h, f, e)
} else {
a.utils.log("A plugin (" + h + ") was registered with the player that was not loaded. Please check your configuration.");
for (var g in b) {
b[g].pluginFailed()
}
}
}
})(jwplayer);
(function(a) {
a.plugins.model = function(b) {
this.addPlugin = function(c) {
var d = a.utils.getPluginName(c);
if (!b[d]) {
b[d] = new a.plugins.plugin(c)
}
return b[d]
}
}
})(jwplayer);
(function(a) {
a.plugins.pluginmodes = {
FLASH: "FLASH",
JAVASCRIPT: "JAVASCRIPT",
HYBRID: "HYBRID"
};
a.plugins.plugin = function(b) {
var d = "http://plugins.longtailvideo.com";
var j = a.utils.loaderstatus.NEW;
var k;
var h;
var l;
var c = new a.events.eventdispatcher();
a.utils.extend(this, c);
function e() {
switch (a.utils.getPluginPathType(b)) {
case a.utils.pluginPathType.ABSOLUTE:
return b;
case a.utils.pluginPathType.RELATIVE:
return a.utils.getAbsolutePath(b, window.location.href);
case a.utils.pluginPathType.CDN:
var n = a.utils.getPluginName(b);
var m = a.utils.getPluginVersion(b);
return d + "/" + a.version.split(".")[0] + "/" + n + "/" + n + (m !== "" ? ("-" + m) : "") + ".js"
}
}
function g(m) {
l = setTimeout(function() {
j = a.utils.loaderstatus.COMPLETE;
c.sendEvent(a.events.COMPLETE)
}, 1000)
}
function f(m) {
j = a.utils.loaderstatus.ERROR;
c.sendEvent(a.events.ERROR)
}
this.load = function() {
if (j == a.utils.loaderstatus.NEW) {
if (b.lastIndexOf(".swf") > 0) {
k = b;
j = a.utils.loaderstatus.COMPLETE;
c.sendEvent(a.events.COMPLETE);
return
}
j = a.utils.loaderstatus.LOADING;
var m = new a.utils.scriptloader(e());
m.addEventListener(a.events.COMPLETE, g);
m.addEventListener(a.events.ERROR, f);
m.load()
}
};
this.registerPlugin = function(o, n, m) {
if (l) {
clearTimeout(l);
l = undefined
}
if (n && m) {
k = m;
h = n
} else {
if (typeof n == "string") {
k = n
} else {
if (typeof n == "function") {
h = n
} else {
if (!n && !m) {
k = o
}
}
}
}
j = a.utils.loaderstatus.COMPLETE;
c.sendEvent(a.events.COMPLETE)
};
this.getStatus = function() {
return j
};
this.getPluginName = function() {
return a.utils.getPluginName(b)
};
this.getFlashPath = function() {
if (k) {
switch (a.utils.getPluginPathType(k)) {
case a.utils.pluginPathType.ABSOLUTE:
return k;
case a.utils.pluginPathType.RELATIVE:
if (b.lastIndexOf(".swf") > 0) {
return a.utils.getAbsolutePath(k, window.location.href)
}
return a.utils.getAbsolutePath(k, e());
case a.utils.pluginPathType.CDN:
if (k.indexOf("-") > -1) {
return k + "h"
}
return k + "-h"
}
}
return null
};
this.getJS = function() {
return h
};
this.getPluginmode = function() {
if (typeof k != "undefined" && typeof h != "undefined") {
return a.plugins.pluginmodes.HYBRID
} else {
if (typeof k != "undefined") {
return a.plugins.pluginmodes.FLASH
} else {
if (typeof h != "undefined") {
return a.plugins.pluginmodes.JAVASCRIPT
}
}
}
};
this.getNewInstance = function(n, m, o) {
return new h(n, m, o)
};
this.getURL = function() {
return b
}
}
})(jwplayer);
(function(a) {
a.plugins.pluginloader = function(h, e) {
var g = {};
var k = a.utils.loaderstatus.NEW;
var d = false;
var b = false;
var c = new a.events.eventdispatcher();
a.utils.extend(this, c);
function f() {
if (!b) {
b = true;
k = a.utils.loaderstatus.COMPLETE;
c.sendEvent(a.events.COMPLETE)
}
}
function j() {
if (!b) {
var m = 0;
for (plugin in g) {
var l = g[plugin].getStatus();
if (l == a.utils.loaderstatus.LOADING || l == a.utils.loaderstatus.NEW) {
m++
}
}
if (m == 0) {
f()
}
}
}
this.setupPlugins = function(n, l, s) {
var m = {
length: 0,
plugins: {}
};
var p = {
length: 0,
plugins: {}
};
for (var o in g) {
var q = g[o].getPluginName();
if (g[o].getFlashPath()) {
m.plugins[g[o].getFlashPath()] = l.plugins[o];
m.plugins[g[o].getFlashPath()].pluginmode = g[o].getPluginmode();
m.length++
}
if (g[o].getJS()) {
var r = document.createElement("div");
r.id = n.id + "_" + q;
r.style.position = "absolute";
r.style.zIndex = p.length + 10;
p.plugins[q] = g[o].getNewInstance(n, l.plugins[o], r);
p.length++;
if (typeof p.plugins[q].resize != "undefined") {
n.onReady(s(p.plugins[q], r, true));
n.onResize(s(p.plugins[q], r))
}
}
}
n.plugins = p.plugins;
return m
};
this.load = function() {
k = a.utils.loaderstatus.LOADING;
d = true;
for (var l in e) {
if (a.utils.exists(l)) {
g[l] = h.addPlugin(l);
g[l].addEventListener(a.events.COMPLETE, j);
g[l].addEventListener(a.events.ERROR, j)
}
}
for (l in g) {
g[l].load()
}
d = false;
j()
};
this.pluginFailed = function() {
f()
};
this.getStatus = function() {
return k
}
}
})(jwplayer);
(function(b) {
var a = [];
b.api = function(d) {
this.container = d;
this.id = d.id;
var n = {};
var s = {};
var q = {};
var c = [];
var h = undefined;
var l = false;
var j = [];
var p = b.utils.getOuterHTML(d);
var r = {};
var k = {};
this.getBuffer = function() {
return this.callInternal("jwGetBuffer")
};
this.getContainer = function() {
return this.container
};
function e(u, t) {
return function(z, v, w, x) {
if (u.renderingMode == "flash" || u.renderingMode == "html5") {
var y;
if (v) {
k[z] = v;
y = "jwplayer('" + u.id + "').callback('" + z + "')"
} else {
if (!v && k[z]) {
delete k[z]
}
}
h.jwDockSetButton(z, y, w, x)
}
return t
}
}
this.getPlugin = function(t) {
var v = this;
var u = {};
if (t == "dock") {
return b.utils.extend(u, {
setButton: e(v, u),
show: function() {
v.callInternal("jwDockShow");
return u
},
hide: function() {
v.callInternal("jwDockHide");
return u
},
onShow: function(w) {
v.componentListener("dock", b.api.events.JWPLAYER_COMPONENT_SHOW, w);
return u
},
onHide: function(w) {
v.componentListener("dock", b.api.events.JWPLAYER_COMPONENT_HIDE, w);
return u
}
})
} else {
if (t == "controlbar") {
return b.utils.extend(u, {
show: function() {
v.callInternal("jwControlbarShow");
return u
},
hide: function() {
v.callInternal("jwControlbarHide");
return u
},
onShow: function(w) {
v.componentListener("controlbar", b.api.events.JWPLAYER_COMPONENT_SHOW, w);
return u
},
onHide: function(w) {
v.componentListener("controlbar", b.api.events.JWPLAYER_COMPONENT_HIDE, w);
return u
}
})
} else {
if (t == "display") {
return b.utils.extend(u, {
show: function() {
v.callInternal("jwDisplayShow");
return u
},
hide: function() {
v.callInternal("jwDisplayHide");
return u
},
onShow: function(w) {
v.componentListener("display", b.api.events.JWPLAYER_COMPONENT_SHOW, w);
return u
},
onHide: function(w) {
v.componentListener("display", b.api.events.JWPLAYER_COMPONENT_HIDE, w);
return u
}
})
} else {
return this.plugins[t]
}
}
}
};
this.callback = function(t) {
if (k[t]) {
return k[t]()
}
};
this.getDuration = function() {
return this.callInternal("jwGetDuration")
};
this.getFullscreen = function() {
return this.callInternal("jwGetFullscreen")
};
this.getHeight = function() {
return this.callInternal("jwGetHeight")
};
this.getLockState = function() {
return this.callInternal("jwGetLockState")
};
this.getMeta = function() {
return this.getItemMeta()
};
this.getMute = function() {
return this.callInternal("jwGetMute")
};
this.getPlaylist = function() {
var u = this.callInternal("jwGetPlaylist");
if (this.renderingMode == "flash") {
b.utils.deepReplaceKeyName(u, "__dot__", ".")
}
for (var t = 0; t < u.length; t++) {
if (!b.utils.exists(u[t].index)) {
u[t].index = t
}
}
return u
};
this.getPlaylistItem = function(t) {
if (!b.utils.exists(t)) {
t = this.getCurrentItem()
}
return this.getPlaylist()[t]
};
this.getPosition = function() {
return this.callInternal("jwGetPosition")
};
this.getRenderingMode = function() {
return this.renderingMode
};
this.getState = function() {
return this.callInternal("jwGetState")
};
this.getVolume = function() {
return this.callInternal("jwGetVolume")
};
this.getWidth = function() {
return this.callInternal("jwGetWidth")
};
this.setFullscreen = function(t) {
if (!b.utils.exists(t)) {
this.callInternal("jwSetFullscreen", !this.callInternal("jwGetFullscreen"))
} else {
this.callInternal("jwSetFullscreen", t)
}
return this
};
this.setMute = function(t) {
if (!b.utils.exists(t)) {
this.callInternal("jwSetMute", !this.callInternal("jwGetMute"))
} else {
this.callInternal("jwSetMute", t)
}
return this
};
this.lock = function() {
return this
};
this.unlock = function() {
return this
};
this.load = function(t) {
this.callInternal("jwLoad", t);
return this
};
this.playlistItem = function(t) {
this.callInternal("jwPlaylistItem", t);
return this
};
this.playlistPrev = function() {
this.callInternal("jwPlaylistPrev");
return this
};
this.playlistNext = function() {
this.callInternal("jwPlaylistNext");
return this
};
this.resize = function(u, t) {
if (this.renderingMode == "html5") {
h.jwResize(u, t)
} else {
this.container.width = u;
this.container.height = t
}
return this
};
this.play = function(t) {
if (typeof t == "undefined") {
t = this.getState();
if (t == b.api.events.state.PLAYING || t == b.api.events.state.BUFFERING) {
this.callInternal("jwPause")
} else {
this.callInternal("jwPlay")
}
} else {
this.callInternal("jwPlay", t)
}
return this
};
this.pause = function(t) {
if (typeof t == "undefined") {
t = this.getState();
if (t == b.api.events.state.PLAYING || t == b.api.events.state.BUFFERING) {
this.callInternal("jwPause")
} else {
this.callInternal("jwPlay")
}
} else {
this.callInternal("jwPause", t)
}
return this
};
this.stop = function() {
this.callInternal("jwStop");
return this
};
this.seek = function(t) {
this.callInternal("jwSeek", t);
return this
};
this.setVolume = function(t) {
this.callInternal("jwSetVolume", t);
return this
};
this.onBufferChange = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER, t)
};
this.onBufferFull = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL, t)
};
this.onError = function(t) {
return this.eventListener(b.api.events.JWPLAYER_ERROR, t)
};
this.onFullscreen = function(t) {
return this.eventListener(b.api.events.JWPLAYER_FULLSCREEN, t)
};
this.onMeta = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_META, t)
};
this.onMute = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_MUTE, t)
};
this.onPlaylist = function(t) {
return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_LOADED, t)
};
this.onPlaylistItem = function(t) {
return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM, t)
};
this.onReady = function(t) {
return this.eventListener(b.api.events.API_READY, t)
};
this.onResize = function(t) {
return this.eventListener(b.api.events.JWPLAYER_RESIZE, t)
};
this.onComplete = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE, t)
};
this.onSeek = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_SEEK, t)
};
this.onTime = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_TIME, t)
};
this.onVolume = function(t) {
return this.eventListener(b.api.events.JWPLAYER_MEDIA_VOLUME, t)
};
this.onBuffer = function(t) {
return this.stateListener(b.api.events.state.BUFFERING, t)
};
this.onPause = function(t) {
return this.stateListener(b.api.events.state.PAUSED, t)
};
this.onPlay = function(t) {
return this.stateListener(b.api.events.state.PLAYING, t)
};
this.onIdle = function(t) {
return this.stateListener(b.api.events.state.IDLE, t)
};
this.remove = function() {
n = {};
j = [];
if (b.utils.getOuterHTML(this.container) != p) {
b.api.destroyPlayer(this.id, p)
}
};
this.setup = function(u) {
if (b.embed) {
var t = this.id;
this.remove();
var v = b(t);
v.config = u;
return new b.embed(v)
}
return this
};
this.registerPlugin = function(v, u, t) {
b.plugins.registerPlugin(v, u, t)
};
this.setPlayer = function(t, u) {
h = t;
this.renderingMode = u
};
this.stateListener = function(t, u) {
if (!s[t]) {
s[t] = [];
this.eventListener(b.api.events.JWPLAYER_PLAYER_STATE, g(t))
}
s[t].push(u);
return this
};
function g(t) {
return function(v) {
var u = v.newstate,
x = v.oldstate;
if (u == t) {
var w = s[u];
if (w) {
for (var y = 0; y < w.length; y++) {
if (typeof w[y] == "function") {
w[y].call(this, {
oldstate: x,
newstate: u
})
}
}
}
}
}
}
this.componentListener = function(t, u, v) {
if (!q[t]) {
q[t] = {}
}
if (!q[t][u]) {
q[t][u] = [];
this.eventListener(u, m(t, u))
}
q[t][u].push(v);
return this
};
function m(t, u) {
return function(w) {
if (t == w.component) {
var v = q[t][u];
if (v) {
for (var x = 0; x < v.length; x++) {
if (typeof v[x] == "function") {
v[x].call(this, w)
}
}
}
}
}
}
this.addInternalListener = function(t, u) {
t.jwAddEventListener(u, 'function(dat) { jwplayer("' + this.id + '").dispatchEvent("' + u + '", dat); }')
};
this.eventListener = function(t, u) {
if (!n[t]) {
n[t] = [];
if (h && l) {
this.addInternalListener(h, t)
}
}
n[t].push(u);
return this
};
this.dispatchEvent = function(v) {
if (n[v]) {
var u = f(v, arguments[1]);
for (var t = 0; t < n[v].length; t++) {
if (typeof n[v][t] == "function") {
n[v][t].call(this, u)
}
}
}
};
function f(v, t) {
var x = b.utils.extend({}, t);
if (v == b.api.events.JWPLAYER_FULLSCREEN && !x.fullscreen) {
x.fullscreen = x.message == "true" ? true : false;
delete x.message
} else {
if (typeof x.data == "object") {
x = b.utils.extend(x, x.data);
delete x.data
}
}
var u = ["position", "duration", "offset"];
for (var w in u) {
if (x[u[w]]) {
x[u[w]] = Math.round(x[u[w]] * 1000) / 1000
}
}
return x
}
this.callInternal = function(u, t) {
if (l) {
if (typeof h != "undefined" && typeof h[u] == "function") {
if (b.utils.exists(t)) {
return (h[u])(t)
} else {
return (h[u])()
}
}
return null
} else {
j.push({
method: u,
parameters: t
})
}
};
this.playerReady = function(v) {
l = true;
if (!h) {
this.setPlayer(document.getElementById(v.id))
}
this.container = document.getElementById(this.id);
for (var t in n) {
this.addInternalListener(h, t)
}
this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM, function(w) {
r = {}
});
this.eventListener(b.api.events.JWPLAYER_MEDIA_META, function(w) {
b.utils.extend(r, w.metadata)
});
this.dispatchEvent(b.api.events.API_READY);
while (j.length > 0) {
var u = j.shift();
this.callInternal(u.method, u.parameters)
}
};
this.getItemMeta = function() {
return r
};
this.getCurrentItem = function() {
return this.callInternal("jwGetPlaylistIndex")
};
function o(v, x, w) {
var t = [];
if (!x) {
x = 0
}
if (!w) {
w = v.length - 1
}
for (var u = x; u <= w; u++) {
t.push(v[u])
}
return t
}
return this
};
b.api.selectPlayer = function(d) {
var c;
if (!b.utils.exists(d)) {
d = 0
}
if (d.nodeType) {
c = d
} else {
if (typeof d == "string") {
c = document.getElementById(d)
}
} if (c) {
var e = b.api.playerById(c.id);
if (e) {
return e
} else {
return b.api.addPlayer(new b.api(c))
}
} else {
if (typeof d == "number") {
return b.getPlayers()[d]
}
}
return null
};
b.api.events = {
API_READY: "jwplayerAPIReady",
JWPLAYER_READY: "jwplayerReady",
JWPLAYER_FULLSCREEN: "jwplayerFullscreen",
JWPLAYER_RESIZE: "jwplayerResize",
JWPLAYER_ERROR: "jwplayerError",
JWPLAYER_COMPONENT_SHOW: "jwplayerComponentShow",
JWPLAYER_COMPONENT_HIDE: "jwplayerComponentHide",
JWPLAYER_MEDIA_BUFFER: "jwplayerMediaBuffer",
JWPLAYER_MEDIA_BUFFER_FULL: "jwplayerMediaBufferFull",
JWPLAYER_MEDIA_ERROR: "jwplayerMediaError",
JWPLAYER_MEDIA_LOADED: "jwplayerMediaLoaded",
JWPLAYER_MEDIA_COMPLETE: "jwplayerMediaComplete",
JWPLAYER_MEDIA_SEEK: "jwplayerMediaSeek",
JWPLAYER_MEDIA_TIME: "jwplayerMediaTime",
JWPLAYER_MEDIA_VOLUME: "jwplayerMediaVolume",
JWPLAYER_MEDIA_META: "jwplayerMediaMeta",
JWPLAYER_MEDIA_MUTE: "jwplayerMediaMute",
JWPLAYER_PLAYER_STATE: "jwplayerPlayerState",
JWPLAYER_PLAYLIST_LOADED: "jwplayerPlaylistLoaded",
JWPLAYER_PLAYLIST_ITEM: "jwplayerPlaylistItem"
};
b.api.events.state = {
BUFFERING: "BUFFERING",
IDLE: "IDLE",
PAUSED: "PAUSED",
PLAYING: "PLAYING"
};
b.api.playerById = function(d) {
for (var c = 0; c < a.length; c++) {
if (a[c].id == d) {
return a[c]
}
}
return null
};
b.api.addPlayer = function(c) {
for (var d = 0; d < a.length; d++) {
if (a[d] == c) {
return c
}
}
a.push(c);
return c
};
b.api.destroyPlayer = function(g, d) {
var f = -1;
for (var j = 0; j < a.length; j++) {
if (a[j].id == g) {
f = j;
continue
}
}
if (f >= 0) {
var c = document.getElementById(a[f].id);
if (document.getElementById(a[f].id + "_wrapper")) {
c = document.getElementById(a[f].id + "_wrapper")
}
if (c) {
if (d) {
b.utils.setOuterHTML(c, d)
} else {
var h = document.createElement("div");
var e = c.id;
if (c.id.indexOf("_wrapper") == c.id.length - 8) {
newID = c.id.substring(0, c.id.length - 8)
}
h.setAttribute("id", e);
c.parentNode.replaceChild(h, c)
}
}
a.splice(f, 1)
}
return null
};
b.getPlayers = function() {
return a.slice(0)
}
})(jwplayer);
var _userPlayerReady = (typeof playerReady == "function") ? playerReady : undefined;
playerReady = function(b) {
var a = jwplayer.api.playerById(b.id);
if (a) {
a.playerReady(b)
} else {
jwplayer.api.selectPlayer(b.id).playerReady(b)
} if (_userPlayerReady) {
_userPlayerReady.call(this, b)
}
};
(function(a) {
a.embed = function(g) {
var j = {
width: 400,
height: 300,
components: {
controlbar: {
position: "over"
}
}
};
var f = a.utils.mediaparser.parseMedia(g.container);
var e = new a.embed.config(a.utils.extend(j, f, g.config), this);
var h = a.plugins.loadPlugins(g.id, e.plugins);
function c(m, l) {
for (var k in l) {
if (typeof m[k] == "function") {
(m[k]).call(m, l[k])
}
}
}
function d() {
if (h.getStatus() == a.utils.loaderstatus.COMPLETE) {
for (var m = 0; m < e.modes.length; m++) {
if (e.modes[m].type && a.embed[e.modes[m].type]) {
var k = e;
if (e.modes[m].config) {
k = a.utils.extend(a.utils.clone(e), e.modes[m].config)
}
var l = new a.embed[e.modes[m].type](document.getElementById(g.id), e.modes[m], k, h, g);
if (l.supportsConfig()) {
l.embed();
c(g, e.events);
return g
}
}
}
a.utils.log("No suitable players found");
new a.embed.logo(a.utils.extend({
hide: true
}, e.components.logo), "none", g.id)
}
}
h.addEventListener(a.events.COMPLETE, d);
h.addEventListener(a.events.ERROR, d);
h.load();
return g
};
function b() {
if (!document.body) {
return setTimeout(b, 15)
}
var c = a.utils.selectors.getElementsByTagAndClass("video", "jwplayer");
for (var d = 0; d < c.length; d++) {
var e = c[d];
a(e.id).setup({})
}
}
b()
})(jwplayer);
(function(e) {
function h() {
return [{
type: "flash",
src: "/jwplayer/player.swf"
}, {
type: "html5"
}, {
type: "download"
}]
}
var a = {
players: "modes",
autoplay: "autostart"
};
function b(n) {
var m = n.toLowerCase();
var l = ["left", "right", "top", "bottom"];
for (var k = 0; k < l.length; k++) {
if (m == l[k]) {
return true
}
}
return false
}
function c(l) {
var k = false;
k = (l instanceof Array) || (typeof l == "object" && !l.position && !l.size);
return k
}
function j(k) {
if (typeof k == "string") {
if (parseInt(k).toString() == k || k.toLowerCase().indexOf("px") > -1) {
return parseInt(k)
}
}
return k
}
var g = ["playlist", "dock", "controlbar", "logo", "display"];
function f(k) {
var n = {};
switch (e.utils.typeOf(k.plugins)) {
case "object":
for (var m in k.plugins) {
n[e.utils.getPluginName(m)] = m
}
break;
case "string":
var o = k.plugins.split(",");
for (var l = 0; l < o.length; l++) {
n[e.utils.getPluginName(o[l])] = o[l]
}
break
}
return n
}
function d(o, n, m, k) {
if (e.utils.typeOf(o[n]) != "object") {
o[n] = {}
}
var l = o[n][m];
if (e.utils.typeOf(l) != "object") {
o[n][m] = l = {}
}
if (k) {
if (n == "plugins") {
var p = e.utils.getPluginName(m);
l[k] = o[p + "." + k];
delete o[p + "." + k]
} else {
l[k] = o[m + "." + k];
delete o[m + "." + k]
}
}
}
e.embed.deserialize = function(l) {
var m = f(l);
for (var k in m) {
d(l, "plugins", m[k])
}
for (var p in l) {
if (p.indexOf(".") > -1) {
var o = p.split(".");
var n = o[0];
var p = o[1];
if (e.utils.isInArray(g, n)) {
d(l, "components", n, p)
} else {
if (m[n]) {
d(l, "plugins", m[n], p)
}
}
}
}
return l
};
e.embed.config = function(k, u) {
var t = e.utils.extend({}, k);
var r;
if (c(t.playlist)) {
r = t.playlist;
delete t.playlist
}
t = e.embed.deserialize(t);
t.height = j(t.height);
t.width = j(t.width);
if (typeof t.plugins == "string") {
var l = t.plugins.split(",");
if (typeof t.plugins != "object") {
t.plugins = {}
}
for (var p = 0; p < l.length; p++) {
var q = e.utils.getPluginName(l[p]);
if (typeof t[q] == "object") {
t.plugins[l[p]] = t[q];
delete t[q]
} else {
t.plugins[l[p]] = {}
}
}
}
for (var s = 0; s < g.length; s++) {
var o = g[s];
if (e.utils.exists(t[o])) {
if (typeof t[o] != "object") {
if (!t.components[o]) {
t.components[o] = {}
}
if (o == "logo") {
t.components[o].file = t[o]
} else {
t.components[o].position = t[o]
}
delete t[o]
} else {
if (!t.components[o]) {
t.components[o] = {}
}
e.utils.extend(t.components[o], t[o]);
delete t[o]
}
}
if (typeof t[o + "size"] != "undefined") {
if (!t.components[o]) {
t.components[o] = {}
}
t.components[o].size = t[o + "size"];
delete t[o + "size"]
}
}
if (typeof t.icons != "undefined") {
if (!t.components.display) {
t.components.display = {}
}
t.components.display.icons = t.icons;
delete t.icons
}
for (var n in a) {
if (t[n]) {
if (!t[a[n]]) {
t[a[n]] = t[n]
}
delete t[n]
}
}
var m;
if (t.flashplayer && !t.modes) {
m = h();
m[0].src = t.flashplayer;
delete t.flashplayer
} else {
if (t.modes) {
if (typeof t.modes == "string") {
m = h();
m[0].src = t.modes
} else {
if (t.modes instanceof Array) {
m = t.modes
} else {
if (typeof t.modes == "object" && t.modes.type) {
m = [t.modes]
}
}
}
delete t.modes
} else {
m = h()
}
}
t.modes = m;
if (r) {
t.playlist = r
}
return t
}
})(jwplayer);
(function(a) {
a.embed.download = function(c, g, b, d, f) {
this.embed = function() {
var k = a.utils.extend({}, b);
var q = {};
var j = b.width ? b.width : 480;
if (typeof j != "number") {
j = parseInt(j, 10)
}
var m = b.height ? b.height : 320;
if (typeof m != "number") {
m = parseInt(m, 10)
}
var u, o, n;
var s = {};
if (b.playlist && b.playlist.length) {
s.file = b.playlist[0].file;
o = b.playlist[0].image;
s.levels = b.playlist[0].levels
} else {
s.file = b.file;
o = b.image;
s.levels = b.levels
} if (s.file) {
u = s.file
} else {
if (s.levels && s.levels.length) {
u = s.levels[0].file
}
}
n = u ? "pointer" : "auto";
var l = {
display: {
style: {
cursor: n,
width: j,
height: m,
backgroundColor: "#000",
position: "relative",
textDecoration: "none",
border: "none",
display: "block"
}
},
display_icon: {
style: {
cursor: n,
position: "absolute",
display: u ? "block" : "none",
top: 0,
left: 0,
border: 0,
margin: 0,
padding: 0,
zIndex: 3,
width: 50,
height: 50,
backgroundImage: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"
}
},
display_iconBackground: {
style: {
cursor: n,
position: "absolute",
display: u ? "block" : "none",
top: ((m - 50) / 2),
left: ((j - 50) / 2),
border: 0,
width: 50,
height: 50,
margin: 0,
padding: 0,
zIndex: 2,
backgroundImage: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"
}
},
display_image: {
style: {
width: j,
height: m,
display: o ? "block" : "none",
position: "absolute",
cursor: n,
left: 0,
top: 0,
margin: 0,
padding: 0,
textDecoration: "none",
zIndex: 1,
border: "none"
}
}
};
var h = function(v, x, y) {
var w = document.createElement(v);
if (y) {
w.id = y
} else {
w.id = c.id + "_jwplayer_" + x
}
a.utils.css(w, l[x].style);
return w
};
q.display = h("a", "display", c.id);
if (u) {
q.display.setAttribute("href", a.utils.getAbsolutePath(u))
}
q.display_image = h("img", "display_image");
q.display_image.setAttribute("alt", "Click to download...");
if (o) {
q.display_image.setAttribute("src", a.utils.getAbsolutePath(o))
}
if (true) {
q.display_icon = h("div", "display_icon");
q.display_iconBackground = h("div", "display_iconBackground");
q.display.appendChild(q.display_image);
q.display_iconBackground.appendChild(q.display_icon);
q.display.appendChild(q.display_iconBackground)
}
_css = a.utils.css;
_hide = function(v) {
_css(v, {
display: "none"
})
};
function r(v) {
_imageWidth = q.display_image.naturalWidth;
_imageHeight = q.display_image.naturalHeight;
t()
}
function t() {
a.utils.stretch(a.utils.stretching.UNIFORM, q.display_image, j, m, _imageWidth, _imageHeight)
}
q.display_image.onerror = function(v) {
_hide(q.display_image)
};
q.display_image.onload = r;
c.parentNode.replaceChild(q.display, c);
var p = (b.plugins && b.plugins.logo) ? b.plugins.logo : {};
q.display.appendChild(new a.embed.logo(b.components.logo, "download", c.id));
f.container = document.getElementById(f.id);
f.setPlayer(q.display, "download")
};
this.supportsConfig = function() {
if (b) {
var j = a.utils.getFirstPlaylistItemFromConfig(b);
if (typeof j.file == "undefined" && typeof j.levels == "undefined") {
return true
} else {
if (j.file) {
return e(j.file, j.provider, j.playlistfile)
} else {
if (j.levels && j.levels.length) {
for (var h = 0; h < j.levels.length; h++) {
if (j.levels[h].file && e(j.levels[h].file, j.provider, j.playlistfile)) {
return true
}
}
}
}
}
} else {
return true
}
};
function e(j, l, h) {
if (h) {
return false
}
var k = ["image", "sound", "youtube", "http"];
if (l && (k.toString().indexOf(l) > -1)) {
return true
}
if (!l || (l && l == "video")) {
var m = a.utils.extension(j);
if (m && a.utils.extensionmap[m]) {
return true
}
}
return false
}
}
})(jwplayer);
(function(a) {
a.embed.flash = function(f, g, l, e, j) {
function m(o, n, p) {
var q = document.createElement("param");
q.setAttribute("name", n);
q.setAttribute("value", p);
o.appendChild(q)
}
function k(o, p, n) {
return function(q) {
if (n) {
document.getElementById(j.id + "_wrapper").appendChild(p)
}
var s = document.getElementById(j.id).getPluginConfig("display");
o.resize(s.width, s.height);
var r = {
left: s.x,
top: s.y
};
a.utils.css(p, r)
}
}
function d(p) {
if (!p) {
return {}
}
var r = {};
for (var o in p) {
var n = p[o];
for (var q in n) {
r[o + "." + q] = n[q]
}
}
return r
}
function h(q, p) {
if (q[p]) {
var s = q[p];
for (var o in s) {
var n = s[o];
if (typeof n == "string") {
if (!q[o]) {
q[o] = n
}
} else {
for (var r in n) {
if (!q[o + "." + r]) {
q[o + "." + r] = n[r]
}
}
}
}
delete q[p]
}
}
function b(q) {
if (!q) {
return {}
}
var t = {}, s = [];
for (var n in q) {
var p = a.utils.getPluginName(n);
var o = q[n];
s.push(n);
for (var r in o) {
t[p + "." + r] = o[r]
}
}
t.plugins = s.join(",");
return t
}
function c(p) {
var n = p.netstreambasepath ? "" : "netstreambasepath=" + encodeURIComponent(window.location.href.split("#")[0]) + "&";
for (var o in p) {
if (typeof(p[o]) == "object") {
n += o + "=" + encodeURIComponent("[[JSON]]" + a.utils.strings.jsonToString(p[o])) + "&"
} else {
n += o + "=" + encodeURIComponent(p[o]) + "&"
}
}
return n.substring(0, n.length - 1)
}
this.embed = function() {
l.id = j.id;
var y;
var q = a.utils.extend({}, l);
var n = q.width;
var w = q.height;
if (f.id + "_wrapper" == f.parentNode.id) {
y = document.getElementById(f.id + "_wrapper")
} else {
y = document.createElement("div");
y.id = f.id + "_wrapper";
a.utils.wrap(f, y);
a.utils.css(y, {
position: "relative",
width: n,
height: w
})
}
var o = e.setupPlugins(j, q, k);
if (o.length > 0) {
a.utils.extend(q, b(o.plugins))
} else {
delete q.plugins
}
var r = ["height", "width", "modes", "events"];
for (var u = 0; u < r.length; u++) {
delete q[r[u]]
}
var p = "opaque";
if (q.wmode) {
p = q.wmode
}
h(q, "components");
h(q, "providers");
if (typeof q["dock.position"] != "undefined") {
if (q["dock.position"].toString().toLowerCase() == "false") {
q.dock = q["dock.position"];
delete q["dock.position"]
}
}
var x = "#000000";
var t;
if (a.utils.isIE()) {
var v = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" bgcolor="' + x + '" width="100%" height="100%" id="' + f.id + '" name="' + f.id + '" tabindex=0"">';
v += '<param name="movie" value="' + g.src + '">';
v += '<param name="allowfullscreen" value="true">';
v += '<param name="allowscriptaccess" value="always">';
v += '<param name="seamlesstabbing" value="true">';
v += '<param name="wmode" value="' + p + '">';
v += '<param name="flashvars" value="' + c(q) + '">';
v += "</object>";
a.utils.setOuterHTML(f, v);
t = document.getElementById(f.id)
} else {
var s = document.createElement("object");
s.setAttribute("type", "application/x-shockwave-flash");
s.setAttribute("data", g.src);
s.setAttribute("width", "100%");
s.setAttribute("height", "100%");
s.setAttribute("bgcolor", "#000000");
s.setAttribute("id", f.id);
s.setAttribute("name", f.id);
s.setAttribute("tabindex", 0);
m(s, "allowfullscreen", "true");
m(s, "allowscriptaccess", "always");
m(s, "seamlesstabbing", "true");
m(s, "wmode", p);
m(s, "flashvars", c(q));
f.parentNode.replaceChild(s, f);
t = s
}
j.container = t;
j.setPlayer(t, "flash")
};
this.supportsConfig = function() {
if (a.utils.hasFlash()) {
if (l) {
var o = a.utils.getFirstPlaylistItemFromConfig(l);
if (typeof o.file == "undefined" && typeof o.levels == "undefined") {
return true
} else {
if (o.file) {
return flashCanPlay(o.file, o.provider)
} else {
if (o.levels && o.levels.length) {
for (var n = 0; n < o.levels.length; n++) {
if (o.levels[n].file && flashCanPlay(o.levels[n].file, o.provider)) {
return true
}
}
}
}
}
} else {
return true
}
}
return false
};
flashCanPlay = function(n, p) {
var o = ["video", "http", "sound", "image"];
if (p && (o.toString().indexOf(p < 0))) {
return true
}
var q = a.utils.extension(n);
if (!q) {
return true
}
if (a.utils.exists(a.utils.extensionmap[q]) && !a.utils.exists(a.utils.extensionmap[q].flash)) {
return false
}
return true
}
}
})(jwplayer);
(function(a) {
a.embed.html5 = function(c, g, b, d, f) {
function e(j, k, h) {
return function(l) {
var m = document.getElementById(c.id + "_displayarea");
if (h) {
m.appendChild(k)
}
var n = m.style;
j.resize(parseInt(n.width.replace("px", "")), parseInt(n.height.replace("px", "")));
k.left = n.left;
k.top = n.top
}
}
this.embed = function() {
if (a.html5) {
d.setupPlugins(f, b, e);
c.innerHTML = "";
var j = a.utils.extend({
screencolor: "0x000000"
}, b);
var h = ["plugins", "modes", "events"];
for (var k = 0; k < h.length; k++) {
delete j[h[k]]
}
if (j.levels && !j.sources) {
j.sources = b.levels
}
if (j.skin && j.skin.toLowerCase().indexOf(".zip") > 0) {
j.skin = j.skin.replace(/\.zip/i, ".xml")
}
var l = new(a.html5(c)).setup(j);
f.container = document.getElementById(f.id);
f.setPlayer(l, "html5")
} else {
return null
}
};
this.supportsConfig = function() {
if ( !! a.vid.canPlayType) {
if (b) {
var j = a.utils.getFirstPlaylistItemFromConfig(b);
if (typeof j.file == "undefined" && typeof j.levels == "undefined") {
return true
} else {
if (j.file) {
return html5CanPlay(a.vid, j.file, j.provider, j.playlistfile)
} else {
if (j.levels && j.levels.length) {
for (var h = 0; h < j.levels.length; h++) {
if (j.levels[h].file && html5CanPlay(a.vid, j.levels[h].file, j.provider, j.playlistfile)) {
return true
}
}
}
}
}
} else {
return true
}
}
return false
};
html5CanPlay = function(k, j, l, h) {
if (h) {
return false
}
if (l && l == "youtube") {
return true
}
if (l && l != "video" && l != "http" && l != "sound") {
return false
}
var m = a.utils.extension(j);
if (!a.utils.exists(m) || !a.utils.exists(a.utils.extensionmap[m])) {
return true
}
if (!a.utils.exists(a.utils.extensionmap[m].html5)) {
return false
}
if (a.utils.isLegacyAndroid() && m.match(/m4v|mp4/)) {
return true
}
return browserCanPlay(k, a.utils.extensionmap[m].html5)
};
browserCanPlay = function(j, h) {
if (!h) {
return true
}
if (j.canPlayType(h)) {
return true
} else {
if (h == "audio/mp3" && navigator.userAgent.match(/safari/i)) {
return j.canPlayType("audio/mpeg")
} else {
return false
}
}
}
}
})(jwplayer);
(function(a) {
a.embed.logo = function(m, l, d) {
var j = {
prefix: "http://l.longtailvideo.com/" + l + "/",
file: "logo.png",
link: "http://www.longtailvideo.com/players/jw-flv-player/",
margin: 8,
out: 0.5,
over: 1,
timeout: 5,
hide: false,
position: "bottom-left"
};
_css = a.utils.css;
var b;
var h;
k();
function k() {
o();
c();
f()
}
function o() {
if (j.prefix) {
var q = a.version.split(/\W/).splice(0, 2).join("/");
if (j.prefix.indexOf(q) < 0) {
j.prefix += q + "/"
}
}
h = a.utils.extend({}, j)
}
function p() {
var s = {
border: "none",
textDecoration: "none",
position: "absolute",
cursor: "pointer",
zIndex: 10
};
s.display = h.hide ? "none" : "block";
var r = h.position.toLowerCase().split("-");
for (var q in r) {
s[r[q]] = h.margin
}
return s
}
function c() {
b = document.createElement("img");
b.id = d + "_jwplayer_logo";
b.style.display = "none";
b.onload = function(q) {
_css(b, p());
e()
};
if (!h.file) {
return
}
if (h.file.indexOf("http://") === 0) {
b.src = h.file
} else {
b.src = h.prefix + h.file
}
}
if (!h.file) {
return
}
function f() {
if (h.link) {
b.onmouseover = g;
b.onmouseout = e;
b.onclick = n
} else {
this.mouseEnabled = false
}
}
function n(q) {
if (typeof q != "undefined") {
q.preventDefault();
q.stopPropagation()
}
if (h.link) {
window.open(h.link, "_blank")
}
return
}
function e(q) {
if (h.link) {
b.style.opacity = h.out
}
return
}
function g(q) {
if (h.hide) {
b.style.opacity = h.over
}
return
}
return b
}
})(jwplayer);
(function(a) {
a.html5 = function(b) {
var c = b;
this.setup = function(d) {
a.utils.extend(this, new a.html5.api(c, d));
return this
};
return this
}
})(jwplayer);
(function(b) {
var d = b.utils;
var c = d.css;
b.html5.view = function(r, q, f) {
var u = r;
var n = q;
var x = f;
var w;
var g;
var C;
var s;
var D;
var p;
var A;
function z() {
w = document.createElement("div");
w.id = n.id;
w.className = n.className;
_videowrapper = document.createElement("div");
_videowrapper.id = w.id + "_video_wrapper";
n.id = w.id + "_video";
c(w, {
position: "relative",
height: x.height,
width: x.width,
padding: 0,
backgroundColor: E(),
zIndex: 0
});
function E() {
if (u.skin.getComponentSettings("display") && u.skin.getComponentSettings("display").backgroundcolor) {
return u.skin.getComponentSettings("display").backgroundcolor
}
return parseInt("000000", 16)
}
c(n, {
width: x.width,
height: x.height,
top: 0,
left: 0,
zIndex: 1,
margin: "auto",
display: "block"
});
c(_videowrapper, {
overflow: "hidden",
position: "absolute",
top: 0,
left: 0,
bottom: 0,
right: 0
});
d.wrap(n, w);
d.wrap(n, _videowrapper);
s = document.createElement("div");
s.id = w.id + "_displayarea";
w.appendChild(s)
}
function k() {
for (var E = 0; E < x.plugins.order.length; E++) {
var F = x.plugins.order[E];
if (d.exists(x.plugins.object[F].getDisplayElement)) {
x.plugins.object[F].height = d.parseDimension(x.plugins.object[F].getDisplayElement().style.height);
x.plugins.object[F].width = d.parseDimension(x.plugins.object[F].getDisplayElement().style.width);
x.plugins.config[F].currentPosition = x.plugins.config[F].position
}
}
v()
}
function m(E) {
c(s, {
display: x.getMedia().hasChrome() ? "none" : "block"
})
}
function v(F) {
var H = x.getMedia() ? x.getMedia().getDisplayElement() : null;
if (d.exists(H)) {
if (A != H) {
if (A && A.parentNode) {
A.parentNode.replaceChild(H, A)
}
A = H
}
for (var E = 0; E < x.plugins.order.length; E++) {
var G = x.plugins.order[E];
if (d.exists(x.plugins.object[G].getDisplayElement)) {
x.plugins.config[G].currentPosition = x.plugins.config[G].position
}
}
}
j(x.width, x.height)
}
this.setup = function() {
if (x && x.getMedia()) {
n = x.getMedia().getDisplayElement()
}
z();
k();
u.jwAddEventListener(b.api.events.JWPLAYER_PLAYER_STATE, m);
u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_LOADED, v);
u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_META, function() {
y()
});
var E;
if (d.exists(window.onresize)) {
E = window.onresize
}
window.onresize = function(F) {
if (d.exists(E)) {
try {
E(F)
} catch (H) {}
}
if (u.jwGetFullscreen()) {
var G = document.body.getBoundingClientRect();
x.width = Math.abs(G.left) + Math.abs(G.right);
x.height = window.innerHeight
}
j(x.width, x.height)
}
};
function h(E) {
switch (E.keyCode) {
case 27:
if (u.jwGetFullscreen()) {
u.jwSetFullscreen(false)
}
break;
case 32:
if (u.jwGetState() != b.api.events.state.IDLE && u.jwGetState() != b.api.events.state.PAUSED) {
u.jwPause()
} else {
u.jwPlay()
}
break
}
}
function j(H, E) {
if (w.style.display == "none") {
return
}
var G = [].concat(x.plugins.order);
G.reverse();
D = G.length + 2;
if (!x.fullscreen) {
x.width = H;
x.height = E;
g = H;
C = E;
c(s, {
top: 0,
bottom: 0,
left: 0,
right: 0,
width: H,
height: E,
position: "relative"
});
c(w, {
height: C,
width: g
});
var F = o(t, G);
if (F.length > 0) {
D += F.length;
var J = F.indexOf("playlist"),
I = F.indexOf("controlbar");
if (J >= 0 && I >= 0) {
F[J] = F.splice(I, 1, F[J])[0]
}
o(l, F, true)
}
} else {
if (!(navigator && navigator.vendor && navigator.vendor.indexOf("Apple") == 0)) {
o(B, G, true)
}
}
y()
}
function o(J, G, H) {
var F = [];
for (var E = 0; E < G.length; E++) {
var K = G[E];
if (d.exists(x.plugins.object[K].getDisplayElement)) {
if (x.plugins.config[K].currentPosition != b.html5.view.positions.NONE) {
var I = J(K, D--);
if (!I) {
F.push(K)
} else {
x.plugins.object[K].resize(I.width, I.height);
if (H) {
delete I.width;
delete I.height
}
c(x.plugins.object[K].getDisplayElement(), I)
}
} else {
c(x.plugins.object[K].getDisplayElement(), {
display: "none"
})
}
}
}
return F
}
function t(F, G) {
if (d.exists(x.plugins.object[F].getDisplayElement)) {
if (x.plugins.config[F].position && a(x.plugins.config[F].position)) {
if (!d.exists(x.plugins.object[F].getDisplayElement().parentNode)) {
w.appendChild(x.plugins.object[F].getDisplayElement())
}
var E = e(F);
E.zIndex = G;
return E
}
}
return false
}
function l(G, H) {
if (!d.exists(x.plugins.object[G].getDisplayElement().parentNode)) {
s.appendChild(x.plugins.object[G].getDisplayElement())
}
var E = x.width,
F = x.height;
if (typeof x.width == "string" && x.width.lastIndexOf("%") > -1) {
percentage = parseFloat(x.width.substring(0, x.width.lastIndexOf("%"))) / 100;
E = Math.round(window.innerWidth * percentage)
}
if (typeof x.height == "string" && x.height.lastIndexOf("%") > -1) {
percentage = parseFloat(x.height.substring(0, x.height.lastIndexOf("%"))) / 100;
F = Math.round(window.innerHeight * percentage)
}
return {
position: "absolute",
width: (E - d.parseDimension(s.style.left) - d.parseDimension(s.style.right)),
height: (F - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom)),
zIndex: H
}
}
function B(E, F) {
return {
position: "fixed",
width: x.width,
height: x.height,
zIndex: F
}
}
function y() {
if (!d.exists(x.getMedia())) {
return
}
s.style.position = "absolute";
var H = x.getMedia().getDisplayElement();
if (H && H.tagName.toLowerCase() == "video") {
H.style.position = "absolute";
var E, I;
if (s.style.width.toString().lastIndexOf("%") > -1 || s.style.width.toString().lastIndexOf("%") > -1) {
var F = s.getBoundingClientRect();
E = Math.abs(F.left) + Math.abs(F.right);
I = Math.abs(F.top) + Math.abs(F.bottom)
} else {
E = d.parseDimension(s.style.width);
I = d.parseDimension(s.style.height)
} if (H.parentNode) {
H.parentNode.style.left = s.style.left;
H.parentNode.style.top = s.style.top
}
d.stretch(u.jwGetStretching(), H, E, I, H.videoWidth ? H.videoWidth : 400, H.videoHeight ? H.videoHeight : 300)
} else {
var G = x.plugins.object.display.getDisplayElement();
if (G) {
x.getMedia().resize(d.parseDimension(G.style.width), d.parseDimension(G.style.height))
} else {
x.getMedia().resize(d.parseDimension(s.style.width), d.parseDimension(s.style.height))
}
}
}
function e(F) {
var G = {
position: "absolute",
margin: 0,
padding: 0,
top: null
};
var E = x.plugins.config[F].currentPosition.toLowerCase();
switch (E.toUpperCase()) {
case b.html5.view.positions.TOP:
G.top = d.parseDimension(s.style.top);
G.left = d.parseDimension(s.style.left);
G.width = g - d.parseDimension(s.style.left) - d.parseDimension(s.style.right);
G.height = x.plugins.object[F].height;
s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].height + "px";
s.style.height = d.parseDimension(s.style.height) - G.height + "px";
break;
case b.html5.view.positions.RIGHT:
G.top = d.parseDimension(s.style.top);
G.right = d.parseDimension(s.style.right);
G.width = x.plugins.object[F].width;
G.height = C - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom);
s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].width + "px";
s.style.width = d.parseDimension(s.style.width) - G.width + "px";
break;
case b.html5.view.positions.BOTTOM:
G.bottom = d.parseDimension(s.style.bottom);
G.left = d.parseDimension(s.style.left);
G.width = g - d.parseDimension(s.style.left) - d.parseDimension(s.style.right);
G.height = x.plugins.object[F].height;
s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].height + "px";
s.style.height = d.parseDimension(s.style.height) - G.height + "px";
break;
case b.html5.view.positions.LEFT:
G.top = d.parseDimension(s.style.top);
G.left = d.parseDimension(s.style.left);
G.width = x.plugins.object[F].width;
G.height = C - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom);
s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].width + "px";
s.style.width = d.parseDimension(s.style.width) - G.width + "px";
break;
default:
break
}
return G
}
this.resize = j;
this.fullscreen = function(H) {
if (navigator && navigator.vendor && navigator.vendor.indexOf("Apple") === 0) {
if (x.getMedia().getDisplayElement().webkitSupportsFullscreen) {
if (H) {
try {
x.getMedia().getDisplayElement().webkitEnterFullscreen()
} catch (G) {}
} else {
try {
x.getMedia().getDisplayElement().webkitExitFullscreen()
} catch (G) {}
}
}
} else {
if (H) {
document.onkeydown = h;
clearInterval(p);
var F = document.body.getBoundingClientRect();
x.width = Math.abs(F.left) + Math.abs(F.right);
x.height = window.innerHeight;
var E = {
position: "fixed",
width: "100%",
height: "100%",
top: 0,
left: 0,
zIndex: 2147483000
};
c(w, E);
E.zIndex = 1;
if (x.getMedia() && x.getMedia().getDisplayElement()) {
c(x.getMedia().getDisplayElement(), E)
}
E.zIndex = 2;
c(s, E)
} else {
document.onkeydown = "";
x.width = g;
x.height = C;
c(w, {
position: "relative",
height: x.height,
width: x.width,
zIndex: 0
})
}
j(x.width, x.height)
}
}
};
function a(e) {
return ([b.html5.view.positions.TOP, b.html5.view.positions.RIGHT, b.html5.view.positions.BOTTOM, b.html5.view.positions.LEFT].toString().indexOf(e.toUpperCase()) > -1)
}
b.html5.view.positions = {
TOP: "TOP",
RIGHT: "RIGHT",
BOTTOM: "BOTTOM",
LEFT: "LEFT",
OVER: "OVER",
NONE: "NONE"
}
})(jwplayer);
(function(a) {
var b = {
backgroundcolor: "",
margin: 10,
font: "Arial,sans-serif",
fontsize: 10,
fontcolor: parseInt("000000", 16),
fontstyle: "normal",
fontweight: "bold",
buttoncolor: parseInt("ffffff", 16),
position: a.html5.view.positions.BOTTOM,
idlehide: false,
layout: {
left: {
position: "left",
elements: [{
name: "play",
type: "button"
}, {
name: "divider",
type: "divider"
}, {
name: "prev",
type: "button"
}, {
name: "divider",
type: "divider"
}, {
name: "next",
type: "button"
}, {
name: "divider",
type: "divider"
}, {
name: "elapsed",
type: "text"
}]
},
center: {
position: "center",
elements: [{
name: "time",
type: "slider"
}]
},
right: {
position: "right",
elements: [{
name: "duration",
type: "text"
}, {
name: "blank",
type: "button"
}, {
name: "divider",
type: "divider"
}, {
name: "mute",
type: "button"
}, {
name: "volume",
type: "slider"
}, {
name: "divider",
type: "divider"
}, {
name: "fullscreen",
type: "button"
}]
}
}
};
_utils = a.utils;
_css = _utils.css;
_hide = function(c) {
_css(c, {
display: "none"
})
};
_show = function(c) {
_css(c, {
display: "block"
})
};
a.html5.controlbar = function(l, V) {
var k = l;
var D = _utils.extend({}, b, k.skin.getComponentSettings("controlbar"), V);
if (D.position == a.html5.view.positions.NONE || typeof a.html5.view.positions[D.position] == "undefined") {
return
}
if (_utils.mapLength(k.skin.getComponentLayout("controlbar")) > 0) {
D.layout = k.skin.getComponentLayout("controlbar")
}
var ac;
var P;
var ab;
var E;
var v = "none";
var g;
var j;
var ad;
var f;
var e;
var y;
var Q = {};
var p = false;
var c = {};
var Y;
var h = false;
var o;
var d;
var S = false;
var G = false;
var W = new a.html5.eventdispatcher();
_utils.extend(this, W);
function J() {
if (!Y) {
Y = k.skin.getSkinElement("controlbar", "background");
if (!Y) {
Y = {
width: 0,
height: 0,
src: null
}
}
}
return Y
}
function N() {
ab = 0;
E = 0;
P = 0;
if (!p) {
var ak = {
height: J().height,
backgroundColor: D.backgroundcolor
};
ac = document.createElement("div");
ac.id = k.id + "_jwplayer_controlbar";
_css(ac, ak)
}
var aj = (k.skin.getSkinElement("controlbar", "capLeft"));
var ai = (k.skin.getSkinElement("controlbar", "capRight"));
if (aj) {
x("capLeft", "left", false, ac)
}
var al = {
position: "absolute",
height: J().height,
left: (aj ? aj.width : 0),
zIndex: 0
};
Z("background", ac, al, "img");
if (J().src) {
Q.background.src = J().src
}
al.zIndex = 1;
Z("elements", ac, al);
if (ai) {
x("capRight", "right", false, ac)
}
}
this.getDisplayElement = function() {
return ac
};
this.resize = function(ak, ai) {
_utils.cancelAnimation(ac);
document.getElementById(k.id).onmousemove = A;
e = ak;
y = ai;
if (G != k.jwGetFullscreen()) {
G = k.jwGetFullscreen();
d = undefined
}
var aj = w();
A();
I({
id: k.id,
duration: ad,
position: j
});
u({
id: k.id,
bufferPercent: f
});
return aj
};
this.show = function() {
if (h) {
h = false;
_show(ac);
T()
}
};
this.hide = function() {
if (!h) {
h = true;
_hide(ac);
aa()
}
};
function q() {
var aj = ["timeSlider", "volumeSlider", "timeSliderRail", "volumeSliderRail"];
for (var ak in aj) {
var ai = aj[ak];
if (typeof Q[ai] != "undefined") {
c[ai] = Q[ai].getBoundingClientRect()
}
}
}
function A(ai) {
if (h) {
return
}
if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) {
clearTimeout(o);
switch (k.jwGetState()) {
case a.api.events.state.PAUSED:
case a.api.events.state.IDLE:
if (!D.idlehide || _utils.exists(ai)) {
U()
}
if (D.idlehide) {
o = setTimeout(function() {
z()
}, 2000)
}
break;
default:
if (ai) {
U()
}
o = setTimeout(function() {
z()
}, 2000);
break
}
}
}
function z(ai) {
aa();
_utils.cancelAnimation(ac);
_utils.fadeTo(ac, 0, 0.1, 1, 0)
}
function U() {
T();
_utils.cancelAnimation(ac);
_utils.fadeTo(ac, 1, 0, 1, 0)
}
function H(ai) {
return function() {
if (S && d != ai) {
d = ai;
W.sendEvent(ai, {
component: "controlbar",
boundingRect: O()
})
}
}
}
var T = H(a.api.events.JWPLAYER_COMPONENT_SHOW);
var aa = H(a.api.events.JWPLAYER_COMPONENT_HIDE);
function O() {
if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) {
return _utils.getDimensions(ac)
} else {
return {
x: 0,
y: 0,
width: 0,
height: 0
}
}
}
function Z(am, al, ak, ai) {
var aj;
if (!p) {
if (!ai) {
ai = "div"
}
aj = document.createElement(ai);
Q[am] = aj;
aj.id = ac.id + "_" + am;
al.appendChild(aj)
} else {
aj = document.getElementById(ac.id + "_" + am)
} if (_utils.exists(ak)) {
_css(aj, ak)
}
return aj
}
function M() {
ah(D.layout.left);
ah(D.layout.right, -1);
ah(D.layout.center)
}
function ah(al, ai) {
var am = al.position == "right" ? "right" : "left";
var ak = _utils.extend([], al.elements);
if (_utils.exists(ai)) {
ak.reverse()
}
for (var aj = 0; aj < ak.length; aj++) {
C(ak[aj], am)
}
}
function K() {
return P++
}
function C(am, ao) {
var al, aj, ak, ai, aq;
if (am.type == "divider") {
x("divider" + K(), ao, true, undefined, undefined, am.width, am.element);
return
}
switch (am.name) {
case "play":
x("playButton", ao, false);
x("pauseButton", ao, true);
R("playButton", "jwPlay");
R("pauseButton", "jwPause");
break;
case "prev":
x("prevButton", ao, true);
R("prevButton", "jwPlaylistPrev");
break;
case "stop":
x("stopButton", ao, true);
R("stopButton", "jwStop");
break;
case "next":
x("nextButton", ao, true);
R("nextButton", "jwPlaylistNext");
break;
case "elapsed":
x("elapsedText", ao, true);
break;
case "time":
aj = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapLeft").width;
ak = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapRight")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapRight").width;
al = ao == "left" ? aj : ak;
ai = k.skin.getSkinElement("controlbar", "timeSliderRail").width + aj + ak;
aq = {
height: J().height,
position: "absolute",
top: 0,
width: ai
};
aq[ao] = ao == "left" ? ab : E;
var an = Z("timeSlider", Q.elements, aq);
x("timeSliderCapLeft", ao, true, an, ao == "left" ? 0 : al);
x("timeSliderRail", ao, false, an, al);
x("timeSliderBuffer", ao, false, an, al);
x("timeSliderProgress", ao, false, an, al);
x("timeSliderThumb", ao, false, an, al);
x("timeSliderCapRight", ao, true, an, ao == "right" ? 0 : al);
X("time");
break;
case "fullscreen":
x("fullscreenButton", ao, false);
x("normalscreenButton", ao, true);
R("fullscreenButton", "jwSetFullscreen", true);
R("normalscreenButton", "jwSetFullscreen", false);
break;
case "volume":
aj = !_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapLeft").width;
ak = !_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapRight")) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapRight").width;
al = ao == "left" ? aj : ak;
ai = k.skin.getSkinElement("controlbar", "volumeSliderRail").width + aj + ak;
aq = {
height: J().height,
position: "absolute",
top: 0,
width: ai
};
aq[ao] = ao == "left" ? ab : E;
var ap = Z("volumeSlider", Q.elements, aq);
x("volumeSliderCapLeft", ao, true, ap, ao == "left" ? 0 : al);
x("volumeSliderRail", ao, true, ap, al);
x("volumeSliderProgress", ao, false, ap, al);
x("volumeSliderCapRight", ao, true, ap, ao == "right" ? 0 : al);
X("volume");
break;
case "mute":
x("muteButton", ao, false);
x("unmuteButton", ao, true);
R("muteButton", "jwSetMute", true);
R("unmuteButton", "jwSetMute", false);
break;
case "duration":
x("durationText", ao, true);
break
}
}
function x(al, ao, aj, ar, am, ai, ak) {
if (_utils.exists(k.skin.getSkinElement("controlbar", al)) || al.indexOf("Text") > 0 || al.indexOf("divider") === 0) {
var an = {
height: J().height,
position: "absolute",
display: "block",
top: 0
};
if ((al.indexOf("next") === 0 || al.indexOf("prev") === 0) && k.jwGetPlaylist().length < 2) {
aj = false;
an.display = "none"
}
var at;
if (al.indexOf("Text") > 0) {
al.innerhtml = "00:00";
an.font = D.fontsize + "px/" + (J().height + 1) + "px " + D.font;
an.color = D.fontcolor;
an.textAlign = "center";
an.fontWeight = D.fontweight;
an.fontStyle = D.fontstyle;
an.cursor = "default";
at = 14 + 3 * D.fontsize
} else {
if (al.indexOf("divider") === 0) {
if (ai) {
if (!isNaN(parseInt(ai))) {
at = parseInt(ai)
}
} else {
if (ak) {
var ap = k.skin.getSkinElement("controlbar", ak);
if (ap) {
an.background = "url(" + ap.src + ") repeat-x center left";
at = ap.width
}
} else {
an.background = "url(" + k.skin.getSkinElement("controlbar", "divider").src + ") repeat-x center left";
at = k.skin.getSkinElement("controlbar", "divider").width
}
}
} else {
an.background = "url(" + k.skin.getSkinElement("controlbar", al).src + ") repeat-x center left";
at = k.skin.getSkinElement("controlbar", al).width
}
} if (ao == "left") {
an.left = isNaN(am) ? ab : am;
if (aj) {
ab += at
}
} else {
if (ao == "right") {
an.right = isNaN(am) ? E : am;
if (aj) {
E += at
}
}
} if (_utils.typeOf(ar) == "undefined") {
ar = Q.elements
}
an.width = at;
if (p) {
_css(Q[al], an)
} else {
var aq = Z(al, ar, an);
if (_utils.exists(k.skin.getSkinElement("controlbar", al + "Over"))) {
aq.onmouseover = function(au) {
aq.style.backgroundImage = ["url(", k.skin.getSkinElement("controlbar", al + "Over").src, ")"].join("")
};
aq.onmouseout = function(au) {
aq.style.backgroundImage = ["url(", k.skin.getSkinElement("controlbar", al).src, ")"].join("")
}
}
}
}
}
function F() {
k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, B);
k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, s);
k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_BUFFER, u);
k.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, r);
k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_TIME, I);
k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE, ag);
k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_VOLUME, m);
k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_COMPLETE, L)
}
function B() {
N();
M();
w();
ae()
}
function s(ai) {
ad = k.jwGetPlaylist()[ai.index].duration;
I({
id: k.id,
duration: ad,
position: 0
});
u({
id: k.id,
bufferProgress: 0
})
}
function ae() {
I({
id: k.id,
duration: k.jwGetDuration(),
position: 0
});
u({
id: k.id,
bufferProgress: 0
});
ag({
id: k.id,
mute: k.jwGetMute()
});
r({
id: k.id,
newstate: a.api.events.state.IDLE
});
m({
id: k.id,
volume: k.jwGetVolume()
})
}
function R(ak, al, aj) {
if (p) {
return
}
if (_utils.exists(k.skin.getSkinElement("controlbar", ak))) {
var ai = Q[ak];
if (_utils.exists(ai)) {
_css(ai, {
cursor: "pointer"
});
if (al == "fullscreen") {
ai.onmouseup = function(am) {
am.stopPropagation();
k.jwSetFullscreen(!k.jwGetFullscreen())
}
} else {
ai.onmouseup = function(am) {
am.stopPropagation();
if (_utils.exists(aj)) {
k[al](aj)
} else {
k[al]()
}
}
}
}
}
}
function X(ai) {
if (p) {
return
}
var aj = Q[ai + "Slider"];
_css(Q.elements, {
cursor: "pointer"
});
_css(aj, {
cursor: "pointer"
});
aj.onmousedown = function(ak) {
v = ai
};
aj.onmouseup = function(ak) {
ak.stopPropagation();
af(ak.pageX)
};
aj.onmousemove = function(ak) {
if (v == "time") {
g = true;
var al = ak.pageX - c[ai + "Slider"].left - window.pageXOffset;
_css(Q.timeSliderThumb, {
left: al
})
}
}
}
function af(aj) {
g = false;
var ai;
if (v == "time") {
ai = aj - c.timeSliderRail.left + window.pageXOffset;
var al = ai / c.timeSliderRail.width * ad;
if (al < 0) {
al = 0
} else {
if (al > ad) {
al = ad - 3
}
} if (k.jwGetState() == a.api.events.state.PAUSED || k.jwGetState() == a.api.events.state.IDLE) {
k.jwPlay()
}
k.jwSeek(al)
} else {
if (v == "volume") {
ai = aj - c.volumeSliderRail.left - window.pageXOffset;
var ak = Math.round(ai / c.volumeSliderRail.width * 100);
if (ak < 0) {
ak = 0
} else {
if (ak > 100) {
ak = 100
}
} if (k.jwGetMute()) {
k.jwSetMute(false)
}
k.jwSetVolume(ak)
}
}
v = "none"
}
function u(aj) {
if (_utils.exists(aj.bufferPercent)) {
f = aj.bufferPercent
}
if (c.timeSliderRail) {
var ak = c.timeSliderRail.width;
var ai = isNaN(Math.round(ak * f / 100)) ? 0 : Math.round(ak * f / 100);
_css(Q.timeSliderBuffer, {
width: ai
})
}
}
function ag(ai) {
if (ai.mute) {
_hide(Q.muteButton);
_show(Q.unmuteButton);
_hide(Q.volumeSliderProgress)
} else {
_show(Q.muteButton);
_hide(Q.unmuteButton);
_show(Q.volumeSliderProgress)
}
}
function r(ai) {
if (ai.newstate == a.api.events.state.BUFFERING || ai.newstate == a.api.events.state.PLAYING) {
_show(Q.pauseButton);
_hide(Q.playButton)
} else {
_hide(Q.pauseButton);
_show(Q.playButton)
}
A();
if (ai.newstate == a.api.events.state.IDLE) {
_hide(Q.timeSliderBuffer);
_hide(Q.timeSliderProgress);
_hide(Q.timeSliderThumb);
I({
id: k.id,
duration: k.jwGetDuration(),
position: 0
})
} else {
_show(Q.timeSliderBuffer);
if (ai.newstate != a.api.events.state.BUFFERING) {
_show(Q.timeSliderProgress);
_show(Q.timeSliderThumb)
}
}
}
function L(ai) {
u({
bufferPercent: 0
});
I(_utils.extend(ai, {
position: 0,
duration: ad
}))
}
function I(al) {
if (_utils.exists(al.position)) {
j = al.position
}
if (_utils.exists(al.duration)) {
ad = al.duration
}
var aj = (j === ad === 0) ? 0 : j / ad;
var am = c.timeSliderRail;
if (am) {
var ai = isNaN(Math.round(am.width * aj)) ? 0 : Math.round(am.width * aj);
var ak = ai;
if (Q.timeSliderProgress) {
Q.timeSliderProgress.style.width = ai + "px";
if (!g) {
if (Q.timeSliderThumb) {
Q.timeSliderThumb.style.left = ak + "px"
}
}
}
}
if (Q.durationText) {
Q.durationText.innerHTML = _utils.timeFormat(ad)
}
if (Q.elapsedText) {
Q.elapsedText.innerHTML = _utils.timeFormat(j)
}
}
function n() {
var am, aj;
var ak = document.getElementById(ac.id + "_elements");
if (!ak) {
return
}
var al = ak.childNodes;
for (var ai in ak.childNodes) {
if (isNaN(parseInt(ai, 10))) {
continue
}
if (al[ai].id.indexOf(ac.id + "_divider") === 0 && aj && aj.id.indexOf(ac.id + "_divider") === 0 && al[ai].style.backgroundImage == aj.style.backgroundImage) {
al[ai].style.display = "none"
} else {
if (al[ai].id.indexOf(ac.id + "_divider") === 0 && am && am.style.display != "none") {
al[ai].style.display = "block"
}
} if (al[ai].style.display != "none") {
aj = al[ai]
}
am = al[ai]
}
}
function w() {
n();
if (k.jwGetFullscreen()) {
_show(Q.normalscreenButton);
_hide(Q.fullscreenButton)
} else {
_hide(Q.normalscreenButton);
_show(Q.fullscreenButton)
}
var aj = {
width: e
};
var ai = {};
if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) {
aj.left = D.margin;
aj.width -= 2 * D.margin;
aj.top = y - J().height - D.margin;
aj.height = J().height
}
var al = k.skin.getSkinElement("controlbar", "capLeft");
var ak = k.skin.getSkinElement("controlbar", "capRight");
ai.left = al ? al.width : 0;
ai.width = aj.width - ai.left - (ak ? ak.width : 0);
var am = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapLeft").width;
_css(Q.timeSliderRail, {
width: (ai.width - ab - E),
left: am
});
if (_utils.exists(Q.timeSliderCapRight)) {
_css(Q.timeSliderCapRight, {
left: am + (ai.width - ab - E)
})
}
_css(ac, aj);
_css(Q.elements, ai);
_css(Q.background, ai);
q();
return aj
}
function m(am) {
if (_utils.exists(Q.volumeSliderRail)) {
var ak = isNaN(am.volume / 100) ? 1 : am.volume / 100;
var al = _utils.parseDimension(Q.volumeSliderRail.style.width);
var ai = isNaN(Math.round(al * ak)) ? 0 : Math.round(al * ak);
var an = _utils.parseDimension(Q.volumeSliderRail.style.right);
var aj = (!_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapLeft"))) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapLeft").width;
_css(Q.volumeSliderProgress, {
width: ai,
left: aj
});
if (_utils.exists(Q.volumeSliderCapLeft)) {
_css(Q.volumeSliderCapLeft, {
left: 0
})
}
}
}
function t() {
N();
M();
q();
p = true;
F();
D.idlehide = (D.idlehide.toString().toLowerCase() == "true");
if (D.position == a.html5.view.positions.OVER && D.idlehide) {
ac.style.opacity = 0;
S = true
} else {
setTimeout((function() {
S = true;
T()
}), 1)
}
ae()
}
t();
return this
}
})(jwplayer);
(function(b) {
var a = ["width", "height", "state", "playlist", "item", "position", "buffer", "duration", "volume", "mute", "fullscreen"];
var c = b.utils;
b.html5.controller = function(z, w, h, v) {
var C = z;
var G = h;
var g = v;
var o = w;
var J = true;
var e = -1;
var A = c.exists(G.config.debug) && (G.config.debug.toString().toLowerCase() == "console");
var m = new b.html5.eventdispatcher(o.id, A);
c.extend(this, m);
var E = [];
var d = false;
function r(M) {
if (d) {
m.sendEvent(M.type, M)
} else {
E.push(M)
}
}
function K(M) {
if (!d) {
m.sendEvent(b.api.events.JWPLAYER_READY, M);
if (b.utils.exists(window.playerReady)) {
playerReady(M)
}
if (b.utils.exists(window[h.config.playerReady])) {
window[h.config.playerReady](M)
}
while (E.length > 0) {
var O = E.shift();
m.sendEvent(O.type, O)
}
if (h.config.autostart && !b.utils.isIOS()) {
t(G.item)
}
while (p.length > 0) {
var N = p.shift();
x(N.method, N.arguments)
}
d = true
}
}
G.addGlobalListener(r);
G.addEventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL, function() {
G.getMedia().play()
});
G.addEventListener(b.api.events.JWPLAYER_MEDIA_TIME, function(M) {
if (M.position >= G.playlist[G.item].start && e >= 0) {
G.playlist[G.item].start = e;
e = -1
}
});
G.addEventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE, function(M) {
setTimeout(s, 25)
});
function u() {
try {
f(G.item);
if (G.playlist[G.item].levels[0].file.length > 0) {
if (J || G.state == b.api.events.state.IDLE) {
G.getMedia().load(G.playlist[G.item]);
J = false
} else {
if (G.state == b.api.events.state.PAUSED) {
G.getMedia().play()
}
}
}
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function I() {
try {
if (G.playlist[G.item].levels[0].file.length > 0) {
switch (G.state) {
case b.api.events.state.PLAYING:
case b.api.events.state.BUFFERING:
G.getMedia().pause();
break
}
}
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function D(M) {
try {
if (G.playlist[G.item].levels[0].file.length > 0) {
if (typeof M != "number") {
M = parseFloat(M)
}
switch (G.state) {
case b.api.events.state.IDLE:
if (e < 0) {
e = G.playlist[G.item].start;
G.playlist[G.item].start = M
}
u();
break;
case b.api.events.state.PLAYING:
case b.api.events.state.PAUSED:
case b.api.events.state.BUFFERING:
G.seek(M);
break
}
}
return true
} catch (N) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, N)
}
return false
}
function n(M) {
if (!c.exists(M)) {
M = true
}
try {
G.getMedia().stop(M);
return true
} catch (N) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, N)
}
return false
}
function k() {
try {
if (G.playlist[G.item].levels[0].file.length > 0) {
if (G.config.shuffle) {
f(y())
} else {
if (G.item + 1 == G.playlist.length) {
f(0)
} else {
f(G.item + 1)
}
}
}
if (G.state != b.api.events.state.IDLE) {
var N = G.state;
G.state = b.api.events.state.IDLE;
m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE, {
oldstate: N,
newstate: b.api.events.state.IDLE
})
}
u();
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function j() {
try {
if (G.playlist[G.item].levels[0].file.length > 0) {
if (G.config.shuffle) {
f(y())
} else {
if (G.item === 0) {
f(G.playlist.length - 1)
} else {
f(G.item - 1)
}
}
}
if (G.state != b.api.events.state.IDLE) {
var N = G.state;
G.state = b.api.events.state.IDLE;
m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE, {
oldstate: N,
newstate: b.api.events.state.IDLE
})
}
u();
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function y() {
var M = null;
if (G.playlist.length > 1) {
while (!c.exists(M)) {
M = Math.floor(Math.random() * G.playlist.length);
if (M == G.item) {
M = null
}
}
} else {
M = 0
}
return M
}
function t(N) {
if (!G.playlist || !G.playlist[N]) {
return false
}
try {
if (G.playlist[N].levels[0].file.length > 0) {
var O = G.state;
if (O !== b.api.events.state.IDLE) {
if (G.playlist[G.item].provider == G.playlist[N].provider) {
n(false)
} else {
n()
}
}
f(N);
u()
}
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function f(M) {
if (!G.playlist[M]) {
return
}
G.setActiveMediaProvider(G.playlist[M]);
if (G.item != M) {
G.item = M;
J = true;
m.sendEvent(b.api.events.JWPLAYER_PLAYLIST_ITEM, {
index: M
})
}
}
function H(N) {
try {
f(G.item);
var O = G.getMedia();
switch (typeof(N)) {
case "number":
O.volume(N);
break;
case "string":
O.volume(parseInt(N, 10));
break
}
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function q(N) {
try {
f(G.item);
var O = G.getMedia();
if (typeof N == "undefined") {
O.mute(!G.mute)
} else {
if (N.toString().toLowerCase() == "true") {
O.mute(true)
} else {
O.mute(false)
}
}
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function l(N, M) {
try {
G.width = N;
G.height = M;
g.resize(N, M);
m.sendEvent(b.api.events.JWPLAYER_RESIZE, {
width: G.width,
height: G.height
});
return true
} catch (O) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, O)
}
return false
}
function B(N) {
try {
if (typeof N == "undefined") {
G.fullscreen = !G.fullscreen;
g.fullscreen(!G.fullscreen)
} else {
if (N.toString().toLowerCase() == "true") {
G.fullscreen = true;
g.fullscreen(true)
} else {
G.fullscreen = false;
g.fullscreen(false)
}
}
m.sendEvent(b.api.events.JWPLAYER_RESIZE, {
width: G.width,
height: G.height
});
m.sendEvent(b.api.events.JWPLAYER_FULLSCREEN, {
fullscreen: N
});
return true
} catch (M) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, M)
}
return false
}
function L(M) {
try {
n();
G.loadPlaylist(M);
f(G.item);
return true
} catch (N) {
m.sendEvent(b.api.events.JWPLAYER_ERROR, N)
}
return false
}
b.html5.controller.repeatoptions = {
LIST: "LIST",
ALWAYS: "ALWAYS",
SINGLE: "SINGLE",
NONE: "NONE"
};
function s() {
switch (G.config.repeat.toUpperCase()) {
case b.html5.controller.repeatoptions.SINGLE:
u();
break;
case b.html5.controller.repeatoptions.ALWAYS:
if (G.item == G.playlist.length - 1 && !G.config.shuffle) {
t(0)
} else {
k()
}
break;
case b.html5.controller.repeatoptions.LIST:
if (G.item == G.playlist.length - 1 && !G.config.shuffle) {
n();
f(0)
} else {
k()
}
break;
default:
n();
break
}
}
var p = [];
function F(M) {
return function() {
if (d) {
x(M, arguments)
} else {
p.push({
method: M,
arguments: arguments
})
}
}
}
function x(O, N) {
var M = [];
for (i = 0; i < N.length; i++) {
M.push(N[i])
}
O.apply(this, M)
}
this.play = F(u);
this.pause = F(I);
this.seek = F(D);
this.stop = F(n);
this.next = F(k);
this.prev = F(j);
this.item = F(t);
this.setVolume = F(H);
this.setMute = F(q);
this.resize = F(l);
this.setFullscreen = F(B);
this.load = F(L);
this.playerReady = K
}
})(jwplayer);
(function(a) {
a.html5.defaultSkin = function() {
this.text = '<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>';
this.xml = null;
if (window.DOMParser) {
parser = new DOMParser();
this.xml = parser.parseFromString(this.text, "text/xml")
} else {
this.xml = new ActiveXObject("Microsoft.XMLDOM");
this.xml.async = "false";
this.xml.loadXML(this.text)
}
return this
}
})(jwplayer);
(function(a) {
_utils = a.utils;
_css = _utils.css;
_hide = function(b) {
_css(b, {
display: "none"
})
};
_show = function(b) {
_css(b, {
display: "block"
})
};
a.html5.display = function(k, G) {
var j = {
icons: true,
showmute: false
};
var Q = _utils.extend({}, j, G);
var h = k;
var P = {};
var e;
var u;
var w;
var N;
var s;
var I;
var A;
var J = !_utils.exists(h.skin.getComponentSettings("display").bufferrotation) ? 15 : parseInt(h.skin.getComponentSettings("display").bufferrotation, 10);
var q = !_utils.exists(h.skin.getComponentSettings("display").bufferinterval) ? 100 : parseInt(h.skin.getComponentSettings("display").bufferinterval, 10);
var z = -1;
var t = "";
var K = true;
var d;
var g = false;
var n = false;
var H = new a.html5.eventdispatcher();
_utils.extend(this, H);
var D = {
display: {
style: {
cursor: "pointer",
top: 0,
left: 0,
overflow: "hidden"
},
click: m
},
display_icon: {
style: {
cursor: "pointer",
position: "absolute",
top: ((h.skin.getSkinElement("display", "background").height - h.skin.getSkinElement("display", "playIcon").height) / 2),
left: ((h.skin.getSkinElement("display", "background").width - h.skin.getSkinElement("display", "playIcon").width) / 2),
border: 0,
margin: 0,
padding: 0,
zIndex: 3,
display: "none"
}
},
display_iconBackground: {
style: {
cursor: "pointer",
position: "absolute",
top: ((u - h.skin.getSkinElement("display", "background").height) / 2),
left: ((e - h.skin.getSkinElement("display", "background").width) / 2),
border: 0,
backgroundImage: (["url(", h.skin.getSkinElement("display", "background").src, ")"]).join(""),
width: h.skin.getSkinElement("display", "background").width,
height: h.skin.getSkinElement("display", "background").height,
margin: 0,
padding: 0,
zIndex: 2,
display: "none"
}
},
display_image: {
style: {
display: "none",
width: e,
height: u,
position: "absolute",
cursor: "pointer",
left: 0,
top: 0,
margin: 0,
padding: 0,
textDecoration: "none",
zIndex: 1
}
},
display_text: {
style: {
zIndex: 4,
position: "relative",
opacity: 0.8,
backgroundColor: parseInt("000000", 16),
color: parseInt("ffffff", 16),
textAlign: "center",
fontFamily: "Arial,sans-serif",
padding: "0 5px",
fontSize: 14
}
}
};
h.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, p);
h.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE, p);
h.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, p);
h.jwAddEventListener(a.api.events.JWPLAYER_ERROR, o);
L();
function L() {
P.display = C("div", "display");
P.display_text = C("div", "display_text");
P.display.appendChild(P.display_text);
P.display_image = C("img", "display_image");
P.display_image.onerror = function(R) {
_hide(P.display_image)
};
P.display_image.onload = y;
P.display_icon = C("div", "display_icon");
P.display_iconBackground = C("div", "display_iconBackground");
P.display.appendChild(P.display_image);
P.display_iconBackground.appendChild(P.display_icon);
P.display.appendChild(P.display_iconBackground);
f();
setTimeout((function() {
n = true;
if (Q.icons.toString() == "true") {
F()
}
}), 1)
}
this.getDisplayElement = function() {
return P.display
};
this.resize = function(S, R) {
_css(P.display, {
width: S,
height: R
});
_css(P.display_text, {
width: (S - 10),
top: ((R - P.display_text.getBoundingClientRect().height) / 2)
});
_css(P.display_iconBackground, {
top: ((R - h.skin.getSkinElement("display", "background").height) / 2),
left: ((S - h.skin.getSkinElement("display", "background").width) / 2)
});
if (e != S || u != R) {
e = S;
u = R;
d = undefined;
F()
}
c();
p({})
};
this.show = function() {
if (g) {
g = false;
r(h.jwGetState())
}
};
this.hide = function() {
if (!g) {
B();
g = true
}
};
function y(R) {
w = P.display_image.naturalWidth;
N = P.display_image.naturalHeight;
c()
}
function c() {
_utils.stretch(h.jwGetStretching(), P.display_image, e, u, w, N)
}
function C(R, T) {
var S = document.createElement(R);
S.id = h.id + "_jwplayer_" + T;
_css(S, D[T].style);
return S
}
function f() {
for (var R in P) {
if (_utils.exists(D[R].click)) {
P[R].onclick = D[R].click
}
}
}
function m(R) {
if (typeof R.preventDefault != "undefined") {
R.preventDefault()
} else {
R.returnValue = false
} if (h.jwGetState() != a.api.events.state.PLAYING) {
h.jwPlay()
} else {
h.jwPause()
}
}
function O(R) {
if (A) {
B();
return
}
P.display_icon.style.backgroundImage = (["url(", h.skin.getSkinElement("display", R).src, ")"]).join("");
_css(P.display_icon, {
width: h.skin.getSkinElement("display", R).width,
height: h.skin.getSkinElement("display", R).height,
top: (h.skin.getSkinElement("display", "background").height - h.skin.getSkinElement("display", R).height) / 2,
left: (h.skin.getSkinElement("display", "background").width - h.skin.getSkinElement("display", R).width) / 2
});
b();
if (_utils.exists(h.skin.getSkinElement("display", R + "Over"))) {
P.display_icon.onmouseover = function(S) {
P.display_icon.style.backgroundImage = ["url(", h.skin.getSkinElement("display", R + "Over").src, ")"].join("")
};
P.display_icon.onmouseout = function(S) {
P.display_icon.style.backgroundImage = ["url(", h.skin.getSkinElement("display", R).src, ")"].join("")
}
} else {
P.display_icon.onmouseover = null;
P.display_icon.onmouseout = null
}
}
function B() {
if (Q.icons.toString() == "true") {
_hide(P.display_icon);
_hide(P.display_iconBackground);
M()
}
}
function b() {
if (!g && Q.icons.toString() == "true") {
_show(P.display_icon);
_show(P.display_iconBackground);
F()
}
}
function o(R) {
A = true;
B();
P.display_text.innerHTML = R.error;
_show(P.display_text);
P.display_text.style.top = ((u - P.display_text.getBoundingClientRect().height) / 2) + "px"
}
function E() {
P.display_image.style.display = "none"
}
function p(R) {
if ((R.type == a.api.events.JWPLAYER_PLAYER_STATE || R.type == a.api.events.JWPLAYER_PLAYLIST_ITEM) && A) {
A = false;
_hide(P.display_text)
}
var S = h.jwGetState();
if (S == t) {
return
}
t = S;
if (z >= 0) {
clearTimeout(z)
}
if (K || h.jwGetState() == a.api.events.state.PLAYING || h.jwGetState() == a.api.events.state.PAUSED) {
r(h.jwGetState())
} else {
z = setTimeout(l(h.jwGetState()), 500)
}
}
function l(R) {
return (function() {
r(R)
})
}
function r(R) {
if (_utils.exists(I)) {
clearInterval(I);
I = null;
_utils.animations.rotate(P.display_icon, 0)
}
switch (R) {
case a.api.events.state.BUFFERING:
if (_utils.isIOS()) {
E();
B()
} else {
if (h.jwGetPlaylist()[h.jwGetItem()].provider == "sound") {
v()
}
s = 0;
I = setInterval(function() {
s += J;
_utils.animations.rotate(P.display_icon, s % 360)
}, q);
O("bufferIcon");
K = true
}
break;
case a.api.events.state.PAUSED:
if (!_utils.isIOS()) {
if (h.jwGetPlaylist()[h.jwGetItem()].provider != "sound") {
_css(P.display_image, {
background: "transparent no-repeat center center"
})
}
O("playIcon");
K = true
}
break;
case a.api.events.state.IDLE:
if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].image) {
v()
} else {
E()
}
O("playIcon");
K = true;
break;
default:
if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].provider == "sound") {
if (_utils.isIOS()) {
E();
K = false
} else {
v()
}
} else {
E();
K = false
} if (h.jwGetMute() && Q.showmute) {
O("muteIcon")
} else {
B()
}
break
}
z = -1
}
function v() {
if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].image) {
_css(P.display_image, {
display: "block"
});
P.display_image.src = _utils.getAbsolutePath(h.jwGetPlaylist()[h.jwGetItem()].image)
}
}
function x(R) {
return function() {
if (!n) {
return
}
if (!g && d != R) {
d = R;
H.sendEvent(R, {
component: "display",
boundingRect: _utils.getDimensions(P.display_iconBackground)
})
}
}
}
var F = x(a.api.events.JWPLAYER_COMPONENT_SHOW);
var M = x(a.api.events.JWPLAYER_COMPONENT_HIDE);
return this
}
})(jwplayer);
(function(a) {
_css = a.utils.css;
a.html5.dock = function(p, u) {
function q() {
return {
align: a.html5.view.positions.RIGHT
}
}
var k = a.utils.extend({}, q(), u);
if (k.align == "FALSE") {
return
}
var f = {};
var s = [];
var g;
var v;
var d = false;
var t = false;
var e = {
x: 0,
y: 0,
width: 0,
height: 0
};
var r;
var j = new a.html5.eventdispatcher();
_utils.extend(this, j);
var m = document.createElement("div");
m.id = p.id + "_jwplayer_dock";
p.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, l);
this.getDisplayElement = function() {
return m
};
this.setButton = function(A, x, y, z) {
if (!x && f[A]) {
a.utils.arrays.remove(s, A);
m.removeChild(f[A].div);
delete f[A]
} else {
if (x) {
if (!f[A]) {
f[A] = {}
}
f[A].handler = x;
f[A].outGraphic = y;
f[A].overGraphic = z;
if (!f[A].div) {
s.push(A);
f[A].div = document.createElement("div");
f[A].div.style.position = "relative";
m.appendChild(f[A].div);
f[A].div.appendChild(document.createElement("img"));
f[A].div.childNodes[0].style.position = "absolute";
f[A].div.childNodes[0].style.left = 0;
f[A].div.childNodes[0].style.top = 0;
f[A].div.childNodes[0].style.zIndex = 10;
f[A].div.childNodes[0].style.cursor = "pointer";
f[A].div.appendChild(document.createElement("img"));
f[A].div.childNodes[1].style.position = "absolute";
f[A].div.childNodes[1].style.left = 0;
f[A].div.childNodes[1].style.top = 0;
if (p.skin.getSkinElement("dock", "button")) {
f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src
}
f[A].div.childNodes[1].style.zIndex = 9;
f[A].div.childNodes[1].style.cursor = "pointer";
f[A].div.onmouseover = function() {
if (f[A].overGraphic) {
f[A].div.childNodes[0].src = f[A].overGraphic
}
if (p.skin.getSkinElement("dock", "buttonOver")) {
f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "buttonOver").src
}
};
f[A].div.onmouseout = function() {
if (f[A].outGraphic) {
f[A].div.childNodes[0].src = f[A].outGraphic
}
if (p.skin.getSkinElement("dock", "button")) {
f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src
}
};
if (f[A].overGraphic) {
f[A].div.childNodes[0].src = f[A].overGraphic
}
if (f[A].outGraphic) {
f[A].div.childNodes[0].src = f[A].outGraphic
}
if (p.skin.getSkinElement("dock", "button")) {
f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src
}
}
if (x) {
f[A].div.onclick = function(B) {
B.preventDefault();
a(p.id).callback(A);
if (f[A].overGraphic) {
f[A].div.childNodes[0].src = f[A].overGraphic
}
if (p.skin.getSkinElement("dock", "button")) {
f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src
}
}
}
}
}
h(g, v)
};
function h(x, J) {
if (s.length > 0) {
var y = 10;
var I = y;
var F = -1;
var G = p.skin.getSkinElement("dock", "button").height;
var E = p.skin.getSkinElement("dock", "button").width;
var C = x - E - y;
var H, B;
if (k.align == a.html5.view.positions.LEFT) {
F = 1;
C = y
}
for (var z = 0; z < s.length; z++) {
var K = Math.floor(I / J);
if ((I + G + y) > ((K + 1) * J)) {
I = ((K + 1) * J) + y;
K = Math.floor(I / J)
}
var A = f[s[z]].div;
A.style.top = (I % J) + "px";
A.style.left = (C + (p.skin.getSkinElement("dock", "button").width + y) * K * F) + "px";
var D = {
x: a.utils.parseDimension(A.style.left),
y: a.utils.parseDimension(A.style.top),
width: E,
height: G
};
if (!H || (D.x <= H.x && D.y <= H.y)) {
H = D
}
if (!B || (D.x >= B.x && D.y >= B.y)) {
B = D
}
I += p.skin.getSkinElement("dock", "button").height + y
}
e = {
x: H.x,
y: H.y,
width: B.x - H.x + B.width,
height: H.y - B.y + B.height
}
}
if (t != p.jwGetFullscreen() || g != x || v != J) {
g = x;
v = J;
t = p.jwGetFullscreen();
r = undefined;
setTimeout(n, 1)
}
}
function b(x) {
return function() {
if (!d && r != x && s.length > 0) {
r = x;
j.sendEvent(x, {
component: "dock",
boundingRect: e
})
}
}
}
function l(x) {
if (a.utils.isIOS()) {
switch (x.newstate) {
case a.api.events.state.IDLE:
o();
break;
default:
c();
break
}
}
}
var n = b(a.api.events.JWPLAYER_COMPONENT_SHOW);
var w = b(a.api.events.JWPLAYER_COMPONENT_HIDE);
this.resize = h;
var o = function() {
_css(m, {
display: "block"
});
if (d) {
d = false;
n()
}
};
var c = function() {
_css(m, {
display: "none"
});
if (!d) {
w();
d = true
}
};
this.hide = c;
this.show = o;
return this
}
})(jwplayer);
(function(a) {
a.html5.eventdispatcher = function(d, b) {
var c = new a.events.eventdispatcher(b);
a.utils.extend(this, c);
this.sendEvent = function(e, f) {
if (!a.utils.exists(f)) {
f = {}
}
a.utils.extend(f, {
id: d,
version: a.version,
type: e
});
c.sendEvent(e, f)
}
}
})(jwplayer);
(function(a) {
var b = {
prefix: "http://l.longtailvideo.com/html5/",
file: "logo.png",
link: "http://www.longtailvideo.com/players/jw-flv-player/",
margin: 8,
out: 0.5,
over: 1,
timeout: 5,
hide: true,
position: "bottom-left"
};
_css = a.utils.css;
a.html5.logo = function(n, r) {
var q = n;
var u;
var d;
var t;
var h = false;
g();
function g() {
o();
c();
l()
}
function o() {
if (b.prefix) {
var v = n.version.split(/\W/).splice(0, 2).join("/");
if (b.prefix.indexOf(v) < 0) {
b.prefix += v + "/"
}
}
if (r.position == a.html5.view.positions.OVER) {
r.position = b.position
}
d = a.utils.extend({}, b)
}
function c() {
t = document.createElement("img");
t.id = q.id + "_jwplayer_logo";
t.style.display = "none";
t.onload = function(v) {
_css(t, k());
q.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, j);
p()
};
if (!d.file) {
return
}
if (d.file.indexOf("http://") === 0) {
t.src = d.file
} else {
t.src = d.prefix + d.file
}
}
if (!d.file) {
return
}
this.resize = function(w, v) {};
this.getDisplayElement = function() {
return t
};
function l() {
if (d.link) {
t.onmouseover = f;
t.onmouseout = p;
t.onclick = s
} else {
this.mouseEnabled = false
}
}
function s(v) {
if (typeof v != "undefined") {
v.stopPropagation()
}
if (!h) {
return
}
q.jwPause();
q.jwSetFullscreen(false);
if (d.link) {
window.open(d.link, "_top")
}
return
}
function p(v) {
if (d.link && h) {
t.style.opacity = d.out
}
return
}
function f(v) {
if (d.hide.toString() == "true" && h) {
t.style.opacity = d.over
}
return
}
function k() {
var x = {
textDecoration: "none",
position: "absolute",
cursor: "pointer"
};
x.display = (d.hide.toString() == "true") ? "none" : "block";
var w = d.position.toLowerCase().split("-");
for (var v in w) {
x[w[v]] = d.margin
}
return x
}
function m() {
if (d.hide.toString() == "true") {
t.style.display = "block";
t.style.opacity = 0;
a.utils.fadeTo(t, d.out, 0.1, parseFloat(t.style.opacity));
u = setTimeout(function() {
e()
}, d.timeout * 1000)
}
h = true
}
function e() {
h = false;
if (d.hide.toString() == "true") {
a.utils.fadeTo(t, 0, 0.1, parseFloat(t.style.opacity))
}
}
function j(v) {
if (v.newstate == a.api.events.state.BUFFERING) {
clearTimeout(u);
m()
}
}
return this
}
})(jwplayer);
(function(a) {
var c = {
ended: a.api.events.state.IDLE,
playing: a.api.events.state.PLAYING,
pause: a.api.events.state.PAUSED,
buffering: a.api.events.state.BUFFERING
};
var e = a.utils;
var b = e.css;
var d = e.isIOS();
a.html5.mediavideo = function(h, s) {
var r = {
abort: n,
canplay: k,
canplaythrough: k,
durationchange: G,
emptied: n,
ended: k,
error: u,
loadeddata: G,
loadedmetadata: G,
loadstart: k,
pause: k,
play: n,
playing: k,
progress: v,
ratechange: n,
seeked: k,
seeking: k,
stalled: k,
suspend: k,
timeupdate: D,
volumechange: n,
waiting: k,
canshowcurrentframe: n,
dataunavailable: n,
empty: n,
load: z,
loadedfirstframe: n
};
var j = new a.html5.eventdispatcher();
e.extend(this, j);
var y = h,
l = s,
m, B, A, x, f, H = false,
C, p, q;
o();
this.load = function(J, K) {
if (typeof K == "undefined") {
K = true
}
x = J;
e.empty(m);
q = 0;
if (J.levels && J.levels.length > 0) {
if (J.levels.length == 1) {
m.src = J.levels[0].file
} else {
if (m.src) {
m.removeAttribute("src")
}
for (var I = 0; I < J.levels.length; I++) {
var L = m.ownerDocument.createElement("source");
L.src = J.levels[I].file;
m.appendChild(L);
q++
}
}
} else {
m.src = J.file
} if (d) {
if (J.image) {
m.poster = J.image
}
m.controls = "controls";
m.style.display = "block"
}
C = p = A = false;
y.buffer = 0;
if (!e.exists(J.start)) {
J.start = 0
}
y.duration = J.duration;
j.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);
if ((!d && J.levels.length == 1) || !H) {
m.load()
}
H = false;
if (K) {
E(a.api.events.state.BUFFERING);
j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, {
bufferPercent: 0
});
this.play()
}
};
this.play = function() {
if (B != a.api.events.state.PLAYING) {
t();
if (p) {
E(a.api.events.state.PLAYING)
} else {
E(a.api.events.state.BUFFERING)
}
m.play()
}
};
this.pause = function() {
m.pause();
E(a.api.events.state.PAUSED)
};
this.seek = function(I) {
if (!(y.duration <= 0 || isNaN(y.duration)) && !(y.position <= 0 || isNaN(y.position))) {
m.currentTime = I;
m.play()
}
};
_stop = this.stop = function(I) {
if (!e.exists(I)) {
I = true
}
g();
if (I) {
m.style.display = "none";
p = false;
var J = navigator.userAgent;
if (J.match(/chrome/i)) {
m.src = undefined
} else {
if (J.match(/safari/i)) {
m.removeAttribute("src")
} else {
m.src = ""
}
}
m.removeAttribute("controls");
m.removeAttribute("poster");
e.empty(m);
m.load();
H = true;
if (m.webkitSupportsFullscreen) {
try {
m.webkitExitFullscreen()
} catch (K) {}
}
}
E(a.api.events.state.IDLE)
};
this.fullscreen = function(I) {
if (I === true) {
this.resize("100%", "100%")
} else {
this.resize(y.config.width, y.config.height)
}
};
this.resize = function(J, I) {
if (false) {
b(l, {
width: J,
height: I
})
}
j.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE, {
fullscreen: y.fullscreen,
width: J,
hieght: I
})
};
this.volume = function(I) {
if (!d) {
m.volume = I / 100;
y.volume = I;
j.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME, {
volume: Math.round(I)
})
}
};
this.mute = function(I) {
if (!d) {
m.muted = I;
y.mute = I;
j.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE, {
mute: I
})
}
};
this.getDisplayElement = function() {
return m
};
this.hasChrome = function() {
return false
};
function o() {
m = document.createElement("video");
B = a.api.events.state.IDLE;
for (var I in r) {
m.addEventListener(I, function(J) {
if (e.exists(J.target.parentNode)) {
r[J.type](J)
}
}, true)
}
m.setAttribute("x-webkit-airplay", "allow");
if (l.parentNode) {
l.parentNode.replaceChild(m, l)
}
if (!m.id) {
m.id = l.id
}
}
function E(I) {
if (I == a.api.events.state.PAUSED && B == a.api.events.state.IDLE) {
return
}
if (B != I) {
var J = B;
y.state = B = I;
j.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE, {
oldstate: J,
newstate: I
})
}
}
function n(I) {}
function v(K) {
var J;
if (e.exists(K) && K.lengthComputable && K.total) {
J = K.loaded / K.total * 100
} else {
if (e.exists(m.buffered) && (m.buffered.length > 0)) {
var I = m.buffered.length - 1;
if (I >= 0) {
J = m.buffered.end(I) / m.duration * 100
}
}
} if (p === false && B == a.api.events.state.BUFFERING) {
j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);
p = true
}
if (!C) {
if (J == 100) {
C = true
}
if (e.exists(J) && (J > y.buffer)) {
y.buffer = Math.round(J);
j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, {
bufferPercent: Math.round(J)
})
}
}
}
function D(J) {
if (e.exists(J) && e.exists(J.target)) {
if (!isNaN(J.target.duration) && (isNaN(y.duration) || y.duration < 1)) {
if (J.target.duration == Infinity) {
y.duration = 0
} else {
y.duration = Math.round(J.target.duration * 10) / 10
}
}
if (!A && m.readyState > 0) {
m.style.display = "block";
E(a.api.events.state.PLAYING)
}
if (B == a.api.events.state.PLAYING) {
if (!A && m.readyState > 0) {
A = true;
try {
if (m.currentTime < x.start) {
m.currentTime = x.start
}
} catch (I) {}
m.volume = y.volume / 100;
m.muted = y.mute
}
y.position = y.duration > 0 ? (Math.round(J.target.currentTime * 10) / 10) : 0;
j.sendEvent(a.api.events.JWPLAYER_MEDIA_TIME, {
position: y.position,
duration: y.duration
});
if (y.position >= y.duration && (y.position > 0 || y.duration > 0)) {
w()
}
}
}
v(J)
}
function z(I) {}
function k(I) {
if (c[I.type]) {
if (I.type == "ended") {
w()
} else {
E(c[I.type])
}
}
}
function G(I) {
var J = {
height: I.target.videoHeight,
width: I.target.videoWidth,
duration: Math.round(I.target.duration * 10) / 10
};
if ((y.duration === 0 || isNaN(y.duration)) && I.target.duration != Infinity) {
y.duration = Math.round(I.target.duration * 10) / 10
}
j.sendEvent(a.api.events.JWPLAYER_MEDIA_META, {
metadata: J
})
}
function u(K) {
if (B == a.api.events.state.IDLE) {
return
}
var J = "There was an error: ";
if ((K.target.error && K.target.tagName.toLowerCase() == "video") || K.target.parentNode.error && K.target.parentNode.tagName.toLowerCase() == "video") {
var I = !e.exists(K.target.error) ? K.target.parentNode.error : K.target.error;
switch (I.code) {
case I.MEDIA_ERR_ABORTED:
J = "You aborted the video playback: ";
break;
case I.MEDIA_ERR_NETWORK:
J = "A network error caused the video download to fail part-way: ";
break;
case I.MEDIA_ERR_DECODE:
J = "The video playback was aborted due to a corruption problem or because the video used features your browser did not support: ";
break;
case I.MEDIA_ERR_SRC_NOT_SUPPORTED:
J = "The video could not be loaded, either because the server or network failed or because the format is not supported: ";
break;
default:
J = "An unknown error occurred: ";
break
}
} else {
if (K.target.tagName.toLowerCase() == "source") {
q--;
if (q > 0) {
return
}
J = "The video could not be loaded, either because the server or network failed or because the format is not supported: "
} else {
e.log("An unknown error occurred. Continuing...");
return
}
}
_stop(false);
J += F();
_error = true;
j.sendEvent(a.api.events.JWPLAYER_ERROR, {
error: J
});
return
}
function F() {
var K = "";
for (var J in x.levels) {
var I = x.levels[J];
var L = l.ownerDocument.createElement("source");
K += a.utils.getAbsolutePath(I.file);
if (J < (x.levels.length - 1)) {
K += ", "
}
}
return K
}
function t() {
if (!e.exists(f)) {
f = setInterval(function() {
v()
}, 100)
}
}
function g() {
clearInterval(f);
f = null
}
function w() {
if (B != a.api.events.state.IDLE) {
_stop(false);
j.sendEvent(a.api.events.JWPLAYER_MEDIA_COMPLETE)
}
}
}
})(jwplayer);
(function(a) {
var c = {
ended: a.api.events.state.IDLE,
playing: a.api.events.state.PLAYING,
pause: a.api.events.state.PAUSED,
buffering: a.api.events.state.BUFFERING
};
var b = a.utils.css;
a.html5.mediayoutube = function(j, e) {
var f = new a.html5.eventdispatcher();
a.utils.extend(this, f);
var l = j;
var h = document.getElementById(e.id);
var g = a.api.events.state.IDLE;
var n, m;
function k(p) {
if (g != p) {
var q = g;
l.state = p;
g = p;
f.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE, {
oldstate: q,
newstate: p
})
}
}
this.getDisplayElement = function() {
return h
};
this.play = function() {
if (g == a.api.events.state.IDLE) {
f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, {
bufferPercent: 100
});
f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);
k(a.api.events.state.PLAYING)
} else {
if (g == a.api.events.state.PAUSED) {
k(a.api.events.state.PLAYING)
}
}
};
this.pause = function() {
k(a.api.events.state.PAUSED)
};
this.seek = function(p) {};
this.stop = function(p) {
if (!_utils.exists(p)) {
p = true
}
l.position = 0;
k(a.api.events.state.IDLE);
if (p) {
b(h, {
display: "none"
})
}
};
this.volume = function(p) {
l.volume = p;
f.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME, {
volume: Math.round(p)
})
};
this.mute = function(p) {
h.muted = p;
l.mute = p;
f.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE, {
mute: p
})
};
this.resize = function(q, p) {
if (q * p > 0 && n) {
n.width = m.width = q;
n.height = m.height = p
}
f.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE, {
fullscreen: l.fullscreen,
width: q,
height: p
})
};
this.fullscreen = function(p) {
if (p === true) {
this.resize("100%", "100%")
} else {
this.resize(l.config.width, l.config.height)
}
};
this.load = function(p) {
o(p);
b(n, {
display: "block"
});
k(a.api.events.state.BUFFERING);
f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, {
bufferPercent: 0
});
f.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);
this.play()
};
this.hasChrome = function() {
return (g != a.api.events.state.IDLE)
};
function o(v) {
var s = v.levels[0].file;
s = ["http://www.youtube.com/v/", d(s), "&hl=en_US&fs=1&autoplay=1"].join("");
n = document.createElement("object");
n.id = h.id;
n.style.position = "absolute";
var u = {
movie: s,
allowfullscreen: "true",
allowscriptaccess: "always"
};
for (var p in u) {
var t = document.createElement("param");
t.name = p;
t.value = u[p];
n.appendChild(t)
}
m = document.createElement("embed");
n.appendChild(m);
var q = {
src: s,
type: "application/x-shockwave-flash",
allowfullscreen: "true",
allowscriptaccess: "always",
width: n.width,
height: n.height
};
for (var r in q) {
m.setAttribute(r, q[r])
}
n.appendChild(m);
n.style.zIndex = 2147483000;
if (h != n && h.parentNode) {
h.parentNode.replaceChild(n, h)
}
h = n
}
function d(q) {
var p = q.split(/\?|\#\!/);
var s = "";
for (var r = 0; r < p.length; r++) {
if (p[r].substr(0, 2) == "v=") {
s = p[r].substr(2)
}
}
if (s == "") {
if (q.indexOf("/v/") >= 0) {
s = q.substr(q.indexOf("/v/") + 3)
} else {
if (q.indexOf("youtu.be") >= 0) {
s = q.substr(q.indexOf("youtu.be/") + 9)
} else {
s = q
}
}
}
if (s.indexOf("?") > -1) {
s = s.substr(0, s.indexOf("?"))
}
if (s.indexOf("&") > -1) {
s = s.substr(0, s.indexOf("&"))
}
return s
}
this.embed = m;
return this
}
})(jwplayer);
(function(jwplayer) {
var _configurableStateVariables = ["width", "height", "start", "duration", "volume", "mute", "fullscreen", "item", "plugins", "stretching"];
jwplayer.html5.model = function(api, container, options) {
var _api = api;
var _container = container;
var _model = {
id: _container.id,
playlist: [],
state: jwplayer.api.events.state.IDLE,
position: 0,
buffer: 0,
config: {
width: 480,
height: 320,
item: -1,
skin: undefined,
file: undefined,
image: undefined,
start: 0,
duration: 0,
bufferlength: 5,
volume: 90,
mute: false,
fullscreen: false,
repeat: "",
stretching: jwplayer.utils.stretching.UNIFORM,
autostart: false,
debug: undefined,
screencolor: undefined
}
};
var _media;
var _eventDispatcher = new jwplayer.html5.eventdispatcher();
var _components = ["display", "logo", "controlbar", "playlist", "dock"];
jwplayer.utils.extend(_model, _eventDispatcher);
for (var option in options) {
if (typeof options[option] == "string") {
var type = /color$/.test(option) ? "color" : null;
options[option] = jwplayer.utils.typechecker(options[option], type)
}
var config = _model.config;
var path = option.split(".");
for (var edge in path) {
if (edge == path.length - 1) {
config[path[edge]] = options[option]
} else {
if (!jwplayer.utils.exists(config[path[edge]])) {
config[path[edge]] = {}
}
config = config[path[edge]]
}
}
}
for (var index in _configurableStateVariables) {
var configurableStateVariable = _configurableStateVariables[index];
_model[configurableStateVariable] = _model.config[configurableStateVariable]
}
var pluginorder = _components.concat([]);
if (jwplayer.utils.exists(_model.plugins)) {
if (typeof _model.plugins == "string") {
var userplugins = _model.plugins.split(",");
for (var userplugin in userplugins) {
if (typeof userplugins[userplugin] == "string") {
pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g, ""))
}
}
}
}
if (jwplayer.utils.isIOS()) {
pluginorder = ["display", "logo", "dock", "playlist"];
if (!jwplayer.utils.exists(_model.config.repeat)) {
_model.config.repeat = "list"
}
} else {
if (_model.config.chromeless) {
pluginorder = ["logo", "dock", "playlist"];
if (!jwplayer.utils.exists(_model.config.repeat)) {
_model.config.repeat = "list"
}
}
}
_model.plugins = {
order: pluginorder,
config: {},
object: {}
};
if (typeof _model.config.components != "undefined") {
for (var component in _model.config.components) {
_model.plugins.config[component] = _model.config.components[component]
}
}
for (var pluginIndex in _model.plugins.order) {
var pluginName = _model.plugins.order[pluginIndex];
var pluginConfig = !jwplayer.utils.exists(_model.plugins.config[pluginName]) ? {} : _model.plugins.config[pluginName];
_model.plugins.config[pluginName] = !jwplayer.utils.exists(_model.plugins.config[pluginName]) ? pluginConfig : jwplayer.utils.extend(_model.plugins.config[pluginName], pluginConfig);
if (!jwplayer.utils.exists(_model.plugins.config[pluginName].position)) {
if (pluginName == "playlist") {
_model.plugins.config[pluginName].position = jwplayer.html5.view.positions.NONE
} else {
_model.plugins.config[pluginName].position = jwplayer.html5.view.positions.OVER
}
} else {
_model.plugins.config[pluginName].position = _model.plugins.config[pluginName].position.toString().toUpperCase()
}
}
if (typeof _model.plugins.config.dock != "undefined") {
if (typeof _model.plugins.config.dock != "object") {
var position = _model.plugins.config.dock.toString().toUpperCase();
_model.plugins.config.dock = {
position: position
}
}
if (typeof _model.plugins.config.dock.position != "undefined") {
_model.plugins.config.dock.align = _model.plugins.config.dock.position;
_model.plugins.config.dock.position = jwplayer.html5.view.positions.OVER
}
}
function _loadExternal(playlistfile) {
var loader = new jwplayer.html5.playlistloader();
loader.addEventListener(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED, function(evt) {
_model.playlist = new jwplayer.html5.playlist(evt);
_loadComplete(true)
});
loader.addEventListener(jwplayer.api.events.JWPLAYER_ERROR, function(evt) {
_model.playlist = new jwplayer.html5.playlist({
playlist: []
});
_loadComplete(false)
});
loader.load(playlistfile)
}
function _loadComplete() {
if (_model.config.shuffle) {
_model.item = _getShuffleItem()
} else {
if (_model.config.item >= _model.playlist.length) {
_model.config.item = _model.playlist.length - 1
} else {
if (_model.config.item < 0) {
_model.config.item = 0
}
}
_model.item = _model.config.item
}
_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED, {
playlist: _model.playlist
});
_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_ITEM, {
index: _model.item
})
}
_model.loadPlaylist = function(arg) {
var input;
if (typeof arg == "string") {
if (arg.indexOf("[") == 0 || arg.indexOf("{") == "0") {
try {
input = eval(arg)
} catch (err) {
input = arg
}
} else {
input = arg
}
} else {
input = arg
}
var config;
switch (jwplayer.utils.typeOf(input)) {
case "object":
config = input;
break;
case "array":
config = {
playlist: input
};
break;
default:
_loadExternal(input);
return;
break
}
_model.playlist = new jwplayer.html5.playlist(config);
if (jwplayer.utils.extension(_model.playlist[0].file) == "xml") {
_loadExternal(_model.playlist[0].file)
} else {
_loadComplete()
}
};
function _getShuffleItem() {
var result = null;
if (_model.playlist.length > 1) {
while (!jwplayer.utils.exists(result)) {
result = Math.floor(Math.random() * _model.playlist.length);
if (result == _model.item) {
result = null
}
}
} else {
result = 0
}
return result
}
function forward(evt) {
if (evt.type == jwplayer.api.events.JWPLAYER_MEDIA_LOADED) {
_container = _media.getDisplayElement()
}
_eventDispatcher.sendEvent(evt.type, evt)
}
var _mediaProviders = {};
_model.setActiveMediaProvider = function(playlistItem) {
if (playlistItem.provider == "audio") {
playlistItem.provider = "sound"
}
var provider = playlistItem.provider;
var current = _media ? _media.getDisplayElement() : null;
if (provider == "sound" || provider == "http" || provider == "") {
provider = "video"
}
if (!jwplayer.utils.exists(_mediaProviders[provider])) {
switch (provider) {
case "video":
_media = new jwplayer.html5.mediavideo(_model, current ? current : _container);
break;
case "youtube":
_media = new jwplayer.html5.mediayoutube(_model, current ? current : _container);
break
}
if (!jwplayer.utils.exists(_media)) {
return false
}
_media.addGlobalListener(forward);
_mediaProviders[provider] = _media
} else {
if (_media != _mediaProviders[provider]) {
if (_media) {
_media.stop()
}
_media = _mediaProviders[provider]
}
}
return true
};
_model.getMedia = function() {
return _media
};
_model.seek = function(pos) {
_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_MEDIA_SEEK, {
position: _model.position,
offset: pos
});
return _media.seek(pos)
};
_model.setupPlugins = function() {
if (!jwplayer.utils.exists(_model.plugins) || !jwplayer.utils.exists(_model.plugins.order) || _model.plugins.order.length == 0) {
jwplayer.utils.log("No plugins to set up");
return _model
}
for (var i = 0; i < _model.plugins.order.length; i++) {
try {
var pluginName = _model.plugins.order[i];
if (jwplayer.utils.exists(jwplayer.html5[pluginName])) {
if (pluginName == "playlist") {
_model.plugins.object[pluginName] = new jwplayer.html5.playlistcomponent(_api, _model.plugins.config[pluginName])
} else {
_model.plugins.object[pluginName] = new jwplayer.html5[pluginName](_api, _model.plugins.config[pluginName])
}
} else {
_model.plugins.order.splice(plugin, plugin + 1)
} if (typeof _model.plugins.object[pluginName].addGlobalListener == "function") {
_model.plugins.object[pluginName].addGlobalListener(forward)
}
} catch (err) {
jwplayer.utils.log("Could not setup " + pluginName)
}
}
};
return _model
}
})(jwplayer);
(function(a) {
a.html5.playlist = function(b) {
var d = [];
if (b.playlist && b.playlist instanceof Array && b.playlist.length > 0) {
for (var c in b.playlist) {
if (!isNaN(parseInt(c))) {
d.push(new a.html5.playlistitem(b.playlist[c]))
}
}
} else {
d.push(new a.html5.playlistitem(b))
}
return d
}
})(jwplayer);
(function(a) {
var c = {
size: 180,
position: a.html5.view.positions.NONE,
itemheight: 60,
thumbs: true,
fontcolor: "#000000",
overcolor: "",
activecolor: "",
backgroundcolor: "#f8f8f8",
font: "_sans",
fontsize: "",
fontstyle: "",
fontweight: ""
};
var b = {
_sans: "Arial, Helvetica, sans-serif",
_serif: "Times, Times New Roman, serif",
_typewriter: "Courier New, Courier, monospace"
};
_utils = a.utils;
_css = _utils.css;
_hide = function(d) {
_css(d, {
display: "none"
})
};
_show = function(d) {
_css(d, {
display: "block"
})
};
a.html5.playlistcomponent = function(r, B) {
var w = r;
var e = a.utils.extend({}, c, w.skin.getComponentSettings("playlist"), B);
if (e.position == a.html5.view.positions.NONE || typeof a.html5.view.positions[e.position] == "undefined") {
return
}
var x;
var l;
var C;
var d;
var g;
var f;
var k = -1;
var h = {
background: undefined,
item: undefined,
itemOver: undefined,
itemImage: undefined,
itemActive: undefined
};
this.getDisplayElement = function() {
return x
};
this.resize = function(F, D) {
l = F;
C = D;
if (w.jwGetFullscreen()) {
_hide(x)
} else {
var E = {
display: "block",
width: l,
height: C
};
_css(x, E)
}
};
this.show = function() {
_show(x)
};
this.hide = function() {
_hide(x)
};
function j() {
x = document.createElement("div");
x.id = w.id + "_jwplayer_playlistcomponent";
switch (e.position) {
case a.html5.view.positions.RIGHT:
case a.html5.view.positions.LEFT:
x.style.width = e.size + "px";
break;
case a.html5.view.positions.TOP:
case a.html5.view.positions.BOTTOM:
x.style.height = e.size + "px";
break
}
A();
if (h.item) {
e.itemheight = h.item.height
}
x.style.backgroundColor = "#C6C6C6";
w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, s);
w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, u);
w.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, m)
}
function p() {
var D = document.createElement("ul");
_css(D, {
width: x.style.width,
minWidth: x.style.width,
height: x.style.height,
backgroundColor: e.backgroundcolor,
backgroundImage: h.background ? "url(" + h.background.src + ")" : "",
color: e.fontcolor,
listStyle: "none",
margin: 0,
padding: 0,
fontFamily: b[e.font] ? b[e.font] : b._sans,
fontSize: (e.fontsize ? e.fontsize : 11) + "px",
fontStyle: e.fontstyle,
fontWeight: e.fontweight,
overflowY: "auto"
});
return D
}
function y(D) {
return function() {
var E = f.getElementsByClassName("item")[D];
var F = e.fontcolor;
var G = h.item ? "url(" + h.item.src + ")" : "";
if (D == w.jwGetPlaylistIndex()) {
if (e.activecolor !== "") {
F = e.activecolor
}
if (h.itemActive) {
G = "url(" + h.itemActive.src + ")"
}
}
_css(E, {
color: e.overcolor !== "" ? e.overcolor : F,
backgroundImage: h.itemOver ? "url(" + h.itemOver.src + ")" : G
})
}
}
function o(D) {
return function() {
var E = f.getElementsByClassName("item")[D];
var F = e.fontcolor;
var G = h.item ? "url(" + h.item.src + ")" : "";
if (D == w.jwGetPlaylistIndex()) {
if (e.activecolor !== "") {
F = e.activecolor
}
if (h.itemActive) {
G = "url(" + h.itemActive.src + ")"
}
}
_css(E, {
color: F,
backgroundImage: G
})
}
}
function q(I) {
var P = d[I];
var O = document.createElement("li");
O.className = "item";
_css(O, {
height: e.itemheight,
display: "block",
cursor: "pointer",
backgroundImage: h.item ? "url(" + h.item.src + ")" : "",
backgroundSize: "100% " + e.itemheight + "px"
});
O.onmouseover = y(I);
O.onmouseout = o(I);
var J = document.createElement("div");
var F = new Image();
var K = 0;
var L = 0;
var M = 0;
if (v() && (P.image || P["playlist.image"] || h.itemImage)) {
F.className = "image";
if (h.itemImage) {
K = (e.itemheight - h.itemImage.height) / 2;
L = h.itemImage.width;
M = h.itemImage.height
} else {
L = e.itemheight * 4 / 3;
M = e.itemheight
}
_css(J, {
height: M,
width: L,
"float": "left",
styleFloat: "left",
cssFloat: "left",
margin: "0 5px 0 0",
background: "black",
overflow: "hidden",
margin: K + "px",
position: "relative"
});
_css(F, {
position: "relative"
});
J.appendChild(F);
F.onload = function() {
a.utils.stretch(a.utils.stretching.FILL, F, L, M, this.naturalWidth, this.naturalHeight)
};
if (P["playlist.image"]) {
F.src = P["playlist.image"]
} else {
if (P.image) {
F.src = P.image
} else {
if (h.itemImage) {
F.src = h.itemImage.src
}
}
}
O.appendChild(J)
}
var E = l - L - K * 2;
if (C < e.itemheight * d.length) {
E -= 15
}
var D = document.createElement("div");
_css(D, {
position: "relative",
height: "100%",
overflow: "hidden"
});
var G = document.createElement("span");
if (P.duration > 0) {
G.className = "duration";
_css(G, {
fontSize: (e.fontsize ? e.fontsize : 11) + "px",
fontWeight: (e.fontweight ? e.fontweight : "bold"),
width: "40px",
height: e.fontsize ? e.fontsize + 10 : 20,
lineHeight: 24,
"float": "right",
styleFloat: "right",
cssFloat: "right"
});
G.innerHTML = _utils.timeFormat(P.duration);
D.appendChild(G)
}
var N = document.createElement("span");
N.className = "title";
_css(N, {
padding: "5px 5px 0 " + (K ? 0 : "5px"),
height: e.fontsize ? e.fontsize + 10 : 20,
lineHeight: e.fontsize ? e.fontsize + 10 : 20,
overflow: "hidden",
"float": "left",
styleFloat: "left",
cssFloat: "left",
width: ((P.duration > 0) ? E - 50 : E) - 10 + "px",
fontSize: (e.fontsize ? e.fontsize : 13) + "px",
fontWeight: (e.fontweight ? e.fontweight : "bold")
});
N.innerHTML = P ? P.title : "";
D.appendChild(N);
if (P.description) {
var H = document.createElement("span");
H.className = "description";
_css(H, {
display: "block",
"float": "left",
styleFloat: "left",
cssFloat: "left",
margin: 0,
paddingLeft: N.style.paddingLeft,
paddingRight: N.style.paddingRight,
lineHeight: (e.fontsize ? e.fontsize + 4 : 16) + "px",
overflow: "hidden",
position: "relative"
});
H.innerHTML = P.description;
D.appendChild(H)
}
O.appendChild(D);
return O
}
function s(E) {
x.innerHTML = "";
d = w.jwGetPlaylist();
if (!d) {
return
}
items = [];
f = p();
for (var F = 0; F < d.length; F++) {
var D = q(F);
D.onclick = z(F);
f.appendChild(D);
items.push(D)
}
k = w.jwGetPlaylistIndex();
o(k)();
x.appendChild(f);
if (_utils.isIOS() && window.iScroll) {
f.style.height = e.itemheight * d.length + "px";
var G = new iScroll(x.id)
}
}
function z(D) {
return function() {
w.jwPlaylistItem(D);
w.jwPlay(true)
}
}
function n() {
f.scrollTop = w.jwGetPlaylistIndex() * e.itemheight
}
function v() {
return e.thumbs.toString().toLowerCase() == "true"
}
function u(D) {
if (k >= 0) {
o(k)();
k = D.index
}
o(D.index)();
n()
}
function m() {
if (e.position == a.html5.view.positions.OVER) {
switch (w.jwGetState()) {
case a.api.events.state.IDLE:
_show(x);
break;
default:
_hide(x);
break
}
}
}
function A() {
for (var D in h) {
h[D] = t(D)
}
}
function t(D) {
return w.skin.getSkinElement("playlist", D)
}
j();
return this
}
})(jwplayer);
(function(b) {
b.html5.playlistitem = function(d) {
var e = {
author: "",
date: "",
description: "",
image: "",
link: "",
mediaid: "",
tags: "",
title: "",
provider: "",
file: "",
streamer: "",
duration: -1,
start: 0,
currentLevel: -1,
levels: []
};
var c = b.utils.extend({}, e, d);
if (c.type) {
c.provider = c.type;
delete c.type
}
if (c.levels.length === 0) {
c.levels[0] = new b.html5.playlistitemlevel(c)
}
if (!c.provider) {
c.provider = a(c.levels[0])
} else {
c.provider = c.provider.toLowerCase()
}
return c
};
function a(e) {
if (b.utils.isYouTube(e.file)) {
return "youtube"
} else {
var f = b.utils.extension(e.file);
var c;
if (f && b.utils.extensionmap[f]) {
if (f == "m3u8") {
return "video"
}
c = b.utils.extensionmap[f].html5
} else {
if (e.type) {
c = e.type
}
} if (c) {
var d = c.split("/")[0];
if (d == "audio") {
return "sound"
} else {
if (d == "video") {
return d
}
}
}
}
return ""
}
})(jwplayer);
(function(a) {
a.html5.playlistitemlevel = function(b) {
var d = {
file: "",
streamer: "",
bitrate: 0,
width: 0
};
for (var c in d) {
if (a.utils.exists(b[c])) {
d[c] = b[c]
}
}
return d
}
})(jwplayer);
(function(a) {
a.html5.playlistloader = function() {
var c = new a.html5.eventdispatcher();
a.utils.extend(this, c);
this.load = function(e) {
a.utils.ajax(e, d, b)
};
function d(g) {
var f = [];
try {
var f = a.utils.parsers.rssparser.parse(g.responseXML.firstChild);
c.sendEvent(a.api.events.JWPLAYER_PLAYLIST_LOADED, {
playlist: new a.html5.playlist({
playlist: f
})
})
} catch (h) {
b("Could not parse the playlist")
}
}
function b(e) {
c.sendEvent(a.api.events.JWPLAYER_ERROR, {
error: e ? e : "could not load playlist for whatever reason. too bad"
})
}
}
})(jwplayer);
(function(a) {
a.html5.skin = function() {
var b = {};
var c = false;
this.load = function(d, e) {
new a.html5.skinloader(d, function(f) {
c = true;
b = f;
e()
}, function() {
new a.html5.skinloader("", function(f) {
c = true;
b = f;
e()
})
})
};
this.getSkinElement = function(d, e) {
if (c) {
try {
return b[d].elements[e]
} catch (f) {
a.utils.log("No such skin component / element: ", [d, e])
}
}
return null
};
this.getComponentSettings = function(d) {
if (c) {
return b[d].settings
}
return null
};
this.getComponentLayout = function(d) {
if (c) {
return b[d].layout
}
return null
}
}
})(jwplayer);
(function(a) {
a.html5.skinloader = function(f, p, k) {
var o = {};
var c = p;
var l = k;
var e = true;
var j;
var n = f;
var s = false;
function m() {
if (typeof n != "string" || n === "") {
d(a.html5.defaultSkin().xml)
} else {
a.utils.ajax(a.utils.getAbsolutePath(n), function(t) {
try {
if (a.utils.exists(t.responseXML)) {
d(t.responseXML);
return
}
} catch (u) {
h()
}
d(a.html5.defaultSkin().xml)
}, function(t) {
d(a.html5.defaultSkin().xml)
})
}
}
function d(y) {
var E = y.getElementsByTagName("component");
if (E.length === 0) {
return
}
for (var H = 0; H < E.length; H++) {
var C = E[H].getAttribute("name");
var B = {
settings: {},
elements: {},
layout: {}
};
o[C] = B;
var G = E[H].getElementsByTagName("elements")[0].getElementsByTagName("element");
for (var F = 0; F < G.length; F++) {
b(G[F], C)
}
var z = E[H].getElementsByTagName("settings")[0];
if (z && z.childNodes.length > 0) {
var K = z.getElementsByTagName("setting");
for (var P = 0; P < K.length; P++) {
var Q = K[P].getAttribute("name");
var I = K[P].getAttribute("value");
var x = /color$/.test(Q) ? "color" : null;
o[C].settings[Q] = a.utils.typechecker(I, x)
}
}
var L = E[H].getElementsByTagName("layout")[0];
if (L && L.childNodes.length > 0) {
var M = L.getElementsByTagName("group");
for (var w = 0; w < M.length; w++) {
var A = M[w];
o[C].layout[A.getAttribute("position")] = {
elements: []
};
for (var O = 0; O < A.attributes.length; O++) {
var D = A.attributes[O];
o[C].layout[A.getAttribute("position")][D.name] = D.value
}
var N = A.getElementsByTagName("*");
for (var v = 0; v < N.length; v++) {
var t = N[v];
o[C].layout[A.getAttribute("position")].elements.push({
type: t.tagName
});
for (var u = 0; u < t.attributes.length; u++) {
var J = t.attributes[u];
o[C].layout[A.getAttribute("position")].elements[v][J.name] = J.value
}
if (!a.utils.exists(o[C].layout[A.getAttribute("position")].elements[v].name)) {
o[C].layout[A.getAttribute("position")].elements[v].name = t.tagName
}
}
}
}
e = false;
r()
}
}
function r() {
clearInterval(j);
if (!s) {
j = setInterval(function() {
q()
}, 100)
}
}
function b(y, x) {
var w = new Image();
var t = y.getAttribute("name");
var v = y.getAttribute("src");
var A;
if (v.indexOf("data:image/png;base64,") === 0) {
A = v
} else {
var u = a.utils.getAbsolutePath(n);
var z = u.substr(0, u.lastIndexOf("/"));
A = [z, x, v].join("/")
}
o[x].elements[t] = {
height: 0,
width: 0,
src: "",
ready: false,
image: w
};
w.onload = function(B) {
g(w, t, x)
};
w.onerror = function(B) {
s = true;
r();
l()
};
w.src = A
}
function h() {
for (var u in o) {
var w = o[u];
for (var t in w.elements) {
var x = w.elements[t];
var v = x.image;
v.onload = null;
v.onerror = null;
delete x.image;
delete w.elements[t]
}
delete o[u]
}
}
function q() {
for (var t in o) {
if (t != "properties") {
for (var u in o[t].elements) {
if (!o[t].elements[u].ready) {
return
}
}
}
}
if (e === false) {
clearInterval(j);
c(o)
}
}
function g(t, v, u) {
if (o[u] && o[u].elements[v]) {
o[u].elements[v].height = t.height;
o[u].elements[v].width = t.width;
o[u].elements[v].src = t.src;
o[u].elements[v].ready = true;
r()
} else {
a.utils.log("Loaded an image for a missing element: " + u + "." + v)
}
}
m()
}
})(jwplayer);
(function(a) {
a.html5.api = function(c, n) {
var m = {};
var f = document.createElement("div");
c.parentNode.replaceChild(f, c);
f.id = c.id;
m.version = a.version;
m.id = f.id;
var l = new a.html5.model(m, f, n);
var j = new a.html5.view(m, f, l);
var k = new a.html5.controller(m, f, l, j);
m.skin = new a.html5.skin();
m.jwPlay = function(o) {
if (typeof o == "undefined") {
e()
} else {
if (o.toString().toLowerCase() == "true") {
k.play()
} else {
k.pause()
}
}
};
m.jwPause = function(o) {
if (typeof o == "undefined") {
e()
} else {
if (o.toString().toLowerCase() == "true") {
k.pause()
} else {
k.play()
}
}
};
function e() {
if (l.state == a.api.events.state.PLAYING || l.state == a.api.events.state.BUFFERING) {
k.pause()
} else {
k.play()
}
}
m.jwStop = k.stop;
m.jwSeek = k.seek;
m.jwPlaylistItem = k.item;
m.jwPlaylistNext = k.next;
m.jwPlaylistPrev = k.prev;
m.jwResize = k.resize;
m.jwLoad = k.load;
function h(o) {
return function() {
return l[o]
}
}
function d(o, q, p) {
return function() {
var r = l.plugins.object[o];
if (r && r[q] && typeof r[q] == "function") {
r[q].apply(r, p)
}
}
}
m.jwGetItem = h("item");
m.jwGetPosition = h("position");
m.jwGetDuration = h("duration");
m.jwGetBuffer = h("buffer");
m.jwGetWidth = h("width");
m.jwGetHeight = h("height");
m.jwGetFullscreen = h("fullscreen");
m.jwSetFullscreen = k.setFullscreen;
m.jwGetVolume = h("volume");
m.jwSetVolume = k.setVolume;
m.jwGetMute = h("mute");
m.jwSetMute = k.setMute;
m.jwGetStretching = h("stretching");
m.jwGetState = h("state");
m.jwGetVersion = function() {
return m.version
};
m.jwGetPlaylist = function() {
return l.playlist
};
m.jwGetPlaylistIndex = m.jwGetItem;
m.jwAddEventListener = k.addEventListener;
m.jwRemoveEventListener = k.removeEventListener;
m.jwSendEvent = k.sendEvent;
m.jwDockSetButton = function(r, o, p, q) {
if (l.plugins.object.dock && l.plugins.object.dock.setButton) {
l.plugins.object.dock.setButton(r, o, p, q)
}
};
m.jwControlbarShow = d("controlbar", "show");
m.jwControlbarHide = d("controlbar", "hide");
m.jwDockShow = d("dock", "show");
m.jwDockHide = d("dock", "hide");
m.jwDisplayShow = d("display", "show");
m.jwDisplayHide = d("display", "hide");
m.jwGetLevel = function() {};
m.jwGetBandwidth = function() {};
m.jwGetLockState = function() {};
m.jwLock = function() {};
m.jwUnlock = function() {};
function b() {
if (l.config.playlistfile) {
l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g);
l.loadPlaylist(l.config.playlistfile)
} else {
if (typeof l.config.playlist == "string") {
l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g);
l.loadPlaylist(l.config.playlist)
} else {
l.loadPlaylist(l.config);
setTimeout(g, 25)
}
}
}
function g(o) {
l.removeEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g);
l.setupPlugins();
j.setup();
var o = {
id: m.id,
version: m.version
};
k.playerReady(o)
}
if (l.config.chromeless && !a.utils.isIOS()) {
b()
} else {
m.skin.load(l.config.skin, b)
}
return m
}
})(jwplayer)
};
Ready to run.
Test | Ops/sec | |
---|---|---|
Using DOMs excessively |
| ready |
Using DOMs wisely |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.