// See: licenses.txt


// jQuery SWFObject Plugin v1.0.4
(function(C){var E=window,D=document,A="",B="object";C.flashPlayerVersion=(function(){var H,F=null,M=false,L="ShockwaveFlash.ShockwaveFlash";if(!(H=navigator.plugins["Shockwave Flash"])){try{F=new ActiveXObject(L+".7")}catch(K){try{F=new ActiveXObject(L+".6");H=[6,0,21];F.AllowScriptAccess="always"}catch(J){if(H&&H[0]===6){M=true}}if(!M){try{F=new ActiveXObject(L)}catch(I){H="X 0,0,0"}}}if(!M&&F){try{H=F.GetVariable("$version")}catch(G){}}}else{H=H.description}H=H.match(/^[A-Za-z\s]*?(\d+)(\.|,)(\d+)(\s+r|,)(\d+)/);return[H[1]*1,H[3]*1,H[5]*1]}());C.flashExpressInstaller="expressInstall.swf";C.hasFlashPlayer=(C.flashPlayerVersion[0]!==0);C.hasFlashPlayerVersion=function(G){var F=C.flashPlayerVersion;G=(/string|integer/.test(typeof G))?G.toString().split("."):G;G=[G.major||G[0]||F[0],G.minor||G[1]||F[1],G.release||G[2]||F[2]];return(C.hasFlashPlayer&&(G[0]>F[0]||(G[0]===F[0]&&(G[1]>F[1]||(G[1]===F[1]&&G[2]>=F[2])))))};C.flash=function(Q){if(!C.hasFlashPlayer){return false}var G=Q.swf||A,O=Q.params||{},I=D.createElement("body"),F,P,L,H,N,M,K,J;Q.height=Q.height||180;Q.width=Q.width||320;if(Q.hasVersion&&!C.hasFlashPlayerVersion(Q.hasVersion)){C.extend(Q,{id:"SWFObjectExprInst",height:Math.max(Q.height,137),width:Math.max(Q.width,214)});G=Q.expressInstaller||C.flashExpressInstaller;O={flashvars:{MMredirectURL:E.location.href,MMplayerType:(C.browser.msie&&C.browser.win)?"ActiveX":"PlugIn",MMdoctitle:D.title.slice(0,47)+" - Flash Player Installation"}}}if(typeof O===B){if(Q.flashvars){O.flashvars=Q.flashvars}if(Q.wmode){O.wmode=Q.wmode}}for(N in (M=["swf","expressInstall","hasVersion","params","flashvars","wmode"])){delete Q[M[N]]}F=[];for(N in Q){if(typeof Q[N]===B){P=[];for(M in Q[N]){P.push(M.replace(/([A-Z])/,"-$1").toLowerCase()+":"+Q[N][M]+";")}Q[N]=P.join(A)}F.push(N+'="'+Q[N]+'"')}Q=F.join(" ");if(typeof O===B){F=[];for(N in O){if(typeof O[N]===B){P=[];for(M in O[N]){if(typeof O[N][M]===B){L=[];for(K in O[N][M]){if(typeof O[N][M][K]===B){H=[];for(J in O[N][M][K]){H.push([J.replace(/([A-Z])/,"-$1").toLowerCase(),":",O[N][M][K][J],";"].join(A))}O[N][M][K]=H.join(A)}L.push([K,"{",O[N][M][K],"}"].join(A))}O[N][M]=L.join(A)}P.push([M,"=",E.escape(E.escape(O[N][M]))].join(A))}O[N]=P.join("&amp;")}F.push(['<PARAM NAME="',N,'" VALUE="',O[N],'">'].join(A))}O=F.join(A)}if(!(/style=/.test(Q))){Q+=' style="vertical-align:text-top;"'}if(!(/style=(.*?)vertical-align/.test(Q))){Q=Q.replace(/style="/,'style="vertical-align:text-top;')}if(C.browser.msie){Q+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';O='<PARAM NAME="movie" VALUE="'+G+'">'+O}else{Q+=' type="application/x-shockwave-flash" data="'+G+'"'}I.innerHTML=["<OBJECT ",Q,">",O,"</OBJECT>"].join(A);return C(I.firstChild)};C.fn.flash=function(G){if(!C.hasFlashPlayer){return this}var F=0,H;while((H=this.eq(F++))[0]){H.html(C.flash(C.extend({},G)));if(document.getElementById("SWFObjectExprInst")){F=this.length}}return this}}(jQuery));

// jQuery sIFR Plugin v3.0.4
(function(H){var O=true,X=false,K="",Q="height",T="width",D="offsetHeight",S="offsetWidth",V="color",G="cursor",P="font",B="fontSize",M="fontWeight",C="lineHeight",I="textAlign",Z="textTransform",A="childNodes",J="parentNode",F="children",U="content",Y="sIFR-replaced",N=function(a){return parseInt(a,10)},L=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],E={aqua:"0FF",azure:"F0FFFF",beige:"F5F5DC",black:"000",blue:"00F",brown:"A52A2A",cyan:"0FF",darkblue:"00008B",darkcyan:"008B8B",darkgrey:"A9A9A9",darkgreen:"006400",darkkhaki:"BDB76B",darkmagenta:"8B008B",darkolivegreen:"556B2F",darkorange:"FF8C00",darkorchid:"9932CC",darkred:"8B0000",darksalmon:"E9967A",darkviolet:"9400D3",fuchsia:"F0F",gold:"FFD700",green:"008000",indigo:"4B0082",khaki:"F0E68C",lightblue:"ADD8E6",lightcyan:"E0FFFF",lightgreen:"90EE90",lightgrey:"D3D3D3",lightpink:"FFB6C1",lightyellow:"FFFFE0",lime:"0F0",magenta:"F0F",maroon:"800000",navy:"000080",olive:"808000",orange:"FFA500",pink:"FFC0CB",purple:"800080",violet:"800080",red:"F00",silver:"C0C0C0",white:"FFF",yellow:"FF0",transparent:"FFF"},R=function(a){return isNaN(a)?"00":L[(a-a%16)/16]+L[a%16]},W=function(a){var b;return"#"+((a)?(b=E[a.toLowerCase()])?b:(b=a.match(/rgb\((\d+),\s(\d+),\s(\d+)\)/))?R(b[1])+R(b[2])+R(b[3]):a:"000").replace(/^#{0,}(\w)(\w)(\w)$|^#/,"$1$1$2$2$3$3").toUpperCase()};H.sifrNodeList=H(document).not(document);H.sifr=function(f){var e,i,h,g=arguments.callee,c,d;f=H.extend({},g.options,f);if(f.save){delete f.save;g.options=H.extend({},f)}f[P]=(f.path||K).replace(/([^\/])$/,"$1/")+(f[P]||K).replace(/\.swf$|$/,".swf");switch(f[Z]){case"lowercase":f[U]=f[U].toLowerCase();break;case"uppercase":f[U]=f[U].toUpperCase();break;case"capitalize":e=f[U].split(/(\s|\>)/);f[U]=K;for(c in e){f[U]+=e[c].charAt(0).toUpperCase()+e[c].substr(1)}}if(N(f.version)===3){d={content:f[U],cursor:f[G],css:H.extend({".sIFR-root":H.extend({color:W(f[V]),fontWeight:f[M]||"normal",lineHeight:f[C]||12,textAlign:f[I]||"left"},f.style),a:{},"a:hover":{}},f.css),delayrun:f.delayRun||X,events:f.events||X,fitexactly:f.fitExactly||X,fixhover:f.fixHover||O,forcesingleline:f.forceSingleLine||X,gridfittype:f.gridFitType||"pixel",height:(f[Q]*f.overY)||14,offsetleft:f.offsetLeft||0,offsettop:f.offsetTop||0,opacity:f.opacity||100,preventwrap:f.preventWrap||X,size:f[B]||12,tuneheight:f.tuneHeight||0,tunewidth:f.tuneWidth||0,version:f.build||436,width:(f[T]*f.overX)||320};d.css.a[V]=d.css.a[V]||W(f.linkColor||f[V]);d.css["a:hover"][V]=d.css["a:hover"][V]||W(f.hoverColor||d.css.a[V]||f[V]);d.selectable=f.selectable||((/arrow|pointer/.test(d[G]))?X:O);if(typeof f.filter==="object"){i=[];for(e in f.filter){if(typeof f.filter[e]==="object"){h=[];for(c in f.filter[e]){h.push(c.replace(/([A-Z])/,"-$1").toLowerCase()+":"+((/color/.test(c))?'"0x'+W(f.filter[e][c]).substr(1)+'"':f.filter[e][c]))}f.filter[e]=h.join(",")}i.push(e+"Filter,"+f.filter[e])}d.flashfilters=i.join(",")}}else{d={h:(f[Q]*f.zoom)||14,leading:Math.max(f[C]-f[B],0),offsetTop:Math.max((f[C]-f[B])/2,0),textAlign:f[I]||"left",textColor:W(f[V]),txt:f[U],w:(f[T]*f.zoom)||320};d.linkColor=W(f.linkColor||f[V]);d.hoverColor=W(f.hoverColor||d.linkColor||f[V]);if(f.underline===O){d.underline=O}}if(f.link){d.link=f.link}return H.flash({flashvars:d,height:(f[Q]*f.overY)||14,params:{wmode:"transparent"},swf:f[P],width:(f[T]*f.overX)||320})};H.fn.sifr=function(d){if(!H.hasFlashPlayer){return X}var h,c,f,g=this,e=0,a,b;d=H.extend({},d);while((c=g.eq(e++))[0]){b=H.extend({},(a=H.extend({},c.data("options"),d)));if(c.hasClass(Y)){c.unsifr()}c.addClass(Y)[0].innerHTML=['<span style="display:inline-block;position:relative;"><span class="sIFR-alternate" ',((b.debug)?"":'style="'+((H.browser.msie)?"zoom:1;filter:alpha(opacity=0)":"opacity:0")+';"'),">",c[0].innerHTML,'</span><span class="sIFR-flash" style="position:absolute;top:0;left:0;right:0;bottom:0;"></span></span>'].join(K);h=c[F]()[F]().eq(0);f=c[F]()[F]().eq(1);b[U]=b[U]||H.trim(h[0].innerHTML);b[Z]=b[Z]||h.css(Z).toLowerCase();b.zoom=b.zoom||1;b.overX=(b.overX||1)*(b.over||1);b.overY=(b.overY||1)*(b.over||1);b[Q]=b[Q]||Math.max(h[0][D]||h[0][J][D],N(h.css(C).replace(/normal/,N(h.css(B))*1.25)));b[T]=b[T]||h[0][S]||h[0][J][S];b[P]=b[P]||c.css("fontFamily").replace(/^\s+|\s+$|,[\S|\s]+|'|"|(,)\s+/g,"$1");b[V]=b[V]||h.css(V);b[G]=b[G]||h.css(G);b[M]=(b[M]||h.css(M).toString()).replace("400","normal").replace("700","bold");b[B]=(b[B]||N(h.css(B)))*b.zoom;b[C]=N(b[C]||h.css(C).replace(/normal/,b[B]*1.25))||b[Q];b[I]=b[I]||h.css(I).toString();if(b[I]==="center"){f.css("marginLeft",(b[T]-(b[T]*b.overX))/2)}if(b.resizable){H.sifrNodeList=H.sifrNodeList.add(c.data("options",H.extend({offsetHeight:h[0][D],offsetWidth:h[0][S]},a)))}f.html(H.sifr(b))}return g};H.fn.unsifr=function(){var c=this,a,b=0;while(((a=c.eq(b++))[0])&&a.hasClass(Y)){a.removeClass(Y)[0].innerHTML=a[0][A][0][A][0].innerHTML;H.sifrNodeList=H.sifrNodeList.not(a)}return c};H(window).resize(function(){H.sifrNodeList.filter(function(c){var b,d=this[A][0][A][0],a=(b=H(this)).data("options");if(d[D]!==a[D]||d[S]!==a[S]){a[D]=d[D];a[S]=d[S];b.data("options",a);return O}return X}).sifr()})}(jQuery));

// jQuery 9-Grid Scaling Plugin 0.9.3
(function($){var supportsBorderImage=false;var borderImageStyle;if($.browser.safari){supportsBorderImage=true;borderImageStyle='-webkit-border-image';}else if($.browser.mozilla&&$.browser.version.substr(0,3)=="1.9"&&parseFloat($.browser.version.substr(3))>1.0){supportsBorderImage=true;borderImageStyle='-moz-border-image';}
$.fn.extend({scale9Grid:function(settings){var gridTop=settings.top||0;var gridBottom=settings.bottom||0;var gridLeft=settings.left||0;var gridRight=settings.right||0;return $(this).each(function(){var $target=$(this);if($target.data('layoutGrid')){$target.remove9Grid();}
var backgroundImage=$target.css('background-image');var match=/url\("?([^\(\)"]+)"?\)/i.exec(backgroundImage);if(!match||match.length<2){return;}
var backgroundUrl=match[1];if($.browser.msie&&$.browser.version<7&&$target.css('float')!='none'&&$target.css('position')=='static'){$target.css('position','relative');}
$target.wrapInner('<div class="s9gwrapper"></div>');var $wrapper=$target.find('.s9gwrapper');$wrapper.css({'padding-left':$target.css('padding-left'),'padding-right':$target.css('padding-right'),'padding-top':$target.css('padding-top'),'padding-bottom':$target.css('padding-bottom'),'text-align':$target.css('text-align'),'position':'relative','z-index':'2','display':'block','background-color':'transparent','background-image':'none'});$target.css({'background-color':'transparent','background-image':'none','border-color':'transparent','padding':'0','text-align':'left'});var backgroundElement=document.createElement('div');$target.prepend(backgroundElement);var $background=$(backgroundElement);$background.css({'position':'relative','width':'0px','height':'0px','z-index':'0','display':'block'});$background.addClass('s9gbackground');if(supportsBorderImage){var cssProperties={'border-width':gridTop+'px '+gridRight+'px '+gridBottom+'px '+gridLeft+'px ','position':'absolute'}
cssProperties[borderImageStyle]=backgroundImage+' '+gridTop+' '+gridRight+' '+gridBottom+' '+gridLeft+' stretch stretch';$background.css(cssProperties);}
var imageWidth;var imageHeight;var lastWidth=0;var lastHeight=0;var cells=new Array();var layoutGrid=function(){var width=$target.innerWidth();var height=$target.innerHeight();if(width<gridLeft+gridRight||height<gridTop+gridBottom||(width==lastWidth&&height==lastHeight)){return;}
if(supportsBorderImage){$background.css({'width':width-gridLeft-gridRight+'px','height':height-gridTop-gridBottom+'px'})
return;}
lastWidth=width;lastHeight=height;var cellIndex=0;var existingCells=cells.length;for(var y=0;y<height;)
{var cellHeight;var verticalPosition;if(y==0){verticalPosition="top";cellHeight=Math.min(imageHeight-gridBottom,height-gridBottom);}
else if(y+imageHeight-gridTop>=height){verticalPosition="bottom";cellHeight=height-y;}
else{verticalPosition="center";cellHeight=Math.min(imageHeight-gridTop-gridBottom,height-y-gridBottom);}
for(var x=0;x<width;cellIndex++)
{var $cell;if(cellIndex<existingCells){$cell=cells[cellIndex];}
else{cellElement=document.createElement('div');$background.append(cellElement);$cell=$(cellElement);$cell.css({'position':'absolute','background-image':backgroundImage});cells.push($cell);}
var cellWidth;var horizontalPosition;if(x==0){horizontalPosition="left";cellWidth=Math.min(imageWidth-gridRight,width-gridRight);}
else if(x+imageWidth-gridBottom>=width){horizontalPosition="right";cellWidth=width-x;}
else{horizontalPosition="center";cellWidth=Math.min(imageWidth-gridLeft-gridRight,width-x-gridRight);}
$cell.css({'left':x+'px','top':y+'px','width':cellWidth+'px','height':cellHeight+'px','background-position':verticalPosition+' '+horizontalPosition});x+=cellWidth;}
y+=cellHeight;}
for(var i=cellIndex;i<existingCells;i++){cells[i].remove();}
cells.splice(cellIndex,cells.length-cellIndex);};var image=new Image();$(image).load(function(){if(image.width<gridLeft+gridRight||image.height<gridTop+gridBottom){return;}
imageWidth=image.width;imageHeight=image.height;layoutGrid();$(window).resize(layoutGrid);}).attr('src',backgroundUrl);$target.data('layoutGrid',layoutGrid);});},remove9Grid:function(){return $(this).each(function(){var $target=$(this);if(!$target.data('layoutGrid'))
return;$(window).unbind('resize',$target.data('layoutGrid'));$target.removeAttr('style');var content=$target.find('.s9gwrapper').contents();$target.prepend(content);$target.find('.s9gwrapper').remove();$target.find('.s9gbackground').remove();$target.removeData('layoutGrid');});}});})(jQuery);


// */ //
// Flowplayer Free version 3.1.5
(function(){function g(o){console.log("$f.fireEvent",[].slice.call(o))}function k(q){if(!q||typeof q!="object"){return q}var o=new q.constructor();for(var p in q){if(q.hasOwnProperty(p)){o[p]=k(q[p])}}return o}function m(t,q){if(!t){return}var o,p=0,r=t.length;if(r===undefined){for(o in t){if(q.call(t[o],o,t[o])===false){break}}}else{for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}}return t}function c(o){return document.getElementById(o)}function i(q,p,o){if(typeof p!="object"){return q}if(q&&p){m(p,function(r,s){if(!o||typeof s!="function"){q[r]=s}})}return q}function n(s){var q=s.indexOf(".");if(q!=-1){var p=s.substring(0,q)||"*";var o=s.substring(q+1,s.length);var r=[];m(document.getElementsByTagName(p),function(){if(this.className&&this.className.indexOf(o)!=-1){r.push(this)}});return r}}function f(o){o=o||window.event;if(o.preventDefault){o.stopPropagation();o.preventDefault()}else{o.returnValue=false;o.cancelBubble=true}return false}function j(q,o,p){q[o]=q[o]||[];q[o].push(p)}function e(){return"_"+(""+Math.random()).substring(2,10)}var h=function(t,r,s){var q=this;var p={};var u={};q.index=r;if(typeof t=="string"){t={url:t}}i(this,t,true);m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var v="on"+this;if(v.indexOf("*")!=-1){v=v.substring(0,v.length-1);var w="onBefore"+v.substring(2);q[w]=function(x){j(u,w,x);return q}}q[v]=function(x){j(u,v,x);return q};if(r==-1){if(q[w]){s[w]=q[w]}if(q[v]){s[v]=q[v]}}});i(this,{onCuepoint:function(x,w){if(arguments.length==1){p.embedded=[null,x];return q}if(typeof x=="number"){x=[x]}var v=e();p[v]=[x,w];if(s.isLoaded()){s._api().fp_addCuepoints(x,r,v)}return q},update:function(w){i(q,w);if(s.isLoaded()){s._api().fp_updateClip(w,r)}var v=s.getConfig();var x=(r==-1)?v.clip:v.playlist[r];i(x,w,true)},_fireEvent:function(v,y,w,A){if(v=="onLoad"){m(p,function(B,C){if(C[0]){s._api().fp_addCuepoints(C[0],r,B)}});return false}A=A||q;if(v=="onCuepoint"){var z=p[y];if(z){return z[1].call(s,A,w)}}if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){i(A,y);if(y.metaData){if(!A.duration){A.duration=y.metaData.duration}else{A.fullDuration=y.metaData.duration}}}var x=true;m(u[v],function(){x=this.call(s,A,y,w)});return x}});if(t.onCuepoint){var o=t.onCuepoint;q.onCuepoint.apply(q,typeof o=="function"?[o]:o);delete t.onCuepoint}m(t,function(v,w){if(typeof w=="function"){j(u,v,w);delete t[v]}});if(r==-1){s.onCuepoint=this.onCuepoint}};var l=function(p,r,q,t){var s={};var o=this;var u=false;if(t){i(s,t)}m(r,function(v,w){if(typeof w=="function"){s[v]=w;delete r[v]}});i(this,{animate:function(y,z,x){if(!y){return o}if(typeof z=="function"){x=z;z=500}if(typeof y=="string"){var w=y;y={};y[w]=z;z=500}if(x){var v=e();s[v]=x}if(z===undefined){z=500}r=q._api().fp_animate(p,y,z,v);return o},css:function(w,x){if(x!==undefined){var v={};v[w]=x;w=v}r=q._api().fp_css(p,w);i(o,r);return o},show:function(){this.display="block";q._api().fp_showPlugin(p);return o},hide:function(){this.display="none";q._api().fp_hidePlugin(p);return o},toggle:function(){this.display=q._api().fp_togglePlugin(p);return o},fadeTo:function(y,x,w){if(typeof x=="function"){w=x;x=500}if(w){var v=e();s[v]=w}this.display=q._api().fp_fadeTo(p,y,x,v);this.opacity=y;return o},fadeIn:function(w,v){return o.fadeTo(1,w,v)},fadeOut:function(w,v){return o.fadeTo(0,w,v)},getName:function(){return p},getPlayer:function(){return q},_fireEvent:function(w,v,x){if(w=="onUpdate"){var y=q._api().fp_getPlugin(p);if(!y){return}i(o,y);delete o.methods;if(!u){m(y.methods,function(){var A=""+this;o[A]=function(){var B=[].slice.call(arguments);var C=q._api().fp_invoke(p,A,B);return C==="undefined"||C===undefined?o:C}});u=true}}var z=s[w];if(z){z.apply(o,v);if(w.substring(0,1)=="_"){delete s[w]}}}})};function b(o,t,z){var E=this,y=null,x,u,p=[],s={},B={},r,v,w,D,A,q;i(E,{id:function(){return r},isLoaded:function(){return(y!==null)},getParent:function(){return o},hide:function(F){if(F){o.style.height="0px"}if(y){y.style.height="0px"}return E},show:function(){o.style.height=q+"px";if(y){y.style.height=A+"px"}return E},isHidden:function(){return y&&parseInt(y.style.height,10)===0},load:function(F){if(!y&&E._fireEvent("onBeforeLoad")!==false){m(a,function(){this.unload()});x=o.innerHTML;if(x&&!flashembed.isSupported(t.version)){o.innerHTML=""}flashembed(o,t,{config:z});if(F){F.cached=true;j(B,"onLoad",F)}}return E},unload:function(){if(x.replace(/\s/g,"")!==""){if(E._fireEvent("onBeforeUnload")===false){return E}try{if(y){y.fp_close();E._fireEvent("onUnload")}}catch(F){}y=null;o.innerHTML=x}return E},getClip:function(F){if(F===undefined){F=D}return p[F]},getCommonClip:function(){return u},getPlaylist:function(){return p},getPlugin:function(F){var H=s[F];if(!H&&E.isLoaded()){var G=E._api().fp_getPlugin(F);if(G){H=new l(F,G,E);s[F]=H}}return H},getScreen:function(){return E.getPlugin("screen")},getControls:function(){return E.getPlugin("controls")},getConfig:function(F){return F?k(z):z},getFlashParams:function(){return t},loadPlugin:function(I,H,K,J){if(typeof K=="function"){J=K;K={}}var G=J?e():"_";E._api().fp_loadPlugin(I,H,K,G);var F={};F[G]=J;var L=new l(I,null,E,F);s[I]=L;return L},getState:function(){return y?y.fp_getState():-1},play:function(G,F){function H(){if(G!==undefined){E._api().fp_play(G,F)}else{E._api().fp_play()}}if(y){H()}else{E.load(function(){H()})}return E},getVersion:function(){var G="flowplayer.js 3.1.4";if(y){var F=y.fp_getVersion();F.push(G);return F}return G},_api:function(){if(!y){throw"Flowplayer "+E.id()+" not loaded when calling an API method"}return y},setClip:function(F){E.setPlaylist([F]);return E},getIndex:function(){return w}});m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){var F="on"+this;if(F.indexOf("*")!=-1){F=F.substring(0,F.length-1);var G="onBefore"+F.substring(2);E[G]=function(H){j(B,G,H);return E}}E[F]=function(H){j(B,F,H);return E}});m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed").split(","),function(){var F=this;E[F]=function(H,G){if(!y){return E}var I=null;if(H!==undefined&&G!==undefined){I=y["fp_"+F](H,G)}else{I=(H===undefined)?y["fp_"+F]():y["fp_"+F](H)}return I==="undefined"||I===undefined?E:I}});E._fireEvent=function(O){if(typeof O=="string"){O=[O]}var P=O[0],M=O[1],K=O[2],J=O[3],I=0;if(z.debug){g(O)}if(!y&&P=="onLoad"&&M=="player"){y=y||c(v);A=y.clientHeight;m(p,function(){this._fireEvent("onLoad")});m(s,function(Q,R){R._fireEvent("onUpdate")});u._fireEvent("onLoad")}if(P=="onLoad"&&M!="player"){return}if(P=="onError"){if(typeof M=="string"||(typeof M=="number"&&typeof K=="number")){M=K;K=J}}if(P=="onContextMenu"){m(z.contextMenu[M],function(Q,R){R.call(E)});return}if(P=="onPluginEvent"){var F=M.name||M;var G=s[F];if(G){G._fireEvent("onUpdate",M);G._fireEvent(K,O.slice(3))}return}if(P=="onPlaylistReplace"){p=[];var L=0;m(M,function(){p.push(new h(this,L++,E))})}if(P=="onClipAdd"){if(M.isInStream){return}M=new h(M,K,E);p.splice(K,0,M);for(I=K+1;I<p.length;I++){p[I].index++}}var N=true;if(typeof M=="number"&&M<p.length){D=M;var H=p[M];if(H){N=H._fireEvent(P,K,J)}if(!H||N!==false){N=u._fireEvent(P,K,J,H)}}m(B[P],function(){N=this.call(E,M,K);if(this.cached){B[P].splice(I,1)}if(N===false){return false}I++});return N};function C(){if($f(o)){$f(o).getParent().innerHTML="";w=$f(o).getIndex();a[w]=E}else{a.push(E);w=a.length-1}q=parseInt(o.style.height,10)||o.clientHeight;if(typeof t=="string"){t={src:t}}r=o.id||"fp"+e();v=t.id||r+"_api";t.id=v;z.playerId=r;if(typeof z=="string"){z={clip:{url:z}}}if(typeof z.clip=="string"){z.clip={url:z.clip}}z.clip=z.clip||{};if(o.getAttribute("href",2)&&!z.clip.url){z.clip.url=o.getAttribute("href",2)}u=new h(z.clip,-1,E);z.playlist=z.playlist||[z.clip];var F=0;m(z.playlist,function(){var H=this;if(typeof H=="object"&&H.length){H={url:""+H}}m(z.clip,function(I,J){if(J!==undefined&&H[I]===undefined&&typeof J!="function"){H[I]=J}});z.playlist[F]=H;H=new h(H,F,E);p.push(H);F++});m(z,function(H,I){if(typeof I=="function"){if(u[H]){u[H](I)}else{j(B,H,I)}delete z[H]}});m(z.plugins,function(H,I){if(I){s[H]=new l(H,I,E)}});if(!z.plugins||z.plugins.controls===undefined){s.controls=new l("controls",null,E)}s.canvas=new l("canvas",null,E);t.bgcolor=t.bgcolor||"#000000";t.version=t.version||[9,0];t.expressInstall="http://www.flowplayer.org/swf/expressinstall.swf";function G(H){if(!E.isLoaded()&&E._fireEvent("onBeforeClick")!==false){E.load()}return f(H)}x=o.innerHTML;if(x.replace(/\s/g,"")!==""){if(o.addEventListener){o.addEventListener("click",G,false)}else{if(o.attachEvent){o.attachEvent("onclick",G)}}}else{if(o.addEventListener){o.addEventListener("click",f,false)}E.load()}}if(typeof o=="string"){flashembed.domReady(function(){var F=c(o);if(!F){throw"Flowplayer cannot access element: "+o}else{o=F;C()}})}else{C()}}var a=[];function d(o){this.length=o.length;this.each=function(p){m(o,p)};this.size=function(){return o.length}}window.flowplayer=window.$f=function(){var p=null;var o=arguments[0];if(!arguments.length){m(a,function(){if(this.isLoaded()){p=this;return false}});return p||a[0]}if(arguments.length==1){if(typeof o=="number"){return a[o]}else{if(o=="*"){return new d(a)}m(a,function(){if(this.id()==o.id||this.id()==o||this.getParent()==o){p=this;return false}});return p}}if(arguments.length>1){var r=arguments[1];var q=(arguments.length==3)?arguments[2]:{};if(typeof o=="string"){if(o.indexOf(".")!=-1){var t=[];m(n(o),function(){t.push(new b(this,k(r),k(q)))});return new d(t)}else{var s=c(o);return new b(s!==null?s:o,r,q)}}else{if(o){return new b(o,r,q)}}}return null};i(window.$f,{fireEvent:function(){var o=[].slice.call(arguments);var q=$f(o[0]);return q?q._fireEvent(o.slice(1)):null},addPlugin:function(o,p){b.prototype[o]=p;return $f},each:m,extend:i});if(typeof jQuery=="function"){jQuery.prototype.flowplayer=function(q,p){if(!arguments.length||typeof arguments[0]=="number"){var o=[];this.each(function(){var r=$f(this);if(r){o.push(r)}});return arguments.length?o[arguments[0]]:new d(o)}return this.each(function(){$f(this,k(q),p?k(p):{})})}}})();(function(){var e=typeof jQuery=="function";var i={width:"100%",height:"100%",allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:null,onFail:null,expressInstall:null,w3c:false,cachebusting:false};if(e){jQuery.tools=jQuery.tools||{};jQuery.tools.flashembed={version:"1.0.4",conf:i}}function j(){if(c.done){return false}var l=document;if(l&&l.getElementsByTagName&&l.getElementById&&l.body){clearInterval(c.timer);c.timer=null;for(var k=0;k<c.ready.length;k++){c.ready[k].call()}c.ready=null;c.done=true}}var c=e?jQuery:function(k){if(c.done){return k()}if(c.timer){c.ready.push(k)}else{c.ready=[k];c.timer=setInterval(j,13)}};function f(l,k){if(k){for(key in k){if(k.hasOwnProperty(key)){l[key]=k[key]}}}return l}function g(k){switch(h(k)){case"string":k=k.replace(new RegExp('(["\\\\])',"g"),"\\$1");k=k.replace(/^\s?(\d+)%/,"$1pct");return'"'+k+'"';case"array":return"["+b(k,function(n){return g(n)}).join(",")+"]";case"function":return'"function()"';case"object":var l=[];for(var m in k){if(k.hasOwnProperty(m)){l.push('"'+m+'":'+g(k[m]))}}return"{"+l.join(",")+"}"}return String(k).replace(/\s/g," ").replace(/\'/g,'"')}function h(l){if(l===null||l===undefined){return false}var k=typeof l;return(k=="object"&&l.push)?"array":k}if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function b(k,n){var m=[];for(var l in k){if(k.hasOwnProperty(l)){m[l]=n(k[l])}}return m}function a(r,t){var q=f({},r);var s=document.all;var n='<object width="'+q.width+'" height="'+q.height+'"';if(s&&!q.id){q.id="_"+(""+Math.random()).substring(9)}if(q.id){n+=' id="'+q.id+'"'}if(q.cachebusting){q.src+=((q.src.indexOf("?")!=-1?"&":"?")+Math.random())}if(q.w3c||!s){n+=' data="'+q.src+'" type="application/x-shockwave-flash"'}else{n+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'}n+=">";if(q.w3c||s){n+='<param name="movie" value="'+q.src+'" />'}q.width=q.height=q.id=q.w3c=q.src=null;for(var l in q){if(q[l]!==null){n+='<param name="'+l+'" value="'+q[l]+'" />'}}var o="";if(t){for(var m in t){if(t[m]!==null){o+=m+"="+(typeof t[m]=="object"?g(t[m]):t[m])+"&"}}o=o.substring(0,o.length-1);n+='<param name="flashvars" value=\''+o+"' />"}n+="</object>";return n}function d(m,p,l){var k=flashembed.getVersion();f(this,{getContainer:function(){return m},getConf:function(){return p},getVersion:function(){return k},getFlashvars:function(){return l},getApi:function(){return m.firstChild},getHTML:function(){return a(p,l)}});var q=p.version;var r=p.expressInstall;var o=!q||flashembed.isSupported(q);if(o){p.onFail=p.version=p.expressInstall=null;m.innerHTML=a(p,l)}else{if(q&&r&&flashembed.isSupported([6,65])){f(p,{src:r});l={MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title};m.innerHTML=a(p,l)}else{if(m.innerHTML.replace(/\s/g,"")!==""){}else{m.innerHTML="<h2>Flash version "+q+" or greater is required</h2><h3>"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"</h3>"+(m.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>");if(m.tagName=="A"){m.onclick=function(){location.href="http://www.adobe.com/go/getflashplayer"}}}}}if(!o&&p.onFail){var n=p.onFail.call(this);if(typeof n=="string"){m.innerHTML=n}}if(document.all){window[p.id]=document.getElementById(p.id)}}window.flashembed=function(l,m,k){if(typeof l=="string"){var n=document.getElementById(l);if(n){l=n}else{c(function(){flashembed(l,m,k)});return}}if(!l){return}if(typeof m=="string"){m={src:m}}var o=f({},i);f(o,m);return new d(l,o,k)};f(window.flashembed,{getVersion:function(){var m=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var l=navigator.plugins["Shockwave Flash"].description;if(typeof l!="undefined"){l=l.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var n=parseInt(l.replace(/^(.*)\..*$/,"$1"),10);var r=/r/.test(l)?parseInt(l.replace(/^.*r(.*)$/,"$1"),10):0;m=[n,r]}}else{if(window.ActiveXObject){try{var p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(q){try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");m=[6,0];p.AllowScriptAccess="always"}catch(k){if(m[0]==6){return m}}try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(o){}}if(typeof p=="object"){l=p.GetVariable("$version");if(typeof l!="undefined"){l=l.replace(/^\S+\s+(.*)$/,"$1").split(",");m=[parseInt(l[0],10),parseInt(l[2],10)]}}}}return m},isSupported:function(k){var m=flashembed.getVersion();var l=(m[0]>k[0])||(m[0]==k[0]&&m[1]>=k[1]);return l},domReady:c,asString:g,getHTML:a});if(e){jQuery.fn.flashembed=function(l,k){var m=null;this.each(function(){m=flashembed(this,l,k)});return l.api===false?this:m}}})();
// */ //

// Imaginuity proprietary
$.fn.toArray = function() {
	var retval = [];
	this.each( function() { retval.push( this ); } );
	return retval;
};

$.create = function( o ) {
	if( typeof o === 'string' ) o = { tagName: o };
	o = $.extend( { tagName: 'div' }, o );
	if( document.createElementNS ) return $( document.createElementNS( 'http://www.w3.org/1999/xhtml', o.tagName.toLowerCase() ) );
	else return $( document.createElement( o.tagName.toUpperCase() ) );
};

$(function() {
    if ($('#homepage-flash').length)
        $('#homepage-flash').flash({ swf: '/balfour.swf', width: 940, height: 595, wmode: 'transparent' });
        
	if ($('#top100-flash').length)
	    $('#top100-flash').flash({ swf: '/balfour.swf', width: 285, height: 206, wmode: 'transparent' });
	    
	if ($('#flash-carbon').length)
	    $('#flash-carbon').flash({ swf: '/carbon_quiz.swf', width: 640, height: 480, wmode: 'transparent' });
	    
	if ($('#flash-BBCReasons').length)
	    $('#flash-BBCReasons').flash( { swf: '/BBC-TopTenReasons.swf', width: 640, height: 480, wmode: 'transparent' } );
	
	if ($('#flash-career').length)
	    $('#flash-career').flash( { swf: '/career_quiz.swf', width: 640, height: 480, wmode: 'transparent' } );
	/*
	if ($('#homepage-flash-2010').length)
	    $('#homepage-flash-2010').flash( { swf: '/balfour_home.swf', width: 940, height: 595, wmode: 'transparent' } );
*/
	if ($('#holidayCard').length)
	    $('#holidayCard').flash( { swf: '/Media_Libraries/Media_Libraries/HolidayCard/holidaycard2010-FINAL5.swf', width: 800, height: 600, wmode: 'transparent' } );

	$( '#functions > ul > li > a' )
	.click( function( e ) {
		e.preventDefault();
		var t = $(this);
		if( t.is( '.active' ) ) {
			t.removeClass( 'active' ).next( 'div' ).fadeOut( 'slow' );
		} else {
			t.closest( 'ul' ).children( 'li' ).children( 'a' ).removeClass( 'active' ).next( 'div' ).fadeOut( 'slow' );
			t.addClass( 'active' ).next( 'div' ).fadeIn( 'slow' ).find( 'input:text:first' ).focus();
		}
	} );
	
	var bgx = 0;
	$( '#navigation-main > ul > li' )
	.each( function() {
		$(this)
		.addClass( 'nav-item-' + ( $( '#navigation-main > ul > li' ).index( this ) + 1 ) )
		.children( 'a' )
		.css( {
			'margin-left': ( bgx * -1 ) + 'px',
			'padding-left': bgx + 'px'
		} )
		.wrap( $.create( 'span' ).addClass( 'nav-image' ) );
		
		bgx += $(this).width();
	} );
	
	$( '.home #in-the-news li > h3' ).addClass( 'sIFR-univers-black' )
	.sifr( { font: '/sifr-univers-black', version: 3, build: 436, opacity: 80, fontWeight: 'normal', style: { 'letter-spacing': 1 } } );

	$( '#content > div > div.lower h3' ).addClass( 'sIFR-univers-condensed' )
	.sifr( { font: '/sifr-univers-condensed', version: 3, build: 436, opacity: 100, preventWrap: true, fontWeight: 'normal', fontSize: 20 } );

	$( '#content > .column-right > h3, #content > .column-right > div.upper > h3, #content > .column-left > div.lower > h3,  #content > .column-right > div.column-left > h3' ).addClass( 'sIFR-univers-black' )
	.sifr( { font: '/sifr-univers-black', version: 3, build: 436, opacity: 100, fontWeight: 'normal', style: { 'letter-spacing': 1 } } );
	
	$( '.home #in-the-news li > p' ).addClass( 'sIFR-univers' )
	.sifr( { font: '/sifr-univers', version: 3, build: 419, opacity: 80 } );
	
//	$( '.home #in-the-news li > a.read-more' ).removeClass( 'read-more' ).wrap( $.create( 'span' ) ).parent().addClass( 'read-more' ).addClass( 'sIFR-univers' )
//	.sifr( { font: '/sifr-univers', version: 3, build: 419, opacity: 80, preventWrap: true, css: { 'a': 'color: #ffffff; text-decoration: none;' } } );

	$( '#content > .column-right > h3, #content > .column-left h3' ).addClass( 'sIFR-univers-black' )
	.sifr( { font: '/sifr-univers-black', version: 3, build: 436, opacity: 80, fontWeight: 'normal', style: { 'letter-spacing': 1 } } );

//	$( '.column-right > a.read-more' ).removeClass( 'read-more' ).wrap( $.create( 'span' ) ).parent().addClass( 'read-more' ).addClass( 'sIFR-univers' )
//	.sifr( { font: '/sifr-univers', version: 3, build: 419, opacity: 80, preventWrap: true, css: { 'a': 'color: #444442; text-decoration: none;' } } );
	
	$( '#dynamic-footer > h2' ).addClass( 'sIFR-univers-condbold' )
	.sifr( { font: '/sifr-univers-condbold', version: 3, build: 436, fontWeight: 'normal', fontSize: 20, opacity: 100 } );

	$( '#content h2 > span' ).addClass( 'sub' );

	$( '#content h2' ).addClass( 'sIFR-univers-condbold' )
	.sifr( { font: '/sifr-univers-condbold', version: 3, build: 436, fontWeight: 'normal', fontSize: 20, opacity: 100, css: { '.sIFR-root': 'color: #807362;', '.sub': 'color: #2c6ea8;' }} );
	
	/*$( '#dynamic-footer > input:last' ).addClass( 'last-child' );*/
	
	$( '#navigation-utility > li:last > a' ).toggle(
		function( e ) {
			e.preventDefault();
			$( '#navigation-utility > li:last > div' ).slideDown( 'slow' );
		},
		function( e ) {
			e.preventDefault();
			$( '#navigation-utility > li:last > div' ).slideUp( 'slow' );
		}	
	);

	$('#flash-full').closest('#site-wrapper').find('h1').hide();
	
	if ($( '#flash-full.portfolio' ).length)
	    $( '#flash-full.portfolio' ).flash( { swf: '/fpo-interior.swf', width: 940, height: 550, wmode: 'transparent' } );

$( 'a[rel=video]' )
	.removeAttr( 'target' )
	.css( { display: 'block', clear: 'both' } )
	.each( function() {
//		e.preventDefault();
		var $t = $(this);

		var $i = $t;
		if( $t.is( ':has(img)' ) ) $i = $t.find( 'img' ).eq( 0 );

		$t
		.width( $i.width() )
		.height( $i.height() + 25 )
		.flowplayer( {
			src: '/flowplayer-3.1.5.swf',
			wmode: 'transparent'
		}, {
			clip: { autoPlay: true, autoBuffering: true }
		} )
	} );
	

	// Apply outer glow.
	// This works but for some reason is extremely slow!  (Except in Chrome)
/*	
	$( '#navigation-main > ul > li > ul, #functions > ul > li > div' )
	.css( { 'border': '0 none' } )
	.wrap( $.create( 'div' ) ).parent()
	.css( { 'padding': '2px', 'border': '0 none', 'margin': '0', 'background': 'url(images/flyout-border.png)' } )
	.scale9Grid( { top: 2, right: 2, bottom: 2, left: 2 } );
*/
} );




/*
 * jQuery Media Plugin for converting elements into rich media content.
 *
 * Examples and documentation at: http://malsup.com/jquery/media/
 * Copyright (c) 2007-2008 M. Alsup
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * @author: M. Alsup
 * @version: 0.92 (24-SEP-2009)
 * @requires jQuery v1.1.2 or later
 * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $
 *
 * Supported Media Players:
 *	- Flash
 *	- Quicktime
 *	- Real Player
 *	- Silverlight
 *	- Windows Media Player
 *	- iframe
 *
 * Supported Media Formats:
 *	 Any types supported by the above players, such as:
 *	 Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp
 *	 Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma
 *	 Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml
 *
 * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!
 * Thanks to Dan Rossi for numerous bug reports and code bits!
 * Thanks to Skye Giordano for several great suggestions!
 * Thanks to Richard Connamacher for excellent improvements to the non-IE behavior!
 */
;(function($) {

/**
 * Chainable method for converting elements into rich media.
 *
 * @param options
 * @param callback fn invoked for each matched element before conversion
 * @param callback fn invoked for each matched element after conversion
 */
$.fn.media = function(options, f1, f2) {
	if (options == 'undo') {
		return this.each(function() {
			var $this = $(this);
			var html = $this.data('media.origHTML');
			if (html)
				$this.replaceWith(html);
		});
	}
	
	return this.each(function() {
		if (typeof options == 'function') {
			f2 = f1;
			f1 = options;
			options = {};
		}
		var o = getSettings(this, options);
		// pre-conversion callback, passes original element and fully populated options
		if (typeof f1 == 'function') f1(this, o);

		var r = getTypesRegExp();
		var m = r.exec(o.src.toLowerCase()) || [''];

		o.type ? m[0] = o.type : m.shift();
		for (var i=0; i < m.length; i++) {
			fn = m[i].toLowerCase();
			if (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers
			if (!$.fn.media[fn])
				continue;  // unrecognized media type
			// normalize autoplay settings
			var player = $.fn.media[fn+'_player'];
			if (!o.params) o.params = {};
			if (player) {
				var num = player.autoplayAttr == 'autostart';
				o.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;
			}
			var $div = $.fn.media[fn](this, o);

			$div.css('backgroundColor', o.bgColor).width(o.width);
			
			if (o.canUndo) {
				var $temp = $('<div></div>').append(this);
				$div.data('media.origHTML', $temp.html()); // store original markup
			}
			
			// post-conversion callback, passes original element, new div element and fully populated options
			if (typeof f2 == 'function') f2(this, $div[0], o, player.name);
			break;
		}
	});
};

/**
 * Non-chainable method for adding or changing file format / player mapping
 * @name mapFormat
 * @param String format File format extension (ie: mov, wav, mp3)
 * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe
 */
$.fn.media.mapFormat = function(format, player) {
	if (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid
	format = format.toLowerCase();
	if (isDigit(format[0])) format = 'fn' + format;
	$.fn.media[format] = $.fn.media[player];
	$.fn.media[format+'_player'] = $.fn.media.defaults.players[player];
};

// global defautls; override as needed
$.fn.media.defaults = {
	standards:  false,      // use object tags only (no embeds for non-IE browsers)
	canUndo:    true,       // tells plugin to store the original markup so it can be reverted via: $(sel).mediaUndo()
	width:		400,
	height:		400,
	autoplay:	0,		   	// normalized cross-player setting
	bgColor:	'#ffffff', 	// background color
	params:		{ wmode: 'transparent'},	// added to object element as param elements; added to embed element as attrs
	attrs:		{},			// added to object and embed elements as attrs
	flvKeyName: 'file', 	// key used for object src param (thanks to Andrea Ercolino)
	flashvars:	{},			// added to flash content as flashvars param/attr
	flashVersion:	'7',	// required flash version
	expressInstaller: null,	// src for express installer

	// default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)
	flvPlayer:	 'mediaplayer.swf',
	mp3Player:	 'mediaplayer.swf',

	// @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx
	silverlight: {
		inplaceInstallPrompt: 'true', // display in-place install prompt?
		isWindowless:		  'true', // windowless mode (false for wrapping markup)
		framerate:			  '24',	  // maximum framerate
		version:			  '0.9',  // Silverlight version
		onError:			  null,	  // onError callback
		onLoad:			      null,   // onLoad callback
		initParams:			  null,	  // object init params
		userContext:		  null	  // callback arg passed to the load callback
	}
};

// Media Players; think twice before overriding
$.fn.media.defaults.players = {
	flash: {
		name:		 'flash',
		title:		 'Flash',
		types:		 'flv,mp3,swf',
		mimetype:	 'application/x-shockwave-flash',
		pluginspage: 'http://www.adobe.com/go/getflashplayer',
		ieAttrs: {
			classid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
			type:	  'application/x-oleobject',
			codebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion
		}
	},
	quicktime: {
		name:		 'quicktime',
		title:		 'QuickTime',
		mimetype:	 'video/quicktime',
		pluginspage: 'http://www.apple.com/quicktime/download/',
		types:		 'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',
		ieAttrs: {
			classid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
			codebase: 'http://www.apple.com/qtactivex/qtplugin.cab'
		}
	},
	realplayer: {
		name:		  'real',
		title:		  'RealPlayer',
		types:		  'ra,ram,rm,rpm,rv,smi,smil',
		mimetype:	  'audio/x-pn-realaudio-plugin',
		pluginspage:  'http://www.real.com/player/',
		autoplayAttr: 'autostart',
		ieAttrs: {
			classid: 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'
		}
	},
	winmedia: {
		name:		  'winmedia',
		title:		  'Windows Media',
		types:		  'asx,asf,avi,wma,wmv',
		mimetype:	  $.browser.mozilla && isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',
		pluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/',
		autoplayAttr: 'autostart',
		oUrl:		  'url',
		ieAttrs: {
			classid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',
			type:	  'application/x-oleobject'
		}
	},
	// special cases
	iframe: {
		name:  'iframe',
		types: 'html,pdf'
	},
	silverlight: {
		name:  'silverlight',
		types: 'xaml'
	}
};

//
//	everything below here is private
//


// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)
// (hat tip to Mark Ross for this script)
function isFirefoxWMPPluginInstalled() {
	var plugs = navigator.plugins;
	for (var i = 0; i < plugs.length; i++) {
		var plugin = plugs[i];
		if (plugin['filename'] == 'np-mswmp.dll')
			return true;
	}
	return false;
}

var counter = 1;

for (var player in $.fn.media.defaults.players) {
	var types = $.fn.media.defaults.players[player].types;
	$.each(types.split(','), function(i,o) {
		if (isDigit(o[0])) o = 'fn' + o;
		$.fn.media[o] = $.fn.media[player] = getGenerator(player);
		$.fn.media[o+'_player'] = $.fn.media.defaults.players[player];
	});
};

function getTypesRegExp() {
	var types = '';
	for (var player in $.fn.media.defaults.players) {
		if (types.length) types += ',';
		types += $.fn.media.defaults.players[player].types;
	};
	return new RegExp('\\.(' + types.replace(/,/ig,'|') + ')\\b');
};

function getGenerator(player) {
	return function(el, options) {
		return generate(el, options, player);
	};
};

function isDigit(c) {
	return '0123456789'.indexOf(c) > -1;
};

// flatten all possible options: global defaults, meta, option obj
function getSettings(el, options) {
	options = options || {};
	var $el = $(el);
	var cls = el.className || '';
	// support metadata plugin (v1.0 and v2.0)
	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();

	// make sure we have a source!
	opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
	return opts;
};

//
//	Flash Player
//

// generate flash using SWFObject library if possible
$.fn.media.swf = function(el, opts) {
	if (!window.SWFObject && !window.swfobject) {
		// roll our own
		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 = $('<div' + id + cls + '>');

	// swfobject v2+
	if (window.swfobject) {
		$(el).after($div).appendTo($div);
		if (!el.id) el.id = 'movie_player_' + counter++;

		// replace el with swfobject content
		swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion,
			opts.expressInstaller, opts.flashvars, opts.params, opts.attrs);
	}
	// swfobject < v2
	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) $('<div>').appendTo($div).html(opts.caption);
	return $div;
};

// map flv and mp3 files to the swf player by default
$.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);
};

//
//	Silverlight
//
$.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++;
	// convert element to div
	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
	var $div = $('<div' + id1 + cls + '>');
	$(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) $('<div>').appendTo($div).html(opts.caption);
	return $div;
};

//
// generate object/embed markup
//
function generate(el, opts, player) {
	var $el = $(el);
	var o = $.fn.media.defaults.players[player];

	if (player == 'iframe') {
		var o = $('<iframe' + ' width="' + opts.width + '" height="' + opts.height + '" >');
		o.attr('src', opts.src);
		o.css('backgroundColor', o.bgColor);
	}
	else if ($.browser.msie) {
		var a = ['<object width="' + opts.width + '" height="' + opts.height + '" '];
		for (var key in opts.attrs)
			a.push(key + '="'+opts.attrs[key]+'" ');
		for (var key in o.ieAttrs || {}) {
			var v = o.ieAttrs[key];
			if (key == 'codebase' && window.location.protocol == 'https:')
				v = v.replace('http','https');
			a.push(key + '="'+v+'" ');
		}
		a.push('></ob'+'ject'+'>');
		var p = ['<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">'];
		for (var key in opts.params)
			p.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
		var o = document.createElement(a.join(''));
		for (var i=0; i < p.length; i++)
			o.appendChild(document.createElement(p[i]));
	}
	else if (o.standards) {
		// Rewritten to be standards compliant by Richard Connamacher
		var a = ['<object type="' + o.mimetype +'" width="' + opts.width + '" height="' + opts.height +'"'];
		if (opts.src) a.push(' data="' + opts.src + '" ');
		a.push('>');
		a.push('<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">');
		for (var key in opts.params) {
			if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
				continue;
			a.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
		}
		// Alternate HTML
		a.push('<div><p><strong>'+o.title+' Required</strong></p><p>'+o.title+' is required to view this media. <a href="'+o.pluginspage+'">Download Here</a>.</p></div>');
		a.push('</ob'+'ject'+'>');
	}
	 else {
	        var a = ['<embed width="' + opts.width + '" height="' + opts.height + '" style="display:block"'];
	        if (opts.src) a.push(' src="' + opts.src + '" ');
	        for (var key in opts.attrs)
	            a.push(key + '="'+opts.attrs[key]+'" ');
	        for (var key in o.eAttrs || {})
	            a.push(key + '="'+o.eAttrs[key]+'" ');
	        for (var key in opts.params) {
	            if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
	            	continue;
	            a.push(key + '="'+opts.params[key]+'" ');
	        }
	        a.push('></em'+'bed'+'>');
	    }	
	// convert element to div
	var id = el.id ? (' id="'+el.id+'"') : '';
	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
	var $div = $('<div' + id + cls + '>');
	$el.after($div).remove();
	($.browser.msie || player == 'iframe') ? $div.append(o) : $div.html(a.join(''));
	if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
	return $div;
};


})(jQuery);

