google.setOnLoadCallback(function() {
    // Safely inject CSS3 and give the search results a shadow
    var cssObj = { 'box-shadow': '5px 10px 10px rgba(0, 0, 0, 0.3)', // Added when CSS3 is standard
        '-webkit-box-shadow': '5px 10px 10px rgba(0, 0, 0, 0.3)', // Safari
        '-moz-box-shadow': '5px 10px 10px rgba(0, 0, 0, 0.3)'
    }; // Firefox 3.5+
    $("#suggestions").css(cssObj);

    // Fade out the suggestions box when user clicks on anything other than the suggestions box itself
    $("div").not('#suggestions').click(function() {
        $('#suggestions').fadeOut();
    });
});

function lookup(inputString) {
    if (inputString.length == 0) {
        $('#suggestions').fadeOut(); // Hide the suggestions box
    } else {
        $.post("/search.ashx?search=" + inputString + "", { search: "" + inputString + "" }, function(data) { // Do an AJAX call
            $('#suggestions').fadeIn(); // Show the suggestions box
            $('#suggestions').html(data); // Fill the suggestions box
            $('#suggestions .item:last-child').addClass('last');
        });
    }
}


/*
* jquery.tools 1.1.2 - The missing UI library for the Web
* 
* [tools.tabs-1.0.4, tools.scrollable-1.1.2, tools.scrollable.circular-0.5.1, tools.scrollable.autoscroll-1.0.1]
* 
* Copyright (c) 2009 Tero Piirainen
* http://flowplayer.org/tools/
*
* Dual licensed under MIT and GPL 2+ licenses
* http://www.opensource.org/licenses
* 
* -----
* 
* File generated: Fri Jan 15 21:16:20 GMT 2010
*/
(function(d) { d.tools = d.tools || {}; d.tools.tabs = { version: "1.0.4", conf: { tabs: "a", current: "current", onBeforeClick: null, onClick: null, effect: "default", initialIndex: 0, event: "click", api: false, rotate: false }, addEffect: function(e, f) { c[e] = f } }; var c = { "default": function(f, e) { this.getPanes().hide().eq(f).show(); e.call() }, fade: function(g, e) { var f = this.getConf(), j = f.fadeOutSpeed, h = this.getPanes(); if (j) { h.fadeOut(j) } else { h.hide() } h.eq(g).fadeIn(f.fadeInSpeed, e) }, slide: function(f, e) { this.getPanes().slideUp(200); this.getPanes().eq(f).slideDown(400, e) }, ajax: function(f, e) { this.getPanes().eq(0).load(this.getTabs().eq(f).attr("href"), e) } }; var b; d.tools.tabs.addEffect("horizontal", function(f, e) { if (!b) { b = this.getPanes().eq(0).width() } this.getCurrentPane().animate({ width: 0 }, function() { d(this).hide() }); this.getPanes().eq(f).animate({ width: b }, function() { d(this).show(); e.call() }) }); function a(g, h, f) { var e = this, j = d(this), i; d.each(f, function(k, l) { if (d.isFunction(l)) { j.bind(k, l) } }); d.extend(this, { click: function(k, n) { var o = e.getCurrentPane(); var l = g.eq(k); if (typeof k == "string" && k.replace("#", "")) { l = g.filter("[href*=" + k.replace("#", "") + "]"); k = Math.max(g.index(l), 0) } if (f.rotate) { var m = g.length - 1; if (k < 0) { return e.click(m, n) } if (k > m) { return e.click(0, n) } } if (!l.length) { if (i >= 0) { return e } k = f.initialIndex; l = g.eq(k) } if (k === i) { return e } n = n || d.Event(); n.type = "onBeforeClick"; j.trigger(n, [k]); if (n.isDefaultPrevented()) { return } c[f.effect].call(e, k, function() { n.type = "onClick"; j.trigger(n, [k]) }); n.type = "onStart"; j.trigger(n, [k]); if (n.isDefaultPrevented()) { return } i = k; g.removeClass(f.current); l.addClass(f.current); return e }, getConf: function() { return f }, getTabs: function() { return g }, getPanes: function() { return h }, getCurrentPane: function() { return h.eq(i) }, getCurrentTab: function() { return g.eq(i) }, getIndex: function() { return i }, next: function() { return e.click(i + 1) }, prev: function() { return e.click(i - 1) }, bind: function(k, l) { j.bind(k, l); return e }, onBeforeClick: function(k) { return this.bind("onBeforeClick", k) }, onClick: function(k) { return this.bind("onClick", k) }, unbind: function(k) { j.unbind(k); return e } }); g.each(function(k) { d(this).bind(f.event, function(l) { e.click(k, l); return false }) }); if (location.hash) { e.click(location.hash) } else { if (f.initialIndex === 0 || f.initialIndex > 0) { e.click(f.initialIndex) } } h.find("a[href^=#]").click(function(k) { e.click(d(this).attr("href"), k) }) } d.fn.tabs = function(i, f) { var g = this.eq(typeof f == "number" ? f : 0).data("tabs"); if (g) { return g } if (d.isFunction(f)) { f = { onBeforeClick: f} } var h = d.extend({}, d.tools.tabs.conf), e = this.length; f = d.extend(h, f); this.each(function(l) { var j = d(this); var k = j.find(f.tabs); if (!k.length) { k = j.children() } var m = i.jquery ? i : j.children(i); if (!m.length) { m = e == 1 ? d(i) : j.parent().find(i) } g = new a(k, m, f); j.data("tabs", g) }); return f.api ? g : this } })(jQuery);
(function(b) { b.tools = b.tools || {}; b.tools.scrollable = { version: "1.1.2", conf: { size: 5, vertical: false, speed: 400, keyboard: true, keyboardSteps: null, disabledClass: "disabled", hoverClass: null, clickable: true, activeClass: "active", easing: "swing", loop: false, items: ".items", item: null, prev: ".prev", next: ".next", prevPage: ".prevPage", nextPage: ".nextPage", api: false} }; var c; function a(o, m) { var r = this, p = b(this), d = !m.vertical, e = o.children(), k = 0, i; if (!c) { c = r } b.each(m, function(s, t) { if (b.isFunction(t)) { p.bind(s, t) } }); if (e.length > 1) { e = b(m.items, o) } function l(t) { var s = b(t); return m.globalNav ? s : o.parent().find(t) } o.data("finder", l); var f = l(m.prev), h = l(m.next), g = l(m.prevPage), n = l(m.nextPage); b.extend(r, { getIndex: function() { return k }, getClickIndex: function() { var s = r.getItems(); return s.index(s.filter("." + m.activeClass)) }, getConf: function() { return m }, getSize: function() { return r.getItems().size() }, getPageAmount: function() { return Math.ceil(this.getSize() / m.size) }, getPageIndex: function() { return Math.ceil(k / m.size) }, getNaviButtons: function() { return f.add(h).add(g).add(n) }, getRoot: function() { return o }, getItemWrap: function() { return e }, getItems: function() { return e.children(m.item) }, getVisibleItems: function() { return r.getItems().slice(k, k + m.size) }, seekTo: function(s, w, t) { if (s < 0) { s = 0 } if (k === s) { return r } if (b.isFunction(w)) { t = w } if (s > r.getSize() - m.size) { return m.loop ? r.begin() : this.end() } var u = r.getItems().eq(s); if (!u.length) { return r } var v = b.Event("onBeforeSeek"); p.trigger(v, [s]); if (v.isDefaultPrevented()) { return r } if (w === undefined || b.isFunction(w)) { w = m.speed } function x() { if (t) { t.call(r, s) } p.trigger("onSeek", [s]) } if (d) { e.animate({ left: -u.position().left }, w, m.easing, x) } else { e.animate({ top: -u.position().top }, w, m.easing, x) } c = r; k = s; v = b.Event("onStart"); p.trigger(v, [s]); if (v.isDefaultPrevented()) { return r } f.add(g).toggleClass(m.disabledClass, s === 0); h.add(n).toggleClass(m.disabledClass, s >= r.getSize() - m.size); return r }, move: function(u, t, s) { i = u > 0; return this.seekTo(k + u, t, s) }, next: function(t, s) { return this.move(1, t, s) }, prev: function(t, s) { return this.move(-1, t, s) }, movePage: function(w, v, u) { i = w > 0; var s = m.size * w; var t = k % m.size; if (t > 0) { s += (w > 0 ? -t : m.size - t) } return this.move(s, v, u) }, prevPage: function(t, s) { return this.movePage(-1, t, s) }, nextPage: function(t, s) { return this.movePage(1, t, s) }, setPage: function(t, u, s) { return this.seekTo(t * m.size, u, s) }, begin: function(t, s) { i = false; return this.seekTo(0, t, s) }, end: function(t, s) { i = true; var u = this.getSize() - m.size; return u > 0 ? this.seekTo(u, t, s) : r }, reload: function() { p.trigger("onReload"); return r }, focus: function() { c = r; return r }, click: function(u) { var v = r.getItems().eq(u), s = m.activeClass, t = m.size; if (u < 0 || u >= r.getSize()) { return r } if (t == 1) { if (m.loop) { return r.next() } if (u === 0 || u == r.getSize() - 1) { i = (i === undefined) ? true : !i } return i === false ? r.prev() : r.next() } if (t == 2) { if (u == k) { u-- } r.getItems().removeClass(s); v.addClass(s); return r.seekTo(u, time, fn) } if (!v.hasClass(s)) { r.getItems().removeClass(s); v.addClass(s); var x = Math.floor(t / 2); var w = u - x; if (w > r.getSize() - t) { w = r.getSize() - t } if (w !== u) { return r.seekTo(w) } } return r }, bind: function(s, t) { p.bind(s, t); return r }, unbind: function(s) { p.unbind(s); return r } }); b.each("onBeforeSeek,onStart,onSeek,onReload".split(","), function(s, t) { r[t] = function(u) { return r.bind(t, u) } }); f.addClass(m.disabledClass).click(function() { r.prev() }); h.click(function() { r.next() }); n.click(function() { r.nextPage() }); if (r.getSize() < m.size) { h.add(n).addClass(m.disabledClass) } g.addClass(m.disabledClass).click(function() { r.prevPage() }); var j = m.hoverClass, q = "keydown." + Math.random().toString().substring(10); r.onReload(function() { if (j) { r.getItems().hover(function() { b(this).addClass(j) }, function() { b(this).removeClass(j) }) } if (m.clickable) { r.getItems().each(function(s) { b(this).unbind("click.scrollable").bind("click.scrollable", function(t) { if (b(t.target).is("a")) { return } return r.click(s) }) }) } if (m.keyboard) { b(document).unbind(q).bind(q, function(t) { if (t.altKey || t.ctrlKey) { return } if (m.keyboard != "static" && c != r) { return } var u = m.keyboardSteps; if (d && (t.keyCode == 37 || t.keyCode == 39)) { r.move(t.keyCode == 37 ? -u : u); return t.preventDefault() } if (!d && (t.keyCode == 38 || t.keyCode == 40)) { r.move(t.keyCode == 38 ? -u : u); return t.preventDefault() } return true }) } else { b(document).unbind(q) } }); r.reload() } b.fn.scrollable = function(d) { var e = this.eq(typeof d == "number" ? d : 0).data("scrollable"); if (e) { return e } var f = b.extend({}, b.tools.scrollable.conf); d = b.extend(f, d); d.keyboardSteps = d.keyboardSteps || d.size; this.each(function() { e = new a(b(this), d); b(this).data("scrollable", e) }); return d.api ? e : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.circular = { version: "0.5.1", conf: { api: false, clonedClass: "cloned"} }; b.fn.circular = function(e) { var d = b.extend({}, a.plugins.circular.conf), c; b.extend(d, e); this.each(function() { var i = b(this).scrollable(), n = i.getItems(), k = i.getConf(), f = i.getItemWrap(), j = 0; if (i) { c = i } if (n.length < k.size) { return false } n.slice(0, k.size).each(function(o) { b(this).clone().appendTo(f).click(function() { i.click(n.length + o) }).addClass(d.clonedClass) }); var l = b.makeArray(n.slice(-k.size)).reverse(); b(l).each(function(o) { b(this).clone().prependTo(f).click(function() { i.click(-o - 1) }).addClass(d.clonedClass) }); var m = f.children(k.item); var h = k.hoverClass; if (h) { m.hover(function() { b(this).addClass(h) }, function() { b(this).removeClass(h) }) } function g(o) { var p = m.eq(o); if (k.vertical) { f.css({ top: -p.position().top }) } else { f.css({ left: -p.position().left }) } } g(k.size); b.extend(i, { move: function(s, r, p, q) { var u = j + s + k.size; var t = u > i.getSize() - k.size; if (u <= 0 || t) { var o = j + k.size + (t ? -n.length : n.length); g(o); u = o + s } if (q) { m.removeClass(k.activeClass).eq(u + Math.floor(k.size / 2)).addClass(k.activeClass) } if (u === j + k.size) { return self } return i.seekTo(u, r, p) }, begin: function(p, o) { return this.seekTo(k.size, p, o) }, end: function(p, o) { return this.seekTo(n.length, p, o) }, click: function(p, r, q) { if (!k.clickable) { return self } if (k.size == 1) { return this.next() } var s = p - j, o = k.activeClass; s -= Math.floor(k.size / 2); return this.move(s, r, q, true) }, getIndex: function() { return j }, setPage: function(p, q, o) { return this.seekTo(p * k.size + k.size, q, o) }, getPageAmount: function() { return Math.ceil(n.length / k.size) }, getPageIndex: function() { if (j < 0) { return this.getPageAmount() - 1 } if (j >= n.length) { return 0 } var o = (j + k.size) / k.size - 1; return o }, getVisibleItems: function() { var o = j + k.size; return m.slice(o, o + k.size) } }); i.onStart(function(p, o) { j = o - k.size; return false }); i.getNaviButtons().removeClass(k.disabledClass) }); return d.api ? c : this } })(jQuery);
(function(b) { var a = b.tools.scrollable; a.plugins = a.plugins || {}; a.plugins.autoscroll = { version: "1.0.1", conf: { autoplay: true, interval: 3000, autopause: true, steps: 1, api: false} }; b.fn.autoscroll = function(d) { if (typeof d == "number") { d = { interval: d} } var e = b.extend({}, a.plugins.autoscroll.conf), c; b.extend(e, d); this.each(function() { var g = b(this).scrollable(); if (g) { c = g } var i, f, h = true; g.play = function() { if (i) { return } h = false; i = setInterval(function() { g.move(e.steps) }, e.interval); g.move(e.steps) }; g.pause = function() { i = clearInterval(i) }; g.stop = function() { g.pause(); h = true }; if (e.autopause) { g.getRoot().add(g.getNaviButtons()).hover(function() { g.pause(); clearInterval(f) }, function() { if (!h) { f = setTimeout(g.play, e.interval) } }) } if (e.autoplay) { setTimeout(g.play, e.interval) } }); return e.api ? c : this } })(jQuery);

/**
* jQuery.labelify - Display in-textbox hints
* Stuart Langridge, http://www.kryogenix.org/
* Released into the public domain
* Date: 25th June 2008
* @author Stuart Langridge
* @version 1.3
*/
jQuery.fn.labelify = function(settings) { settings = jQuery.extend({ text: "title", labelledClass: "blur" }, settings); var lookups = { title: function(input) { return $(input).attr("title"); }, label: function(input) { return $("label[for=" + input.id + "]").text(); } }; var lookup; var jQuery_labellified_elements = $(this); return $(this).each(function() { if (typeof settings.text === "string") { lookup = lookups[settings.text]; } else { lookup = settings.text; }; if (typeof lookup !== "function") { return; } var lookupval = lookup(this); if (!lookupval) { return; } $(this).data("label", lookup(this).replace(/\n/g, '')); $(this).focus(function() { if (this.value === $(this).data("label")) { this.value = this.defaultValue; $(this).removeClass(settings.labelledClass); } }).blur(function() { if (this.value === this.defaultValue) { this.value = $(this).data("label"); $(this).addClass(settings.labelledClass); } }); var removeValuesOnExit = function() { jQuery_labellified_elements.each(function() { if (this.value === $(this).data("label")) { this.value = this.defaultValue; $(this).removeClass(settings.labelledClass); } }) }; $(this).parents("form").submit(removeValuesOnExit); $(window).unload(removeValuesOnExit); if (this.value !== this.defaultValue) { return; } this.value = $(this).data("label"); $(this).addClass(settings.labelledClass); }); };

/*
* ////// NEWER VERSION OF OVERLAY ////////
*
* jQuery Tools 1.2.5 - The missing UI library for the Web
* 
* [overlay, overlay.apple]
* 
* NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
* 
* http://flowplayer.org/tools/
* 
* File generated: Fri Oct 22 09:38:07 GMT 2010
*/
(function(a) {
    function t(d, b) {
        var c = this, j = d.add(c), o = a(window), k, f, m, g = a.tools.expose && (b.mask || b.expose), n = Math.random().toString().slice(10); if (g) { if (typeof g == "string") g = { color: g }; g.closeOnClick = g.closeOnEsc = false } var p = b.target || d.attr("rel"); f = p ? a(p) : d; if (!f.length) throw "Could not find Overlay: " + p; d && d.index(f) == -1 && d.click(function(e) { c.load(e); return e.preventDefault() }); a.extend(c, { load: function(e) {
            if (c.isOpened()) return c; var h = q[b.effect]; if (!h) throw 'Overlay: cannot find effect : "' + b.effect +
'"'; b.oneInstance && a.each(s, function() { this.close(e) }); e = e || a.Event(); e.type = "onBeforeLoad"; j.trigger(e); if (e.isDefaultPrevented()) return c; m = true; g && a(f).expose(g); var i = b.top, r = b.left, u = f.outerWidth({ margin: true }), v = f.outerHeight({ margin: true }); if (typeof i == "string") i = i == "center" ? Math.max((o.height() - v) / 2, 0) : parseInt(i, 10) / 100 * o.height(); if (r == "center") r = Math.max((o.width() - u) / 2, 0); h[0].call(c, { top: i, left: r }, function() { if (m) { e.type = "onLoad"; j.trigger(e) } }); g && b.closeOnClick && a.mask.getMask().one("click",
c.close); b.closeOnClick && a(document).bind("click." + n, function(l) { a(l.target).parents(f).length || c.close(l) }); b.closeOnEsc && a(document).bind("keydown." + n, function(l) { l.keyCode == 27 && c.close(l) }); return c
        }, close: function(e) { if (!c.isOpened()) return c; e = e || a.Event(); e.type = "onBeforeClose"; j.trigger(e); if (!e.isDefaultPrevented()) { m = false; q[b.effect][1].call(c, function() { e.type = "onClose"; j.trigger(e) }); a(document).unbind("click." + n).unbind("keydown." + n); g && a.mask.close(); return c } }, getOverlay: function() { return f },
            getTrigger: function() { return d }, getClosers: function() { return k }, isOpened: function() { return m }, getConf: function() { return b } 
        }); a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","), function(e, h) { a.isFunction(b[h]) && a(c).bind(h, b[h]); c[h] = function(i) { i && a(c).bind(h, i); return c } }); k = f.find(b.close || ".close"); if (!k.length && !b.close) { k = a('<a class="close"></a>'); f.prepend(k) } k.click(function(e) { c.close(e) }); b.load && c.load()
    } a.tools = a.tools || { version: "1.2.5" }; a.tools.overlay = { addEffect: function(d,
b, c) { q[d] = [b, c] }, conf: { close: null, closeOnClick: true, closeOnEsc: true, closeSpeed: "fast", effect: "default", fixed: !a.browser.msie || a.browser.version > 6, left: "center", load: false, mask: null, oneInstance: true, speed: "normal", target: null, top: "10%"}
    }; var s = [], q = {}; a.tools.overlay.addEffect("default", function(d, b) { var c = this.getConf(), j = a(window); if (!c.fixed) { d.top += j.scrollTop(); d.left += j.scrollLeft() } d.position = c.fixed ? "fixed" : "absolute"; this.getOverlay().css(d).fadeIn(c.speed, b) }, function(d) {
        this.getOverlay().fadeOut(this.getConf().closeSpeed,
d)
    }); a.fn.overlay = function(d) { var b = this.data("overlay"); if (b) return b; if (a.isFunction(d)) d = { onBeforeLoad: d }; d = a.extend(true, {}, a.tools.overlay.conf, d); this.each(function() { b = new t(a(this), d); s.push(b); a(this).data("overlay", b) }); return d.api ? b : this } 
})(jQuery);
(function(h) {
    function k(d) { var e = d.offset(); return { top: e.top + d.height() / 2, left: e.left + d.width() / 2} } var l = h.tools.overlay, f = h(window); h.extend(l.conf, { start: { top: null, left: null }, fadeInSpeed: "fast", zIndex: 9999 }); function o(d, e) {
        var a = this.getOverlay(), c = this.getConf(), g = this.getTrigger(), p = this, m = a.outerWidth({ margin: true }), b = a.data("img"), n = c.fixed ? "fixed" : "absolute"; if (!b) {
            b = a.css("backgroundImage"); if (!b) throw "background-image CSS property not set for overlay"; b = b.slice(b.indexOf("(") + 1, b.indexOf(")")).replace(/\"/g,
""); a.css("backgroundImage", "none"); b = h('<img src="' + b + '"/>'); b.css({ border: 0, display: "none" }).width(m); h("body").append(b); a.data("img", b)
        } var i = c.start.top || Math.round(f.height() / 2), j = c.start.left || Math.round(f.width() / 2); if (g) { g = k(g); i = g.top; j = g.left } if (c.fixed) { i -= f.scrollTop(); j -= f.scrollLeft() } else { d.top += f.scrollTop(); d.left += f.scrollLeft() } b.css({ position: "absolute", top: i, left: j, width: 0, zIndex: c.zIndex }).show(); d.position = n; a.css(d); b.animate({ top: a.css("top"), left: a.css("left"), width: m },
c.speed, function() { a.css("zIndex", c.zIndex + 1).fadeIn(c.fadeInSpeed, function() { p.isOpened() && !h(this).index(a) ? e.call() : a.hide() }) }).css("position", n)
    } function q(d) { var e = this.getOverlay().hide(), a = this.getConf(), c = this.getTrigger(); e = e.data("img"); var g = { top: a.start.top, left: a.start.left, width: 0 }; c && h.extend(g, k(c)); a.fixed && e.css({ position: "absolute" }).animate({ top: "+=" + f.scrollTop(), left: "+=" + f.scrollLeft() }, 0); e.animate(g, a.closeSpeed, d) } l.addEffect("apple", o, q)
})(jQuery);


/* 
* 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 <http://www.gnu.org/licenses/>.
* 
* 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 = '<object width="' + o.width + '" height="' + o.height + '" id="' + o.id + '" name="' + o.id + '"'; if (o.cachebusting) { o.src += ((o.src.indexOf("?") != -1 ? "&" : "?") + Math.random()) } if (o.w3c || !h) { n += ' data="' + o.src + '" type="application/x-shockwave-flash"' } else { n += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' } n += ">"; if (o.w3c || h) { n += '<param name="movie" value="' + o.src + '" />' } o.width = o.height = o.id = o.w3c = o.src = null; o.onFail = o.version = o.expressInstall = null; for (var m in o) { if (o[m]) { n += '<param name="' + m + '" value="' + o[m] + '" />' } } var p = ""; if (l) { for (var f in l) { if (l[f]) { var q = l[f]; p += f + "=" + (/function|object/.test(typeof q) ? g.asString(q) : q) + "&" } } p = p.slice(0, -1); n += '<param name="flashvars" value=\'' + p + "' />" } n += "</object>"; 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 = "<h2>Flash version " + n.version + " or greater is required</h2><h3>" + (k[0] > 0 ? "Your version is " + k : "You have no flash plugin installed") + "</h3>" + (f.tagName == "A" ? "<p>Click here to download latest version</p>" : "<p>Download latest version from <a href='" + j + "'>here</a></p>"); if (f.tagName == "A") { f.onclick = function() { location.href = j } } } if (n.onFail) { var l = n.onFail.call(this); if (typeof l == "string") { f.innerHTML = l } } } } if (h) { window[n.id] = document.getElementById(n.id) } i(this, { getRoot: function() { return f }, getOptions: function() { return n }, getConf: function() { return m }, getApi: function() { return f.firstChild } }) } if (c) { jQuery.tools = jQuery.tools || { version: "3.2.4" }; jQuery.tools.flashembed = { conf: b }; jQuery.fn.flashembed = function(l, f) { return this.each(function() { $(this).data("flashembed", flashembed(this, l, f)) }) } } })();

/*
* ipad.js 3.2.1. The Flowplayer API
*
* Copyright 2010 Flowplayer Oy
* By Thomas Dubois <thomas@flowplayer.org>
*
* 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: 2010-08-25 17:40:08 +0000 (Wed, 25 Aug 2010)
* Revision: 4219
*/
$f.addPlugin("ipad", function(r) { var H = -1; var s = 0; var t = 1; var F = 2; var w = 3; var B = 4; var f = 5; var e = this; var J = 1; var I = false; var y = false; var o = false; var m = 0; var G = []; var c = { accelerated: false, autoBuffering: false, autoPlay: true, baseUrl: null, bufferLength: 3, connectionProvider: null, cuepointMultiplier: 1000, cuepoints: [], controls: {}, duration: 0, extension: "", fadeInSpeed: 1000, fadeOutSpeed: 1000, image: false, linkUrl: null, linkWindow: "_self", live: false, metaData: {}, originalUrl: null, position: 0, playlist: [], provider: "http", scaling: "scale", seekableOnBegin: false, start: 0, url: null, urlResolvers: [] }; var q = H; var k = H; var n = /iPad|iPhone|iPod/i.test(navigator.userAgent); var b = null; function i(N, M, K) { if (M) { for (key in M) { if (key) { if (M[key] && typeof M[key] == "function" && !K) { continue } if (M[key] && typeof M[key] == "object" && M[key].length == undefined) { var L = {}; i(L, M[key]); N[key] = L } else { N[key] = M[key] } } } } } var u = { simulateiDevice: false, controlsSizeRatio: 1.5, controls: true, debug: false }; i(u, r); function d() { if (u.debug) { if (n) { var K = [].splice.call(arguments, 0).join(", "); console.log.apply(console, [K]) } else { console.log.apply(console, arguments) } } } function h(K) { switch (K) { case -1: return "UNLOADED"; case 0: return "LOADED"; case 1: return "UNSTARTED"; case 2: return "BUFFERING"; case 3: return "PLAYING"; case 4: return "PAUSED"; case 5: return "ENDED" } return "UNKOWN" } function z(K) { var L = $f.fireEvent(e.id(), "onBefore" + K, m); return L !== false } function D(K) { K.stopPropagation(); K.preventDefault(); return false } function C(L, K) { if (q == H && !K) { return } k = q; q = L; d(h(L)) } function v() { b.fp_stop(); I = false; y = false; o = false; C(t); C(t) } function x() { v(); o = true; b.fp_seek(0) } function E(K) { } function l() { function K(M) { var L = {}; i(L, c); i(L, e.getCommonClip()); i(L, M); if (L.ipadUrl) { url = L.ipadUrl } else { if (L.url) { url = L.url } } if (url && url.indexOf("://") == -1 && L.baseUrl) { url = L.baseUrl + "/" + url } L.originalUrl = L.url; L.completeUrl = url; L.extension = L.completeUrl.substr(L.completeUrl.lastIndexOf(".")); L.type = "video"; delete L.index; d("fixed clip", L); return L } b.fp_play = function(O, M, Q) { var L = null; var P = true; var N = true; d("Calling play() " + O, O); if (M) { d("ERROR: inStream clips not yet supported"); return } if (O !== undefined) { if (typeof O == "number") { if (m >= G.length) { return } m = O; O = G[m] } else { if (typeof O == "string") { O = { url: O} } b.fp_setPlaylist(O.length !== undefined ? O : [O]) } O = G[m]; L = O.completeUrl; if (O.autoBuffering !== undefined && O.autoBuffering === false) { P = false } if (O.autoPlay === undefined || O.autoPlay === true || Q === true) { P = true; N = true } else { N = false } } else { d("clip was not given, simply calling video.play, if not already buffering"); if (q != F) { b.play() } return } d("about to play " + L, P, N); v(); if (L) { d("Changing SRC attribute" + L); b.setAttribute("src", L) } if (P) { if (!z("Begin")) { return false } $f.fireEvent(e.id(), "onBegin", m); d("calling video.load()"); b.load() } if (N) { d("calling video.play()"); b.play() } }; b.fp_pause = function() { d("pause called"); if (!z("Pause")) { return false } b.pause() }; b.fp_resume = function() { d("resume called"); if (!z("Resume")) { return false } b.play() }; b.fp_stop = function() { d("stop called"); if (!z("Stop")) { return false } y = true; b.pause(); try { b.currentTime = 0 } catch (L) { } }; b.fp_seek = function(L) { d("seek called " + L); if (!z("Seek")) { return false } var P = 0; var L = L + ""; if (L.charAt(L.length - 1) == "%") { var M = parseInt(L.substr(0, L.length - 1)) / 100; var O = b.duration; P = O * M } else { P = L } try { b.currentTime = P } catch (N) { d("Wrong seek time") } }; b.fp_getTime = function() { return b.currentTime }; b.fp_mute = function() { d("mute called"); if (!z("Mute")) { return false } J = b.volume; b.volume = 0 }; b.fp_unmute = function() { if (!z("Unmute")) { return false } b.volume = J }; b.fp_getVolume = function() { return b.volume * 100 }; b.fp_setVolume = function(L) { if (!z("Volume")) { return false } b.volume = L / 100 }; b.fp_toggle = function() { d("toggle called"); if (e.getState() == f) { x(); return } if (b.paused) { b.fp_play() } else { b.fp_pause() } }; b.fp_isPaused = function() { return b.paused }; b.fp_isPlaying = function() { return !b.paused }; b.fp_getPlugin = function(M) { if (M == "canvas" || M == "controls") { var L = e.getConfig(); return L.plugins && L.plugins[M] ? L.plugins[M] : null } d("ERROR: no support for " + M + " plugin on iDevices"); return null }; b.fp_close = function() { C(H); b.parentNode.removeChild(b); b = null }; b.fp_getStatus = function() { var M = 0; var N = 0; try { M = b.buffered.start(); N = b.buffered.end() } catch (L) { } return { bufferStart: M, bufferEnd: N, state: q, time: b.fp_getTime(), muted: b.muted, volume: b.fp_getVolume()} }; b.fp_getState = function() { return q }; b.fp_startBuffering = function() { if (q == t) { b.load() } }; b.fp_setPlaylist = function(M) { d("Setting playlist"); m = 0; for (var L = 0; L < M.length; L++) { M[L] = K(M[L]) } G = M; $f.fireEvent(e.id(), "onPlaylistReplace", M) }; b.fp_addClip = function(M, L) { M = K(M); G.splice(L, 0, M); $f.fireEvent(e.id(), "onClipAdd", M, L) }; b.fp_updateClip = function(M, L) { i(G[L], M); return G[L] }; b.fp_getVersion = function() { return "3.2.3" }; b.fp_isFullscreen = function() { return false }; b.fp_toggleFullscreen = function() { if (b.fp_isFullscreen()) { b.webkitExitFullscreen() } else { b.webkitEnterFullscreen() } }; $f.each(("toggleFullscreen,stopBuffering,reset,playFeed,setKeyboardShortcutsEnabled,isKeyboardShortcutsEnabled,addCuepoints,css,animate,showPlugin,hidePlugin,togglePlugin,fadeTo,invoke,loadPlugin").split(","), function() { var L = this; b["fp_" + L] = function() { d("ERROR: unsupported API on iDevices " + L); return false } }) } function A() { var V = ["abort", "canplay", "canplaythrough", "durationchange", "emptied", "ended", "error", "loadeddata", "loadedmetadata", "loadstart", "pause", "play", "playing", "progress", "ratechange", "seeked", "seeking", "stalled", "suspend", "timeupdate", "volumechange", "waiting"]; var N = function(X) { d("Got event " + X.type, X) }; for (var P = 0; P < V.length; P++) { b.addEventListener(V[P], N) } var K = function(X) { d("got onBufferEmpty event " + X.type); C(F); $f.fireEvent(e.id(), "onBufferEmpty", m) }; b.addEventListener("emptied", K, false); b.addEventListener("waiting", K, false); var M = function(X) { if (k == t || k == F) { } else { d("Restoring old state " + h(k)); C(k) } $f.fireEvent(e.id(), "onBufferFull", m) }; b.addEventListener("canplay", M, false); b.addEventListener("canplaythrough", M, false); var L = function(X) { b.fp_updateClip({ duration: b.duration, metaData: { duration: b.duration} }, m); G[m].duration = b.duration; $f.fireEvent(e.id(), "onMetaData", m, G[m]) }; b.addEventListener("loadedmetadata", L, false); b.addEventListener("durationchange", L, false); var U = function(X) { if (q == B) { if (!z("Resume")) { d("Resume disallowed, pausing"); b.fp_pause(); return D(X) } $f.fireEvent(e.id(), "onResume", m) } C(w); if (!I) { I = true; $f.fireEvent(e.id(), "onStart", m) } }; b.addEventListener("playing", U, false); var R = function(X) { if (!z("Finish")) { if (G.length == 1) { d("Active playlist only has one clip, onBeforeFinish returned false. Replaying"); x() } else { if (m != (G.length - 1)) { d("Not the last clip in the playlist, but onBeforeFinish returned false. Returning to the beginning of current clip"); b.fp_seek(0) } else { d("Last clip in playlist, but onBeforeFinish returned false, start again from the beginning"); b.fp_play(0) } } return D(X) } C(f); $f.fireEvent(e.id(), "onFinish", m); if (G.length > 1 && m < (G.length - 1)) { d("Not last clip in the playlist, moving to next one"); b.fp_play(++m, false, true) } }; b.addEventListener("ended", R, false); var Q = function(X) { C(s, true); $f.fireEvent(e.id(), "onError", m, 201); if (u.onFail && u.onFail instanceof Function) { u.onFail.apply(e, []) } }; b.addEventListener("error", Q, false); var T = function(X) { d("got pause event from player" + e.id()); if (y) { return } if (q == F && k == t) { d("forcing play"); setTimeout(function() { b.play() }, 0); return } if (!z("Pause")) { b.fp_resume(); return D(X) } C(B); $f.fireEvent(e.id(), "onPause", m) }; b.addEventListener("pause", T, false); var W = function(X) { $f.fireEvent(e.id(), "onBeforeSeek", m) }; b.addEventListener("seeking", W, false); var O = function(X) { if (y) { y = false; $f.fireEvent(e.id(), "onStop", m) } else { $f.fireEvent(e.id(), "onSeek", m) } d("seek done, currentState", h(q)); if (o) { o = false; b.fp_play() } else { if (q != w) { b.fp_pause() } } }; b.addEventListener("seeked", O, false); var S = function(X) { $f.fireEvent(e.id(), "onVolume", b.fp_getVolume()) }; b.addEventListener("volumechange", S, false) } function j() { b.fp_play(0) } function p() { } if (n || u.simulateiDevice) { if (!window.flashembed.__replaced) { var g = window.flashembed; window.flashembed = function(M, R, N) { if (typeof M == "string") { M = document.getElementById(M.replace("#", "")) } if (!M) { return } var Q = window.getComputedStyle(M, null); var P = parseInt(Q.width); var K = parseInt(Q.height); while (M.firstChild) { M.removeChild(M.firstChild) } var L = document.createElement("div"); var O = document.createElement("video"); L.appendChild(O); M.appendChild(L); L.style.height = K + "px"; L.style.width = P + "px"; L.style.display = "block"; L.style.position = "relative"; L.style.background = "-webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.7)))"; L.style.cursor = "default"; L.style.webkitUserDrag = "none"; O.style.height = "100%"; O.style.width = "100%"; O.style.display = "block"; O.id = R.id; O.name = R.id; O.style.cursor = "pointer"; O.style.webkitUserDrag = "none"; O.type = "video/mp4"; O.playerConfig = N.config; $f.fireEvent(N.config.playerId, "onLoad", "player") }; flashembed.getVersion = g.getVersion; flashembed.asString = g.asString; flashembed.isSupported = function() { return true }; flashembed.__replaced = true } var a = e._fireEvent; e._fireEvent = function(K) { if (K[0] == "onLoad" && K[1] == "player") { b = e.getParent().querySelector("video"); if (u.controls) { b.controls = "controls" } l(); A(); C(s, true); b.fp_setPlaylist(b.playerConfig.playlist); j(); a.apply(e, [K]) } var L = q != H; if (q == H && typeof K == "string") { L = true } if (L) { return a.apply(e, [K]) } }; e._swfHeight = function() { return parseInt(b.style.height) }; e.hasiPadSupport = function() { return true } } return e });
