summaryrefslogtreecommitdiff
path: root/chimere/static/jme/utils/reinitjme.js
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/static/jme/utils/reinitjme.js')
-rw-r--r--chimere/static/jme/utils/reinitjme.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/chimere/static/jme/utils/reinitjme.js b/chimere/static/jme/utils/reinitjme.js
new file mode 100644
index 0000000..9d78206
--- /dev/null
+++ b/chimere/static/jme/utils/reinitjme.js
@@ -0,0 +1,63 @@
+/**
+ * reinitMedia reinitiaizes the video/audio in the JWPlayer. This is sometimes needed, because of a Flash-Bug
+ *
+ */
+
+(function($){
+ $.fn.reinitMedia = (function(){
+ var cacheID = 0,
+ reg = /jme-nocache-\d+/,
+ addID = function(src){
+ if(!src){return '';}
+ cacheID++;
+ if(reg.test(src)){
+ return src.replace(reg, function(){
+ return 'jme-nocache-'+cacheID;
+ });
+ }
+ src += (src.indexOf('?') !== -1) ? '&' : '?';
+ return src + 'jme-nocache-'+cacheID;
+ }
+ ;
+
+ return function(o){
+ o = $.extend({}, $.fn.reinitMedia.defaults, o);
+
+ var reinit = {
+ msie: function(elem){
+ elem = $(elem);
+ var source = [];
+ $.each(elem.attr('srces'), function(i, src){
+ source.push($.extend(src, {src: addID(src.src)}));
+ });
+ elem.loadSrc(source, addID(elem.attr('poster') || undefined));
+ }
+ };
+
+ return this.each(function(){
+ var jme = $.data(this, 'mediaElemSupport');
+ if(!jme){return;}
+ var elem = this;
+ if(jme.name == 'jwPlayer' && o.msie && $.browser.msie && jme.apis.jwPlayer.apiElem && $.support.flashVersion >= 10.1){
+ if(o.queue){
+ var oldReady = jme.apis.jwPlayer.isAPIReady;
+ jme.apis.jwPlayer.isAPIReady = false;
+ setTimeout(function(){
+ jme.apis.jwPlayer.isAPIReady = oldReady;
+ reinit.msie(elem);
+ if(oldReady){
+ $(elem).triggerHandler('jmeflashRefresh');
+ }
+ }, 0);
+ } else {
+ reinit.msie(elem);
+ }
+ }
+ });
+ };
+ })();
+ $.fn.reinitMedia.defaults = {
+ msie: true,
+ queue: false
+ };
+})(jQuery);