(function(){var cross,makeSlider,makeButtonRepeater,makePlayerByEl,makePlayer,makePanel;cross={addListener:function(element,type,handler){if(element.addEventListener){element.addEventListener(type,handler,false)}else{if(element.attachEvent){element.attachEvent("on"+type,handler)}}},removeListener:function(element,type,handler){if(element.removeEventListener){element.removeEventListener(type,handler,false)}else{if(element.detachEvent){element.detachEvent("on"+type,handler)}}},getFirstChildWithClass:function(element,classname){var cnRegex,foundEl,i;cnRegex=new RegExp("(^|\\s)"+classname+"(\\s|$)");for(i=0;i<element.childNodes.length;i++){foundEl=element.childNodes[i];if(cnRegex.test(foundEl.className)){return foundEl}}},getElementsByClassName:function(className,tag,elm){if(document.getElementsByClassName){this.getElementsByClassName=function(className,tag,elm){elm=elm||document;var elements=elm.getElementsByClassName(className),nodeName=(tag)?new RegExp("\\b"+tag+"\\b","i"):null,returnElements=[],current,i,il;for(i=0,il=elements.length;i<il;i+=1){current=elements[i];if(!nodeName||nodeName.test(current.nodeName)){returnElements.push(current)}}return returnElements}}else{if(document.evaluate){this.getElementsByClassName=function(className,tag,elm){tag=tag||"*";elm=elm||document;var classes=className.split(" "),classesToCheck="",xhtmlNamespace="http://www.w3.org/1999/xhtml",namespaceResolver=(document.documentElement.namespaceURI===xhtmlNamespace)?xhtmlNamespace:null,returnElements=[],elements,node,j,jl;for(j=0,jl=classes.length;j<jl;j+=1){classesToCheck+="[contains(concat(' ', @class, ' '), ' "+classes[j]+" ')]"}try{elements=document.evaluate(".//"+tag+classesToCheck,elm,namespaceResolver,0,null)}catch(e){elements=document.evaluate(".//"+tag+classesToCheck,elm,null,0,null)}while(!!(node=elements.iterateNext())){returnElements.push(node)}return returnElements}}else{this.getElementsByClassName=function(className,tag,elm){tag=tag||"*";elm=elm||document;var classes=className.split(" "),classesToCheck=[],elements=(tag==="*"&&elm.all)?elm.all:elm.getElementsByTagName(tag),current,returnElements=[],match,k,kl,l,ll,m,ml;for(k=0,kl=classes.length;k<kl;k+=1){classesToCheck.push(new RegExp("(^|\\s)"+classes[k]+"(\\s|$)"))}for(l=0,ll=elements.length;l<ll;l+=1){current=elements[l];match=false;for(m=0,ml=classesToCheck.length;m<ml;m+=1){match=classesToCheck[m].test(current.className);if(!match){break}}if(match){returnElements.push(current)}}return returnElements}}}return this.getElementsByClassName(className,tag,elm)}};makeSlider=function(track){var knob,min,max,value,onchange,trackLeft,trackWidth,dragStart,findPos,enRange,setKnobToValue,handleMouseMove,handleMouseUp,handleMouseDown;findPos=function(obj){var curleft,curtop;curleft=curtop=0;if(obj.offsetParent){curleft=obj.offsetLeft;curtop=obj.offsetTop;while(!!(obj=obj.offsetParent)){curleft+=obj.offsetLeft;curtop+=obj.offsetTop}}return[curleft,curtop]};enRange=function(v){if(v<min){return min}if(v>max){return max}v=Math.floor(v+0.5);return v};setKnobToValue=function(){var x=((value-min)*trackWidth/(max-min));knob.style.left=x+"px"};handleMouseMove=function(e){e=e||window.event;if(e.preventDefault){e.preventDefault()}var x=e.clientX-dragStart.x;x+=dragStart.k;x=(x<0)?0:x;x=(x>trackWidth)?trackWidth:x;knob.style.left=x+"px";x=min+(x*(max-min)/trackWidth);x=Math.floor(x+0.5);if(x!==value){value=x;if(onchange){onchange(x)}}return false};handleMouseUp=function(){cross.removeListener(document,"mouseup",handleMouseUp);cross.removeListener(document,"mousemove",handleMouseMove);setKnobToValue();return false};handleMouseDown=function(e){e=e||window.event;if(e.preventDefault){e.preventDefault()}var kstart=parseInt(knob.style.left,10);dragStart={x:e.clientX,k:kstart};cross.addListener(document,"mouseup",handleMouseUp);cross.addListener(document,"mousemove",handleMouseMove);return false};knob=cross.getFirstChildWithClass(track,"knob");min=0;max=100;value=0;trackLeft=findPos(track)[0];trackWidth=track.clientWidth-knob.clientWidth;knob.style.position="relative";setKnobToValue();cross.addListener(knob,"mousedown",handleMouseDown);return{setValue:function(newValue){value=enRange(newValue);setKnobToValue();return this},getValue:function(){return value},setMin:function(newMin){min=newMin;return this},setMax:function(newMax){max=newMax;return this},setListener:function(newOnChange){onchange=newOnChange;return this}}};makeButtonRepeater=function(elButton,clickHandler){var repeating,intervalId,initDelay,repeatDelay,intervalfn,handleMouseDown,handleMouseUpOrOut,handleKeyDown;intervalfn=function(){if(repeating){clickHandler()}else{repeating=true;window.clearInterval(intervalId);intervalId=window.setInterval(intervalfn,repeatDelay)}};handleMouseDown=function(){repeating=false;clickHandler();intervalId=window.setInterval(intervalfn,initDelay)};handleMouseUpOrOut=function(){window.clearInterval(intervalId)};handleKeyDown=function(e){e=e||window.event;if(e.keyCode===32){clickHandler()}};initDelay=750;repeatDelay=75;cross.addListener(elButton,"mousedown",handleMouseDown);cross.addListener(elButton,"mouseup",handleMouseUpOrOut);cross.addListener(elButton,"mouseout",handleMouseUpOrOut);cross.addListener(elButton,"keydown",handleKeyDown);return{setInitDelay:function(n){initDelay=n;return this},setRepeatDelay:function(n){repeatDelay=n;return this}}};makePlayerByEl=function(elPlayerDiv){var running,rate,frame,frameCount,frameRegexMatch,intervalId,frameHeight,activateFrame,intervalfn,imagelist,extDivs,i,lastImgIdx;activateFrame=function(){var i,imgix,imgframe;frame=(frame+frameCount)%frameCount;imgix=0;for(i=0;i<imagelist.length;i++){if(frame>=imagelist[i].iframe){imgix=i}}imgframe=frame-imagelist[imgix].iframe;if(lastImgIdx!=imgix){elPlayerDiv.style.backgroundImage=imagelist[imgix].img;lastImgIdx=imgix}elPlayerDiv.style.backgroundPosition="0px -"+imgframe*frameHeight+"px"};intervalfn=function(){frame+=1;activateFrame()};running=false;intervalId=0;rate=10;frame=0;frameCount=16;lastImgIdx=-1;imagelist=[];frameRegexMatch=/\baepframes_(\d+)\b/.exec(elPlayerDiv.className);if(frameRegexMatch){frameCount=parseInt(frameRegexMatch[1],10)}imagelist.push({iframe:0,img:elPlayerDiv.style.backgroundImage});extDivs=cross.getElementsByClassName("aeplayer_ext","div",elPlayerDiv);for(i=0;i<extDivs.length;i++){frameRegexMatch=/\aepinitframe_(\d+)\b/.exec(extDivs[i].className);if(frameRegexMatch){imagelist.push({iframe:parseInt(frameRegexMatch[1],10),img:extDivs[i].style.backgroundImage})}}frameHeight=elPlayerDiv.clientHeight;return{play:function(){if(!running){if(intervalId){window.clearInterval(intervalId)}intervalId=window.setInterval(intervalfn,1000/rate);running=true}return this},pause:function(){if(running){window.clearInterval(intervalId);intervalId=0;running=false}return this},isPaused:function(){return !running},setFrame:function(newFrame){if(!running){frame=newFrame;activateFrame()}return this},getFrame:function(){return frame},setRate:function(newRate){rate=newRate;if(running){this.pause();this.play()}return this},getRate:function(){return rate},setFrameCount:function(n){frameCount=n;return this},getFrameCount:function(){return frameCount},getPlayerDiv:function(){return elPlayerDiv}}};makePlayer=function(id){var elPlayerDiv=document.getElementById(id);if(!elPlayerDiv){return null}return makePlayerByEl(elPlayerDiv)};makePanel=function(player,id){var elPanel,elPlay,elPrev,elNext,elSLabel,elSlider,slider,minRate,maxRate,rateInc,updateUIState,sliderChange,playButtonClick,nextPrev,nextButtonClick,prevButtonClick,playButtonText,pauseButtonText,speedLabelText,frameLabelText,updateLabel,updatePlayButton;updateLabel=function(){if(elSLabel){if(player.isPaused()){elSLabel.innerHTML=frameLabelText.replace("%d",player.getFrame())}else{elSLabel.innerHTML=speedLabelText.replace("%d",player.getRate())}}};updatePlayButton=function(){if(elPlay){if(player.isPaused()){elPlay.className="playpause play";elPlay.innerHTML=playButtonText}else{elPlay.className="playpause pause";elPlay.innerHTML=pauseButtonText}}};updateUIState=function(){updateLabel();updatePlayButton()};sliderChange=function(sliderv){if(player.isPaused()){player.setFrame(sliderv)}else{player.setRate(sliderv)}updateUIState()};playButtonClick=function(){if(player.isPaused()){if(slider){slider.setMin(minRate).setMax(maxRate).setValue(player.getRate())}player.play()}else{player.pause();if(slider){slider.setMin(0).setMax(player.getFrameCount()-1).setValue(player.getFrame())}}updateUIState()};nextPrev=function(adj){if(player.isPaused()){player.setFrame(player.getFrame()+adj);if(slider){slider.setValue(player.getFrame())}}else{var r=player.getRate()+adj*rateInc;if(r<minRate){r=minRate}if(r>maxRate){r=maxRate}player.setRate(r);if(slider){slider.setValue(r)}}updateUIState()};nextButtonClick=function(){nextPrev(1)};prevButtonClick=function(){nextPrev(-1)};minRate=1;maxRate=25;rateInc=1;playButtonText="";pauseButtonText="";speedLabelText="Speed %d fps";frameLabelText="Frame %d";if(!player){return null}if(id){elPanel=document.getElementById(id);if(!elPanel){return null}}else{elPanel=document.createElement("div");elPanel.className="aep_panel";elPanel.innerHTML="<button class='playpause pause'></button><button class='prev'></button><div class='slider'><div class='knob'></div></div><button class='next'></button><span class='slabel'>Speed: xx fps</span>";if(player.getPlayerDiv().nextSibling){player.getPlayerDiv().parentNode.insertBefore(elPanel,player.getPlayerDiv().nextSibling)}else{player.getPlayerDiv().parentNode.appendChild(elPanel)}}elPlay=cross.getFirstChildWithClass(elPanel,"playpause");elPrev=cross.getFirstChildWithClass(elPanel,"prev");elNext=cross.getFirstChildWithClass(elPanel,"next");elSlider=cross.getFirstChildWithClass(elPanel,"slider");elSLabel=cross.getFirstChildWithClass(elPanel,"slabel");if(elPlay){cross.addListener(elPlay,"click",playButtonClick)}if(elPrev){makeButtonRepeater(elPrev,prevButtonClick)}if(elNext){makeButtonRepeater(elNext,nextButtonClick)}if(elSlider){slider=makeSlider(elSlider).setListener(sliderChange);if(player.isPaused()){slider.setMin(0).setMax(player.getFrameCount()-1).setValue(player.getFrame())}else{slider.setMin(minRate).setMax(maxRate).setValue(player.getRate())}}updateUIState();return{setMinRate:function(n){minRate=n;if(slider){slider.setMin(n)}return this},setMaxRate:function(n){maxRate=n;if(slider){slider.setMax(n)}return this},setRateInc:function(n){rateInc=n;return this},setButtonText:function(t){var ay=t.split(";");playButtonText=ay[0];pauseButtonText=ay[1];updatePlayButton();return this},setLabelText:function(t){var ay=t.split(";");speedLabelText=ay[0];frameLabelText=ay[1];updateLabel();return this}}};cross.addListener(window,"load",function(){var playerEls,i;playerEls=cross.getElementsByClassName("aeplayer","div");for(i=0;i<playerEls.length;i++){makePanel(makePlayerByEl(playerEls[i]).play())}})}());
