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