;(function($){ $.fn.media=function(options,f1,f2){ return this.each(function(){ if(typeof options=='function'){ f2=f1; f1=options; options={}; } var o=getSettings(this,options); if(typeof f1=='function')f1(this,o); var r=getTypesRegExp(); var m=r.exec(o.src)||['']; o.type?m[0]=o.type:m.shift(); for(var i=0;i-1; }; function getSettings(el,options){ options=options||{}; var $el=$(el); var cls=el.className||''; var meta=$.metadata?$el.metadata():$.meta?$el.data():{}; meta=meta||{}; var w=meta.width||parseInt(((cls.match(/w:(\d+)/)||[])[1]||0)); var h=meta.height||parseInt(((cls.match(/h:(\d+)/)||[])[1]||0)); if(w)meta.width=w; if(h)meta.height=h; if(cls)meta.cls=cls; var a=$.fn.media.defaults; var b=options; var c=meta; var p={params:{bgColor:options.bgColor||$.fn.media.defaults.bgColor}}; var opts=$.extend({},a,b,c); $.each(['attrs','params','flashvars','silverlight'],function(i,o){ opts[o]=$.extend({},p[o]||{},a[o]||{},b[o]||{},c[o]||{}); }); if(typeof opts.caption=='undefined')opts.caption=$el.text(); opts.src=opts.src||$el.attr('href')||$el.attr('src')||'unknown'; return opts; }; $.fn.media.swf=function(el,opts){ if(!window.SWFObject&&!window.swfobject){ if(opts.flashvars){ var a=[]; for(var f in opts.flashvars) a.push(f+'='+opts.flashvars[f]); if(!opts.params)opts.params={}; opts.params.flashvars=a.join('&'); } return generate(el,opts,'flash'); } var id=el.id?(' id="'+el.id+'"'):''; var cls=opts.cls?(' class="'+opts.cls+'"'):''; var $div=$(''); if(window.swfobject){ $(el).after($div).appendTo($div); if(!el.id)el.id='movie_player_'+counter++; swfobject.embedSWF(opts.src,el.id,opts.width,opts.height,opts.flashVersion, opts.expressInstaller,opts.flashvars,opts.params,opts.attrs); } else{ $(el).after($div).remove(); var so=new SWFObject(opts.src,'movie_player_'+counter++,opts.width,opts.height,opts.flashVersion,opts.bgColor); if(opts.expressInstaller)so.useExpressInstall(opts.expressInstaller); for(var p in opts.params) if(p!='bgColor')so.addParam(p,opts.params[p]); for(var f in opts.flashvars) so.addVariable(f,opts.flashvars[f]); so.write($div[0]); } if(opts.caption)$('
').appendTo($div).html(opts.caption); return $div; }; $.fn.media.flv=$.fn.media.mp3=function(el,opts){ var src=opts.src; var player=/\.mp3\b/i.test(src)?$.fn.media.defaults.mp3Player:$.fn.media.defaults.flvPlayer; var key=opts.flvKeyName; src=encodeURIComponent(src); opts.src=player; opts.src=opts.src+'?'+key+'='+(src); var srcObj={}; srcObj[key]=src; opts.flashvars=$.extend({},srcObj,opts.flashvars); return $.fn.media.swf(el,opts); }; $.fn.media.xaml=function(el,opts){ if(!window.Sys||!window.Sys.Silverlight){ if($.fn.media.xaml.warning)return; $.fn.media.xaml.warning=1; alert('You must include the Silverlight.js script.'); return; } var props={ width:opts.width, height:opts.height, background:opts.bgColor, inplaceInstallPrompt:opts.silverlight.inplaceInstallPrompt, isWindowless:opts.silverlight.isWindowless, framerate:opts.silverlight.framerate, version:opts.silverlight.version }; var events={ onError:opts.silverlight.onError, onLoad:opts.silverlight.onLoad }; var id1=el.id?(' id="'+el.id+'"'):''; var id2=opts.id||'AG'+counter++; var cls=opts.cls?(' class="'+opts.cls+'"'):''; var $div=$(''); $(el).after($div).remove(); Sys.Silverlight.createObjectEx({ source:opts.src, initParams:opts.silverlight.initParams, userContext:opts.silverlight.userContext, id:id2, parentElement:$div[0], properties:props, events:events }); if(opts.caption)$('
').appendTo($div).html(opts.caption); return $div; }; function generate(el,opts,player){ var $el=$(el); var o=$.fn.media.defaults.players[player]; if(player=='iframe'){ var o=$(''); o.attr('src',opts.src); o.css('backgroundColor',o.bgColor); } else if($.browser.msie){ var a=[''); var p=['']; for(var key in opts.params) p.push(''); var o=document.createElement(a.join('')); for(var i=0;i'); } var id=el.id?(' id="'+el.id+'"'):''; var cls=opts.cls?(' class="'+opts.cls+'"'):''; var $div=$(''); $el.after($div).remove(); ($.browser.msie||player=='iframe')?$div.append(o):$div.html(a.join('')); if(opts.caption)$('
').appendTo($div).html(opts.caption); return $div; }; })(jQuery);