/* 
* flowplayer.js 3.1.1. 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 <http://www.gnu.org/licenses/>.
* 
* Date: 2009-02-25 16:24:29 -0500 (Wed, 25 Feb 2009)
* Revision: 166 
*/
(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.substring(0, q) || "*"; var o = s.substring(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()).substring(2, 10) } var h = function(t, r, s) { var q = this; var p = {}; var 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.substring(0, v.length - 1); var w = "onBefore" + v.substring(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 (v == "onStart" || v == "onUpdate" || v == "onResume") { i(A, y); 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 s = {}; var o = this; var 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 y = q._api().fp_getPlugin(p); if (!y) { return } i(o, y); delete o.methods; if (!u) { m(y.methods, function() { var A = "" + this; o[A] = function() { var B = [].slice.call(arguments); var C = q._api().fp_invoke(p, A, B); return C == "undefined" ? o : C } }); u = true } } var z = s[w]; if (z) { z.apply(o, v); if (w.substring(0, 1) == "_") { delete s[w] } } } }) }; function b(o, t, z) { var E = this, y = null, x, u, p = [], s = {}, B = {}, r, v, w, D, A, q; i(E, { id: function() { return r }, isLoaded: function() { return (y !== null) }, getParent: function() { return o }, hide: function(F) { if (F) { o.style.height = "0px" } if (y) { y.style.height = "0px" } return E }, show: function() { o.style.height = q + "px"; if (y) { y.style.height = A + "px" } return E }, isHidden: function() { return y && parseInt(y.style.height, 10) === 0 }, load: function(F) { if (!y && E._fireEvent("onBeforeLoad") !== false) { m(a, function() { this.unload() }); x = o.innerHTML; if (x && !flashembed.isSupported(t.version)) { o.innerHTML = "" } flashembed(o, t, { config: z }); if (F) { F.cached = true; j(B, "onLoad", F) } } return E }, unload: function() { try { if (!y || y.fp_isFullscreen()) { return E } } catch (F) { return E } if (x.replace(/\s/g, "") !== "") { if (E._fireEvent("onBeforeUnload") === false) { return E } y.fp_close(); y = null; o.innerHTML = x; E._fireEvent("onUnload") } return E }, getClip: function(F) { if (F === undefined) { F = D } return p[F] }, getCommonClip: function() { return u }, getPlaylist: function() { return p }, getPlugin: function(F) { var H = s[F]; if (!H && E.isLoaded()) { var G = E._api().fp_getPlugin(F); if (G) { H = new l(F, G, E); s[F] = H } } return H }, getScreen: function() { return E.getPlugin("screen") }, getControls: function() { return E.getPlugin("controls") }, getConfig: function(F) { return F ? k(z) : z }, getFlashParams: function() { return t }, loadPlugin: function(I, H, K, J) { if (typeof K == "function") { J = K; K = {} } var G = J ? e() : "_"; E._api().fp_loadPlugin(I, H, K, G); var F = {}; F[G] = J; var L = new l(I, null, E, F); s[I] = L; return L }, getState: function() { return y ? y.fp_getState() : -1 }, play: function(G, F) { function H() { if (G !== undefined) { E._api().fp_play(G, F) } else { E._api().fp_play() } } if (y) { H() } else { E.load(function() { H() }) } return E }, getVersion: function() { var G = "flowplayer.js 3.1.1"; if (y) { var F = y.fp_getVersion(); F.push(G); return F } return G }, _api: function() { if (!y) { throw "Flowplayer " + E.id() + " not loaded when calling an API method" } return y }, setClip: function(F) { E.setPlaylist([F]); return E }, getIndex: function() { return w } }); m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error").split(","), function() { var F = "on" + this; if (F.indexOf("*") != -1) { F = F.substring(0, F.length - 1); var G = "onBefore" + F.substring(2); E[G] = function(H) { j(B, G, H); return E } } E[F] = function(H) { j(B, F, H); return E } }); m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip").split(","), function() { var F = this; E[F] = function(H, G) { if (!y) { return E } var I = null; if (H !== undefined && G !== undefined) { I = y["fp_" + F](H, G) } else { I = (H === undefined) ? y["fp_" + F]() : y["fp_" + F](H) } return I == "undefined" ? E : I } }); E._fireEvent = function(O) { if (typeof O == "string") { O = [O] } var P = O[0], M = O[1], K = O[2], J = O[3], I = 0; if (z.debug) { g(O) } if (!y && P == "onLoad" && M == "player") { y = y || c(v); A = y.clientHeight; m(p, function() { this._fireEvent("onLoad") }); m(s, function(Q, R) { R._fireEvent("onUpdate") }); u._fireEvent("onLoad") } if (P == "onLoad" && M != "player") { return } if (P == "onError") { if (typeof M == "string" || (typeof M == "number" && typeof K == "number")) { M = K; K = J } } if (P == "onContextMenu") { m(z.contextMenu[M], function(Q, R) { R.call(E) }); return } if (P == "onPluginEvent") { var F = M.name || M; var G = s[F]; if (G) { G._fireEvent("onUpdate", M); G._fireEvent(K, O.slice(3)) } return } if (P == "onPlaylistReplace") { p = []; var L = 0; m(M, function() { p.push(new h(this, L++, E)) }) } if (P == "onClipAdd") { if (M.isInStream) { return } M = new h(M, K, E); p.splice(K, 0, M); for (I = K + 1; I < p.length; I++) { p[I].index++ } } var N = true; if (typeof M == "number" && M < p.length) { D = M; var H = p[M]; if (H) { N = H._fireEvent(P, K, J) } if (!H || N !== false) { N = u._fireEvent(P, K, J, H) } } m(B[P], function() { N = this.call(E, M, K); if (this.cached) { B[P].splice(I, 1) } if (N === false) { return false } I++ }); return N }; function C() { if ($f(o)) { $f(o).getParent().innerHTML = ""; w = $f(o).getIndex(); a[w] = E } else { a.push(E); w = a.length - 1 } q = parseInt(o.style.height, 10) || o.clientHeight; if (typeof t == "string") { t = { src: t} } r = o.id || "fp" + e(); v = t.id || r + "_api"; t.id = v; z.playerId = r; if (typeof z == "string") { z = { clip: { url: z}} } if (typeof z.clip == "string") { z.clip = { url: z.clip} } z.clip = z.clip || {}; if (o.getAttribute("href", 2) && !z.clip.url) { z.clip.url = o.getAttribute("href", 2) } u = new h(z.clip, -1, E); z.playlist = z.playlist || [z.clip]; var F = 0; m(z.playlist, function() { var H = this; if (typeof H == "object" && H.length) { H = { url: "" + H} } m(z.clip, function(I, J) { if (J !== undefined && H[I] === undefined && typeof J != "function") { H[I] = J } }); z.playlist[F] = H; H = new h(H, F, E); p.push(H); F++ }); m(z, function(H, I) { if (typeof I == "function") { j(B, H, I); delete z[H] } }); m(z.plugins, function(H, I) { if (I) { s[H] = new l(H, I, E) } }); if (!z.plugins || z.plugins.controls === undefined) { s.controls = new l("controls", null, E) } s.canvas = new l("canvas", null, E); t.bgcolor = t.bgcolor || "#000000"; t.version = t.version || [9, 0]; t.expressInstall = "http://www.flowplayer.org/swf/expressinstall.swf"; function G(H) { if (!E.isLoaded() && E._fireEvent("onBeforeClick") !== false) { E.load() } return f(H) } x = o.innerHTML; if (x.replace(/\s/g, "") !== "") { if (o.addEventListener) { o.addEventListener("click", G, false) } else { if (o.attachEvent) { o.attachEvent("onclick", G) } } } else { if (o.addEventListener) { o.addEventListener("click", f, false) } E.load() } } if (typeof o == "string") { flashembed.domReady(function() { var F = c(o); if (!F) { throw "Flowplayer cannot access element: " + o } else { o = F; C() } }) } else { C() } } 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 r = arguments[1]; var q = (arguments.length == 3) ? arguments[2] : {}; if (typeof o == "string") { if (o.indexOf(".") != -1) { var t = []; m(n(o), function() { t.push(new b(this, k(r), k(q))) }); return new d(t) } else { var s = c(o); return new b(s !== null ? s : o, r, q) } } else { if (o) { return new b(o, r, 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.prototype.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 e = typeof jQuery == "function"; function i() { if (c.done) { return false } var k = document; if (k && k.getElementsByTagName && k.getElementById && k.body) { clearInterval(c.timer); c.timer = null; for (var j = 0; j < c.ready.length; j++) { c.ready[j].call() } c.ready = null; c.done = true } } var c = e ? jQuery : function(j) { if (c.done) { return j() } if (c.timer) { c.ready.push(j) } else { c.ready = [j]; c.timer = setInterval(i, 13) } }; function f(k, j) { if (j) { for (key in j) { if (j.hasOwnProperty(key)) { k[key] = j[key] } } } return k } function g(j) { switch (h(j)) { case "string": j = j.replace(new RegExp('(["\\\\])', "g"), "\\$1"); j = j.replace(/^\s?(\d+)%/, "$1pct"); return '"' + j + '"'; case "array": return "[" + b(j, function(m) { return g(m) }).join(",") + "]"; case "function": return '"function()"'; case "object": var k = []; for (var l in j) { if (j.hasOwnProperty(l)) { k.push('"' + l + '":' + g(j[l])) } } return "{" + k.join(",") + "}" } return String(j).replace(/\s/g, " ").replace(/\'/g, '"') } function h(k) { if (k === null || k === undefined) { return false } var j = typeof k; return (j == "object" && k.push) ? "array" : j } if (window.attachEvent) { window.attachEvent("onbeforeunload", function() { __flash_unloadHandler = function() { }; __flash_savedUnloadHandler = function() { } }) } function b(j, m) { var l = []; for (var k in j) { if (j.hasOwnProperty(k)) { l[k] = m(j[k]) } } return l } function a(q, s) { var o = f({}, q); var r = document.all; var m = '<object width="' + o.width + '" height="' + o.height + '"'; if (r && !o.id) { o.id = "_" + ("" + Math.random()).substring(9) } if (o.id) { m += ' id="' + o.id + '"' } o.src += ((o.src.indexOf("?") != -1 ? "&" : "?") + Math.random()); if (o.w3c || !r) { m += ' data="' + o.src + '" type="application/x-shockwave-flash"' } else { m += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' } m += ">"; if (o.w3c || r) { m += '<param name="movie" value="' + o.src + '" />' } o.width = o.height = o.id = o.w3c = o.src = null; for (var j in o) { if (o[j] !== null) { m += '<param name="' + j + '" value="' + o[j] + '" />' } } var n = ""; if (s) { for (var l in s) { if (s[l] !== null) { n += l + "=" + (typeof s[l] == "object" ? g(s[l]) : s[l]) + "&" } } n = n.substring(0, n.length - 1); m += '<param name="flashvars" value=\'' + n + "' />" } m += "</object>"; return m } function d(l, o, k) { var j = flashembed.getVersion(); f(this, { getContainer: function() { return l }, getConf: function() { return o }, getVersion: function() { return j }, getFlashvars: function() { return k }, getApi: function() { return l.firstChild }, getHTML: function() { return a(o, k) } }); var p = o.version; var q = o.expressInstall; var n = !p || flashembed.isSupported(p); if (n) { o.onFail = o.version = o.expressInstall = null; l.innerHTML = a(o, k) } else { if (p && q && flashembed.isSupported([6, 65])) { f(o, { src: q }); k = { MMredirectURL: location.href, MMplayerType: "PlugIn", MMdoctitle: document.title }; l.innerHTML = a(o, k) } else { if (l.innerHTML.replace(/\s/g, "") !== "") { } else { l.innerHTML = "<h2>Flash version " + p + " or greater is required</h2><h3>" + (j[0] > 0 ? "Your version is " + j : "You have no flash plugin installed") + "</h3>" + (l.tagName == "A" ? "<p>Click here to download latest version</p>" : "<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>"); if (l.tagName == "A") { l.onclick = function() { location.href = "http://www.adobe.com/go/getflashplayer" } } } } } if (!n && o.onFail) { var m = o.onFail.call(this); if (typeof m == "string") { l.innerHTML = m } } if (document.all) { window[o.id] = document.getElementById(o.id) } } window.flashembed = function(k, l, j) { if (typeof k == "string") { var m = document.getElementById(k); if (m) { k = m } else { c(function() { flashembed(k, l, j) }); return } } if (!k) { return } var n = { width: "100%", height: "100%", allowfullscreen: true, allowscriptaccess: "always", quality: "high", version: null, onFail: null, expressInstall: null, w3c: false }; if (typeof l == "string") { l = { src: l} } f(n, l); return new d(k, n, j) }; f(window.flashembed, { getVersion: function() { var l = [0, 0]; if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { var k = navigator.plugins["Shockwave Flash"].description; if (typeof k != "undefined") { k = k.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); var m = parseInt(k.replace(/^(.*)\..*$/, "$1"), 10); var q = /r/.test(k) ? parseInt(k.replace(/^.*r(.*)$/, "$1"), 10) : 0; l = [m, q] } } else { if (window.ActiveXObject) { try { var o = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7") } catch (p) { try { o = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); l = [6, 0]; o.AllowScriptAccess = "always" } catch (j) { if (l[0] == 6) { return } } try { o = new ActiveXObject("ShockwaveFlash.ShockwaveFlash") } catch (n) { } } if (typeof o == "object") { k = o.GetVariable("$version"); if (typeof k != "undefined") { k = k.replace(/^\S+\s+(.*)$/, "$1").split(","); l = [parseInt(k[0], 10), parseInt(k[2], 10)] } } } } return l }, isSupported: function(j) { var l = flashembed.getVersion(); var k = (l[0] > j[0]) || (l[0] == j[0] && l[1] >= j[1]); return k }, domReady: c, asString: g, getHTML: a }); if (e) { jQuery.tools = jQuery.tools || { version: {} }; jQuery.tools.version.flashembed = "1.0.2"; jQuery.fn.flashembed = function(k, j) { var l = null; this.each(function() { l = flashembed(this, k, j) }); return k.api === false ? this : l } } })();

