﻿/*
	JF MP3 - A Javascript and Flashed Powered MP3 Player by Pezus Web Design - Copyright(c)2009 JF MP3, All Rights Reserved.
	You may modify this program in any way you wish and share your changes with others, however you cannot repackage and/or
	resell this program for any reason without explicit permission given from the JF MP3 team AND Pezus Web Design.
	
	If you feel this program can be improved upon, feel free to contact us at - support [at] jfmp3 DOT com -
*/
var JFMP3=(function(){var version="2.0";var c=new Class({Implements:[Options,Events],Binds:["_stop","_play","_pause","_playToggle","_next","_previous","_shuffleOff","_shuffleOn","_shuffleToggle","_repeatOff","_repeatOn","_repeatToggle","_unMute","_mute","_muteToggle","_volumeBar","_volumeToggle","_colorize","_trackBar","_createPlaylist","_addToPlaylist","_playlistItemC","_removeFromPlaylist","_createSound","_structure","_makeScrollbar","_assignEvents"],options:{targetEl:"jfmp3_player",playlistEl:"jfmp3_prePlaylist",defaultMessage:"Welcome to the JF MP3 Demo!!!",defaultCoverArt:"jfmp3/defaultCoverArt.jpg",trackBarWidth:235,trackBarKnobWidth:18,startVolume:50,startMuted:false,toggleablePlaylist:true,toggledByDefault:true,repeatablePlaylist:true,repeatedByDefault:true,shuffleablePlaylist:true,shuffledByDefault:false,volumeDirection:"vertical"},thePlaylist:new Array(),shuffleFlag:false,volMuteFlag:false,volBarInit:false,trackBarInit:false,volBarInit:false,repeatFlag:true,activeSound:null,trackBarCall:null,currentItem:null,currentItemRef:null,volumeBarCall:null,volumeSlider:null,volumeKnob:null,volHideDelayCall:null,pLt:null,shuffleArray:null,volHideDelay:500,lastVol:50,playState:2,songDuration:0,songTime:0,conMilToSecCur:0,conMilToMinCur:0,actTCur:0,actT:0,conMilToSec:0,conMilToMin:0,currKStep:0,relCount:0,initialize:function(d){this.setOptions(d);if($(this.options.playlistEl)){$(this.options.playlistEl).setStyle("display","none")}this.lastVol=this.options.startVolume;this._structure();if(this.options.startMuted===true){this._mute()}if(this.options.repeatedByDefault===true){this._repeatOn()}if(this.options.shuffledByDefault===true){this._shuffleOn()}else{this._shuffleOff()}this._createPlaylist()},_stop:function(){this.activeSound.stop();this.jfmp3StopButt.removeClass("play");this.jfmp3StopButt.removeClass("pause");this.jfmp3StopButt.addClass("stop");this.jfmp3StopButt.setProperty("title","stopped");this.playState=2},_play:function(){this.activeSound.play();this.jfmp3StopButt.removeClass("stop");this.jfmp3StopButt.addClass("pause");this.jfmp3StopButt.setProperty("title","pause playing");this.playState=0},_pause:function(){this.activeSound.pause();this.jfmp3StopButt.removeClass("pause");this.jfmp3StopButt.addClass("play");this.jfmp3StopButt.setProperty("title","resume playing");this.playState=1},_playToggle:function(d){switch(d){case 0:this._play();break;case 1:this._pause();break;case 2:this._stop();break}},_next:function(h){if(this.shuffleFlag===true){if(this.shuffleArray.length>0){if(this.currentItem==this.shuffleArray[0].getProperty("rel").toInt()){this.shuffleArray.splice(0,1);var g=this.shuffleArray;this.shuffleArray=new Array();for(x=0;x<g.length;x++){this.shuffleArray[x]=g[x]}this._next(h)}else{this.shuffleArray[0].fireEvent("click",h);this.shuffleArray.splice(0,1);var g=this.shuffleArray;this.shuffleArray=new Array();for(x=0;x<g.length;x++){this.shuffleArray[x]=g[x]}}}else{if(this.repeatFlag===true){this._shuffleOn();this._next(h)}}}else{if(this.currentItem===null&&h!=undefined){$$("ul#jfmp3_playlistUlEl li a")[0].fireEvent("click",h)}else{if(this.currentItem!=null&&h!=undefined){var f=this.currentItemRef.getParent("li").getNext("li");if(f!=null){f.getChildren("a")[0].fireEvent("click",h)}else{if(this.repeatFlag!=false){$$("ul#jfmp3_playlistUlEl li a")[0].fireEvent("click",h)}}}else{var f=this.currentItemRef.getParent("li").getNext("li");if(f!=null){var d=f.getChildren("a")[0];if(this.currentItem!=(d.getProperty("rel")).toInt()){this._playlistItemC(d)}}else{if(this.repeatFlag!=false){f=$$("ul#jfmp3_playlistUlEl li")[0];var d=f.getChildren("a")[0];this._playlistItemC(d)}}}}}},_previous:function(f){if(this.currentItem===null){$$("ul#jfmp3_playlistUlEl li a").getLast().fireEvent("click",f)}else{var d=this.currentItemRef.getParent("li").getPrevious("li");if(d!=null){d.getChildren("a")[0].fireEvent("click",f)}else{$$("ul#jfmp3_playlistUlEl li a").getLast().fireEvent("click",f)}}},_shuffleOff:function(){if(this.jfmp3ToggleSfle.hasClass("off")===false){this.jfmp3ToggleSfle.addClass("off")}this.shuffleArray=null;this.shuffleFlag=false},_shuffleOn:function(){if(this.jfmp3ToggleSfle.hasClass("off")===true){this.jfmp3ToggleSfle.removeClass("off")}this.shuffleArray=$$("ul#jfmp3_playlistUlEl li a");var f=[];var d=0;var e=0;for(d=0;d<this.shuffleArray.length;d++){f.push(this.shuffleArray[d])}this.shuffleArray=new Array();f.sort(function(){return 0.5-Math.random()});for(e=0;e<f.length;e++){this.shuffleArray[e]=f[e]}this.shuffleFlag=true},_shuffleToggle:function(){switch(this.shuffleFlag){case true:this._shuffleOff();break;case false:this._shuffleOn();break}},_repeatOff:function(){if(this.jfmp3ToggleRp.hasClass("off")===false){this.jfmp3ToggleRp.addClass("off")}this.repeatFlag=false},_repeatOn:function(){if(this.jfmp3ToggleRp.hasClass("off")===true){this.jfmp3ToggleRp.removeClass("off")}this.repeatFlag=true},_repeatToggle:function(){switch(this.repeatFlag){case true:this._repeatOff();break;case false:this._repeatOn();break}},_unMute:function(){if(this.activeSound!=null){this.activeSound.unmute()}if(this.jfmp3MuteUn.hasClass("muted")===true){this.jfmp3MuteUn.removeClass("muted")}this.volMuteFlag=false},_mute:function(){if(this.activeSound!=null){this.activeSound.mute()}if(this.jfmp3MuteUn.hasClass("muted")===false){this.jfmp3MuteUn.addClass("muted")}this.volMuteFlag=true},_muteToggle:function(){switch(this.volMuteFlag){case true:this._unMute();break;case false:this._mute();break}},_volumeBar:function(){this.volumeBarVar=new Slider(this.jfmp3VolumeBarSldr,this.jfmp3VolumeBarKnob,{steps:100,range:[100,0],wheel:false,snap:true,mode:this.options.volumeDirection,onComplete:function(d){this.activeSound.setVolume(d);this.lastVol=d}.bind(this)}).set(this.lastVol);this.volBarInit=true},_volumeToggle:function(d){if(d===0){this.jfmp3VolumeBar.setStyle("visibility","visible");$clear(this.volHideDelayCall)}else{if(d===1){this.jfmp3VolumeBar.setStyle("visibility","hidden")}else{this.volHideDelayCall=this._volumeToggle.delay(this.volHideDelay,this,3)}}},_colorize:function(d){((this.jfmp3PlaylistSsdUl.getChildren("li")).getChildren("a")).each(function(e){if(e.hasClass("jfmp3_colored")){e.removeClass("jfmp3_colored")}d.addClass("jfmp3_colored")})},_trackBar:function(){this.trackBarCall=new Slider(this.jfmp3TrackBar,this.jfmp3TrackBarKnob,{steps:this.songDuration,wheel:false,snap:true,onChange:function(d){this.activeSound.setPosition(d)}.bind(this),onComplete:function(d){this.activeSound.setPosition(d)}.bind(this)});this.jfmp3TrackBarKnob.setStyle("position","absolute")},_createPlaylist:function(){$$("ul#"+this.options.playlistEl+" li").each(function(i){var m=i.getChildren("a")[0];var j=m.getProperty("href");if(j!=""&&j!=null&&j!=undefined){var l=m.getChildren("span.title")[0].get("html");var o=m.getChildren("span.artist")[0].get("html");var n=m.getChildren("span.album")[0].get("html");var p=m.getChildren("span.coverart")[0].get("html");var h="";if(l==""){l="Untitled"}h=l;if(o!=""&&o!=null){h=h+" by "+o}this.thePlaylist.push(j+' ":" '+l+' ":" '+o+' ":" '+n+' ":" '+p);var k=new Element("li").inject(this.jfmp3PlaylistSsdUl);var f=new Element("a",{rel:this.relCount,href:j+"_&_"+l+"_&_"+o+"_&_"+n+"_&_"+p,html:h}).inject(k);var g=f.addEvent("click",function(q){q.stop();if(this.currentItem!=(f.getProperty("rel")).toInt()||this.playState===2){this._playlistItemC(f)}}.bind(this));this.relCount++}}.bind(this));if(this.thePlaylist.length===0){var d=new Element("li").inject(this.jfmp3PlaylistSsdUl);var e=new Element("span",{html:"No items in playlist yet."}).inject(d)}this.pLt=new Fx.Slide("jfmp3_playList");if(this.options.toggledByDefault===false){this.pLt.hide()}this._makeScrollbar(this.jfmp3PlaylistSsd,this.jfmp3ScrollB,this.jfmp3ScrollBHdle)},_addToPlaylist:function(n,m,l,k,j){if(n!=""&&n!=null&&n!=undefined){var h="";if(m==""){m="Untitled"}h=m;if(l!=""&&l!=null){h=h+" by "+l}this.thePlaylist.push(n+' ":" '+m+' ":" '+l+' ":" '+k+' ":" '+j);var i=new Element("li").inject(this.jfmp3PlaylistSsdUl);var f=new Element("a",{rel:this.relCount,href:n+"_&_"+m+"_&_"+l+"_&_"+k+"_&_"+j,html:h}).inject(i);var g=f.addEvent("click",function(d){d.stop();if(this.currentItem!=(f.getProperty("rel")).toInt()||this.playState===2){this._playlistItemC(f)}}.bind(this));this.relCount++}},_playlistItemC:function(f){var e=f.getProperty("href");var d=e.split("_&_");this._createSound(d[0],d[1],d[2],d[3],d[4]);this.allEl=$$("ul#jfmp3_playlistUlEl li a");for(x=0;x<this.thePlaylist.length;x++){if(this.allEl[x]==f){this.moveToStep=(((x/(this.thePlaylist.length))+0.05)*100).round(0);this.jfmp3_slider.set(this.moveToStep)}}this._playToggle(0);this.currentItem=(f.getProperty("rel")).toInt();this.currentItemRef=f;this._colorize(f)},_removeFromPlaylist:function(d){if(d>0&&d<=this.thePlaylist.length&&!isNaN(d*1)){if($$("ul#jfmp3_playlistUlEl li")[(d-1)]!=undefined){this.thePlaylist.splice((d-1),1);$$("ul#jfmp3_playlistUlEl li")[(d-1)].destroy();var e=[];var g=0;var f="";for(f in this.thePlaylist){e[g]=this.thePlaylist[f];g++}this.thePlaylist=e}}},_createSound:function(g,f,j,i,h){if(this.currentItem!=null){soundManager.destroySound("mySound")}this.fadeFlag=false;this.jfmp3Streamed.fade("show");this.activeSound=soundManager.createSound({id:"mySound",url:g,onfinish:function(){this._next()}.bind(this),whileloading:function(){this.jfmp3Streamed.setStyle("width",((this.activeSound.bytesLoaded/this.activeSound.bytesTotal)*100).round(2)+"%");this.trackBarCall.steps=this.songDuration}.bind(this),whileplaying:function(){this.songDuration=this.activeSound.durationEstimate;this.songTime=this.activeSound.position;if(this.trackBarInit===false){this._trackBar();this.trackBarInit=true}if(this.activeSound.readyState===3&&this.fadeFlag===false){this.fadeFlag=true;this.jfmp3Streamed.fade("out");this.trackBarCall.steps=this.songDuration}this.conMilToSecCur=((this.songTime/1000)%60).floor();this.conMilToMinCur=((this.songTime/(1000*60))%60).floor();if(this.conMilToSecCur<10){this.actTCur=this.conMilToMinCur+":0"+this.conMilToSecCur}else{if(this.conMilToSecCur>=10){this.actTCur=this.conMilToMinCur+":"+this.conMilToSecCur}}this.conMilToSec=((this.songDuration/1000)%60).floor();this.conMilToMin=((this.songDuration/(1000*60))%60).floor();if(this.conMilToSec<10){this.actT=this.conMilToMin+":0"+this.conMilToSec}else{if(this.conMilToSec>=10){this.actT=this.conMilToMin+":"+this.conMilToSec}}this.currKStep=(((this.songTime/this.songDuration).round(2))*(this.options.trackBarWidth-(this.options.trackBarKnobWidth-5)));var d="";d=f;if(j!=""&&j!=null){d=d+" by "+j}if(i!=""&&i!=null){d=d+" from "+i}this.jfmp3InNP.empty();this.jfmp3InNP.set("html","Now Playing: "+d+" ("+this.actTCur+"/"+this.actT+")");this.jfmp3TrackBarKnob.setStyle("left",this.currKStep+"px")}.bind(this)});if(this.volBarInit===false){this._volumeBar()}this.activeSound.setVolume(this.lastVol);if(this.volMuteFlag===true){this._mute()}if(h!=""&&h!=undefined){this.jfmp3CoverArtImg.setProperties({src:h,alt:f+" - "+j,title:f+" - "+j})}else{this.jfmp3CoverArtImg.setProperties({src:this.options.defaultCoverArt,alt:f+" - "+j,title:f+" - "+j})}},_structure:function(){if(this.options.targetEl==""||this.options.targetEl===null||this.options.targetEl.length===0||$(this.options.targetEl)===null){alert("Target element not valid, not found or not configured properly!\nYou need to set which element JFMP3 is supposed to load-in using the 'targetEl' option.")}else{$(this.options.targetEl).set("html","");this.jfmp3Cont=new Element("div",{id:"jfmp3_containerDiv"}).inject(this.options.targetEl);this.jfmp3NowPlaying=new Element("div",{id:"jfmp3_nowPlaying"}).inject(this.jfmp3Cont);this.jfmp3InNP=new Element("div",{html:this.options.defaultMessage}).inject(this.jfmp3NowPlaying);this.jfmp3MainCtrl=new Element("div",{id:"jfmp3_mainControl"}).inject(this.jfmp3NowPlaying,"after");this.jfmp3MainCtrlIn=new Element("div",{id:"jfmp3_innerControl"}).inject(this.jfmp3MainCtrl);this.jfmp3PrevButt=new Element("div",{id:"jfmp3_previous",title:"previous track",html:"<!-- -->"}).inject(this.jfmp3MainCtrlIn);this.jfmp3StopButt=new Element("div",{id:"jfmp3_spp","class":"stop",title:"stopped",html:"<!-- -->"}).inject(this.jfmp3PrevButt,"after");this.jfmp3NextButt=new Element("div",{id:"jfmp3_next",title:"next track",html:"<!-- -->"}).inject(this.jfmp3StopButt,"after");this.jfmp3TrackBar=new Element("div",{id:"jfmp3_trackBar",html:"<!-- -->"}).inject(this.jfmp3NextButt,"after");this.jfmp3Streamed=new Element("div",{id:"jfmp3_streamed",html:"<!-- -->"}).inject(this.jfmp3TrackBar);this.jfmp3TrackBarKnob=new Element("div",{id:"jfmp3_trackBarKnob",html:"<!-- -->"}).inject(this.jfmp3Streamed,"after");this.jfmp3TogglePl=new Element("div",{id:"jfmp3_tP",title:"toggle playlist view",html:"<!-- -->"}).inject(this.jfmp3TrackBar,"after");this.jfmp3ToggleRp=new Element("div",{id:"jfmp3_repeat",title:"turn repeat on/off",html:"<!-- -->"}).inject(this.jfmp3TogglePl,"after");this.jfmp3ToggleSfle=new Element("div",{id:"jfmp3_shuffle",title:"turn shuffle on/off",html:"<!-- -->"}).inject(this.jfmp3ToggleRp,"after");this.jfmp3Playlist=new Element("div",{id:"jfmp3_playList"}).inject(this.jfmp3MainCtrl,"after");this.jfmp3PlaylistSd=new Element("div",{id:"jfmp3_subDiv"}).inject(this.jfmp3Playlist);this.jfmp3PlaylistSsd=new Element("div",{id:"jfmp3_subDivDiv"}).inject(this.jfmp3PlaylistSd);this.jfmp3PlaylistSsdUl=new Element("ul",{id:"jfmp3_playlistUlEl"}).inject(this.jfmp3PlaylistSsd);this.jfmp3ScrollB=new Element("div",{id:"jfmp3_scrollBar","class":"jfmp3_scrollBar"}).inject(this.jfmp3PlaylistSsd,"after");this.jfmp3ScrollBHdle=new Element("div",{id:"jfmp3_scrollBarHandle","class":"jfmp3_scrollBarHandle",html:"<!-- -->"}).inject(this.jfmp3ScrollB);this.jfmp3CoverArt=new Element("div",{id:"jfmp3_coverart"}).inject(this.jfmp3ScrollB,"after");this.jfmp3CoverArtImg=new Element("img",{src:"jfmp3/defaultCoverArt.jpg",alt:"JFMP3",title:"JFMP3"}).inject(this.jfmp3CoverArt);this.jfmp3MuteUn=new Element("div",{id:"jfmp3_muteUn",html:"<!-- -->"}).inject(this.jfmp3Playlist,"after");this.jfmp3VolumeBar=new Element("div",{id:"jfmp3_volumeBar",html:"<!-- -->"}).inject(this.jfmp3MuteUn,"after");this.jfmp3VolumeBarSldr=new Element("div",{id:"jfmp3_volumeSlider",html:"<!-- -->"}).inject(this.jfmp3VolumeBar);this.jfmp3VolumeBarKnob=new Element("div",{id:"jfmp3_volumeKnob",html:"<!-- -->"}).inject(this.jfmp3VolumeBarSldr);this._assignEvents()}},_makeScrollbar:function(e,h,f,d,g){if(e.getScrollSize().y-e.getSize().y>0){this.jfmp3_slider=new Slider(h,f,{steps:100,mode:(d?"horizontal":"vertical"),onChange:function(j){var i=(d?(((e.getScrollSize().x-e.getSize().x)/100)*j):0);var k=(d?0:(((e.getScrollSize().y-e.getSize().y)/100)*j));e.scrollTo(i,k)}.bind(this)}).set(0);if(!(g)){$$(e,h).addEvent("mousewheel",function(j){j=new Event(j).stop();var i=this.jfmp3_slider.step-j.wheel*20;this.jfmp3_slider.set(i)}.bind(this))}$(document.body).addEvent("mouseleave",function(){this.jfmp3_slider.drag.stop()}.bind(this))}else{h.fade(0)}},_assignEvents:function(){this.plFx=new Fx.Scroll(this.jfmp3PlaylistSsd);this.clickEvtSPP=this.jfmp3StopButt.addEvent("click",function(d){switch(this.playState){case 0:this._pause();break;case 1:this._play();break}}.bind(this));this.clickEvtNext=this.jfmp3NextButt.addEvent("click",function(d){this._next(d)}.bind(this));this.clickEvtPrevious=this.jfmp3PrevButt.addEvent("click",function(d){this._previous(d)}.bind(this));this.mouseEvtUnMutButt=this.jfmp3MuteUn.addEvents({click:function(){this._muteToggle()}.bind(this),mouseenter:function(){this._volumeToggle(0)}.bind(this),mouseleave:function(){this._volumeToggle(1)}.bind(this)});this.mouseEvtVolBar=this.jfmp3VolumeBar.addEvents({mouseenter:function(){this._volumeToggle(0)}.bind(this),mouseleave:function(){this._volumeToggle(1)}.bind(this)});if(this.options.toggleablePlaylist===true){this.clickEvtTP=this.jfmp3TogglePl.addEvent("click",function(){this.pLt.toggle()}.bind(this))}else{this.jfmp3TogglePl.setStyles({cursor:"default",opacity:0.2})}if(this.options.repeatablePlaylist===true){this.clickEvtRP=this.jfmp3ToggleRp.addEvent("click",function(){this._repeatToggle()}.bind(this))}else{this.jfmp3ToggleRp.setStyles({cursor:"default",opacity:0.2})}if(this.options.shuffleablePlaylist===true){this.clickEvtSFLE=this.jfmp3ToggleSfle.addEvent("click",function(){this._shuffleToggle()}.bind(this))}else{this.jfmp3ToggleSfle.setStyles({cursor:"default",opacity:0.2})}}});var b;return function(){return b||(b=new c())}})();
soundManager.onload=function(){new JFMP3({trackBarWidth:500})};soundManager.onerror=function(){var a="";if(Browser.Plugins.Flash.version<9){if(confirm("You do not meet the Adobe Flash requirements. You need atleast version 9. You currently have version: "+Browser.Plugins.Flash.version+"\nWould you like to download the latest version of Flash now? (highly recommended)")){window.location="http://get.adobe.com/flashplayer/"}}else{alert("SoundManager failed to load. This means that you did not do the setup properly.\n Make sure you did not try to run JF MP3 locally.")}};