diff options
Diffstat (limited to 'chimere/static/jme/utils/reinitjme.js')
| -rw-r--r-- | chimere/static/jme/utils/reinitjme.js | 63 | 
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);  | 
