var SoundPlayer=new Class({Implements:[Events,Options],options:{swfLocation:"scripts/SoundPlayer.swf",autostart:false,loopPlaylist:true,controlImages:{previous:"images/previous.png",next:"images/next.png",play:"images/play.png",pause:"images/pause.png"},injectInto:"soundplayerspc",seekbarSpcStyle:{position:"relative","background-color":"transparent",height:"6px",width:"100%","margin-top":"4px",overflow:"hidden"},seekbarStyle:{position:"absolute","background-color":"#ccc",height:"6px",width:"0%",cursor:"pointer","z-index":"10"},positionStyle:{position:"absolute",left:"0%",width:"3px",height:"6px","background-color":"#333","z-index":"15"},controlsStyle:{"margin-top":"8px","text-align":"right"},noInterface:false,statusInterval:500,volume:1,debug:true},initialize:function(a){this.setOptions(a);this.flashLoaded=false;this.loadQueue=[];this.sounds=new Hash();this.currentSound=null;this.currentKey=-1;if(!this.options.noInterface){this.createDomElements();this.addControlElements();this.addPlayerEffects();
this.addPlayerEvents();}else{this.options.soundOptions=null;}window.addEvent("domready",function(){this.swiffHome=new Element("div").setStyles({position:"absolute",top:1,left:1}).inject(document.body);this.swf=new Swiff(this.options.swfLocation,{width:1,height:1,container:this.swiffHome,vars:{statusInterval:this.options.statusInterval},callBacks:{onLoad:this.onFlashLoaded.bind(this),registerID3:this.registerID3.bind(this),onSoundLoaded:this.onSoundLoaded.bind(this),onSoundEnd:this.onSoundEnd.bind(this),onStatusChange:this.onStatusChange.bind(this),swfMessage:this.debugMessage.bind(this),onError:this.onError.bind(this)}}).toElement();if(!this.options.noInterface){this.playerSpc.inject($(this.options.injectInto));}}.bind(this));this.loadSounds(this.options.playlist,this.options.soundOptions);},debugMessage:function(a){if(typeof(console)=="object"&&this.options.debug){console.log(a);}},loadSounds:function(a,b){if(!this.flashLoaded){this.loadQueue.push([a,b]);}else{a=a||[];a.each(function(c){this.loadSound(c,b);
},this);}return this;},loadSound:function(b,a){if(!this.flashLoaded){this.loadQueue.push([b,a]);}if(typeof(b)=="string"){this.sounds.set(b,{sound:new Sound(b,this,a),title:false,artist:false});}else{this.sounds.set(b.url,{sound:new Sound(b.url,this,a),title:b.title,artist:b.artist});}return this;},playSound:function(c){var e,b,d=false,a=this.sounds.getKeys();if(c=="next"){if(this.currentKey==(a.length-1)&&this.options.loopPlaylist){d=0;}else{if(this.currentKey==(a.length-1)&&!this.options.loopPlaylist){d=false;}else{d=this.currentKey+1;}}}else{if(c=="forcenext"){if(this.currentKey==(a.length-1)){d=0;}else{d=this.currentKey+1;}}else{if(c=="previous"){if(this.currentKey==0){d=a.length-1;}else{d=this.currentKey-1;}}else{if(c=="random"){d=Math.floor(Math.random()*a.length);}else{if(c=="first"){d=0;}}}}}if(this.currentSound){this.stopCurrentSound();}if(d!==false){b=a[d];e=this.sounds.get(b);this.currentKey=d;this.currentSound=e;this.playCurrentSound();}return this;},playCurrentSound:function(){if(!this.currentSound.sound.playing){this.currentSound.sound.start();
this.fireEvent("play",[this.currentSound.sound.url,this.currentSound.title,this.currentSound.artist]);}return this;},stopCurrentSound:function(){if(this.currentSound.sound.playing){this.currentSound.sound.stop();this.fireEvent("stop");}return this;},toggleCurrentSound:function(){if(this.currentSound){if(!this.currentSound.sound.playing){this.playCurrentSound();}else{this.stopCurrentSound();}}else{this.playSound("first");}return this;},jumpCurrentSoundTo:function(a){this.currentSound.sound.jumpTo(a);this.fireEvent("play",[this.currentSound.sound.url,this.currentSound.title,this.currentSound.artist]);return this;},registerID3:function(b,a,c){var d=this.getSound(b);d.id3.set(a,c);d.fireEvent("onID3",[a,c]);},getSound:function(a){return this.sounds.get(a).sound;},setVolume:function(a){this.swf.setVolume(a);this.options.volume=a;return this;},getVolume:function(){return this.options.volume;},onSoundLoaded:function(a){this.getSound(a).fireEvent("onLoad");},onSoundEnd:function(a){this.getSound(a).fireEvent("onEnd");
this.fireEvent("soundEnd");},onFlashLoaded:function(){this.flashLoaded=true;this.loadQueue.each(function(a){this.loadSounds(a[0],a[1]);}.bind(this));this.setVolume(this.options.volume);if(this.options.autostart){this.playSound.delay(100,this,"first");}this.fireEvent("ready");},onError:function(b,a){debugMessage(b+": "+a);},onStatusChange:function(c,f,a,e,d,g,b){this.fireEvent("position",b);this.fireEvent("progress",g);this.currentSound.sound.position=a;this.currentSound.sound.duration=f;this.currentSound.sound.fireEvent("onPosition",[a,f]);if(!this.currentSound.bytesTotal){this.currentSound.bytesTotal=e;}if(!this.currentSound.loaded){this.currentSound.bytesLoaded=d;this.currentSound.sound.fireEvent("onProgress",[d,e]);}this.fireEvent("statusChange");},createDomElements:function(){this.playerSpc=new Element("div",{"class":"player"});this.title=new Element("div",{"class":"title"}).inject(this.playerSpc);this.seekbarSpc=new Element("div",{"class":"seekbarSpc",styles:this.options.seekbarSpcStyle}).inject(this.playerSpc);
this.seekbar=new Element("div",{"class":"seekbar",styles:this.options.seekbarStyle}).inject(this.seekbarSpc);this.position=new Element("div",{"class":"position",styles:this.options.positionStyle}).inject(this.seekbarSpc);this.controls=new Element("div",{"class":"controls",styles:this.options.controlsStyle}).inject(this.playerSpc);},addPlayerEffects:function(){this.progressFx=new Fx.Tween(this.seekbar,{property:"width",unit:"%",link:"cancel"});this.positionFx=new Fx.Tween(this.position,{property:"left",unit:"%",link:"cancel"});},addPlayerEvents:function(){this.seekbar.addEvent("click",function(b){var d=this.seekbarSpc.getCoordinates();var c=this.seekbar.getCoordinates();var a=((b.page.x-c.left)/d.width)*this.currentSound.sound.duration*(d.width/c.width);this.jumpCurrentSoundTo(a);}.bind(this));this.addEvent("play",function(b,c,a){if(c){this.title.set("text",c);}else{this.title.set("text",b);}if(this.currentSound.sound.loaded){this.progressFx.start(100);}}.bind(this));this.addEvent("soundEnd",function(){this.playSound("next");
}.bind(this));},addControlElements:function(){this.previousEl=new Element("img",{"class":"prev",alt:"prev",id:"prev",src:this.options.controlImages.previous,styles:{"margin-left":"4px",cursor:"pointer"},events:{click:function(){this.playSound("previous");}.bind(this)}}).inject(this.controls);this.playPauseEl=new Element("img",{"class":"play",alt:"play",id:"play",src:this.options.controlImages.play,styles:{"margin-left":"4px",cursor:"pointer"},events:{click:function(){this.toggleCurrentSound();}.bind(this)}}).inject(this.controls);this.nextEl=new Element("img",{"class":"next",alt:"next",id:"next",src:this.options.controlImages.next,styles:{"margin-left":"4px",cursor:"pointer"},events:{click:function(){this.playSound("forcenext");}.bind(this)}}).inject(this.controls);this.addEvent("play",function(){this.playPauseEl.set("src",this.options.controlImages.pause);}.bind(this));this.addEvent("pause",function(){this.playPauseEl.set("src",this.options.controlImages.play);}.bind(this));this.addEvent("stop",function(){this.playPauseEl.set("src",this.options.controlImages.play);
}.bind(this));this.addEvent("progress",function(a){this.progressFx.start(a);});this.addEvent("position",function(a){this.positionFx.start(a);});}});var Sound=new Class({Implements:[Options,Events],options:{onRegister:$empty,onLoad:$empty,onPlay:$empty,onStop:$empty,onEnd:$empty,onProgress:$empty,onPosition:$empty,onID3:$empty},initialize:function(b,c,a){this.setOptions(a);this.url=b;this.id3=new Hash();this.manager=c;this.swf=this.manager.swf;this.playing=false;this.loaded=false;this.bytesLoaded=null;this.bytesTotal=null;this.duration=null;this.position=0;this.addEvents({onLoad:this.onLoad,onStop:this.onStop,onPlay:this.onPlay,onEnd:this.onEnd});},start:function(a){var b=a||this.position;this.swf.startSound(this.url,b);this.fireEvent("onPlay");return this;},stop:function(){this.swf.stopSound();this.position=this.getPosition();this.fireEvent("onStop",this.position);return this;},jumpTo:function(a){this.start(a);return this;},getID3:function(a){return this.id3.get(a);},getBytesLoaded:function(){return this.swf.getBytesLoaded(this.url);
},getFilesize:function(){return this.swf.getBytesTotal(this.url);},getPosition:function(){if(this.playing){return this.swf.getPosition();}else{return this.position;}},getDuration:function(){return this.swf.getDuration(this.url);},checkProgress:function(){this.bytesTotal=this.getFilesize();this.bytesLoaded=this.getBytesLoaded();this.fireEvent("onProgress",[this.bytesLoaded,this.bytesTotal]);},onLoad:function(){this.checkProgress();this.loaded=true;},onPlay:function(){this.playing=true;},onEnd:function(){this.position=0;this.fireEvent("onStop");},onStop:function(a){this.playing=false;}});