(function(){function log(args){console.log("$f.fireEvent",[].slice.call(args))
}function clone(obj){if(!obj||typeof obj!="object"){return obj
}var temp=new obj.constructor();
for(var key in obj){if(obj.hasOwnProperty(key)){temp[key]=clone(obj[key])
}}return temp
}function each(obj,fn){if(!obj){return 
}var name,i=0,length=obj.length;
if(length===undefined){for(name in obj){if(fn.call(obj[name],name,obj[name])===false){break
}}}else{for(var value=obj[0];
i<length&&fn.call(value,i,value)!==false;
value=obj[++i]){}}return obj
}function el(id){return document.getElementById(id)
}function extend(to,from,skipFuncs){if(to&&from){each(from,function(name,value){if(!skipFuncs||typeof value!="function"){to[name]=value
}})
}}function select(query){var index=query.indexOf(".");
if(index!=-1){var tag=query.substring(0,index)||"*";
var klass=query.substring(index+1,query.length);
var els=[];
each(document.getElementsByTagName(tag),function(){if(this.className&&this.className.indexOf(klass)!=-1){els.push(this)
}});
return els
}}function stopEvent(e){e=e||window.event;
if(e.preventDefault){e.stopPropagation();
e.preventDefault()
}else{e.returnValue=false;
e.cancelBubble=true
}return false
}function bind(to,evt,fn){to[evt]=to[evt]||[];
to[evt].push(fn)
}function makeId(){return"_"+(""+Math.random()).substring(2,10)
}var Clip=function(json,index,player){var self=this;
var cuepoints={};
var listeners={};
self.index=index;
if(typeof json=="string"){json={url:json}
}extend(this,json,true);
each(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var evt="on"+this;
if(evt.indexOf("*")!=-1){evt=evt.substring(0,evt.length-1);
var before="onBefore"+evt.substring(2);
self[before]=function(fn){bind(listeners,before,fn);
return self
}
}self[evt]=function(fn){bind(listeners,evt,fn);
return self
};
if(index==-1){if(self[before]){player[before]=self[before]
}if(self[evt]){player[evt]=self[evt]
}}});
extend(this,{onCuepoint:function(points,fn){if(arguments.length==1){cuepoints.embedded=[null,points];
return self
}if(typeof points=="number"){points=[points]
}var fnId=makeId();
cuepoints[fnId]=[points,fn];
if(player.isLoaded()){player._api().fp_addCuepoints(points,index,fnId)
}return self
},update:function(json){extend(self,json);
if(player.isLoaded()){player._api().fp_updateClip(json,index)
}var conf=player.getConfig();
var clip=(index==-1)?conf.clip:conf.playlist[index];
extend(clip,json,true)
},_fireEvent:function(evt,arg1,arg2,target){if(evt=="onLoad"){each(cuepoints,function(key,val){if(val[0]){player._api().fp_addCuepoints(val[0],index,key)
}});
return false
}if(index!=-1){target=self
}if(evt=="onCuepoint"){var fn=cuepoints[arg1];
if(fn){return fn[1].call(player,target,arg2)
}}if(evt=="onStart"||evt=="onUpdate"){extend(target,arg1);
if(!target.duration){target.duration=arg1.metaData.duration
}else{target.fullDuration=arg1.metaData.duration
}}var ret=true;
each(listeners[evt],function(){ret=this.call(player,target,arg1,arg2)
});
return ret
}});
if(json.onCuepoint){var arg=json.onCuepoint;
self.onCuepoint.apply(self,typeof arg=="function"?[arg]:arg);
delete json.onCuepoint
}each(json,function(key,val){if(typeof val=="function"){bind(listeners,key,val);
delete json[key]
}});
if(index==-1){player.onCuepoint=this.onCuepoint
}};
var Plugin=function(name,json,player,fn){var listeners={};
var self=this;
var hasMethods=false;
if(fn){extend(listeners,fn)
}each(json,function(key,val){if(typeof val=="function"){listeners[key]=val;
delete json[key]
}});
extend(this,{animate:function(props,speed,fn){if(!props){return self
}if(typeof speed=="function"){fn=speed;
speed=500
}if(typeof props=="string"){var key=props;
props={};
props[key]=speed;
speed=500
}if(fn){var fnId=makeId();
listeners[fnId]=fn
}if(speed===undefined){speed=500
}json=player._api().fp_animate(name,props,speed,fnId);
return self
},css:function(props,val){if(val!==undefined){var css={};
css[props]=val;
props=css
}json=player._api().fp_css(name,props);
extend(self,json);
return self
},show:function(){this.display="block";
player._api().fp_showPlugin(name);
return self
},hide:function(){this.display="none";
player._api().fp_hidePlugin(name);
return self
},toggle:function(){this.display=player._api().fp_togglePlugin(name);
return self
},fadeTo:function(o,speed,fn){if(typeof speed=="function"){fn=speed;
speed=500
}if(fn){var fnId=makeId();
listeners[fnId]=fn
}this.display=player._api().fp_fadeTo(name,o,speed,fnId);
this.opacity=o;
return self
},fadeIn:function(speed,fn){return self.fadeTo(1,speed,fn)
},fadeOut:function(speed,fn){return self.fadeTo(0,speed,fn)
},getName:function(){return name
},_fireEvent:function(evt,arg){if(evt=="onUpdate"){var json=player._api().fp_getPlugin(name);
if(!json){return 
}extend(self,json);
delete self.methods;
if(!hasMethods){each(json.methods,function(){var method=""+this;
self[method]=function(){var a=[].slice.call(arguments);
var ret=player._api().fp_invoke(name,method,a);
return ret=="undefined"?self:ret
}
});
hasMethods=true
}}var fn=listeners[evt];
if(fn){fn.call(self,arg);
if(evt.substring(0,1)=="_"){delete listeners[evt]
}}}})
};
function Player(wrapper,params,conf){var self=this,api=null,html,commonClip,playlist=[],plugins={},listeners={},playerId,apiId,playerIndex,activeIndex,swfHeight,wrapperHeight;
extend(self,{id:function(){return playerId
},isLoaded:function(){return(api!==null)
},getParent:function(){return wrapper
},hide:function(all){if(all){wrapper.style.height="0px"
}if(api){api.style.height="0px"
}return self
},show:function(){wrapper.style.height=wrapperHeight+"px";
if(api){api.style.height=swfHeight+"px"
}return self
},isHidden:function(){return api&&parseInt(api.style.height,10)===0
},load:function(fn){if(!api&&self._fireEvent("onBeforeLoad")!==false){each(players,function(){this.unload()
});
html=wrapper.innerHTML;
flashembed(wrapper,params,{config:conf});
if(fn){fn.cached=true;
bind(listeners,"onLoad",fn)
}}return self
},unload:function(){try{if(api&&api.fp_isFullscreen()){}}catch(error){return 
}if(api&&html.replace(/\s/g,"")!==""&&!api.fp_isFullscreen()&&self._fireEvent("onBeforeUnload")!==false){api.fp_close();
wrapper.innerHTML=html;
self._fireEvent("onUnload");
api=null
}return self
},getClip:function(index){if(index===undefined){index=activeIndex
}return playlist[index]
},getCommonClip:function(){return commonClip
},getPlaylist:function(){return playlist
},getPlugin:function(name){var plugin=plugins[name];
if(!plugin&&self.isLoaded()){var json=self._api().fp_getPlugin(name);
if(json){plugin=new Plugin(name,json,self);
plugins[name]=plugin
}}return plugin
},getScreen:function(){return self.getPlugin("screen")
},getControls:function(){return self.getPlugin("controls")
},getConfig:function(copy){return copy?clone(conf):conf
},getFlashParams:function(){return params
},loadPlugin:function(name,url,props,fn){if(typeof props=="function"){fn=props;
props={}
}var fnId=fn?makeId():"_";
self._api().fp_loadPlugin(name,url,props,fnId);
var arg={};
arg[fnId]=fn;
var p=new Plugin(name,null,self,arg);
plugins[name]=p;
return p
},getState:function(){return api?api.fp_getState():-1
},play:function(clip){function play(){if(clip!==undefined){self._api().fp_play(clip)
}else{self._api().fp_play()
}}if(api){play()
}else{self.load(function(){play()
})
}return self
},getVersion:function(){var js="flowplayer.js 3.0.3";
if(api){var ver=api.fp_getVersion();
ver.push(js);
return ver
}return js
},_api:function(){if(!api){throw"Flowplayer "+self.id()+" not loaded. Try moving your call to player's onLoad event"
}return api
},_dump:function(){console.log(listeners)
},setClip:function(clip){self.setPlaylist([clip])
},getIndex:function(){return playerIndex
}});
each(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,Fullscreen*,FullscreenExit,Error").split(","),function(){var name="on"+this;
if(name.indexOf("*")!=-1){name=name.substring(0,name.length-1);
var name2="onBefore"+name.substring(2);
self[name2]=function(fn){bind(listeners,name2,fn);
return self
}
}self[name]=function(fn){bind(listeners,name,fn);
return self
}
});
each(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,reset,close,setPlaylist").split(","),function(){var name=this;
self[name]=function(arg){if(!api){return self
}var ret=(arg===undefined)?api["fp_"+name]():api["fp_"+name](arg);
return ret=="undefined"?self:ret
}
});
self._fireEvent=function(evt,arg0,arg1,arg2){if(conf.debug){log(arguments)
}if(!api&&evt=="onLoad"&&arg0=="player"){api=api||el(apiId);
swfHeight=api.clientHeight;
each(playlist,function(){this._fireEvent("onLoad")
});
each(plugins,function(name,p){p._fireEvent("onUpdate")
});
commonClip._fireEvent("onLoad")
}if(evt=="onLoad"&&arg0!="player"){return 
}if(evt=="onError"){if(typeof arg0=="string"||(typeof arg0=="number"&&typeof arg1=="number")){arg0=arg1;
arg1=arg2
}}if(evt=="onContextMenu"){each(conf.contextMenu[arg0],function(key,fn){fn.call(self)
});
return 
}if(evt=="onPluginEvent"){var name=arg0.name||arg0;
var p=plugins[name];
if(p){p._fireEvent("onUpdate",arg0);
p._fireEvent(arg1)
}return 
}if(evt=="onPlaylistReplace"){playlist=[];
var index=0;
each(arg0,function(){playlist.push(new Clip(this,index++,self))
})
}var ret=true;
if(arg0===0||(arg0&&arg0>=0&&arg0<playlist.length)){activeIndex=arg0;
var clip=playlist[arg0];
if(clip){ret=clip._fireEvent(evt,arg1,arg2)
}if(!clip||ret!==false){ret=commonClip._fireEvent(evt,arg1,arg2,clip)
}}var i=0;
each(listeners[evt],function(){ret=this.call(self,arg0,arg1);
if(this.cached){listeners[evt].splice(i,1)
}if(ret===false){return false
}i++
});
return ret
};
function init(){if($f(wrapper)){$f(wrapper).getParent().innerHTML="";
playerIndex=$f(wrapper).getIndex();
players[playerIndex]=self
}else{players.push(self);
playerIndex=players.length-1
}wrapperHeight=parseInt(wrapper.style.height,10)||wrapper.clientHeight;
if(typeof params=="string"){params={src:params}
}playerId=wrapper.id||"fp"+makeId();
apiId=params.id||playerId+"_api";
params.id=apiId;
conf.playerId=playerId;
if(typeof conf=="string"){conf={clip:{url:conf}}
}conf.clip=conf.clip||{};
if(wrapper.getAttribute("href",2)&&!conf.clip.url){conf.clip.url=wrapper.getAttribute("href",2)
}commonClip=new Clip(conf.clip,-1,self);
conf.playlist=conf.playlist||[conf.clip];
var index=0;
each(conf.playlist,function(){var clip=this;
if(typeof clip=="object"&&clip.length){clip=""+clip
}if(!clip.url&&typeof clip=="string"){clip={url:clip}
}each(conf.clip,function(key,val){if(clip[key]===undefined&&typeof val!="function"){clip[key]=val
}});
conf.playlist[index]=clip;
clip=new Clip(clip,index,self);
playlist.push(clip);
index++
});
each(conf,function(key,val){if(typeof val=="function"){bind(listeners,key,val);
delete conf[key]
}});
each(conf.plugins,function(name,val){if(val){plugins[name]=new Plugin(name,val,self)
}});
if(!conf.plugins||conf.plugins.controls===undefined){plugins.controls=new Plugin("controls",null,self)
}params.bgcolor=params.bgcolor||"#000000";
params.version=params.version||[9,0];
params.expressInstall="http://www.flowplayer.org/swf/expressinstall.swf";
function doClick(e){if(!self.isLoaded()&&self._fireEvent("onBeforeClick")!==false){self.load()
}return stopEvent(e)
}html=wrapper.innerHTML;
if(html.replace(/\s/g,"")!==""){if(wrapper.addEventListener){wrapper.addEventListener("click",doClick,false)
}else{if(wrapper.attachEvent){wrapper.attachEvent("onclick",doClick)
}}}else{if(wrapper.addEventListener){wrapper.addEventListener("click",stopEvent,false)
}self.load()
}}if(typeof wrapper=="string"){flashembed.domReady(function(){var node=el(wrapper);
if(!node){throw"Flowplayer cannot access element: "+wrapper
}else{wrapper=node;
init()
}})
}else{init()
}}var players=[];
function Iterator(arr){this.length=arr.length;
this.each=function(fn){each(arr,fn)
};
this.size=function(){return arr.length
}
}window.flowplayer=window.$f=function(){var instance=null;
var arg=arguments[0];
if(!arguments.length){each(players,function(){if(this.isLoaded()){instance=this;
return false
}});
return instance||players[0]
}if(arguments.length==1){if(typeof arg=="number"){return players[arg]
}else{if(arg=="*"){return new Iterator(players)
}each(players,function(){if(this.id()==arg.id||this.id()==arg||this.getParent()==arg){instance=this;
return false
}});
return instance
}}if(arguments.length>1){var swf=arguments[1];
var conf=(arguments.length==3)?arguments[2]:{};
if(typeof arg=="string"){if(arg.indexOf(".")!=-1){var instances=[];
each(select(arg),function(){instances.push(new Player(this,clone(swf),clone(conf)))
});
return new Iterator(instances)
}else{var node=el(arg);
return new Player(node!==null?node:arg,swf,conf)
}}else{if(arg){return new Player(arg,swf,conf)
}}}return null
};
extend(window.$f,{fireEvent:function(id,evt,a0,a1,a2){var p=$f(id);
return p?p._fireEvent(evt,a0,a1,a2):null
},addPlugin:function(name,fn){Player.prototype[name]=fn;
return $f
},each:each,extend:extend});
if(document.all){window.onbeforeunload=function(){$f("*").each(function(){if(this.isLoaded()){this.close()
}})
}
}if(typeof jQuery=="function"){jQuery.prototype.flowplayer=function(params,conf){if(!arguments.length||typeof arguments[0]=="number"){var arr=[];
this.each(function(){var p=$f(this);
if(p){arr.push(p)
}});
return arguments.length?arr[arguments[0]]:new Iterator(arr)
}return this.each(function(){$f(this,clone(params),conf?clone(conf):{})
})
}
}})();
(function(){var jQ=typeof jQuery=="function";
function isDomReady(){if(domReady.done){return false
}var d=document;
if(d&&d.getElementsByTagName&&d.getElementById&&d.body){clearInterval(domReady.timer);
domReady.timer=null;
for(var i=0;
i<domReady.ready.length;
i++){domReady.ready[i].call()
}domReady.ready=null;
domReady.done=true
}}var domReady=jQ?jQuery:function(f){if(domReady.done){return f()
}if(domReady.timer){domReady.ready.push(f)
}else{domReady.ready=[f];
domReady.timer=setInterval(isDomReady,13)
}};
function extend(to,from){if(from){for(key in from){if(from.hasOwnProperty(key)){to[key]=from[key]
}}}return to
}function concatVars(vars){var out="";
for(var key in vars){if(vars[key]){out+=[key]+"="+asString(vars[key])+"&"
}}return out.substring(0,out.length-1)
}function asString(obj){switch(typeOf(obj)){case"string":obj=obj.replace(new RegExp('(["\\\\])',"g"),"\\$1");
obj=obj.replace(/^\s?(\d+)%/,"$1pct");
return'"'+obj+'"';
case"array":return"["+map(obj,function(el){return asString(el)
}).join(",")+"]";
case"function":return'"function()"';
case"object":var str=[];
for(var prop in obj){if(obj.hasOwnProperty(prop)){str.push('"'+prop+'":'+asString(obj[prop]))
}}return"{"+str.join(",")+"}"
}return String(obj).replace(/\s/g," ").replace(/\'/g,'"')
}function typeOf(obj){if(obj===null||obj===undefined){return false
}var type=typeof obj;
return(type=="object"&&obj.push)?"array":type
}if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){}
})
}function map(arr,func){var newArr=[];
for(var i in arr){if(arr.hasOwnProperty(i)){newArr[i]=func(arr[i])
}}return newArr
}function getEmbedCode(p,c){var html='<embed type="application/x-shockwave-flash" ';
if(p.id){extend(p,{name:p.id})
}for(var key in p){if(p[key]!==null){html+=key+'="'+p[key]+'"\n\t'
}}if(c){html+="flashvars='"+concatVars(c)+"'"
}html+="/>";
return html
}function getObjectCode(p,c,embeddable){var html='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
html+='width="'+p.width+'" height="'+p.height+'"';
if(!p.id&&document.all){p.id="_"+(""+Math.random()).substring(5)
}if(p.id){html+=' id="'+p.id+'"'
}html+=">";
if(document.all){p.src+=((p.src.indexOf("?")!=-1?"&":"?")+Math.random())
}html+='\n\t<param name="movie" value="'+p.src+'" />';
var e=extend({},p);
e.id=e.width=e.height=e.src=null;
for(var k in e){if(e[k]!==null){html+='\n\t<param name="'+k+'" value="'+e[k]+'" />'
}}if(c){html+='\n\t<param name="flashvars" value=\''+concatVars(c)+"' />"
}if(embeddable){html+=getEmbedCode(p,c)
}html+="</object>";
return html
}function getFullHTML(p,c){return getObjectCode(p,c,true)
}function getHTML(p,c){var isNav=navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length;
return(isNav)?getEmbedCode(p,c):getObjectCode(p,c)
}window.flashembed=function(root,userParams,flashvars){var params={src:"#",width:"100%",height:"100%",version:null,onFail:null,expressInstall:null,debug:false,allowfullscreen:true,allowscriptaccess:"always",quality:"high",type:"application/x-shockwave-flash",pluginspage:"http://www.adobe.com/go/getflashplayer"};
if(typeof userParams=="string"){userParams={src:userParams}
}extend(params,userParams);
var version=flashembed.getVersion();
var required=params.version;
var express=params.expressInstall;
var debug=params.debug;
if(typeof root=="string"){var el=document.getElementById(root);
if(el){root=el
}else{domReady(function(){flashembed(root,userParams,flashvars)
});
return 
}}if(!root){return 
}if(!required||flashembed.isSupported(required)){params.onFail=params.version=params.expressInstall=params.debug=null;
root.innerHTML=getHTML(params,flashvars);
return root.firstChild
}else{if(params.onFail){var ret=params.onFail.call(params,flashembed.getVersion(),flashvars);
if(ret===true){root.innerHTML=ret
}}else{if(required&&express&&flashembed.isSupported([6,65])){extend(params,{src:express});
flashvars={MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title};
root.innerHTML=getHTML(params,flashvars)
}else{if(root.innerHTML.replace(/\s/g,"")!==""){}else{root.innerHTML="<h2>Flash version "+required+" or greater is required</h2><h3>"+(version[0]>0?"Your version is "+version:"You have no flash plugin installed")+"</h3><p>Download latest version from <a href='"+params.pluginspage+"'>here</a></p>"
}}}}return root
};
extend(window.flashembed,{getVersion:function(){var version=[0,0];
if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var _d=navigator.plugins["Shockwave Flash"].description;
if(typeof _d!="undefined"){_d=_d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");
var _m=parseInt(_d.replace(/^(.*)\..*$/,"$1"),10);
var _r=/r/.test(_d)?parseInt(_d.replace(/^.*r(.*)$/,"$1"),10):0;
version=[_m,_r]
}}else{if(window.ActiveXObject){try{var _a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
}catch(e){try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
version=[6,0];
_a.AllowScriptAccess="always"
}catch(ee){if(version[0]==6){return 
}}try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
}catch(eee){}}if(typeof _a=="object"){_d=_a.GetVariable("$version");
if(typeof _d!="undefined"){_d=_d.replace(/^\S+\s+(.*)$/,"$1").split(",");
version=[parseInt(_d[0],10),parseInt(_d[2],10)]
}}}}return version
},isSupported:function(version){var now=flashembed.getVersion();
var ret=(now[0]>version[0])||(now[0]==version[0]&&now[1]>=version[1]);
return ret
},domReady:domReady,asString:asString,getHTML:getHTML,getFullHTML:getFullHTML});
if(jQ){jQuery.prototype.flashembed=function(params,flashvars){return this.each(function(){flashembed(this,params,flashvars)
})
}
}})();
