PageSourceSearch

https://aulafundacionaltius.org/lib/flowplayer/flowplayer-3.2.13.js

js aulafundacionaltius.org collected 2026-10-07 22:36:51 UTC 32,503 bytes, 1,015 lines download raw bytes

1/*
2 * flowplayer.js The Flowplayer API
3 *
4 * Copyright 2009-2011 Flowplayer Oy
5 *
6 * This file is part of Flowplayer.
7 *
8 * Flowplayer is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * Flowplayer is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with Flowplayer.  If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22!function () {
23    function h(p) {
24        console.log("$f.fireEvent", [].slice.call(p))
25    }
26
27    function l(r) {
28        if (!r || typeof r != "object") {
29            return r
30        }
31        var p = new r.constructor();
32        for (var q in r) {
33            if (r.hasOwnProperty(q)) {
34                p[q] = l(r[q])
35            }
36        }
37        return p
38    }
39
40    function n(u, r) {
41        if (!u) {
42            return
43        }
44        var p, q = 0, s = u.length;
45        if (s === undefined) {
46            for (p in u) {
47                if (r.call(u[p], p, u[p]) === false) {
48                    break
49                }
50            }
51        } else {
52            for (var t = u[0]; q < s && r.call(t, q, t) !== false; t = u[++q]) {
53            }
54        }
55        return u
56    }
57
58    function c(p) {
59        return document.getElementById(p)
60    }
61
62    function j(r, q, p) {
63        if (typeof q != "object") {
64            return r
65        }
66        if (r && q) {
67            n(q, function (s, t) {
68                if (!p || typeof t != "function") {
69                    r[s] = t
70                }
71            })
72        }
73        return r
74    }
75
76    function o(t) {
77        var r = t.indexOf(".");
78        if (r != -1) {
79            var q = t.slice(0, r) || "*";
80            var p = t.slice(r + 1, t.length);
81            var s = [];
82            n(document.getElementsByTagName(q), function () {
83                if (this.className && this.className.indexOf(p) != -1) {
84                    s.push(this)
85                }
86            });
87            return s
88        }
89    }
90
91    function g(p) {
92        p = p || window.event;
93        if (p.preventDefault) {
94            p.stopPropagation();
95            p.preventDefault()
96        } else {
97            p.returnValue = false;
98            p.cancelBubble = true
99        }
100        return false
101    }
102
103    function k(r, p, q) {
104        r[p] = r[p] || [];
105        r[p].push(q)
106    }
107
108    function e(p) {
109        return p.replace(/&amp;/g, "%26").replace(/&/g, "%26").replace(/=/g, "%3D")
110    }
111
112    function f() {
113        return"_" + ("" + Math.random()).slice(2, 10)
114    }
115
116    var i = function (u, s, t) {
117        var r = this, q = {}, v = {};
118        r.index = s;
119        if (typeof u == "string") {
120            u = {url: u}
121        }
122        j(this, u, true);
123        n(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","), function () {
124            var w = "on" + this;
125            if (w.indexOf("*") != -1) {
126                w = w.slice(0, w.length - 1);
127                var x = "onBefore" + w.slice(2);
128                r[x] = function (y) {
129                    k(v, x, y);
130                    return r
131                }
132            }
133            r[w] = function (y) {
134                k(v, w, y);
135                return r
136            };
137            if (s == -1) {
138                if (r[x]) {
139                    t[x] = r[x]
140                }
141                if (r[w]) {
142                    t[w] = r[w]
143                }
144            }
145        });
146        j(this, {onCuepoint: function (y, x) {
147            if (arguments.length == 1) {
148                q.embedded = [null, y];
149                return r
150            }
151            if (typeof y == "number") {
152                y = [y]
153            }
154            var w = f();
155            q[w] = [y, x];
156            if (t.isLoaded()) {
157                t._api().fp_addCuepoints(y, s, w)
158            }
159            return r
160        }, update: function (x) {
161            j(r, x);
162            if (t.isLoaded()) {
163                t._api().fp_updateClip(x, s)
164            }
165            var w = t.getConfig();
166            var y = (s == -1) ? w.clip : w.playlist[s];
167            j(y, x, true)
168        }, _fireEvent: function (w, z, x, B) {
169            if (w == "onLoad") {
170                n(q, function (C, D) {
171                    if (D[0]) {
172                        t._api().fp_addCuepoints(D[0], s, C)
173                    }
174                });
175                return false
176            }
177            B = B || r;
178            if (w == "onCuepoint") {
179                var A = q[z];
180                if (A) {
181                    return A[1].call(t, B, x)
182                }
183            }
184            if (z && "onBeforeBegin,onMetaData,onMetaDataChange,onStart,onUpdate,onResume".indexOf(w) != -1) {
185                j(B, z);
186                if (z.metaData) {
187                    if (!B.duration) {
188                        B.duration = z.metaData.duration
189                    } else {
190                        B.fullDuration = z.metaData.duration
191                    }
192                }
193            }
194            var y = true;
195            n(v[w], function () {
196                y = this.call(t, B, z, x)
197            });
198            return y
199        }});
200        if (u.onCuepoint) {
201            var p = u.onCuepoint;
202            r.onCuepoint.apply(r, typeof p == "function" ? [p] : p);
203            delete u.onCuepoint
204        }
205        n(u, function (w, x) {
206            if (typeof x == "function") {
207                k(v, w, x);
208                delete u[w]
209            }
210        });
211        if (s == -1) {
212            t.onCuepoint = this.onCuepoint
213        }
214    };
215    var m = function (q, s, r, u) {
216        var p = this, t = {}, v = false;
217        if (u) {
218            j(t, u)
219        }
220        n(s, function (w, x) {
221            if (typeof x == "function") {
222                t[w] = x;
223                delete s[w]
224            }
225        });
226        j(this, {animate: function (z, A, y) {
227            if (!z) {
228                return p
229            }
230            if (typeof A == "function") {
231                y = A;
232                A = 500
233            }
234            if (typeof z == "string") {
235                var x = z;
236                z = {};
237                z[x] = A;
238                A = 500
239            }
240            if (y) {
241                var w = f();
242                t[w] = y
243            }
244            if (A === undefined) {
245                A = 500
246            }
247            s = r._api().fp_animate(q, z, A, w);
248            return p
249        }, css: function (x, y) {
250            if (y !== undefined) {
251                var w = {};
252                w[x] = y;
253                x = w
254            }
255            s = r._api().fp_css(q, x);
256            j(p, s);
257            return p
258        }, show: function () {
259            this.display = "block";
260            r._api().fp_showPlugin(q);
261            return p
262        }, hide: function () {
263            this.display = "none";
264            r._api().fp_hidePlugin(q);
265            return p
266        }, toggle: function () {
267            this.display = r._api().fp_togglePlugin(q);
268            return p
269        }, fadeTo: function (z, y, x) {
270            if (typeof y == "function") {
271                x = y;
272                y = 500
273            }
274            if (x) {
275                var w = f();
276                t[w] = x
277            }
278            this.display = r._api().fp_fadeTo(q, z, y, w);
279            this.opacity = z;
280            return p
281        }, fadeIn: function (x, w) {
282            return p.fadeTo(1, x, w)
283        }, fadeOut: function (x, w) {
284            return p.fadeTo(0, x, w)
285        }, getName: function () {
286            return q
287        }, getPlayer: function () {
288            return r
289        }, _fireEvent: function (x, w, y) {
290            if (x == "onUpdate") {
291                var A = r._api().fp_getPlugin(q);
292                if (!A) {
293                    return
294                }
295                j(p, A);
296                delete p.methods;
297                if (!v) {
298                    n(A.methods, function () {
299                        var C = "" + this;
300                        p[C] = function () {
301                            var D = [].slice.call(arguments);
302                            var E = r._api().fp_invoke(q, C, D);
303                            return E === "undefined" || E === undefined ? p : E
304                        }
305                    });
306                    v = true
307                }
308            }
309            var B = t[x];
310            if (B) {
311                var z = B.apply(p, w);
312                if (x.slice(0, 1) == "_") {
313                    delete t[x]
314                }
315                return z
316            }
317            return p
318        }})
319    };
320
321    function b(r, H, u) {
322        var x = this, w = null, E = false, v, t, G = [], z = {}, y = {}, F, s, q, D, p, B;
323        j(x, {id: function () {
324            return F
325        }, isLoaded: function () {
326            return(w !== null && w.fp_play !== undefined && !E)
327        }, getParent: function () {
328            return r
329        }, hide: function (I) {
330            if (I) {
331                r.style.height = "0px"
332            }
333            if (x.isLoaded()) {
334                w.style.height = "0px"
335            }
336            return x
337        }, show: function () {
338            r.style.height = B + "px";
339            if (x.isLoaded()) {
340                w.style.height = p + "px"
341            }
342            return x
343        }, isHidden: function () {
344            return x.isLoaded() && parseInt(w.style.height, 10) === 0
345        }, load: function (K) {
346            if (!x.isLoaded() && x._fireEvent("onBeforeLoad") !== false) {
347                var I = function () {
348                    if (v && !flashembed.isSupported(H.version)) {
349                        r.innerHTML = ""
350                    }
351                    if (K) {
352                        K.cached = true;
353                        k(y, "onLoad", K)
354                    }
355                    flashembed(r, H, {config: u})
356                };
357                var J = 0;
358                n(a, function () {
359                    this.unload(function (L) {
360                        if (++J == a.length) {
361                            I()
362                        }
363                    })
364                })
365            }
366            return x
367        }, unload: function (K) {
368            if (v.replace(/\s/g, "") !== "") {
369                if (x._fireEvent("onBeforeUnload") === false) {
370                    if (K) {
371                        K(false)
372                    }
373                    return x
374                }
375                E = true;
376                try {
377                    if (w) {
378                        if (w.fp_isFullscreen()) {
379                            w.fp_toggleFullscreen()
380                        }
381                        w.fp_close();
382                        x._fireEvent("onUnload")
383                    }
384                } catch (I) {
385                }
386                var J = function () {
387                    w = null;
388                    r.innerHTML = v;
389                    E = false;
390                    if (K) {
391                        K(true)
392                    }
393                };
394                if (/WebKit/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent)) {
395                    setTimeout(J, 0)
396                } else {
397                    J()
398                }
399            } else {
400                if (K) {
401                    K(false)
402                }
403            }
404            return x
405        }, getClip: function (I) {
406            if (I === undefined) {
407                I = D
408            }
409            return G[I]
410        }, getCommonClip: function () {
411            return t
412        }, getPlaylist: function () {
413            return G
414        }, getPlugin: function (I) {
415            var K = z[I];
416            if (!K && x.isLoaded()) {
417                var J = x._api().fp_getPlugin(I);
418                if (J) {
419                    K = new m(I, J, x);
420                    z[I] = K
421                }
422            }
423            return K
424        }, getScreen: function () {
425            return x.getPlugin("screen")
426        }, getControls: function () {
427            return x.getPlugin("controls")._fireEvent("onUpdate")
428        }, getLogo: function () {
429            try {
430                return x.getPlugin("logo")._fireEvent("onUpdate")
431            } catch (I) {
432            }
433        }, getPlay: function () {
434            return x.getPlugin("play")._fireEvent("onUpdate")
435        }, getConfig: function (I) {
436            return I ? l(u) : u
437        }, getFlashParams: function () {
438            return H
439        }, loadPlugin: function (L, K, N, M) {
440            if (typeof N == "function") {
441                M = N;
442                N = {}
443            }
444            var J = M ? f() : "_";
445            x._api().fp_loadPlugin(L, K, N, J);
446            var I = {};
447            I[J] = M;
448            var O = new m(L, null, x, I);
449            z[L] = O;
450            return O
451        }, getState: function () {
452            return x.isLoaded() ? w.fp_getState() : -1
453        }, play: function (J, I) {
454            var K = function () {
455                if (J !== undefined) {
456                    x._api().fp_play(J, I)
457                } else {
458                    x._api().fp_play()
459                }
460            };
461            if (x.isLoaded()) {
462                K()
463            } else {
464                if (E) {
465                    setTimeout(function () {
466                        x.play(J, I)
467                    }, 50)
468                } else {
469                    x.load(function () {
470                        K()
471                    })
472                }
473            }
474            return x
475        }, getVersion: function () {
476            var J = "flowplayer.js @VERSION";
477            if (x.isLoaded()) {
478                var I = w.fp_getVersion();
479                I.push(J);
480                return I
481            }
482            return J
483        }, _api: function () {
484            if (!x.isLoaded()) {
485                throw"Flowplayer " + x.id() + " not loaded when calling an API method"
486            }
487            return w
488        }, setClip: function (I) {
489            n(I, function (J, K) {
490                if (typeof K == "function") {
491                    k(y, J, K);
492                    delete I[J]
493                } else {
494                    if (J == "onCuepoint") {
495                        $f(r).getCommonClip().onCuepoint(I[J][0], I[J][1])
496                    }
497                }
498            });
499            x.setPlaylist([I]);
500            return x
501        }, getIndex: function () {
502            return q
503        }, bufferAnimate: function (I) {
504            w.fp_bufferAnimate(I === undefined || I);
505            return x
506        }, _swfHeight: function () {
507            return w.clientHeight
508        }});
509        n(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","), function () {
510            var I = "on" + this;
511            if (I.indexOf("*") != -1) {
512                I = I.slice(0, I.length - 1);
513                var J = "onBefore" + I.slice(2);
514                x[J] = function (K) {
515                    k(y, J, K);
516                    return x
517                }
518            }
519            x[I] = function (K) {
520                k(y, I, K);
521                return x
522            }
523        });
524        n(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPau
524sed,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed,setKeyboardShortcutsEnabled,isKeyboardShortcutsEnabled").split(","), function () {
525            var I = this;
526            x[I] = function (K, J) {
527                if (!x.isLoaded()) {
528                    return x
529                }
530                var L = null;
531                if (K !== undefined && J !== undefined) {
532                    L = w["fp_" + I](K, J)
533                } else {
534                    L = (K === undefined) ? w["fp_" + I]() : w["fp_" + I](K)
535                }
536                return L === "undefined" || L === undefined ? x : L
537            }
538        });
539        x._fireEvent = function (R) {
540            if (typeof R == "string") {
541                R = [R]
542            }
543            var S = R[0], P = R[1], N = R[2], M = R[3], L = 0;
544            if (u.debug) {
545                h(R)
546            }
547            if (!x.isLoaded() && S == "onLoad" && P == "player") {
548                w = w || c(s);
549                p = x._swfHeight();
550                n(G, function () {
551                    this._fireEvent("onLoad")
552                });
553                n(z, function (T, U) {
554                    U._fireEvent("onUpdate")
555                });
556                t._fireEvent("onLoad")
557            }
558            if (S == "onLoad" && P != "player") {
559                return
560            }
561            if (S == "onError") {
562                if (typeof P == "string" || (typeof P == "number" && typeof N == "number")) {
563                    P = N;
564                    N = M
565                }
566            }
567            if (S == "onContextMenu") {
568                n(u.contextMenu[P], function (T, U) {
569                    U.call(x)
570                });
571                return
572            }
573            if (S == "onPluginEvent" || S == "onBeforePluginEvent") {
574                var I = P.name || P;
575                var J = z[I];
576                if (J) {
577                    J._fireEvent("onUpdate", P);
578                    return J._fireEvent(N, R.slice(3))
579                }
580                return
581            }
582            if (S == "onPlaylistReplace") {
583                G = [];
584                var O = 0;
585                n(P, function () {
586                    G.push(new i(this, O++, x))
587                })
588            }
589            if (S == "onClipAdd") {
590                if (P.isInStream) {
591                    return
592                }
593                P = new i(P, N, x);
594                G.splice(N, 0, P);
595                for (L = N + 1; L < G.length; L++) {
596                    G[L].index++
597                }
598            }
599            var Q = true;
600            if (typeof P == "number" && P < G.length) {
601                D = P;
602                var K = G[P];
603                if (K) {
604                    Q = K._fireEvent(S, N, M)
605                }
606                if (!K || Q !== false) {
607                    Q = t._fireEvent(S, N, M, K)
608                }
609            }
610            n(y[S], function () {
611                Q = this.call(x, P, N);
612                if (this.cached) {
613                    y[S].splice(L, 1)
614                }
615                if (Q === false) {
616                    return false
617                }
618                L++
619            });
620            return Q
621        };
622        function C() {
623            r.innerHTML=''; // Moodle hack - we do not want splashscreens, unfortunately there is not switch to disable them
624            if ($f(r)) {
625                $f(r).getParent().innerHTML = "";
626                q = $f(r).getIndex();
627                a[q] = x
628            } else {
629                a.push(x);
630                q = a.length - 1
631            }
632            B = parseInt(r.style.height, 10) || r.clientHeight;
633            F = r.id || "fp" + f();
634            s = H.id || F + "_api";
635            H.id = s;
636            v = r.innerHTML;
637            if (typeof u == "string") {
638                u = {clip: {url: u}}
639            }
640            u.playerId = F;
641            u.clip = u.clip || {};
642            if (r.getAttribute("href", 2) && !u.clip.url) {
643                u.clip.url = r.getAttribute("href", 2)
644            }
645            if (u.clip.url) {
646                u.clip.url = e(u.clip.url)
647            }
648            t = new i(u.clip, -1, x);
649            u.playlist = u.playlist || [u.clip];
650            var J = 0;
651            n(u.playlist, function () {
652                var M = this;
653                if (typeof M == "object" && M.length) {
654                    M = {url: "" + M}
655                }
656                if (M.url) {
657                    M.url = e(M.url)
658                }
659                n(u.clip, function (N, O) {
660                    if (O !== undefined && M[N] === undefined && typeof O != "function") {
661                        M[N] = O
662                    }
663                });
664                u.playlist[J] = M;
665                M = new i(M, J, x);
666                G.push(M);
667                J++
668            });
669            n(u, function (M, N) {
670                if (typeof N == "function") {
671                    if (t[M]) {
672                        t[M](N)
673                    } else {
674                        k(y, M, N)
675                    }
676                    delete u[M]
677                }
678            });
679            n(u.plugins, function (M, N) {
680                if (N) {
681                    z[M] = new m(M, N, x)
682                }
683            });
684            if (!u.plugins || u.plugins.controls === undefined) {
685                z.controls = new m("controls", null, x)
686            }
687            z.canvas = new m("canvas", null, x);
688            v = r.innerHTML;
689            function L(M) {
690                if (/iPad|iPhone|iPod/i.test(navigator.userAgent) && !/.flv$/i.test(G[0].url) && !K()) {
691                    return true
692                }
693                if (!x.isLoaded() && x._fireEvent("onBeforeClick") !== false) {
694                    x.load()
695                }
696                return g(M)
697            }
698
699            function K() {
700                return x.hasiPadSupport && x.hasiPadSupport()
701            }
702
703            function I() {
704                if (v.replace(/\s/g, "") !== "") {
705                    if (r.addEventListener) {
706                        r.addEventListener("click", L, false)
707                    } else {
708                        if (r.attachEvent) {
709                            r.attachEvent("onclick", L)
710                        }
711                    }
712                } else {
713                    if (r.addEventListener && !K()) {
714                        r.addEventListener("click", g, false)
715                    }
716                    x.load()
717                }
718            }
719
720            setTimeout(I, 0)
721        }
722
723        if (typeof r == "string") {
724            var A = c(r);
725            if (!A) {
726                throw"Flowplayer cannot access element: " + r
727            }
728            r = A;
729            C()
730        } else {
731            C()
732        }
733    }
734
735    var a = [];
736
737    function d(p) {
738        this.length = p.length;
739        this.each = function (r) {
740            n(p, r)
741        };
742        this.size = function () {
743            return p.length
744        };
745        var q = this;
746        for (name in b.prototype) {
747            q[name] = function () {
748                var r = arguments;
749                q.each(function () {
750                    this[name].apply(this, r)
751                })
752            }
753        }
754    }
755
756    window.flowplayer = window.$f = function () {
757        var q = null;
758        var p = arguments[0];
759        if(!flashembed.isSupported([6, 65])){return null;} // Moodle hack - we do not want the missing flash hints - we need the original links for accessibility and incompatible browsers
760        if (!arguments.length) {
761            n(a, function () {
762                if (this.isLoaded()) {
763                    q = this;
764                    return false
765                }
766            });
767            return q || a[0]
768        }
769        if (arguments.length == 1) {
770            if (typeof p == "number") {
771                return a[p]
772            } else {
773                if (p == "*") {
774                    return new d(a)
775                }
776                n(a, function () {
777                    if (this.id() == p.id || this.id() == p || this.getParent() == p) {
778                        q = this;
779                        return false
780                    }
781                });
782                return q
783            }
784        }
785        if (arguments.length > 1) {
786            var u = arguments[1], r = (arguments.length == 3) ? arguments[2] : {};
787            if (typeof u == "string") {
788                u = {src: u}
789            }
790            u = j({bgcolor: "#000000", version: [10, 1], expressInstall: "http://releases.flowplayer.org/swf/expressinstall.swf", cachebusting: false}, u);
791            if (typeof p == "string") {
792                if (p.indexOf(".") != -1) {
793                    var t = [];
794                    n(o(p), function () {
795                        t.push(new b(this, l(u), l(r)))
796                    });
797                    return new d(t)
798                } else {
799                    var s = c(p);
800                    return new b(s !== null ? s : l(p), l(u), l(r))
801                }
802            } else {
803                if (p) {
804                    return new b(p, l(u), l(r))
805                }
806            }
807        }
808        return null
809    };
810    j(window.$f, {fireEvent: function () {
811        var q = [].slice.call(arguments);
812        var r = $f(q[0]);
813        return r ? r._fireEvent(q.slice(1)) : null
814    }, addPlugin: function (p, q) {
815        b.prototype[p] = q;
816        return $f
817    }, each: n, extend: j});
818    if (typeof jQuery == "function") {
819        jQuery.fn.flowplayer = function (r, q) {
820            if (!arguments.length || typeof arguments[0] == "number") {
821                var p = [];
822                this.each(function () {
823                    var s = $f(this);
824                    if (s) {
825                        p.push(s)
826                    }
827                });
828                return arguments.length ? p[arguments[0]] : new d(p)
829            }
830            return this.each(function () {
831                $f(this, l(r), q ? l(q) : {})
832            })
833        }
834    }
835}();
836!function () {
837    var h = document.all, j = "http://get.adobe.com/flashplayer", 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};
838    if (window.attachEvent) {
839        window.attachEvent("onbeforeunload", function () {
840            __flash_unloadHandler = function () {
841            };
842            __flash_savedUnloadHandler = function () {
843            }
844        })
845    }
846    function i(m, l) {
847        if (l) {
848            for (var f in l) {
849                if (l.hasOwnProperty(f)) {
850                    m[f] = l[f]
851                }
852            }
853        }
854        return m
855    }
856
857    function a(f, n) {
858        var m = [];
859        for (var l in f) {
860            if (f.hasOwnProperty(l)) {
861                m[l] = n(f[l])
862            }
863        }
864        return m
865    }
866
867    window.flashembed = function (f, m, l) {
868        if (typeof f == "string") {
869            f = document.getElementById(f.replace("#", ""))
870        }
871        if (!f) {
872            return
873        }
874        if (typeof m == "string") {
875            m = {src: m}
876        }
877        return new d(f, i(i({}, b), m), l)
878    };
879    var g = i(window.flashembed, {conf: b, getVersion: function () {
880        var m, f, o;
881        try {
882            o = navigator.plugins["Shockwave Flash"];
883            if (o[0].enabledPlugin != null) {
884                f = o.description.slice(16)
885            }
886        } catch (p) {
887            try {
888                m = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
889                f = m && m.GetVariable("$version")
890            } catch (n) {
891                try {
892                    m = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
893                    f = m && m.GetVariable("$version")
894                } catch (l) {
895                }
896            }
897        }
898        f = e.exec(f);
899        return f ? [1 * f[1], 1 * f[(f[1] * 1 > 9 ? 2 : 3)] * 1] : [0, 0]
900    }, asString: function (l) {
901        if (l === null || l === undefined) {
902            return null
903        }
904        var f = typeof l;
905        if (f == "object" && l.push) {
906            f = "array"
907        }
908        switch (f) {
909            case"string":
910                l = l.replace(new RegExp('(["\\\\])', "g"), "\\$1");
911                l = l.replace(/^\s?(\d+\.?\d*)%/, "$1pct");
912                return'"' + l + '"';
913            case"array":
914                return"[" + a(l,function (o) {
915                    return g.asString(o)
916                }).join(",") + "]";
917            case"function":
918                return'"function()"';
919            case"object":
920                var m = [];
921                for (var n in l) {
922                    if (l.hasOwnProperty(n)) {
923                        m.push('"' + n + '":' + g.asString(l[n]))
924                    }
925                }
926                return"{" + m.join(",") + "}"
927        }
928        return String(l).replace(/\s/g, " ").replace(/\'/g, '"')
929    }, getHTML: function (o, l) {
930        o = i({}, o);
931        var n = '<object width="' + o.width + '" height="' + o.height + '" id="' + o.id + '" name="' + o.id + '"';
932        if (o.cachebusting) {
933            o.src += ((o.src.indexOf("?") != -1 ? "&" : "?") + Math.random())
934        }
935        if (o.w3c || !h) {
936            n += ' data="' + o.src + '" type="application/x-shockwave-flash"'
937        } else {
938            n += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
939        }
940        n += ">";
941        if (o.w3c || h) {
942            n += '<param name="movie" value="' + o.src + '" />'
943        }
944        o.width = o.height = o.id = o.w3c = o.src = null;
945        o.onFail = o.version = o.expressInstall = null;
946        for (var m in o) {
947            if (o[m]) {
948                n += '<param name="' + m + '" value="' + o[m] + '" />'
949            }
950        }
951        var p = "";
952        if (l) {
953            for (var f in l) {
954                if (l[f]) {
955                    var q = l[f];
956                    p += f + "=" + (/function|object/.test(typeof q) ? g.asString(q) : q) + "&"
957                }
958            }
959            p = p.slice(0, -1);
960            n += '<param name="flashvars" value=\'' + p + "' />"
961        }
962        n += "</object>";
963        return n
964    }, isSupported: function (f) {
965        return k[0] > f[0] || k[0] == f[0] && k[1] >= f[1]
966    }}
966);
967    var k = g.getVersion();
968
969    function d(f, n, m) {
970        if (g.isSupported(n.version)) {
971            f.innerHTML = g.getHTML(n, m)
972        } else {
973            if (n.expressInstall && g.isSupported([6, 65])) {
974                f.innerHTML = g.getHTML(i(n, {src: n.expressInstall}), {MMredirectURL: encodeURIComponent(location.href), MMplayerType: "PlugIn", MMdoctitle: document.title})
975            } else {
976                if (!f.innerHTML.replace(/\s/g, "")) {
977                    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>");
978                    if (f.tagName == "A" || f.tagName == "DIV") {
979                        f.onclick = function () {
980                            location.href = j
981                        }
982                    }
983                }
984                if (n.onFail) {
985                    var l = n.onFail.call(this);
986                    if (typeof l == "string") {
987                        f.innerHTML = l
988                    }
989                }
990            }
991        }
992        if (h) {
993            window[n.id] = document.getElementById(n.id)
994        }
995        i(this, {getRoot: function () {
996            return f
997        }, getOptions: function () {
998            return n
999        }, getConf: function () {
1000            return m
1001        }, getApi: function () {
1002            return f.firstChild
1003        }})
1004    }
1005
1006    if (c) {
1007        jQuery.tools = jQuery.tools || {version: "@VERSION"};
1008        jQuery.tools.flashembed = {conf: b};
1009        jQuery.fn.flashembed = function (l, f) {
1010            return this.each(function () {
1011                $(this).data("flashembed", flashembed(this, l, f))
1012            })
1013        }
1014    }
1015}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.