YAHOO.namespace("pulp");PULP=YAHOO.pulp;String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};PULP.utils=function(){var B;var C;var A=new RegExp("^(https?://(.+?)(:\\d+)?)/?((PlayNextITunesDj/(\\w+))|(playlists/(\\w+))|login)?$");return{getHost:function(E){if(typeof E=="undefined"){E=location.href}var D=A.exec(E);if(!D){alert(PULP.lang("There was a problem parsing the URL"));return}return D[1]},getPlaylistDirectLinkId:function(E){if(typeof E=="undefined"){E=location.href}var D=A.exec(E);if(!D[8]){return D[6]}return D[8]},isGecko:function(){return(navigator.userAgent.indexOf("Gecko/")!=-1)},resetDropdown:function(H,E){YAHOO.util.Dom.get(H).innerHTML="";var D=document.createElement("option");D.setAttribute("value",-1);var G=document.createTextNode(E);D.appendChild(G);YAHOO.util.Dom.get(H).appendChild(D);var F=document.createElement("option");F.setAttribute("value","All");var I=document.createTextNode(PULP.lang("All"));F.appendChild(I);YAHOO.util.Dom.get(H).appendChild(F)},failedRequest:function(D,E){PULP.utils.cancelWaitingDialog();alert(PULP.lang("The request has failed. Please try again later."));if(typeof E!="undefined"&&typeof E.argument!="undefined"){setTimeout(function(){o.argument.cancel()},2000)}},showReplyMessage:function(D){alert(D.replyMessage)},setAsyncOpTime:function(){asyncOpTime=new Date();asyncOpTime=asyncOpTime.getTime()},closeDialogAfterMinimumDelay:function(E){var F=new Date();F=F.getTime();var D=F-asyncOpTime;if(D<1000){setTimeout(function(){E.cancel()},1000-D)}else{E.cancel()}},showLinkDialog:function(F,E){var D=new YAHOO.widget.SimpleDialog("linkDialog",{width:"35em",effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},fixedcenter:true,modal:true,visible:true,draggable:false,buttons:[{text:PULP.lang("Ok"),handler:function(){this.cancel()},isDefault:true}]});D.setHeader(F);D.setBody(E);D.render(document.body)},showWaitingDialog:function(E,D){this.cancelWaitingDialog();PULP.utils.setAsyncOpTime();C=new YAHOO.widget.SimpleDialog(E,{width:"35em",icon:YAHOO.widget.SimpleDialog.ICON_INFO,close:false,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},fixedcenter:true,modal:true,visible:true,draggable:false});C.setBody('<div class="warning">'+D+"</div>");C.render(document.body);return C},cancelWaitingDialog:function(){try{C.destroy()}catch(D){}},centerDialogBelowPlayer:function(F){var G=YAHOO.widget.Overlay.VIEWPORT_OFFSET,H=F.element.offsetWidth,E=YAHOO.util.Dom.getViewportWidth(),D;if(H<E){D=(E/2)-(H/2)+YAHOO.util.Dom.getDocumentScrollLeft()}else{D=G+YAHOO.util.Dom.getDocumentScrollLeft()}F.cfg.setProperty("xy",[parseInt(D,10),150])},remove:function(D){D.parentNode.removeChild(D)}}}();PULP.lang=function(A){if(lang=="en"){return A}if(typeof PULP.dict[A]=="undefined"){alert("Error: the following string hasn't been translated:\n\n"+A);return A}return PULP.dict[A]};PULP.player=function(){var K;var R;var O=false;var A=false;var B=false;var H=false;var M=false;var J=false;var C=0;var Q=false;var T=true;var F;var E;var G=50;var I;var N=null;var P;var V;if(typeof soundManager!="undefined"){R=soundManager;R.url=PULP.utils.getHost()+"/";R.flashVersion=9;R.useMovieStar=true;R.debugMode=false}var S=function(W){var Y=Math.floor(W/1000);var X=Math.floor(Y/60);Y=Y-X*60;if(X<10){X="0"+X}if(Y<10){Y="0"+Y}return X+":"+Y};var U=function(c){var Y=YAHOO.util.Dom.getX("statusbar");var b=parseInt(YAHOO.util.Dom.getStyle("statusbar","padding-left"),10);var a=parseInt(YAHOO.util.Dom.getStyle("statusbar","border-left-width"),10);var X=parseInt(YAHOO.util.Dom.getStyle("statusbar","width"),10);var W=YAHOO.util.Event.getPageX(c)-Y-b-a;var Z=W*V/X;P.setPosition(Z)};var L=function(){$("timing_current").innerHTML=S(this.position);if(this.position>0){$("playing_position").style.width=this.position/V*100+"%"}};var D=function(){YAHOO.log("next song","info","pulp");if(PULP.serverPagination.getRepeat()==2){P.setPosition(0);R.play("aSound")}else{Q=false;PULP.serverPagination.nextPreviousSong(true)}};return{port:null,playlistDirectLinkId:null,waitingForBuffer:false,setBufferLength:function(W){G=W},setLoaded:function(){O=true},isLoaded:function(){return O},init:function(Y,W,X){this.port=Y;I=W;N=PULP.utils.getHost();this.playlistDirectLinkId=PULP.utils.getPlaylistDirectLinkId();K=X},loadFlashPlayer:function(){R.onready(function(W){if(W.success){PULP.player.setLoaded();YAHOO.util.Event.addListener("statusbar","click",U);if(PULP.serverPagination.isPendingToPlayFirstSong()&&!PULP.serverPagination.isFirstSongSelected()&&PULP.serverPagination.isDataTableLoaded()){YAHOO.log("playerReady::selecting first song","info","pulp");PULP.serverPagination.selectFirstSong()}}else{alert(PULP.lang("Error: there was a problem loading the flash player.")+"\n\n"+PULP.lang("Make sure you have the latest Flash Player plugin installed in your browser."))}})},getLocationLibs:function(){return K},play:function(W){F=W;var X=N+"/songs/"+(this.playlistDirectLinkId?this.playlistDirectLinkId+"/":"")+F.getData("id")+"."+F.getData("fileformat");if(renderPlayer){YAHOO.util.Dom.get("songTitle").innerHTML=F.getData("artist")+" - "+F.getData("name")}J=false;A=false;if(E!=F.getData("artist")+"-"+F.getData("album")){E=F.getData("artist")+"-"+F.getData("album");if(B){this.hideCover()}}YAHOO.log("play: sendEventLoad, url: "+X,"info","pulp");if(P){R.destroySound("aSound");Q=false;$("loading_position").style.width=0;$("playing_position").style.width=0}if(renderPlayer){P=R.createSound({id:"aSound",url:X,autoLoad:true,whileloading:PULP.player.loading,whileplaying:L,onfinish:D});C=setTimeout(this.verifyLoadingHasStarted,parseInt(I*1000))}else{window.open(X,"pulpTunesPlay")}},playBtn:function(){if(Q){R.play("aSound");P.setVolume(PULP.volumeSlider.getVolume())}$("playBtn").style.display="none";$("pauseBtn").style.display="inline";T=false},pauseBtn:function(){if(Q){R.pause("aSound")}$("playBtn").style.display="inline";$("pauseBtn").style.display="none";T=true},getSong:function(){return P},verifyLoadingHasStarted:function(){if(!J){var W=new YAHOO.widget.SimpleDialog("skippingSongDialog",{width:"35em",icon:YAHOO.widget.SimpleDialog.ICON_WARN,close:false,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},fixedcenter:true,modal:true,visible:true,draggable:false});W.setBody('<div class="warning">'+PULP.lang("Song could not be loaded. Continuing with next one...")+"</div>");W.render(document.body);setTimeout(function(){W.cancel();PULP.serverPagination.nextPreviousSong(true)},2000)}},loading:function(){clearTimeout(C);if(!this.bytesTotal){clearTimeout(C);PULP.player.verifyLoadingHasStarted();return}var W=this.bytesLoaded/this.bytesTotal*100;$("loading_position").style.width=W+"%";YAHOO.log("buffer: "+G+" - progress: "+W,"time","pulp");J=true;if(!isNaN(P.duration)){V=P.duration/W*100;$("timing_total").innerHTML=S(V)}else{$("timing_total").innerHTML="00:00"}if(!A&&!B){if(!H){PULP.player.fetchCover()}else{M=true}}if(W>=G&&!Q){YAHOO.log("start playing","info","pulp");Q=true;P.play();P.setVolume(PULP.volumeSlider.getVolume());T=false;$("playBtn").style.display="none";$("pauseBtn").style.display="inline"}},fetchCover:function(){A=true;M=false;$("coverImage").src=N+"/getAlbumCover/"+encodeURIComponent(F.getData("artist")+"-"+F.getData("album"))+".jpeg";$("coverImage").onload=function(){$("coverCenter").style.height="145px";B=true;var W=new YAHOO.widget.Effects.BlindDown("coverCenter")}},hideCover:function(){A=false;B=false;H=true;var W=new YAHOO.widget.Effects.BlindUp("coverCenter");W.onEffectComplete.subscribe(function(){H=false;if(M){this.fetchCover()}},this,true)}}}();PULP.serverPagination=function(){var K;var B=false;var Q=false;var I=20;var G=false;var V=2;var J=0;var X;var S;var O="none";var W=false;var L=false;var R;var A;var H;var P=function(Z){var a="";for(var Y=0;Y<=4;Y++){a+='<li class="star'+Y;if(Z>0){a+=" star_"+(Y<Z?"on":"off")}a+='">&nbsp;</li>'}return a};var M=function(b,a,c,d){var Y=A?" canRate":"";b.innerHTML='<div class="ratingWaiting">'+PULP.lang("Rating...")+"</div>";if(d==""){b.innerHTML+='<ul class="starsUl"'+Y+">"+P(0)+"</ul>\n";return}var Z=d/20;b.innerHTML+='<ul class="starsUl rating'+Z+Y+'">'+P(Z)+"</ul>\n"};var F=[{key:"trackNumber",label:"",sortable:true,resizeable:false},{key:"name",label:PULP.lang("Name"),sortable:true,resizeable:true},{key:"artist",label:PULP.lang("Artist"),sortable:true,width:80,resizeable:true},{key:"album",label:PULP.lang("Album"),sortable:true,width:85,resizeable:true},{key:"genre",label:PULP.lang("Genre"),sortable:true,width:60,resizeable:true},{key:"rating",label:PULP.lang("Rating"),sortable:true,width:75,resizeable:false,formatter:M}];var N=function(Z,Y,a){a.totalRecords=Y.meta.totalRecords;return a};var D=function(d){var Y=K.getRecord(d.target);var a=Y.getId().substring(7);if(O==a){var f=YAHOO.util.Event.getTarget(d.event);while(f.id!="serverpagination"){if(f.nodeName.toUpperCase()=="LI"){if(!U(f)){return}var Z=f.parentNode.parentNode.parentNode.parentNode;if(!A){return}var e=f.className.split(" ");var b=parseInt(e[0].substr(4,1));var c=(b+1)*20;PULP.serverPagination.updateRating(Z,c);break}else{f=f.parentNode}}return}YAHOO.log("selectRow","info","pulp");O=a;PULP.player.play(Y);W=false;L=false;if(typeof d.event!="undefined"){YAHOO.util.Event.stopEvent(d.event)}};var U=function(b){var a=K.getLastSelectedRecord();if(typeof a=="undefined"){return false}var Y=K.getTrEl(a);var Z=b.parentNode.parentNode.parentNode.parentNode;return Y.id==Z.id};var T=function(b){var Z=b.className.split(" ");if(Z.length==1){c=0}else{var c=Z[1].substr(6,1)}var Y=b.getElementsByTagName("li");for(var a=0;a<Y.length;a++){Y[a].className="star"+a;if(a<c){Y[a].className+=" star_on"}else{if(c>0){Y[a].className+=" star_off"}}}};var E=function(){YAHOO.util.Event.on("serverpagination","mouseover",function(c){var f=YAHOO.util.Event.getTarget(c);while(f.id!="serverpagination"){if(f.nodeName.toUpperCase()=="LI"){if(!U(f)){return}var Z=f.parentNode.parentNode.parentNode.parentNode;if(!A){return}var d=f.className.split(" ");var b=d[0].substr(4,1);var Y=f.parentNode.getElementsByTagName("li");for(var a=0;a<Y.length;a++){if(a<=b){Y[a].className="star"+a+" star_on"}else{Y[a].className="star"+a+" star_off"}}break}else{f=f.parentNode}}});YAHOO.util.Event.on("serverpagination","mouseout",function(Z){var a=YAHOO.util.Event.getTarget(Z);while(a.id!="serverpagination"){if(a.nodeName.toUpperCase()=="UL"){var Y=a.parentNode.parentNode.parentNode;if(!A){return}T(a);break}else{a=a.parentNode}}})};var C=function(d){var b=d.argument[0];var a=d.argument[1];try{var Z=YAHOO.lang.JSON.parse(d.responseText);if(Z.replyCode==200){K.getRecord(b).setData("rating",a);var Y=b.getElementsByTagName("ul");a=a/20;Y[0].className="starsUl rating"+a;T(Y[0]);Y[0].previousSibling.style.display="none";Y[0].style.display="block"}else{if(Z.replyCode==401){PULP.utils.showReplyMessage(Z)}else{PULP.utils.showReplyMessage(Z)}}}catch(c){PULP.utils.failedRequest(d)}};return{init:function(a,Z,Y,b){R=a;W=Z?0:false;A=Y;H=b},canRate:function(){return A},canDownload:function(){return H},initTable:function(Y){S=new YAHOO.util.DataSource(Y);S.responseType=YAHOO.util.DataSource.TYPE_JSON;S.responseSchema={resultsList:"records",fields:["id","persistentId","fileformat","name","artist","album","genre","rating","trackNumber"],metaFields:{replyCode:"replyCode",replyMessage:"replyMessage",totalRecords:"totalRecords"}};X=new YAHOO.widget.Paginator({containers:"dt-pag-nav",alwaysVisible:true,pageLinks:10,rowsPerPage:I,template:'<div id="paginationCenter">{PreviousPageLink} {PageLinks} {NextPageLink}</div><div id="paginationRight"></div><div id="pageReport"><strong>{CurrentPageReport}</strong></div>',pageReportTemplate:"({currentPage} "+PULP.lang("of")+" {totalPages})",nextPageLinkLabel:PULP.lang("next")+"&nbsp;&gt;",previousPageLinkLabel:"&lt;&nbsp;"+PULP.lang("prev")});var Z=function(b,d){var c="";if(b.sortedBy){c+="sort="+b.sortedBy.key+"&dir="+(b.sortedBy.dir===YAHOO.widget.DataTable.CLASS_ASC?0:1)+"&"}c+="startIndex="+b.pagination.recordOffset+"&results="+b.pagination.rowsPerPage;return c};var a={initialRequest:"startIndex=0&results="+I,selectionMode:"single",dynamicData:true,paginator:X,generateRequest:Z,MSG_EMPTY:PULP.lang("No records found."),MSG_LOADING:PULP.lang("Loading..."),MSG_ERROR:PULP.lang("Data error."),MSG_SORTASC:PULP.lang("Click to sort ascending"),MSG_SORTDESC:PULP.lang("Click to sort descending")};K=new YAHOO.widget.DataTable("serverpagination",F,S,a);K.handleDataReturnPayload=N;K.subscribe("rowMouseoverEvent",K.onEventHighlightRow);K.subscribe("rowMouseoutEvent",K.onEventUnhighlightRow);K.subscribe("rowClickEvent",K.onEventSelectRow);K.subscribe("rowClickEvent",D);K.subscribe("renderEvent",this.onDataTableLoaded,this,true);K.doBeforeLoadData=this.beforeDataTableLoaded},loadPlaylist:function(Y){window.scrollTo(0,0);var Z=PULP.utils.getHost()+"/playlistspage/ajax/"+Y+"&";PULP.genresCombo.resetFilters();this.initTable(Z)},beforeDataTableLoaded:function(Y,Z,a){if((typeof Z.meta!="undefined")&&(Z.meta.replyCode!=200)){alert(Z.meta.replyMessage)}return true},onDataTableLoaded:function(){var Y;B=true;PULP.songContextMenu.init();if(W===0&&!Q&&PULP.player.isLoaded()){YAHOO.log("onDataTableLoaded::selecting first song","info","pulp");this.selectFirstSong()}else{if(W===0&&PULP.player.isLoaded()){YAHOO.log("onDataTableLoaded::play first song","info","pulp");Y=K.getFirstTrEl();K.selectRow(Y);D({target:Y})}else{if(L){Y=K.getLastTrEl();K.selectRow(Y);D({target:Y})}else{if(W>0){Y=K.getTrEl(W);K.selectRow(Y);D({target:Y})}}}}E()},selectFirstSong:function(){YAHOO.log("selectFirstSong","info","pulp");Q=true;var Y=K.getFirstTrEl();K.focus();K.selectRow(Y);D({target:Y})},isDataTableLoaded:function(){return B},isPendingToPlayFirstSong:function(){return W===0},isFirstSongSelected:function(){return Q},getDataTable:function(){return K},getDataSource:function(){return S},nextPreviousSong:function(c){var d=K.getLastSelectedRecord();var a=K.getTrEl(d);var Z=X.getStartIndex();var Y=Z+X.getRowsPerPage();var e=null;if(c){if(G){var b=Math.floor(Math.random()*X.getTotalRecords());if(b>=Z&&b<=Y){e=K.getTrEl(b-Z)}else{var f=Math.floor(b/I)+1;W=b-((f-1)*I);X.setPage(f);return}}else{if(d==K.getRecord(K.getLastTrEl()).getId()){if(Y>=X.getTotalRecords()){if(J==1){if(X.getTotalPages()>1){W=0;X.setPage(1);return}else{e=K.getTrEl(0)}}else{return}}else{W=0;X.setPage(X.getNextPage());return}}else{e=K.getNextTrEl(a)}}}else{if(PULP.player.getSong().position/1000>V){PULP.player.getSong().setPosition(0);return}if(d==K.getRecord(K.getFirstTrEl()).getId()){if(X.getStartIndex()===0){return false}L=true;X.setPage(X.getPreviousPage());return}e=K.getPreviousTrEl(a)}if(!e){return}K.unselectRow(a);K.selectRow(e);D({target:e})},shuffleOn:function(){G=true;$("shuffleOnBtn").style.display="inline";$("shuffleOffBtn").style.display="none"},shuffleOff:function(){G=false;$("shuffleOnBtn").style.display="none";$("shuffleOffBtn").style.display="inline"},repeatOn:function(){J=1;$("repeatOnBtn").style.display="inline";$("repeatOn1Btn").style.display="none";$("repeatOffBtn").style.display="none"},repeatOn1:function(){J=2;$("repeatOnBtn").style.display="none";$("repeatOn1Btn").style.display="inline";$("repeatOffBtn").style.display="none"},repeatOff:function(){J=0;$("repeatOnBtn").style.display="none";$("repeatOn1Btn").style.display="none";$("repeatOffBtn").style.display="inline"},getRepeat:function(){return J},playNextITunesDj:function(Y){W=0;this.loadPlaylist(R)},updateRating:function(b,a){var Z=b.getElementsByTagName("ul");Z[0].style.display="none";Z[0].previousSibling.style.display="block";var Y=K.getRecord(b).getData("persistentId");var c=K.getRecord(b).getData("id");YAHOO.util.Connect.asyncRequest("POST",PULP.utils.getHost()+"/rateItem",{success:C,failure:PULP.utils.failedRequest,abort:PULP.utils.failedRequest,timeout:20000,scope:this,argument:[b,a]},"songId="+c+"&songPersistentId="+Y+"&rating="+a)}}}();PULP.songContextMenu=function(){var D;var C;var A=function(E){PULP.serverPagination.updateRating(C,E)};var B=function(H){PULP.utils.closeDialogAfterMinimumDelay(H.argument);try{var E=YAHOO.lang.JSON.parse(H.responseText)}catch(F){operationFailed(H);return}if(E.replyCode==200){var G="<div>"+PULP.lang("To have other people access this song, send them this link:")+'</div><div style="margin:10px 0 5px 0; text-align:center">'+PULP.utils.getHost()+"/PlayNextITunesDj/"+E.linkId+"</div>";if(E.expires){G+='<div style="margin-top:15px">'+PULP.lang("This link will expire in 6 hours")+"</div>"}PULP.utils.showLinkDialog(PULP.lang("Direct Link to Song"),G)}else{PULP.utils.showReplyMessage(E);return}};return{init:function(){if(typeof D!="undefined"){D.destroy()}D=new YAHOO.widget.ContextMenu("songContextMenu",{trigger:PULP.serverPagination.getDataTable().getTbodyEl()});D.beforeShowEvent.subscribe(this.beforeShow,PULP.serverPagination.getDataTable(),this);D.render("songContextMenuContainer");D.clickEvent.subscribe(this.onContextMenuClick,PULP.serverPagination.getDataTable(),this)},beforeShow:function(F,E,H){D.clearContent();var G=H.getRecord(D.contextEventTarget);if(PULP.serverPagination.canRate()){var I=G.getData("rating");D.addItem({text:PULP.lang("Rate"),submenu:{id:"rateSubmenu",itemdata:[{text:PULP.lang("None"),onclick:{fn:function(){A(0)}},checked:I==0?true:false},{text:'<img src="http://'+PULP.player.getLocationLibs()+'/app_libs/images_1.0/1stars.png" />',onclick:{fn:function(){A(20)}},checked:I==20?true:false},{text:'<img src="http://'+PULP.player.getLocationLibs()+'/app_libs/images_1.0/2stars.png" />',onclick:{fn:function(){A(40)}},checked:I==40?true:false},{text:'<img src="http://'+PULP.player.getLocationLibs()+'/app_libs/images_1.0/3stars.png" />',onclick:{fn:function(){A(60)}},checked:I==60?true:false},{text:'<img src="http://'+PULP.player.getLocationLibs()+'/app_libs/images_1.0/4stars.png" />',onclick:{fn:function(){A(80)}},checked:I==80?true:false},{text:'<img src="http://'+PULP.player.getLocationLibs()+'/app_libs/images_1.0/5stars.png" />',onclick:{fn:function(){A(100)}},checked:I==100?true:false}]}})}if(PULP.serverPagination.canDownload()){D.addItem(PULP.lang("Download"))}D.addItem(PULP.lang("Play in iTunes DJ"));D.addItem(PULP.lang("Add To iTunes DJ"));D.addItem(PULP.lang("Direct Link to Song"));C=H.getTrEl(D.contextEventTarget);D.render("songContextMenuContainer")},onContextMenuClick:function(G,F,K){var E=F[1];var J=K.getRecord(D.contextEventTarget);if(E){var L=J.getData("id");if(L){if(PULP.serverPagination.canRate()){E.index--}if(!PULP.serverPagination.canDownload()){E.index++}switch(E.index){case 0:location.href=PULP.utils.getHost()+"/downloadSong/"+(PULP.player.playlistDirectLinkId?PULP.player.playlistDirectLinkId+"/":"")+L;break;case 1:var I=new YAHOO.widget.SimpleDialog("playNextITunesDjDialog",{width:"35em",icon:YAHOO.widget.SimpleDialog.ICON_INFO,close:false,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},fixedcenter:true,modal:true,visible:true,draggable:false});I.setBody('<div class="warning">'+PULP.lang("Please wait...")+"</div>");I.render(document.body);PULP.utils.setAsyncOpTime();YAHOO.util.Connect.asyncRequest("GET",PULP.utils.getHost()+"/PlayNextITunesDj/ajax/"+L,{success:this.playNextITunesDjSucceeded,failure:this.operationFailed,abort:this.operationFailed,timeout:4000,argument:I,scope:this},null);break;case 2:var H=new YAHOO.widget.SimpleDialog("addITunesDjDialog",{width:"35em",icon:YAHOO.widget.SimpleDialog.ICON_INFO,close:false,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},fixedcenter:true,modal:true,visible:true,draggable:false});H.setBody('<div class="warning">'+PULP.lang("Adding song to iTunes DJ...")+"</div>");H.render(document.body);PULP.utils.setAsyncOpTime();YAHOO.util.Connect.asyncRequest("GET",PULP.utils.getHost()+"/AddITunesDj/ajax/"+L,{success:this.addITunesDjSucceeded,failure:this.operationFailed,abort:this.operationFailed,timeout:4000,argument:H,scope:this},null);break;case 3:YAHOO.util.Connect.asyncRequest("GET",PULP.utils.getHost()+"/getSongLink/"+L,{success:B,failure:this.operationFailed,abort:this.operationFailed,timeout:4000,argument:PULP.utils.showWaitingDialog("getSongLinkDialog",PULP.lang("Getting link...")),scope:this});break}}}},operationFailed:function(E){PULP.utils.cancelWaitingDialog();E.argument.setBody('<div class="warning">'+PULP.lang("Operation has failed")+"</div>");E.argument.render(document.body);setTimeout(function(){E.argument.cancel()},2000)},playNextITunesDjSucceeded:function(F){var E=YAHOO.lang.JSON.parse(F.responseText);if(E.replyCode==200){PULP.serverPagination.playNextITunesDj();PULP.utils.closeDialogAfterMinimumDelay(F.argument)}else{this.operationFailed(F)}},addITunesDjSucceeded:function(F){var E=YAHOO.lang.JSON.parse(F.responseText);if(E.replyCode==200){PULP.utils.closeDialogAfterMinimumDelay(F.argument)}else{this.operationFailed(F)}}}}();PULP.playlistContextMenu=function(){var C;var B=function(G){PULP.utils.closeDialogAfterMinimumDelay(G.argument);try{var D=YAHOO.lang.JSON.parse(G.responseText)}catch(E){A(G);return}if(D.replyCode==200){var F="<div>"+PULP.lang("To have other people access this Playlist directly, send them this link:")+'</div><div style="margin:10px 0 5px 0; text-align:center">'+PULP.utils.getHost()+"/playlists/"+D.linkId+"</div>";if(D.expires){F+='<div style="margin-top:15px">'+PULP.lang("This link will expire in 6 hours")+"</div>"}PULP.utils.showLinkDialog(PULP.lang("Direct Link to Playlist"),F)}else{PULP.utils.showReplyMessage(D);return}};var A=function(D){PULP.utils.cancelWaitingDialog();alert(PULP.lang("Operation has failed"))};return{init:function(){if(PULP.serverPagination.canDownload()){playlistContextMenuVar1=new YAHOO.widget.ContextMenu("playlistContextMenu1",{trigger:"ulPlaylists1"});playlistContextMenuVar1.addItem(PULP.lang("Download"));playlistContextMenuVar1.render("playlistContextMenuContainer1");playlistContextMenuVar1.clickEvent.subscribe(this.onPlaylistContextMenuClick)}playlistContextMenuVar2=new YAHOO.widget.ContextMenu("playlistContextMenu2",{trigger:"ulPlaylists2"});if(PULP.serverPagination.canDownload()){playlistContextMenuVar2.addItem(PULP.lang("Download"))}playlistContextMenuVar2.addItem(PULP.lang("Direct Link to Playlist"));playlistContextMenuVar2.render("playlistContextMenuContainer2");playlistContextMenuVar2.clickEvent.subscribe(this.onPlaylistContextMenuClick)},onPlaylistContextMenuClick:function(F,E){var D=E[1];if(D){var G=this.contextEventTarget.parentNode.id;if(!PULP.serverPagination.canDownload()){D.index++}switch(D.index){case 0:location.href=PULP.utils.getHost()+"/downloadPlaylist/"+G;break;case 1:YAHOO.util.Connect.asyncRequest("GET",PULP.utils.getHost()+"/getPlaylistLink/"+G,{success:B,failure:A,abort:A,timeout:4000,argument:PULP.utils.showWaitingDialog("getPlaylistLinkDialog",PULP.lang("Getting link...")),scope:this});break}}}}}();PULP.genresCombo=function(){return{change:function(A){if(A=="-1"){return}YAHOO.util.Dom.setStyle("spanAlbums","display","none");YAHOO.util.Dom.setStyle("spanArtists","display","none");YAHOO.util.Dom.setStyle("loadingArtists","display","inline");PULP.artistsCombo.sendRequest(encodeURIComponent(A),this)},resetFilters:function(){YAHOO.util.Dom.setStyle("spanAlbums","display","none");YAHOO.util.Dom.setStyle("spanArtists","display","none");$("selectGenre").selectedIndex=0}}}();PULP.artistsCombo=function(){var A;var C;var B=function(F,H){var E;PULP.utils.resetDropdown("selectArtist","-- "+PULP.lang("Select Artist")+" --");var I=new Array();var D=new Array();for(var G=0;G<H.results.length;G++){I[G]=document.createElement("option");E=H.results[G].artistName;if(E.length>C){E=E.substring(0,C)+"\u2026"}D[G]=document.createTextNode(E);I[G].appendChild(D[G]);I[G].value=H.results[G].artistName;YAHOO.util.Dom.get("selectArtist").appendChild(I[G])}YAHOO.util.Dom.setStyle("loadingArtists","display","none");YAHOO.util.Dom.setStyle("spanArtists","display","inline")};return{init:function(D){C=D;A=new YAHOO.util.DataSource(PULP.utils.getHost()+"/getArtistsForGenre/");A.responseType=YAHOO.util.DataSource.TYPE_JSON;A.responseSchema={resultsList:"records",fields:["artistName"]}},sendRequest:function(D,E){A.sendRequest(D,{success:B,failure:function(){YAHOO.util.Dom.setStyle("loadingArtists","display","none");YAHOO.util.Dom.setStyle("spanArtists","display","none");PULP.utils.failedRequest()},scope:E})},change:function(D){if(D=="-1"){return}YAHOO.util.Dom.setStyle("spanAlbums","display","none");YAHOO.util.Dom.setStyle("loadingAlbums","display","inline");var E=YAHOO.util.Dom.get("selectGenre").value;PULP.albumsCombo.sendRequest(encodeURIComponent(E)+"/"+encodeURIComponent(D),this)}}}();PULP.albumsCombo=function(){var A;var C;var B=function(E,G){var I;PULP.utils.resetDropdown("selectAlbum","-- "+PULP.lang("Select Album")+" --");var H=new Array();var D=new Array();for(var F=0;F<G.results.length;F++){H[F]=document.createElement("option");I=G.results[F].albumName;if(I.length>C){I=I.substring(0,C)+"\u2026"}D[F]=document.createTextNode(I);H[F].appendChild(D[F]);H[F].value=G.results[F].albumName;YAHOO.util.Dom.get("selectAlbum").appendChild(H[F])}YAHOO.util.Dom.setStyle("loadingAlbums","display","none");YAHOO.util.Dom.setStyle("spanAlbums","display","inline")};return{init:function(D){C=D;A=new YAHOO.util.DataSource(PULP.utils.getHost()+"/getAlbumsForArtist/");A.responseType=YAHOO.util.DataSource.TYPE_JSON;A.responseSchema={resultsList:"records",fields:["albumName"]}},sendRequest:function(D,E){A.sendRequest(D,{success:B,failure:PULP.utils.failedRequest,scope:E})},change:function(G){if(G=="-1"){return}PULP.serverPagination.getDataTable().showTableMessage(PULP.lang("Loading data..."));var D=YAHOO.util.Dom.get("selectArtist").value;var F=YAHOO.util.Dom.get("selectGenre").value;var E=PULP.utils.getHost()+"/getAlbumSongs/"+encodeURIComponent(F)+"/"+encodeURIComponent(D)+"/"+encodeURIComponent(G)+"/";PULP.serverPagination.initTable(E)}}}();PULP.search=function(){return{search:function(A){if(A==""){return}PULP.serverPagination.getDataTable().showTableMessage(PULP.lang("Loading data..."));var B=PULP.utils.getHost()+"/search/"+encodeURIComponent(A)+"/";PULP.serverPagination.initTable(B)}}}();PULP.login=function(){var C;var D=function(){C.cancel();PULP.utils.showWaitingDialog("logging",PULP.lang("Logging in..."))};var A=function(G){try{var E=YAHOO.lang.JSON.parse(G.responseText);if(E.replyCode==200){location.href=PULP.utils.getHost()}else{if(E.replyCode==401){PULP.utils.cancelWaitingDialog();alert(PULP.lang("User could not be authenticated"))}else{B(G)}}}catch(F){B(G)}};var B=function(E){PULP.utils.cancelWaitingDialog();alert(PULP.lang("Operation has failed"))};return{init:function(E){document.loginForm.action=PULP.utils.getHost()+"/authenticate";C=new YAHOO.widget.Dialog("loginForm",{fixedCenter:!E,close:!E,draggable:false,modal:!E,width:"350px",height:"35px",hideaftersubmit:false});var G=[{type:"submit",text:PULP.lang("Send"),handler:function(){this.submit()},isDefault:true}];if(!E){G.push({text:PULP.lang("Cancel"),handler:function(){this.cancel()}})}C.cfg.queueProperty("buttons",G);C.callback.success=A;C.callback.failure=PULP.utils.failedRequest;C.beforeSubmitEvent.subscribe(D);var F=new YAHOO.util.KeyListener($("loginForm"),{keys:13},{fn:function(){C.submit()}});C.cfg.queueProperty("keylisteners",F);if(E){this.render()}},render:function(){C.render();$("loginForm").style.display="block";C.show();C.hide();C.show()},logout:function(){location.href=PULP.utils.getHost()+"/logout"}}}();PULP.profile=function(){var C;var G;var B=function(){PULP.utils.showWaitingDialog("loadingProfileDate",PULP.lang("Loading..."));YAHOO.util.Connect.asyncRequest("GET",PULP.utils.getHost()+"/getUserData/"+encodeURIComponent(G),{success:F,failure:function(H){A(H)},abort:function(H){A(H)},timeout:4000,scope:this},null)};var F=function(J){PULP.utils.cancelWaitingDialog();try{var H=YAHOO.lang.JSON.parse(J.responseText)}catch(I){A(J);C.cancel();return}if(H.replyCode==200){G=H.username;$("profile_username").value=G;$("profile_fullname").value=H.fullname;$("profile_email").value=H.email}else{if(H.replyCode==401||H.replyCode==400){PULP.utils.showReplyMessage(H);C.cancel();return}else{PULP.utils.showReplyMessage(H);return}}};var E=function(){if($("profile_username").value.trim()==""||$("profile_email").value.trim()==""){alert(PULP.lang("Username and E-mail fields can't be left blank"));return}if($("profile_password1").value!=$("profile_password2").value){alert(PULP.lang("The password fields don't match"));return}PULP.utils.showWaitingDialog("savingProfile","Saving...");YAHOO.util.Connect.asyncRequest("POST",PULP.utils.getHost()+"/saveProfile",{success:D,failure:PULP.utils.failedRequest,abort:PULP.utils.failedRequest,timeout:4000,argument:$("profile_username").value,scope:this},"isNew=0&username_old="+encodeURIComponent(G)+"&username="+encodeURIComponent($("profile_username").value)+"&fullname="+encodeURIComponent($("profile_fullname").value)+"&password="+encodeURIComponent($("profile_password1").value)+"&email="+encodeURIComponent($("profile_email").value))};var D=function(J){PULP.utils.cancelWaitingDialog();try{var H=YAHOO.lang.JSON.parse(J.responseText)}catch(I){A(J);return}if(H.replyCode==200){G=J.argument;C.cancel();return}else{PULP.utils.showReplyMessage(H);C.cancel();return}};var A=function(H){PULP.utils.cancelWaitingDialog();alert(PULP.lang("Operation failed. Please try later."));C.cancel()};return{init:function(H){G=H;C=new YAHOO.widget.Dialog("profileForm",{close:true,draggable:false,modal:true,width:"350",height:"110px",buttons:[{text:PULP.lang("Send"),handler:E,isDefault:true},{text:PULP.lang("Cancel"),handler:function(){this.cancel()}}]})},render:function(){C.render();$("profileForm").style.display="block";PULP.utils.centerDialogBelowPlayer(C);C.show();B()}}}();PULP.bufferSlider=function(){var A;return{init:function(){A=YAHOO.widget.Slider.getHorizSlider("buffer-slider-bg","buffer-slider-thumb",0,191);A.subscribe("slideEnd",this.movedSlider);A.setValue(0)},movedSlider:function(){PULP.player.setBufferLength(97/191*A.getValue()+3)}}}();PULP.volumeSlider=function(){var A;return{init:function(){A=YAHOO.widget.Slider.getHorizSlider("vol-slider-bg","vol-slider-thumb",0,50);A.subscribe("change",this.movedSlider);A.setValue(50)},movedSlider:function(){PULP.player.getSong().setVolume(Math.round(this.getValue()*2))},getVolume:function(){return A.getValue()*2}}}();PULP.loader=function(){var A=false;return{initUserManagement:function(){if(!A){PULP.userManagement.init();A=true}PULP.userManagement.render()},load:function(D,C,E){var B=new YAHOO.util.YUILoader({onSuccess:E});B.addModule({name:D,type:"js",fullpath:"http://"+C});B.require(D);B.insert(null,"js")}}}();
