/*
* flowplayer.js 3.2.4. The Flowplayer API
*
* Copyright 2009 Flowplayer Oy
*
* This file is part of Flowplayer.
*
* Flowplayer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Flowplayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Flowplayer. If not, see .
*
* Date: 2010-08-25 12:48:46 +0000 (Wed, 25 Aug 2010)
* Revision: 551
*/
(function() {
function g(o) {
console.log("$f.fireEvent", [].slice.call(o))
}
function k(q) {
if (!q || typeof q != "object") {
return q
}
var o = new q.constructor();
for (var p in q) {
if (q.hasOwnProperty(p)) {
o[p] = k(q[p])
}
}
return o
}
function m(t, q) {
if (!t) {
return
}
var o,p = 0,r = t.length;
if (r === undefined) {
for (o in t) {
if (q.call(t[o], o, t[o]) === false) {
break
}
}
} else {
for (var s = t[0]; p < r && q.call(s, p, s) !== false; s = t[++p]) {
}
}
return t
}
function c(o) {
return document.getElementById(o)
}
function i(q, p, o) {
if (typeof p != "object") {
return q
}
if (q && p) {
m(p, function(r, s) {
if (!o || typeof s != "function") {
q[r] = s
}
})
}
return q
}
function n(s) {
var q = s.indexOf(".");
if (q != -1) {
var p = s.slice(0, q) || "*";
var o = s.slice(q + 1, s.length);
var r = [];
m(document.getElementsByTagName(p), function() {
if (this.className && this.className.indexOf(o) != -1) {
r.push(this)
}
});
return r
}
}
function f(o) {
o = o || window.event;
if (o.preventDefault) {
o.stopPropagation();
o.preventDefault()
} else {
o.returnValue = false;
o.cancelBubble = true
}
return false
}
function j(q, o, p) {
q[o] = q[o] || [];
q[o].push(p)
}
function e() {
return"_" + ("" + Math.random()).slice(2, 10)
}
var h = function(t, r, s) {
var q = this,p = {},u = {};
q.index = r;
if (typeof t == "string") {
t = {url:t}
}
i(this, t, true);
m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","), function() {
var v = "on" + this;
if (v.indexOf("*") != -1) {
v = v.slice(0, v.length - 1);
var w = "onBefore" + v.slice(2);
q[w] = function(x) {
j(u, w, x);
return q
}
}
q[v] = function(x) {
j(u, v, x);
return q
};
if (r == -1) {
if (q[w]) {
s[w] = q[w]
}
if (q[v]) {
s[v] = q[v]
}
}
});
i(this, {onCuepoint:function(x, w) {
if (arguments.length == 1) {
p.embedded = [null,x];
return q
}
if (typeof x == "number") {
x = [x]
}
var v = e();
p[v] = [x,w];
if (s.isLoaded()) {
s._api().fp_addCuepoints(x, r, v)
}
return q
},update:function(w) {
i(q, w);
if (s.isLoaded()) {
s._api().fp_updateClip(w, r)
}
var v = s.getConfig();
var x = (r == -1) ? v.clip : v.playlist[r];
i(x, w, true)
},_fireEvent:function(v, y, w, A) {
if (v == "onLoad") {
m(p, function(B, C) {
if (C[0]) {
s._api().fp_addCuepoints(C[0], r, B)
}
});
return false
}
A = A || q;
if (v == "onCuepoint") {
var z = p[y];
if (z) {
return z[1].call(s, A, w)
}
}
if (y && "onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v) != -1) {
i(A, y);
if (y.metaData) {
if (!A.duration) {
A.duration = y.metaData.duration
} else {
A.fullDuration = y.metaData.duration
}
}
}
var x = true;
m(u[v], function() {
x = this.call(s, A, y, w)
});
return x
}});
if (t.onCuepoint) {
var o = t.onCuepoint;
q.onCuepoint.apply(q, typeof o == "function" ? [o] : o);
delete t.onCuepoint
}
m(t, function(v, w) {
if (typeof w == "function") {
j(u, v, w);
delete t[v]
}
});
if (r == -1) {
s.onCuepoint = this.onCuepoint
}
};
var l = function(p, r, q, t) {
var o = this,s = {},u = false;
if (t) {
i(s, t)
}
m(r, function(v, w) {
if (typeof w == "function") {
s[v] = w;
delete r[v]
}
});
i(this, {animate:function(y, z, x) {
if (!y) {
return o
}
if (typeof z == "function") {
x = z;
z = 500
}
if (typeof y == "string") {
var w = y;
y = {};
y[w] = z;
z = 500
}
if (x) {
var v = e();
s[v] = x
}
if (z === undefined) {
z = 500
}
r = q._api().fp_animate(p, y, z, v);
return o
},css:function(w, x) {
if (x !== undefined) {
var v = {};
v[w] = x;
w = v
}
r = q._api().fp_css(p, w);
i(o, r);
return o
},show:function() {
this.display = "block";
q._api().fp_showPlugin(p);
return o
},hide:function() {
this.display = "none";
q._api().fp_hidePlugin(p);
return o
},toggle:function() {
this.display = q._api().fp_togglePlugin(p);
return o
},fadeTo:function(y, x, w) {
if (typeof x == "function") {
w = x;
x = 500
}
if (w) {
var v = e();
s[v] = w
}
this.display = q._api().fp_fadeTo(p, y, x, v);
this.opacity = y;
return o
},fadeIn:function(w, v) {
return o.fadeTo(1, w, v)
},fadeOut:function(w, v) {
return o.fadeTo(0, w, v)
},getName:function() {
return p
},getPlayer:function() {
return q
},_fireEvent:function(w, v, x) {
if (w == "onUpdate") {
var z = q._api().fp_getPlugin(p);
if (!z) {
return
}
i(o, z);
delete o.methods;
if (!u) {
m(z.methods, function() {
var B = "" + this;
o[B] = function() {
var C = [].slice.call(arguments);
var D = q._api().fp_invoke(p, B, C);
return D === "undefined" || D === undefined ? o : D
}
});
u = true
}
}
var A = s[w];
if (A) {
var y = A.apply(o, v);
if (w.slice(0, 1) == "_") {
delete s[w]
}
return y
}
return o
}})
};
function b(q, G, t) {
var w = this,v = null,D = false,u,s,F = [],y = {},x = {},E,r,p,C,o,A;
i(w, {id:function() {
return E
},isLoaded:function() {
return(v !== null && v.fp_play !== undefined && !D)
},getParent:function() {
return q
},hide:function(H) {
if (H) {
q.style.height = "0px"
}
if (w.isLoaded()) {
v.style.height = "0px"
}
return w
},show:function() {
q.style.height = A + "px";
if (w.isLoaded()) {
v.style.height = o + "px"
}
return w
},isHidden:function() {
return w.isLoaded() && parseInt(v.style.height, 10) === 0
},load:function(J) {
if (!w.isLoaded() && w._fireEvent("onBeforeLoad") !== false) {
var H = function() {
u = q.innerHTML;
if (u && !flashembed.isSupported(G.version)) {
q.innerHTML = ""
}
if (J) {
J.cached = true;
j(x, "onLoad", J)
}
flashembed(q, G, {config:t})
};
var I = 0;
m(a, function() {
this.unload(function(K) {
if (++I == a.length) {
H()
}
})
})
}
return w
},unload:function(J) {
if (this.isFullscreen() && /WebKit/i.test(navigator.userAgent)) {
if (J) {
J(false)
}
return w
}
if (u.replace(/\s/g, "") !== "") {
if (w._fireEvent("onBeforeUnload") === false) {
if (J) {
J(false)
}
return w
}
D = true;
try {
if (v) {
v.fp_close();
w._fireEvent("onUnload")
}
} catch(H) {
}
var I = function() {
v = null;
q.innerHTML = u;
D = false;
if (J) {
J(true)
}
};
setTimeout(I, 50)
} else {
if (J) {
J(false)
}
}
return w
},getClip:function(H) {
if (H === undefined) {
H = C
}
return F[H]
},getCommonClip:function() {
return s
},getPlaylist:function() {
return F
},getPlugin:function(H) {
var J = y[H];
if (!J && w.isLoaded()) {
var I = w._api().fp_getPlugin(H);
if (I) {
J = new l(H, I, w);
y[H] = J
}
}
return J
},getScreen:function() {
return w.getPlugin("screen")
},getControls:function() {
return w.getPlugin("controls")._fireEvent("onUpdate")
},getLogo:function() {
try {
return w.getPlugin("logo")._fireEvent("onUpdate")
} catch(H) {
}
},getPlay:function() {
return w.getPlugin("play")._fireEvent("onUpdate")
},getConfig:function(H) {
return H ? k(t) : t
},getFlashParams:function() {
return G
},loadPlugin:function(K, J, M, L) {
if (typeof M == "function") {
L = M;
M = {}
}
var I = L ? e() : "_";
w._api().fp_loadPlugin(K, J, M, I);
var H = {};
H[I] = L;
var N = new l(K, null, w, H);
y[K] = N;
return N
},getState:function() {
return w.isLoaded() ? v.fp_getState() : -1
},play:function(I, H) {
var J = function() {
if (I !== undefined) {
w._api().fp_play(I, H)
} else {
w._api().fp_play()
}
};
if (w.isLoaded()) {
J()
} else {
if (D) {
setTimeout(function() {
w.play(I, H)
}, 50)
} else {
w.load(function() {
J()
})
}
}
return w
},getVersion:function() {
var I = "flowplayer.js 3.2.4";
if (w.isLoaded()) {
var H = v.fp_getVersion();
H.push(I);
return H
}
return I
},_api:function() {
if (!w.isLoaded()) {
throw"Flowplayer " + w.id() + " not loaded when calling an API method"
}
return v
},setClip:function(H) {
w.setPlaylist([H]);
return w
},getIndex:function() {
return p
},_swfHeight:function() {
return v.clientHeight
}});
m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","), function() {
var H = "on" + this;
if (H.indexOf("*") != -1) {
H = H.slice(0, H.length - 1);
var I = "onBefore" + H.slice(2);
w[I] = function(J) {
j(x, I, J);
return w
}
}
w[H] = function(J) {
j(x, H, J);
return w
}
});
m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed,setKeyboardShortcutsEnabled,isKeyboardShortcutsEnabled").split(","), function() {
var H = this;
w[H] = function(J, I) {
if (!w.isLoaded()) {
return w
}
var K = null;
if (J !== undefined && I !== undefined) {
K = v["fp_" + H](J, I)
} else {
K = (J === undefined) ? v["fp_" + H]() : v["fp_" + H](J)
}
return K === "undefined" || K === undefined ? w : K
}
});
w._fireEvent = function(Q) {
if (typeof Q == "string") {
Q = [Q]
}
var R = Q[0],O = Q[1],M = Q[2],L = Q[3],K = 0;
if (t.debug) {
g(Q)
}
if (!w.isLoaded() && R == "onLoad" && O == "player") {
v = v || c(r);
o = w._swfHeight();
m(F, function() {
this._fireEvent("onLoad")
});
m(y, function(S, T) {
T._fireEvent("onUpdate")
});
s._fireEvent("onLoad")
}
if (R == "onLoad" && O != "player") {
return
}
if (R == "onError") {
if (typeof O == "string" || (typeof O == "number" && typeof M == "number")) {
O = M;
M = L
}
}
if (R == "onContextMenu") {
m(t.contextMenu[O], function(S, T) {
T.call(w)
});
return
}
if (R == "onPluginEvent" || R == "onBeforePluginEvent") {
var H = O.name || O;
var I = y[H];
if (I) {
I._fireEvent("onUpdate", O);
return I._fireEvent(M, Q.slice(3))
}
return
}
if (R == "onPlaylistReplace") {
F = [];
var N = 0;
m(O, function() {
F.push(new h(this, N++, w))
})
}
if (R == "onClipAdd") {
if (O.isInStream) {
return
}
O = new h(O, M, w);
F.splice(M, 0, O);
for (K = M + 1; K < F.length; K++) {
F[K].index++
}
}
var P = true;
if (typeof O == "number" && O < F.length) {
C = O;
var J = F[O];
if (J) {
P = J._fireEvent(R, M, L)
}
if (!J || P !== false) {
P = s._fireEvent(R, M, L, J)
}
}
m(x[R], function() {
P = this.call(w, O, M);
if (this.cached) {
x[R].splice(K, 1)
}
if (P === false) {
return false
}
K++
});
return P
};
function B() {
if ($f(q)) {
$f(q).getParent().innerHTML = "";
p = $f(q).getIndex();
a[p] = w
} else {
a.push(w);
p = a.length - 1
}
A = parseInt(q.style.height, 10) || q.clientHeight;
E = q.id || "fp" + e();
r = G.id || E + "_api";
G.id = r;
t.playerId = E;
if (typeof t == "string") {
t = {clip:{url:t}}
}
if (typeof t.clip == "string") {
t.clip = {url:t.clip}
}
t.clip = t.clip || {};
if (q.getAttribute("href", 2) && !t.clip.url) {
t.clip.url = q.getAttribute("href", 2)
}
s = new h(t.clip, -1, w);
t.playlist = t.playlist || [t.clip];
var I = 0;
m(t.playlist, function() {
var K = this;
if (typeof K == "object" && K.length) {
K = {url:"" + K}
}
m(t.clip, function(L, M) {
if (M !== undefined && K[L] === undefined && typeof M != "function") {
K[L] = M
}
});
t.playlist[I] = K;
K = new h(K, I, w);
F.push(K);
I++
});
m(t, function(K, L) {
if (typeof L == "function") {
if (s[K]) {
s[K](L)
} else {
j(x, K, L)
}
delete t[K]
}
});
m(t.plugins, function(K, L) {
if (L) {
y[K] = new l(K, L, w)
}
});
if (!t.plugins || t.plugins.controls === undefined) {
y.controls = new l("controls", null, w)
}
y.canvas = new l("canvas", null, w);
u = q.innerHTML;
function J(L) {
var K = w.hasiPadSupport && w.hasiPadSupport();
if (/iPad|iPhone|iPod/i.test(navigator.userAgent) && !/.flv$/i.test(F[0].url) && !K) {
return true
}
if (!w.isLoaded() && w._fireEvent("onBeforeClick") !== false) {
w.load()
}
return f(L)
}
function H() {
if (u.replace(/\s/g, "") !== "") {
if (q.addEventListener) {
q.addEventListener("click", J, false)
} else {
if (q.attachEvent) {
q.attachEvent("onclick", J)
}
}
} else {
if (q.addEventListener) {
q.addEventListener("click", f, false)
}
w.load()
}
}
setTimeout(H, 0)
}
if (typeof q == "string") {
var z = c(q);
if (!z) {
throw"Flowplayer cannot access element: " + q
}
q = z;
B()
} else {
B()
}
}
var a = [];
function d(o) {
this.length = o.length;
this.each = function(p) {
m(o, p)
};
this.size = function() {
return o.length
}
}
window.flowplayer = window.$f = function() {
var p = null;
var o = arguments[0];
if (!arguments.length) {
m(a, function() {
if (this.isLoaded()) {
p = this;
return false
}
});
return p || a[0]
}
if (arguments.length == 1) {
if (typeof o == "number") {
return a[o]
} else {
if (o == "*") {
return new d(a)
}
m(a, function() {
if (this.id() == o.id || this.id() == o || this.getParent() == o) {
p = this;
return false
}
});
return p
}
}
if (arguments.length > 1) {
var t = arguments[1],q = (arguments.length == 3) ? arguments[2] : {};
if (typeof t == "string") {
t = {src:t}
}
t = i({bgcolor:"#000000",version:[9,0],expressInstall:"http://static.flowplayer.org/swf/expressinstall.swf",cachebusting:true}, t);
if (typeof o == "string") {
if (o.indexOf(".") != -1) {
var s = [];
m(n(o), function() {
s.push(new b(this, k(t), k(q)))
});
return new d(s)
} else {
var r = c(o);
return new b(r !== null ? r : o, t, q)
}
} else {
if (o) {
return new b(o, t, q)
}
}
}
return null
};
i(window.$f, {fireEvent:function() {
var o = [].slice.call(arguments);
var q = $f(o[0]);
return q ? q._fireEvent(o.slice(1)) : null
},addPlugin:function(o, p) {
b.prototype[o] = p;
return $f
},each:m,extend:i});
if (typeof jQuery == "function") {
jQuery.fn.flowplayer = function(q, p) {
if (!arguments.length || typeof arguments[0] == "number") {
var o = [];
this.each(function() {
var r = $f(this);
if (r) {
o.push(r)
}
});
return arguments.length ? o[arguments[0]] : new d(o)
}
return this.each(function() {
$f(this, k(q), p ? k(p) : {})
})
}
}
})();
(function() {
var h = document.all,j = "http://www.adobe.com/go/getflashplayer",c = typeof jQuery == "function",e = /(\d+)[^\d]+(\d+)[^\d]*(\d*)/,b = {width:"100%",height:"100%",id:"_" + ("" + Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};
if (window.attachEvent) {
window.attachEvent("onbeforeunload", function() {
__flash_unloadHandler = function() {
};
__flash_savedUnloadHandler = function() {
}
})
}
function i(m, l) {
if (l) {
for (var f in l) {
if (l.hasOwnProperty(f)) {
m[f] = l[f]
}
}
}
return m
}
function a(f, n) {
var m = [];
for (var l in f) {
if (f.hasOwnProperty(l)) {
m[l] = n(f[l])
}
}
return m
}
window.flashembed = function(f, m, l) {
if (typeof f == "string") {
f = document.getElementById(f.replace("#", ""))
}
if (!f) {
return
}
if (typeof m == "string") {
m = {src:m}
}
return new d(f, i(i({}, b), m), l)
};
var g = i(window.flashembed, {conf:b,getVersion:function() {
var m,f;
try {
f = navigator.plugins["Shockwave Flash"].description.slice(16)
} catch(o) {
try {
m = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
f = m && m.GetVariable("$version")
} catch(n) {
try {
m = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
f = m && m.GetVariable("$version")
} catch(l) {
}
}
}
f = e.exec(f);
return f ? [f[1],f[3]] : [0,0]
},asString:function(l) {
if (l === null || l === undefined) {
return null
}
var f = typeof l;
if (f == "object" && l.push) {
f = "array"
}
switch (f) {case"string":l = l.replace(new RegExp('(["\\\\])', "g"), "\\$1");l = l.replace(/^\s?(\d+\.?\d+)%/, "$1pct");return'"' + l + '"';case"array":return"[" + a(l,
function(o) {
return g.asString(o)
}).join(",") + "]";case"function":return'"function()"';case"object":var m = [];for (var n in l) {
if (l.hasOwnProperty(n)) {
m.push('"' + n + '":' + g.asString(l[n]))
}
}return"{" + m.join(",") + "}"
}
return String(l).replace(/\s/g, " ").replace(/\'/g, '"')
},getHTML:function(o, l) {
o = i({}, o);
var n = '";
return n
},isSupported:function(f) {
return k[0] > f[0] || k[0] == f[0] && k[1] >= f[1]
}});
var k = g.getVersion();
function d(f, n, m) {
if (g.isSupported(n.version)) {
f.innerHTML = g.getHTML(n, m)
} else {
if (n.expressInstall && g.isSupported([6,65])) {
f.innerHTML = g.getHTML(i(n, {src:n.expressInstall}), {MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title})
} else {
if (!f.innerHTML.replace(/\s/g, "")) {
f.innerHTML = "
Flash version " + n.version + " or greater is required
" + (k[0] > 0 ? "Your version is " + k : "You have no flash plugin installed") + "