function PagePlayer(p){var c=this,g=this,i=soundManager,r=navigator.userAgent.match(/msie/i),q=navigator.userAgent.match(/opera/i),s=navigator.userAgent.match(/firefox/i);i.url="../../";this.config={flashVersion:8,usePeakData:false,useWaveformData:false,useEQData:false,fillGraph:false,allowRightClick:false,useThrottling:false,autoStart:false,playNext:true,updatePageTitle:false,emptyTime:"-:--",useFavIcon:false};i.debugMode=window.location.href.toString().match(/debug=1/i)?true:false;this._mergeObjects=
function(a,b){var d={};for(var e in a)d[e]=a[e];a=typeof b=="undefined"?{}:b;for(var f in a)if(typeof d[f]=="undefined")d[f]=a[f];return d};if(typeof p!="undefined"&&p)this.config=this._mergeObjects(p,this.config);this.css={sDefault:"sm2_link",sLoading:"sm2_loading",sPlaying:"sm2_playing",sPaused:"sm2_paused"};this.cssBase=[];this.config.usePeakData&&this.cssBase.push("use-peak");if(this.config.useWaveformData||this.config.useEQData)this.cssBase.push("use-spectrum");this.cssBase=this.cssBase.join(" ");
i.flashVersion=this.config.flashVersion;if(i.flashVersion>=9){i.useMovieStar=this.config.useMovieStar;i.movieStarOptions.useVideo=this.config.useVideo;i.defaultOptions.usePeakData=this.config.usePeakData;i.defaultOptions.useWaveformData=this.config.useWaveformData;i.defaultOptions.useEQData=this.config.useEQData}this.links=[];this.sounds=[];this.soundsByObject=[];this.lastSound=null;this.soundCount=0;this.strings=[];this.dragActive=false;this.dragExec=new Date;this.dragTimer=null;this.pageTitle=document.title;
this.lastWPExec=new Date;this.xbmImages=[];this.oControls=null;this.addEventHandler=function(a,b,d){typeof attachEvent=="undefined"?a.addEventListener(b,d,false):a.attachEvent("on"+b,d)};this.removeEventHandler=function(a,b,d){typeof attachEvent=="undefined"?a.removeEventListener(b,d,false):a.detachEvent("on"+b,d)};this.hasClass=function(a,b){return typeof a.className!="undefined"?(new RegExp("(^|\\s)"+b+"(\\s|$)")).test(a.className):false};this.addClass=function(a,b){if(!a||!b)return false;if(c.hasClass(a,
b))return false;a.className=(a.className?a.className+" ":"")+b};this.removeClass=function(a,b){if(!a||!b)return false;if(!c.hasClass(a,b))return false;a.className=a.className.replace(new RegExp("( "+b+")|("+b+")","g"),"")};this.getElementsByClassName=function(a,b,d){var e=d||document;d=[];var f,h=[];if(typeof b!="undefined"&&typeof b!="string")for(f=b.length;f--;){if(!h||!h[b[f]])h[b[f]]=e.getElementsByTagName(b[f])}else h=b?e.getElementsByTagName(b):e.all||e.getElementsByTagName("*");if(typeof b!=
"string")for(f=b.length;f--;)for(e=h[b[f]].length;e--;){if(c.hasClass(h[b[f]][e],a))d[d.length]=h[b[f]][e]}else for(f=0;f<h.length;f++)if(c.hasClass(h[f],a))d[d.length]=h[f];return d};this.getOffX=function(a){var b=0;if(a.offsetParent)for(;a.offsetParent;){b+=a.offsetLeft;a=a.offsetParent}else if(a.x)b+=a.x;return b};this.isChildOfClass=function(a,b){if(!a||!b)return false;for(;a.parentNode&&!c.hasClass(a,b);)a=a.parentNode;return c.hasClass(a,b)};this.getParentByNodeName=function(a,b){if(!a||!b)return false;
for(b=b.toLowerCase();a.parentNode&&b!=a.parentNode.nodeName.toLowerCase();)a=a.parentNode;return a.parentNode&&b==a.parentNode.nodeName.toLowerCase()?a.parentNode:null};this.getTime=function(a,b){var d=Math.floor(a/1000);a=Math.floor(d/60);d=d-a*60;return b?a+":"+(d<10?"0"+d:d):{min:a,sec:d}};this.getSoundByObject=function(a){return typeof c.soundsByObject[a.rel]!="undefined"?c.soundsByObject[a.rel]:null};this.getSoundIndex=function(a){for(var b=c.links.length;b--;)if(c.links[b].rel==a.rel)return b;
return-1};this.setPageTitle=function(a){if(!c.config.updatePageTitle)return false;try{document.title=(a?a+" - ":"")+c.pageTitle}catch(b){c.setPageTitle=function(){return false}}};this.events={play:function(){g.removeClass(this._data.oLI,this._data.className);this._data.className=g.css.sPlaying;g.addClass(this._data.oLI,this._data.className);c.setPageTitle(this._data.originalTitle)},stop:function(){g.removeClass(this._data.oLI,this._data.className);this._data.className="";this._data.oPosition.style.width=
"0px";c.setPageTitle();c.resetPageIcon()},pause:function(){if(g.dragActive)return false;g.removeClass(this._data.oLI,this._data.className);this._data.className=g.css.sPaused;g.addClass(this._data.oLI,this._data.className);c.setPageTitle();c.resetPageIcon()},resume:function(){if(g.dragActive)return false;g.removeClass(this._data.oLI,this._data.className);this._data.className=g.css.sPlaying;g.addClass(this._data.oLI,this._data.className)},finish:function(){g.removeClass(this._data.oLI,this._data.className);
this._data.className="";this._data.oPosition.style.width="0px";if(c.config.playNext&&this._data.nIndex<g.links.length-1)g.handleClick({target:g.links[this._data.nIndex+1]});else{c.setPageTitle();c.resetPageIcon()}},whileloading:function(){this._data.oLoading.style.width=this.bytesLoaded/this.bytesTotal*100+"%";if(!this._data.didRefresh&&this._data.metadata){this._data.didRefresh=true;this._data.metadata.refresh()}},onload:function(){if(this.loaded)this._data.metadata&&this._data.metadata.refresh();
else{var a=this._data.oLI.getElementsByTagName("a")[0],b=a.innerHTML;a.innerHTML=b+' <span style="font-size:0.5em"> | Load failed, d\'oh! '+(i.sandbox.noRemote?" Possible cause: Flash sandbox is denying remote URL access.":i.sandbox.noLocal?"Flash denying local filesystem access":"404?")+"</span>";setTimeout(function(){a.innerHTML=b},5000)}},metadata:function(){i._wD("video metadata: "+this.width+"x"+this.height);i.oMC.style.width=this.width+"px";i.oMC.style.height=this.height+"px"},whileplaying:function(){var a=
null;if(g.dragActive||!g.config.useThrottling){c.updateTime.apply(this);if(i.flashVersion>=9){g.config.usePeakData&&this.instanceOptions.usePeakData&&c.updatePeaks.apply(this);if(g.config.useWaveformData&&this.instanceOptions.useWaveformData||g.config.useEQData&&this.instanceOptions.useEQData)c.updateGraph.apply(this)}if(this._data.metadata)if((a=new Date)&&a-c.lastWPExec>500){c.refreshMetadata(this);c.lastWPExec=a}this._data.oPosition.style.width=this.position/c.getDurationEstimate(this)*100+"%"}else{a=
new Date;if(a-c.lastWPExec>500){c.updateTime.apply(this);if(i.flashVersion>=9){g.config.usePeakData&&this.instanceOptions.usePeakData&&c.updatePeaks.apply(this);if(g.config.useWaveformData&&this.instanceOptions.useWaveformData||g.config.useEQData&&this.instanceOptions.useEQData)c.updateGraph.apply(this)}this._data.metadata&&c.refreshMetadata(this);this._data.oPosition.style.width=this.position/c.getDurationEstimate(this)*100+"%";c.lastWPExec=a}}}};this.setPageIcon=function(a){if(!c.config.useFavIcon||
!c.config.usePeakData||!a)return false;var b=document.getElementById("favicon");if(!b){b=document.createElement("link");b.id="favicon";b.rel="shortcut icon";b.type="image/x-bitmap"}b.href=a;document.getElementsByTagName("head")[0].appendChild(b)};this.resetPageIcon=function(){if(!c.config.useFavIcon)return false;var a=document.getElementById("favicon");if(a)a.href="/favicon.ico"};this.updatePeaks=function(){var a=this._data.oPeak;a=a.getElementsByTagName("span");a[0].style.marginTop=13-Math.floor(15*
this.peakData.left)+"px";a[1].style.marginTop=13-Math.floor(15*this.peakData.right)+"px";if(c.config.flashVersion>8&&c.config.useFavIcon&&c.config.usePeakData)q?c.setPageIcon(c.xbmImages[1+parseInt(14*this.peakData.left)][1+parseInt(14*this.peakData.right)]):c.setPageIcon(c.xbmImages[parseInt(15*this.peakData.left)][parseInt(15*this.peakData.right)])};this.updateGraph=function(){if(!g.config.useWaveformData&&!g.config.useEQData||g.config.flashVersion<9)return false;var a=this._data.oGraph.getElementsByTagName("div");
if(g.config.useWaveformData)for(var b=8,d=255;d--;)a[255-d].style.marginTop=1+b+Math.ceil(this.waveformData[d]*-b)+"px";else{b=9;for(d=255;d--;)a[255-d].style.marginTop=b*2-1+Math.ceil(this.eqData[d]*-b)+"px"}};this.resetGraph=function(){if(!g.config.useEQData||g.config.flashVersion<9)return false;for(var a=this._data.oGraph.getElementsByTagName("div"),b=!g.config.useEQData?"9px":"17px",d=!g.config.fillGraph?"1px":"32px",e=255;e--;){a[255-e].style.marginTop=b;a[255-e].style.height=d}};this.refreshMetadata=
function(a){for(var b=null,d=a.position,e=a._data.metadata.data,f=0,h=e.length;f<h;f++)if(d>=e[f].startTimeMS&&d<=e[f].endTimeMS){b=f;break}if(b!=e.currentItem){a._data.oLink.innerHTML=e.mainTitle+' <span class="metadata"><span class="sm2_divider"> | </span><span class="sm2_metadata">'+e[b].title+"</span></span>";c.setPageTitle(e[b].title+" | "+e.mainTitle);e.currentItem=b}};this.updateTime=function(){var a=c.strings.timing.replace("%s1",c.getTime(this.position,true));a=a.replace("%s2",c.getTime(c.getDurationEstimate(this),
true));this._data.oTiming.innerHTML=a};this.getTheDamnTarget=function(a){return a.target||a.srcElement||window.event.srcElement};this.withinStatusBar=function(a){return c.isChildOfClass(a,"controls")};this.handleClick=function(a){if(a.button==2){g.config.allowRightClick||g.stopEvent(a);return g.config.allowRightClick}var b=c.getTheDamnTarget(a);c.dragActive&&c.stopDrag();if(c.withinStatusBar(b))return false;if(b.nodeName.toLowerCase()!="a")b=c.getParentByNodeName(b,"a");if(!b)return true;b.getAttribute("href");
if(!b.href||!i.canPlayURL(b.href)&&!c.hasClass(b,"playable")||c.hasClass(b,"exclude")){if(r&&b.onclick)return false;return true}var d=b.href,e=c.getSoundByObject(b);if(e){c.setPageTitle(e._data.originalTitle);if(e==c.lastSound)if(e.readyState!=2)e.playState!=1?e.play():e.togglePause();else i._writeDebug("Warning: sound failed to load (security restrictions, 404 or bad format)",2);else{c.lastSound&&c.stopSound(c.lastSound);e._data.oTimingBox.appendChild(document.getElementById("spectrum-container"));
e.togglePause()}}else{e=i.createSound({id:"pagePlayerMP3Sound"+c.soundCount++,url:d,onplay:c.events.play,onstop:c.events.stop,onpause:c.events.pause,onresume:c.events.resume,onfinish:c.events.finish,whileloading:c.events.whileloading,whileplaying:c.events.whileplaying,onmetadata:c.events.metadata,onload:c.events.onload});d=c.oControls.cloneNode(true);b.parentNode.appendChild(d);b.parentNode.appendChild(document.getElementById("spectrum-container"));c.soundsByObject[b.rel]=e;e._data={oLink:b,oLI:b.parentNode,
oControls:c.getElementsByClassName("controls","div",b.parentNode)[0],oStatus:c.getElementsByClassName("statusbar","div",b.parentNode)[0],oLoading:c.getElementsByClassName("loading","div",b.parentNode)[0],oPosition:c.getElementsByClassName("position","div",b.parentNode)[0],oTimingBox:c.getElementsByClassName("timing","div",b.parentNode)[0],oTiming:c.getElementsByClassName("timing","div",b.parentNode)[0].getElementsByTagName("div")[0],oPeak:c.getElementsByClassName("peak","div",b.parentNode)[0],oGraph:c.getElementsByClassName("spectrum-box",
"div",b.parentNode)[0],nIndex:c.getSoundIndex(b),className:c.css.sPlaying,originalTitle:b.innerHTML,metadata:null};e._data.oTimingBox.appendChild(document.getElementById("spectrum-container"));if(e._data.oLI.getElementsByTagName("ul").length)e._data.metadata=new t(e);b=c.strings.timing.replace("%s1",c.config.emptyTime);b=b.replace("%s2",c.config.emptyTime);e._data.oTiming.innerHTML=b;c.sounds.push(e);c.lastSound&&c.stopSound(c.lastSound);c.resetGraph.apply(e);e.play()}c.lastSound=e;return c.stopEvent(a)};
this.handleMouseDown=function(a){if(a.button==2){g.config.allowRightClick||g.stopEvent(a);return g.config.allowRightClick}var b=c.getTheDamnTarget(a);if(!c.withinStatusBar(b))return true;c.dragActive=true;c.lastSound.pause();c.setPosition(a);c.addEventHandler(document,"mousemove",c.handleMouseMove);c.addClass(c.lastSound._data.oControls,"dragging");c.stopEvent(a);return false};this.handleMouseMove=function(a){if(c.dragActive)if(c.config.useThrottling){var b=new Date;if(b-c.dragExec>20)c.setPosition(a);
else{window.clearTimeout(c.dragTimer);c.dragTimer=window.setTimeout(function(){c.setPosition(a)},20)}c.dragExec=b}else c.setPosition(a);else c.stopDrag();return false};this.stopDrag=function(a){if(c.dragActive){c.removeClass(c.lastSound._data.oControls,"dragging");c.removeEventHandler(document,"mousemove",c.handleMouseMove);g.hasClass(c.lastSound._data.oLI,c.css.sPaused)||c.lastSound.resume();c.dragActive=false;c.stopEvent(a);return false}};this.handleStatusClick=function(a){c.setPosition(a);g.hasClass(c.lastSound._data.oLI,
c.css.sPaused)||c.resume();return c.stopEvent(a)};this.stopEvent=function(a){if(typeof a!="undefined"&&typeof a.preventDefault!="undefined")a.preventDefault();else if(typeof event!="undefined"&&typeof event.returnValue!="undefined")event.returnValue=false;return false};this.setPosition=function(a){for(var b=c.getTheDamnTarget(a),d=b;!c.hasClass(d,"controls")&&d.parentNode;)d=d.parentNode;b=c.lastSound;a=parseInt(a.clientX);a=Math.floor((a-c.getOffX(d)-4)/d.offsetWidth*c.getDurationEstimate(b));isNaN(a)||
(a=Math.min(a,b.duration));isNaN(a)||b.setPosition(a)};this.stopSound=function(a){i._writeDebug("stopping sound: "+a.sID);i.stop(a.sID);i.unload(a.sID)};this.getDurationEstimate=function(a){return a.instanceOptions.isMovieStar?a.duration:!a._data.metadata||!a._data.metadata.data.givenDuration?a.durationEstimate:a._data.metadata.data.givenDuration};function u(){for(var a="",b=0;b<this.height;++b)for(var d=0;d<this.width/8;++d)if(typeof this.data[b]!="undefined"&&typeof this.data[b][d]!="undefined"){var e=
0;e=this.data[b][d];e=(new Number(e)).toString(16);if(e.length==1)e="0"+e;a+="0x"+e+","}else a+="0x00,";if(a.length>0)a=a.substring(0,a.length-1);return a}function v(a,b){if(a>-1&&a<this.width&&b>-1&&b<this.height){if(typeof this.data[b]=="undefined")this.data[b]=[];var d=a%8;a=(a-d)/8;if(typeof this.data[b][a]=="undefined")this.data[b][a]=0;this.data[b][a]|=1<<d}}function w(a,b,d){if(b>-1&&b<this.height){if(a>d){var e=a;a=Math.max(0,d);d=Math.min(this.width,e)}e=255;var f=a%8,h=(a-a%8)/8,o=8-d%8;
d=(d-d%8)/8;if(h==d)this.data[b][h]|=e<<f&e>>o;else{for(f=h+1;f<d;++f)this.data[b][f]=e;for(f=a;f<a+(8-a%8);++f)this.draw(f,b);this.data[b][d]|=e>>o}}}function x(a,b,d){if(a>-1&&a<this.width){if(b>d){var e=b;b=Math.max(0,d);d=Math.min(this.height,e)}e=a%8;a=(a-e)/8;e=1<<e;for(b=b;b<=d;++b)this.data[b][a]|=e}}function y(a,b,d,e){if(a>d){var f=a;a=d;d=f;f=b;b=e;e=f}f=b;if(b==e)return a==d?this.draw(a,b):this.drawHLine(a,b,d);if(a==d)return this.drawVLine(a,b,e);var h=(b-e)/(a-d);b=b-Math.floor(h*a);
for(a=a;a<d;++a)if(h>0){for(f=Math.floor(h*a)+b;f<Math.floor(h*(a+1))+b;++f)this.draw(a,f);Math.floor(h*a)==Math.floor(h*(a+1))&&this.draw(a,f);if(a==d-1)for(;f<=e;++f)this.draw(a,f)}else{for(f=Math.floor(h*a)+b;f>Math.floor(h*(a+1))+b;--f)this.draw(a,f);Math.floor(h*a)==Math.floor(h*(a+1))&&this.draw(a,f);if(a==d-1)for(;f>=e;--f)this.draw(a,f)}return null}function z(a,b,d,e){for(b=b;b<=e;++b)this.drawHLine(a,b,d)}function A(){return this.header+this.body()+this.footer}function B(a){a=a.substring(a.indexOf("{")+
1,a.lastIndexOf("}"));a=a.split(",");for(var b=0;b<this.height;++b){this.data[b]=[];for(var d=0;d<Math.floor(this.width/8);++d){var e=d+b*Math.floor(this.width/8);if(e<a.length)this.data[b][d]=(new Number(parseInt(a[e],16))).valueOf()}}}function C(a,b,d){this.name=d;this.width=a+(a%8>0?8-a%8:0);this.height=b;this.header="#define "+d+"_width "+this.width+"\n#define "+d+"_height "+this.height+"\nstatic char "+d+"_bits[] = {\n";this.footer="};";this.data=new Array(this.height);for(a=0;a<this.data.length;++a){this.data[a]=
new Array(this.width);for(b=0;b<this.data[a].length;++b)this.data[a][b]=0}this.frames=[];this.body=u;this.draw=v;this.drawLine=y;this.drawHLine=w;this.drawVLine=x;this.drawBoxFilled=z;this.getXBM=A;this.setXBM=B;this.xbm=this.getXBM()}this.createXBMData=function(){var a=null,b=0,d=0;for(b=0;b<16;b++)c.xbmImages[b]=[];for(b=0;b<16;b++)for(d=0;d<16;d++){a=new C(16,16,"img"+b+"x"+d);a.drawBoxFilled(0,16-b,7,16-(b-16));a.drawBoxFilled(9,16-d,16,16-(d-16));c.xbmImages[b][d]="data:image/x-bitmap,"+encodeURI(a.getXBM())}};
if(this.config.useFavIcon)if(s||q)this.createXBMData();else this.config.useFavIcon=false;this.init=function(){i._writeDebug("pagePlayer.init()");for(var a=document.getElementsByTagName("a"),b=0,d=0;d<a.length;d++)if((i.canPlayURL(a[d].href)||c.hasClass(a[d],"playable"))&&!c.hasClass(a[d],"exclude")){a[d].rel="pagePlayerMP3Sound"+d;c.links[c.links.length]=a[d];c.addClass(a[d],c.css.sDefault);b++}if(b>0){a=document.getElementById("sm2_timing");c.strings.timing=a.innerHTML;a.innerHTML="";a.id="";c.addEventHandler(document,
"click",c.handleClick);c.addEventHandler(document,"mousedown",c.handleMouseDown);c.addEventHandler(document,"mouseup",c.stopDrag);c.addEventHandler(window,"unload",function(){})}i._writeDebug("pagePlayer.init(): Found "+b+" relevant items.");c.config.autoStart&&g.handleClick({target:g.links[0]})};function t(a){var b=this,d=a._data.oLI,e=d.getElementsByTagName("ul")[0];e=e.getElementsByTagName("li");var f=document.createElement("div");f.innerHTML="<span>&nbsp;</span>";f.className="annotation";var h=
document.createElement("div");h.innerHTML="<span>&nbsp;</span>";h.className="annotation alt";var o=document.createElement("div");o.className="note";this.totalTime=0;this.strToTime=function(k){k=k.split(":");for(var m=0,n=k.length;n--;)m+=parseInt(k[n])*Math.pow(60,k.length-1-n,10);return m};this.data=[];this.data.givenDuration=null;this.data.currentItem=null;this.data.mainTitle=a._data.oLink.innerHTML;for(var j=0;j<e.length;j++)this.data[j]={o:null,title:e[j].getElementsByTagName("p")[0].innerHTML,
startTime:e[j].getElementsByTagName("span")[0].innerHTML,startSeconds:b.strToTime(e[j].getElementsByTagName("span")[0].innerHTML.replace(/[()]/g,"")),duration:0,durationMS:null,startTimeMS:null,endTimeMS:null,oNote:null};d=g.getElementsByClassName("duration","div",d);this.data.givenDuration=d.length?b.strToTime(d[0].innerHTML)*1000:0;for(j=0;j<this.data.length;j++){this.data[j].duration=parseInt(this.data[j+1]?this.data[j+1].startSeconds:(b.data.givenDuration?b.data.givenDuration:a.durationEstimate)/
1000)-this.data[j].startSeconds;this.data[j].startTimeMS=this.data[j].startSeconds*1000;this.data[j].durationMS=this.data[j].duration*1000;this.data[j].endTimeMS=this.data[j].startTimeMS+this.data[j].durationMS;this.totalTime+=this.data[j].duration}this.createElements=function(){for(var k=document.createDocumentFragment(),m=null,n=null,l=0;l<b.data.length;l++){m=(l%2==0?f:h).cloneNode(true);m.getElementsByTagName("span");m.rel=l;b.data[l].o=m;n=o.cloneNode(true);if(l%2==0)n.className="note alt";n.innerHTML=
this.data[l].title;m.onmouseover=b.mouseover;m.onmouseout=b.mouseout;this.data[l].oNote=n;a._data.oControls.appendChild(n);k.appendChild(m)}b.refresh();a._data.oStatus.appendChild(k)};this.refresh=function(){for(var k=0,m=null,n=b.data.givenDuration?b.data.givenDuration:a.durationEstimate,l=0;l<b.data.length;l++)if(n){m=b.data[l].duration*1000/n*100;b.data[l].o.style.left=k?k+"%":"-2px";b.data[l].oNote.style.left=k?k+"%":"0px";k+=m}};this.mouseover=function(){b.data[this.rel].oNote.style.visibility=
"hidden";b.data[this.rel].oNote.style.display="inline-block";b.data[this.rel].oNote.style.marginLeft=-parseInt(b.data[this.rel].oNote.offsetWidth/2)+"px";b.data[this.rel].oNote.style.visibility="visible"};this.mouseout=function(){b.data[this.rel].oNote.style.display="none"};this.createElements();this.refresh()}this.initDOM=function(){var a=c.getElementsByClassName("spectrum-box","div",document.documentElement)[0];if(i.flashVersion>=9){c.addClass(c.getElementsByClassName("playlist","ul",document.documentElement)[0],
c.cssBase);for(var b=a.getElementsByTagName("div")[0],d=document.createDocumentFragment(),e=null,f=256;f--;){e=b.cloneNode(false);e.style.left=f+"px";d.appendChild(e)}a.removeChild(b);a.appendChild(d)}this.oControls=document.getElementById("control-template").cloneNode(true);this.oControls.id="";this.init()}}var pagePlayer=new PagePlayer(typeof PP_CONFIG!="undefined"?PP_CONFIG:null);soundManager.onload=function(){pagePlayer.initDOM()};
