(function(){var jai={ctx:undefined,audio:undefined,canvas:undefined,playlist:undefined,lastTrack:undefined,currentTrack:0,glyphTable:{},font:"Biotype.svg",UIupdateFrequency:30,TXTupdateFrequency:500,mouseX:0,mouseY:0,mouseDown:false,dragging:false,TWO_PI:Math.PI/2,backBar:{width:320,height:20,roundness:5,reflectivity:.3,gradient:['#aaa','#555']},progBar:{top:4.5,left:10,end:130,height:10,width:undefined,reflectivity:.2,strokeColor:"#222",insetStroke:"#aaa",gradientBehind:['#444','#555','#888'],gradientOverOn:['#fff','#0cf','#08e'],diags:{width:3.5,spacing:10,color:"rgba(0,0,0,.25)"}},infoBar:{top:2.5,left:140.5,end:230.5,height:15,opacity:1,roundness:3,strokeColor:"#aaa",gradient:['#555','#444','#000'],charStack:'',textColor:'#0cf',updateFrequency:500,info:function(_){_.charStack=_.charStack.substr(1)+_.charStack[0];return _.charStack+" ";},makeStack:function(_){_.infoBar.charStack=(_.currentTrack+1)+": "+unescape(_.audio.src.slice(_.audio.src.lastIndexOf("/")+1,_.audio.src.length-4))+" - ";}},volumeBar:{top:2.5,left:235.5,end:270.5,height:14,opacity:1,reflectivity:.4,strokeColor:"#aaa",insetStroke:"rgba(50,50,50,.5)",gradientBehind:['#444','#555','#777'],gradientOverOn:['#fff','#0af','#08e'],rules:{width:.5,spacing:3,color:"rgba(255,255,255,.25)"}},shuffleButton:{shuffle:false,hovering:false,x:285,y:10,radius:8,opacity:1,reflectivity:.4,symbol:{normal:{fill:'#0ac',stroke:'#333'},hover:{fill:'#0cf',stroke:'#222'}},button:{normal:{inner:['#aaa','#666','#000'],outer:['#035','#222','#08a']},hover:{inner:['#ccc','#888','#222'],outer:['#068','#444','#0cf']}}},playPauseButton:{playing:true,hovering:false,x:305,y:10,radius:8,opacity:1,reflectivity:.4,symbol:{normal:{fill:'#0ac',stroke:'#333'},hover:{fill:'#0cf',stroke:'#222'}},button:{normal:{inner:['#aaa','#666','#000'],outer:['#035','#222','#08a']},hover:{inner:['#ccc','#888','#222'],outer:['#068','#444','#0cf']}}},init:function(){var _=jai;_.canvas=document.getElementById("jai-transport");_.ctx=_.canvas.getContext("2d");_.progBar.width=_.progBar.end-_.progBar.left;var c=_.ctx=document.getElementById("jai-transport").getContext("2d");_.playlist=document.getElementById('jai').getElementsByTagName('audio');_.loadGlyphs(_.font);if(_.shuffleButton.shuffle){cueNext(parseInt((Math.random()*_.playlist.length)));} else{cueNext(0);} function cueNext(idx){if(_.audio){_.audio.volume=0;_.audio.currentTime=.0001;_.audio.pause();} _.playlist[_.currentTrack].parentNode.className='';_.currentTrack=idx;_.playlist[_.currentTrack].parentNode.className='selected';_.audio=_.playlist[_.currentTrack];_.audio.volume=1;_.playPauseButton.playing=true;_.audio.play();_.infoBar.makeStack(_);} var len=_.playlist.length;for(var i=0;i_.playlist.length-1?_.currentTrack=0:0;}else{_.currentTrack=parseInt((Math.random()*_.playlist.length));} cueNext(_.currentTrack);},false);_.bind(_);var a=jai.args=[_,c];_.drawBack(a,_.backBar);_.drawInfo(a,_.infoBar);_.drawVolume(a,_.volumeBar);_.drawShuffle(a,_.shuffleButton);_.drawPlayPause(a,_.playPauseButton);var UIinterval=setInterval(function(){var a=jai.args;_.drawProgBack(a,_.progBar);_.drawProgress(a,_.progBar);},_.UIupdateFrequency);var TXTinterval=setInterval(function(){_.drawInfo(jai.args,_.infoBar);},_.infoBar.updateFrequency);},drawBack:function([_,c],b){c.save();c.clearRect(0,0,b.width,b.height);var grad=c.createLinearGradient(0,0,0,b.height);var len=b.gradient.length;for(var i=0;i0){var volumeX=(b.end-b.left)/1*_.audio.volume;var volumeY=b.height*_.audio.volume;c.beginPath();c.moveTo(b.left+5,b.top+b.height-1);c.lineTo(b.left+volumeX-1,b.top+b.height-volumeY+2);c.lineTo(b.left+volumeX-1,b.top+b.height-1);c.closePath();var grad=c.createLinearGradient(0,b.top,0,b.top+b.height);var len=b.gradientOverOn.length;for(var i=0;ib.end){safeX=b.end;} if(safeXb.end){safeX=b.end;} var newVolume=(1/(b.end-b.left))*(safeX-b.left);if(safeX=o.left&&_.mouseX<=o.end&&_.mouseY>=o.top&&_.mouseY<=o.top+o.height){return true;}else{return false;}},mouseIsOn:function(_,o){if(Math.sqrt(Math.pow(o.x-_.mouseX,2)+Math.pow(o.y-_.mouseY,2))"?w=f["greater"]:c=="?"?w=f["question"]:c=="@"?w=f["at"]:c=="["?w=f["bracketleft"]:c=="\\"?w=f["backslash"]:c=="]"?w=f["bracketright"]:c=="^"?w=f["asciicircum"]:c=="`"?w=f["grave"]:c=="{"?w=f["braceleft"]:c=="|"?w=f["bar"]:c=="}"?w=f["braceright"]:c=="~"?w=f["asciitilde"]:w=f[c];return w;}catch(e){}},text:{render:function(str,x,y,size){var font=jai.glyphTable[jai.font],upem=font["units_per_em"],newScale=1/upem*size,descent=1/upem*font.descent,ascent=1/upem*font.ascent,height=1+size+-descent*size;jai.ctx.translate(x,y+(newScale*upem));var width=0,len=str.length;for(var j=0;j