if(typeof deconcept=="undefined")var deconcept={};if(typeof deconcept.util=="undefined")deconcept.util={};if(typeof deconcept.SWFObjectUtil=="undefined")deconcept.SWFObjectUtil={};
deconcept.SWFObject=function(b,f,j,k,n,p,q,r,u,v){if(document.getElementById){this.DETECT_KEY=v?v:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params={};this.variables={};this.attributes=[];b&&this.setAttribute("swf",b);f&&this.setAttribute("id",f);j&&this.setAttribute("width",j);k&&this.setAttribute("height",k);n&&this.setAttribute("version",new deconcept.PlayerVersion(n.toString().split(".")));this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(!window.opera&&document.all&&this.installedVer.major>7)deconcept.SWFObject.doPrepUnload=true;p&&this.addParam("bgcolor",p);this.addParam("quality",q?q:"high");this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);this.setAttribute("xiRedirectUrl",r?r:window.location);this.setAttribute("redirectUrl","");u&&this.setAttribute("redirectUrl",u)}};
deconcept.SWFObject.prototype={useExpressInstall:function(b){this.xiSWFPath=!b?"expressinstall.swf":b;this.setAttribute("useExpressInstall",true)},setAttribute:function(b,f){this.attributes[b]=f},getAttribute:function(b){return this.attributes[b]},addParam:function(b,f){this.params[b]=f},getParams:function(){return this.params},addVariable:function(b,f){this.variables[b]=f},getVariable:function(b){return this.variables[b]},getVariables:function(){return this.variables},getVariablePairs:function(){var b=
[],f,j=this.getVariables();for(f in j)b[b.length]=f+"="+j[f];return b},getSWFHTML:function(){var b="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath)}b='<embed type="application/x-shockwave-flash" src="'+this.getAttribute("swf")+'" width="'+this.getAttribute("width")+'" height="'+this.getAttribute("height")+'" style="'+this.getAttribute("style")+'"';b+=
' id="'+this.getAttribute("id")+'" name="'+this.getAttribute("id")+'" ';var f=this.getParams();for(var j in f)b+=[j]+'="'+f[j]+'" ';f=this.getVariablePairs().join("&");if(f.length>0)b+='flashvars="'+f+'"';b+="/>"}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath)}b='<object id="'+this.getAttribute("id")+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+this.getAttribute("width")+'" height="'+this.getAttribute("height")+
'" style="'+this.getAttribute("style")+'">';b+='<param name="movie" value="'+this.getAttribute("swf")+'" />';f=this.getParams();for(j in f)b+='<param name="'+j+'" value="'+f[j]+'" />';f=this.getVariablePairs().join("&");if(f.length>0)b+='<param name="flashvars" value="'+f+'" />';b+="</object>"}return b},write:function(b){if(this.getAttribute("useExpressInstall"))if(this.installedVer.versionIsValid(new deconcept.PlayerVersion([6,0,65]))&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",
true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title)}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){(typeof b=="string"?document.getElementById(b):b).innerHTML+=this.getSWFHTML();return true}else this.getAttribute("redirectUrl")!=""&&document.location.replace(this.getAttribute("redirectUrl"));
return false}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){var b=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var f=navigator.plugins["Shockwave Flash"];if(f&&f.description)b=new deconcept.PlayerVersion(f.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."))}else if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){f=1;for(var j=3;f;)try{j++;f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+j);b=new deconcept.PlayerVersion([j,
0,0])}catch(k){f=null}}else{try{f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(n){try{f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b=new deconcept.PlayerVersion([6,0,21]);f.AllowScriptAccess="always"}catch(p){if(b.major==6)return b}try{f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(q){}}if(f!=null)b=new deconcept.PlayerVersion(f.GetVariable("$version").split(" ")[1].split(","))}return b};
deconcept.PlayerVersion=function(b){this.major=b[0]!=null?parseInt(b[0]):0;this.minor=b[1]!=null?parseInt(b[1]):0;this.rev=b[2]!=null?parseInt(b[2]):0};deconcept.PlayerVersion.prototype.versionIsValid=function(b){if(this.major<b.major)return false;if(this.major>b.major)return true;if(this.minor<b.minor)return false;if(this.minor>b.minor)return true;if(this.rev<b.rev)return false;return true};
deconcept.util={getRequestParameter:function(b){var f=document.location.search||document.location.hash;if(b==null)return f;if(f){f=f.substring(1).split("&");for(var j=0;j<f.length;j++)if(f[j].substring(0,f[j].indexOf("="))==b)return f[j].substring(f[j].indexOf("=")+1)}return""}};if(!document.getElementById&&document.all)document.getElementById=function(b){return document.all[b]};var getQueryParamValue=deconcept.util.getRequestParameter,FlashObject=deconcept.SWFObject,SWFObject=deconcept.SWFObject;var expandedTrackLists=[],currentEmailer=null,currentHash="",currentPage="",currentTrackSelector=null,currentDownloader=null,d=document,firstCheck=false,sa=null,selectedTrack=0,shadowfaxLogin=false,$j=jQuery.noConflict(),insecure="http://"+config.insecureDomain,checkInInterval=null;window.responseIndex=0;if(window.console===undefined)window.console={log:function(){}};function implode(b,f){for(var j="",k=0;k<f.length;k++){j+=f[k];if(k+1<f.length)j+=b}return j}Array.prototype.removeDuplicates=function(){for(var b=0;b<this.length;b++)for(;(ind=this.lastIndexOf(this[b]))!=b;)this.splice(ind,1)};if(!Array.indexOf)Array.prototype.indexOf=function(b){for(var f=0;f<this.length;f++)if(this[f]==b)return f;return-1};if(!Array.lastIndexOf)Array.prototype.lastIndexOf=function(b){for(var f=this.length-1;f>=0;f--)if(this[f]==b)return f;return-1};Array.prototype.isArray=true;function isEmail(b){if(!/^.+@.+(\..+)+$/.test(b))return false;if(b.match(/[\(\)\<\>\,\;\:\\\/\"\[\] ]/))return false;return true}function isPhone(b){return b.match(/\(?([2-9][02-8][0-9]|[2-9][0-8][02-9])\)? ?-?([2-9][0-9]{2})-? ?([0-9]{4})/)}function validPassword(b){return trim(b).length>=6}function isInt(b){return b.match(/^[0-9]+$/)}
function shortenArtistName(b){if(!b)return"N/A";if(b.indexOf(" - ")!=-1)b=b.substring(0,b.indexOf(" - "));var f=b.split(/ \([A-Z]+\)/);if(f.length)b=f[0];return b}
function md5(b){var f=function(J,K){return J<<K|J>>>32-K},j=function(J,K){var L,M,N,O;N=J&2147483648;O=K&2147483648;L=J&1073741824;M=K&1073741824;J=(J&1073741823)+(K&1073741823);if(L&M)return J^2147483648^N^O;return L|M?J&1073741824?J^3221225472^N^O:J^1073741824^N^O:J^N^O},k=function(J,K,L){return J&K|~J&L},n=function(J,K,L){return J&L|K&~L},p=function(J,K,L){return J^K^L},q=function(J,K,L){return K^(J|~L)},r=function(J,K,L,M,N,O,P){J=j(J,j(j(k(K,L,M),N),P));return j(f(J,O),K)},u=function(J,K,L,M,
N,O,P){J=j(J,j(j(n(K,L,M),N),P));return j(f(J,O),K)},v=function(J,K,L,M,N,O,P){J=j(J,j(j(p(K,L,M),N),P));return j(f(J,O),K)},w=function(J,K,L,M,N,O,P){J=j(J,j(j(q(K,L,M),N),P));return j(f(J,O),K)},I=function(J){var K="",L="",M;for(M=0;M<=3;M++){L=J>>>M*8&255;L="0"+L.toString(16);K+=L.substr(L.length-2,2)}return K},E=[],F,Q,S,T,U,z,A,C,D;b=this.utf8_encode(b);E=function(J){var K,L=J.length;K=L+8;for(var M=((K-K%64)/64+1)*16,N=new Array(M-1),O=0,P=0;P<L;){K=(P-P%4)/4;O=P%4*8;N[K]|=J.charCodeAt(P)<<
O;P++}K=(P-P%4)/4;O=P%4*8;N[K]|=128<<O;N[M-2]=L<<3;N[M-1]=L>>>29;return N}(b);z=1732584193;A=4023233417;C=2562383102;D=271733878;b=E.length;for(F=0;F<b;F+=16){Q=z;S=A;T=C;U=D;z=r(z,A,C,D,E[F+0],7,3614090360);D=r(D,z,A,C,E[F+1],12,3905402710);C=r(C,D,z,A,E[F+2],17,606105819);A=r(A,C,D,z,E[F+3],22,3250441966);z=r(z,A,C,D,E[F+4],7,4118548399);D=r(D,z,A,C,E[F+5],12,1200080426);C=r(C,D,z,A,E[F+6],17,2821735955);A=r(A,C,D,z,E[F+7],22,4249261313);z=r(z,A,C,D,E[F+8],7,1770035416);D=r(D,z,A,C,E[F+9],12,2336552879);
C=r(C,D,z,A,E[F+10],17,4294925233);A=r(A,C,D,z,E[F+11],22,2304563134);z=r(z,A,C,D,E[F+12],7,1804603682);D=r(D,z,A,C,E[F+13],12,4254626195);C=r(C,D,z,A,E[F+14],17,2792965006);A=r(A,C,D,z,E[F+15],22,1236535329);z=u(z,A,C,D,E[F+1],5,4129170786);D=u(D,z,A,C,E[F+6],9,3225465664);C=u(C,D,z,A,E[F+11],14,643717713);A=u(A,C,D,z,E[F+0],20,3921069994);z=u(z,A,C,D,E[F+5],5,3593408605);D=u(D,z,A,C,E[F+10],9,38016083);C=u(C,D,z,A,E[F+15],14,3634488961);A=u(A,C,D,z,E[F+4],20,3889429448);z=u(z,A,C,D,E[F+9],5,568446438);
D=u(D,z,A,C,E[F+14],9,3275163606);C=u(C,D,z,A,E[F+3],14,4107603335);A=u(A,C,D,z,E[F+8],20,1163531501);z=u(z,A,C,D,E[F+13],5,2850285829);D=u(D,z,A,C,E[F+2],9,4243563512);C=u(C,D,z,A,E[F+7],14,1735328473);A=u(A,C,D,z,E[F+12],20,2368359562);z=v(z,A,C,D,E[F+5],4,4294588738);D=v(D,z,A,C,E[F+8],11,2272392833);C=v(C,D,z,A,E[F+11],16,1839030562);A=v(A,C,D,z,E[F+14],23,4259657740);z=v(z,A,C,D,E[F+1],4,2763975236);D=v(D,z,A,C,E[F+4],11,1272893353);C=v(C,D,z,A,E[F+7],16,4139469664);A=v(A,C,D,z,E[F+10],23,3200236656);
z=v(z,A,C,D,E[F+13],4,681279174);D=v(D,z,A,C,E[F+0],11,3936430074);C=v(C,D,z,A,E[F+3],16,3572445317);A=v(A,C,D,z,E[F+6],23,76029189);z=v(z,A,C,D,E[F+9],4,3654602809);D=v(D,z,A,C,E[F+12],11,3873151461);C=v(C,D,z,A,E[F+15],16,530742520);A=v(A,C,D,z,E[F+2],23,3299628645);z=w(z,A,C,D,E[F+0],6,4096336452);D=w(D,z,A,C,E[F+7],10,1126891415);C=w(C,D,z,A,E[F+14],15,2878612391);A=w(A,C,D,z,E[F+5],21,4237533241);z=w(z,A,C,D,E[F+12],6,1700485571);D=w(D,z,A,C,E[F+3],10,2399980690);C=w(C,D,z,A,E[F+10],15,4293915773);
A=w(A,C,D,z,E[F+1],21,2240044497);z=w(z,A,C,D,E[F+8],6,1873313359);D=w(D,z,A,C,E[F+15],10,4264355552);C=w(C,D,z,A,E[F+6],15,2734768916);A=w(A,C,D,z,E[F+13],21,1309151649);z=w(z,A,C,D,E[F+4],6,4149444226);D=w(D,z,A,C,E[F+11],10,3174756917);C=w(C,D,z,A,E[F+2],15,718787259);A=w(A,C,D,z,E[F+9],21,3951481745);z=j(z,Q);A=j(A,S);C=j(C,T);D=j(D,U)}return(I(z)+I(A)+I(C)+I(D)).toLowerCase()}
function utf8_encode(b){b=b+"";var f="",j,k,n=0;j=k=0;n=b.length;for(var p=0;p<n;p++){var q=b.charCodeAt(p),r=null;if(q<128)k++;else r=q>127&&q<2048?String.fromCharCode(q>>6|192)+String.fromCharCode(q&63|128):String.fromCharCode(q>>12|224)+String.fromCharCode(q>>6&63|128)+String.fromCharCode(q&63|128);if(r!==null){if(k>j)f+=b.substring(j,k);f+=r;j=k=p+1}}if(k>j)f+=b.substring(j,b.length);return f}
function getLoadingMessage(b,f,j){if(b&&f){var k=b.match(/show=([0-9]+)/),n=f.match(/show=([0-9]+)/);if(k&&n&&k[1]!=n[1])return Number(k[1])>Number(n[1])?"Showing fewer results...":"Showing more results...";oldGenreCount=(m=b.match(/genre(?:\[|%5B)(?:\]|%5D)=/g))?m.length:0;newGenreCount=(m=f.match(/genre(?:\[|%5B)(?:\]|%5D)=/g))?m.length:0;genreChange=oldGenreCount!=newGenreCount;oldCueCount=(m=b.match(/cue=/))?m.length:0;newCueCount=(m=f.match(/cue=/))?m.length:0;cueChange=oldCueCount!=newCueCount;
oldTempoCount=(m=b.match(/tempo(?:\[|%5B)(?:\]|%5D)=/g))?m.length:0;newTempoCount=(m=f.match(/tempo(?:\[|%5B)(?:\]|%5D)=/g))?m.length:0;tempoChange=oldTempoCount!=newTempoCount;oldLength=b.match(/length(?:\[|%5B)(?:min|max)(?:\]|%5D)=([0-9]+)/g);newLength=f.match(/length(?:\[|%5B)(?:min|max)(?:\]|%5D)=([0-9]+)/g);lengthChange=oldLength&&!newLength||newLength&&!oldLength||oldLength&&newLength&&(oldLength[0]!=newLength[0]&&oldLength[0]!=newLength[1]||oldLength[1]!=newLength[1]&&oldLength[1]!=newLength[0]);
if(genreChange&&cueChange||genreChange&&tempoChange||genreChange&&lengthChange||cueChange&&tempoChange||cueChange&&lengthChange||tempoChange&&lengthChange)return"Removing filters...";if(genreChange)return oldGenreCount<newGenreCount?"Adding genre filter...":"Removing genre filter...";if(cueChange)return oldCueCount<newCueCount?"Adding cue type filter...":"Removing cue type filter...";if(tempoChange)return oldTempoCount<newTempoCount?"Adding tempo filter...":"Removing tempo filter...";if(lengthChange)return"Adjusting length filter...";
if(n=f.match(/no=([a-z ]+)/))return"Sorting by "+n[1]+"...";k=b.match(/pg=([0-9]+)/);if((n=f.match(/pg=([0-9]+)/))&&(!k||k[1]!=n[1]))return"Loading page "+(Number(n[1])+1)+"..."}return j}
function formatDate(b,f){var j=new Date;f&&j.setTime(f*1E3);f="";for(var k=0;k<b.length;k++){var n=b.substring(k,k+1);switch(n){case "d":if(j.getDate()<10)f+="0";case "j":f+=j.getDate();break;case "Y":f+=j.getFullYear();break;case "y":f+=j.getYear();break;case "m":if(j.getMonth()+1<10)f+="0";case "n":f+=j.getMonth()+1;break;case "F":switch(j.getMonth()){case 0:f+="January";break;case 1:f+="February";break;case 2:f+="March";break;case 3:f+="April";break;case 4:f+="May";break;case 5:f+="June";break;
case 6:f+="July";break;case 7:f+="August";break;case 8:f+="September";break;case 9:f+="October";break;case 10:f+="November";break;case 11:f+="December";break}break;default:f+=n;break}}return f}
function agoString(b){b=((new Date).getTime()-b*1E3)/1E3;if(b<60)return"just moments";else if(b<3600){b=Math.floor(b/60);return b+(b==1?" minute":" minutes")}else if(b<86400){b=Math.floor(b/3600);return b+(b==1?" hour":" hours")}else if(b<604800){b=Math.floor(b/86400);return b+(b==1?" day":" days")}else if(b<2592E3){b=Math.floor(b/604800);return b+(b==1?" week":" weeks")}else if(b<31536E3){b=Math.floor(b/2592E3);return b+(b==1?" month":" months")}else{b=Math.floor(b/31536E3);return b+(b==1?" year":
" years")}}function numberFormat(b){b=(""+b).replace(",","");decimal=b.match(/\.[0-9]+$/);integer=b.match(/^[0-9]+/);if(!decimal&&!integer)return b;if(!integer)return decimal;for(integer+=",";integer.match(/[0-9]{4}/);)integer=integer.replace(/([0-9]{3}),/,",$1,");return integer.substring(0,integer.length-1)+(decimal?"."+decimal:"")}
function formatSize(b){b=b/1024;var f=b/1024+"";b+="";if(f>0){if(f.indexOf("."))return f.substr(0,f.indexOf(".")+3)+"MB";return f+"MB"}else{if(b.indexOf("."))return b.substr(0,b.indexOf(".")+3)+"KB";return b+"KB"}}function caselessBold(b,f){f=f.toLowerCase();for(var j=b.toLowerCase().split(f),k=0,n="",p=0;p<j.length-1;p++){n+=b.substring(k,k+j[p].length);k+=j[p].length;n+="<em>"+b.substring(k,k+f.length)+"</em>";k+=f.length}n+=b.substring(k,b.length);return n}
function trim(b){return b.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function resizeText(b,f,j){for(j=j;b.offsetWidth>f&&j>0;j--)b.style.fontSize=j+"px"}function round(b,f){return Math.round(b*Math.pow(10,f))/Math.pow(10,f)}function ucfirst(b){return b[0].toUpperCase()+b.substring(1)};function get(b,f){if(f){for(var j=0;j<f.childNodes.length;j++){if(f.childNodes[j].id==b)return f.childNodes[j];if(f.childNodes[j].childNodes.length){var k=get(b,f.childNodes[j]);if(k!=null)return k}}return null}else return d.getElementById(b)}function getDimensions(b){return{width:b.offsetWidth,height:b.offsetHeight}}function getPosition(b){var f=0,j=0;do{f+=b.offsetLeft;j+=b.offsetTop}while(b=b.offsetParent);return{x:f,y:j}}
function lowest(b,f){b=b?b:0;f=f?f:0;if(!b)return f;if(!f)return b;return b<f?b:f}function getDisplayWidth(){return $j(window).width()}function getDisplayHeight(){return $j(window).height()}function getScrollX(){var b=0;b=lowest(b,window.pageXOffset);b=d.documentElement?lowest(b,d.documentElement.scrollLeft):b;return d.body?lowest(b,d.body.scrollLeft):b}
function getScrollY(){var b=0;b=lowest(b,window.pageYOffset);b=d.documentElement?lowest(b,d.documentElement.scrollTop):b;return d.body?lowest(b,d.body.scrollTop):b}function clearBody(){removeChildren(get("body"));search&&search.resetSearchOptions()}function removeChildren(b){if(b)for(;b.childNodes.length;)b.removeChild(b.childNodes[0])}
function createElement(b,f,j,k){b=d.createElement(b);if(f!=""&&f!=undefined)b.id=f;if(j!=""&&j!=undefined)b.className=j;k!=""&&k!=undefined&&b.appendChild(k);return b}function createDiv(b,f,j){b=createElement("div",b,f);j!=""&&j!=undefined&&b.appendChild(j);return b}function createA(b,f,j,k,n,p){b=createElement("a",b,f);if(j!="")b.href=j;if(k!=""&&k!=undefined)b.onclick=k;if(n!=""&&n!=undefined)b.name=n;if(p!=""&&p!=undefined)b.innerHTML=p;b.onfocus=function(){this.blur()};return b}
function createSpan(b,f,j){b=createElement("span",b,f);j!=""&&j!=undefined&&b.appendChild(j);return b}function createTh(b,f,j){var k=d.createElement("th");if(b!=""&&b!=undefined)k.id=b;if(f!=""&&f!=undefined)k.className=f;j!=""&&j!=undefined&&k.appendChild(j);return k}function createP(b,f,j){b=createElement("p",b,f);b.appendChild(createText(j));return b}function createH1(b,f,j,k){j=createElement("h1",k,j);j.innerHTML=b;if(f!=""&&f)j.onclick=f;return j}
function createH2(b,f,j,k){j=createElement("h2",k,j);j.innerHTML=b;if(f!=""&&f)j.onclick=f;return j}function createH3(b,f,j,k){j=createElement("h3",k,j);j.innerHTML=b;if(f!=""&&f)j.onclick=f;return j}function createImg(b,f,j){b=createElement("img",b,f);b.src=j;return b}function createInput(b,f,j,k){f=createElement("input",f,j);f.type=b;k&&f.appendChild(k);return f}function createText(b){return d.createTextNode(b)}
function createButton(b,f,j,k,n){f=createA(f,"button faux_button "+j,k?k:getDefaultLink(),n);f.appendChild(createDiv("","left"));f.appendChild(createDiv("","middle",createText(b)));f.appendChild(createDiv("","right"));return f}function createLightBox(b){return $j('<div class="lightbox_container"><div class="lightbox"></div></div>').append(b).get(0)}function hideLightBox(b){$j(b).remove()}
function showLightBox(b){$j(".lightbox",b).unbind().click(function(){hideLightBox($j(this).data("lb"))}).data("lb",b);$j("#body").append(b)}function center(b){b=$j(b);b.css({top:Math.floor((getDisplayHeight()-b.height()-$j("#shadowfax").outerHeight())/2)+"px",left:Math.floor((getDisplayWidth()-b.width())/2)+"px"})}
function createRoundedDiv(b,f,j,k,n){div=createDiv(b,f);if(!k){div.appendChild(span=createDiv("","border_top"));span.appendChild(createSpan("","border1"));span.appendChild(createSpan("","border2"));span.appendChild(createSpan("","border3"));span.appendChild(createSpan("","border4"))}div.appendChild(content=createDiv("","bordered_content"));div.content=content;j&&content.appendChild(j);if(!n){div.appendChild(span=createDiv("","border_bottom"));span.appendChild(createSpan("","border4"));span.appendChild(createSpan("",
"border3"));span.appendChild(createSpan("","border2"));span.appendChild(createSpan("","border1"))}return div}
function FocusBox(b,f,j,k){this.div=null;this.center=!f;this.noRemove=j;this.help=k;this.show=function(){$j("body").append(this.div);this.center();this.center&&centerer.addObject(this);return this};this.hide=function(){this.div.remove();this.center&&centerer.removeObject(this);return this};this.center=function(){this.resize();center(this.div);return this};this.resize=function(){for(var n=$j(".focused_content > div",this.div),p=0,q=n.outerHeight(),r=0;r<n.length;r++)p+=$j(n[r]).outerWidth();this.div.css({width:p+
20+"px",height:q+20+"px"});return this};this.showHelp=function(){if(this.help){this.div.find(".focused_content").append($j('<div class="help"><h2 class="title">Help</h2></div>').append(this.help)).addClass("with_help");this.resize();return this}};this.hideHelp=function(){if(this.help){this.div.find(".help, .help_clr").remove();this.resize();return this}};this.addHelpButton=function(){if(this.help)if(!this.div.find("#help").length){var n=$j('<a href="'+getDefaultLink()+'" id="help"></a>').toggle(function(){$j(this).data("fb").showHelp()},
function(){$j(this).data("fb").hideHelp()}).data("fb",this);$j(this.div.find(".focused_content_actual")).append(n)}};this.setHelp=function(n){this.help=n;$j(".help",this.div).empty().append(this.help);this.addHelpButton()};this.replaceInHelp=function(n,p){this.setHelp(this.help.html(this.help.html().replace(n,p)))};this.init=function(n,p){var q=$j('<div class="focused_container"><div class="focused_background"></div><div class="focused_content"></div></div>').data("focusBox",this);n=$j(n).addClass("focused_content_actual");
q.find(".focused_content").append(n);p&&q.addClass("absolute");this.div=q;this.addHelpButton()};this.init(b,f)}function removeFocusBoxes(){$j(".focused_container").each(function(){var b=$j(this).data("focusBox");if(!b||!b.noRemove)b?b.hide():$j(this).remove()})}
function generatePerson(b,f,j){f||(f="home_top_person");f=createDiv("",f);var k=createDiv("","avatar faux_button");k.onclick=function(){setHash(this.link)};k.link=j;var n=createA("","",j);n.appendChild(createImg("","",b.av));k.appendChild(n);f.appendChild(k);f.appendChild(n=createA("","",j));n.innerHTML=shortenArtistName(b.username?b.username:b.name);return f}
function Centerer(){this.objs={};this.addObject=function(b){if(b.center){var f=(new Date).getTime()+Math.random();b.centererId=f;this.objs[f]=b}else console.log("Tried to add an obj to Centerer that had no center method")};this.removeObject=function(b){if(b.objId){var f=b.objId;if(this.objs[f]){delete b.objId;delete this.objs[f]}}};this.run=function(){for(var b in this.objs)this.objs[b].center()};this.init=function(){$j(window).resize(function(){centerer.run()})};this.init()}var centerer=new Centerer;function ajax(b,f,j,k){if(j==undefined||j!="GET"&&j!="POST")j="GET";var n;if(window.XMLHttpRequest)n=new XMLHttpRequest;else if(window.ActiveXObject)n=new ActiveXObject("Microsoft.XMLHTTP");if(n!=null)if(j=="GET"){n.open("GET","ajax.php"+(config.secureString?config.secureString+"&":"?")+b,true);n.onreadystatechange=function(){n.readyState==4&&n.status==200&&handleAjaxResponse(f,n.responseText,b);delete n};n.send(null)}else{k=config.secureString?k==undefined?config.secureString:config.secureString+
"&"+k:k==undefined?"?":"?"+k;n.open("POST","ajax.php"+k,true);n.setRequestHeader("Content-type","application/x-www-form-urlencoded");n.onreadystatechange=function(){n.readyState==4&&n.status==200&&handleAjaxResponse(f,n.responseText,b);delete n};n.send(b)}}
function handleAjaxResponse(b,f,j){updateCheckIn();try{var k=eval(f);k=k[0];if(k.error)switch(k.error){case "solr_error":showError($j("<span>We appear to be having a problem with our search server. Our tech team has been notified and is currently working on it. Please wait a couple minutes and try again.Sorry for the inconvenience!</span>"));return;case "database_error":showError($j("<span>We appear to be having a problem with the database. Our tech team has been notified and is currently working on it. Please wait a couple minutes and try again.Sorry for the inconvenience!</span>"));
return;case "login_error":glamdring.login();return;case "json_error":alertManager.alert(createText("Sorry, a server error occurred while processing your request. It's been logged and we're investigating!"));return;default:alertManager.alert(createText("An unknown error has occurred"));return}config.version.id!=k.version.id&&k.version.requiresRefresh?breadCrumbs.showUpdated():user.checkVersion(k.version);if(k.forward&&k.forward!=getHash())setHash(k.forward);else{k.batches&&k.batches.length&&new BatchDownloader(k.batches);
k.pendingBatches?batchTracker.setBatches(k.pendingBatches):batchTracker.setBatches([]);if(k.success&&b){var n=window.responseIndex+=1;if(window.responseIndex>15)window.responseIndex=0;n="ajaxResponse"+n;window[n]=k.content;eval(b+'(window["'+n+'"])')}}}catch(p){if((pos=f.indexOf("Auth Result: "))!=-1){k=f.substring(pos+13);k=k.substring(0,k.indexOf("<"));alertManager.alert($j("<span><b>Server communication failure</b><br/>Your network connection said: "+k+"<br/>Please consult your local network admin for help.</span>"));
p.message="Handled quietly"}else alertManager.alert(createText("Sorry, a server error occurred while processing your request. It's been logged and we're investigating!"));$j.post("ajax.php?p=error",{request:j,"return":f,error:p.message})}}function updateCheckIn(){checkInInterval&&clearInterval(checkInInterval);checkInInterval=setInterval("checkIn();",3E4)}function checkIn(){ajax("p=checkin")};function TrackBank(){this.trackInfos={};this.keys=[];this.clear=function(b){this.trackInfos[b]=null};this.add=function(b,f){this.addKey(f);this.trackInfos[f].add(b)};this.addKey=function(b){if(this.trackInfos[b]==null)this.trackInfos[b]=new TrackInfo;if(this.keys.indexOf(b)==-1)this.keys[this.keys.length]=b};this.get=function(b,f){if(this.trackInfos[f]==null)return null;return this.trackInfos[f].get(b)};this.find=function(b){for(var f=0;f<this.keys.length;f++){var j=this.get(b,this.keys[f]);if(j!=
null)return j}return null};this.updateAll=function(b,f,j){for(var k=0;k<this.keys.length;k++)this.update(b,f,j,this.keys[k])};this.update=function(b,f,j,k){this.get(b,k)!=null&&this.trackInfos[k].update(b,f,j)};this.remove=function(b,f){this.get(b,f)!=null&&this.trackInfos[f].remove(b)};this.count=function(b){if(this.trackInfos[b]!=null)return this.trackInfos[b].length;return 0}}var trackBank=new TrackBank;
function TrackInfo(){this.info={};this.length=0;this.clear=function(){this.info={}};this.add=function(b){this.info[b.id]==null&&this.length++;this.info[b.id]=b;if(b.alternates&&b.alternates.length)for(var f=0;f<b.alternates.length;f++)this.add(b.alternates[f])};this.update=function(b,f,j){this.info[b][f]=j};this.get=function(b){return this.info[b]};this.remove=function(b){this.info[b]!=null&&this.length--;this.info[b]=null}}function getTrack(b){return trackBank.find(b)}
function OrderedTrackInfo(b){this.bankKey=b;this.order=[];this.clear=function(){trackBank.clear(this.bankKey)};this.add=function(f,j,k){trackBank.add(j,this.bankKey);k?this.order.unshift(f):this.order.push(f)};this.remove=function(f){trackBank.remove(f,this.bankKey);for(var j=0;j<this.order.length;j++)if(this.order[j]==f){this.order.splice(j,1);return}};this.get=function(f,j){results=[];j||(j=0);for(var k=0;k<f&&k+j<this.order.length;k++)results[k]=trackBank.get(this.order[k+j],this.bankKey);return results};
this.find=function(f){return trackBank.get(f,this.bankKey)};this.length=function(){return trackBank.count(this.bankKey)}}
function RequestCache(){this.cache={};this.ttl=6E5;this.set=function(b,f){this.cache[b]||(this.cache[b]={bod:(new Date).getTime(),result:f})};this.get=function(b){this.cleanup();return this.cache[b]?this.cache[b].result:null};this.cleanup=function(){delTime=(new Date).getTime()-this.ttl;for(var b in this.cache)this.cache[b].bod<delTime&&delete this.cache[b]};this.clear=function(){var b=this.ttl;this.ttl=0;this.cleanup();this.ttl=b;profilePage.themeData=null}}var requestCache=new RequestCache;function Player(){this.currentSource="";this.playingTrack=0;this.playingTrackData={};this.playing=false;this.getPlayer=function(){return get("SourceAudioPlayer")};this.playTrack=function(b){this.playingTrack&&this.updatePlaying(this.playingTrack,0);if(fl=this.getPlayer()){this.playingTrackData=getTrack(b);fl.playTrack(b);this.playingTrack=b}};this.updatePlaying=function(b,f){this.playingTrack=b;getTrackList().updatePlayPauseState(b,f);this.playing=f};this.playPause=function(){(fl=this.getPlayer())&&
fl.playPause()};this.manualPlayingUpdate=function(){fl=this.getPlayer();try{fl.updatePlaying()}catch(b){setTimeout("player.manualPlayingUpdate",100);console.log("unable to find player function. waiting")}};this.getPlayingTrackData=function(){this.playingTrackData.currentSource=this.currentSource;return this.playingTrackData}}var player=new Player,uploaderId=0,UploaderConstants={ANY:0,AUDIO:1,IMAGES:2};
function Uploader(b,f,j,k,n){this.FileUploader=null;this.allowMultiple=f?1:0;this.callback=j;this.loadCallback=n;this.type=k;this.div=b;this.myId="";this.init=function(){this.div.uploader=this;this.myId=uploaderId;var p=new SWFObject("flash/FileUploader.swf","FileUploader_"+uploaderId,this.div.offsetWidth,this.div.offsetHeight,"9","#dddddd",true);p.addParam("AllowScriptAccess","always");p.addParam("wmode","transparent");p.addVariable("allowMultiple",this.allowMultiple);p.addVariable("callback",this.callback);
p.addVariable("loaderObject",this.div.id);switch(k){case UploaderConstants.AUDIO:p.addVariable("fileFilterName","Audio Files (*.AIFF;*.MP3;*.WAV)");p.addVariable("fileFilterTypes","*.aiff;*.mp3;*.wav");break;case UploaderConstants.IMAGES:p.addVariable("fileFilterName","Image Files (*.GIF;*.JPG;*.PNG)");p.addVariable("fileFilterTypes","*.gif;*.jpg;*.png");break;case UploaderConstants.ANY:default:break}p.write(this.div.id);uploaderId++};this.init();this.fileUploaderLoadComplete=function(){this.FileUploader=
get("FileUploader_"+this.myId);this.loadCallback&&eval(this.loadCallback+"()")};this.getFiles=function(){if(this.FileUploader!=null)return eval(this.FileUploader.getFiles())};this.upload=function(p,q,r,u){if(this.FileUploader!=null){p="l="+cookies.get("sa_user_normal")+(config.secure?"&s="+cookies.get("sa_user_secure"):"")+"&"+p;this.FileUploader.upload(p,q,r,u)}}};function setHash(b){if(b[0]=="#")b=b.substring(1);document.location.href=document.location.href.replace(/#.*$/,"")+"#"+b}function getHash(){return document.location.href.replace(/^[^#]+#/,"")}function parseHash(b){b=b!=undefined?b:getHash();b=b.split("?");var f=["",[]];if(b.length){f[0]=b[0];if(b.length>1&&b[1]!="")for(var j=b[1].split("&"),k=0;k<j.length;k++){f[1][k]=unescape(j[k]).split("=");if(f[1][k][0].indexOf("?")!=-1){var n=f[1][k][0].split("?");if(n[0]==b[0])f[1][k][0]=n[1]}}}return f}
function hashToParams(b){b=parseHash(b);for(var f="",j=0;j<b[1].length;j++)f+=escape(b[1][j][0])+"="+escape(b[1][j][1])+"&";return f.substring(0,f.length-1)}function paramsToHash(b){if(b==""||b==undefined)return"";return b?"?"+b.replace(/^&/,""):""}
function paramsToVars(b){var f={};if(b==null||b.length==0)return f;b=b.split("&");for(var j=0;j<b.length;j++){var k=unescape(b[j]).split("=");if(k[0])if(f[k[0]]!=null)if(f[k[0]].isArray)f[k[0]][f[k[0]].length]=k[1];else f[k[0]]=[f[k[0]],k[1]];else f[k[0]]=k[1]}return f}
function varsToHash(b){var f="";for(var j in b)if(b[j]!=""&&b[j]!=undefined)if(b[j].isArray)for(var k=0;k<b[j].length;k++)f+="&"+escape(j)+"="+escape(b[j][k]);else f+="&"+escape(j)+"="+escape(b[j]);return f.length?"?"+f.substring(1):""}function checkPage(){var b=getHash();if(currentHash==""||currentHash!=b){currentHash=b;setPage(parseHash()[0],hashToParams())}}
function setPage(b,f){nav&&nav.resetNav();search.resetSearchOptions();getTrackList().stopExpandedTimer();if(config.secure){if(!user.logged&&b!="signup"){currentPage=="signup"?glamdring.ret():glamdring.login();return}}else if(b=="signup")b=config.home;var j="";if(b=="document"){j=paramsToVars(f).name;b=config.home;f=""}var k="";if(b=="download"){k=paramsToVars(f).key;b=config.home;f=""}if(config.allowedPages.indexOf(b)==-1)b=config.home;removeFocusBoxes();projector.unhighlight();switch(b){case "aboutus":aboutus.generatePage(f);
setTitle("About Us");break;case "albums":albumPage.generatePage(f);setTitle("Album List");break;case "artists":artistPage.generatePage(f);setTitle("Artist List");break;case "catalog":catalogPage.generatePage(f);break;case "catalogs":catalogListPage.generatePage(f);setTitle("Catalog List");break;case "label":labelPage.generatePage(f);break;case "labels":labelListPage.generatePage(f);setTitle("Label List");break;case "details":detailsPage.generatePage(f);break;case "explorer":explorer.generatePage(f);
setTitle("Track List");break;case "feedback":feedback.generatePage(f);setTitle("Feedback");break;case "genres":genres.generatePage(f);setTitle("Genres List");break;case "helpfaq":helpfaq.generatePage(f);setTitle("Help & FAQ");break;case "information":informationPage.generatePage(f);setTitle("Information");break;case "profile":profilePage.generatePage(f);break;case "project":setTitle("Project Details");projectPage.generatePage(f);break;case "requests":requestPage.generatePage(f);setTitle("Requests");
break;case "reps":repPage.generatePage(f);setTitle("Rep List");break;case "signup":signupPage.generatePage(f);setTitle("Sign Up");break;case "trackSelector":currentTrackSelector.generatePage(f);break;case "upload":upload.generatePage(f);setTitle("Upload Your Tracks");break;case "login":login.show();case "home":home.generatePage(f);setTitle();break;default:console.log("oh god, how did this happen?? - "+b);break}currentHash=getHash();nav.setNav(currentPage);recordAnalytics(currentHash);if(firstCheck)firstCheck=
false;j&&showDocument(j);k&&findBatchDownload(k);checkPassword();search.updateSearchFromHash()};function getDefaultLink(){return"javascript:;"}function getHomeLink(){return"#"+config.home}function getExplorerLink(b){return"#explorer"+paramsToHash(b)}function getTrackSelectorLink(b){return"#trackSelector"+paramsToHash(b)}function getArtistsLink(b){return"#artists"+paramsToHash(b)}function getAlbumsLink(b){return"#albums"+paramsToHash(b)}function getLabelsLink(b){return"#labels"+paramsToHash(b)}function getRepListLink(b){return"#reps"+paramsToHash(b)}
function getCatalogListLink(b){return"#catalogs"+paramsToHash(b)}function getArtistLink(b,f){if(b==0)return"";if(f&&!config.singleCatalog)return"#catalog"+varsToHash({c:f,page:"results",a:b});return getExplorerLink()+varsToHash({a:b})}function getAlbumLink(b,f){if(b==0)return"";if(f&&!config.singleCatalog)return"#catalog"+varsToHash({c:f,page:"results",b:b});return getExplorerLink()+varsToHash({b:b})}function getLabelLink(b){if(b==0)return"";return"#label"+varsToHash({l:b,page:"albums"})}
function getLabelLinkExact(b){return"#label"+paramsToHash(b.replace("type","page"))}function getLabelLinkArbitrary(b,f,j){j||(j={});j.l=b;j.page=f;return"#label"+varsToHash(j)}function getPublisherLink(b,f){if(b==0)return"";if(f&&!config.singleCatalog)return"#catalog"+varsToHash({c:f,page:"results",pub:b});return getExplorerLink()+varsToHash({pub:b})}
function getComposerLink(b,f){if(b==0)return"";if(f&&!config.singleCatalog)return"#catalog"+varsToHash({c:f,page:"results",comp:b});return getExplorerLink()+varsToHash({comp:b})}function getGenreLink(b){return getExplorerLink()+varsToHash({g:b})}function getTempoLink(b){return getExplorerLink()+varsToHash({t:b})}function getCueTypeLink(b){return getExplorerLink()+varsToHash({ct:b})}function getSubGenreLink(b){return getExplorerLink()}
function getCustomLink(b,f,j){return getExplorerLink()+varsToHash({custom:b,value:f,value_id:j})}function getRepLink(b){console.log("geRepLink called");return getCatalogLink(b)}function getUploadLink(b){return"#upload"}function getProfileLink(b,f,j){b={u:b,page:f};if(j)b.sub=j;return"#profile"+varsToHash(b)}function getCatalogLink(b,f){b={c:b};if(f&&!isInt(f))b.page=f;return"#catalog"+varsToHash(b)}function getCatalogLinkExact(b){return"#catalog"+paramsToHash(b.replace("type","page"))}
function getCatalogLinkArbitrary(b,f,j){j||(j={});j.c=b;j.page=f;return"#catalog"+varsToHash(j)}function getProfileLinkArbitrary(b,f,j){j||(j={});j.u=b;j.page=f;return"#profile"+varsToHash(j)}function getProfileLinkExact(b){return"#profile"+paramsToHash(b.replace("type","page"))}function getDashboardLink(b,f){if(!user.logged)return getHomeLink();f||(f={});f.u=user.userData.id;f.page="dashboard";f.section=b;return"#profile"+varsToHash(f)}
function getTrackLink(b,f,j){return"#details"+varsToHash({r:b,id:f,page:j})}function getRequestLink(b,f){return"#requests_page_"+b+(f?"_id_"+f:"")}function getProjectLink(b){return"#project"+varsToHash({projectId:b})}function getProjectLinkExact(b){return"#project"+paramsToHash(b)}function getDefaultProjectLink(){return"#project"}
function getSecureA(b,f){b||(b=currentHash);if(b.indexOf("#")!=0)b="#"+b;var j=$j('<span class="secure_link'+(f?" secure_link_image":"")+'"></span>');j.append(createA("",f?"image_container":"","https://"+config.secureDomain+"/"+config.secureString+b,function(){if(user.getOption("seen_secure_notice")!="1"){help.showSecureHelp(this.href.replace("https://"+config.secureDomain+"/"+config.secureString,""));user.setOption("seen_secure_notice",1);return false}},"","Go Secure"));f&&$j("a",j).html('<img src="'+
config.secureButton+'"/><span class="secure_text">'+f+"</span>");j.append(' <a href="javascript:;" class="help">(?)</a>');$j(".help",j).click(function(){help.showSecureHelp($j(this).data("hash"))}).data("hash",b);f&&j.append('<div class="clr"></div>');return j}function getLoginLink(){return"https://"+config.secureDomain+"/login.php?forward="+escape(document.location)}function getSignupLink(){return"https://"+config.secureDomain+"/"+config.secureString+"#signup"};function AlertManager(){this.waitTime=5E3;this.animationSpeed=500;this.currentNotifications=[];this.waitTimer=this.container=null;this.containerHeight=this.shadowfaxHeight=0;this.alert=function(b){if(typeof b=="string")b=createText(b);this.currentNotifications.push(b);this.show()};this.basicResultAlert=function(b){b.length&&b[0]&&b[0].result&&this.alert(b[0].result)};this.show=function(){if(!($j("#notification").length||!this.currentNotifications.length)){this.container||this.init();var b=this.currentNotifications.splice(0,
1);this.container.find("div").empty().append($j(b)[0]);$j("body").append(this.container);this.container.find("a").click(function(){alertManager.hide()});this.container.css("bottom",this.shadowfaxHeight-(this.containerHeight=this.container.outerHeight())+"px");this.container.animate({bottom:this.shadowfaxHeight+"px"},this.animationSpeed,function(){alertManager.wait()})}};this.wait=function(){this.waitTimer=setTimeout("alertManager.hide();",this.waitTime)};this.hide=function(){this.waitTimer&&clearTimeout(this.waitTimer);
this.container.animate({bottom:this.shadowfaxHeight-this.containerHeight+"px"},this.animationSpeed,function(){$j("#notification").remove();alertManager.show()})};this.init=function(){this.container=$j('<div id="notification"><a href="'+getDefaultLink()+'" id="close"></a><div></div></div>');this.shadowfaxHeight=$j("#shadowfax").outerHeight()}}var alertManager=new AlertManager;function getArtistList(){if(currentPage=="artists")return artistPage.artistList;else if(currentPage=="catalog")return catalogPage.myArtistList}function getAlbumList(){return currentPage=="albums"?albumPage.albumList:currentPage=="catalog"?catalogPage.myAlbumList:currentPage=="label"?labelPage.myAlbumList:{enableFastTagging:function(){},disableFastTagging:function(){}}}
function getLabelList(){if(currentPage=="labels")return labelListPage.labelList;else if(currentPage=="catalog")return catalogPage.myLabelList}function getRepList(){if(currentPage=="reps")return repPage.repList}function getUserList(){if(currentPage=="profile")return profilePage.userList}function getCatalogList(){if(currentPage=="catalogs")return catalogPage.catalogList}function getMultiFormatList(){if(currentPage=="profile")return profilePage.downloadsList}
function getProjectList(){if(currentPage=="project")return projectPage.projectList}
function getTrackList(){var b=[];if(currentPage=="explorer")b[0]=explorer.trackList;else if(currentPage=="details"){b[0]=detailsPage.similarTrackList;b[1]=detailsPage.alternateTrackList}else if(currentPage=="catalog")b[0]=catalogPage.getTrackList();else if(currentPage=="home")b[0]=home.genreTrackList;else if(currentPage=="requests")b=requestPage.trackLists;else if(currentPage=="project")b[0]=projectPage.getTrackList();else if(currentPage=="label")b[0]=labelPage.getTrackList();cleanExpandedTrackLists();
if(expandedTrackLists.length)for(var f=0;f<expandedTrackLists.length;f++)b[b.length]=expandedTrackLists[f];b.length||(b[0]=new LeftNavTrackList);return new MetaTrackList(b)}function reloadTrackList(b){if(currentPage=="explorer"||currentPage=="profile"&&(profilePage.page=="history"||profilePage.page=="downloads"||profilePage.page=="favorites")||currentPage=="catalog"&&(catalogPage.page=="tracks"||catalogPage.page=="results")||currentPage=="label")setHash(reloadTrackListHash(b))}
function reloadArtistList(){if(currentPage=="artists"||currentPage=="catalog"&&catalogPage.page=="artists")setHash(reloadTrackListHash())}function reloadAlbumList(){if(currentPage=="albums"||currentPage=="catalog"&&catalogPage.page=="albums")setHash(reloadTrackListHash())}function reloadCatalogList(){currentPage=="catalogs"&&setHash(reloadTrackListHash())}function reloadLabelList(){if(currentPage=="labels"||currentPage=="catalog"&&catalogPage.page=="labels")setHash(reloadTrackListHash())}
function reloadRepList(){currentPage=="reps"&&setHash(reloadTrackListHash())}function reloadGenericList(b){if(currentPage==b+"s"||currentPage=="catalog"&&catalogPage.page==b+"s")setHash(reloadTrackListHash())}function reloadTrackListHash(b){var f=paramsToVars(hashToParams(currentHash)),j=paramsToVars(leftNav.getParams(false));for(var k in j)if(j[k]=="")delete f[k];else f[k]=j[k];f.pg&&b&&delete f.pg;f.override&&delete f.override;return currentPage+varsToHash(f)}
function ListColumn(b,f,j){this.name=b;this.displayColumns=f;this.sortable=j}
function TrackListConfig(b){if(b){this.allowBlock=b.allowBlock;this.allowList=b.allowList;this.bankKey=b.bankKey;this.callback=b.callback;this.callbackActual=b.callbackActual;this.columnList=b.columnList;this.defaultResultsPerPage=b.defaultResultsPerPage;this.headerBackground=b.headerBackground;this.headercolor=b.headerColor;this.pagination=b.pagination;this.resultCountChanging=b.resultCountChanging;this.resultsPerPageCookie=b.resultsPerPageCookie;this.sortable=b.sortable;this.stripe=b.stripe;this.useCache=
b.useCache;this.useFilters=b.useFilters}else{this.allowBlock=false;this.allowList=true;this.callback=this.bankKey="";this.callbackActual=null;this.columnList=[];this.defaultResultsPerPage=15;this.headerBackground=true;this.headerColor="";this.stripe=this.sortable=this.resultsPerPageCookie=this.resultCountChanging=this.pagination=true;this.useFilters=this.useCache=false}}
function getStandardColumnList(){for(var b=[],f=0;f<config.trackColumnList.length;f++){var j=config.trackColumnList[f];b.push(new ListColumn(j.title,j.columns.slice(0),j.sortable))}return b}
function getAlternateTrackListConfig(){var b=new TrackListConfig;b.columnList=[new ListColumn("play",["play","download","email"]),new ListColumn("title",["title"]),new ListColumn("length",["length"]),new ListColumn("plays",["plays"])];b.allowBlock=false;b.bankKey="alternate_track_list_";b.defaultResultsPerPage=50;b.pagination=false;b.resultCountChanging=false;b.resultsPerPageCookie=false;b.stripe=false;b.sortable=false;b.useCache=false;b.useFilters=false;return b}
function getStandardAlbumColumnList(){return config.singleCatalog?config.showLabels?[new ListColumn("interactions",["expand-album","download","email"]),new ListColumn("name",["album avatar","name"]),new ListColumn("label",["label avatar","label"]),new ListColumn("track count",["count"]),new ListColumn("plays",["plays"])]:[new ListColumn("interactions",["expand-album","download","email"]),new ListColumn("name",["album avatar","name"]),new ListColumn("track count",["count"]),new ListColumn("plays",
["plays"])]:[new ListColumn("interactions",["expand-album","download","email"]),new ListColumn("name",["album avatar","name"]),new ListColumn("music rep",["avatar","rep"]),new ListColumn("track count",["count"]),new ListColumn("plays",["plays"])]}
function getStandardArtistColumnList(){return config.singleCatalog?config.showLabels?[new ListColumn("name",["album avatar","name"]),new ListColumn("label",["label avatar","label"]),new ListColumn("track count",["count"]),new ListColumn("plays",["plays"])]:[new ListColumn("name",["album avatar","name"]),new ListColumn("track count",["count"]),new ListColumn("plays",["plays"])]:[new ListColumn("name",["album avatar","name"]),new ListColumn("music rep",["avatar","rep"]),new ListColumn("track count",
["count"]),new ListColumn("plays",["plays"])]}
function getStandardLabelColumnList(){return config.singleCatalog?[new ListColumn("name",["label avatar","name"]),new ListColumn("track count",["count"]),new ListColumn("album count",["album count"]),new ListColumn("artist count",["artist count"]),new ListColumn("plays",["plays"])]:[new ListColumn("name",["label avatar","name"]),new ListColumn("music rep",["avatar","rep"]),new ListColumn("track count",["count"]),new ListColumn("album count",["album count"]),new ListColumn("artist count",["artist count"]),
new ListColumn("plays",["plays"])]}function ListConfig(){this.allowList=this.allowBlock=true;this.bankKey="default";this.callback="";this.callbackActual=null;this.columnList=[];this.defaultResultsPerPage=15;this.defaultView="list";this.headerBackground=true;this.linkFunc=function(){};this.listFunc=function(){};this.listType="";this.stripe=this.sortable=this.resultsPerPageCookie=this.resultCountChanging=this.pagination=true;this.useFilters=false}
function AlbumList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.defaultView="block";this.conf.linkFunc=getAlbumLink;this.conf.listFunc=getAlbumList;this.conf.listType="album"}AlbumList.prototype=new GenericList;function ArtistList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.defaultView="list";this.conf.linkFunc=getArtistLink;this.conf.listFunc=getArtistList;this.conf.listType="artist"}ArtistList.prototype=new GenericList;
function LabelList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.defaultView="block";this.conf.linkFunc=getLabelLink;this.conf.listFunc=getLabelList;this.conf.listType="label"}LabelList.prototype=new GenericList;function CatalogList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.defaultView="block";this.conf.linkFunc=getCatalogLink;this.conf.listFunc=getCatalogList;this.conf.listType="catalog"}CatalogList.prototype=new GenericList;
function UserList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.allowBlock=false;this.conf.defaultView="list";this.conf.linkFunc=getProfileLink;this.conf.listFunc=getUserList;this.conf.listType="user"}UserList.prototype=new GenericList;
function MultiFormatList(b){this.conf=b;this.resultsPerPage=b.defaultResultsPerPage;this.conf.allowBlock=false;this.conf.defaultView="list";this.conf.linkFunc=getProfileLink;this.conf.listFunc=getMultiFormatList;this.conf.listType="multiformat";this.conf.headerBackground=false}MultiFormatList.prototype=new GenericList;
function GenericList(){this.allowEdit=false;this.editBox=this.container=this.conf=null;this.expandedShowing=this.editOn=false;this.filterControl=null;this.lastRequest=0;this.lastRequestString="";this.view="list";this.setEdit=function(b){this.allowEdit=b};this.showCover=function(b){var f=get("list_"+this.conf.bankKey);this.hideCover();$j(this.container).addClass("covered");var j=createDiv("list_cover");j.style.width=f.offsetWidth+"px";j.style.height=f.offsetHeight+"px";var k=createDiv("track_list_cover_loader");
k.style.width=j.style.width;k.style.height="60px";showLoader(k,"",getLoadingMessage(this.lastRequestString,b,"Loading "+this.conf.listType+"s..."));f.appendChild(j);f.appendChild(k)};this.hideCover=function(){setTimeout("$j('#list_cover, #track_list_cover_loader', $j('#list_"+this.conf.bankKey+"').removeClass('covered')).remove();",100)};this.loadPage=function(b){this.expandedShowing=false;this.loadResultsPerPage();this.lastRequest++;var f=reloadTrackListHash();this.showCover(b);if(this.conf.useFilters&&
f&&currentHash!=f){reloadGenericList(this.conf.listType);b=hashToParams(f)}if(!b||!b.match(/&?show=[0-9]+/))b=(b?b:"")+"&show="+this.resultsPerPage;this.lastRequestString="p="+this.conf.listType+"_info"+(b!=undefined?"&"+b.replace("p="+this.conf.listType+"_info&",""):"");if(!this.conf.useCache||!(result=requestCache.get(this.lastRequestString)))ajax(this.lastRequestString+"&req="+this.lastRequest,this.conf.callback);else{result[0].req=this.lastRequest;this.conf.callbackActual(result)}};this.isLastRequest=
function(b){return!(this.lastRequest&&this.lastRequest!=b[0].req)};this.addItem=function(b){trackBank.add(b,this.conf.bankKey);if(this.view=="block"){if(this.blocks){var f=$j('<div id="item_'+b.id+'" class="list_block '+this.conf.listType+'_block"></div>');switch(this.conf.listType){case "catalog":f.html('<a href="'+getCatalogLink(b.id)+'" class="avatar"><img src="'+b.image+'"/></a><div class="info"><a href="'+getCatalogLink(b.id)+'">'+b.name+"</a>Tracks: "+numberFormat(b.track_count)+(b.label_count>
1?"<br/>Labels: "+numberFormat(b.label_count):"")+"<br/>Albums: "+numberFormat(b.album_count)+"<br/>Artists: "+numberFormat(b.artist_count)+"</div>");break;case "label":f.html('<a href="'+getLabelLink(b.id,b.catalog.id)+'" class="avatar"><img src="'+b.av+'"/></a><div class="info"><a href="'+getLabelLink(b.id)+'">'+b.name+"</a>Tracks: "+numberFormat(b.count)+"<br/>Albums: "+numberFormat(b.album_count)+"<br/>Artists: "+numberFormat(b.artist_count)+"</div>");break;case "album":f.html('<a href="'+getAlbumLink(b.id,
b.catalog.id)+'" class="avatar"><img src="'+b.av+'"/></a><div class="info"><a href="'+getAlbumLink(b.id,b.catalog.id)+'">'+b.name+"</a>Tracks: "+numberFormat(b.count)+"</div>");f.data("album",b);var j=$j('<div class="buttons"><div class="button_background"></div><div class="button_container"></div></div>'),k=j.find(".button_container");k.append(generateDownloadButton(this.conf.listType,b));k.append(generateEmailButton(this.conf.listType,b));if(this.editOn){j.addClass("tall");k.append(generateFeatureButton(b.id,
b.label.id,b.catalog.id,this.conf.listType,b.featured)).append(k=createA("","edit_button","javascript:;",function(){this.list.showEdit(this.itemInfo);return false}));k.list=this;k.itemInfo=b;k.appendChild(createImg("","","/images/shared/edit.png"))}j.hide();f.find(".avatar").hover(function(){$j(this).find(".buttons").stop(true,false).css("height","").slideDown(250)},function(){$j(this).find(".buttons").stop(true,false).slideUp(250)}).append(j);break;case "artist":f.html('<a href="'+getArtistLink(b.id,
b.catalog.id)+'" class="avatar"><img src="'+b.av+'"/></a><div class="info"><a href="'+getArtistLink(b.id,b.catalog.id)+'">'+b.name+"</a>Tracks: "+numberFormat(b.count)+"</div>");break}this.blocks.append(f)}}else if(this.table){f=this.conf.columnList;j=b.id;for(var n=createElement("tr",""+j+"_row"),p=0;p<f.length;p++)for(var q=0;q<f[p].displayColumns.length;q++){var r=null,u=f[p].displayColumns[q];if(this.conf.listType=="catalog")b.catalog={id:b.id,image:b.image,name:b.name};else if(this.conf.listType==
"label")b.label={id:b.id,image:b.av,name:b.name};else this.conf.listType=="album"&&$j(n).data("album",b);switch(u){case "name":r=createElement("td",""+j+"_name","list_name_column",createA("","",this.conf.linkFunc(b.id,b.catalog.id),"","",b.name));if(this.editOn){if(g=get("name_column_"+this.conf.bankKey))g.colSpan=f[p].displayColumns.length+2;n.appendChild(r);r=createElement("td","","edit_button_column",generateFeatureButton(b.id,b.label.id,b.catalog.id,this.conf.listType,b.featured));n.appendChild(r);
r=createElement("td",""+j+"_edit","edit_button_column",k=createA("","edit_button","javascript:;",function(){this.list.showEdit(this.itemInfo);return false}));k.list=this;k.itemInfo=b;k.appendChild(createImg("","","/images/shared/edit.png"))}else if(g=get("name_column_"+this.conf.bankKey))g.colSpan=f[p].displayColumns.length;break;case "multi_name":if(b.link)k=createA("","",b.link,"","",b.name);else if(b.type.name=="album")k=createA("","",getAlbumLink(b.type.id,b.type.user_id),"","",b.name);else if(b.type.name==
"project")k=createA("","",getProjectLink(b.type.id),"","",b.name);else if(b.type.name=="tag")k=createA("","",getExplorerLink("type=tag&t="+b.type.id+"&u="+b.type.user_id),"","",b.name);else if(b.type.name=="track")k=createA("","",getTrackLink(b.type.user_id,b.type.id),"","",b.name);r=createElement("td",j+"_name","",k);break;case "rep":case "catalog":r=createElement("td",""+j+"_rep","",createA("","",getCatalogLink(b.catalog.id),"","",b.catalog.name));break;case "label":r=createElement("td",""+j+"_label",
"",createA("","",getLabelLink(b.label.id),"","",b.label.name));break;case "username":r=createElement("td","user_"+j+"_username","",createA("","",getProfileLink(b.user_id?b.user_id:b.id),"","",b.username));break;case "user avatar":k=createA("","",getProfileLink(b.user_id?b.user_id:b.id));k.appendChild(createImg("","",b.av));r=createElement("td","","user_list_avatar",createDiv("user_"+j+"_avatar","avatar_small",k));break;case "avatar":k=createA("","",getCatalogLink(b.catalog.id));k.appendChild(createImg("",
"",b.catalog.image));r=createElement("td","","list_avatar",createDiv("rep_"+j+"_avatar","avatar_small",k));break;case "image":k=createA("","",getCatalogLink(j));k.appendChild(createImg("","",b.image));r=createElement("td","","list_avatar",createDiv("catalog_"+j+"_avatar","avatar_small",k));break;case "label avatar":k=createA("","",this.conf.linkFunc(b.label.id,b.catalog.id));k.appendChild(createImg("","",b.label.image));r=createElement("td","","list_avatar",createDiv(""+j+"_avatar","avatar_small",
k));break;case "album avatar":case "artist avatar":k=createA("","",this.conf.linkFunc(b.id,b.catalog.id));k.appendChild(createImg("","",b.av));r=createElement("td","","list_avatar",createDiv(""+j+"_avatar","avatar_small",k));break;case "download":r=createElement("td","","list_option_column list_download_column",generateDownloadButton(this.conf.listType,b));break;case "email":r=createElement("td","","list_option_column list_email_column",generateEmailButton(this.conf.listType,b));break;case "format":if(b.format==
"flv"){r=createElement("td","","list_format_column");r.appendChild(generateDownloadButton("track",{id:b.type.id,can_download:1}))}else{r=createElement("td","","list_format_column",createImg("","","images/icons/"+b.format+".png"));$j("img",r).click(function(){var w=$j(this);new Downloader(w.data("type"),w.data("item"),w.data("format"))}).data("type",b.type.name).data("item",{id:b.type.id,userId:b.type.user_id}).data("format",b.format)}break;case "multi_download":r=createElement("td","","list_option_column list_download_column",
generateDownloadButton(b.type.name,{id:b.type.id,userId:b.type.user_id,tag:b.name,name:b.name}));break;case "status":r=u="";if(b.downloaded){r="Downloaded";u="downloaded"}else if(b.status=="cached"){r="Ready!";u="cached"}else if(b.status=="processing"){r="Currently bundling";u="processing"}else{r="Queued for bundling";u="queued"}$j(n).addClass(u);r=createElement("td","","list_status_column",createText(r));var v=$j('<div class="dot '+u+'"></div>');v.attr("title",b.type.name+": "+b.name);if(u=="downloaded"||
u=="cached")v.click(function(){var w=$j(this);new Downloader(w.data("type"),w.data("item"),w.data("format"))}).data("type",b.type.name).data("item",{id:b.type.id,userId:b.type.user_id}).data("format",b.format);$j(r).prepend(v);break;case "date":r=createElement("td","","list_date_column",createText(b.date));break;case "expand":r=createElement("td","","list_option_column list_alternates_column");r.innerHTML='<a href="'+getDefaultLink()+'" title="Click to show/hide tracks"><img src="images/shadowfax/up-arrow.png"/></a>';
$j("a",r).click(function(){var w=$j(this);if($j("#expanded_"+w.data("itemId")).length){w.data("list").hideTracks(w.data("itemId"),w.data("type"),this);w.find("img").attr("src","images/shadowfax/up-arrow.png")}else{w.data("list").expandTracks(w.data("itemId"),w.data("type"),this);w.find("img").attr("src","images/shadowfax/down-arrow.png")}this.blur();return false}).data("list",this).data("type",b.type).data("itemId",b.id);break;case "expand-album":r=createElement("td","","list_option_column list_alternates_column");
r.innerHTML='<a href="'+getDefaultLink()+'" title="Click to show/hide tracks"><img src="images/shared/album_small.png"/></a>';$j("a",r).click(function(){var w=$j(this);$j("#expanded_"+w.data("itemId")).length?w.data("list").hideTracks(w.data("itemId"),w.data("type"),this):w.data("list").expandTracks(w.data("itemId"),w.data("type"),this);this.blur();return false}).data("list",this).data("type",{name:"album",id:b.id}).data("itemId",b.id);break;case "type":r=createElement("td","","list_type_column");
r.innerHTML='<img src="images/shared/'+b.type.name+'.png" title="Click to show/hide tracks"/>';$j("img",r).click(function(){var w=$j(this);if($j("#expanded_"+w.data("itemId")).length){w.data("list").hideTracks(w.data("itemId"),w.data("type"),this);w.parent().parent().find("td.list_alternates_column img").attr("src","images/shadowfax/up-arrow.png")}else{w.data("list").expandTracks(w.data("itemId"),w.data("type"),this);w.parent().parent().find("td.list_alternates_column img").attr("src","images/shadowfax/down-arrow.png")}this.blur();
return false}).data("list",this).data("type",b.type).data("itemId",b.id);break;case "history_type":r=createElement("td",""+j+"_"+u,"list_history_type",createText(b.history_type));break;case "comments":case "count":case "downloads":case "favorites":case "licenses":case "plays":case "track count":case "artist count":case "album count":u=u.replace(" ","_");r=createElement("td",""+j+"_"+u,"list_count_column",createText(numberFormat(b[u])));break}r!=null&&n.appendChild(r)}this.table.appendChild(n)}};this.expandTracks=
function(b,f){console.log("expanding tracks for "+b);var j=$j("#"+b+"_row"),k=$j("#"+b+"_row td").length,n=$j('<tr class="'+j.get(0).className+' list_hide_arrows" id="expanded_'+b+'"></tr>'),p=new TrackListConfig;p.columnList=getStandardColumnList();var q=expandedTrackLists.length;p.callback="if (expandedTrackLists.length <= "+q+") expandedTrackLists["+q+"] = { manager:{ setTracks:function() { expandedTrackLists.splice("+q+", 1); } } }; expandedTrackLists["+q+"].manager.setTracks";p.bankKey="profile_downloads_"+
b;p.defaultResultsPerPage=10;p.resultCountChanging=false;p.resultsPerPageCookie=false;p.pagination=true;p.sortable=false;b=f.name=="project"?new ProjectList(p):new TrackList(p);expandedTrackLists[expandedTrackLists.length]=b;n.html('<td colspan="'+k+'"><div id="'+(f.name=="project"?"project":"track")+"_list_"+p.bankKey+'" class="track_list"></div></td>');j.after(n);b.generatePage($j("div",n).get(0));b.manager={type:f,trackList:b,rpp:p.defaultResultsPerPage,first:true,setTracks:function(r){(function(u){function v(w){u.loadPage(w);
return false}u.trackList.setData(r,function(){return getDefaultLink()},v);if(u.first)u.first=false})(this)},loadPage:function(r){if(this.type.name=="album")this.trackList.loadPage("b="+this.type.id+"&show="+this.rpp+"&pg="+r);else if(this.type.name=="project")this.trackList.loadPage("projectId="+this.type.id+"&show="+this.rpp+"&pg="+r+"&forwardOverride=1");else if(this.type.name=="tag")this.trackList.loadPage("type=tag&t="+this.type.id+"&u="+this.type.user_id+"&show="+this.rpp+"&pg="+r);else this.type.name==
"track"&&this.trackList.loadPage("ids[]="+this.type.id+"&show="+this.rpp+"&pg="+r)}};b.manager.loadPage(0)};this.hideTracks=function(b){$j("#expanded_"+b).remove();cleanExpandedTrackLists()};this.setData=function(b,f){if(!get("list_"+this.conf.bankKey)){console.log("couldn't find list_"+this.conf.bankKey);return false}if(this.isLastRequest(b))this.conf.useCache&&requestCache.set(this.lastRequestString,b);else return false;if(config.secure)this.editOn=this.allowEdit;else if(this.allowEdit){var j=get("view_bar_edit_"+
this.conf.bankKey);removeChildren(j);j.appendChild(createElement("em","","",createText("This page is editable on "+config.name+" Secure")));$j(j).append(getSecureA());j.style.display="block"}if(this.view=="block")this.blocks=$j("#list_blocks",this.container).html("");else{(j=get("list_"+this.conf.bankKey).getElementsByTagName("tbody"))||(j=get("list_"+this.conf.bankKey).getElementsByTagName("table"));this.table=j=j[0];$j("tr:not(:first)",j).remove();var k=b[0].pageVars;for(j=0;j<this.conf.columnList.length;j++){var n=
this.conf.columnList[j].name;switch(n){case "music rep":case "rep":if(this.conf.sortable)get("header_rep_"+this.conf.bankKey).href=f(k+"0&no=rep");get("header_rep_"+this.conf.bankKey).innerHTML="Catalog";break;case "interactions":var p=n.replace(" ","_").replace("music_","");get("header_"+p+"_"+this.conf.bankKey).innerHTML=n;break;default:p=n.replace(" ","_").replace("music_","");if(this.conf.sortable)get("header_"+p+"_"+this.conf.bankKey).href=f(k+"0&no="+n);get("header_"+p+"_"+this.conf.bankKey).innerHTML=
n;break}}j=paramsToVars(k);if(j.o)if(n=get("header_"+j.o.replace(" ","_")+"_"+this.conf.bankKey))n.appendChild(createImg("","","images/explorer/"+(j.d=="a"?"up":"down")+"ArrowSmall.gif"))}if(b.length<2)if(this.view=="block")this.blocks&&this.blocks.append(createDiv("","list_block",createH2("No "+this.conf.listType+"s found!")));else{for(n=j=0;n<this.conf.columnList.length;n++)j+=this.conf.columnList[n].displayColumns.length;$j(this.table).append('<tr id="track_no_row"><td id="track_col" colspan="'+
j+'">'+(this.conf.listType=="multiformat"?"Nothing found!":"No "+this.conf.listType+"s found!")+"</td></tr")}else{for(j=1;j<b.length;j++)this.addItem(b[j]);this.view=="block"&&this.blocks.append(createDiv("","clr"))}this.view=="list"&&this.conf.stripe&&stripe(this.container);if(this.conf.pagination){k=b[0].pageVars;div=get("list_page_numbers",this.container);removeChildren(div);n=Math.ceil(b[0].count/b[0].perPage);p=b[0].page;if(n<2)div.appendChild(createText("Showing all results"));else{if(p>0){div.appendChild(createA("list_page_prev",
"",f(k+(p-1)),"","","<< Prev"));div.appendChild(createA("","",f(k+0),"","",1));div.appendChild(createSpan("","",createText("...")))}div.appendChild(j=createElement("input","list_page_selection"));j.type="text";j.value=p+1;j.pageVars=k;j.onkeydown=function(r){code=r?r.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false};j.onkeyup=function(r){code=r?r.keyCode:window.event.keyCode;code==13&&this.value.match(/^[0-9]+$/)&&
setHash(f(this.pageVars+(this.value-1)))};if(p<n-1){div.appendChild(createSpan("","",createText("...")));div.appendChild(createA("","",f(k+(n-1)),"","",n));div.appendChild(createA("list_page_next","",f(k+(p+1)),"","","Next >>"))}}}if(this.conf.resultCountChanging){div=get("list_result_count",this.container);removeChildren(div);div.appendChild(createSpan("","",createText("Results per page: ")));n=[5,10,15,25,50,-1];p=false;for(j=0;j<n.length;j++){var q=n[j];this.resultsPerPage=b[0].perPage;if(!p&&
(this.resultsPerPage==q||q>this.resultsPerPage||q==-1)){p=true;div.appendChild(input=createElement("input","result_count_selection"));input.type="text";input.value=this.resultsPerPage;input.pageVars=k;input.onkeydown=function(r){code=r?r.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false};input.onkeyup=function(r){code=r?r.keyCode:window.event.keyCode;if(code==13&&this.value.match(/^[0-9]+$/)){setHash(f(k.replace(/\&show\=([0-9]+)?/ig,
"")+"0&show="+this.value));this.conf.listFunc().setResultsPerPage(this.value)}}}this.resultsPerPage!=q&&q!=-1&&$j(div).append($j('<a href="'+f(k.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+q)+'">'+q+"</a>").click(function(){var r=$j(this);r.data("conf").listFunc().setResultsPerPage(r.data("count"))}).data("conf",this.conf).data("count",q))}}this.hideCover();projector.inQuickProjectMode()&&this.enableFastTagging();return true};this.generatePage=function(b){expList=b;$j(b).addClass(this.conf.listType+
"_list");this.container=b;if(!config.secure&&this.allowEdit)b.appendChild(viewBar=createDiv("view_bar_edit_"+this.conf.bankKey,"view_bar"));this.view=this.conf.defaultView;b=user.getOption(this.conf.listType+"_list_view");this.view=b=="block"&&this.conf.allowBlock?"block":b=="list"&&this.conf.allowList?"list":this.conf.defaultView;if(this.view=="block")expList.appendChild(createDiv("list_blocks"));else{b=createElement("table","table_"+this.conf.bankKey);b.appendChild(d.createElement("tbody"));b.cellSpacing=
0;for(var f=b.childNodes[0],j=createElement("tr","header_tr"),k=false,n=0;n<this.conf.columnList.length;n++){var p=this.conf.columnList[n].name.replace(" ","_").replace("music_","");j.appendChild(th=createTh(p+"_column_"+this.conf.bankKey,this.conf.headerBackground?"header_"+p.replace(" ","_"):"list_no_bg header_"+p.replace(" ","_"),this.conf.sortable&&p!="play"&&p!="interactions"?createA("header_"+p+"_"+this.conf.bankKey,"","#","","",""):createSpan("header_"+p+"_"+this.conf.bankKey)));th.colSpan=
this.conf.columnList[n].displayColumns.length;for(p=0;p<this.conf.columnList[n].displayColumns.length&&!k;p++)if(this.conf.columnList[n].displayColumns[p]=="expand")k=true;if(this.conf.headerBackground&&n==0)th.className+=" list_left"}th.className+=" list_right";f.appendChild(j);b.appendChild(f);expList.appendChild(b)}this.conf.resultCountChanging&&expList.appendChild(createDiv("list_result_count",""));if(this.conf.allowBlock&&this.conf.allowList){expList.appendChild(div=createDiv("track_list_view_changing"));
div.appendChild(createSpan("","",createText("View: ")));div.appendChild(img=createImg("list_view","faux_button",this.view=="list"?"/images/explorer/view_list_down.gif":"/images/explorer/view_list_up.gif"));img.onclick=function(){this.list.setView("list")};img.list=this;div.appendChild(img=createImg("block_view","faux_button",this.view=="block"?"/images/explorer/view_block_down.gif":"/images/explorer/view_block_up.gif"));img.onclick=function(){this.list.setView("block")};img.list=this}this.conf.pagination&&
expList.appendChild(createDiv("list_page_numbers",""));expList.appendChild(createDiv("","clr"))};this.setView=function(b){console.log("setting view to "+b);if(b!=this.view)if(b=="block"&&this.conf.allowBlock||b=="list"&&this.conf.allowList){user.setOption(this.conf.listType+"_list_view",b);currentPage="";reloadPage()}};this.setResultsPerPage=function(b){this.resultsPerPage=b};this.saveResultsPerPage=function(){if(this.conf.resultsPerPageCookie)cookies.set("sa_rpp"+(user.logged?user.userData.id:0),
this.resultsPerPage,604800)};this.loadResultsPerPage=function(){if(this.conf.resultsPerPageCookie)if(this.resultsPerPage=cookies.get("sa_rpp"+(user.logged?user.userData.id:0)))this.saveResultsPerPage();else this.resultsPerPage=15};this.turnEdit=function(b){this.editOn=b;this.loadPage(this.lastRequestString)};this.showEdit=function(b){this.editBox&&this.hideEdit();var f=createDiv("name_thumb_box","");f.appendChild(createH2("Edit "+this.conf.listType));var j=createDiv("","section_div",createSpan("",
"",createText("Name:")));j.appendChild(inputBox=createElement("input","",""));inputBox.type="text";inputBox.value=b.name;var k=inputBox;j.appendChild(createDiv("","clr"));f.appendChild(j);j=createDiv("","section_div",createSpan("","",createText("Image:")));inputBox=d.createElement("input");inputBox.type="text";inputBox.id="thumb_upload_input";inputBox.value="Browse to change image";inputBox.onkeydown=function(){return false};j.appendChild(inputBox);j.appendChild(browse=createButton("Browse","thumb_upload_browse",
"file_upload_container","javascript:;"));j.appendChild(createDiv("","clr"));f.appendChild(j);f.appendChild(createDiv("edit_errors"));f.appendChild(createDiv("edit_message"));f.appendChild(a=createButton("Save","input_box_success","","javascript:;",function(){this.list.saveEdit();return false}));a.list=this;f.appendChild(a=createButton("Cancel","input_box_cancel","","javascript:;",function(){this.list.hideEdit();return false}));a.list=this;f.appendChild(a=createA("close","","javascript:;",function(){this.list.hideEdit();
return false}));a.list=this;this.editBox=new FocusBox(f);this.editBox.nameInputBox=k;this.editBox.show();currentList=this;k.focus();this.editBox.uploader=new Uploader(browse,false,"currentList.thumbBrowseResponse",UploaderConstants.IMAGES,"currentList.thumbLoadCallback");this.editBox.datum=b};this.showEditError=function(b){var f=get("edit_errors");f.style.display="block";f.innerHTML=b;get("name_thumb_box").className="name_thumb_box_tall";get("edit_message").style.display="none"};this.saveEdit=function(){var b=
trim(this.editBox.nameInputBox.value);if(b=="")this.showEditError("Please enter a name");else{var f=this.editBox.uploader.getFiles();if(!f||!f.length||f.length!=1)ajax("u="+profilePage.currentUser+"&id="+this.editBox.datum.id+"&lId="+this.editBox.datum.label.id+"&cId="+this.editBox.datum.catalog.id+"&name="+escape(b),"currentList.editResponse","POST","p="+this.conf.listType+"_details");else{this.hideThumbButtons();this.editBox.uploader.upload("t="+this.conf.listType+"&u="+profilePage.currentUser+
"&id="+this.editBox.datum.id+"&lId="+this.editBox.datum.label.id+"&cId="+this.editBox.datum.catalog.id+"&name="+escape(b),"currentList.thumbComplete","","currentList.thumbError")}this.hideThumbButtons()}};this.editResponse=function(b){var f="Unknown error ocurred. Please try again later";if(b&&b.length&&b[0].result)f=b[0].result;alertManager.alert(createText(f));this.hideEdit();this.loadPage(this.lastRequestString)};this.hideEdit=function(){if(this.editBox){this.editBox.hide();this.editBox=null}};
this.thumbBrowseResponse=function(){var b=this.editBox.uploader.getFiles();b=!b||!b.length||b.length!=1?"Browse to change image":b[0];get("thumb_upload_input").value=b};this.thumbLoadCallback=function(){};this.hideThumbButtons=function(){get("input_box_success").style.display="none";get("input_box_cancel").style.display="none";get("edit_errors").style.display="none";var b=get("edit_message");b.style.display="block";b.innerHTML="Saving...";b.className="";get("name_thumb_box").className="name_thumb_box_tall"};
this.thumbComplete=function(){this.editResponse([{result:"Changes saved!"}])};this.thumbError=function(){get("input_box_success").style.display="";get("input_box_cancel").style.display="";this.showEditError("Unable to save. Please try again later")};this.enableFastTagging=function(){if(this.conf.listType=="album")if(!$j(".list_fast_tag_column").length)if(this.view=="block")for(var b=$j(".list_block"),f=0;f<b.length;f++){var j=$j(b[f]),k=j.data("album");j.find(".button_container").append(generateQuickProjectAlbumButton(k))}else{b=
$j("#table_"+this.conf.bankKey+" > tbody > tr");k=$j("#table_"+this.conf.bankKey+" tr th:first");k.hasClass("with_quick")||k.attr("colspan",k.attr("colspan")+1).addClass("with_quick");for(f=1;f<b.length;f++)if(k=$j(b[f]).data("album"))$j(b[f]).find(".list_option_column:last").after(createElement("td","","list_option_column quick_project_button",generateQuickProjectAlbumButton(k)));else{k=$j(b[f]).find("td:first");console.log(k.length);k.attr("colspan",k.attr("colspan")+1).addClass("with_quick")}}};
this.disableFastTagging=function(){if(this.view!="block"){var b=$j("#table_"+this.conf.bankKey+" tr th:first");b.hasClass("with_quick")&&b.attr("colspan",b.attr("colspan")-1).removeClass("with_quick");b=$j("#table_"+this.conf.bankKey+" tr td.with_quick");b.attr("colspan",b.attr("colspan")-1).removeClass("with_quick");$j("#table_"+this.conf.bankKey+" td.quick_project_button").remove()}else $j(".quick_project_button").remove()}}
function TrackList(b){this.allowEdit=false;this.conf=b;this.container=null;this.expandedShowing=this.editOn=false;this.filterControl=null;this.lastRequest=0;this.pageVars=this.lastRequestString="";this.resultsPerPage=b.defaultResultsPerPage;this.table=this.sourceLinkFunction=null;this.totalWeight=0;this.view="list";this.setEdit=function(f){this.allowEdit=f};this.showCover=function(f){if(trackList=get("track_list_"+this.conf.bankKey)){this.hideCover();$j(this.container).addClass("covered");var j=createDiv("track_list_cover");
j.style.width=trackList.offsetWidth+"px";j.style.height=trackList.offsetHeight+"px";var k=createDiv("track_list_cover_loader");k.style.width=j.style.width;k.style.height="60px";showLoader(k,"",getLoadingMessage(this.lastRequestString,f,"Loading tracks..."));trackList.appendChild(j);trackList.appendChild(k)}};this.hideCover=function(){if(trackList=get("track_list_"+this.conf.bankKey)){$j(this.container).removeClass("covered");$j("#track_list_cover, #track_list_cover_loader",$j(trackList)).remove()}};
this.loadPage=function(f){this.expandedShowing=false;this.hideExpandedActual();this.loadResultsPerPage();this.lastRequest++;leftNav.applyOverride();var j=reloadTrackListHash();this.showCover(f);if(this.conf.useFilters&&j&&currentHash!=j){reloadTrackList();f=hashToParams(j)}if(!f||!f.match(/&show=[0-9]+/))f=(f?f:"")+"&show="+this.resultsPerPage;this.lastRequestString="p=track_info"+(f!=undefined?"&"+f:"");if(!this.conf.useCache||!(result=requestCache.get(this.lastRequestString)))ajax(this.lastRequestString+
"&req="+this.lastRequest,this.conf.callback);else{result[0].req=this.lastRequest;this.conf.callbackActual(result)}};this.isLastRequest=function(f){return!(this.lastRequest&&this.lastRequest!=f[0].req)};this.enableWeight=function(f){if(this.view!="block"){this.totalWeight=f;f=get("header_tr",this.container);var j=this.conf.columnList;if(j[j.length-1].name!="relevance"){j[j.length]=new ListColumn("relevance",["weight"]);f.appendChild(th=createTh("relevance_column_"+this.conf.bankKey,this.conf.headerBackground?
"track_header_relevance":"track_list_no_bg track_header_relevance",createSpan("track_header_relevance_"+this.conf.bankKey)))}this.conf.columnList=j;f=f.getElementsByTagName("th");for(j=0;j<f.length;j++)f[j].className=f[j].className.replace("track_list_right","");f[j-1].className+=" track_list_right"}};this.disableWeight=function(){if(this.view!="block"){this.totalWeight=0;var f=get("header_tr",this.container),j=this.conf.columnList;if(j[j.length-1].name=="relevance"){j=j.splice(0,j.length-1);f.removeChild(get("relevance_column_"+
this.conf.bankKey,this.container))}this.conf.columnList=j;f=f.getElementsByTagName("th");for(j=0;j<f.length;j++)f[j].className=f[j].className.replace("track_list_right","");f[j-1].className+=" track_list_right"}};this.enableFastTagging=function(){if(this.view=="block")$j(".track_list_block .track_list_fast_tag_column").length||$j(".track_list_block #options span.button_container #email_button").each(function(){$j('<span class="button_container track_list_fast_tag_column"></span>').append(generateQuickProjectTrackButton(this.trackId)).insertAfter(this)});
else if(this.table)if(!$j(this.table).find(".track_list_fast_tag_column").length)if(!$j(this.table).find("#track_no_row").length){var f=$j(this.table).find("#header_tr .track_header_play");f.hasClass("with_quick")||f.attr("colspan",f.attr("colspan")+1).addClass("with_quick");$j(".track_list_fast_tag_column",this.table).remove();f=$j(this.table).find("tr:not(#header_tr)");for(var j=0;j<f.length;j++){var k=this.conf.columnList[0].displayColumns;if(f[j].id.indexOf("album")===0){var n=$j(f[j]).data("album");
n=createElement("td","","track_list_option_column track_list_fast_tag_column",generateQuickProjectAlbumButton(n));$j(f[j]).find(".list_"+k[k.length-1]+"_column").after(n)}else if(f[j].id.indexOf("alternates")!=-1||f[j].id.indexOf("expanded")!=-1){k=$j(this.table).find("#"+f[j].id+" > td");k.attr("colspan",k.attr("colspan")+1).addClass("with_quick")}else{$j(f[j]).find(".track_list_fast_tag_column").remove();n=f[j].id.substr(6,f[j].id.length-10);n=createElement("td","","track_list_option_column track_list_fast_tag_column",
generateQuickProjectTrackButton(n));$j(f[j]).find(".track_list_"+k[k.length-1]+"_column").after(n)}}}};this.disableFastTagging=function(){if(this.view!="block"&&this.table){var f=$j(this.table).find("#header_tr .track_header_play");f.hasClass("with_quick")&&f.attr("colspan",f.attr("colspan")-1).removeClass("with_quick");f=$j(this.table).find("td.with_quick");f.attr("colspan",f.attr("colspan")-1).removeClass("with_quick")}$j(".track_list_fast_tag_column").remove()};this.addTrack=function(f){trackBank.add(f,
this.conf.bankKey);if(this.view=="block"){if(this.blocks){var j=createDiv("track_"+f.id+"_row","track_list_block"),k='<h2><a href="'+getTrackLink(f.catalog.id,f.id)+'">'+f.title+'</a></h2><div id="inner"><div id="options" class="column"></div><div id="avatar_container">';k+=config.singleCatalog?'<a href="'+getAlbumLink(f.album.id,f.catalog.id)+'"><img src="'+f.album.image+'"/></a>':'<a href="'+getCatalogLink(f.catalog.id)+'"><img src="'+f.catalog.image+'"/></a>';k+='</div><div id="basics" class="column">'+
(config.singleCatalog?"":'<div><h4>Catalog:</h4><span><a href="'+getCatalogLink(f.catalog.id)+'">'+f.catalog.name+"</a></span></div>")+(config.showLabels||!config.singleCatalog?'<div><h4>Label:</h4><span><a href="'+getLabelLink(f.label.id)+'">'+f.label.name+"</a></span></div>":"")+'<div><h4>Album:</h4><span><a href="'+getAlbumLink(f.album.id,f.catalog.id)+'">'+f.album.name+'</a></span></div><div><h4>Artist:</h4><span><a href="'+getArtistLink(f.artist.id,f.catalog.id)+'">'+f.artist.name+"</a></span></div>"+
(f.composer.id?'<div><h4>Composer:</h4><span><a href="'+getComposerLink(f.composer.id,f.catalog.id)+'">'+f.composer.name+"</a></span></div>":"")+(f.publisher.id?'<div><h4>Publisher:</h4><span><a href="'+getPublisherLink(f.publisher.id,f.catalog.id)+'">'+f.publisher.name+"</a></span></div>":"")+'</div><div id="details" class="column">';for(var n=false,p=0;p<f.custom_fields.length;p++){var q=f.custom_fields[p];if(q.name=="Genre"){k+='<div><h4>Genre:</h4><span><a href="'+getCustomLink(q.id,q.value,q.value_id)+
'">'+q.value+"</a></span></div>";n=true;break}}n||(k+='<div><h4>Genre:</h4><span><a href="'+getGenreLink(f.genre.id)+'">'+f.genre.name+"</a></span></div>");k+="<div><h4>Length:</h4><span>"+f.length+"</span></div>"+(f.tempo.id!=6?'<div><h4>Tempo:</h4><span><a href="'+getTempoLink(f.tempo.id)+'">'+f.tempo.name+"</a></span></div>":"")+'<div><h4>Cue Type:</h4><span><a href="'+getCueTypeLink(f.cue_type.id)+'">'+f.cue_type.name+"</a></span></div>"+(f.key.id?"<div><h4>Key:</h4><span>"+f.key.name+"</span></div>":
"")+"<div><h4>Style:</h4><span>";if(f.styles.length){n="";for(p=0;p<f.styles.length;p++)n+='<a href="'+getExplorerLink("s="+escape(f.styles[p]))+'">'+f.styles[p]+"</a>, ";k+=n.length?n.substring(0,n.length-2):"None specified"}else k+="None specified";k+="</span></div><div><h4>Mood:</h4><span>";if(f.moods.length){n="";for(p=0;p<f.moods.length;p++)n+='<a href="'+getExplorerLink("s="+escape(f.moods[p]))+'">'+f.moods[p]+"</a>, ";k+=n.length?n.substring(0,n.length-2):"None specified"}else k+="None specified";
k+="</span></div>";k+='</div><div id="description"><h4>Description:</h4><span>'+(f.description?f.description:"None provided")+'</span></div><div id="stats"><div><h4>Plays:</h4><span>'+f.plays+"</span></div><div><h4>Downloads:</h4><span>"+f.downloads+"</span></div><div><h4>Projects:</h4><span>"+f.favorites+"</span></div>"+(config.showRatings?'<div id="rating_section"><h4>Rating:</h4><span id="rating"></span></div>':"")+"<div><h4>Added:</h4><span>"+f.date+'</span></div><div class="clr"></div></div></div>';
j.innerHTML=k;this.blocks.appendChild(j);if(config.showRatings){k=get("rating",j);n=f.rated!=undefined&&f.rated!=null&&f.rated!=-1;k.appendChild(rat=new Rater("tracks",f.id,n?f.rated:f.rating.rating,n,function(){}))}j=get("options",j);j.appendChild(generatePlayButton(f.id,"track_list_"+this.conf.bankKey));j.appendChild(generateDownloadButton("track",f));j.appendChild(createSpan("","button_container",img=createImg("email_button","faux_button","images/shared/email-16.png")));j.appendChild(createDiv("",
"clr"));img.onclick=function(){new Emailer("track",this.trackId);return false};img.trackId=f.id;j.appendChild(createA("","",getTrackLink(f.catalog.id,f.id,"license"),"","","License"));j.appendChild(createA("","",getTrackLink(f.catalog.id,f.id),"","","Details"))}}else if(this.table){j=this.conf.columnList;k=f.id;n=createElement("tr","track_"+k+"_row");for(p=0;p<j.length;p++)for(q=0;q<j[p].displayColumns.length;q++){var r=null,u=j[p].displayColumns[q];switch(u){case "play":r=createElement("td","","track_list_play_column",
generatePlayButton(k,"track_list_"+this.conf.bankKey));break;case "expand":img=createImg("","","images/explorer/expand.png");img.name=k;img.trackList=this;img.onclick=function(){this.trackList.swapExpanded(this.name,this)};img.title="Click to show/hide expanded info";r=createElement("td","","track_list_option_column",img);break;case "tag":r=createElement("td","","track_list_option_column track_list_favorite_column",generateTagButton(k,f.tagged));break;case "download":r=createElement("td","","track_list_option_column track_list_download_column",
generateDownloadButton("track",f));break;case "email":r=createElement("td","","track_list_option_column track_list_email_column",generateEmailButton("track",f));break;case "alternates":if(f.alternates&&f.alternates.length){r=createElement("td","","track_list_option_column track_list_alternates_column");r.innerHTML='<a href="'+getTrackLink(f.artist.id,f.id)+'" title="Click to see alternate versions of this track">+'+f.alternates.length+"</a>";$j("a",r).click(function(){$j(this).data("trackList").showAlternates($j(this).data("track"),
this);this.blur();return false}).data("trackList",this).data("track",f)}else r=createElement("td","","empty");break;case "title":r=createElement("td","","",v=createA("track_"+k+"_title","",getTrackLink(f.catalog.id,k)));v.innerHTML=f.title;v.onmouseover=function(){if(this.trackList.hideTimer){clearTimeout(this.trackList.hideTimer);this.trackList.hideTimer=null;this.trackList.currentExpandedTrack!=this.trackId&&this.trackList.startExpandedTimer(this.trackId,this)}else this.trackList.startExpandedTimer(this.trackId,
this)};v.onmouseout=function(){this.trackList.stopExpandedTimer();currentTrackList=this.trackList;this.trackList.hideTimer=setTimeout("currentTrackList.hideTimer = null; currentTrackList.hideExpandedActual();",500)};v.trackId=k;v.trackList=this;if(this.editOn){if(g=get("title_column_"+this.conf.bankKey))g.colSpan=j[p].displayColumns.length+1;n.appendChild(r);r=createElement("td","","edit_button_column",generateFeatureButton(f.id,f.label.id,f.catalog.id,"track",f.featured));n.appendChild(r)}else if(g=
get("title_column_"+this.conf.bankKey))g.colSpan=j[p].displayColumns.length;break;case "avatar":case "catalog_avatar":var v=createA("","",getCatalogLink(f.catalog.id));v.appendChild(createImg("","",f.catalog.image));v.title=f.catalog.name;r=createElement("td","","track_list_avatar_column",createDiv("track_"+k+"_avatar","avatar_small",v));r.width="29";break;case "label_avatar":v=createA("","",getLabelLink(f.label.id));v.appendChild(createImg("","",f.label.image));v.title=f.label.name;r=createElement("td",
"","track_list_avatar_column",createDiv("track_"+k+"_avatar","avatar_small",v));r.width="29";break;case "album_avatar":v=createA("","",getAlbumLink(f.album.id));v.appendChild(createImg("","",f.album.image));v.title=f.album.name;r=createElement("td","","track_list_avatar_column",createDiv("track_"+k+"_avatar","avatar_small",v));r.width="29";break;case "artist_avatar":case "artist-composer_avatar":v=createA("","",getArtistLink(f.artist.id));v.appendChild(createImg("","",f.artist.image));v.title=f.artist.name;
r=createElement("td","","track_list_avatar_column",createDiv("track_"+k+"_avatar","avatar_small",v));r.width="29";break;case "rep":case "catalog":case "label":r=createElement("td","track_"+k+"_rep","",createA("","",getLabelLink(f.label.id,f.catalog.id),"","",f.label.name));break;case "artist-composer":if(f.cue_type.id==2&&f.composer.id){r=(link=getComposerLink(f.composer.id,f.catalog.id))?createElement("td","","",v=createA("track_"+k+"_artist-composer","",link)):createElement("td","","",v=createSpan("track_"+
k+"_artist-composer",""));v.innerHTML=shortenArtistName(f.composer.name)}else{r=(link=getArtistLink(f.artist.id,f.catalog.id))?createElement("td","","",v=createA("track_"+k+"_artist-composer","",link)):createElement("td","","",v=createSpan("track_"+k+"_artist-composer",""));v.innerHTML=shortenArtistName(f.artist.name)}break;case "artist":r=(link=getArtistLink(f.artist.id,f.catalog.id))?createElement("td","","",v=createA("track_"+k+"_artist","",link)):createElement("td","","",v=createSpan("track_"+
k+"_artist",""));v.innerHTML=shortenArtistName(f.artist.name);break;case "composer":r=(link=getComposerLink(f.composer.id,f.catalog.id))?createElement("td","","",v=createA("track_"+k+"_composer","",link)):createElement("td","","",v=createSpan("track_"+k+"_composer",""));v.innerHTML=shortenArtistName(f.composer.name);break;case "publisher":r=(link=getPublisherLink(f.publisher.id,f.catalog.id))?createElement("td","","",v=createA("track_"+k+"_publisher","",link)):createElement("td","","",v=createSpan("track_"+
k+"_publisher",""));v.innerHTML=shortenArtistName(f.publisher.name);break;case "album":r=(link=getAlbumLink(f.album.id,f.catalog.id))?createElement("td","","track_list_album_column",v=createA("track_"+k+"_album","",link)):createElement("td","","track_list_album_column",v=createSpan("track_"+k+"_album",""));v.innerHTML=f.album.name;break;case "genre":r=createElement("td","track_"+k+"_genre","",createA("","",getGenreLink(f.genre.id),"","",f.genre.name));break;case "length":r=createElement("td","track_"+
k+"_length","track_list_centered_column",createText(f.length));break;case "rating":r=Math.floor(f.rating.rating*50)/10+"";r=r.length<3?r+".0":r;r=createElement("td","track_"+k+"_rating","track_list_centered_column",createText(r));break;case "plays":case "downloads":case "favorites":case "licenses":r=createElement("td","track_"+k+"_"+u,"",createText(f[u]));break;case "added":r=createElement("td","track_"+k+"_added","",createText(f.date.substring(0,6)+f.date.substring(8,10)));break;case "key":r=createElement("td",
"track_"+k+"_key","",createText(f.key.name));break;case "tempo":r=createElement("td","track_"+k+"_tempo","",createA("","",getTempoLink(f.tempo.id),"","",f.tempo.name));break;case "cue-type":r=createElement("td","track_"+k+"_cue_type","",createA("","",getCueTypeLink(f.cue_type.id),"","",f.cue_type.name));break;case "weight":r=createElement("td","track_"+k+"_weight","track_list_centered_column",createText(f.weight+"/"+this.totalWeight));break;case "tags":break;case "handle":img=createImg("","","images/explorer/handle.png");
img.id=k;img.onmousedown=function(E){currentTrackSelector.startDrag(E,this.id,this.trackList)};img.trackList=this;img.title="Grab here to move this track to and from your list";r=createElement("td","","track_list_handle_column",img);break;case "forced album avatar":break;default:if(colId=u.match(/^custom_([0-9]+)$/)){colId=colId[1];r="N/A";for(var w=u=0;w<f.custom_fields.length;w++){var I=f.custom_fields[w];if(I.id==colId){r=I.value;u=I.value_id;break}}r=createElement("td","track_"+k+"_custom_"+colId,
"track_list_custom_column",createA("","",getCustomLink(colId,r,u),"","",r))}else console.log("Unknown column: "+u)}r!=null&&n.appendChild(r)}this.table.appendChild(n)}};this.removeTrack=function(f){if(this.table){trackBank.remove(f,this.conf.bankKey);(f=this.table.get("track_"+f+"_row"))&&this.table.removeChild(f)}};this.hideTrack=function(f){if(this.table)if(f=this.table.get("track_"+f+"_row"))f.style.display="none"};this.showTrack=function(f){if(this.table)if(f=this.table.get("track_"+f+"_row"))f.style.display=
""};this.setData=function(f,j,k){if(!get("track_list_"+this.conf.bankKey)){console.log("couldn't find track_list_"+this.conf.bankKey);return false}if(this.isLastRequest(f))this.conf.useCache&&requestCache.set(this.lastRequestString,f);else return false;trackBank.clear(this.conf.bankKey);if(config.secure)this.editOn=this.allowEdit;if(this.conf.useFilters){leftNav.setParams(f[0].pageVars);if(leftNav.paramsSet()){var n=$j(this.filterControl).show().html("");leftNav.getSection("Filter Tracks").enabled?
n.append("<em>These results are being filtered.</em>").append($j('<a href="javascript:;">Disable Filters</a>').click(function(){leftNav.getSection("Filter Tracks").enabled=false;currentHash=""},"","Disable Filters")).append($j('<a href="javascript:;">Clear Filters</a>').click(function(){leftNav.getSection("Filter Tracks").enabled=true;leftNav.getSection("Filter Tracks").reset();currentHash=""})):n.append("<em>Filters are on but disabled.</em>").append($j('<a href="javascript:;">Enable Filters</a>').click(function(){leftNav.getSection("Filter Tracks").enabled=
true;currentHash=""})).append($j('<a href="javascript:;">Clear Filters</a>').click(function(){leftNav.getSection("Filter Tracks").enabled=true;leftNav.getSection("Filter Tracks").reset();currentHash=""}))}else this.filterControl.style.display="none"}this.pageVars=f[0].pageVars;if(this.sourceLinkFunction)j=this.sourceLinkFunction;else this.sourceLinkFunction=j;if(this.view=="block")this.blocks=$j("#track_list_blocks",this.container).html("")[0];else{var p=get("track_list_"+this.conf.bankKey).getElementsByTagName("tbody");
p||(p=get("track_list_"+this.conf.bankKey).getElementsByTagName("table"));this.table=p=p[0];$j("tr:not(:first)",p).remove();p=this.pageVars;for(n=0;n<this.conf.columnList.length;n++){var q=this.conf.columnList[n].name.replace(" ","_").replace("/","-"),r=q;if(this.conf.columnList[n].displayColumns[0].match(/^custom_/))q=this.conf.columnList[n].displayColumns[0];var u=$j("#track_header_"+q+"_"+this.conf.bankKey);this.conf.sortable&&u.attr("href",j(p+"0&no="+q));u.html(r.replace("_"," ").replace("music rep",
"catalog").replace("artist-composer","Artist/Composer"))}n=paramsToVars(p);$j("#track_header_"+n.o+"_"+this.conf.bankKey).append('<img src="images/explorer/'+(n.d=="a"?"up":"down")+'ArrowSmall.gif"/>')}if(f.length<2)if(this.view=="block")this.blocks&&this.blocks.appendChild(createDiv("","track_list_block",createH2("No tracks found!")));else{for(q=n=0;q<this.conf.columnList.length;q++)n+=this.conf.columnList[q].displayColumns.length;$j(this.table).append('<tr id="track_no_row"><td id="track_col" colspan="'+
n+'">No tracks found!</td></tr')}else for(n=1;n<f.length;n++)this.addTrack(f[n]);if(this.conf.pagination){p=f[0].pageVars;n=Math.ceil(f[0].count/f[0].perPage);r=f[0].page;if(n<2)$j("#track_list_page_numbers",this.container).html("Showing all results");else{q=$j("#track_list_page_numbers",this.container).html("");if(r>0){q.append('<a id="track_list_page_prev" href="'+j(p+(r-1))+'"><< Prev</a><a href="'+j(p+0)+'" id="track_list_page_first">1</a><span>...</span>');if(k){$j("#track_list_page_prev",q).click(function(){var v=
$j(this);return v.data("clickFunc")(v.data("page"))}).data("clickFunc",k).data("page",r-1);$j("#track_list_page_first",q).click(function(){return $j(this).data("clickFunc")(0)}).data("clickFunc",k)}}q.append($j('<input type="text" id="track_list_page_selection" value="'+(r+1)+'"/>').keydown(function(v){code=v?v.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(v){code=v?v.keyCode:window.event.keyCode;
v=$j(this);if(code==13&&v.val().match(/^[0-9]+$/))if(v.data("sourceLinkFunction"))setHash(v.data("sourceLinkFunction")(v.data("pageVars")+(v.val()-1)));else return v.data("clickFunc")(v.val()-1)}).data("pageVars",p).data(k?"clickFunc":"sourceLinkFunction",k?k:j));if(r<n-1){q.append('<span>...</span><a href="'+j(p+(n-1))+'" id="track_list_page_last">'+n+'</a><a id="track_list_page_next" href="'+j(p+(r+1))+'">Next >></a>');if(k){$j("#track_list_page_next",q).click(function(){var v=$j(this);return v.data("clickFunc")(v.data("page"))}).data("clickFunc",
k).data("page",r+1);$j("#track_list_page_last",q).click(function(){var v=$j(this);return v.data("clickFunc")(v.data("page"))}).data("clickFunc",k).data("page",n-1)}}}}if(this.conf.resultCountChanging){q=$j("#track_list_result_count",this.container).html("<span>Results per page:</span>");k=[5,10,15,25,50,-1];r=false;for(n=0;n<k.length;n++){u=k[n];this.resultsPerPage=f[0].perPage;if(!r&&(this.resultsPerPage==u||u>this.resultsPerPage||u==-1)){r=true;q.append($j('<input type="text" id="result_count_selection" value="'+
this.resultsPerPage+'"/>').keydown(function(v){code=v?v.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(v){code=v?v.keyCode:window.event.keyCode;v=$j(this);if(code==13&&v.val().match(/^[0-9]+$/)){setHash(v.data("sourceLinkFunction")(v.data("pageVars").replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+v.val()));getTrackList().setResultsPerPage(v.val())}}).data("pageVars",p).data("sourceLinkFunction",j))}this.resultsPerPage!=
u&&u!=-1&&q.append($j('<a href="'+j(p.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+u)+'">'+u+"</a>").click(function(){getTrackList().setResultsPerPage($j(this).html())}))}}this.highlightTrack(player.playingTrack);player.manualPlayingUpdate();this.view=="list"&&this.conf.stripe&&stripe(this.container);this.hideCover();projector.inQuickProjectMode()&&this.enableFastTagging();return true};this.generatePage=function(f){this.container=expList=f;f.appendChild(this.filterControl=createDiv("view_bar_"+this.conf.bankKey,
"view_bar"));f=false;this.view=user.getOption("track_list_view")=="block"&&this.conf.allowBlock?"block":"list";if(this.view=="block")expList.appendChild(createDiv("track_list_blocks"));else{var j=createElement("table","track_table_"+this.conf.bankKey);j.appendChild(d.createElement("tbody"));j.cellSpacing=0;for(var k=j.childNodes[0],n=createElement("tr","header_tr"),p=0;p<this.conf.columnList.length;p++){var q=this.conf.columnList[p].name.replace(" ","_").replace("/","-");if(this.conf.columnList[p].displayColumns[0].match(/^custom_/))q=
this.conf.columnList[p].displayColumns[0];var r=this.conf.sortable&&this.conf.columnList[p].sortable?createA("track_header_"+q+"_"+this.conf.bankKey,"","#","","",""):createSpan("track_header_"+q+"_"+this.conf.bankKey);q=createTh(q+"_column_"+this.conf.bankKey,this.conf.headerBackground?"track_header_"+q:"track_list_no_bg track_header_"+q,r);n.appendChild(q);if(this.conf.headerColor!=""&&this.conf.headerColor!=undefined)r.style.color="#"+this.conf.headerColor;q.colSpan=this.conf.columnList[p].displayColumns.length;
for(r=0;r<this.conf.columnList[p].displayColumns.length&&!f;r++)if(this.conf.columnList[p].displayColumns[r]=="title")f=true;if(this.conf.headerBackground&&p==0)q.className+=" track_list_left"}if(this.conf.headerBackground)q.className+=" track_list_right";k.appendChild(n);j.appendChild(k);expList.appendChild(j)}this.conf.resultCountChanging&&expList.appendChild(createDiv("track_list_result_count",""));if(this.conf.allowBlock&&this.conf.allowList){expList.appendChild(div=createDiv("track_list_view_changing"));
div.appendChild(createSpan("","",createText("View: ")));div.appendChild(img=createImg("list_view","faux_button",this.view=="list"?"/images/explorer/view_list_down.gif":"/images/explorer/view_list_up.gif"));img.onclick=function(){this.trackList.setView("list")};img.trackList=this;div.appendChild(img=createImg("block_view","faux_button",this.view=="block"?"/images/explorer/view_block_down.gif":"/images/explorer/view_block_up.gif"));img.onclick=function(){this.trackList.setView("block")};img.trackList=
this}this.conf.pagination&&expList.appendChild(createDiv("track_list_page_numbers",""));expList.appendChild(createDiv("","clr"));f&&this.generateExpandedContainer()};this.generateExpandedContainer=function(){var f=createDiv("track_list_expanded_container","");f.trackList=this;var j=createDiv("track_list_expanded_header","",createA("track_list_expanded_title","",getDefaultLink()));j.appendChild(a=createA("track_list_expanded_close_button","",getDefaultLink(),function(){this.trackList.hideExpandedActual();
return false}));a.trackList=this;f.appendChild(j);var k=createDiv("track_list_expanded_middle");k.appendChild(createDiv("","",createDiv("track_list_expanded_avatar","avatar")));j=createDiv("track_list_expanded_label_section","",createSpan("track_list_expanded_label_heading","track_list_expanded_heading",createText("Label: ")));j.appendChild(createSpan("track_list_expanded_label"));k.appendChild(j);j=createDiv("track_list_expanded_style_section","",createSpan("track_list_expanded_style_heading","track_list_expanded_heading",
createText("Style: ")));j.appendChild(createSpan("track_list_expanded_style"));k.appendChild(j);j=createDiv("track_list_expanded_mood_section","",createSpan("track_list_expanded_mood_heading","track_list_expanded_heading",createText("Mood: ")));j.appendChild(createSpan("track_list_expanded_mood"));k.appendChild(j);j=createDiv("track_list_expanded_tempo_section","",createSpan("","track_list_expanded_heading",createText("Tempo: ")));j.appendChild(createSpan("track_list_expanded_tempo"));k.appendChild(j);
j=createDiv("track_list_expanded_cue_type_section","",createSpan("","track_list_expanded_heading",createText("Cue Type: ")));j.appendChild(createSpan("track_list_expanded_cue_type"));k.appendChild(j);j=createDiv("track_list_expanded_description_section");var n;(n=createSpan("","track_list_expanded_heading")).appendChild(createText("Description: "));j.appendChild(n);n=createSpan("track_list_expanded_description");j.appendChild(n);k.appendChild(j);row=createDiv("","clr");j=createDiv("track_list_expanded_runtime_section");
(n=createSpan("","track_list_expanded_heading")).appendChild(createText("Runtime: "));j.appendChild(n);n=createSpan("track_list_expanded_runtime");j.appendChild(n);row.appendChild(j);if(config.showRatings){j=createDiv("track_list_expanded_rating_section");(n=createSpan("","track_list_expanded_heading")).appendChild(createText("Rating: "));j.appendChild(n);n=createSpan("track_list_expanded_rating");j.appendChild(n);row.appendChild(j);j=createDiv("track_list_expanded_rate_section");(n=createSpan("track_list_expanded_rate_heading",
"track_list_expanded_heading")).appendChild(createText("Rate Now: "));j.appendChild(n);n=createSpan("track_list_expanded_rate");j.appendChild(n);row.appendChild(j)}k.appendChild(row);k.appendChild(createDiv("","clr"));f.appendChild(k);j=createDiv("track_list_expanded_options");f.appendChild(j);f.appendChild(createDiv("track_list_expanded_clear"));(this.expanded_container=new FocusBox(f,true)).div.data("trackList",this)};this.highlightTrack=function(f){$j("#track_table_"+this.conf.bankKey+" tr").removeClass("track_list_selected");
f&&$j("#track_"+f+"_row",$j(this.container)).addClass("track_list_selected")};this.updatePlayPauseState=function(f,j){for(var k=0;k<playButtonLocations.length;k++){var n=get("track_list_"+f+"_play_button_"+playButtonLocations[k]);if(n)n.src=j?"images/explorer/pause.gif":"images/explorer/play.gif"}};this.swapExpanded=function(f,j){if(this.expandedShowing){this.expandedShowing=false;var k=this.currentExpandedTrack;getTrackList().hideExpandedActual();f!=k&&this.showExpanded(f,j)}else this.showExpanded(f,
j)};this.startExpandedTimer=function(f,j){getTrackList().hideExpanded();if(get("track_"+f+"_title",this.container)){this.waitingTimer=setTimeout("currentTrackList.showExpanded();",500);currentTrackList=this;this.waitingTrackId=f;this.waitingAnchor=j}};this.stopExpandedTimer=function(){this.waitingTimer&&clearTimeout(this.waitingTimer)};this.showExpanded=function(){getTrackList().hideExpanded();var f=this.waitingTrackId,j=this.waitingAnchor;if(get("track_"+f+"_title",this.container)){var k=this.expanded_container;
if(k){k.hide().show();k=k.div;k.hover(function(){if(currentTrackList.hideTimer){clearTimeout(currentTrackList.hideTimer);currentTrackList.hideTimer=null}},function(){currentTrackList.hideTimer=setTimeout("currentTrackList.hideTimer = null; currentTrackList.hideExpandedActual();",500)});currentTrackList=this;var n=trackBank.find(f);this.currentExpandedTrack=f;var p=k.find("#track_list_expanded_avatar");p.html("");if(config.singleCatalog)config.showLabels?p.append('<img src="'+n.label.image+'"/>'):
p.append('<img src="'+n.album.image+'"/>');else p.append('<img src="'+n.catalog.image+'"/>');p=k.find("#track_list_expanded_title");if(!p.length){p=k.find("#track_list_expanded_header").append('<a id="track_list_expanded_title" href="#"></a>').find("#track_list_expanded_title");console.log("had to add title element")}p.html(n.title).attr("href",getTrackLink(n.catalog.id,f));generateTagElements(n.styles,"style",k.find("#track_list_expanded_style").get(0),k.find("#track_list_expanded_style_section").get(0));
generateTagElements(n.moods,"mood",k.find("#track_list_expanded_mood").get(0),k.find("#track_list_expanded_mood_section").get(0));if(n.tempo&&n.tempo.id){k.find("#track_list_expanded_tempo_section").show();k.find("#track_list_expanded_tempo").html(n.tempo.name)}else k.find("#track_list_expanded_tempo_section").hide();if(n.label&&n.label.id){k.find("#track_list_expanded_label_section").show();k.find("#track_list_expanded_label").html('<a href="'+getLabelLink(n.label.id,n.catalog.id)+'">'+n.label.name+
"</a>")}else k.find("#track_list_expanded_label_section").hide();if(n.cue_type&&n.cue_type.id){k.find("#track_list_expanded_cue_type_section").show();k.find("#track_list_expanded_cue_type").html(n.cue_type.name)}else k.find("#track_list_expanded_cue_type_section").hide();if(n.description){k.find("#track_list_expanded_description_section").show();k.find("#track_list_expanded_description").html(n.description)}else k.find("#track_list_expanded_description_section").hide();k.find("#track_list_expanded_runtime").html(n.length);
if(config.showRatings){k.find("#track_list_expanded_rating").html(round(n.rating.rating*5,1)+"/5");f=k.find("#track_list_expanded_rate_heading");p=k.find("#track_list_expanded_rate");var q=n.rated!=undefined&&n.rated!=null&&n.rated!=-1;f.html(q?"Your Rating:":"Rate Now:");p.html("");p.append(rat=new Rater("tracks",n.id,q?n.rated:n.rating.rating,q,function(){this.container.heading.innerHTML="Your Rating:"}));rat.heading=f}f=k.find("#track_list_expanded_options").html("");f.append(generateDownloadButton("track",
n.id,false,function(){if(currentTrackList.hideTimer){clearTimeout(currentTrackList.hideTimer);currentTrackList.hideTimer=null}},function(){currentTrackList.hideTimer=setTimeout("currentTrackList.hideTimer = null; currentTrackList.hideExpandedActual();",500)})).append("<span>|</span>").append(generateEmailButton("track",n)).append("<span>|</span>").append('<a href="'+getTrackLink(n.catalog.id,n.id)+'" class="link">link</a>');projector.inQuickProjectMode()&&f.append("<span>|</span>").append(generateQuickProjectTrackButton(n.id));
n=getPosition(get("body"));n.y=0;f=getPosition(j);f.y+=j.offsetHeight-n.y;k.css({left:f.x+20+"px",top:f.y+"px",display:"block",height:k.find("#track_list_expanded_container").height()+18+"px"});f.y+k.height()+n.y>getDisplayHeight()+getScrollY()-$j("#shadowfax").height()&&k.css("top",f.y-(k.height()+j.offsetHeight)+"px");f.x+20+k.width()+n.x>getDisplayWidth()+getScrollX()&&k.css("left",f.x-k.width()+"px");this.expandedShowing=true;this.expanded_container.resize()}}};this.hideExpanded=function(){};
this.hideExpandedActual=function(){this.expanded_container&&this.expanded_container.hide();this.currentExpandedTrack=0};this.setResultsPerPage=function(f){this.resultsPerPage=f;this.conf.resultsPerPageCookie&&this.saveResultsPerPage()};this.saveResultsPerPage=function(){if(this.conf.resultsPerPageCookie)cookies.set("sa_rpp"+(user.logged?user.userData.id:0),this.resultsPerPage,604800)};this.loadResultsPerPage=function(){if(this.conf.resultsPerPageCookie)if(this.resultsPerPage=cookies.get("sa_rpp"+
(user.logged?user.userData.id:0)))this.saveResultsPerPage();else this.resultsPerPage=15};this.setView=function(f){console.log("setting view to "+f);if(f!=this.view)if(f=="block"&&this.conf.allowBlock||f=="list"&&this.conf.allowList){user.setOption("track_list_view",f);currentPage="";reloadPage()}};this.showAlternates=function(f,j){var k=$j("#track_"+f.id+"_row"),n=$j("#track_"+f.id+"_row td").length,p=$j('<tr class="'+k.get(0).className+'" id="alternates_'+f.id+'"></tr>'),q=getAlternateTrackListConfig(),
r=new TrackList(q);q.bankKey+=f.id;p.html('<td colspan="'+n+'"><div id="track_list_'+q.bankKey+'" class="track_list"></div></td>');r.generatePage($j("div",p).get(0));expandedTrackLists[expandedTrackLists.length]=r;k.after(p);k=[{count:f.alternates.length,page:0,perPage:f.alternates.length,pageVars:"",req:1}];for(n=0;n<f.alternates.length;n++)k[k.length]=f.alternates[n];r.setData(k);$j(j).unbind("click").click(function(){$j(this).data("trackList").hideAlternates($j(this).data("track"),this);this.blur();
return false}).html("-"+f.alternates.length)};this.hideAlternates=function(f,j){$j("#alternates_"+f.id).remove();$j(j).unbind("click").click(function(){$j(this).data("trackList").showAlternates($j(this).data("track"),this);this.blur();return false}).html("+"+f.alternates.length);cleanExpandedTrackLists()}}
function ProjectList(b){this.allowEdit=false;this.conf=b;this.editBox=this.container=null;this.expandedShowing=this.editOn=false;this.filterControl=null;this.lastRequest=0;this.lastRequestString="";this.view="list";this.trackList=new TrackList(b);this.showCover=function(f){var j=get("project_list_"+this.conf.bankKey);this.hideCover();$j(this.container).addClass("covered");var k=createDiv("list_cover");k.style.width=j.offsetWidth+"px";k.style.height=j.offsetHeight+"px";var n=createDiv("track_list_cover_loader");
n.style.width=k.style.width;n.style.height="60px";showLoader(n,"",getLoadingMessage(this.lastRequestString,f,"Loading Project..."));j.appendChild(k);j.appendChild(n)};this.hideCover=function(){setTimeout("$j('#list_cover, #track_list_cover_loader', $j('#project_list_"+this.conf.bankKey+"').removeClass('covered')).remove();",100)};this.loadPage=function(f){this.expandedShowing=false;this.loadResultsPerPage();this.lastRequest++;var j=reloadTrackListHash();this.showCover(f);if(this.conf.useFilters&&
j&&currentHash!=j){reloadProjectList();f=hashToParams(j)}if(!f||!f.match(/&?show=[0-9]+/))f=(f?f:"")+"&show="+this.resultsPerPage;this.lastRequestString="p=project_info"+(f!=undefined?"&"+f.replace("p=project_info&",""):"");if(!this.conf.useCache||!(result=requestCache.get(this.lastRequestString)))ajax(this.lastRequestString+"&req="+this.lastRequest,this.conf.callback);else{result[0].req=this.lastRequest;this.conf.callbackActual(result)}};this.isLastRequest=function(f){return!(this.lastRequest&&this.lastRequest!=
f[0].req)};this.addItem=function(f,j){if(f=="track")this.trackList.addTrack(j);else if(f=="album")if(this.table){f=this.conf.columnList;var k=j.id,n=createElement("tr","album_"+k+"_row");$j(n).data("album",j);for(var p,q=0;q<f[0].displayColumns.length;q++){p=f[0].displayColumns[q];if(p=="play"){p=createElement("td","","list_option_column list_alternates_column");p.innerHTML='<a href="'+getDefaultLink()+'" title="Click to show/hide tracks"><img src="images/shared/album_small.png"/></a>';$j("a",p).click(function(){var u=
$j(this);$j("#expanded_"+u.data("itemId")).length?u.data("list").hideTracks(u.data("itemId"),this):u.data("list").expandTracks(u.data("itemId"),this);this.blur();return false}).data("list",this).data("itemId",k)}else p=p=="download"?createElement("td","","list_option_column list_download_column",generateDownloadButton("album",j)):p=="email"?createElement("td","","list_option_column list_email_column",generateEmailButton("album",j)):createElement("td");n.appendChild(p)}for(q=1;q<f.length;q++)for(var r=
0;r<f[q].displayColumns.length;r++){switch(f[q].displayColumns[r]){case "name":case "title":p=this.hasAlbum?createElement("td"):createElement("td",""+k+"_name","",createA("","",getAlbumLink(k,j.catalog.id),"","",j.name));break;case "album":p=createElement("td",k+"_album","",createA("","",getAlbumLink(k,j.catalog.id),"","",j.name));break;case "rep":case "catalog":p=createElement("td",""+k+"_rep","",createA("","",getCatalogLink(j.catalog.id),"","",j.catalog.name));break;case "label":p=createElement("td",
""+k+"_label","",createA("","",getLabelLink(j.label.id),"","",j.label.name));break;case "catalog avatar":case "catalog_avatar":p=createA("","",getCatalogLink(j.catalog.id));p.appendChild(createImg("","",j.catalog.image));p=createElement("td","","list_avatar",createDiv("rep_"+k+"_avatar","avatar_small",p));break;case "label avatar":case "label_avatar":p=createA("","",getLabelLink(j.label.id,j.catalog.id));p.appendChild(createImg("","",j.label.image));p=createElement("td","","list_avatar",createDiv(""+
k+"_avatar","avatar_small",p));break;case "forced album avatar":case "album_avatar":p=createA("","",getAlbumLink(j.id,j.catalog.id));p.appendChild(createImg("","",j.av));p=createElement("td","","list_avatar",createDiv(""+k+"_avatar","avatar_small",p));break;default:p=createElement("td");break}p!=null&&n.appendChild(p)}this.table.appendChild(n)}};this.expandTracks=function(f){var j=$j("#album_"+f+"_row"),k=$j("#album_"+f+"_row td").length,n=$j('<tr class="'+j.get(0).className+' list_hide_arrows" id="expanded_'+
f+'"></tr>'),p=new TrackListConfig;p.columnList=getStandardColumnList();var q=expandedTrackLists.length;p.callback="if (expandedTrackLists.length <= "+q+") expandedTrackLists["+q+"] = { manager:{ setTracks:function() { expandedTrackLists.splice("+q+", 1); } } }; expandedTrackLists["+q+"].manager.setTracks";p.bankKey="profile_downloads_"+f;p.defaultResultsPerPage=10;p.resultCountChanging=false;p.resultsPerPageCookie=false;p.pagination=true;p.sortable=false;q=new TrackList(p);expandedTrackLists[expandedTrackLists.length]=
q;n.html('<td colspan="'+k+'"><div id="track_list_'+p.bankKey+'" class="track_list"></div></td>');j.after(n);q.generatePage($j("div",n).get(0));q.manager={albumId:f,trackList:q,rpp:p.defaultResultsPerPage,first:true,setTracks:function(r){(function(u){function v(w){u.loadPage(w);return false}u.trackList.setData(r,function(){return getDefaultLink()},v);if(u.first)u.first=false})(this)},loadPage:function(r){this.trackList.loadPage("b="+this.albumId+"&show="+this.rpp+"&pg="+r)}};q.manager.loadPage(0)};
this.hideTracks=function(f){$j("#expanded_"+f).remove();cleanExpandedTrackLists()};this.setData=function(f,j,k){if(!get("project_list_"+this.conf.bankKey)){console.log("couldn't find project_list_"+this.conf.bankKey);return false}if(this.isLastRequest(f))this.conf.useCache&&requestCache.set(this.lastRequestString,f);else return false;var n=get("project_list_"+this.conf.bankKey).getElementsByTagName("tbody");n||(n=get("project_list_"+this.conf.bankKey).getElementsByTagName("table"));this.table=n=n[0];
this.trackList.table=n;$j("tr:not(:first)",n).remove();var p=f[0].pageVars;for(w=0;w<this.conf.columnList.length;w++){n=this.conf.columnList[w].name;switch(n){case "music rep":case "rep":get("header_rep_"+this.conf.bankKey).innerHTML="Catalog";break;default:var q=n.replace(" ","_").replace("/","-").replace("music_","");get("header_"+q+"_"+this.conf.bankKey).innerHTML=n;break}}paramsToVars(p);n=q=this.hasAlbum=false;var r=this.conf.columnList;for(w=1;w<r.length&&!this.hasAlbum;w++)for(var u=0;u<r[w].displayColumns.length&&
!this.hasAlbum;u++){var v=r[w].displayColumns[u];if(v=="album"){this.hasAlbum=true;if(!q){r[w].displayColumns.splice(u,0,"forced album avatar");n=true}}else if(v=="album_avatar")q=true;else if(v=="forced album avatar")n=q=true}if(f.length<2){for(w=q=0;w<this.conf.columnList.length;w++)q+=this.conf.columnList[w].displayColumns.length;$j(this.table).append('<tr id="track_no_row"><td id="track_col" colspan="'+q+'">No tracks or albums added yet</td></tr')}else for(w=1;w<f.length;w++)f[w].album?this.addItem("album",
f[w].album):this.addItem("track",f[w].track);if(n){$j(this.table).find("#album_column_project").attr("colspan","2");$j(this.table).find(".track_list_album_column").attr("colspan","2")}this.view=="list"&&this.conf.stripe&&stripe(this.container);if(this.conf.pagination){p=f[0].pageVars;div=$j("#list_page_numbers",this.container).html("");n=Math.ceil(f[0].count/f[0].perPage);w=f[0].page;if(n<2)div.html("Showing all results");else{if(w>0){div.append('<a id="list_page_prev" href="'+j(p+(w-1))+'"><< Prev</a><a href="'+
j(p+0)+'" id="list_page_first">1</a><span>...</span>');if(k){div.find("#list_page_prev").click(function(){var I=$j(this);return I.data("clickFunc")(I.data("page"))}).data("clickFunc",k).data("page",w-1);div.find("#list_page_first").click(function(){return $j(this).data("clickFunc")(0)}).data("clickFunc",k)}}div.append($j('<input type="text" id="list_page_selection" value="'+(w+1)+'"/>').keydown(function(I){code=I?I.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<
48||code>57&&code<96||code>105))return false}).keyup(function(I){code=I?I.keyCode:window.event.keyCode;I=$j(this);if(code==13&&I.val().match(/^[0-9]+$/))if(I.data("sourceLinkFunction"))setHash(I.data("sourceLinkFunction")(I.data("pageVars")+(I.val()-1)));else return I.data("clickFunc")(I.val()-1)}).data("pageVars",p).data(k?"clickFunc":"sourceLinkFunction",k?k:j));if(w<n-1){div.append('<span>...</span><a href="'+j(p+(n-1))+'" id="list_page_last">'+n+'</a><a id="list_page_next" href="'+j(p+(w+1))+
'">Next >></a>');if(k){$j("#list_page_next",div).click(function(){var I=$j(this);return I.data("clickFunc")(I.data("page"))}).data("clickFunc",k).data("page",w+1);$j("#list_page_last",div).click(function(){var I=$j(this);return I.data("clickFunc")(I.data("page"))}).data("clickFunc",k).data("page",n-1)}}}}if(this.conf.resultCountChanging){div=get("list_result_count",this.container);removeChildren(div);div.appendChild(createSpan("","",createText("Results per page: ")));k=[5,10,15,25,50,-1];n=false;
for(var w=0;w<k.length;w++){q=k[w];this.resultsPerPage=f[0].perPage;if(!n&&(this.resultsPerPage==q||q>this.resultsPerPage||q==-1)){n=true;div.appendChild(input=createElement("input","result_count_selection"));input.type="text";input.value=this.resultsPerPage;input.pageVars=p;input.onkeydown=function(I){code=I?I.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false};input.onkeyup=function(I){code=I?I.keyCode:window.event.keyCode;
if(code==13&&this.value.match(/^[0-9]+$/)){setHash(j(p.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+this.value));this.conf.listFunc().setResultsPerPage(this.value)}}}this.resultsPerPage!=q&&q!=-1&&$j(div).append($j('<a href="'+j(p.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+q)+'">'+q+"</a>").click(function(){var I=$j(this);I.data("conf").listFunc().setResultsPerPage(I.data("count"))}).data("conf",this.conf).data("count",q))}}this.hideCover();this.trackList.highlightTrack(player.playingTrack);player.manualPlayingUpdate();
projector.inQuickProjectMode()&&this.trackList.enableFastTagging();return true};this.generatePage=function(f){expList=f;$j(f).addClass("project_list");this.container=f;this.trackList.container=f;this.trackList.generateExpandedContainer();user.getOption("project_list_view");f=createElement("table","track_table_"+this.conf.bankKey);f.appendChild(d.createElement("tbody"));f.cellSpacing=0;for(var j=f.childNodes[0],k=createElement("tr","header_tr"),n=false,p=0;p<this.conf.columnList.length;p++){var q=
this.conf.columnList[p].name.replace(" ","_").replace("/","-").replace("music_","");k.appendChild(th=createTh(q+"_column_"+this.conf.bankKey,this.conf.headerBackground?"track_header_"+q:"list_no_bg header_"+q,createSpan("header_"+q+"_"+this.conf.bankKey)));th.colSpan=this.conf.columnList[p].displayColumns.length;for(q=0;q<this.conf.columnList[p].displayColumns.length&&!n;q++)if(this.conf.columnList[p].displayColumns[q]=="expand")n=true;if(this.conf.headerBackground&&p==0)th.className+=" list_left"}th.className+=
" list_right";j.appendChild(k);f.appendChild(j);expList.appendChild(f);this.conf.resultCountChanging&&expList.appendChild(createDiv("list_result_count",""));if(this.conf.allowBlock&&this.conf.allowList){expList.appendChild(div=createDiv("track_list_view_changing"));div.appendChild(createSpan("","",createText("View: ")));div.appendChild(img=createImg("list_view","faux_button",this.view=="list"?"/images/explorer/view_list_down.gif":"/images/explorer/view_list_up.gif"));img.onclick=function(){this.list.setView("list")};
img.list=this;div.appendChild(img=createImg("block_view","faux_button",this.view=="block"?"/images/explorer/view_block_down.gif":"/images/explorer/view_block_up.gif"));img.onclick=function(){this.list.setView("block")};img.list=this}this.conf.pagination&&expList.appendChild(createDiv("list_page_numbers",""));expList.appendChild(createDiv("","clr"))};this.setResultsPerPage=function(f){this.resultsPerPage=f};this.saveResultsPerPage=function(){if(this.conf.resultsPerPageCookie)cookies.set("sa_rpp"+(user.logged?
user.userData.id:0),this.resultsPerPage,604800)};this.loadResultsPerPage=function(){if(this.conf.resultsPerPageCookie)if(this.resultsPerPage=cookies.get("sa_rpp"+(user.logged?user.userData.id:0)))this.saveResultsPerPage();else this.resultsPerPage=15};this.hideExpandedActual=function(){this.trackList.hideExpandedActual()};this.highlightTrack=function(f){this.trackList.highlightTrack(f)};this.stopExpandedTimer=function(){this.trackList.stopExpandedTimer()};this.enableFastTagging=function(){this.trackList.enableFastTagging()};
this.disableFastTagging=function(){this.trackList.disableFastTagging()}}function cleanExpandedTrackLists(){for(var b=0;b<expandedTrackLists.length;b++)if(!$j("#track_list_"+expandedTrackLists[b].conf.bankKey+", #project_list_"+expandedTrackLists[b].conf.bankKey).length){expandedTrackLists.splice(b,1);b--}}
function MetaTrackList(b){this.trackLists=b;this.updatePlayPauseState=function(f,j){for(var k=0;k<playButtonLocations.length;k++){var n=get("track_list_"+f+"_play_button_"+playButtonLocations[k]);if(n)n.src=j?"images/explorer/pause.gif":"images/explorer/play.gif"}};this.highlightTrack=function(f){for(var j=0;j<this.trackLists.length;j++)this.trackLists[j].highlightTrack(f)};this.hideExpanded=function(){for(var f=0;f<this.trackLists.length;f++)this.trackLists[f].hideExpandedActual()};this.stopExpandedTimer=
function(){for(var f=0;f<this.trackLists.length;f++)this.trackLists[f].stopExpandedTimer()};this.hideExpandedActual=function(){this.hideExpanded()};this.setResultsPerPage=function(f){for(var j=0;j<this.trackLists.length;j++)this.trackLists[j].setResultsPerPage(f)};this.enableFastTagging=function(){for(var f=0;f<this.trackLists.length;f++)this.trackLists[f].enableFastTagging()};this.disableFastTagging=function(){for(var f=0;f<this.trackLists.length;f++)this.trackLists[f].disableFastTagging()}}
function Sorter(b,f){this.sorter=null;this.trackList=b;this.sort=function(j){setHash(this.trackList.sourceLinkFunction(this.trackList.pageVars+"0&no="+j))};this.init=function(j){var k=$j('<div class="sorter">Sort:</div>'),n=[];if(j)n=j;n.push(new ListColumn("Random",["random"],1));j=this.trackList.conf.columnList;for(var p=0;p<j.length;p++)j[p].sortable&&n.push(j[p]);if(n.length){if(p=this.trackList.pageVars.match(/o=([a-z_\-0-9]+)/)){var q=null;for(j=0;j<n.length;j++)if(this.valueFormat(n[j])==p[1]){p=
q=n[j];break}q||(p=null)}p||(p=n[0]);j=this.displayFormat(p);p=this.valueFormat(p);q='<option value="0">'+j+" (Current)</option>";if(p!="random")q+='<option value="'+p+'">Reverse Current</option>';q+='<option value="0">--------</option>';for(j=0;j<n.length;j++)if(this.valueFormat(n[j])!=p)q+='<option value="'+this.valueFormat(n[j])+'">'+this.displayFormat(n[j])+"</option>";k.append($j("<select>"+q+"</select>").change(function(){var r=$j(this),u=r.val();if(u){this.disabled=true;r.data("sorter").sort(u)}}).data("sorter",
this));this.sorter=k}else console.log("sorter had no options")};this.valueFormat=function(j){for(var k=j.displayColumns.length-1;k>=0;k--){var n=j.displayColumns[k];if(n!="alternates")return n}return""};this.displayFormat=function(j){switch(j.name){case "random":return"Random";case "title":return"Title";case "length":return"Length";case "music_rep":case "catalog":return"Catalog";case "composer":return"Composer";case "publisher":return"Publisher";case "favorites":return"Favorites";case "downloads":return"Downloads";
case "artist":return"Artist";case "album":return"Album";case "genre":return"Genre";case "rating":return"Rating";case "plays":return"Plays";case "added":return"Date Added";case "label":return"Label";case "artist-composer":case "artist/composer":return"Artist/Composer";default:return j.name}};this.init(f);return this.sorter}function stripe(b){$j("tr:not(:first):even",$j(b)).addClass("stripe")};function CatalogSelector(b,f,j){this.catalogs=0}function SearchOption(b,f,j){this.countParameters=j;this.searchFunction=f;this.onselect=function(){};this.ondeselect=function(){};this.displayText=b;this.name=b.replace(" ","_");this.buttonId="header_search_"+this.name;this.button='<input type="radio" name="header_search_option" id="'+this.buttonId+'" onclick="this.blur();"/>'}
function Search(){this.extraSearchButton=this.catalogDropDown=null;this.extraSearchOptions=[];this.optionsBox=null;this.requests={};this.searchButton=this.searchBoxContainer=this.searchBox=null;this.searchCounts={};this.searchOptions=[];this.selectedSearchOption=null;this.resetSearchOptions=function(){var b=config.id?1:2;this.searchOptions.splice(b,this.searchOptions.length-b);this.updateSearchText(this.searchOptions[0].countParameters);this.setupOptions();this.setSearch(this.searchOptions[0])};this.updateSearchFromHash=
function(){if(!currentHash.match(/[^a-z]s=/i))this.searchBox.value=this.searchBox.def};this.setupOptions=function(){for(var b=this.optionsBox.getElementsByTagName("a");b.length>0;)this.optionsBox.removeChild(b[0]);for(b=0;b<this.searchOptions.length;b++){this.optionsBox.appendChild(a=createA(this.searchOptions[b].name,"",getHomeLink(),function(){search.setSearch(this.option);return false},"",this.searchOptions[b].displayText));a.option=this.searchOptions[b];if(this.searchOptions[b].displayText=="User Tracks")a.onclick=
function(){return false}}};this.setSearch=function(b){var f=get(b.name,this.optionsBox);if(f){this.selectedSearchOption&&this.selectedSearchOption.ondeselect();for(var j=this.optionsBox.getElementsByTagName("a"),k=0,n=false,p=0;p<j.length;p++){j[p].className="";if(!n&&j[p].option.name!=b.name)k+=j[p].offsetWidth;else if(j[p].option.name==b.name)n=true}f.className="selected";j=get("arrow",this.optionsBox);j.style.left=Math.floor((f.offsetWidth-j.offsetWidth)/2)+k+"px";this.updateSearchText(b.countParameters);
this.selectedSearchOption=b;this.selectedSearchOption.onselect()}};this.addSearchOption=function(b){if(!(config.singleCatalog&&b.displayText!="Current Label")){for(var f=[],j=0;j<this.searchOptions.length;j++)if(this.searchOptions[j].name!=b.name)f[f.length]=this.searchOptions[j];f[f.length]=b;this.searchOptions=f;this.setupOptions();this.setSearch(b)}};this.resetSearchButtons=function(){};this.addSearchButton=function(){};this.updateSearchText=function(b){if(this.searchCounts[b]==undefined){if(this.searchBox.value==
this.searchBox.def)this.searchBox.value="";this.searchBox.def="";if(!this.requests[b]){ajax("p=search_counts&"+b+"&countParameters="+escape(b),"search.setSearchCount");this.requests[b]=1}}else{b="Search "+this.searchCounts[b]+" tracks";if(this.searchBox.value==this.searchBox.def)this.searchBox.value=b;this.searchBox.def=b}};this.setSearchCount=function(b){if(b&&b[0]&&b[0].countParameters){this.searchCounts[b[0].countParameters]=b[0].count;this.updateSearchText(b[0].countParameters)}};this.doSearch=
function(b,f){hideClouds();this.searchFlashCount=100;if(!f)f=this.selectedSearchOption;f.searchFunction(trim(b).replace(/ +/," "))};this.setSelection=function(b){for(var f=0;f<this.searchOptions.length;f++)if(this.searchOptions[f].displayText==b){get(this.searchOptions[f].buttonId).checked=true;this.updateSearchText(this.searchOptions[f].countParameters)}};this.addSearchTerm=function(b){b=unescape(b);if(this.searchBox.value==this.searchBox.def)this.searchBox.value="";var f=this.searchBox.value.split(" ");
this.searchBox.value="";for(var j=0;j<f.length;j++)if(f[j]!=b)this.searchBox.value+=f[j]+" ";this.searchBox.value+=b};this.searchForValue=function(b){this.searchBox.value=b;$j(this.searchButton).click()};this.searchFlashCount=0;this.searchFlashInterval=null;this.flashSearch=function(){};this.flashSearchActual=function(){if(this.searchFlashCount%2==0){this.searchButton.style.border="";this.searchButton.style.margin=""}else{this.searchButton.style.border="2px solid #FFF";this.searchButton.style.margin=
"-1px"}this.searchFlashCount++;if(this.searchFlashCount>4){clearInterval(this.searchFlashInterval);this.searchFlashInterval=null;this.searchButton.style.borderColor=""}};this.showCatalogs=function(){this.searchBox.className="catalogs";this.searchBoxContainer.appendChild(catalogButton=createRoundedDiv("catalog_button","faux_button",button=createDiv("catalog_button_text")));var b=this.getSelectedCatalogCount();button.innerHTML=b?b+" Catalog"+(b>1?"s":""):"All Catalogs";catalogButton.onclick=function(){search.showCatalogDropDown()}};
this.hideCatalogs=function(){this.searchBox.className="";this.searchBoxContainer.removeChild(get("catalog_button"));this.hideCatalogDropDown()};this.showCatalogDropDown=function(){if(this.catalogDropDown==null){var b=createDiv("catalog_dropdown");showLoader(b,"catalogs");var f=createDiv("close","faux_button");f.onclick=function(){search.hideCatalogDropDown()};b.appendChild(f);this.catalogDropDown=new FocusBox(b,true);this.catalogDropDown.show();ajax("p=list&type=catalog&ids=1","search.addCatalogs")}else this.catalogDropDown.hide().show();
b=getPosition(get("catalog_button"));this.catalogDropDown.div.css({left:b.x-11-(BrowserDetect.isIE7down?9:0)+"px",top:b.y-12-(BrowserDetect.isIE7down?18:0)+"px"})};this.addCatalogs=function(b){if(this.catalogDropDown){var f=this.catalogDropDown.div.find("#catalog_dropdown").html(""),j=createDiv();j.appendChild(input=createInput("radio","catalog_0","faux_button"));input.checked=true;input.onclick=function(){this.blur();search.setCatalogSelection(this.id.substring(8,this.id.length))};j.appendChild(l=
createElement("label","label_0","faux_button selected",createText("All Catalogs")));l.htmlFor="catalog_0";j.appendChild(createDiv("","clr"));f.append(j);if(b.length&&(items=b[0].items)&&b[0].items.length)for(b=0;b<items.length;b++){j=createDiv();j.appendChild(input=createInput("checkbox","catalog_"+items[b].id,"faux_button"));input.onclick=function(){this.blur();search.setCatalogSelection(this.id.substring(8,this.id.length))};j.appendChild(l=createElement("label","label_"+items[b].id,"faux_button",
createText(items[b].value)));l.htmlFor="catalog_"+items[b].id;j.appendChild(createSpan("","clr"));f.append(j)}else f.html("Error loading catalogs. Please reload and try again");j=createDiv("close","faux_button");j.onclick=function(){search.hideCatalogDropDown()};f.append(j);this.catalogDropDown.resize()}};this.hideCatalogDropDown=function(){this.catalogDropDown&&this.catalogDropDown.hide()};this.setCatalogSelection=function(b){if(b=="0"){$j("#catalog_dropdown label").removeClass("selected");$j("#catalog_dropdown input").attr("checked",
false);this.catalogDropDown.div.find("#catalog_0").attr("checked",true);this.catalogDropDown.div.find("#label_0").addClass("faux_button selected");this.updateSearchText("type=all_tracks");get("catalog_button_text").innerHTML="All Catalogs"}else{this.catalogDropDown.div.find("#label_0").addClass("faux_button");this.catalogDropDown.div.find("#catalog_0").attr("checked",false);b=this.catalogDropDown.div.find("#label_"+b);if(b.length){b.toggleClass("selected");b="";for(var f=$j("#catalog_dropdown input"),
j=0,k=0;k<f.length;k++)if(f[k].checked){b+="&ids[]="+f[k].id.substring(8,f[k].id.length);j++}if(b.length){this.updateSearchText("type=catalogs"+b);get("catalog_button_text").innerHTML=j+" Catalog"+(j==1?"":"s")}else this.setCatalogSelection("0")}}};this.getSelectedCatalogCount=function(){for(var b=0,f=this.catalogDropDown?this.catalogDropDown.div.find("input"):[],j=0;j<f.length;j++)if(f[j].checked){if(f[j].id=="catalog_0")return 0;b++}return b};this.doCatalogSearch=function(b){for(var f="",j=this.catalogDropDown?
this.catalogDropDown.div.find("input"):[],k=0;k<j.length;k++)if(j[k].checked){if(j[k].id=="catalog_0")break;f+="&cs[]="+j[k].id.substring(8,j[k].id.length)}setPage("explorer","s="+escape(b)+f);this.hideCatalogDropDown()};this.init=function(){var b=get("search_container",sa.header),f=createDiv("search_content");b.appendChild(createRoundedDiv("","",f));f.appendChild(this.optionsBox=createDiv("search_options","",createDiv("arrow")));f.appendChild(this.searchBoxContainer=createDiv("search_box_container"));
f.appendChild(this.searchButton=createButton("Search","","search_button"));f.appendChild(createDiv("","clr"));this.searchBoxContainer.appendChild(this.searchBox=createElement("input","search_box"));this.searchBox.type="text";if(config.singleCatalog)this.searchOptions=[new SearchOption("Catalog Tracks",function(j){search.doCatalogSearch(j)},"type=all_tracks")];else{this.searchOptions=[new SearchOption("Catalog Tracks",function(j){search.doCatalogSearch(j)},"type=all_tracks"),new SearchOption("User Tracks",
function(j){setPage("explorer","s="+escape(j))},"type=all_tracks")];this.searchOptions[0].onselect=function(){search&&search.showCatalogs()};this.searchOptions[0].ondeselect=function(){search&&search.hideCatalogs()};setTimeout("search.showCatalogs();",100)}this.setupOptions();this.setSearch(this.searchOptions[0]);this.searchButton.onclick=function(){search.doSearch(search.searchBox.getValue());return false};this.searchBox.getValue=function(){return this.value==this.def?"":this.value};this.searchButton.onfocus=
function(){this.blur()};checkForEnter(this.searchBox,"search.doSearch(search.searchBox.getValue())");setupDefaultValueInputBox(this.searchBox,"Searching lots of tracks")};this.init()}var search;
function CloudBrowser(){this.cloudBrowserContainer=this.cloudBrowser=null;this.clouds={};this.cloudNames=["moods","styles"];this.hideClouds=function(){this.cloudBrowserContainer&&this.cloudBrowserContainer.hide()};this.showCloud=function(b){this.cloudBrowserContainer.hide().show();b=this.clouds[b]?this.clouds[b]:this.clouds[this.cloudNames[0]];$j("#cloud_browser #cloud_options a.selected").removeClass("selected");$j("#cloud_browser #cloud_options a#cloud_option_"+b.name).addClass("selected");if((cl=
$j("#cloud_browser #cloud")).length)this.cloudBrowser.removeChild(cl[0]);this.cloudBrowser.appendChild(b.div);b.show();this.cloudBrowserContainer.center()};this.resize=function(){if(div=get("cloud_options"))if(div=get("cloud"))this.cloudBrowserContainer.center()};this.init=function(){var b=createDiv("cloud_browser"),f;b.appendChild(f=createDiv("close_button","faux_button"));f.onclick=function(){cloudBrowser.hideClouds()};b.appendChild(div=createDiv("cloud_options"));div.innerHTML="Browse: ";for(f=
0;f<this.cloudNames.length;f++){var j=this.cloudNames[f],k=new Cloud(j);div.appendChild(a=createA("cloud_option_"+j,"","#",function(){cloudBrowser.showCloud(this.cloud.name);return false},"",j));a.cloud=k;this.clouds[j]=k;f+1!=this.cloudNames.length&&div.appendChild(createText(" | "))}this.cloudBrowser=b;this.cloudBrowserContainer=new FocusBox(b)};this.init()}var cloudBrowser=new CloudBrowser,cloudList;
function getCloud(b){for(var f=0;f<cloudList.length;f++)if(cloudList[f].name==b)return cloudList[f];return new Cloud("temp","temp")}function hideClouds(){cloudBrowser.hideClouds()}
function Cloud(b){this.div=this.data=null;this.name=b;this.show=function(){if(this.data)this.setData(this.data);else{showLoader(get("cloud_tags",this.div),this.name+" List");ajax("p=list&type="+this.name,"getCloud('"+this.name+"').setData")}this.resize();this.hideCover()};this.setData=function(f){var j=get("cloud_tags",this.div);if(j){if(this.data==f){this.resize();return}this.data=f;removeChildren(j);f=this.data[0].items;for(var k=0;k<f.length;k++){j.appendChild(a=createA("","","#",function(){this.cloud.addSearchTerm(this.innerHTML);
return false},"",f[k].tag));a.cloud=this;var n=Math.floor(f[k].weight/f.length*25+10);a.style.fontSize=n+"px";n=5-Math.floor((n-10)/25*5);var p=a.offsetHeight;a.style.marginTop=41-p-n+"px";a.style.height=p+"px";a.style.overflow="hidden";a.style.marginBottom=n+"px"}j.appendChild(createDiv("","clr"))}this.resize()};this.addSearchTerm=function(f){search.addSearchTerm(f);var j=createDiv("cover");j.appendChild(back=createDiv("back"));j.appendChild(h2=createH2('Adding "'+f+'" to search'));j.style.width=
this.div.offsetWidth+"px";j.style.height=this.div.offsetHeight+"px";this.div.appendChild(j);h2.style.left=Math.floor((this.div.offsetWidth-h2.offsetWidth)/2)+"px";setTimeout('getCloud("'+this.name+'").hideCover()',1E3)};this.hideCover=function(){if((cover=$j("#cloud #cover")).length)this.div.removeChild(cover[0])};this.resize=function(){if(g=get("cloud"))g.style.height=get("cloud_main",this.div).offsetHeight+"px";cloudBrowser.resize()};this.init=function(){this.div=createDiv("cloud","cloud_container");
var f=createDiv("cloud_main","cloud_main");f.appendChild(createDiv("cloud_tags"));this.div.appendChild(f);cloudList||(cloudList=[]);cloudList[cloudList.length]=this};this.init()};function User(){this.logged=this.firstLog=false;this.projects=[];this.userData={};this.isAdmin=function(){return this.logged&&this.userData.admin};this.canAdmin=function(b){if(this.firstLog)return false;return this.logged&&(this.userData.admin||this.userData.adminCatalogs.indexOf(parseInt(b))!=-1)};this.isRep=function(){return this.logged&&this.userData.adminCatalogs.length};this.canAdminWhite=function(){if(!this.logged)return false;if(this.userData.admin)return true;for(var b=0;b<config.catalogs.length;b++)if(!this.canAdmin(config.catalogs[b]))return false;
return true};this.setUsername=function(b){this.userData.username=b;$j("#shadowfax #username").html(b);requestCache.clear()};this.setEmail=function(b){this.userData.email=b};this.setUser=function(b){this.userData=b;this.logged=true;requestCache.clear();this.firstLog||reloadPage();this.firstLog=false;if(shadowfax)shadowfax.processLogin();else shadowfaxLogin=true;leftNav.generateDashboardSection()};this.logout=function(){ajax("p=logout","user.logoutResponse")};this.logoutResponse=function(){requestCache.clear();
this.resetUserData();this.logged=false;this.projects=[];reloadPage();shadowfax.processLogout();leftNav.generateDashboardSection()};this.checkVersion=function(b){if(!(!this.logged||this.firstLog)){var f=this.getOption("version");if(f!=b.id){this.setOption("version",b.id);ajax("p=version&v="+f+"&old=1","user.versionCheckResponse")}}};this.versionCheckResponse=function(b){b[0].showNotice&&setTimeout('showVersion("'+b[0].id+'");',2E3)};this.loadUser=function(b){if(b){this.logged=this.firstLog=true;this.userData.id=
b}ajax("p=user","user.loadUserHandler")};this.loadUserHandler=function(b){sa.start();var f=b[0];if(f.result=="success"){f=b[1];this.setUser(f);this.reloadProjects()}};this.addFavorite=function(b){ajax("p=fav&add="+b);trackData=getTrack(b);this.favorites.add(b,trackData,true);this.reloadTags()};this.removeFavorite=function(b){ajax("p=fav&remove="+b);this.favorites.remove(b);this.reloadTags()};this.getProject=function(b){for(var f=0;f<this.projects.length;f++){var j=this.projects[f];if(j.id==b)return j}return null};
this.reloadProjects=function(){requestCache.clear();ajax("p=projects&action=get&uid="+this.userData.id+"&cache="+Math.random(),"user.reloadProjectHandler")};this.reloadProjectHandler=function(b){this.projects=b;projector.setProjects(this.projects);if(currentPage=="profile"&&(profilePage.page=="projects"||profilePage.page=="favorites"))currentHash=""};this.leftNavChange=function(b,f){if(this.logged)if(b=="Favorites")this.setOption("left_favorites",f?1:0)};this.getOption=function(b){if(this.firstLog)return null;
if(this.userData.options[b])return this.userData.options[b];return null};this.setOption=function(b,f){ajax("action=set&option="+escape(b)+"&value="+escape(f),"","POST","p=user_options");this.userData.options[b]=f};this.resetUserData=function(){this.userData={options:{},adminCatalogs:[],username:""}};this.init=function(b,f,j,k){this.resetUserData();this.userData.options=k;b?this.loadUser(f):sa.start();this.userData.admin=j}}var user=new User;function setSingle(b,f,j,k){setSingleAbstract(b,f,j,"track_list_expanded",k)}function setSingleAbstract(b,f,j,k,n){f=k+"_"+f;if(j!=undefined)(n?get(f,n):get(f)).href=j;(n?get(f,n):get(f)).innerHTML=b}function reloadPage(){currentPage=currentHash="";profilePage.user=0}function setTitle(b){document.title=config.name+(b?" - "+b:"")}function adjustRightHeight(){left=get("left_nav");right=get("right_content");if(left&&right)right.style.minHeight=left.offsetHeight+20+"px"}
function Cookies(){this.set=function(b,f,j,k){domain=k?"":"; domain=.sourceaudio.com";if(j){k=new Date;k.setTime(k.getTime()+j*1E3);j="; expires="+k.toGMTString()}else j="";document.cookie=b+"="+f+j+"; path=/"+domain};this.get=function(b){b=b+"=";for(var f=document.cookie.split(";"),j=0;j<f.length;j++){for(var k=f[j];k.charAt(0)==" ";)k=k.substring(1,k.length);if(k.indexOf(b)==0)return k.substring(b.length,k.length)}return null};this.remove=function(b){this.set(b,"",-1);this.set(b,"",-1,true)}}
var cookies=new Cookies;function showLoader(b,f,j){var k=createDiv("loader_container");k.appendChild(createDiv("","img"));k.appendChild(createDiv("","",createText(j?j:"Loading "+f+"...")));b.appendChild(k);f=getDimensions(k);b=getDimensions(b);if(f.width&&b.width){k.style.marginLeft=Math.floor((b.width-f.width)/2)+"px";k.style.marginTop=Math.floor((b.height-f.height)/2)+"px"}}
function generateTagElements(b,f,j,k){if(b&&b.length){k.style.display="block";removeChildren(j);f="";for(var n=0;n<b.length;n++)b[n].generated||(f+='<a href="'+getExplorerLink("s="+b[n])+">"+b[n]+"</a>, ");if(f.length)j.innerHTML=f.substring(0,f.length-2);else k.style.display="none"}else k.style.display="none"}
var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS";var b=navigator.userAgent.toLowerCase();this.ua=b;this.isIE=b.indexOf("msie")!=-1&&b.indexOf("opera")==-1&&b.indexOf("webtv")==-1;this.isSafari=b.indexOf("safari")!=-1;this.versionMinor=parseFloat(navigator.appVersion);if(this.isIE&&
this.versionMinor>=4)this.versionMinor=parseFloat(b.substring(b.indexOf("msie ")+5));this.versionMajor=parseInt(this.versionMinor);this.isWin32=(this.isWin=b.indexOf("win")!=-1)&&(b.indexOf("95")!=-1||b.indexOf("98")!=-1||b.indexOf("nt")!=-1||b.indexOf("win32")!=-1||b.indexOf("32bit")!=-1);this.isMac=b.indexOf("mac")!=-1;this.isIE4x=this.isIE&&this.versionMajor==4;this.isIE4up=this.isIE&&this.versionMajor>=4;this.isIE5x=this.isIE&&this.versionMajor==5;this.isIE55=this.isIE&&this.versionMinor==5.5;
this.isIE5up=this.isIE&&this.versionMajor>=5;this.isIE6down=this.isIE&&this.versionMajor<=6;this.isIE6x=this.isIE&&this.versionMajor==6;this.isIE6up=this.isIE&&this.versionMajor>=6;this.isIE7x=this.isIE&&this.versionMajor==7;this.isIE7up=this.isIE&&this.versionMajor>=7;this.isIE7down=this.isIE&&this.versionMajor<=7;this.isIE8x=this.isIE&&this.versionMajor==8;this.isIE8up=this.isIE&&this.versionMajor>=8;this.isIE4xMac=this.isIE4x&&this.isMac},searchString:function(b){for(var f=0;f<b.length;f++){var j=
b[f].string,k=b[f].prop;this.versionSearchString=b[f].versionSearch||b[f].identity;if(j){if(j.indexOf(b[f].subString)!=-1)return b[f].identity}else if(k)return b[f].identity}},searchVersion:function(b){var f=b.indexOf(this.versionSearchString);if(f!=-1)return parseFloat(b.substring(f+this.versionSearchString.length+1))},dataBrowser:[{string:navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,
subString:"Apple",identity:"Safari"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,
subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]};BrowserDetect.init();function Tagger(){this.cont=null;this.lastVal="";this.onChange=null;this.showing=false;this.trackId=0;this.hide=function(){this.showing=false;this.cont.hide()};this.show=function(b,f,j){if(user.logged){this.trackId=b;this.onChange=j;this.loadTrackTagData(b);this.showing&&this.hide();this.cont==null&&this.generate();b=getTrack(b);this.cont.show();get("add_tag_track_title").innerHTML=b.title;get("add_tag_user_container").innerHTML="You haven't create any projects yet!";b=get("add_tag_input");b.value=
f?f:"";b.focus();this.populateTrackTags(user.projects,"add_tag_user_container");$j("#close",this.cont).css("display","");get("add_tag_save_button").style.display="";get("add_tag_saving_text").style.display="none";this.showing=true;this.resize()}else requireLogin()};this.generate=function(){var b=createDiv("add_tag_container"),f=createDiv("add_tag_notice","section"),j=createSpan("","",createElement("b","add_tag_track_title"));f.appendChild(j);f.appendChild(createA("close","","javascript:;",function(){tagger.hide();
return false},"",""));b.appendChild(f);j=createDiv("add_tag_body","section");f=createDiv("add_tag_body_add");var k=d.createElement("input");k.type="text";k.id="add_tag_input";f.appendChild(k);k=createDiv("add_tag_separate","add_tag_small_text");k.innerHTML="Name and create a new project above or select from a project you've previously created.<br/>To remove this track from a project, simply delete that project's name from the list.";f.appendChild(k);j.appendChild(f);f=createDiv("add_tag_body_user");
f.appendChild(createDiv("","add_tag_heading_text",createText("Projects you've created:")));f.appendChild(createDiv("add_tag_user_container"));j.appendChild(f);b.appendChild(j);f=createDiv("add_tag_footer","section");f.appendChild(createButton("Save","add_tag_save_button","","javascript:;",function(){tagger.save();return false}));f.appendChild(createButton("Remove from all projects","add_tag_unsave_button","","javascript:;",function(){tagger.unsave();return false}));f.appendChild(createDiv("add_tag_saving_text"));
b.appendChild(f);$j("#hide_link",b).toggle(function(){tagger.showMoreInformation()},function(){tagger.hideMoreInformation()});this.cont=new FocusBox(b,false,false,$j("<span>Organizing tracks into projects allows you to easily retrieve and send tracks you like that you've discovered.<br/><br/>You can create new projects by naming them in the text area on the left, or select from a previously created project.<br/><br/>Once you've created a project, you can easily add tracks to this project by clicking the + icon next to a project listed in the projects section of your bottom bar.</span>"))};
this.resize=function(){this.cont.center()};this.loadTrackTagData=function(b){ajax("p=tags&action=get&tid="+b+(trackBank.find(b).tagged?"":"")+"&cache="+Math.random(),"tagger.setTrackTagData")};this.doOnChange=function(b){this.onChange!=null&&eval(this.onChange)(b)};this.setTrackTagData=function(b){b=b[0];if(b.user.length){var f=get("add_tag_input");if(!f)return;f.value="";for(var j=0;j<b.user.length;j++){f.value+=b.user[j].tag;if(j+1<b.user.length)f.value+=", "}}this.resize()};this.populateTrackTags=
function(b,f){if((f=get(f))&&b&&b.length){removeChildren(f);for(var j=0;j<b.length&&j<20;j++){f.appendChild(createA("","",getDefaultLink(),function(){tagger.insertTag(this.name);return false},b[j].tag,b[j].tag));j+1<b.length&&j+1<20&&f.appendChild(createText(", "))}}};this.parseTags=function(){for(var b=get("add_tag_input").value.split(","),f=[],j,k=0;k<b.length;k++)if((j=trim(b[k]))!="")f[f.length]=j;f.removeDuplicates();return f};this.setTags=function(b){var f=get("add_tag_input");f.value="";for(var j=
0;j<b.length;j++){f.value+=b[j];if(j+1<b.length)f.value+=", "}};this.insertTag=function(b){var f=this.parseTags();if((ind=f.indexOf(b))!=-1)f.splice(ind,1);f[f.length]=b;this.setTags(f)};this.unsave=function(){get("add_tag_input").value="";this.save()};this.save=function(){this.lastVal=get("add_tag_input").value;ajax("p=tags&action=add&tid="+this.trackId+"&tag="+escape(get("add_tag_input").value)+"&cache="+Math.random(),"tagger.saveResult");get("add_tag_save_button").style.display="none";get("add_tag_saving_text").innerHTML=
"Saving...";get("add_tag_saving_text").style.display="block"};this.saveResult=function(b){if(b[0].result=="success"){this.hide();trackBank.updateAll(b[0].track,"user_tags",b[0].userTags);requestCache.clear();if(b[0].added>0){if(fav=get("track_list_fav_icon_"+this.trackId))fav.src="images/explorer/favBright6.png"}else if(fav=get("track_list_fav_icon_"+this.trackId))fav.src="images/explorer/favFaded6.png";user.reloadTags();this.doOnChange(b[0].added>0)}else{get("add_tag_saving_text").innerHTML=b[0].result;
get("add_tag_save_button").style.display=""}}}var tagger=new Tagger;
function Emailer(b,f,j){this.type=b;this.typeString="";this.id=f;this.code="";this.showing=false;this.cont=null;currentEmailer!=null&&currentEmailer.hide();currentEmailer=this;this.init=function(k){switch(this.type){case "track":k=getTrack(this.id);this.title='Email "'+k.title+'" to a friend';this.subject=config.name+" - "+k.title;ajax("p=mail_tracking&action=get_link&track="+this.id,"currentEmailer.setLink");this.typeString="track";break;case "album":getAlbumLink(k.id,k.catalog.id);this.title='Email "'+
k.name+'" to a friend';this.subject="SourceAudio - "+k.name;ajax("p=mail_tracking&action=get_link&album="+this.id,"currentEmailer.setLink");this.typeString="album";break;case "project":getProjectLink(k.id);this.title='Email "'+k.name+'" to a friend';this.subject="SourceAudio - "+k.name;ajax("p=mail_tracking&action=get_link&project="+this.id,"currentEmailer.setLink");this.typeString="project";break}};this.setLink=function(k){var n=k[0].link;this.cont&&this.cont.replaceInHelp(/\[link\]/g,n);this.code=
k[0].code;if(k[0].adminSent){k=user.getOption("admin_sent");$j("#email_container #email_body").append('<div class="admin_sent"><input type="checkbox" id="logged_out_box"/>Grant download access to <b>non-logged in</b> recipient(s) for <input type="text" id="logged_out_span" value="'+(k==-1?7:k)+'" title="0 for unlimited"/> days</div>');$j("#email_container").addClass("taller");$j("#logged_out_box").change(function(){if($j(this).attr("checked")){$j(".admin_sent").removeClass("disabled");$j("#logged_out_span").attr("disabled",
false)}else{$j(".admin_sent").addClass("disabled");$j("#logged_out_span").attr("disabled",true)}}).attr("checked",k!=-1);this.cont.resize();if(k==-1){$j(".admin_sent").addClass("disabled");$j("#logged_out_span").attr("disabled",true)}}};this.hide=function(){$j("#email_to, #email_message, #email_subject").val("");this.trackId=0;this.cont.hide();this.showing=false;currentEmailer=null};this.show=function(){this.showing&&this.hide();this.cont==null&&this.generate();this.cont.show();this.showing=true;
currentEmailer=this};this.generate=function(){var k=createDiv("email_container"),n=createDiv("email_notice");n.innerHTML=this.title;n.appendChild(a=createA("close","","#",function(){this.emailer.hide();return false},"",""));a.emailer=this;k.appendChild(n);var p=createDiv("email_body");n=createDiv("","");n.appendChild(createSpan("","",createText("To:")));n.appendChild(i=createElement("input","email_to"));i.type="text";setupDefaultValueInputBox(i,"insert multiple email addresses here, separated by commas");
p.appendChild(n);n=createDiv("","");n.appendChild(createSpan("","",createText("Subject:")));n.appendChild(i=createElement("input","email_subject"));i.type="text";i.value=this.subject;p.appendChild(n);n=createDiv("","");n.appendChild(createSpan("","",createText("Message:")));n.appendChild(i=createElement("textarea","email_message"));setupDefaultValueInputBox(i,"optional");p.appendChild(n);k.appendChild(p);n=createDiv("email_footer");n.appendChild(createDiv("","clr"));n.appendChild(a=createButton("Send",
"email_send_button","","javascript:;",function(){this.emailer.send();return false}));a.emailer=this;n.appendChild(a=createButton("Cancel","email_cancel_button","","javascript:;",function(){this.emailer.hide();return false}));a.emailer=this;n.appendChild(createDiv("email_sending_text"));k.appendChild(n);this.cont=new FocusBox(k,false,false,$j("<span>Share this "+this.typeString+' with others by sending a link straight to their email.<br/><br/>You can use this form or copy and paste <a href="[link]">this link</a> in your own email client.</span>'))};
this.send=function(){var k,n=get("email_to").value,p=trim(get("email_subject").value),q=trim(get("email_message").value);q=q==get("email_message").def?"":q;var r=n.split(",");n=[];for(var u=0;u<r.length;u++){var v=trim(r[u]);if(isEmail(v))n[n.length]=v;else k="Invalid email: "+v}if(!k&&!n.length)k="Please enter some emails to send to";if(!k&&!p)k="Please enter a subject";get("email_sending_text").style.display="block";if(k)get("email_sending_text").innerHTML=k;else{get("email_sending_text").innerHTML=
"Sending... Please be patient.";get("email_cancel_button").style.display="none";get("email_send_button").style.display="none";currentEmailer=this;k=(checkSet=$j("#email_container input[type=checkbox]")).attr("checked")?$j("#logged_out_span").val():"";if(checkSet)user.setOption("admin_sent",k===""?-1:k);ajax("t="+this.id+"&emails="+escape(n.join(","))+"&subject="+escape(p)+(q?"&message="+escape(q):"")+"&code="+this.code+"&adminSent="+k,"currentEmailer.sendResult","POST","p=email&type=send_"+this.type)}};
this.sendResult=function(k){if(k[0].result=="success"){this.hide();alertManager.alert(createText("Email sent successfully!"))}else{$j("#email_sending_text").html(k[0].result);$j("#email_send_button, #email_cancel_button").css("display","")}};this.init(j);this.show()}
function Ruler(b,f,j){this.catalogId=b;this.field=f;this.value=j;this.fb=null;this.rulerOptions=[];this.show=function(k){this.fb.show();if(this.rulerOptions.length&&!k)this.setOptions(this.rulerOptions);else{showLoader($j("#ruler .options").get(0),"rule options");currentRuler=this;ajax("p=rules&c="+this.catalogId+"&action=options"+(k?"&ruleId="+k:""),"currentRuler.setOptions")}this.resize()};this.hide=function(){this.fb.hide();currentRuler=null};this.resize=function(){this.fb.center()};this.setOptions=
function(k){this.rulerOptions=k;$j("#ruler .options").empty().append('<h3>If a track&apos;s</h3><ul id="conditions"></ul>').append($j('<a href="javascript:;" class="adder">add condition</a>').click(function(){$j("#ruler").data("ruler").addCondition()}).focus(function(){this.blur()})).append('<h3>Then set its</h3><ul id="results"></ul>').append($j('<a href="javascript:;" class="adder">add result</a>').click(function(){$j("#ruler").data("ruler").addResult()}).focus(function(){this.blur()}));this.addCondition(true);
this.addResult(true)};this.addCondition=function(k){for(var n=$j('<select id="condition_field"><option value="0">--ignore--</option></select>').change(function(){var u=$j(this).data("condition"),v=$j(this.options[this.selectedIndex]),w=$j("#condition_comparison option",$j(this).data("condition")),I=v.data("list");$j("#input",u).html(v.data("input"));for(u=0;u<w.length;u++){v=$j(w.get(u));v.show();I&&!v.data("list")&&v.hide()}}),p=0;p<this.rulerOptions[0].fields.length;p++){if(this.rulerOptions[0].fields[p].list){var q=
this.rulerOptions[0].fields[p].list;inputCode='<select id="condition_value">';for(var r=0;r<q.length;r++)inputCode+='<option value="'+q[r].id+'">'+q[r].name+"</option>";inputCode+="</select>"}else inputCode='<input type="text" id="condition_value"/>';n.append($j('<option value="'+this.rulerOptions[0].fields[p].id+'">'+this.rulerOptions[0].fields[p].name+"</option>").data("input",inputCode).data("list",this.rulerOptions[0].fields[p].list?1:0))}q=$j('<select id="condition_comparison"></select>');for(p=
0;p<this.rulerOptions[0].comparisons.length;p++)q.append($j('<option value="'+this.rulerOptions[0].comparisons[p].id+'">'+this.rulerOptions[0].comparisons[p].name+"</option>").data("list",this.rulerOptions[0].comparisons[p].list));p=$j('<li class="condition"><span class="inner"></span></li>');$j(".inner",p).append(n.data("condition",p)).append(q).append('<span id="input"><input type="text" id="condition_value"/></span>');$j("#ruler #conditions").append(!k?"<h4>and its</h4>":"").append(p);this.resize()};
this.addResult=function(k){for(var n=k&&this.field?this.field.toLowerCase():"",p=0,q=0,r=$j('<select id="result_field"><option value="0">--ignore--</option></select>').change(function(){var I=$j(this).data("result"),E=$j(this.options[this.selectedIndex]);$j("#input",I).html(E.data("input"))}),u=0;u<this.rulerOptions[0].fields.length;u++){if(this.rulerOptions[0].fields[u].list){var v=this.rulerOptions[0].fields[u].list;inputCode='<select id="result_value">';for(var w=0;w<v.length;w++){inputCode+='<option value="'+
v[w].id+'">'+v[w].name+"</option>";if(k&&this.value==v[w].name)q=v[w].id}inputCode+="</select>"}else inputCode='<input type="text" id="result_value"/>';option=$j('<option value="'+this.rulerOptions[0].fields[u].id+'">'+this.rulerOptions[0].fields[u].name+"</option>").data("input",inputCode);if(n&&this.rulerOptions[0].fields[u].name.indexOf(n)!=-1)p=this.rulerOptions[0].fields[u].id;r.append(option)}n=$j('<li class="result"><span class="inner"></span></li>');$j(".inner",n).append(r.data("result",n)).append(" to ").append('<span id="input"><input type="text" id="result_value"/></span>');
$j("#ruler #results").append(!k?"<h4>and its</h4>":"").append(n);this.resize();if(k&&this.value&&p){$j(".result #result_field").val(p);$j(".result #result_field").trigger("change");$j(".result #input input").val(this.value);$j(".result #input select").val(q)}this.resize()};this.createRule=function(){for(var k=$j(".condition").removeClass("error"),n=$j(".result").removeClass("error"),p="",q=0;q<k.length;q++){var r=$j("#condition_field",k[q]).val(),u=$j("#condition_comparison",k[q]).val(),v=$j("#condition_value",
k[q]).val();!r||r=="0"||(p+="&conditions["+q+"][field]="+escape(r)+"&conditions["+q+"][comparison]="+escape(u)+"&conditions["+q+"][input]="+escape(v))}for(q=0;q<n.length;q++){r=$j("#result_field",n[q]).val();v=$j("#result_value",n[q]).val();if(r)p+="&results["+q+"][field]="+escape(r)+"&results["+q+"][input]="+escape(v)}currentRuler=this;ajax(p,"currentRuler.handleCreateRuleResponse","POST","p=rules&c="+this.catalogId+"&action=new")};this.handleCreateRuleResponse=function(k){k=k[0];$j("#ruler #response").html(k.result).removeClass("error").addClass(k.error?
"error":"success");k.source&&$j($j("."+k.source.type)[k.source.id]).addClass("error");k.success&&$j("#cancel_rule .middle").html("Close");this.resize()};this.init=function(){var k=$j('<div id="ruler"><h2>Make a new rule</h2></div>').data("ruler",this);k.append('<div class="options"></div><div id="response"></div>').append($j('<div class="buttons"></div>').append(createButton("Create Rule","create_rule","",getDefaultLink(),function(){$j("#ruler").data("ruler").createRule()})).append($j(createButton("Cancel",
"cancel_rule","",getDefaultLink())).click(function(){$j("#ruler").data("ruler").hide()})));k.append($j('<a href="'+getDefaultLink()+'" id="close"></a>').click(function(){$j("#ruler").data("ruler").hide()}));this.fb=new FocusBox(k,false,false,$j("<span>Rules are a simple way to apply changes to lots of tracks at once. Just specify the conditions under which a change should be made and what the change should be, and the rule will be applied to all your current tracks and all new ones that are added.</span>"))};
this.init()}
function DownloadFormatSelector(b,f,j,k,n){this.cont=null;this.type=b;if(f.id){this.item=f;this.itemId=f.id}else if(b=="track"){this.item=trackBank.find(f);this.itemId=f}else if(b=="code")this.itemId=this.item=f;else{console.log("bad id passed into DownloadFormatSelector - type: "+b+", item: "+f);return false}this.show=function(p){for(var q=$j("#downloadSelector"),r=0;r<q.length;r++)$j(selector[r]).data("selector").hide();$j("body").append(this.cont);q=$j(p).offset();p=q.left-19;q=q.top-17;if(p+this.cont.width()>
getDisplayWidth())p=getDisplayWidth()-this.cont.width();this.cont.css({top:q+"px",left:p+"px"})};this.hide=function(){this.cont.remove()};this.download=function(p){var q=user.getOption("default_download_format"),r="";if(!(r=p.attr("src")))r=p.find("img").attr("src");if(r.indexOf("mp3")!=-1){setTimeout("user.setOption('default_download_format', 'mp3');",100);q="mp3"}else if(r.indexOf("wav")!=-1){setTimeout("user.setOption('default_download_format', 'wav');",100);q="wav"}else if(r.indexOf("aiff")!=
-1){setTimeout("user.setOption('default_download_format', 'aiff');",100);q="aiff"}if(this.type=="track")document.location="download.php?track_id="+this.itemId+"&type="+q+"&source=list";else new Downloader(this.type,this.item,q);this.hide()};this.init=function(p,q){var r=true,u=true,v={mp3:"",wav:"",aiff:""},w="";if(this.type=="track")if(w=trackBank.find(this.itemId)){w.formats.aiff||(r=false);w.formats.wav||(u=false);v.mp3=formatSize(w.formats.mp3);v.wav=formatSize(w.formats.wav);v.aiff=formatSize(w.formats.aiff);
w=w.title}else w="this track";else if(this.type=="tag")w=this.item.tag;else if(this.type=="project")w=this.item.name;else if(this.type=="album")w=this.item.name;else if(this.type=="code")w="these tracks";this.cont=$j('<div id="download_selector"><div class="background"></div><div class="inner"><a href="'+getDefaultLink()+'" id="close"></a><img src="images/explorer/download.png" class="download"/><span class="heading">Download '+w+'</span><div class="clr"></div><a href="'+getDefaultLink()+'" class="format"><img src="images/icons/mp3.png"/><br/>'+
v.mp3+"</a>"+(r?'<a href="'+getDefaultLink()+'" class="format"><img src="images/icons/aiff.png"/><br/>'+v.aiff+"</a>":"")+(u?'<a href="'+getDefaultLink()+'" class="format"><img src="images/icons/wav.png"/><br/>'+v.wav+"</a>":"")+'<div class="clr"></div></div></div>').data("selector",this);this.cont.hover(function(){},function(){$j(this).data("selector").hide()});if(p||q){p||(p=function(){});q||(q=function(){});this.cont.hover(p,q)}this.cont.find(".download, .format").click(function(){$j(this).data("selector").download($j(this))}).data("selector",
this);this.cont.find("#close").click(function(){$j(this).data("selector").hide()}).data("selector",this)};this.init(k,n);this.show(j)}
function Downloader(b,f,j){this.fb=this.cont=null;this.showing=false;this.item=f;this.type=b;this.trackList=null;this.trackListIds=[];this.idString="";this.format=j?j:"";this.keys=[];currentDownloader!=null&&currentDownloader.hide();this.agree=function(k){this.showLoader("Bundling your files... Please be patient");ajax("p=download&"+this.idString+"&format="+this.format+"&agreed=1&ignore="+k,"currentDownloader.setData");user.setOption("agreed",1)};this.submitDownloadRequest=function(){var k=get("download_name",
this.cont);if(k){k=trim(k.value);var n=trim(get("download_location",this.cont).value),p=trim(get("download_company",this.cont).value),q=trim(get("download_project",this.cont).value),r=trim(get("download_phone",this.cont).value);get("download_name_title",this.cont).className="";get("download_location_title",this.cont).className="";get("download_company_title",this.cont).className="";get("download_project_title",this.cont).className="";get("download_phone_title",this.cont).className="";var u=get("download_errors",
this.cont);removeChildren(u);u.style.display="";if(!k){get("download_name_title",this.cont).className="error";u.appendChild(createDiv("","",createText("Please enter your name.")));u.style.display="block"}if(!n){get("download_location_title",this.cont).className="error";u.appendChild(createDiv("","",createText("Please enter your location.")));u.style.display="block"}if(!p){get("download_company_title",this.cont).className="error";u.appendChild(createDiv("","",createText("Please enter the company you work for.")));
u.style.display="block"}if(!q){get("download_project_title",this.cont).className="error";u.appendChild(createDiv("","",createText("Please enter a brief description of your project.")));u.style.display="block"}if(!r){get("download_phone_title",this.cont).className="error";u.appendChild(createDiv("","",createText("Please enter a phone number where the catalog may contact you.")));u.style.display="block"}if(u.style.display==""){this.showLoader();ajax("name="+escape(k)+"&location="+escape(n)+"&company="+
escape(p)+"&phone="+escape(r)+"&project="+escape(q),"currentDownloader.setData","POST","p=download&"+this.idString+"&permRequest=1")}this.position()}};this.showLoader=function(k){removeChildren(this.cont);this.cont.appendChild(div=createDiv("","unhighlight"));showLoader(div,"",k?k:"Processing your request...");this.showing&&this.position()};this.hide=function(){this.fb.hide();this.showing=false;this.fb=this.cont=null;currentDownloader={setData:function(){},hide:function(){}}};this.show=function(){this.showing&&
this.hide();this.cont==null&&this.generate();this.fb.show();this.showing=true;this.position();currentDownloader=this};this.position=function(){$j("#batch_download_container").removeClass("wide");$j(this.cont).height()>getDisplayHeight()&&$j("#batch_download_container").addClass("wide");this.fb.center()};this.init=function(){currentDownloader=this;if(this.type=="code")this.idString="code="+this.item;else if(this.type=="tag")this.idString="tagId="+this.item.id+"&userId="+this.item.userId;else if(this.type==
"project")this.idString="projectId="+this.item.id;else if(this.type=="album")this.idString="albumId="+this.item.id;else if(this.type=="track")this.idString="trackId="+this.item.id;var k=user.getOption("agreed");k=k?"&agreed=1":"";ajax("p=download&"+this.idString+"&format="+this.format+k,"currentDownloader.setData");this.generate(k?"Bundling your files... Please be patient":"")};this.override=function(){currentDownloader=this;ajax("p=download&"+this.idString+"&format="+this.format+"&ignore=1","currentDownloader.setData")};
this.setTracks=function(k){this.trackList.setData(k,function(){return"javascript:;"},function(n){currentDownloader.loadTracks(n)});this.position()};this.loadTracks=function(k){this.trackList.loadPage("ids[]="+this.trackListIds.join("&ids[]=")+"&pg="+k)};this.addTrackList=function(k,n){var p=new TrackListConfig;p.columnList=[new ListColumn("play",["play"]),new ListColumn("title",["title"]),new ListColumn("music rep",["avatar","rep"])];p.callback="currentDownloader.setTracks";p.defaultResultsPerPage=
5;p.resultsPerPageCookie=false;p.pagination=true;p.resultCountChanging=false;p.headerBackground=true;p.sortable=false;p.bankKey="batches";this.trackList=new TrackList(p);p=createDiv("track_list_batches","track_list");k.append(p);this.trackList.generatePage(p);this.trackListIds=n;this.loadTracks(0)};this.setData=function(k){this.show();var n=$j(this.cont).html('<div class="highlight"><h2 class="download_title">Download</h2><a id="close" href="javascript:;"></a></div>');$j("#close",n).click(function(){$j(this).data("batchDownloader").hide()}).data("batchDownloader",
this);switch(k[0].result){case "Agreement required":var p=k[0].total;p>100&&n.append('<div class="unhighlight"><p>Since this download will have '+p+" tracks, and each zip file can have a max of 100 tracks, your tracks will be bundled into "+Math.ceil(p/100)+" separate zip files.</p></div>");div=createDiv("","unhighlight column");div.appendChild(createP("","","To be able to download these track(s), you must agree to the following:"));div.appendChild(t=createDiv("details_downloading_conditions"));t.innerHTML=
k[0].agreement;p=createButton("Decline","details_downloading_disagree","","javascript:;",function(){this.batchDownloader.hide()});p.batchDownloader=this;div.appendChild(p);div.appendChild(p=createButton("Agree","details_downloading_agree","","javascript:;",function(){this.batchDownloader.agree(this.ignore)}));p.batchDownloader=this;p.ignore=k[0].ignore;div.appendChild(createDiv("details_downloading_warning","",createText('By clicking "Agree", you are giving your digital signature to the above agreement and you are bound by law to uphold it. This signature will be held by SourceMedia LLC in perpetuity.')));
n.append(div);break;case "Permission requested":n.append('<div class="highlight"><p>Your download authorization request is still being processed.</p></div><div class="unhighlight">Please be patient while the catalog(s) process your request. You will be notified by the email address you used when joining ('+user.userData.email+') as soon as a decision has been made. The process shouldn\'t take longer than a day or two. If you\'d like to contact us in the meantime, please <a href="#feedback">do so</a>!<p id="bottom_blurb">Thanks for your patience and your interest in '+
config.name+"!</p></div>");if(k[0].auths.approved&&k[0].auths.approved.length){n.append('<div class="unhighlight" id="alt">Alternatively, you may batch download the '+k[0].auths.approved.length+" track"+(k[0].auths.approved.length>1?"s":"")+" you are approved for:</div>");this.addTrackList(n,k[0].auths.approved);p=createButton("Download these tracks","batch_downloading_alternative","","javascript:;",function(){this.batchDownloader.override()});p.batchDownloader=this;n.append(p)}$j('a[href="#feedback"]',
n).click(function(){$j(this).data("batchDownloader").hide()}).data("batchDownloader",this);break;case "Permission denied":if(!k[0].auths.approved||!k[0].auths.approved.length)n.append('<div class="highlight"><p>Sorry, these track aren\'t available for auditioning at this time.</p></div><div class="unhighlight">These catalogs have disabled downloading for the purpose of auditioning but all tracks will still be downloadable if you purchase a license to them first. SourceAudio encourages catalogs  to make their music available for auditioning but, in the end, it\'s their music and their decision. We apologize for any inconvenience.</div>');
else{n.append('<div class="highlight"><p>Sorry, not all these track are available for auditioning at this time.</p></div><div class="unhighlight">One or more catalogs has disabled downloading for the purpose of auditioning but all tracks will still be downloadable if you purchase a license to them first. SourceAudio encourages catalogs  to make their music available for auditioning but, in the end, it\'s their music and their decision. We apologize for any inconvenience.</div>');n.append('<div class="unhighlight" id="alt">You may batch download the '+
k[0].auths.approved.length+" track"+(k[0].auths.approved.length>1?"s":"")+" you are approved for:</div>");this.addTrackList(n,k[0].auths.approved);p=createButton("Download these tracks","batch_downloading_alternative","","javascript:;",function(){this.batchDownloader.override()});p.batchDownloader=this;n.append(p)}break;case "Permission required":n.find(".download_title").append(" - Request Permission");(p=k[0].info)||(p={});n.append('<div class="column"><div class="unhighlight"><div id="top_blurb" class="small_section">One or more of these catalogs has requested that users wanting to download their tracks fill out a brief form so they can learn a little bit about you first. The catalogs might contact you through the phone number or email adress you enter.</div><div class="section"><span id="download_name_title">Name:</span><input type="text" id="download_name" maxlength="64"'+
(p.name?' value="'+p.name+'"':"")+'/></div><div class="section"><span id="download_location_title">Location (City):</span><input type="text" id="download_location" maxlength="64"'+(p.location?' value="'+p.location+'"':"")+'/></div><div class="section"><span id="download_company_title">Company:</span><input type="text" id="download_company" maxlength="64"'+(p.company?' value="'+p.company+'"':"")+'/></div><div class="section"><span id="download_project_title">Project Description:</span><input type="text" id="download_project" maxlength="128"'+
(p.project?' value="'+p.project+'"':"")+'/></div><div class="section"><span id="download_phone_title">Phone Number:</span><input type="text" id="download_phone" maxlength="128"'+(p.phone?' value="'+p.phone+'"':"")+'/></div><div class="section"><span id="download_email_title">Email:</span><input type="text" id="download_email" disabled="disabled" value="'+user.userData.email+'"/></div></div><div class="unhighlight bottom"><div id="download_errors"></div><div id="details_downloading_submit_container"></div><div id="bottom_blurb" class="small_section">Catalogs will make every effort to get back to you quickly. Feel free to <a href="#feedback">contact us</a> if you\'re curious about the status of your application.</div></div></div>');
if(k[0].auths.approved&&k[0].auths.approved.length){var q=$j('<div class="column"></div>');n.append(q);q.append('<div class="unhighlight" id="alt">Alternatively, you may batch download the '+k[0].auths.approved.length+" track"+(k[0].auths.approved.length>1?"s":"")+" you are approved for:</div>");this.addTrackList(q,k[0].auths.approved);p=createButton("Download these tracks","batch_downloading_alternative","","javascript:;",function(){this.batchDownloader.override()});p.batchDownloader=this;q.append(p)}$j("#details_downloading_submit_container").append($j(createButton("Submit",
"details_downloading_submit","","javascript:;")).click(function(){$j(this).data("batchDownloader").submitDownloadRequest()}).data("batchDownloader",this));$j('a[href="#feedback"]',n).click(function(){$j(this).data("batchDownloader").hide()}).data("batchDownloader",this);break;case "Download authorized":p=k[0].files.length>1?"s":"";q="";for(var r=0;r<k[0].files.length;r++){var u=k[0].files[r];q+='<br/><a href="'+u.url+'" target="_blank">'+u.name+"</a>"}n.find(".download_title").append(p+" - Ready!");
this.fb.setHelp($j("<span>Use the following link"+p+" to download your tracks. These are a one time use links that may only be used by your account. If an error occurs during download, please contact "+config.name+" or go through the download process again.</span>"));n.append('<div class="unhighlight"><p>'+q.substring(5)+"</p></div>");break;case "queued":n.find(".download_title").append(" - Queued");n.append('<div class="unhighlight"><p>Your files are currently being bundled for easy downloading. If you stay on the site, you\'ll be notified when they\'re ready.</p><p class="email_blurb">You may also enter your email address and we\'ll send you an email when your tracks are available!</p><div id="email"><input type="text" value="'+
(user.userData.email?user.userData.email:"")+'"/></div><p class="stay_on_site">You may close this box and it <b>will not</b> affect your download.</p></div>');n.find("#email").append($j(createButton("Notify Me!","","",getDefaultLink(),function(){var v=$j("#batch_download_container #email input"),w=v.val();if(isEmail(w)){v.parent().find(".result").html("Notification enabled! We'll let you know.").addClass("success").removeClass("error");ajax("email="+escape(w)+$j(this).data("keyString"),"","POST",
"p=download_notifications")}else v.parent().find(".result").html("Please enter a valid email address").removeClass("success").addClass("error");$j(this).data("bd").position()})).data("bd",this).data("keyString","&keys[]="+k[0].keys.join("&keys[]="))).append('<div class="result"></div>');this.keys=k[0].keys;break;default:n.append('<div class="unhighlight"><p>'+k[0].result+"</p></div>")}n.append('<div class="clr"></div>');this.position()};this.generate=function(k){var n=createDiv("batch_download_container");
this.cont=n;this.fb=new FocusBox(n);this.showLoader(k)};this.init();this.show()}
function BatchDownloader(b){this.batches=b;this.cont=null;this.show=function(){this.cont.show()};this.hide=function(){this.cont.hide()};this.init=function(){var f=this.batches,j=this.batches.length>1?"s":"",k=$j('<div id="batch_download_container" class="batch_downloader"><div class="highlight"><h2>Download'+j+' Ready!</h2><a id="close" href="'+getDefaultLink()+'"></a></div><div class="unhighlight">Your download link'+j+':<br/></div><div class="highlight bottom"></div></div>');$j(".highlight a, #close",
k).click(function(){$j(this).data("bd").hide()}).data("bd",this);var n=k.find(".unhighlight:first");for(j=0;j<this.batches.length;j++)n.append('<a href="'+this.batches[j].url+'" target="_blank" class="download_link">'+this.batches[j].display+"</a>");k.find(".highlight.bottom").append($j(createButton("Close","","",getDefaultLink(),function(){$j(this).data("bd").hide()})).data("bd",this));n.find("a").click(function(){setTimeout("checkIn();",1E3)});this.cont=new FocusBox(k,false,true,$j("<span>"+(user.logged?
"You can find all your currently available downloads on your profile page's <a href=\""+getProfileLink(user.id,"downloads")+'">download tab</a>.':'If you <a href="'+getSignupLink()+"\">create an account</a>, you'll be able to track all your ready downloads on your profile page!")+"</span>"));if(currentDownloader&&currentDownloader.keys&&currentDownloader.keys.length&&currentDownloader.keys.length==f.length){var p=true;for(j=0;j<f.length;j++){k=false;for(n=0;n<currentDownloader.keys.length;n++)if(f[j].key==
currentDownloader.keys[n]){k=true;n=currentDownloader.keys.length}if(!k){p=false;j=f.length}}}p&&currentDownloader.hide()};this.init();this.show()}function findBatchDownload(b){ajax("p=download_notifications&key="+escape(b)+"&action=find","handleBatchDownloadFind")}function handleBatchDownloadFind(b){}
function Help(){this.inner=this.cont=null;this.swap=function(b){if(get("help_inner")){this.hide();return false}else{this.show(b);return true}};this.show=function(b){for(this.cont||this.init();this.inner.childNodes.length>1;)this.inner.removeChild(this.inner.childNodes[1]);this.inner.appendChild(b);this.cont.show()};this.showSecureHelp=function(b,f){var j=$j('<div id="secure_help"><h3>What is the Secure Site?</h3><p>You can think of '+config.name+" as having two modes - Secure Mode and Normal Mode. Right now, you're in the "+
(f?"former":"latter")+".</p><p>A lot of what you do on the site takes place in Normal Mode, which, despite the name, isn't all that insecure. You can browse tracks, tag them, email them, look through your history, etc. The majority of the site is accessed in Normal Mode</p><p>Secure Mode comes in when you're dealing with sensitive information or tasks, such as entering your password or editing track details (if you're a rep). While in Secure Mode, all communication between your computer and the "+
config.name+" server is encrypted and it's much more difficult for anyone with malicious intent to see what you're doing.</p><p>So why not just be in Secure Mode all the time? Well, all that encryption comes at a cost. The site's a little slower and your browser won't cache (store for your next visit) things like images, so they have to be redownloaded every visit which slows down the site even more. We want you to have the best experience possible so most of your activites take place using the faster Normal Mode, but when you're dealing with something sensitive, you'll want to Go Secure and we'll give you links to do just that.</p><p>Ok, so how do you switch back and forth? It's easy. We'll ask you if you want to Go Secure whenever it's necessary and once you've done it, there's a bar at the top to easily get you back. We make it as easy as possible.</p><p><b>Note:</b> When you switch modes, you lose your progress in whatever track you're listening to. If you want to listen to the track again, you can get right back to it using your Play History in the bottom bar.</p><p>Have any more questions? <a href=\"#feedback\">Let us know!</a> We're happy to help clarify however we can.</p>"+
(f?"</div>":"<p>Go to the secure site?</p></div>"));$j("a",j).click(function(){help.hide()});if(!f){j.append(createButton("Go Secure!","secure","","https://"+config.secureDomain+"/"+config.secureString+b));j.append(createButton("Nevermind","cancel","","javascript:;",function(){help.hide()}));j.append('<div class="clr"></div>')}this.show(j[0])};this.showProjectHelp=function(){var b=$j('<div id="secure_help"><h3>What are projects?</h3><p>Projects provide an easy way for you to organize groups of tracks so you can remember them for later, send them to others, or download them as a bundle.</p><p>For example, if you\'re working on a trailer for a new action film and you find a song that might be good for it, you could make a project called "action movie trailer". Then any other tracks you come across that would fit your project you can tag with the same phrase. When you want to view all the "action movie trailer" tracks you\'ve found, simply select it from the list of projects in the menu on the bottom bar or from the list on your user page.</p><p>If you\'re not sure how it works, just try it! Click the <img src="images/explorer/favFaded6.png"/> icon on any track list and add some terms. There\'s some more help on that page if you click the "huh?" near the top but you might want to just go ahead and try it. You can\'t mess anything up and once you\'ve added a few tracks, you\'ll get the hang of it!<p>'+
(!user.logged?'<p><b>Please note, you must be logged in to create projects.</b> You can <a href="'+getLoginLink()+'">log in</a>  or <a href="'+getSignupLink()+'">sign up</a> and the bottom of the page.</p>':"")+'<p>Have any more questions? <a href="#feedback">Let us know!</a> We\'re happy to help clarify however we can.</p>');b.append(createButton("Track List","secure","","#explorer"));user.logged&&b.append(createButton("Project List","cancel","",getProfileLink(user.userData.id,"favorites")));$j("a",
b).click(function(){help.hide()});this.show(b[0])};this.hide=function(){this.cont.hide()};this.init=function(){this.inner=createDiv("help_inner","",createA("close","",getDefaultLink(),function(){help.hide();return false},"",""));this.cont=new FocusBox(this.inner)}}var help=new Help;
function Rater(b,f,j,k,n){this.ratingFilled=createDiv("","rating_filled");this.ratingEmpty=createDiv("","rating_empty");this.container=createDiv("rater_"+b+"_"+f,"faux_button rating_container");this.defaultRating=j;this.itemType=b;this.itemId=f;this.fullWidth=68;this.starWidth=13;this.stars=5;this.currentVote=1;this.disabled=k;this.callback=n;this.setFill=function(p){filledWidth=Math.floor(p*this.stars*this.starWidth);if(filledWidth>this.fullWidth-this.starWidth)filledWidth=this.fullWidth;this.ratingFilled.style.width=
filledWidth+"px";this.ratingEmpty.style.left=filledWidth+"px";this.ratingEmpty.style.width=Math.max(this.fullWidth-filledWidth-2,0)+"px"};this.init=function(){this.setFill(this.defaultRating);this.container.appendChild(this.ratingFilled);this.container.appendChild(this.ratingEmpty);this.container.rater=this;if(!this.disabled){this.container.title="Click to vote!";this.container.onmouseover=function(){this.rater.over()};this.container.onmouseout=function(){this.rater.out()};this.container.onclick=
function(){this.rater.click()}}};this.init();this.over=function(){if(!this.disabled)this.container.onmousemove=function(p){this.rater.move(p)}};this.out=function(){this.container.onmousemove=null};this.move=function(p){if(this.disabled)this.out();else{p=p||window.event;pos=p.pageX||p.pageY?{x:p.pageX,y:p.pageY}:{x:p.clientX+d.body.scrollLeft-d.body.clientLeft,y:p.clientY+d.body.scrollTop-d.body.clientTop};p=getPosition(this.container);pos.x-=p.x;pos.y-=p.y;this.currentVote=Math.min(Math.floor((pos.x+
this.fullWidth/this.stars/2)/this.fullWidth*this.stars)/this.stars,1);this.setFill(this.currentVote)}};this.click=function(){ajax("v="+escape(this.currentVote),"get('"+this.container.id+"').rater.clickResponse","POST","p=rate&id="+this.itemId+"&type="+this.itemType);this.disabled=true;this.container.onmouseover=null;this.container.onmouseout=null;this.container.onclick=null;this.container.title="";requestCache.clear()};this.clickResponse=function(){alertManager.alert(createText("Rating saved!"));
this.callback&&this.callback(this.currentVote)};return this.container}function CommentsConfig(){this.itemId=0;this.callback=this.itemType=""}
function Comments(b){this.commentData=null;this.conf=b;this.sentData="";this.loadPage=function(f){ajax("p=comments&action=get&id="+this.conf.itemId+"&type="+this.conf.itemType+"&page="+f+"&dontcache="+(new Date).getTime(),this.conf.callback)};this.generatePage=function(f){removeChildren(f);f.appendChild(createDiv("comments_container","",createText("No comments yet")))};this.setData=function(f){this.commentData=f;var j=get("comments_container");if(j){removeChildren(j);for(var k=0;k<f[1].length;k++){var n=
f[1][k],p=createDiv("","comment_container"),q=generatePerson(n.user,"comment_container_person",getProfileLink(n.user.id));p.appendChild(q);var r=createDiv("","comment_right");r.appendChild(createDiv("","comment_date",createText(formatDate("F j, Y",n.date))));r.appendChild(text=createDiv("","comment_text"));text.innerHTML=n.text;p.appendChild(r);p.appendChild(createDiv("","clr"));j.appendChild(p);resizeText(q.childNodes[1],90,12);j.appendChild(createElement("hr"))}h2=createH2("Post a Comment:","",
"h2");p=createDiv("new_comment","comment_container",h2);if(user.logged){q=generatePerson(user.userData,"comment_container_person",getProfileLink(user.userData.id));p.appendChild(q);p.appendChild(createElement("textarea","comment_input"));p.appendChild(createSpan("comment_response"));p.appendChild(createButton("Post Comment","comment_post_button","",getDefaultLink(),function(){getComments().save();return false}))}else h2.appendChild(createA("","",getDefaultLink(),function(){login.show();return false},
"","(you must sign-in to leave a comment)"));p.appendChild(createDiv("","clr"));j.appendChild(p)}else console.log("comments unable to find container")};this.save=function(){if(user.logged){var f=get("comment_input").value;if(f!=""){ajax("text="+escape(f),"getComments().saveResponse","POST","p=comments&action=add&id="+this.conf.itemId+"&type="+this.conf.itemType);var j=get("new_comment");removeChildren(j);j.appendChild(createText("Saving..."));this.sentData=f}else this.showNotification("Please enter some text!")}else this.showNotification("You must sign-in to comment!")};
this.saveResponse=function(f){if(f&&f[0].result=="Success!"){f=get("new_comment");removeChildren(f);f.appendChild(createText("Comment Added"));this.loadPage("last")}else{this.setData(this.commentData);get("comment_input").value=this.sentData;this.showNotification(f[0].result)}};this.showNotification=function(f){get("comment_response").innerHTML=f}}function getComments(){if(currentPage=="details")return detailsPage.comments}
function showDocument(b){get("document_container")&&$j("#document_container").data("fb").hide();var f=$j('<div id="document_container" class="'+b+'_document_container"><h2 id="dc_title">Loading Document</h2><a href="javascript:;" id="close"></a><div id="dc_body">Loading...</div></div>'),j=new FocusBox(f);j.show();f.data("fb",j);$j("#close",f).click(function(){$j(this).data("fb").hide()}).data("fb",j);ajax("p=document&d="+b,"addDocumentBody")}
function addDocumentBody(b){$j("#dc_title").html(b[0].title);$j("#dc_body").html(b[0].body);$j("#document_container").data("fb").center()}
function showVersion(b){get("version_container")&&$j("#version_container").data("fb").hide();var f=$j('<div id="version_container" class="version_container"><a href="javascript:;" id="close"></a><h1>Site Updated!</h1><div id="version_list">Loading version list...</div><div id="version_body">Loading version details...</div></div>'),j=new FocusBox(f);j.show();f.data("fb",j);$j("#close",f).click(function(){$j(this).data("fb").hide()}).data("fb",j);ajax("p=version&v="+b,"addVersionBody")}
function addVersionBody(b){b=b[0];$j("#version_body").html(b.body);for(var f="",j=0;j<b.list.length;j++)f+='<a href="javascript:;"'+(b.v==b.list[j]?' class="selected"':"")+">"+b.list[j]+"</a>";f+="</ul>";$j("#version_list").html(f);$j("#version_list a").click(function(){ajax("p=version&v="+this.innerHTML,"addVersionBody")});$j("#version_container").data("fb").center()}
function showError(b){get("error_container")&&$j(".lightbox_container").remove();var f=$j('<div id="error_container" class="error_container"><h2 id="error_title">Error</h2><a href="javascript:;" id="close"></a><div id="error_body"></div></div>');f.find("#error_body").append(b).append(createButton("Close","error_button","","javascript:;"));b=createLightBox(f[0]);showLightBox(b);center(f);f.find("#close, .button").click(function(){hideLightBox($j(this).data("lb"))}).data("lb",b)}
function requireLogin(){get("require_login")&&$j("#require_login").data("fb").hide();new BinaryBox("The feature you're trying to access is only available to logged in users. Please <a href=\""+getLoginLink()+'">login</a>  or <a href="'+getSignupLink()+'">register</a> to continue.',function(){document.location=getLoginLink()},function(){document.location=getSignupLink()},"Login","Register",null)}
function Carousel(b,f,j){this.container=b;this.data=f;this.itemsShowing=0;this.link=j;this.scrollAmount=this.minPos=this.pos=0;this.scrollerHandle=this.scroller=null;this.left=function(){var k=get("carousel_interior_scroll",this.container);this.pos+=this.scrollAmount;if(this.pos>0)this.pos=0;animate(k,"left",this.pos,500);this.scroller&&animate(this.scrollerHandle,"left",Math.abs(this.pos/Math.abs(this.minPos)*(this.scroller.offsetWidth-this.scrollerHandle.offsetWidth-4))+1,500);this.setArrows()};
this.right=function(){var k=get("carousel_interior_scroll",this.container);this.pos-=this.scrollAmount;if(this.pos<this.minPos)this.pos=this.minPos;animate(k,"left",this.pos,500);this.scroller&&animate(this.scrollerHandle,"left",Math.abs(this.pos/Math.abs(this.minPos)*(this.scroller.offsetWidth-this.scrollerHandle.offsetWidth-4))+1,500);this.setArrows()};this.setArrows=function(){if(this.pos==0)get("carousel_left",this.container).className="carousel_left carousel_left_off";else get("carousel_left",
this.container).className="carousel_left";if(this.pos==this.minPos)get("carousel_right",this.container).className="carousel_right carousel_right_off";else get("carousel_right",this.container).className="carousel_right"};this.showScroller=function(){animate(this.scroller,"opacity",1,200)};this.hideScroller=function(k){if(!this.dragging){k=k||window.event;pos=k.pageX||k.pageY?{x:k.pageX,y:k.pageY}:{x:k.clientX+d.body.scrollLeft-d.body.clientLeft,y:k.clientY+d.body.scrollTop-d.body.clientTop};k=getPosition(car=
get("carousel",this.container));pos.x-=k.x;pos.y-=k.y;if(pos.x<=0||pos.y<=0||pos.x>=this.scroller.offsetWidth||pos.y>=this.scroller.offsetHeight+car.offsetHeight)animate(this.scroller,"opacity",0,200)}};this.startDrag=function(k){k=k||window.event;pos=k.pageX||k.pageY?{x:k.pageX,y:k.pageY}:{x:k.clientX+d.body.scrollLeft-d.body.clientLeft,y:k.clientY+d.body.scrollTop-d.body.clientTop};k=getPosition(this.scrollerHandle);pos.x-=k.x;pos.y-=k.y;this.startDragPos=pos.x;document.onmouseup=function(n){this.carousel.stopDrag(n)};
document.onmousemove=function(n){this.carousel.drag(n)};document.carousel=this;this.dragging=true};this.stopDrag=function(k){document.onmouseup=null;document.onmousemove=null;document.carousel=null;this.dragging=false;this.hideScroller(k)};this.drag=function(k){k=k||window.event;pos=k.pageX||k.pageY?{x:k.pageX,y:k.pageY}:{x:k.clientX+d.body.scrollLeft-d.body.clientLeft,y:k.clientY+d.body.scrollTop-d.body.clientTop};k=getPosition(this.scroller);pos.x-=k.x;pos.y-=k.y;k=pos.x-this.startDragPos;if(k<
1)k=1;else if(k>this.scroller.offsetWidth-this.scrollerHandle.offsetWidth-3)k=this.scroller.offsetWidth-this.scrollerHandle.offsetWidth-3;this.pos=0-(k-1)/(this.scroller.offsetWidth-this.scrollerHandle.offsetWidth-4)*Math.abs(this.minPos);get("carousel_interior_scroll",this.container).style.left=this.pos+"px";this.scrollerHandle.style.left=k+"px";this.setArrows()};this.init=function(){var k=this.data.length,n=this.container.offsetWidth;this.itemsShowing=Math.floor((n-50)/97);var p=Math.floor((n-50)%
97/this.itemsShowing/2);if(k<this.itemsShowing){p=Math.floor((n-50-k*97)/2/k);this.itemsShowing=k;this.minPos=0}else{this.minPos=0-(97+p*2)*k+(n-50);this.scrollAmount=(97+p*2)*this.itemsShowing}n=createDiv("carousel");n.appendChild(left=createA("carousel_left","carousel_left",getDefaultLink(),function(){this.carousel.left();return false},"",""));left.carousel=this;n.appendChild(interior=createDiv("carousel_interior"));interior.appendChild(interior_scroll=createDiv("carousel_interior_scroll"));interior_scroll.style.width=
(97+p*2)*k+"px";for(var q=0;q<k;q++){var r=generatePerson(this.data[q],"",this.link(this.data[q].id,profilePage.currentUser));r.style.padding="0px "+(p+5)+"px";interior_scroll.appendChild(r)}n.appendChild(right=createA("carousel_right","carousel_right",getDefaultLink(),function(){this.carousel.right();return false},"",""));right.carousel=this;n.appendChild(createDiv("","clr"));b.appendChild(n);if(this.minPos!=0){n.onmouseover=function(){this.carousel.showScroller()};n.onmouseout=function(u){this.carousel.hideScroller(u)};
n.carousel=this;this.scroller=createDiv("carousel_scroller");this.scroller.appendChild(this.scrollerHandle=createDiv("carousel_scroller_handle","faux_button"));this.scrollerHandle.onmousedown=function(u){this.carousel.startDrag(u);return false};this.scrollerHandle.carousel=this;this.scroller.onmouseover=function(){this.carousel.showScroller()};this.scroller.onmouseout=function(u){this.carousel.hideScroller(u)};this.scroller.carousel=this;b.appendChild(this.scroller)}this.setArrows()};this.init()}
function ColorWheel(){this.adeg=this.hue=60;this.val=this.sat=1;this.squarecolor="#ffff00";this.pickindex=0;this.threec=new Array("#666666","#555555","#545657");this.prevc=this.threec[2];this.picary=new Array("picka","pickb","pickc","pickd","picke","pickf","pickg");this.initary=new Array("#444444","#777777","#aaaaaa","#bbbbbb","#cccccc","#dddddd","#eeeeee");this.BrowserDetectXLite=function(){var b=navigator.userAgent.toLowerCase();this.ua=b;this.isIE=b.indexOf("msie")!=-1&&b.indexOf("opera")==-1&&
b.indexOf("webtv")==-1;this.isSafari=b.indexOf("safari")!=-1;this.versionMinor=parseFloat(navigator.appVersion);if(this.isIE&&this.versionMinor>=4)this.versionMinor=parseFloat(b.substring(b.indexOf("msie ")+5));this.versionMajor=parseInt(this.versionMinor);this.isWin32=(this.isWin=b.indexOf("win")!=-1)&&(b.indexOf("95")!=-1||b.indexOf("98")!=-1||b.indexOf("nt")!=-1||b.indexOf("win32")!=-1||b.indexOf("32bit")!=-1);this.isMac=b.indexOf("mac")!=-1;this.isIE4x=this.isIE&&this.versionMajor==4;this.isIE4up=
this.isIE&&this.versionMajor>=4;this.isIE5x=this.isIE&&this.versionMajor==5;this.isIE55=this.isIE&&this.versionMinor==5.5;this.isIE5up=this.isIE&&this.versionMajor>=5;this.isIE6x=this.isIE&&this.versionMajor==6;this.isIE6up=this.isIE&&this.versionMajor>=6;this.isIE7x=this.isIE&&this.versionMajor==7;this.isIE7up=this.isIE&&this.versionMajor>=7;this.isIE8x=this.isIE&&this.versionMajor==8;this.isIE8up=this.isIE&&this.versionMajor>=8;this.isIE4xMac=this.isIE4x&&this.isMac};this.browser=new this.BrowserDetectXLite;
this.deMoronize=function(){browser=colorWheel.browser;if((browser.isIE55||browser.isIE6up)&&browser.isWin32)get("wheel").onclick=function(){colorWheel.pickColor()};else{wheel=get("wheel");removeChildren(wheel);i=createImg("","","images/shared/hsvwheel.png");i.onclick=function(){colorWheel.pickColor()};wheel.appendChild(i)}this.capture()};this.hsv2rgb=function(b,f,j){H=b/360;if(f==0){R=j*255;G=j*255;B=j*255}else{var_h=H*6;var_i=Math.floor(var_h);var_1=j*(1-f);var_2=j*(1-f*(var_h-var_i));var_3=j*(1-
f*(1-(var_h-var_i)));if(var_i==0){var_r=j;var_g=var_3;var_b=var_1}else if(var_i==1){var_r=var_2;var_g=j;var_b=var_1}else if(var_i==2){var_r=var_1;var_g=j;var_b=var_3}else if(var_i==3){var_r=var_1;var_g=var_2;var_b=j}else if(var_i==4){var_r=var_3;var_g=var_1;var_b=j}else{var_r=j;var_g=var_1;var_b=var_2}R=Math.round(var_r*255);G=Math.round(var_g*255);B=Math.round(var_b*255)}return new Array(R,G,B)};this.rgb2hex=function(b){cary=[];cary[3]="#";for(i=0;i<3;i++){cary[i]=parseInt(b[i]).toString(16);if(cary[i].length<
2)cary[i]="0"+cary[i];cary[3]+=cary[i];cary[i+4]=b[i]}return cary};this.webRounder=function(b,f){thec="#";for(i=0;i<3;i++){num=Math.round(b[i+4]/f)*f;numc=num.toString(16);if(String(numc).length<2)numc="0"+numc;thec+=numc}return thec};this.hexColorArray=function(b){this.threec[2]=b[3];this.threec[1]=this.webRounder(b,17);this.threec[0]=this.webRounder(b,51);return false};this.capture=function(){this.hoverColor();this.initColor();if(document.layers){layobj=document.layers.wheel;layobj.document.captureEvents(Event.MOUSEMOVE);
layobj.document.onmousemove=function(b){colorWheel.mouseMoved(b)}}else if(document.all){layobj=document.all.wheel;layobj.onmousemove=function(b){colorWheel.mouseMoved(b)}}else if(document.getElementById)window.document.getElementById("wheel").onmousemove=function(b){colorWheel.mouseMoved(b)}};this.stopCapture=function(){if(document.layers){layobj=document.layers.wheel;layobj.document.captureEvents(Event.MOUSEMOVE);layobj.document.onmousemove=""}else if(document.all){layobj=document.all.wheel;layobj.onmousemove=
""}else if(document.getElementById)window.document.getElementById("wheel").onmousemove=""};this.greyMoved=function(b,f){this.adeg=this.hue;xside=b<=553?b-296:256;yside=f<=256?f:256;this.sat=xside/256;this.val=1-yside/256;c=this.rgb2hex(this.hsv2rgb(this.hue,this.sat,this.val));this.hexColorArray(c);this.hoverColor();return false};this.mouseMoved=function(b){if(document.layers){x=b.layerX;y=b.layerY}else if(document.all){x=event.offsetX;y=event.offsetY+get("header").offsetHeight}else if(document.getElementById){x=
b.pageX-document.getElementById("wheel").offsetLeft;y=b.pageY-document.getElementById("wheel").offsetTop}y-=get("header").offsetHeight;if(x>=296){this.greyMoved(x,y);return false}if(y>256)return false;cartx=x-128;carty=128-y;cartx2=cartx*cartx;carty2=carty*carty;cartxs=cartx<0?-1:1;cartys=carty<0?-1:1;cartxn=cartx/128;rraw=Math.sqrt(cartx2+carty2);rnorm=rraw/128;if(rraw==0){this.val=this.sat=0;rgb=new Array(0,0,0)}else{arad=Math.acos(cartx/rraw);aradc=carty>=0?arad:2*Math.PI-arad;this.adeg=360*aradc/
(2*Math.PI);if(rnorm>1){rgb=new Array(255,255,255);this.val=this.sat=1}else{if(rnorm>=0.5){this.sat=1-(rnorm-0.5)*2;this.val=1}else{colorWheel.sat=1;colorWheel.val=rnorm*2}rgb=this.hsv2rgb(this.adeg,this.sat,this.val)}}c=this.rgb2hex(rgb);this.hexColorArray(c);this.hoverColor();return false};this.hoverColor=function(){threec=this.threec;return false};this.pickColor=function(){threec=this.threec;if(threec[2]==this.prevc)return false;this.prevc=threec[2];this.doCallback(threec[2]);this.pickindex+=1;
if(this.pickindex>=this.picary.length)this.pickindex=0;this.setSquare(this.adeg);return false};this.setSquare=function(b){this.adeg=this.hue=b;c=this.rgb2hex(this.hsv2rgb(this.hue,1,1));squarecolor=c[3];if(document.layers)document.layers.wheel.bgColor=squarecolor;else if(document.all)document.all.wheel.style.backgroundColor=squarecolor;else if(document.getElementById)document.getElementById("wheel").style.backgroundColor=squarecolor};this.initColor=function(){initary=this.initary};this.theToggle=
function(b,f){for(var j=document.getElementsByTagName("div"),k=0;k<j.length;k++)if(j.item(k).id==b)j.item(k).style.display=f};this.reHue=function(b){b%=360;this.setSquare(b);rgb=this.hsv2rgb(b,sat,val);c=this.rgb2hex(rgb);this.hexColorArray(c);this.hoverColor();return false};this.doCallback=function(b){this.callback&&this.callback(b)};this.createWheel=function(b,f){wheel=createDiv("wheel");wheel.innerHTML="<img src=\"images/shared/blank.gif\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/shared/hsvwheel.png', sizingMethod='scale')\" />";
b.appendChild(wheel);this.deMoronize();this.callback=f};this.destroyWheel=function(b){this.stopCapture();b.removeChild(get("wheel"))}}var colorWheel=new ColorWheel,subButtonLocations=[];function updateSubButtons(b,f,j){for(var k=0;k<subButtonLocations.length;k++)if(button=get("sub_button_"+b+"_"+f+"_"+subButtonLocations[k]))button.button.setSubscribedDisplayState(j)}
function SubscriptionButton(b,f,j,k){this.isArtist=b;this.id=f;this.subscribed=j;this.location=k;this.container=null;this.init=function(){this.container=createA("sub_button_"+this.isArtist+"_"+this.id+"_"+this.location,"subscription_button",getDefaultLink(),function(){this.button.swapSubscribedState();return false},"",this.isArtist?"artist":"music rep");this.container.button=this;if(subButtonLocations.indexOf(this.location)==-1)subButtonLocations[subButtonLocations.length]=this.location;this.setSubscribedDisplayState(this.subscribed)};
this.swapSubscribedState=function(){if(user.logged){this.subscribed=!this.subscribed;updateSubButtons(this.isArtist,this.id,this.subscribed)}ajax("p=sub&"+(this.isArtist?"a=":"r=")+this.id+"&s="+(this.subscribed?1:0),"alertManager.basicResultAlert");requestCache.clear()};this.setSubscribedDisplayState=function(n){var p="subscription_button_"+(this.isArtist?"artist":"rep");this.container.className=n?"subscription_button subscription_button_subscribed "+p:"subscription_button "+p;this.subscribed=n};
this.response=function(n){alertManager.notify(createText(n[0].result))};this.init();return this.container}
function BinaryBox(b,f,j,k,n,p){this.yesFunction=f;this.noFunction=j;this.child=p;this.div=null;this.init=function(q,r,u){var v=createDiv("binary_box_container","",temp=createDiv("text_container"));temp.innerHTML=q;v.appendChild(a=createButton(r,"binary_box_yes","",getDefaultLink(),function(){this.bb.yes();return false}));a.bb=this;v.appendChild(a=createButton(u,"binary_box_no","",getDefaultLink(),function(){this.bb.no();return false}));a.bb=this;v.appendChild(a=createA("close","",getDefaultLink(),
function(){this.bb.hide()}));a.bb=this;this.div=new FocusBox(v);this.div.show()};this.yes=function(){var q=true;if(this.yesFunction!=null)if(this.yesFunction(this.child,this))q=false;q&&this.hide()};this.no=function(){var q=true;if(this.noFunction!=null)if(this.noFunction(this.child,this))q=false;q&&this.hide()};this.hide=function(){if(this.div!=null){this.div.hide();this.div=null}};this.showError=function(q){this.div.div.find(".error").remove();q&&this.div.div.find("#text_container").after('<div class="error">'+
q+"</div>")};this.init(b,k,n)}
function InputBox(b,f,j,k,n,p,q){this.successFunction=f;this.cancelFunction=j;this.child=p;this.div=null;this.input={};this.init=function(r,u,v,w){var I=createDiv("input_box_container","");I.appendChild(createDiv("","",createText(r)));I.appendChild(this.input=createElement("input","",""));this.input.type="text";this.input.box=this;checkForEnter(this.input,"this.box.success()");if(w)this.input.value=w;I.appendChild(a=createButton(u,"input_box_success","",getDefaultLink(),function(){this.ib.success();
return false}));a.ib=this;I.appendChild(a=createButton(v,"input_box_cancel","",getDefaultLink(),function(){this.ib.cancel();return false}));a.ib=this;I.appendChild(a=createA("close","",getDefaultLink(),function(){this.ib.hide()}));a.ib=this;this.div=new FocusBox(I);this.div.show();this.input.focus()};this.success=function(){var r=true;if(this.successFunction!=null)if(this.successFunction(this.child,this.input.value,this))r=false;r&&this.hide()};this.cancel=function(){var r=true;if(this.cancelFunction!=
null)if(this.cancelFunction(this.child,this.input.value,this))r=false;r&&this.hide()};this.hide=function(){if(this.div!=null){this.div.hide();this.div=null}};this.showError=function(r){this.div.div.find(".error").remove();r&&this.div.div.find("input[type=text]").after('<div class="error">'+r+"</div>")};this.init(b,k,n,q)}
function SuggestionBox(b){this.req=0;this.i=null;this.lastInput="";this.type=b;this.currentData=null;this.skipHide=false;this.highlightPos=0;this.reset=function(){this.req=0;this.lastInput=""};this.suggest=function(f){if(this.i.value=="")this.hideSuggestions();else if(!(this.i.value==this.lastInput&&!f)){this.lastInput=this.i.value;this.req++;currentSuggestionBox=this;ajax("p=list&type="+this.type+"&part="+escape(this.i.value)+"&req="+this.req,"currentSuggestionBox.populate")}};this.populate=function(f){this.currentData=
f;f=f[0];if(f.req==this.req){this.hideSuggestions();input=this.i;var j=getPosition(input),k=getDimensions(input);suggestions=createDiv("suggestion_box");suggestions.style.width=k.width-2+"px";suggestions.style.top=j.y+k.height-get("header").offsetHeight+"px";suggestions.style.left=j.x+"px";for(j=0;j<f.items.length&&j<=5;j++){suggestions.appendChild(a=createA("","suggestion",getDefaultLink(),"","",f.items[j]));a.innerHTML=caselessBold(f.items[j],this.lastInput);a.value=f.items[j];a.onfocus=function(){this.input.suggestionBox.hideDiv();
this.input.value=this.value;this.input.focus();this.input.suggestionBox.suggest(true);return false};a.input=input}get("body").appendChild(suggestions)}};this.hideSuggestions=function(){if(suggestions=get("suggestion_box"))get("body").removeChild(suggestions)};this.inputKeyPress=function(f){code=f?f.keyCode:window.event.keyCode;(code==38||code==40)&&get("suggestion_box")?this.showDiv(code):this.suggest()};this.spanKeyPress=function(f){code=f?f.keyCode:window.event.keyCode;if(code==38||code==40)this.divHighlight(code);
else if(code==13||code==32)this.populateFromDiv();return false};this.mouseClick=function(f){f=f||window.event;pos=f.pageX||f.pageY?{x:f.pageX,y:f.pageY}:{x:f.clientX+d.body.scrollLeft-d.body.clientLeft,y:f.clientY+d.body.scrollTop-d.body.clientTop};f=getPosition(g=get("suggestion_div"));var j=getDimensions(g),k=getDimensions(get("suggestion_box"));if(pos.x<f.x||pos.y<f.y||pos.x>f.x+j.width||pos.y>f.y+j.height+k.height)this.hideDiv(true);return true};this.showDiv=function(f){input=this.i;this.skipHide=
true;input.blur();this.div=createDiv("suggestion_div","suggestion_div");this.populate(this.currentData);var j=getPosition(input);this.div.style.width=getDimensions(input).width-3+"px";this.div.style.top=j.y-get("header").offsetHeight+"px";this.div.style.left=j.x+"px";input.hiding=true;this.div.innerHTML=input.value;this.div.suggestionBox=this;this.div.onclick=function(){this.suggestionBox.hideDiv()};get("body").appendChild(this.div);currentSuggestionBox=this;document.onkeypress=function(k){return currentSuggestionBox.spanKeyPress(k)};
document.onmousedown=function(k){return currentSuggestionBox.mouseClick(k)};this.highlightPos=0;this.divHighlight(f)};this.hideDiv=function(f){if(this.i.hiding){this.hideSuggestions();this.lastInput="";this.i.hiding=false;f||this.i.focus();get("body").removeChild(this.div);document.onkeypress=function(){};document.onmousedown=function(){}}};this.divHighlight=function(f){if(s=get("suggestion_box")){var j=s.getElementsByTagName("a");this.highlightPos+=f==40?1:-1;if(this.highlightPos<0)this.highlightPos=
j.length+this.highlightPos;else if(this.highlightPos>j.length)this.highlightPos=j.length-this.highlightPos;if(this.highlightPos<=0)this.hideDiv();else for(f=0;f<j.length;f++)j[f].className=f+1==this.highlightPos?"suggestion suggestion_selected":"suggestion"}};this.populateFromDiv=function(){if(s=get("suggestion_box")){for(var f=s.getElementsByTagName("a"),j=0;j<f.length;j++){var k=f[j];if(j+1==this.highlightPos){this.i.value=k.value;break}}this.hideDiv()}};this.i=d.createElement("input");this.i.type=
"text";this.i.onkeyup=function(f){this.suggestionBox.inputKeyPress(f)};this.i.onblur=function(){currentSuggestionBox=this.suggestionBox;currentSuggestionBox.skipHide||setTimeout("currentSuggestionBox.hideSuggestions()",100);currentSuggestionBox.skipHide=false};this.i.onfocus=function(){this.suggestionBox.suggest(true)};this.i.suggestionBox=this;return this.i}var playButtonLocations=[];
function generatePlayButton(b,f,j){playButtonLocations.indexOf(f)==-1&&playButtonLocations.push(f);var k=d.createElement("img");k.id="track_list_"+b+"_play_button_"+f;k.className="faux_button";k.src="images/explorer/"+(j?"pause":"play")+".gif";k.name=b;k.location=f;k.onclick=function(){if(player.playingTrack==this.name)player.playPause();else{player.currentSource=this.location;player.playTrack(this.name);shadowfax.showTrack(this.name);getTrackList().highlightTrack(this.name)}};return k}
function generateDownloadButton(b,f,j,k,n){var p="";if(b=="track")p="track_id="+f.id;else if(b=="tag")p="tag_id="+f.id+"&user_id="+f.userId;else if(b=="project")p="project_id="+f.id;else if(b=="album")p="album_id="+f.id;else if(b=="code")p="code="+f;if(j){j=$j(createButton("Download","","download_button",getDefaultLink()));j.find(".middle").html("").append('<img src="images/explorer/download.png"/>Download')}else j=$j('<a href="'+getDefaultLink()+'" class="download_button"><img src="/images/explorer/download'+
(f.can_download==0?"Faded":"")+'.png"/></a>');f.can_download!=0?j.click(function(){var q=$j(this);if(q.data("type")=="track")document.location="download.php?"+q.data("idString")+"&type="+user.getOption("default_download_format")+"&source=list";else new Downloader(q.data("type"),q.data("item"));this.blur();q.mouseout();return false}).hover(function(){var q=$j(this);q.data("timer")&&clearTimeout(q.data("timer"));downloadSelectorItem=q.data("item");window.extraHoverOn=q.data("extraHoverOn");window.extraHoverOff=
q.data("extraHoverOff");q.data("timer",setTimeout("new DownloadFormatSelector('"+q.data("type")+"', downloadSelectorItem, currentSelectorAnchor, window['extraHoverOn'], window['extraHoverOff']); downloadSelectorItem = null; delete window['extraHoverOn']; delete window['extraHoverOff'];",500));currentSelectorAnchor=q},function(){var q=$j(this);q.data("timer")&&clearTimeout(q.data("timer"));delete currentSelectorAnchor}).data("type",b).data("idString",p).data("item",f).data("extraHoverOn",k?k:false).data("extraHoverOff",
n?n:false):j.click(function(){var q=$j(this);new Downloader(q.data("type"),q.data("item"));return false}).attr("title","Click to check download authorization").data("item",f).data("type",b);return j.get(0)}
function generateEmailButton(b,f,j){if(j){j=$j(createButton("Email","","email_button",getDefaultLink()));j.find(".middle").html("").append('<img src="images/shared/email-16.png"/>Email')}else j=$j('<a href="'+getDefaultLink()+'"><img src="images/shared/email-16.png"/></a>');j.click(function(){var k=$j(this);new Emailer(k.data("type"),k.data("id"),k.data("item"));this.blur();return false}).data("id",f.id).data("type",b).data("item",f);j.attr("title","Click to send this "+b+" to someone");return j.get(0)}
function generateQuickProjectModeButton(b,f){return $j('<a href="'+getDefaultLink()+'" title="Click to add or remove tracks or albums from this project" class="quick_project_button'+(f?" small":"")+'"><img src="images/buttons/project_'+(projector.isQuickProject(b.id)?"lit":"inactive")+(f?"_small":"")+'.png"/></a>').click(function(){projector.toggleQuickProjectMode($j(this).data("project"));this.blur();return false}).data("project",b).get(0)}
function generateQuickProjectTrackButton(b){var f=trackBank.find(b);if(f){f=projector.hasAllQuickProjects(f.user_projects);return $j('<a href="'+getDefaultLink()+'" class="quick_project_button"><img src="images/buttons/project_'+(f?"remove":"add")+'.png" class="quick_project_track_image_'+b+'"/></a>').click(function(){var j=$j(this).find("img").attr("src").indexOf("add")>0;projector.addQuickProjectTrack($j(this).data("trackId"),j);return false}).data("trackId",b).get(0)}}
function generateQuickProjectAlbumButton(b){var f=projector.hasAllQuickProjects(b.user_projects);return $j('<a href="'+getDefaultLink()+'" class="quick_project_button"><img src="images/buttons/project_'+(f?"remove":"add")+'.png" class="quick_project_album_image_'+b.id+'"/></a>').click(function(){var j=$j(this).find("img").attr("src").indexOf("add")>0;projector.addQuickProjectAlbum($j(this).data("album"),j);return false}).data("album",b).get(0)}
function generateProjectEditButton(b){return $j('<a href="'+getDefaultLink()+'" title="Click to change the name of this project"><img src="images/shared/edit.png"/></a>').click(function(){var f=$j(this).data("project");new InputBox('Change the name of project "'+f.name+'"',function(j,k,n){return projector.editProject(j,k,n)},null,"Save","Cancel",f,f.name)}).data("project",b).get(0)}
function generateProjectMakeCreatedButton(b){return $j('<a href="'+getDefaultLink()+'" title="Click to save this received project to your personal project list"><img src="images/shared/copy.png"/></a>').click(function(){var f=$j(this).data("project");projector.makeCreated(f)}).data("project",b).get(0)}
function generateProjectCopyButton(b){return $j('<a href="'+getDefaultLink()+'" title="Click to make a copy of this project"><img src="images/shared/copy.png"/></a>').click(function(){var f=$j(this).data("project");new InputBox('What do you want to name the copy of "'+f.name+'"?',function(j,k,n){return projector.copyProject(j,k,n)},null,"Copy","Cancel",f,f.name)}).data("project",b).get(0)}
function generateProjectRemoveButton(b){return $j('<a href="'+getDefaultLink()+'" title="Click to permanently delete this project"><img src="images/shared/delete.png"/></a>').click(function(){var f=$j(this).data("project");new BinaryBox("Are you sure you want to delete project "+f.name,function(j,k){return projector.removeProject(j,k)},null,"Yes, delete","No",f)}).data("project",b).get(0)}
function generateProjectTagCopyButton(b){return $j('<a href="'+getDefaultLink()+'" title="Click to save to your projects"><img src="images/shared/copy.png"/></a>').click(function(){var f=$j(this).data("tag");ajax("tagId="+f.id+"&tagUserId="+f.userId,"projector.tagCopyResponse","POST","p=projects&action=create_from_tag")}).data("tag",b).get(0)}
function generateFeatureButton(b,f,j,k,n){var p=$j('<a href="javascript:;"><img src="/images/explorer/feature'+(n?"":"Faded")+'.png"/></a>');p.click(function(){var q=$j(this),r=q.data("featured");r=r?0:1;q.data("featured",r);$j("img",q).attr("src","/images/explorer/feature"+(r?"":"Faded")+".png");ajax("p="+q.data("type")+"_details&id="+q.data("id")+"&lId="+q.data("labelId")+"&cId="+q.data("catalogId")+"&feature="+(r?"1":"0"));this.blur()}).data("id",b).data("type",k).data("featured",n).data("labelId",
f).data("catalogId",j);p.attr("title","Click to swap this "+k+"'s feature status");return p.get(0)}function setupDefaultValueInputBox(b,f){b.def=f;if(trim(b.value)=="")b.value=f;b.defaultValueFocus=function(){if(trim(this.value)==this.def)this.value=""};b.defaultValueBlur=function(){if(trim(this.value)=="")this.value=this.def};$j(b).blur(function(){this.defaultValueBlur()}).focus(function(){this.defaultValueFocus()})}
function checkForEnter(b,f){$j(b).keypress(function(j){code=j?j.keyCode:window.event.keyCode;if(code==13){eval($j(this).data("checkForEnterCallback"));return false}return true}).data("checkForEnterCallback",f)}
function checkPassword(){if(user.logged&&user.userData.tempPassword){if(config.secure){b=$j('<div id="password_changer"><h2>You\'re using a temporary password!</h2><p>Please enter a new password. You may use the same password if you want to.</p><p id="password">New Password: <input type="password"/><span class="information">Passwords must be at least 6 characters and contain at least 1 letter and 1 number</span></p><p id="conf">Confirm Password: <input type="password"/><span class="information"></span></p></div>').append(createButton("Save","save_password",
"","javascript:;",function(){savePassword();return false})).get(0);f=createLightBox(b)}else var b=$j('<div id="password_changer"><h2>You\'re using a temporary password!</h2></div>').append(getSecureA("","Please click here to change it something easier to remember")).get(0),f=createLightBox(b);showLightBox(f);center(b)}}
function savePassword(){var b=false,f=false,j=trim($j("#password_changer #password input").val()),k=trim($j("#password_changer #conf input").val());if(j){$j("#password_changer #password .information").removeClass("error").html("");$j("#password_changer #conf .information").removeClass("error").html("");if(j.length<6){$j("#password_changer #password .information").addClass("error").removeClass("success").html("Password must be at least 6 characters");f=true}else if(j.match(/[0-9]/)==null||j.match(/[a-zA-Z]/)==
null){$j("#password_changer #password .information").addClass("error").removeClass("success").html("Password must contain at least 1 letter and 1 number");f=true}else if(k)if(j!=k){$j("#password_changer #conf .information").addClass("error").removeClass("success").html("Confirmation does not match! Please reenter");f=true}else b=true;else{$j("#password_changer #conf .information").addClass("error").removeClass("success").html("Please reenter your new password to confirm");f=true}}else $j("#password_changer #password .information").addClass("error").html("You must enter a new password to continue");
b&&!f&&ajax("password="+escape(j),"savePasswordResponse","POST","p=account&action=edit")}function savePasswordResponse(b){if(b[0].result.password=="success"){user.userData.tempPassword=false;alertManager.alert(createText("New password saved!"));$j("#password_changer").parent().remove()}else $j("#password_changer #password .information").addClass("error").html(b[0].result.password)};function BreadCrumbs(){this.cont=get("breadcrumb_container",sa.header);this.crumbs=null;this.showUpdated=function(){var b=$j(this.cont);b.addClass("updated");b.html('Site updated! Please <a href="javascript:;">refresh</a> to get the latest features and fixes.');b.find("a").click(function(){location.reload(true)})};this.init=function(){this.cont.appendChild(this.crumbs=createDiv("breadcrumbs","max_width"))};this.init()}var breadCrumbs;
function Nav(){this.cont=get("nav_container",sa.header);this.tabs=[];this.resetNav=function(){for(var b=0;b<this.tabs.length;b++)get("nav_"+this.tabs[b].hash,this.cont).className=this.tabs[b].color};this.setNav=function(b){for(var f=0;f<this.tabs.length;f++)if(this.tabs[f].hash==b)get("nav_"+this.tabs[f].hash,this.cont).className="gray"};this.init=function(){this.tabs=config.tabs;for(var b=this.tabs.length-1;b>=0;b--){var f=createA("","faux_button","#"+this.tabs[b].hash);f.appendChild(createRoundedDiv("nav_"+
this.tabs[b].hash,this.tabs[b].color,createSpan("","",createText(this.tabs[b].text)),false,true));this.cont.appendChild(f)}};this.init()}var nav;
function Browse(){this.init=function(){var b=get("browse_container",sa.header),f=createDiv("browse_content");b.appendChild(createRoundedDiv("","",f));f.appendChild(createH2("Browse"));f.appendChild(createButton("Moods","","browse_button","#",function(){cloudBrowser.showCloud("moods");return false}));f.appendChild(createButton("Styles","","browse_button right","#",function(){cloudBrowser.showCloud("styles");return false}));f.appendChild(createDiv("","clr"))};this.init()}var browse;
function Heading(){this.show=function(b,f,j,k){if(!get("heading")){var n;if(n=k?k:get("right_content")){k=createDiv("heading",k?"wide":"");n.insertBefore(k,n.childNodes[0]);n=$j(k).width()-10;if(f){k.appendChild(headerSpan=createSpan("preamble"));headerSpan.innerHTML=f;n-=$j(headerSpan).outerWidth()}k.appendChild(textSpan=createSpan("text"));textSpan.innerHTML=b;if(j){j.addClass("options");$j(k).append(j);n-=j.outerWidth()}resizeText(textSpan,n,24)}}};this.hide=function(){$j("#right_content #heading").remove()}}
var heading=new Heading;
function SourceAudio(){this.interval=this.footer=this.body=this.header=null;this.createHeader=function(){this.header.innerHTML='<div class="max_width"><a href="'+getHomeLink()+'" id="logo" onfocus="this.blur()"><img src="'+config.logo+'"/></a>'+(config.showBrowse?'<div id="browse_container"></div>':"")+'<div id="search_container"></div><div id="nav_container"></div></div><div id="breadcrumb_container"></div>';search=new Search;nav=new Nav;breadCrumbs=new BreadCrumbs;if(config.showBrowse)browse=new Browse};
this.createFooter=function(){var b='<div class="max_width"><div id="footer_nav">';if(config.id)b+=config.name+" powered by SourceAudio <span>|</span> ";for(var f=0;f<config.footerPages.length;f++){b+='<a href="#'+config.footerPages[f].hash+'">'+config.footerPages[f].text+"</a>";if(f+1<config.footerPages.length)b+=" <span>|</span> "}b+="</div></div>";this.footer.innerHTML=b;shadowfax=new Shadowfax;if(config.secure||config.linkBack)glamdring=new Glamdring};this.start=function(){if(!this.interval){firstCheck=
true;this.interval=setInterval("checkPage()",250)}};this.init=function(){removeChildren(document.body);document.body.appendChild(this.header=createDiv("header"));this.createHeader();document.body.appendChild(this.body=createDiv("body"));document.body.appendChild(this.footer=createDiv("footer"));document.body.appendChild(createDiv("shadowfax"));if(config.secure||config.linkBack)document.body.appendChild(createDiv("glamdring"));this.createFooter();setTimeout("sa.start()",1E3)}}$j(document).ready(function(){initialize()});
function initialize(){if(window.forceReload)document.location=config.secure?"https://"+config.secureDomain+"#"+getHash():"http://"+config.insecureDomain+"#"+getHash();else if(!BrowserDetect.isIE6down){sa=new SourceAudio;sa.init()}};function DetailsPage(){this.trackData=null;this.catalogId=this.trackId=0;this.page="";this.subRep=this.subArtist=null;this.editOn=this.allowEdit=false;this.fieldLengths={title:64,description:255,artist:256,album:256,publisher:256};this.genresData=null;this.similarTrackListConfig=new TrackListConfig;this.similarTrackListConfig.columnList=getStandardColumnList();this.similarTrackListConfig.defaultResultsPerPage=5;this.similarTrackListConfig.resultsPerPageCookie=false;this.similarTrackListConfig.pagination=
false;this.similarTrackListConfig.resultCountChanging=false;this.similarTrackListConfig.headerBackground=false;this.similarTrackListConfig.sortable=false;this.similarTrackListConfig.callback="detailsPage.setSimilar";this.similarTrackListConfig.bankKey="details_similar";this.similarTrackList=new TrackList(this.similarTrackListConfig);this.alternateTrackListConfig=new TrackListConfig(this.similarTrackListConfig);this.alternateTrackListConfig.defaultResultsPerPage=50;this.alternateTrackListConfig.callback=
"detailsPage.setAlternates";this.alternateTrackListConfig.bankKey="details_alternate";this.alternateTrackList=new TrackList(this.alternateTrackListConfig);this.loadPage=function(b,f){switch(f){case "details":ajax("p=track_info&customs=1&"+b,"detailsPage.setData");this.similarTrackList.loadPage(b.replace("id","sim"));this.alternateTrackList.loadPage(b.replace("id","alt"));break;case "download":ajax("p=track_info&customs=1&"+b,"detailsPage.setDownloadPreData");break;case "license":ajax("p=track_info&customs=1&"+
b,"detailsPage.setData");break}setHash("details"+paramsToHash(b))};this.setDownloadPreData=function(b){this.page="download";this.setData(b);ajax("p=download&trackId="+this.trackId,"detailsPage.setData")};this.setData=function(b){if(b.length>1){this.trackData=b[1];trackBank.clear("details");trackBank.add(this.trackData,"details");this.setOptions();setTitle((this.page=="download"?"Download Track":this.page=="details"?"Track Details":"License Track")+" - "+this.trackData.title);if(this.page=="download")return}switch(this.page){case "details":this.setDetails();
break;case "download":this.setDownload(b);break;case "license":this.setLicense();break}};this.setOptions=function(){};this.generatePage=function(b){var f=paramsToVars(b),j=f.page;j||(j="details");this.catalogId=f.r;this.trackId=f.id;this.page="";clearBody();$j("#body").append('<a id="banner_container" href="'+getCatalogLink(this.catalogId)+'"><div id="artist_banner"></div></a>');var k=createDiv("artist_background"),n=createDiv("details_container","max_width");leftNav.generate(n);var p=createDiv("right_content",
"right_content"),q=createDiv("details_nav");q.appendChild(createDiv("","details_nav_left"));q.appendChild(createRoundedDiv("details_nav_details","details_nav_section",createA("","",getTrackLink(this.catalogId,this.trackId,"details"),"","","Details"),false,true));q.appendChild(createDiv("","details_nav_divider"));q.appendChild(createRoundedDiv("details_nav_license","details_nav_section",createA("","",getTrackLink(this.catalogId,this.trackId,"license"),"","","License Now"),false,true));q.appendChild(nav_right=
createDiv("details_nav_right","details_nav_right"));nav_right.appendChild(createDiv("details_nav_right_favs"));nav_right.appendChild(createDiv("details_nav_right_email"));f=createDiv("details_content");p.appendChild(q);p.appendChild(f);n.appendChild(p);k.appendChild(n);k.appendChild(createDiv("","clr"));get("body").appendChild(k);switch(j){case "details":k=createDiv("details_track_details");k.innerHTML='<div id="top"><div id="left"><div id="basics"><div id="icons"><div id="avatar"><img/></div><div id="play_container"></div><div id="tag_container"></div></div><div id="info"><h3><span id="title"></span><sub id="length"></sub></h3><div id="details_subsection_artist"><b>Artist:</b> <a></a><span></span></div><div id="details_subsection_composer"><b>Composer:</b> <a></a><span></span></div><div id="details_subsection_album"><b>Album:</b> <a></a><span></span></div><div id="details_subsection_rep"><b>Catalog:</b> <a></a></div><div id="details_subsection_label"><b>Label:</b> <a></a><span></span></div><div id="details_subsection_publisher"><b>Publisher:</b> <a></a><span></span></div></div><div class="clr"></div></div><div id="text"><div id="details_subsection_genre"><b>Genre:</b> <a></a><span></span></div><div id="details_subsection_style"><b>Style:</b> <span></span></div><div id="details_subsection_mood"><b>Mood:</b> <span></span></div><div id="details_subsection_tempo"><b>Tempo:</b> <a></a><span></span></div><div id="details_subsection_cue_type"><b>Cue Type:</b> <a></a><span></span></div><div id="details_subsection_key"><b>Key:</b> <a></a><span></span></div><div id="details_subsection_has_vocal"><b>Has Vocals:</b> <a></a><span></span></div><div id="details_subsection_description"><b>Description:</b> <span></span></div><div id="details_subsection_customs"></div></div></div><div id="right"><div id="options"><div id="format_container"><b>Download Formats:</b> <span id="formats"></span><div class="clr"></div></div></div><div id="stats"><div><b>Added:</b> <span id="added"></span></div>'+
(config.showRatings?'<div><b>Rating:</b> <span id="rating"></span></div><div><b>Rate Now:</b> <span id="rate"></span></div>':"")+'<div><b>Plays:</b> <span id="plays"></span></div><div><b>Downloads:</b> <span id="downloads"></span></div>'+(config.showLicensing?'<div><b>Licenses:</b> <span id="license"></span></div>':"")+'<div><b>Length:</b> <span id="length"></span></div></div></div><div class="clr"></div></div>';k.appendChild(createDiv("","details_secondary_header",createH2("Alternate Versions of this Track")));
ss=createDiv("details_alternate_tracks","details_subsection");alternateContainer=createDiv("track_list_"+this.alternateTrackListConfig.bankKey,"track_list");ss.appendChild(alternateContainer);k.appendChild(ss);k.appendChild(createDiv("","details_secondary_header",createH2("Similar Tracks")));ss=createDiv("details_similar_tracks","details_subsection");similarContainer=createDiv("track_list_"+this.similarTrackListConfig.bankKey,"track_list");ss.appendChild(similarContainer);k.appendChild(ss);f.appendChild(k);
this.alternateTrackList.generatePage(alternateContainer);this.similarTrackList.generatePage(similarContainer);break;case "download":f.appendChild(div=createDiv("details_downloading"));showLoader(div,"Download options");break;case "license":f.appendChild(div=createDiv("details_licensing"));showLoader(div,"Licensing options");break}this.page=j;this.setNav(this.page);this.loadPage(b,j);config.singleCatalog||this.loadTheme();setHash("details"+paramsToHash(b));currentPage="details"};this.createTitledContent=
function(b,f,j){var k=createDiv("details_subsection_"+f,"details_subsection_content");k.appendChild(createElement("b","details_subsection_title_"+f,"",createText(b+": ")));j?k.appendChild(createSpan("details_"+f)):k.appendChild(createA("details_"+f));return k};this.setNav=function(b){get("details_nav_details").className="details_nav_section";get("details_nav_license").className="details_nav_section";if(b=get("details_nav_"+b))b.className="details_nav_section details_nav_selected"};this.setLicense=
function(){var b=get("details_licensing");if(b){removeChildren(b);b.innerHTML='<h2>Online licensing coming soon!</h2><div class="small_section">In the meantime, please provide us with some information and we will contact you immediately. We will process your request and deliver your license as soon as possible.</div><div class="small_section">For immediate assistance, please call '+config.licenseContact.name+" at "+config.licenseContact.phone+"</div>";b.appendChild(section=createDiv("","section",
createSpan("download_title_title","",createText("Track Title:"))));section.appendChild(i=createElement("input","license_title"));i.type="text";i.value=this.trackData.artist.name+" - "+this.trackData.title+" - SourceAudio ID "+this.trackData.id;i.disabled=true;b.appendChild(section=createDiv("","section",createSpan("license_name_title","",createText("Your Name:"))));section.appendChild(i=createElement("input","license_name"));i.type="text";i.maxLength=64;b.appendChild(section=createDiv("","section",
createSpan("license_phone_title","",createText("Phone Number:"))));section.appendChild(i=createElement("input","license_phone"));i.type="text";i.maxLength=20;b.appendChild(section=createDiv("","section",createSpan("license_email_title","",createText("Email:"))));section.appendChild(i=createElement("input","license_email"));i.type="text";i.maxLength=64;if(user.logged)i.value=user.userData.email;b.appendChild(section=createDiv("","section",createSpan("license_comments_title","",createText("Additional Comments: (optional)"))));
section.appendChild(i=createElement("textarea","license_comments"));i.maxLength=255;b.appendChild(createDiv("license_errors"));b.appendChild(createButton("Submit","details_license_submit","",getDefaultLink(),function(){detailsPage.submitLicenseRequest();return false}))}};this.submitLicenseRequest=function(){var b=get("license_name");if(b){b=trim(b.value);var f=trim(get("license_phone").value),j=trim(get("license_email").value),k=trim(get("license_comments").value);get("license_name_title").className=
"";get("license_phone_title").className="";get("license_email_title").className="";get("license_comments_title").className="";var n=get("license_errors");removeChildren(n);n.style.display="";if(!b){get("license_name_title").className="error";n.appendChild(createDiv("","",createText("Please enter your name.")));n.style.display="block"}if(!f){get("license_phone_title").className="error";n.appendChild(createDiv("","",createText("Please enter your phone number.")));n.style.display="block"}if(n.style.display==
""){ajax("name="+escape(b)+"&phone="+escape(f)+"&email="+escape(j)+"&comments="+escape(k),"detailsPage.handleLicenseRequestResponse","POST","p=license&trackId="+this.trackId);get("details_license_submit").style.display="none"}}};this.handleLicenseRequestResponse=function(b){if(b&&b[0]&&b[0].result=="success"){alertManager.alert(createText("Your License request is being processed!"));if(b=get("details_licensing")){removeChildren(b);b.innerHTML='<h2>Online licensing coming soon!</h2><div class="small_section">We are processing your license request. If you have any questions, please <a href="#aboutus">contact us</a>. Otherwise, we\'ll get back to you as soon as possible.</div><div class="small_section">For immediate assistance, please call '+
config.licenseContact.name+" at "+config.licenseContact.phone+"</div>"}}else{var f=get("license_errors");removeChildren(f);f.style.display="block";f.innerHTML=b&&b[0]&&b[0].result?b[0].result:"Unknown error. Please try again later";get("details_license_submit").style.display="block"}};this.setDownload=function(b){var f=get("details_downloading");if(f){removeChildren(f);if(b[0].result=="Agreement required"){f.appendChild(createDiv("","",createText("To be able to download this track, you must agree to the following:")));
f.appendChild(t=createDiv("details_downloading_conditions"));t.innerHTML=b[0].agreement;f.appendChild(createButton("Decline","details_downloading_disagree","",getTrackLink(this.catalogId,this.trackId,"details")));f.appendChild(createButton("Agree","details_downloading_agree","",getDefaultLink(),function(){detailsPage.downloadAgree();return false}));f.appendChild(createDiv("details_downloading_warning","",createText('By clicking "Agree", you are giving your digital signature to the above agreement and you are bound by law to uphold it. This signature will be held by SourceMedia LLC in perpetuity.')))}else if(b[0].result==
"Permission requested")f.innerHTML='<h2>Your request is being processed</h2><div class="small_section">Please be patient while the catalog(s) process your request. You will be notified by the email address you used when joining ('+user.userData.email+') as soon as a decision has been made. If you\'d like to contact us in the meantime, please <a href="#aboutus">do so</a>!</div>';else if(b[0].result=="Permission denied"){f.innerHTML='<h2>Sorry, this track isn\'t available for auditioning at this time</h2><div class="small_section">This catalog has disabled downloading for the purpose of auditioning but all tracks will still be downloadable if you purchase a license to them first. '+
config.name+' encourages catalogs  to make their music available for auditioning but, in the end, it\'s their music and their decision. We apologize for any inconvenience and invite you to send the catalog some feedback about this policy using the form below.</div><div class="small_section">Thanks for your understanding and your interest in '+config.name+'!</div><div class="section" id="feedback"><span>Feedback:</span><textarea id="feedback_text"></textarea></div>';f.appendChild(createButton("Send",
"details_downloading_submit","",getDefaultLink(),function(){detailsPage.submitDownloadFeedback();return false}))}else if(b[0].result=="Permission required"){var j=$j(f);(b=b[0].info)||(b={});j.append('<h2>Request Download Permission</h2><div class="small_section">This catalog has requested that users wanting to download their tracks fill out a brief form so they can learn a little bit about you first. The catalog might contact you through the phone number or email adress you enter.</div><div class="section"><span id="download_name_title">Name:</span><input type="text" id="download_name" maxlength="64"'+
(b.name?' value="'+b.name+'"':"")+'/></div><div class="section"><span id="download_location_title">Location (City):</span><input type="text" id="download_location" maxlength="64"'+(b.location?' value="'+b.location+'"':"")+'/></div><div class="section"><span id="download_company_title">Company:</span><input type="text" id="download_company" maxlength="64"'+(b.company?' value="'+b.company+'"':"")+'/></div><div class="section"><span id="download_project_title">Project Description:</span><input type="text" id="download_project" maxlength="128"'+
(b.project?' value="'+b.project+'"':"")+'/></div><div class="section"><span id="download_phone_title">Phone Number:</span><input type="text" id="download_phone" maxlength="128"'+(b.phone?' value="'+b.phone+'"':"")+'/></div><div class="section"><span id="download_email_title">Email:</span><input type="text" id="download_email" disabled="disabled" value="'+(b.phone?b.phone:user.userData.email)+'"/></div><div id="download_errors"></div>');f.appendChild(createButton("Submit","details_downloading_submit",
"",getDefaultLink(),function(){detailsPage.submitDownloadRequest();return false}));j.append('<div class="small_section">Catalogs will make every effort to get back to you quickly. Feel free to <a href="#aboutus">contact us</a> if you\'re curious about the status of your application.</div>')}else if(b[0].result=="Download authorized"){j='<a href="/download.php?track_id='+this.trackId+'&type=mp3&source=download" class="dl_link">Download mp3 <img src="images/icons/mp3.png"/></a>';if(this.trackData.formats.wav)j+=
'<a href="/download.php?track_id='+this.trackId+'&type=wav&source=download" class="dl_link">Download wav <img src="images/icons/wav.png"/></a>';if(this.trackData.formats.aiff)j+='<a href="/download.php?track_id='+this.trackId+'&type=aiff&source=download" class="dl_link">Download aiff <img src="images/icons/aiff.png"/></a>';$j(f).append("<h2>Download Approved!</h2>Please choose your download format:<br/>"+j)}else $j(f).append(b[0].result)}};this.submitDownloadRequest=function(){var b=get("download_name");
if(b){b=trim(b.value);var f=trim(get("download_location").value),j=trim(get("download_company").value),k=trim(get("download_project").value),n=trim(get("download_phone").value);get("download_name_title").className="";get("download_location_title").className="";get("download_company_title").className="";get("download_project_title").className="";get("download_phone_title").className="";var p=get("download_errors");removeChildren(p);p.style.display="";if(!b){get("download_name_title").className="error";
p.appendChild(createDiv("","",createText("Please enter your name.")));p.style.display="block"}if(!f){get("download_location_title").className="error";p.appendChild(createDiv("","",createText("Please enter your location.")));p.style.display="block"}if(!j){get("download_company_title").className="error";p.appendChild(createDiv("","",createText("Please enter the company you work for.")));p.style.display="block"}if(!k){get("download_project_title").className="error";p.appendChild(createDiv("","",createText("Please enter a brief description of your project.")));
p.style.display="block"}if(!n){get("download_phone_title").className="error";p.appendChild(createDiv("","",createText("Please enter a phone number you can be reached at.")));p.style.display="block"}if(p.style.display==""){ajax("name="+escape(b)+"&location="+escape(f)+"&company="+escape(j)+"&project="+escape(k)+"&phone="+escape(n),"detailsPage.handleDownloadRequestResponse","POST","p=download&trackId="+this.trackId+"&permRequest=1");get("details_downloading_submit").style.display="none"}}};this.handleDownloadRequestResponse=
function(b){if(b&&b[0]&&b[0].result=="Permission requested"){alertManager.alert(createText(b[0].message));reloadPage()}else{var f=get("download_errors");removeChildren(f);f.style.display="block";f.innerHTML=b&&b[0]&&b[0].message?b[0].message:"Unknown error. Please try again later";get("details_downloading_submit").style.display="block"}};this.downloadAgree=function(){ajax("p=download&trackId="+this.trackId+"&agreed=1","detailsPage.setDownloadActual")};this.setDownloadActual=function(b){var f=get("details_downloading");
if(f){removeChildren(f);if(b[0].result=="Download authorized"){b='<a href="download.php?track_id='+this.trackId+'&type=mp3&source=download" class="dl_link">Download mp3 <img src="images/icons/mp3.png"/></a>';if(this.trackData.formats.wav)b+='<a href="download.php?track_id='+this.trackId+'&type=wav&source=download" class="dl_link">Download wav <img src="images/icons/wav.png"/></a>';if(this.trackData.formats.aiff)b+='<a href="download.php?track_id='+this.trackId+'&type=aiff&source=download" class="dl_link">Download aiff <img src="images/icons/aiff.png"/></a>';
$j(f).append("<h2>Download Approved!</h2>Please choose your download format:<br/>"+b)}else f.appendChild(createText(b[0].result))}};this.submitDownloadFeedback=function(){var b=$j("#feedback_text").val();$j("#details_downloading_submit").remove();ajax("trackId="+this.trackId+"&feedback="+escape(b),"","POST","p=feedback");$j("#feedback").html("Thanks for your feedback!")};this.turnEdit=function(b){this.editOn=b;currentHash=""};this.setDetails=function(){var b=this.trackData;if(b){trackBank.clear("details_page");
trackBank.add(b,"details_page");if(!config.secure)this.editOn=false;if(user.canAdmin(b.catalog.id)){this.allowEdit=true;if(config.secure)this.editOn=true;else{get("details_content").insertBefore(viewBar=createDiv("view_bar_details","view_bar"),get("details_track_details"));viewBar.appendChild(createElement("em","","",createText("This page is editable on "+config.name+" Secure")));$j(viewBar).append(getSecureA())}}else this.editOn=this.allowEdit=false;$j("#info #title").html(b.title);(link=getArtistLink(b.artist.id,
b.catalog.id))?$j("#details_subsection_artist a").attr("href",link).html(b.artist.name):$j("#details_subsection_artist span").html(b.artist.name);if(config.secure)b.album.name&&(link=getAlbumLink(b.album.id,b.catalog.id))?$j("#details_subsection_album a").attr("href",link).html(b.album.name):$j("#details_subsection_album span").html(b.album.name);else if(b.album.name)(link=getAlbumLink(b.album.id,b.catalog.id))?$j("#details_subsection_album a").attr("href",link).html(b.album.name):$j("#details_subsection_album span").html(b.album.name);
else $j("#details_subsection_album").remove();if(config.secure)b.composer.name&&(link=getComposerLink(b.composer.id,b.catalog.id))?$j("#details_subsection_composer a").attr("href",link).html(b.composer.name):$j("#details_subsection_composer span").html(b.composer.name);else if(b.composer.name)(link=getComposerLink(b.composer.id,b.catalog.id))?$j("#details_subsection_composer a").attr("href",link).html(b.composer.name):$j("#details_subsection_composer span").html(b.composer.name);else $j("#details_subsection_composer").remove();
b.label.name?$j("#details_subsection_label a").attr("href",getLabelLink(b.label.id,b.catalog.id)).html(b.label.name):$j("#details_subsection_label").remove();b.key.id?$j("#details_subsection_key span").html(b.key.name):$j("#details_subsection_key").remove();b.has_vocal==2?$j("#details_subsection_has_vocal").remove():$j("#details_subsection_has_vocal span").html(b.has_vocal?"Yes":"No");if(config.secure)b.publisher.name&&(link=getPublisherLink(b.publisher.id,b.catalog.id))?$j("#details_subsection_publisher a").attr("href",
link).html(b.publisher.name):$j("#details_subsection_publisher span").html(b.publisher.name);else if(b.publisher.name)(link=getPublisherLink(b.publisher.id,b.catalog.id))?$j("#details_subsection_publisher a").attr("href",link).html(b.publisher.name):$j("#details_subsection_publisher span").html(b.publisher.name);else $j("#details_subsection_publisher").remove();$j("#info #length").html("("+b.length+")");$j("#details_subsection_tempo a").html(b.tempo.name).attr("href",getTempoLink(b.tempo.id));$j("#details_subsection_cue_type a").html(b.cue_type.name).attr("href",
getCueTypeLink(b.cue_type.id));$j("#details_subsection_description span").html(b.description!=""?b.description:"No description provided");if(b.moods.length){for(var f="",j=0;j<b.moods.length;j++)f+='<a href="'+getExplorerLink("s="+escape(b.moods[j]))+'">'+b.moods[j]+"</a>, ";f.length?$j("#details_subsection_mood span").html(f.substring(0,f.length-2)):$j("#details_subsection_mood").remove()}else $j("#details_subsection_mood").remove();if(b.styles.length){get("details_style");f="";for(j=0;j<b.styles.length;j++)f+=
'<a href="'+getExplorerLink("s="+escape(b.styles[j]))+'">'+b.styles[j]+"</a>, ";f.length?$j("#details_subsection_style span").html(f.substring(0,f.length-2)):$j("#details_subsection_style").remove()}else $j("#details_subsection_style").remove();if(b.custom_fields){f=$j("#details_subsection_customs").empty();for(j=0;j<b.custom_fields.length;j++){var k=b.custom_fields[j];k.value&&f.append('<div id="details_subsection_'+k.name.replace(" ","_").toLowerCase()+'"><b>'+k.name+":</b> <span>"+k.value+"</span></div>")}}if(config.singleCatalog){$j("#details_subsection_rep").remove();
b.album.name?$j("#basics #avatar img").attr("src",b.album.image):$j("#basics #avatar img").attr("src",b.label.image)}else{$j("#details_subsection_rep a").html(b.catalog.name).attr("href",getCatalogLink(b.catalog.id));$j("#basics #avatar img").attr("src",b.catalog.image)}for(j=0;j<b.custom_fields.length;j++)if(b.custom_fields[j].name=="Genre"){$j("#details_subsection_genre").remove();break}$j("#details_subsection_genre a").html(b.genre.name).attr("href",getGenreLink(b.genre.id));$j("#stats #plays").html(b.plays);
$j("#stats #added").html(b.date);$j("#stats #downloads").html(b.downloads);config.showLicensing&&$j("#stats #license").html(b.licenses);$j("#stats #length").html(b.length);f=$j("#options #formats").html("");if(this.trackData.can_download){j='<a href="download.php?track_id='+this.trackId+'&type=mp3&source=details"><img src="images/icons/mp3.png"/><br/>'+formatSize(b.formats.mp3)+"</a>";if(b.formats.wav)j+='<a href="download.php?track_id='+this.trackId+'&type=wav&source=details"><img src="images/icons/wav.png"/><br/>'+
formatSize(b.formats.wav)+"</a>";if(b.formats.aiff)j+='<a href="download.php?track_id='+this.trackId+'&type=aiff&source=details"><img src="images/icons/aiff.png"/><br/>'+formatSize(b.formats.aiff)+"</a>";f.html(j+'<div class="clr"></div>')}else{f.append($j('<a href="'+getTrackLink(b.catalog.id,b.id,"download")+'"><img src="images/icons/mp3.png"/><br/>'+formatSize(b.formats.mp3)+"</a>").click(function(){new Downloader("track",$j(this).data("track"));return false}).data("track",b));b.formats.wav&&f.append($j('<a href="'+
getTrackLink(b.artist.id,b.id,"download")+'"><img src="images/icons/wav.png"/><br/>'+formatSize(b.formats.wav)+"</a>").click(function(){new Downloader("track",$j(this).data("track"));return false}).data("track",b));b.formats.aiff&&f.append($j('<a href="'+getTrackLink(b.artist.id,b.id,"download")+'"><img src="images/icons/aiff.png"/><br/>'+formatSize(b.formats.aiff)+"</a>").click(function(){new Downloader("track",$j(this).data("track"));return false}).data("track",b));f.append('<div class="clr"></div>')}$j("#basics #play_container").append($j(generatePlayButton(b.id,
"details_page",false)));if(config.showRatings){$j("#stats #rating").html(Math.floor(b.rating.rating*5*10)/10+"/5 <sub>(rated "+b.rating.count+" times)</sub>");f=b.rated!=undefined&&b.rated!=null&&b.rated!=-1;$j("#stats #rate").append($j(new Rater("tracks",this.trackId,f?b.rated:b.rating.rating,f,this.setRating)))}$j("#options").append('<div class="a_container"><a id="email" href="javascript:;">Email this track</a></div><div class="a_container"><a id="twitter" href="http://twitter.com/home?status='+
escape((document.location+"").replace("https://secure.","http://www."))+'" target="blank">Tweet this</a></div><div class="a_container"><a id="facebook" href="http://facebook.com/share.php?u='+escape((document.location+"").replace("https://secure.","http://www."))+'" target="blank">Post to Facebook</a></div>');$j("#options #email").click(function(){new Emailer("track",$j(this).data("trackId"));return false}).data("trackId",this.trackId);if(this.editOn){this.makeEditable($j("#info #title"),$j("#info h3"),
"title",b.title);this.makeEditable($j("#details_subsection_artist a"),$j("#details_subsection_artist"),"artist",b.artist.name,false,true);this.makeEditable($j("#details_subsection_album a"),$j("#details_subsection_album"),"album",b.album.name,false,true);this.makeEditable($j("#details_subsection_composer a"),$j("#details_subsection_composer"),"composer",b.composer.name,false,true);this.makeEditable($j("#details_subsection_publisher a"),$j("#details_subsection_publisher"),"publisher",b.publisher.name,
false,true);this.makeEditable($j("#details_subsection_tempo a"),$j("#details_subsection_tempo"),"tempo",b.tempo.name,false,true);this.makeEditable($j("#details_subsection_cue_type a"),$j("#details_subsection_cue_type"),"cue_type",b.cue_type.name,false,true);this.makeEditable($j("#details_subsection_description span"),$j("#details_subsection_description"),"description",b.description,true);this.makeEditable($j("#details_subsection_genre a"),$j("#details_subsection_genre"),"genre",b.genre.name,true,
true);f="";for(j=0;j<b.styles.length;j++)f+=b.styles[j]+", ";if(f.length)f=f.substring(0,f.length-2);this.makeEditable($j("#details_subsection_style span"),$j("#details_subsection_style"),"style",f,true);f="";for(j=0;j<b.moods.length;j++)f+=b.moods[j]+", ";if(f.length)f=f.substring(0,f.length-2);this.makeEditable($j("#details_subsection_mood span"),$j("#details_subsection_mood"),"mood",f,true)}projector.inQuickProjectMode()&&this.enableFastTagging()}};this.enableFastTagging=function(){$j("#basics #tag_container").html("").append(generateQuickProjectTrackButton(this.trackId))};
this.disableFastTagging=function(){$j("#basics #tag_container").html("")};this.updateFavoritesText=function(b){var f=get("favText",get("details_nav_right_favs"));removeChildren(f);f.innerHTML=b?"Edit favorites for track":"Add track to favorites"};this.setSimilar=function(b){this.similarTrackList.setData(b,getTrackLink);$j("#details_similar_tracks").append(createA("details_more_link","",getExplorerLink("sim="+this.trackId),"","","See More >>")).append('<div class="clr"></div>')};this.setAlternates=
function(b){if(b[0].count)this.alternateTrackList.setData(b,getTrackLink);else{$j("#details_alternate_tracks").remove();$j(".details_secondary_header h2:contains(Alternate)").remove()}};this.setComments=function(b){$j(".details_secondary_header h2:contains(Comments)").html(b[0].count?b[0].count+" Comments":"No Comments Yet");this.comments.setData(b)};this.setRating=function(){get("details_subsection_title_rate").innerHTML="Your Rating:"};this.makeEditable=function(b,f,j,k,n,p){k==undefined||k==""?
b.html("click button to add "+j).addClass("artist_profile_editable"):b.removeClass("artist_profile_editable");n||(n=false);p||(p=false);k||(k="");f.css("display","block").append($j('<a href="javascript:;" id="details_edit_'+j.replace(" ","_")+'" class="edit_button"><img src="images/shared/edit.png"/></a>').click(function(){detailsPage.allowInput($j(this))}).data("large",n).data("cont",f).data("value",k).data("saveAll",p).data("fieldName",j))};this.selectIds=[];this.selectValues=[];this.selectData=
[];this.populateSelect=function(b){var f=b[0].type;this.selectData[f]=b;if(sel=get(this.selectIds[f])){removeChildren(sel);for(var j=0;j<b[0].items.length;j++){var k=new Option(b[0].items[j],b[0].items[j]);if(b[0].items[j]==this.selectValues[f])k.selected=true;sel.options[j]=k}}};this.loadSelect=function(b,f,j){this.selectIds[b]=f;this.selectValues[b]=j;this.selectData[b]!=null?this.populateSelect(this.selectData[b]):ajax("p=list&type="+b,"detailsPage.populateSelect")};this.allowInput=function(b){var f=
b.data("large"),j=b.data("saveAll"),k=b.data("cont"),n=b.data("value"),p=b.data("fieldName").replace(" ","_");b.unbind("click").click(function(){detailsPage.disallowInput($j(this))});var q=$j('<div class="details_input_container"></div>');k.append(q);var r;if(p=="genre"||p=="tempo"||p=="cue_type"){q.append(r=$j('<select id="details_'+p+'_select"><option>'+n+"</option></select>"));this.loadSelect(p,"details_"+p+"_select",n)}else{if(p=="artist"||p=="album"||p=="publisher"||p=="label"||p=="composer")q.append(r=
$j(new SuggestionBox(p)).attr("id","profile_field_"+p).focus());else f?q.append(r=$j('<textarea class="artist_profile_edit_text" id="profile_field_'+p+'"></textarea>')):q.append(r=$j('<input type="text" id="profile_field_'+p+'" maxLength="'+this.fieldLengths[p]+'"/>'));r.blur(function(){detailsPage.resetCharsLeft()});r.keyup(function(){detailsPage.setCharsLeft(this)});r.focus(function(){detailsPage.setCharsLeft(this)});b.hasClass("artist_profile_editable")||r.val(n.replace(/<br\/?>/ig,"\n").replace(/&gt;/ig,
">").replace(/&lt;/ig,"<").replace(/&amp;/ig,"&"))}b.data("inputDiv",q);q.append($j('<a href="javascript:;" class="save_button" title="Click to save your change to this track"></a>').click(function(){detailsPage.saveChange($j(this))}).data("fieldName",p).data("input",r).data("all",false));j&&q.append($j('<a href="javascript:;" class="save_all_button" title="Make a rule for this change"></a>').click(function(){(new Ruler(detailsPage.catalogId,$j(this).data("fieldName"),$j(this).data("input").val())).show()}).data("fieldName",
p).data("input",r).data("all",true));q.append('<div class="clr"></div>')};this.disallowInput=function(b){b.unbind("click").click(function(){detailsPage.allowInput($j(this))});b.data("inputDiv").remove()};this.setCharsLeft=function(b){val=b.maxLength-b.value.length;if(val>1E3){val+="";val=val.substring(0,val.length-3)+","+val.substring(val.length-3,val.length)}$j("profile_length").html(val+" chars remaining")};this.resetCharsLeft=function(){$j("profile_length").html("")};this.saveChange=function(b){var f=
b.data("input").val(),j=b.data("fieldName");ajax("field="+j+"&value="+escape(f)+(b.data("all")?"&all=1":""),"detailsPage.setField","POST","p=track_details&t="+detailsPage.trackId)};this.setField=function(b){if(b[0].result=="success"){var f=b[0].field,j=b[0].value;alertManager.alert(createText("Changes saved! It may take a few minutes for them to show up."));switch(f){case "title":e=$j("#info #title");break;case "artist":case "publisher":case "label":case "album":case "composer":case "tempo":case "cue_type":case "genre":$j("#details_subsection_"+
f+" a:not(.edit_button)").hide();e=$j("#details_subsection_"+f+" span");break;case "description":case "style":case "mood":case "tags":e=$j("#details_subsection_"+f+" span");break;default:return}e.html(j).removeClass("artist_profile_editable");j==""&&e.addClass("artist_profile_editable").html("click button to add "+b[0].field);a=$j("#details_edit_"+f);if(a.length){this.disallowInput(a);a.data("value",j)}}else alertManager.alert(createText(b[0].result))};this.loadTheme=function(b){if(!b&&this.themeData&&
this.catalogId==this.themeData.id)this.setTheme([this.themeData]);else b||!(result=requestCache.get("p=catalog_theme&c="+this.catalogId))?ajax("p=catalog_theme&c="+this.catalogId+"&reload="+escape(Math.random()),"detailsPage.setTheme"):this.setTheme(result)};this.setTheme=function(b){this.themeData=themeData=b[0];requestCache.set("p=catalog_theme&c="+themeData.id,b);b=themeData.banner;if(b.url){var f=get("banner_container"),j=get("artist_banner");j.style.width=b.width+"px";j.style.height=b.height+
"px";j.style.backgroundColor="";f.style.height=b.height+"px";f.style.backgroundImage="url('"+b.url+"')";switch(b.tiling){case "RV":f.style.backgroundRepeat="repeat-y";break;case "RH":f.style.backgroundRepeat="repeat-x";break;case "RN":f.style.backgroundRepeat="no-repeat";break;case "RA":default:f.style.backgroundRepeat="repeat";break}f.style.backgroundColor="#"+b.color;f.style.backgroundPosition="top center"}else{f=get("banner_container");f.style.height="";f.style.backgroundImage="";f.style.backgroundColor=
"";f.style.backgroundPosition="";j=get("artist_banner");j.style.backgroundColor="#000"}b=get("artist_background");f=themeData.background;if(f.url){b.style.backgroundImage="url("+f.url+")";switch(f.tiling){case "RV":b.style.backgroundRepeat="repeat-y";break;case "RH":b.style.backgroundRepeat="repeat-x";break;case "RN":b.style.backgroundRepeat="no-repeat";break;case "RA":default:b.style.backgroundRepeat="repeat";break}if(f.position.length==2){posString="";switch(f.position.substring(1,2)){case "L":posString+=
"left";break;case "R":posString+="right";break;case "C":default:posString+="center";break}posString+=" ";switch(f.position.substring(0,1)){case "T":posString+="top";break;case "B":posString+="bottom";break;case "M":default:posString+="center";break}b.style.backgroundPosition=posString}}else b.style.backgroundImage="";if(f.color)b.style.backgroundColor="#"+f.color}}var detailsPage=new DetailsPage;function Template(){this.vars={};this.raw=null;this.data="";this.processed=false;this.load=function(b,f){var j=this;$j.get(b,null,function(k){console.log("loaded template: "+b);j.raw=k;f&&eval(f)})};this.process=function(b){text=new String($j("#"+b+" data",this.raw).text());if(!text)return false;$j.each(this.vars,function(f,j){text=text.replace("{{$"+f+"}}",j)});this.data=text;this.processed=true;return this.data};this.setVar=function(b,f){this.vars[b]=f};this.clearVars=function(){this.vars={}}}
function HelpFAQPage(){this.page="";this.template=null;this.loadPage=function(){if(this.template==null){var b=get("faq_content");if(b){removeChildren(b);showLoader(b,"Loading Help and FAQ...");this.template=new Template;this.template.load(config.singleCatalog?"views/helpfaq_white.xml":"views/helpfaq.xml","helpfaq.showPage();")}}else this.showPage()};this.generatePage=function(){clearBody();var b=createDiv("faq_container","max_width");leftNav.generate(b);leftNav.disableFilters();leftNav.enableInformation();
var f=createDiv("faq_content","right_content padded_right_content");f.innerHTML="<h1>Help and FAQ</h1>";b.appendChild(f);b.appendChild(createDiv("","clr"));get("body").appendChild(b);leftNav.setCurrent("helpfaq");this.loadPage();currentHash=currentPage="helpfaq"};this.showPage=function(){if(this.template==null)console.log("showPage called without a template.");else{var b=get("faq_content");if(b){header_text=this.template.process("faq_header");this.template.setVar("header_text",header_text);this.template.process("faq_template");
b.innerHTML=this.template.data;b=get("faq_questions").getElementsByTagName("a");for(var f=get("faq_answers").getElementsByTagName("em"),j=0;j<b.length;j++){for(var k=null,n=0;n<f.length;n++)if(f[n].innerHTML==b[j].innerHTML){k=f[n];break}if(k){b[j].href=getDefaultLink();b[j].answer=k;b[j].onclick=function(){console.log("scrolling to "+this.answer.innerHTML);window.scrollTo(0,getPosition(this.answer).y-$j("#glamdring").height());for(var p=get("faq_answers").getElementsByTagName("em"),q=0;q<p.length;q++)p[q].className=
"";this.answer.className="selected"}}else{get("faq_questions").removeChild(b[j]);console.log("had to remove "+b[j].innerHTML)}}}else console.log("cont not found")}}}var helpfaq=new HelpFAQPage;
function FeedbackPage(){this.page="";this.template=null;this.loadPage=function(){if(this.template==null){var b=get("feedback_content");showLoader(b,"Loading feedback page...");this.template=new Template;this.template.load("/views/feedback.xml","feedback.showPage();")}else this.showPage()};this.generatePage=function(){currentHash=currentPage="feedback";clearBody();var b=createDiv("feedback_container","max_width");leftNav.generate(b);leftNav.disableFilters();leftNav.enableInformation();var f=createDiv("feedback_content",
"right_content padded_right_content");f.innerHTML="<h1>Feedback</h1>";b.appendChild(f);b.appendChild(createDiv("","clr"));get("body").appendChild(b);leftNav.setCurrent("feedback");this.loadPage()};this.showPage=function(){this.template.process("feedback_page");get("feedback_content").innerHTML=this.template.data;var b=$j(".button_container").html();$j(".button_container").empty().append(createButton(b,"","","javascript:;",function(){feedback.save()}));get("feedback_phone").onfocus=function(){if(this.value=
"xxx-xxx-xxxx")this.value=""};get("feedback_phone").onblur=function(){if(trim(this.value)=="")this.value="xxx-xxx-xxxx"};if(user.logged&&user.userData.email)get("feedback_email").value=user.userData.email};this.save=function(){var b=trim(get("feedback_name").value),f=trim(get("feedback_email").value),j=trim(get("feedback_phone").value);if(j=="xxx-xxx-xxxx")j="";var k=trim(get("feedback_text").value);get("feedback_name_title").className="";get("feedback_email_title").className="";get("feedback_phone_title").className=
"";get("feedback_feedback_title").className="";var n=get("feedback_errors"),p=false;removeChildren(n);if(!b){get("feedback_name_title").className="error";n.appendChild(createDiv("","",createText("Please enter your name.")));p=true}if(f==""){get("feedback_email_title").className="error";n.appendChild(createDiv("","",createText("Please enter your email.")));p=true}else if(!isEmail(f)){get("feedback_email_title").className="error";n.appendChild(createDiv("","",createText("Please enter a valid email.")));
p=true}if(j&&!(phoneArray=isPhone(j))){get("feedback_phone_title").className="error";n.appendChild(createDiv("","",createText("Please enter a valid phone number.")));p=true}else if(j)j=phoneArray[1]+phoneArray[2]+phoneArray[3];if(k==""){get("feedback_feedback_title").className="error";n.appendChild(createDiv("","",createText("Please enter your feedback.")));p=true}p||ajax("text="+escape(k)+"&name="+escape(b)+"&email="+escape(f)+"&phone="+escape(j)+"&browser="+escape(BrowserDetect.browser+" "+BrowserDetect.version+
" on "+BrowserDetect.OS),"feedback.saved","POST","p=feedback&action=send")};this.saved=function(){this.template.process("feedback_result");get("feedback_content").innerHTML=this.template.data}}var feedback=new FeedbackPage;
function AboutUsPage(){this.page="";this.template=null;this.loadPage=function(){if(this.template==null){var b=get("aboutus_content");showLoader(b,"Loading about us page...");this.template=new Template;this.template.load("/views/about.xml","aboutus.showPage();")}else this.showPage()};this.generatePage=function(){currentHash=currentPage="aboutus";clearBody();var b=createDiv("aboutus_container","max_width");leftNav.generate(b);leftNav.disableFilters();leftNav.enableInformation();var f=createDiv("aboutus_content",
"right_content padded_right_content");f.innerHTML="<h1>About SourceAudio</h1>";b.appendChild(f);b.appendChild(createDiv("","clr"));get("body").appendChild(b);leftNav.setCurrent("aboutus");this.loadPage()};this.showPage=function(){this.template.process("aboutus_page");get("aboutus_content").innerHTML=this.template.data}}var aboutus=new AboutUsPage;
function InformationPage(){this.template=null;this.pageName="";this.loadPage=function(){if(this.template==null){var b=get("aboutus_content");showLoader(b,"Loading page...");this.template=new Template;this.template.load(config.informationXml,"informationPage.showPage();")}else this.showPage()};this.fail=function(){setHash("explorer");alertManager.alert(createText("Bad url. Please try again"))};this.generatePage=function(b){if(!config.informationXml)return this.fail();b=paramsToVars(b);if(b.pageName)this.pageName=
b.pageName;else return this.fail();currentPage="informationPage";currentHash="information";clearBody();b=createDiv("aboutus_container","max_width");leftNav.generate(b);leftNav.disableFilters();leftNav.enableInformation();var f=createDiv("aboutus_content","right_content padded_right_content");f.innerHTML="";b.appendChild(f);b.appendChild(createDiv("","clr"));get("body").appendChild(b);leftNav.setCurrent("aboutus");this.loadPage()};this.showPage=function(){if(!this.template.process(this.pageName))return this.fail();
get("aboutus_content").innerHTML=this.template.data}}var informationPage=new InformationPage;function HomePage(){this.trackData=null;this.genreTrackListConfig=new TrackListConfig;this.genreTrackListConfig.columnList=getStandardColumnList();this.genreTrackListConfig.defaultResultsPerPage=10;this.genreTrackListConfig.resultsPerPageCookie=false;this.genreTrackListConfig.pagination=false;this.genreTrackListConfig.resultCountChanging=false;this.genreTrackListConfig.headerBackground=false;this.genreTrackListConfig.sortable=false;this.genreTrackListConfig.callback="home.setGenreTracks";this.genreTrackListConfig.bankKey=
"home_genre_tracks";this.genreTrackList=new TrackList(this.genreTrackListConfig);this.loadPage=function(){(result=requestCache.get("p=home_info"))?this.setData(result,true):ajax("p=home_info","home.setData")};this.setData=function(b,f){if(currentPage=="home"){f||requestCache.set("p=home_info",b);b=b[0];var j='<h2>Your Music Licensing Search and Distribution Platform</h2><a href="'+getDefaultLink()+'" id="hider">hide info</a><div id="billboard"><a href="http://fuzeartz.sourceaudio.com" id="example_link" target="_blank"><img src="images/home/example.png"/></a>'+
(user.logged?"":'<a href="'+getSignupLink()+'" id="signup_link" class="arrow_link big">Sign Up Now!</a>')+'<a href="#feedback" id="request_link" class="arrow_link big">Request More Info</a></div><div id="finder"><div id="blurb1">Find, Play, Download &amp; License Music</div><div id="blurb2">Search the largest online collection of music for license!</div><input type="text"/><div id="button_container"></div><div id="blurb3">Or browse by genre</div><div class="column">';for(f=0;f<b.genres.length;f++){if(f==
Math.floor(b.genres.length/2))j+='</div><div class="column">';var k=b.genres[f];j+='<a class="genre_link" href="'+getGenreLink(k.id)+'">'+k.name+"</a>"}j+='</div></div><div class="clr"></div>';$j("#billboard_container").html(j);$j("#hider").toggle(function(){$j("#billboard_container > div").slideUp();$j(this).html("show info").addClass("closed");user.setOption("hide_home_billboard",1);this.blur()},function(){$j("#billboard_container > div").slideDown();$j(this).html("hide info").removeClass("closed");
user.setOption("hide_home_billboard",0);this.blur()});$j("#billboard_container #button_container").append(createButton("GO!","","",getDefaultLink(),function(){var n=$j("#billboard_container input");n.val()!=n[0].def?search.searchForValue(n.val()):setHash("explorer");return false}));if(user.getOption("hide_home_billboard")==1){$j("#billboard_container > div").hide();$j("#hider").click()}f=$j("#billboard_container input")[0];setupDefaultValueInputBox(f,"enter keywords, moods, styles");checkForEnter(f,
"$j('#billboard_container #button_container .button').click();");k='<h2>New Branded Partner Sites!<sub>View sites now available on the SourceAudio platform</sub></h2><div class="pagination">1-3 of '+b.partnerSites.length+'</div><div class="window"><div class="item_container">';for(f=0;f<b.partnerSites.length;f++){j=b.partnerSites[f];k+='<div class="item"><a href="http://'+j.url+'"><img src="'+j.icon+'"/></a><h3><a href="http://'+j.url+'">'+j.name+"</a></h3><div><b>Launched:</b> "+j.launchDate+"</div><div><b>Tracks:</b> "+
j.trackCount+"</div></div>"}k+='<div class="clr"></div></div></div><a href="#partners" class="more scroller">more</a><a href="#partners" class="less scroller">more</a>';new HomePageScroller($j("#partner_list").html(k));f='<h2>Top Tracks This Week<sub>Listen to the most played tracks this week by genre</sub><a href="#explorer" class="arrow_link">See All '+b.totalTracks+' Tracks</a></h2><div id="genre_container"><div id="genre_list"><h3>Genre</h3><ul></ul></div><div id="track_list_'+this.genreTrackListConfig.bankKey+
'" class="track_list"></div><div class="clr"></div></div>';j=$j("#genre_tracks").html(f).find("ul");for(f=0;f<b.genres.length;f++){k=b.genres[f];k=$j('<a href="'+getDefaultLink()+'">'+k.name+"</a>").data("genre",k);j.append($j("<li></li>").append(k))}$j("#genre_list a").click(function(){$j("#genre_list a").removeClass("selected");var n=$j(this).addClass("selected").data("genre");home.genreTrackList.loadPage("g="+n.id+"&o=plays&d=d");return false});this.genreTrackList.generatePage($j("#genre_container .track_list")[0]);
$j("#genre_list a:first").click();k='<h2>Browse Music By Catalog<sub>Each of these catalogs can be found right here in one place</sub><a href="#catalogs" class="arrow_link">See all '+b.catalogs.length+' catalogs</a></h2><div class="pagination">1-3 of '+b.catalogs.length+'</div><div class="window"><div class="item_container">';for(f=0;f<b.catalogs.length;f++){j=b.catalogs[f];k+='<div class="item"><a href="'+getCatalogLink(j.id)+'"><img src="'+j.icon+'"/></a><h3><a href="'+getCatalogLink(j.id)+'">'+
j.name+"</a></h3><div><b>Tracks:</b> "+j.trackCount+"</div><div><b>Albums:</b> "+j.albumCount+"</div><div><b>Date Added:</b> "+j.dateJoined+"</div></div>"}k+='<div class="clr"></div></div></div><a href="#catalogs" class="more scroller">more</a><a href="#catalogs" class="less scroller">more</a>';new HomePageScroller($j("#catalog_list").html(k));if(b.blogs.length){k='<h2>SourceAudio News and Updates<a href="http://blog.sourceaudio.com" target="_blank" class="arrow_link">SourceAudio News</a></h2>';for(f=
0;f<b.blogs.length;f++){j=b.blogs[f];k+='<div id="news_item"><h3><a href="'+j.url+'" target="_blank">'+j.title+"</a></h3><p><i>"+j.postDate+"</i> - "+j.body+' <a href="'+j.url+'" target="_blank">Read Full Article</a></p></div>'}$j("#news").html(k)}else $j("#news").remove()}};this.generatePage=function(b){paramsToVars(b);clearBody();var f=$j('<div id="home_container" class="max_width"><div id="billboard_container" class="home_section"></div><div id="partner_list" class="home_section"></div><div id="genre_tracks" class="home_section"></div><div id="catalog_list" class="home_section"></div><div id="news" class="home_section"></div></div>');
$j("#body").append(f);setHash("home");currentPage="home";this.loadPage(b)};this.setGenreTracks=function(b){this.genreTrackList.setData(b,getTrackLink)}}var home=new HomePage;
function HomePageScroller(b){this.elem=b;this.more=b.find(".more").data("scroller",this);this.less=b.find(".less").data("scroller",this);this.wind=b.find(".window");this.cont=b.find(".item_container").data("scroller",this);this.pagination=b.find(".pagination");this.items=this.cont.find(".item");this.itemWidth=this.items.outerWidth(true);this.maxItem=this.items.length-3;this.onItem=0;this.allowMove=true;this.right=function(){this.move(3)};this.left=function(){this.move(-3)};this.move=function(f){if(this.allowMove){f=
Math.max(Math.min(this.onItem+f,this.maxItem),0);this.cont.animate({left:0-f*this.itemWidth+"px"},{durationg:350,complete:function(){$j(this).data("scroller").allowMove=true}});this.allowMove=false;f==this.maxItem?this.more.hide():this.more.show();f==0?this.less.hide():this.less.show();this.onItem=f;this.setPagination()}};this.setPagination=function(){this.pagination.html(this.onItem+1+"-"+Math.min(this.onItem+3,this.items.length)+" of "+this.items.length)};this.init=function(){this.more.click(function(){$j(this).data("scroller").right();
return false});this.less.click(function(){$j(this).data("scroller").left();return false});this.setPagination();this.cont.css({width:this.items.length*this.itemWidth+"px"})};this.init()};function LeftNavTrackList(){this.updatePlayPauseState=function(){};this.highlightTrack=function(){};this.hideExpandedActual=function(){};this.stopExpandedTimer=function(){};this.hideExpandedActual=function(){};this.setResultsPerPage=function(){};this.enableFastTagging=function(){};this.disableFastTagging=function(){}}
function LeftNav(){this.sections=[];this.loaded=false;this.container=null;this.filtersDisabled=false;this.dashboardDisabled=this.informationDisabled=true;this.load=function(){ajax("p=left_nav","leftNav.loadResponse")};this.loadResponse=function(b){this.loaded=true;if(b.length){for(j=0;j<this.sections.length;j++)if(this.sections[j].title=="Filter Tracks"){this.container.removeChild(this.sections[j].container);this.sections.splice(j,1);break}var f=new LeftNavSection("Filter Tracks");this.filtersDisabled&&
f.hide();this.sections[this.sections.length]=f;this.container.appendChild(f.container);for(var j=0;j<b.length;j++){var k=b[j],n=new LeftNavComponent(k.title);n.type=k.type;if(k.items)n.list=k.items;n.varName=k.varName;n.generate(k);f.addComponent(n)}this.container.appendChild(createDiv("","clr"));adjustRightHeight()}projector.show()};this.generate=function(b){if(this.container==null){var f=this.container=createDiv("left_nav");sec=new LeftNavSection("Information");var j=new LeftNavComponent("Pages");
j.type="pages-list";j.generate("information");sec.addComponent(j);this.sections[this.sections.length]=sec;f.appendChild(sec.container);j.show();sec.hide();this.generateDashboardSection()}if(b!=null){b.appendChild(this.container);this.loaded||this.load();this.disableAll()}projector.show()};this.generateDashboardSection=function(){if(this.container){for(var b=0;b<this.sections.length;b++)if(this.sections[b].title=="Dashboard"){this.container.removeChild(this.sections[b].container);this.sections.splice(b,
1);b--}if(user.logged){sec=new LeftNavSection("Dashboard");b=new LeftNavComponent("Your Account");b.type="pages-list";b.generate("db-your account");sec.addComponent(b);if(user.isRep()||user.isAdmin()){b=new LeftNavComponent("User Tools");b.type="pages-list";b.generate("db-user tools");sec.addComponent(b);b=new LeftNavComponent("Catalog Admin");b.type="pages-list";b.generate("db-catalog admin");sec.addComponent(b);b=new LeftNavComponent("Stats");b.type="pages-list";b.generate("db-stats");sec.addComponent(b);
if(user.canAdminWhite()){b=new LeftNavComponent("Branded Site");b.type="pages-list";b.generate("db-branded site");sec.addComponent(b)}}this.sections[this.sections.length]=sec;this.container.appendChild(sec.container);sec.showAll();sec.hide()}}};this.getSection=function(b){for(var f=0;f<this.sections.length;f++)if(this.sections[f].title==b)return this.sections[f];return null};this.paramsSet=function(){var b=this.getParams(true);b=paramsToVars(b);for(var f in b)if(b[f]!="")return true;return false};
this.getParams=function(b){if(get("left_nav")){for(var f=[],j=0;j<this.sections.length;j++){var k=this.sections[j].getParams(b);if(k)f[f.length]=k}return f.join("&")}};this.setParams=function(b){if(get("left_nav"))for(var f=0;f<this.sections.length;f++)this.sections[f].setParams(b)};this.applyOverride=function(){var b=paramsToVars(hashToParams(getHash()));if(b.override){delete b.override;for(var f=0;f<this.sections.length;f++)this.sections[f].applyOverride(b)}};this.login=function(){if(user.logged){this.container==
null&&this.generate();adjustRightHeight()}};this.logout=function(){adjustRightHeight()};this.disableAll=function(){this.disableFilters();this.disableInformation();this.disableDashboard()};this.disableFilters=function(){var b;if(b=this.getSection("Filter Tracks"))b.hide();this.filtersDisabled=true};this.enableFilters=function(){var b;if(b=this.getSection("Filter Tracks"))b.show();this.filtersDisabled=false};this.disableInformation=function(){var b;if(b=this.getSection("Information"))b.hide();this.informationDisabled=
true};this.enableInformation=function(){var b;(b=this.getSection("Information"))?b.show():console.log("not found");this.informationDisabled=false};this.disableDashboard=function(){var b;if(b=this.getSection("Dashboard"))b.hide();this.dashboardDisabled=true};this.enableDashboard=function(){var b;if(b=this.getSection("Dashboard"))b.show();else{this.generateDashboardSection();(b=this.getSection("Dashboard"))?b.show():console.log("dashboard leftnav section not found")}this.dashboardDisabled=false};this.setCurrent=
function(b){$j("#left_pages_list a").removeClass("current");$j("#left_"+b).addClass("current")}}var leftNav=new LeftNav;
function LeftNavSection(b){this.title=b;this.enabled=true;this.components=[];this.container=null;this.getComponent=function(f){if((i=this.getComponentIndex(f))!=-1)return this.components[i];return null};this.getComponentIndex=function(f){for(var j=0;j<this.components.length;j++)if(this.components[j].title==f)return j;return-1};this.addComponent=function(f,j){if(j&&(i=this.getComponentIndex(j))!=-1)this.components.splice(i,0,f);else{this.components[this.components.length]=f;this.refresh()}};this.removeComponent=
function(f){f=this.getComponentIndex(f);if(f!=-1){get("left_nav_components",this.container).removeChild(this.components[f].container);this.components.splice(f,1)}};this.showAll=function(){for(var f=0;f<this.components.length;f++)this.components[f].show()};this.refresh=function(){var f=get("left_nav_components",this.container);removeChildren(f);for(var j=0;j<this.components.length;j++)f.appendChild(this.components[j].container)};this.reset=function(){for(var f=0;f<this.components.length;f++)this.components[f].reset()};
this.getParams=function(f){for(var j=[],k=0;k<this.components.length;k++){var n=this.components[k].getParams(this.enabled||f&&f!=undefined);if(n)j[j.length]=n}return j.join("&")};this.setParams=function(f){for(var j=0;j<this.components.length;j++)this.components[j].setParams(f)};this.applyOverride=function(f){for(var j=0;j<this.components.length;j++)this.components[j].applyOverride(f)};this.setEnabled=function(f){this.enabled=f};this.init=function(){var f=this.container=createDiv("","left_nav_section"),
j=createDiv("","left_nav_heading");j.appendChild(createDiv("","left_nav_heading_top"));j.appendChild(createDiv("","left_nav_heading_title",createText(this.title)));f.appendChild(j);f.appendChild(createDiv("left_nav_components",""));f.section=this};this.hide=function(){this.container.style.display="none";adjustRightHeight()};this.show=function(){this.container.style.display="block";adjustRightHeight()};this.init()}
function LeftNavComponent(b,f){this.container=null;this.list=[];this.name=b.toLowerCase().replace(" ","_");this.range=null;this.showing=f;this.title=b;this.varName=this.type="";this.show=function(){this.showing=true;(content=get("content",this.container)).style.display="block";get("title",this.container).className="";adjustRightHeight()};this.hide=function(){this.showing=false;get("content",this.container).style.display="none";get("title",this.container).className="left_title_hidden";adjustRightHeight()};
this.swap=function(){this.showing?this.hide():this.show();user.leftNavChange(this.title,this.showing)};this.generate=function(j){switch(this.type){case "list-single":j=get("content",this.container);for(var k,n=0;n<this.list.length;n++){var p=this.list[n],q=createDiv("","left_item_container");k=createElement("input","left_item_"+this.name+"_"+n);k.value=p.value;k.val=p.value;k.name="left_item_"+this.name;k.type="radio";k.onclick=function(){this.comp.changed()};k.comp=this;if(n==0)k.checked=true;q.appendChild(k);
q.appendChild(l=createElement("label"));l.htmlFor="left_item_"+this.name+"_"+n;l.innerHTML=p.text;j.appendChild(q)}j.appendChild(createDiv("","clr"));break;case "list-multiple":j=get("content",this.container);for(n=0;n<this.list.length;n++){p=this.list[n];q=createDiv("","left_item_container");k=createElement("input","left_item_"+this.name+"_"+n);k.value=p.value;k.val=p.value;k.type="checkbox";k.onclick=function(){this.comp.changed()};k.comp=this;q.appendChild(k);q.appendChild(l=createElement("label"));
l.htmlFor="left_item_"+this.name+"_"+n;l.innerHTML=p.text;j.appendChild(q)}j.appendChild(createDiv("","clr"));break;case "pages-list":new LeftNavPagesComponent(get("content",this.container),j);break;case "range-select":this.range=new LeftNavRangeComponent(get("content",this.container),j,this);break;default:console.log("not a recognized type")}};this.reset=function(){switch(this.type){case "list-multiple":for(var j=0;j<this.list.length;j++){var k=get("left_item_"+this.name+"_"+j);k.checked=false}break;
case "list-single":for(j=0;j<this.list.length;j++){k=get("left_item_"+this.name+"_"+j);k.checked=j==0}break;case "range-select":this.range.reset();break}};this.getParams=function(j){if(this.type=="range-select")return this.range.getParams(j);var k="";if(j)for(j=0;j<this.list.length;j++){var n=get("left_item_"+this.name+"_"+j);if(n.checked&&n.value)k+=this.varName+"="+escape(n.val)+"&"}return k?k.substring(0,k.length-1):this.varName?this.varName+"=":""};this.setParams=function(j){if(this.varName&&
j.indexOf(this.varName)!=-1){if(this.type=="range-select")return this.range.setParams(j);myVar=paramsToVars(j)[this.varName];this.applyVars(myVar);this.show()}};this.applyVars=function(j){j.isArray||(j=[j]);for(var k=0;k<j.length;k++)for(var n=0;n<this.list.length;n++){var p=get("left_item_"+this.name+"_"+n);if(p.val==j[k])p.checked=true}};this.applyOverride=function(j){if(!(this.type!="list-single"&&this.type!="list-multiple"))if(j[this.varName]){this.reset();this.applyVars(j[this.varName]);this.show()}};
this.changed=function(){reloadTrackList(true)};this.init=function(){var j=this.container=createDiv("left_"+this.name,"left_nav_component");j.appendChild(h1=createH1(this.title,function(){this.component.swap()},"","title"));h1.component=this;j.appendChild(createDiv("content","left_nav_"+this.name));this.showing?this.show():this.hide()};this.init()}
function LeftNavRangeComponent(b,f,j){this.component=j;this.container=$j(b);this.max=f.max;this.min=f.min;this.varName=f.varName;this.getParams=function(k){if(k){k=this.getMin();var n=this.getMax();if((k!=this.min||n!=this.max)&&n!==false&&k!==false)return this.varName+"[min]="+k+"&"+this.varName+"[max]="+n}return"length[min]=&length[max]="};this.setParams=function(k){var n=k.match(new RegExp(this.varName+"\\[min\\]=([0-9]+)"));if(n){this.setMin(n[1]);this.component.show()}if(k=k.match(new RegExp(this.varName+
"\\[max\\]=([0-9]+)"))){this.setMax(k[1]);this.component.show()}};this.secToTime=function(k){var n=k%60;return Math.floor(k/60)+":"+(n<10?"0":"")+n};this.timeToSec=function(k){k=k.match(/^([0-9]+)?:?(\b[0-9]+)$/);if(!k)return false;return Number(k[1]?k[1]*60:0)+Number(k[2])};this.getMin=function(){return this.timeToSec($j("#min",this.container).val())};this.getMax=function(){return this.timeToSec($j("#max",this.container).val())};this.setMin=function(k){$j("#min",this.container).val(this.secToTime(k))};
this.setMax=function(k){$j("#max",this.container).val(this.secToTime(k))};this.applyChanges=function(){var k=this.getMin(),n=this.getMax();$j(".error",this.container).html("");var p=false;if(k===false){$j(".current_min span.error",this.container).html("Bad Value");p=true}if(n===false){$j(".current_max span.error",this.container).html("Bad Value");p=true}if(n<k){this.setMin(n);this.setMax(k)}p||reloadTrackList(true)};this.reset=function(){$j(".error",this.container).html("");this.setMin(this.min);
this.setMax(this.max)};this.show=function(){this.container.append($j('<div class="range_component"><h5>Select a range</h5><div class="range"></div><div class="current_min"><span class="label">Min:</span><span class="error"></span><input type="text" id="min" value="'+this.secToTime(this.min)+'"/></div><div class="current_max"><span class="label">Max:</span><span class="error"></span><input type="text" id="max" value="'+this.secToTime(this.max)+'"/></div></div>').append($j(createButton("Apply","apply_"+
this.varName,"","javascript:;",function(){$j(this).data("ranger").applyChanges()})).data("ranger",this)))};this.init=function(){this.show()};this.init()}
function LeftNavPagesComponent(b,f){this.container=b;this.type=f;this.show=function(){var j=$j("#left_pages_list",this.container);if(j.length){var k="";if(this.type=="information")for(var n=0;n<config.footerPages.length;n++)k+='<a href="#'+config.footerPages[n].hash+'" id="left_'+config.footerPages[n].hash+'">'+config.footerPages[n].text+"</a>";else if(this.type=="db-your account")k='<a href="'+getDashboardLink("account")+'" id="left_account">Change Account Info/Password</a>';else if(this.type=="db-user tools"){k=
'<a href="'+getDashboardLink("create_user")+'" id="left_create_user">Create User</a>';if(config.registrationFields.length)k+='<a href="'+getDashboardLink("registrations")+'" id="left_registrations">Registrations</a>';k+='<a href="'+getDashboardLink("project_tracking")+'" id="left_project_tracking">Sent Project Tracking</a>'}else if(this.type=="db-catalog admin")k='<a href="'+getDashboardLink("rules")+'" id="left_rules">Rules</a><a href="'+getDashboardLink("features")+'" id="left_features">Featured</a><a href="'+
getDashboardLink("download_permissions")+'" id="left_download_permissions">Download Permission Requests</a>';else if(this.type=="db-stats")k='<a href="'+getDashboardLink("catalog")+'" id="left_catalog">Catalog Stats</a><a href="'+getDashboardLink("trends")+'" id="left_trends">Trends</a><a href="'+getDashboardLink("user")+'" id="left_user">User Stats</a>';else if(this.type=="db-branded site")k='<a href="'+getDashboardLink("white_basic")+'" id="left_white_basic">Basic Information</a><a href="'+getDashboardLink("white_search")+
'" id="left_white_search">Embedded Search</a><a href="'+getDashboardLink("white_tabs")+'" id="left_white_tabs">Tabs</a><a href="'+getDashboardLink("white_track_lists")+'" id="left_white_track_lists">Track Lists</a>';j.html(k+'<div class="clr"></div>')}};this.init=function(){leftNav.leftNavPages=this;this.container.appendChild(createDiv("left_pages_list"));this.show()};this.init()}function setLeftNavParams(b){currentPage=="explorer"&&leftNav.setParams(b)};function Projector(){this.SORT="sort";this.SOURCE="source";this.FILTER="filter";this.container=null;this.sortedProjects=[];this.sourcedProjects=[];this.filteredProjects=[];this.highlightedProject=0;this.projectOptionsBox=this.showProjectOptionsTimer=this.hideProjectOptionsTimer=this.optionsProject=null;this.quickProjects=[];this.splashWaiting=false;this.setProjects=function(b){this.sortedProjects=b;this.applyFrom(this.SORT)};this.applyFrom=function(b){switch(b){case this.SORT:this.applySort();case this.SOURCE:this.applySource();
case this.FILTER:this.applyFilter()}this.populate()};this.show=function(){$j(leftNav.container).append(this.container);if(this.splashWaiting){setTimeout("projector.showSplash();",250);this.splashWaiting=false}var b=0;if(this.container.find("#source a.selected").html()=="Created")b=1;for(var f=0;f<user.projects.length;f++)if(user.projects[f].created==b)return;if(user.projects.length)b?this.showReceived():this.showCreated()};this.showProjectOptions=function(b){if(this.optionsProject&&this.optionsProject.id==
b.id){if(this.hideProjectOptionsTimer){clearTimeout(this.hideProjectOptionsTimer);this.hideProjectOptionsTimer=null}}else{this.hideProjectOptionsReal();this.optionsProject=b;this.showProjectOptionsTimer=setTimeout("projector.showProjectOptionsReal();",500)}};this.showProjectOptionsReal=function(){if(this.optionsProject){this.showProjectOptionsTimer=null;var b=$j('<div id="project_options"><div class="name">'+this.optionsProject.name+" options</div></div>");b.append(generateDownloadButton("project",
this.optionsProject,false,function(){projector.showProjectOptions(projector.optionsProject)},function(){projector.hideProjectOptions()})).append(generateEmailButton("project",this.optionsProject));this.optionsProject.created&&b.append(generateQuickProjectModeButton(this.optionsProject));b.append('<a href="http://'+config.insecureDomain+"/"+getProjectLink(this.optionsProject.id)+'" class="link" title="Copy this link to manually mail this project to someone">link</a>');$j("body").append(b);this.projectOptionsBox=
b;b=$j("#project_"+this.optionsProject.id);var f=b.offset();this.projectOptionsBox.css({top:b.height()+f.top+4+"px",left:f.left+20+"px"});this.projectOptionsBox.hover(function(){projector.showProjectOptions($j(this).data("project"))},function(){projector.hideProjectOptions()}).data("project",this.optionsProject)}};this.repositionProjectOptions=function(){if(this.optionsProject&&this.projectOptionsBox){var b=$j("#project_"+this.optionsProject.id),f=b.offset();this.projectOptionsBox.css({top:b.height()+
f.top+4+"px",left:f.left+20+"px"})}};this.hideProjectOptions=function(){if(this.optionsProject)if(this.showProjectOptionsTimer){clearTimeout(this.showProjectOptionsTimer);this.optionsProject=this.showProjectOptionsTimer=null}else this.hideProjectOptionsTimer=setTimeout("projector.hideProjectOptionsReal();",50)};this.hideProjectOptionsReal=function(){this.optionsProject=null;this.hideProjectOptionsTimer&&clearTimeout(this.hideProjectOptionsTimer);this.hideProjectOptionsTimer=null;if(this.projectOptionsBox){this.projectOptionsBox.remove();
this.projectOptionsBox=null}$j("#project_options").remove()};this.inQuickProjectMode=function(){if(this.quickProjects.length)return true;return false};this.isQuickProject=function(b){for(var f=0;f<this.quickProjects.length;f++)if(this.quickProjects[f].id==b)return true;return false};this.hasAllQuickProjects=function(b){if(!b.length||!this.quickProjects.length||b.length<this.quickProjects.length)return false;for(var f=0;f<this.quickProjects.length;f++){for(var j=false,k=0;k<b.length;k++)if(b[k].id==
this.quickProjects[f].id){j=true;break}if(!j)return false}return true};this.toggleQuickProjectMode=function(b){if(this.isQuickProject(b.id))this.removeQuickProject(b);else{this.quickProjects.push(b);this.handleQuickProjectsChange()}};this.handleQuickProjectsChange=function(){getTrackList().disableFastTagging();getAlbumList().disableFastTagging();if(this.quickProjects.length){getTrackList().enableFastTagging();getAlbumList().enableFastTagging();shadowfax.enableFastTagging()}else shadowfax.disableFastTagging();
if(currentPage=="details")this.quickProjects.length?detailsPage.enableFastTagging():detailsPage.disableFastTagging();if(currentPage=="catalog")this.quickProjects.length?catalogPage.enableFastTagging():catalogPage.disableFastTagging();if(currentPage=="explorer")this.quickProjects.length?explorer.enableFastTagging():explorer.disableFastTagging();if(this.quickProjects.length){$j("#header").find("#quick_project_bar").remove().end().append('<div id="quick_project_bar"><div class="max_width">Add tracks and albums to: </div></div>').addClass("with_quick_project_bar");
for(var b=$j("#header #quick_project_bar .max_width"),f=0;f<this.quickProjects.length;f++){b.append('<a class="project_name" href="'+getProjectLink(this.quickProjects[f].id)+'">'+this.quickProjects[f].name+"</a>");b.append($j('<img src="images/buttons/project_lit.png" title="Remove from your adding projects" class="faux_button"/>').click(function(){projector.removeQuickProject($j(this).data("project"))}).data("project",this.quickProjects[f]))}$j("#quick_project_bar div").append(createButton("Done",
"","",getDefaultLink(),function(){projector.disableQuickProjectMode()}));f=$j("#quick_project_bar").outerHeight();if(f>33){b=$j("#header").css("height","").height();$j("#header").css("height",b+f-33+"px")}else $j("#header").css("height","")}else $j("#header").removeClass("with_quick_project_bar").css("height","").find("#quick_project_bar").remove();if(currentPage=="project")this.isQuickProject(projectPage.project.id)?$j(".project_options .quick_project_button img").attr("src","images/buttons/project_lit.png"):
$j(".project_options .quick_project_button img").attr("src","images/buttons/project_inactive.png");if(this.projectOptionsBox)this.isQuickProject(this.projectOptionsBox.data("project").id)?$j("#project_options .quick_project_button img").attr("src","images/buttons/project_lit.png"):$j("#project_options .quick_project_button img").attr("src","images/buttons/project_inactive.png");b=$j(".quick_project_button.small");for(f=0;f<b.length;f++){var j=$j(b[f]);this.isQuickProject(j.data("project").id)?j.find("img").attr("src",
"images/buttons/project_lit_small.png"):j.find("img").attr("src","images/buttons/project_inactive_small.png")}this.repositionProjectOptions()};this.removeQuickProject=function(b){for(var f=0;f<this.quickProjects.length;f++)this.quickProjects[f].id==b.id&&this.quickProjects.splice(f,1);this.quickProjects.length?this.handleQuickProjectsChange():this.disableQuickProjectMode()};this.disableQuickProjectMode=function(){this.quickProjects=[];this.handleQuickProjectsChange()};this.addQuickProjectTrack=function(b,
f){if(!this.quickProjects.length)return console.log("Add track called without quick project "+b);f=f?1:0;for(var j=[],k=0;k<this.quickProjects.length;k++)j.push(this.quickProjects[k].id);ajax("p=projects&action=quick_track&add="+f+"&trackId="+b+"&projectIds[]="+j.join("&projectIds[]="),"projector.addQuickProjectItemResponse");$j(".quick_project_track_image_"+b).attr("src","images/buttons/project_"+(f?"remove":"add")+".png");f||(f=-1);b=trackBank.find(b);for(k=0;k<user.projects.length;k++)if(this.isQuickProject(user.projects[k].id)){j=
true;if(b)for(var n=0;n<b.user_projects.length;n++)if(b.user_projects[n].id==user.projects[k].id){j=false;f<0&&b.user_projects.splice(n,1);break}f>0&&b&&b.user_projects.push(user.projects[k]);if(j&&f>0||!j&&f<0){user.projects[k].trackCount+=f;user.projects[k].totalTrackCount+=f}}b&&trackBank.updateAll(b.id,"user_projects",b.user_projects);this.setProjects(user.projects);requestCache.clear()};this.addQuickProjectItemResponse=function(){for(var b=0;b<this.quickProjects.length;b++)if(("#"+getHash()).indexOf(getProjectLink(this.quickProjects[b].id))===
0){requestCache.clear();currentHash="";return}};this.addQuickProjectAlbum=function(b,f){if(!this.quickProjects.length)return console.log("Add album called without quick project "+b.id);f=f?1:0;for(var j=[],k=0;k<this.quickProjects.length;k++)j.push(this.quickProjects[k].id);ajax("p=projects&action=quick_album&add="+f+"&albumId="+b.id+"&projectIds[]="+j.join("&projectIds[]="),"projector.addQuickProjectItemResponse");$j(".quick_project_album_image_"+b.id).attr("src","images/buttons/project_"+(f?"remove":
"add")+".png");f||(f=-1);for(k=0;k<user.projects.length;k++)if(this.isQuickProject(user.projects[k].id)){j=true;for(var n=0;n<b.user_projects.length;n++)if(b.user_projects[n].id==user.projects[k].id){j=false;f<0&&b.user_projects.splice(n,1);break}f>0&&b.user_projects.push(user.projects[k]);if(j&&f>0||!j&&f<0){user.projects[k].albumCount+=f;user.projects[k].totalTrackCount+=parseInt(b.count.replace(/[^0-9]/,""))*f}}this.setProjects(user.projects);requestCache.clear()};this.editProject=function(b,f,
j){if(f==b.name){j.showError("Please enter a new name or cancel");return true}if(!trim(f)){j.showError("Please enter a name for the project");return true}for(var k=0;k<user.projects.length;k++)if(user.projects[k].name==f&&user.projects[k].id!=b.id){j.showError("There's already a project with this name. Please choose another");return true}ajax("newName="+escape(f)+"&projectId="+b.id,"projector.editProjectResponse","POST","p=projects&action=change_name");for(k=0;k<user.projects.length;k++)if(user.projects[k].id==
b.id)user.projects[k].name=f;projector.setProjects(user.projects);return false};this.editProjectResponse=function(){requestCache.clear();currentHash=""};this.removeProject=function(b){console.log(b.name+" removed");ajax("projectId="+b.id,"projector.removeProjectResponse","POST","p=projects&action=remove_project");for(var f=0;f<user.projects.length;f++)if(user.projects[f].id==b.id){user.projects.splice(f,1);break}projector.setProjects(user.projects);return false};this.removeProjectResponse=function(){requestCache.clear();
user.projects.length?setHash(getProjectLink(user.projects[0].id)):setHash("explorer");alertManager.alert(createText("Project removed"))};this.copyProject=function(b,f,j){if(f==b.name){j.showError("Please enter a new name or cancel");return true}if(!trim(f)){j.showError("Please enter a name for the project");return true}for(var k=0;k<user.projects.length;k++)if(user.projects[k].name==f&&user.projects[k].id!=b.id){j.showError("There's already a project with this name. Please choose another");return true}ajax("name="+
escape(f)+"&projectId="+b.id,"projector.copyProjectResponse","POST","p=projects&action=copy");return false};this.copyProjectResponse=function(b){b=b[0].projects;if(b.length){user.projects.push(b[0]);this.setProjects(user.projects);setHash(getProjectLink(b[0].id))}else alertManager.alert(createText("An unknown error has occurred. Please try again later"))};this.makeCreated=function(b){for(var f=0;f<user.projects.length;f++)if(user.projects[f].id==b.id)user.projects[f].created=1;this.setProjects(user.projects);
ajax("projectId="+b.id,"projector.makeCreatedResponse","POST","p=projects&action=make_created")};this.makeCreatedResponse=function(){this.showCreated();requestCache.clear();currentHash=""};this.showReceived=function(){$j("#projector #source a:last").click()};this.showCreated=function(){$j("#projector #source a:first").click()};this.populate=function(){if(user.logged){var b=this.filteredProjects;this.container.find(".left_nav_heading_title").html("My Projects ("+b.length+(this.sortedProjects.length==
b.length?"":"/"+this.sortedProjects.length)+")");for(var f=this.container.find("#project_list").empty(),j=0;j<b.length;j++){var k=b[j];f.append(a=$j('<a id="project_'+k.id+'" href="'+getProjectLink(k.id)+'"'+(k.id==this.highlightedProject?' class="selected"><img src="images/shared/projector-select.png"/><span>'+k.name+" ("+k.totalTrackCount+")</span>"+k.name+" ("+k.totalTrackCount+")</a>":">"+k.name+" ("+k.totalTrackCount+")</a>")).hover(function(){projector.showProjectOptions($j(this).data("project"))},
function(){projector.hideProjectOptions()}).click(function(){projector.hideProjectOptions()}).data("project",k));k.created&&a.append(generateQuickProjectModeButton(k,true)).addClass("created");currentPage=="project"&&projectPage.project.id==k.id&&a.click(function(){projector.hideSplash()})}b.length||f.append('<span class="none">No projects matched</a>')}};this.applySort=function(){var b=this.sortedProjects,f;switch(this.container.find("#sort select").val()){case "Album Count":f=function(j,k){return j.albumCount<
k.albumCount?1:-1};break;case "Name":f=function(j,k){return j.name.toLowerCase()>k.name.toLowerCase()?1:-1};break;case "Date Created":f=function(j,k){return j.dateCreated<k.dateCreated?1:-1};break;case "Date Added To":f=function(j,k){return j.dateAltered<k.dateAltered?1:-1};break;case "Track Count":default:f=function(j,k){return j.totalTrackCount<k.totalTrackCount?1:-1};break}b.sort(f);this.sortedProjects=b};this.applySource=function(){var b=this.sortedProjects,f=this.container.find("#source a.selected").html();
if(f=="Created")f=1;else if(f=="Received")f=0;else{this.sourcedProjects=b;return}for(var j=[],k=0;k<b.length;k++)b[k].created==f&&j.push(b[k]);this.sourcedProjects=j};this.applyFilter=function(){var b=this.sourcedProjects,f=this.container.find("#search input").val();if(f){for(var j=[],k=0;k<b.length;k++)b[k].name.indexOf(f)!=-1&&j.push(b[k]);this.filteredProjects=j}else this.filteredProjects=b};this.showNewProjectBox=function(){this.ib=new InputBox("Name your new project",function(b,f){return projector.createNewProject(b,
f)},null,"Create","Cancel")};this.createNewProject=function(b,f){f=trim(f);if(!f){this.ib.showError("Please enter a project name");return true}for(b=0;b<user.projects.length;b++)if(user.projects[b].name==f){this.ib.showError('You already have <a href="'+getProjectLink(user.projects[b].id)+'">a project with this name</a>. Please choose another');return true}ajax("name="+escape(f),"projector.createNewProjectResponse","POST","p=projects&action=new");delete this.ib;return false};this.createNewProjectResponse=
function(b){if(b[0].result!="Success")alertManager.alert(createText(b[0].result));else{b=b[0].projects[0];user.projects.push(b);this.setProjects(user.projects);this.toggleQuickProjectMode(b)}};this.tagCopyResponse=function(b){if(b[0].result!="Success")alertManager.alert(createText(b[0].result));else{b=b[0].projects[0];user.projects.push(b);this.setProjects(user.projects);setHash(getProjectLink(b.id))}};this.showSplash=function(){$j("#splash_container").remove();var b=$j('<div id="splash_container"></div>');
b.click(function(){projector.hideSplash()});b=$j("#right_content").append(b).addClass("splash");var f=$j('<div id="splash_info"><div class="highlight"><h2>Projects</h2><a id="close" href="'+getDefaultLink()+'"></a></div><div class="unhighlight">'+(user.projects.length?"Select a project on the left to see its tracks, download it, send it to someone, edit it, and more!<br/><br/>You can also search for a specific project or sort them to find the project you're looking for.<br/><br/>To make a new project, use the button at the bottom of the left My Projects widget.":
'Projects let you group tracks and albums together to download, send to people, save for later, etc.<br/><br/>To make a new project, click the "New Project" button at left and then you can use the "My Projects" widget on the left to view and manage your projects')+"</div></div>");f.find("#close").click(function(){projector.hideSplash()});f=this.splashFb=new FocusBox(f,true);f.show();var j=b.offset();f.div.css({top:j.top+100+"px",left:j.left+(b.width()-f.div.width())/2+"px"})};this.hideSplash=function(){$j("#splash_container").remove();
$j("#right_content").removeClass("splash");this.splashFb&&this.splashFb.hide()};this.showSplashDelayed=function(){this.splashWaiting=true};this.collapse=function(){var b=this.container.find("#projector");if(b.css("display")=="none"){b.show();this.container.find(".left_nav_heading_top:eq(1)").hide()}else{b.hide();this.container.find(".left_nav_heading_top:eq(1)").show()}};this.highlight=function(b){this.highlightedProject=b;this.populate()};this.unhighlight=function(){if(this.highlightedProject){this.highlightedProject=
0;this.populate()}};this.init=function(){this.container=$j('<div class="left_nav_section"><div class="left_nav_heading faux_button"><div class="left_nav_heading_top"></div><div class="left_nav_heading_title">My Projects</div><div class="left_nav_heading_top hidden"></div></div><div id="projector"><div id="source"><a href="'+getDefaultLink()+'">Created</a> | <a href="'+getDefaultLink()+'">Received</a></div><div id="sort">Sort: <select><option>Track Count</option><option>Album Count</option><option>Name</option><option>Date Created</option><option>Date Added To</option></select></div><div id="search">Search: <input type="text"/></div><div id="project_list"><span class="none"><a href="'+
getSignupLink()+'">Create an account</a> or <a href="'+getLoginLink()+'">Log In</a> to use projects</span></div><div></div>');this.container.find(".left_nav_heading").click(function(){projector.collapse()});this.container.find("#projector").append($j(createButton("New Project","new_project","",getDefaultLink())).click(function(){projector.showNewProjectBox()}));this.container.find("#search input").keyup(function(){projector.applyFrom(projector.FILTER)});this.container.find("#source a").click(function(){$j(this).parent().find("a").removeClass("selected").end().end().addClass("selected").blur();
projector.applyFrom(projector.SOURCE)}).first().addClass("selected");this.container.find("#sort select").change(function(){projector.applyFrom(projector.SORT)})};this.init()}var projector=new Projector;function ExplorerPage(){this.explorerTrackListConfig=new TrackListConfig;this.explorerTrackListConfig.columnList=getStandardColumnList();this.explorerTrackListConfig.allowBlock=true;this.explorerTrackListConfig.callback="explorer.setData";this.explorerTrackListConfig.callbackActual=function(b){explorer.setData(b)};this.explorerTrackListConfig.bankKey="explorer";this.explorerTrackListConfig.useCache=true;this.explorerTrackListConfig.useFilters=true;this.trackList=new TrackList(this.explorerTrackListConfig);
this.loadPage=function(b){setHash("explorer"+paramsToHash(b));currentHash=getHash();this.trackList.loadPage(b);if(firstCheck){b=paramsToVars(b);b.s&&search.addSearchTerm(b.s)}};this.setData=function(b){b[0].totalWeight?this.trackList.enableWeight(b[0].totalWeight):this.trackList.disableWeight();if(this.trackList.setData(b,getExplorerLink)){heading.hide();var f=b[0].headingName,j=b[0].headingValue;if(f&&j){var k=$j("<div></div>");if(f=="project"){k.append(aCont=$j('<div class="tag_options"></div>'));
var n=paramsToVars(b[0].pageVars);n={id:n.t,tag:j,userId:n.u};aCont.append(generateDownloadButton("tag",n,true));aCont.append(generateProjectTagCopyButton(n))}if(f=="album"&&b.length>1){k.append(aCont=$j('<div class="tag_options"></div>'));n=b[0].album;aCont.append(generateDownloadButton("album",n,true));aCont.append(generateEmailButton("album",n));aCont.data("album",n)}n=paramsToVars(b[0].pageVars);if(n.code){k.append(aCont=$j('<div class="tag_options wide"></div>'));aCont.append(generateDownloadButton("code",
n.code,true))}n=new Sorter(this.trackList);k.append(n);k.append('<div class="clr"></div>');if(config.showTrackCount)f==j?heading.show(j+" ("+numberFormat(b[0].count)+")","",k):heading.show(j+" ("+numberFormat(b[0].count)+")",f+":",k);else f==j?heading.show(j,"",k):heading.show(j,f+":",k)}projector.inQuickProjectMode()&&this.enableFastTagging()}};this.enableFastTagging=function(){this.disableFastTagging();var b=$j(".tag_options");if(album=b.data("album"))b.append(generateQuickProjectAlbumButton(album))};
this.disableFastTagging=function(){$j(".tag_options .quick_project_button").remove()};this.editTagResponse=function(b){alertManager.basicResultAlert(b);user.reloadTags();currentHash=""};this.copyTag=function(b){if(user.logged)new InputBox('What would you like to name the copy of project "'+b.tag+'"?',function(f,j,k){return explorer.copyTagActual(f,j,k)},null,"Copy","Cancel",b,"");else new BinaryBox("You must be logged in to use this feature.",null,null,"Ok","Cancel")};this.copyTagActual=function(b,
f){ajax("p=tags&action=copy&tid="+b.id+"&uid="+b.userId+"&newTag="+escape(f),"explorer.editTagResponse")};this.copyCode=function(b){if(user.logged)new InputBox("What would you like to name the project?",function(f,j,k){return explorer.copyCodeActual(f,j,k)},null,"Add","Cancel",b,"");else new BinaryBox("You must be logged in to use this feature.",null,null,"Ok","Cancel")};this.copyCodeActual=function(b,f){ajax("p=tags&action=code_copy&code="+b+"&newTag="+escape(f),"explorer.editTagResponse")};this.generatePage=
function(b){if(currentPage!="explorer"){clearBody();var f=createDiv("explorer_container","max_width");leftNav.generate(f);leftNav.enableFilters();var j=createDiv("right_content","right_content"),k=createDiv("track_list_"+this.explorerTrackListConfig.bankKey,"track_list");if(config.singleCatalog&&user.canAdmin(config.singleCatalog))this.trackList.allowEdit=true;this.trackList.generatePage(k);j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}currentPage=
"explorer";this.loadPage(b)}}var explorer=new ExplorerPage;
function AlbumPage(){this.albumListConfig=new ListConfig;this.albumListConfig.columnList=getStandardAlbumColumnList();this.albumListConfig.callback="albumPage.setData";this.albumListConfig.callbackActual=function(b){albumPage.setData(b)};this.albumListConfig.useFilters=true;this.albumListConfig.bankKey="albumPage";this.albumList=new AlbumList(this.albumListConfig);this.loadPage=function(b){setHash("albums"+paramsToHash(b));currentHash=getHash();this.albumList.loadPage(b)};this.setData=function(b){this.albumList.setData(b,
getAlbumsLink);b[0].pageVars.split("&");heading.hide();b[0].headingName&&b[0].headingValue&&heading.show(b[0].headingValue+" ("+b[0].count+")",b[0].headingName+":")};this.generatePage=function(b){if(currentPage!="albums"){clearBody();var f=createDiv("album_container","max_width");leftNav.generate(f);var j=createDiv("right_content","right_content"),k=createDiv("list_"+this.albumListConfig.bankKey,"list");if(config.singleCatalog&&user.canAdmin(config.singleCatalog))this.albumList.allowEdit=true;this.albumList.generatePage(k);
j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}currentPage="albums";this.loadPage(b)}}var albumPage=new AlbumPage;
function ArtistPage(){this.artistListConfig=new ListConfig;this.artistListConfig.columnList=getStandardArtistColumnList();this.artistListConfig.callback="artistPage.setData";this.artistListConfig.callbackActual=function(b){artistPage.setData(b)};this.artistListConfig.useFilters=true;this.artistListConfig.bankKey="artistPage";this.artistList=new ArtistList(this.artistListConfig);this.loadPage=function(b){setHash("artists"+paramsToHash(b));currentHash=getHash();this.artistList.loadPage(b)};this.setData=
function(b){this.artistList.setData(b,getArtistsLink);b[0].pageVars.split("&");heading.hide();b[0].headingName&&b[0].headingValue&&heading.show(b[0].headingValue+" ("+b[0].count+")",b[0].headingName+":")};this.generatePage=function(b){if(currentPage!="artists"){clearBody();var f=createDiv("artist_container","max_width");leftNav.generate(f);var j=createDiv("right_content","right_content"),k=createDiv("list_"+this.artistListConfig.bankKey,"list");if(config.singleCatalog&&user.canAdmin(config.singleCatalog))this.artistList.allowEdit=
true;this.artistList.generatePage(k);j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}currentPage="artists";this.loadPage(b)}}var artistPage=new ArtistPage;
function LabelListPage(){this.labelListConfig=new ListConfig;this.labelListConfig.columnList=getStandardLabelColumnList();this.labelListConfig.callback="labelListPage.setData";this.labelListConfig.callbackActual=function(b){labelListPage.setData(b)};this.labelListConfig.useFilters=true;this.labelListConfig.bankKey="labelListPage";this.labelList=new LabelList(this.labelListConfig);this.loadPage=function(b){setHash("labels"+paramsToHash(b));currentHash=getHash();this.labelList.loadPage(b)};this.setData=
function(b){this.labelList.setData(b,getLabelsLink);b[0].pageVars.split("&");heading.hide();b[0].headingName&&b[0].headingValue&&heading.show(b[0].headingValue+" ("+b[0].count+")",b[0].headingName+":")};this.generatePage=function(b){if(currentPage!="labels"){clearBody();var f=createDiv("label_container","max_width");leftNav.generate(f);var j=createDiv("right_content","right_content"),k=createDiv("list_"+this.labelListConfig.bankKey,"list");if(config.singleCatalog&&user.canAdmin(config.singleCatalog))this.labelList.allowEdit=
true;this.labelList.generatePage(k);j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}currentPage="labels";this.loadPage(b)}}var labelListPage=new LabelListPage;
function CatalogListPage(){this.catalogListConfig=new ListConfig;this.catalogListConfig.columnList=[new ListColumn("name",["image","name"]),new ListColumn("track count",["track count"]),new ListColumn("album count",["album count"]),new ListColumn("artist count",["artist count"]),new ListColumn("plays",["plays"])];this.catalogListConfig.callback="catalogListPage.setData";this.catalogListConfig.callbackActual=function(b){catalogListPage.setData(b)};this.catalogListConfig.useFilters=true;this.catalogListConfig.bankKey=
"catalogListPage";this.catalogList=new CatalogList(this.catalogListConfig);this.loadPage=function(b){setHash("catalogs"+paramsToHash(b));currentHash=getHash();this.catalogList.loadPage(b)};this.setData=function(b){this.catalogList.setData(b,getCatalogListLink);b[0].pageVars.split("&");heading.hide();b[0].headingName&&b[0].headingValue&&heading.show(b[0].headingValue+" ("+b[0].count+")",b[0].headingName+":")};this.generatePage=function(b){if(currentPage!="catalogs"){clearBody();var f=createDiv("catalog_container",
"max_width");leftNav.generate(f);var j=createDiv("right_content","right_content"),k=createDiv("list_"+this.catalogListConfig.bankKey,"list");this.catalogList.generatePage(k);j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}currentPage="catalogs";this.loadPage(b)}}var catalogListPage=new CatalogListPage;
function ProjectPage(){this.trackListConfig=new TrackListConfig;this.trackListConfig.allowBlock=false;this.trackListConfig.bankKey="project";this.trackListConfig.callback="projectPage.setData";this.trackListConfig.callbackActual=function(b){projectPage.setData(b)};this.trackListConfig.columnList=getStandardColumnList();this.trackListConfig.listFunc=getProjectList;this.trackListConfig.useCache=true;this.trackListConfig.useFilters=false;this.projectList=new ProjectList(this.trackListConfig);this.project=
null;this.loadPage=function(b,f){f||projector.hideSplash();setHash("project"+paramsToHash(b));f=paramsToVars(b);if(f.projectId)this.project={id:f.projectId};currentHash=getHash();this.projectList.loadPage(b);firstCheck&&f.s&&search.addSearchTerm(f.s)};this.setData=function(b){if(this.projectList.setData(b,getProjectLinkExact)){b=this.project=b[0].project;for(var f=false,j=0;j<user.projects.length;j++)if(user.projects[j].id==b.id){f=true;break}if(!f){user.projects.push(b);projector.showReceived();
projector.setProjects(user.projects)}heading.hide();setTitle("Project Details - "+b.name);projector.highlight(b.id);f=$j('<div class="project_options"></div>');f.append(generateDownloadButton("project",b,true));f.append(generateEmailButton("project",b));if(b.created){f.append(generateQuickProjectModeButton(b));f.append(generateProjectEditButton(b));f.append(generateProjectCopyButton(b))}else user.logged&&f.append(generateProjectMakeCreatedButton(b));user.logged&&f.append(generateProjectRemoveButton(b));
f.append('<div class="clr"></div>');b.id?heading.show(b.name+" ("+b.totalTrackCount+")","Project:",f):heading.show("Project not found")}};this.editTagResponse=function(b){alertManager.basicResultAlert(b);user.reloadTags();currentHash=""};this.copyTag=function(b){if(user.logged)new InputBox('What would you like to name the copy of project "'+b.tag+'"?',function(f,j,k){return explorer.copyTagActual(f,j,k)},null,"Copy","Cancel",b,"");else new BinaryBox("You must be logged in to use this feature.",null,
null,"Ok","Cancel")};this.copyTagActual=function(b,f){ajax("p=tags&action=copy&tid="+b.id+"&uid="+b.userId+"&newTag="+escape(f),"explorer.editTagResponse")};this.copyCode=function(b){if(user.logged)new InputBox("What would you like to name the project?",function(f,j,k){return explorer.copyCodeActual(f,j,k)},null,"Add","Cancel",b,"");else new BinaryBox("You must be logged in to use this feature.",null,null,"Ok","Cancel")};this.copyCodeActual=function(b,f){ajax("p=tags&action=code_copy&code="+b+"&newTag="+
escape(f),"explorer.editTagResponse")};this.generatePage=function(b){if(currentPage!="project"){clearBody();var f=createDiv("project_container","max_width");leftNav.generate(f);var j=createDiv("right_content","right_content"),k=createDiv("project_list_"+this.trackListConfig.bankKey,"track_list");if(config.singleCatalog&&user.canAdmin(config.singleCatalog))this.projectList.allowEdit=true;this.projectList.generatePage(k);j.appendChild(k);f.appendChild(j);f.appendChild(createDiv("","clr"));get("body").appendChild(f)}f=
currentPage;currentPage="project";this.loadPage(b,f!="project")};this.getTrackList=function(){return this.projectList.trackList}}var projectPage=new ProjectPage;function ProfilePage(){this.allowEdit=false;this.avatarUploader=null;this.backgroundChanges={};this.backgroundUploader=null;this.bannerChanges={};this.bannerUploader=null;this.currentUser=0;this.editedExperiences=[];this.editOn=false;this.fieldLengths={location:32,website:64,about:65535};this.firstCheck=false;this.generationVars=null;this.homeTrackLists=[];this.newExperienceId=0;this.page="";this.profileData=false;this.profileTrackList=null;this.projectTrackLists=[];this.projectTrackListManagers=
{};this.subPage="";this.subscriptionTrackLists=[];this.waitingForTheme=false;this.downloadsListConfig=new ListConfig;this.downloadsListConfig.columnList=[new ListColumn("status",["status"]),new ListColumn("type",["type"]),new ListColumn("name",["multi_name","expand"]),new ListColumn("format",["format"]),new ListColumn("tracks",["track count"])];this.downloadsListConfig.callback="profilePage.setData";this.downloadsListConfig.sortable=false;this.downloadsList=new MultiFormatList(this.downloadsListConfig);
this.historyListConfig=new ListConfig;this.historyListConfig.columnList=[new ListColumn("date",["date"]),new ListColumn("type",["type","history_type"]),new ListColumn("name",["multi_name","expand"]),new ListColumn("format",["format"]),new ListColumn("tracks",["track count"])];this.historyListConfig.callback="profilePage.setData";this.historyListConfig.sortable=false;this.historyList=new MultiFormatList(this.historyListConfig);this.receivedListConfig=new ListConfig;this.receivedListConfig.columnList=
[new ListColumn("date",["date"]),new ListColumn("type",["type"]),new ListColumn("name",["multi_name","expand"]),new ListColumn("sender",["user avatar","username"]),new ListColumn("download",["multi_download"]),new ListColumn("tracks",["track count"])];this.receivedListConfig.callback="profilePage.setData";this.receivedListConfig.sortable=false;this.receivedList=new MultiFormatList(this.receivedListConfig);this.projectsTrackListConfig=new TrackListConfig;this.projectsTrackListConfig.columnList=getStandardColumnList();
this.projectsTrackListConfig.callback="profilePage.setProjectTracks";this.projectsTrackListConfig.bankKey="profile_projects";this.projectsTrackListConfig.defaultResultsPerPage=10;this.projectsTrackListConfig.resultCountChanging=false;this.projectsTrackListConfig.resultsPerPageCookie=false;this.projectsTrackListConfig.pagination=true;this.projectsTrackListConfig.sortable=true;this.loadPage=function(b,f){setHash("profile"+paramsToHash(b));switch(f){case "history":this.historyList.loadPage(b.replace("page",
"type"));break;case "downloads":this.downloadsList.loadPage(b.replace("page","type"));break;case "received":this.receivedList.loadPage(b.replace("page","type"));break;case "favorites":b="p=profile&page=favorites&u="+this.currentUser+"&order="+paramsToVars(b).order+"&reload="+escape(Math.random());ajax(b,"profilePage.setData");break;case "projects":b="p=profile&page=projects&u="+this.currentUser+"&reload="+escape(Math.random());ajax(b,"profilePage.setData");break;case "subscriptions":ajax("p=profile&page=subscriptions",
"profilePage.setData");break;case "home":ajax("p=profile&page=home&reload="+escape(Math.random()),"profilePage.setData");break;case "profile":ajax("p=profile&page=profile&u="+this.currentUser+"&reload="+escape(Math.random()),"profilePage.setData");break;case "dashboard":ajax("p=dashboard&"+b,"profilePage.setData");break}this.firstCheck=false};this.setData=function(b,f){switch(this.page){case "history":this.historyList.setData(b,getProfileLinkExact);heading.show("Play and Download History");break;
case "downloads":this.downloadsList.setData(b,getProfileLinkExact);heading.show("Download Status");break;case "received":this.receivedList.setData(b,getProfileLinkExact);heading.show("Your Received Tracks, Albums, and Projects");break;case "favorites":f||requestCache.set("p=profile&page=favorites&u="+this.currentUser,b);this.setFavorites(b);break;case "projects":this.setProjects(b);break;case "subscriptions":this.setSubscriptions(b);break;case "home":this.setHome(b);break;case "profile":this.setProfile(b);
break;case "dashboard":this.setDashboard(b);break}if(config.secure)this.allowEdit&&this.editOn?this.showEditTheme():this.hideEditTheme();adjustRightHeight()};this.generatePage=function(b){this.editOn=false;var f=paramsToVars(b);if(!f.u&&user.logged)f.u=user.userData.id;else if(!f.u){alertManager.alert($j("<div>Sorry! We can't tell where you wanted to go.<br/>Try <a href=\"https://"+config.secureDomain+'/login.php">logging in!</a></div>')[0]);setHash(config.home);return}if(f.u!=this.currentUser){this.page=
currentPage="";this.profileData=false;this.currentUser=f.u}if(user.userData!=null&&(user.userData.admin||this.currentUser==user.userData.id)){this.allowEdit=true;this.editOn=config.secure}else this.allowEdit=false;this.page="";clearBody();$j("#body").append('<a id="banner_container" href="'+getProfileLink(this.currentUser)+'"><div id="artist_banner"></div></a>');var j=createDiv("artist_background"),k=createDiv("artist_container","max_width"),n=createDiv("artist_nav");k.appendChild(n);n=createDiv("content_container");
k.appendChild(n);j.appendChild(k);j.appendChild(createDiv("","clr"));get("body").appendChild(j);showLoader(n,"profile theme");this.waitingForTheme=true;f.params=b;this.generationVars=f;this.loadTheme();this.firstCheck=firstCheck};this.generateProfileContainer=function(b){b=true;var f=get("content_container");if(!f)return null;removeChildren(f);if(b){leftNav.generate(f);leftNav.disableFilters();f.appendChild(createDiv("right_content","right_content",b=createDiv("profile_content")))}else f.appendChild(b=
createDiv("profile_content"));return b};this.generateFinish=function(){for(var b=this.generationVars,f=b.params,j="",k=0;k<this.themeData.sections.length;k++)if(this.themeData.sections[k].value==b.page)j=b.page;if(this.themeData.user.rep&&"results"==b.page){j="results";search.setSelection("this rep");setHash("profile"+paramsToHash(f))}else if(!j){j="profile";setHash("profile"+paramsToHash(f))}config.secure&&this.hideEditTheme();switch(j){case "history":b=this.generateProfileContainer(false);if(!b)return;
k=createDiv("list_"+this.historyListConfig.bankKey,"list");this.historyList.generatePage(k);b.appendChild(k);break;case "downloads":b=this.generateProfileContainer(false);if(!b)return;k=createDiv("list_"+this.downloadsListConfig.bankKey,"list");this.downloadsList.generatePage(k);b.appendChild(k);break;case "received":b=this.generateProfileContainer(false);if(!b)return;k=createDiv("list_"+this.receivedListConfig.bankKey,"list");this.receivedList.generatePage(k);b.appendChild(k);break;case "favorites":b=
this.generateProfileContainer(false);if(!b)return;removeChildren(b);showLoader(b,"favorites data");break;case "projects":b=this.generateProfileContainer(false);if(!b)return;removeChildren(b);showLoader(b,"projects data");break;case "subscriptions":b=this.generateProfileContainer(false);if(!b)return;removeChildren(b);showLoader(b,"subscriptions data");break;case "home":b=this.generateProfileContainer(false);if(!b)return;removeChildren(b);showLoader(b,"your home data");break;case "notifications":b=
this.generateProfileContainer(false);if(!b)return;removeChildren(b);b.appendChild(div=createDiv("","",createText("This section not applicable...yet!")));div.style.marginLeft="10px";break;case "profile":b=this.generateProfileContainer(false);if(!b)return;removeChildren(b);showLoader(b,"profile data");break;case "requests":b=this.generateProfileContainer(false);if(!b)return;removeChildren(b);b.appendChild(div=createDiv("","",createText("Requests are coming soon!")));div.style.marginLeft="10px";break;
case "dashboard":b=this.generateProfileContainer(true);if(!b)return;leftNav.disableFilters();leftNav.enableDashboard();showLoader(b,"dashboard data");break}this.page=j;if(this.themeData){this.initNav(themeData.sections);this.setTitle()}this.setNav(this.page);this.loadPage(f,j);currentPage="profile"};this.initNav=function(b){var f=get("artist_nav");if(f){var j=get("artist_edit_theme",f);removeChildren(f);f.appendChild(createDiv("","artist_nav_left"));var k=createDiv("artist_nav_sections_container");
f.appendChild(k);for(var n=0,p=[],q=0;q<b.length;q++)p[p.length]=b[q];for(q=0;q<p.length;q++){b=p[q];k.appendChild(a=createA("artist_nav_"+b.value,"artist_nav_section"+(q==0?" artist_nav_section_left":"")+(q==p.length-1?" artist_nav_section_right":""),getProfileLink(this.currentUser,b.value),"","",b.display));a.style.width=a.offsetWidth+"px";n+=a.offsetWidth}k=k.offsetWidth;for(q=0;q<p.length;q++){b=Math.floor((k-n)/p.length/2);get("artist_nav_"+p[q].value).style.paddingLeft=b+(q==0?0:0)+"px";get("artist_nav_"+
p[q].value).style.paddingRight=b+"px"}f.appendChild(createDiv("","artist_nav_right"));f.appendChild(createDiv("artist_nav_selected"));this.setNav(this.page);j&&f.appendChild(j)}};this.setNav=function(b){var f=get("artist_nav_"+b);if(f){b=get("artist_nav_selected");b.style.marginLeft="0px";f=Math.floor(getPosition(f).x-getPosition(b).x+f.offsetWidth/2-b.offsetWidth/2);b.style.marginLeft=f+"px"}else get("artist_nav_selected").style.display="none"};this.getTrackList=function(){var b=[];switch(this.page){case "history":break;
case "downloads":case "received":break;case "favorites":for(var f=0;f<this.projectTrackLists.length;f++)b[f]=this.projectTrackLists[f];break;case "home":for(f=0;f<this.homeTrackLists.length;f++)b[f]=this.homeTrackLists[f];break;case "subscriptions":for(f=0;f<this.subscriptionTrackLists.length;f++)b[f]=this.subscriptionTrackLists[f];break;case "profile":if(this.profileTrackList!=null)b[0]=this.profileTrackList;break;case "dashboard":if(this.trackList!=null)b[0]=this.trackList}return new MetaTrackList(b)};
this.turnEdit=function(b){this.editOn=b;this.loadPage("u="+this.currentUser+"&page=profile","profile")};this.setProfile=function(b){var f=get("profile_content");removeChildren(f);this.profileTrackList=null;if(this.allowEdit&&!config.secure){f.appendChild(viewBar=createDiv("view_bar_profile","view_bar"));viewBar.appendChild(createElement("em","","",createText("This page is editable on "+config.name+" Secure")));$j(viewBar).append(getSecureA())}if(b.length){for(var j=[],k=[],n=[],p=0;p<b.length;p++){var q=
b[p];(q.x?k:j)[q.y]=q;n[n.length]=q.type}if(this.allowEdit&&this.editOn)if(n.indexOf("info")==-1)j[j.length]={type:"info",username:"You",text:""};if(j.length&&k.length){f.appendChild(leftDiv=createDiv("profile_left_column","profile_wide_column"));f.appendChild(rightDiv=createDiv("profile_right_column","profile_thin_column"))}else if(j.length){f.appendChild(leftDiv=createDiv("profile_left_column","profile_full_column"));rightDiv=null}else if(k.length){f.appendChild(rightDiv=createDiv("profile_right_column",
"profile_wide_column"));leftDiv=null}else{f.appendChild(createText("Sorry, this user hasn't added any data yet!"));rightDiv=leftDiv=null}b=[j,k];j=[leftDiv,rightDiv];for(k=0;k<b.length;k++)for(n=0;n<b[k].length;n++)if(b[k][n]){q=b[k][n];p=j[k];switch(q.type){case "featured_tracks":var r=new TrackListConfig;r.columnList=getStandardColumnList();r.defaultResultsPerPage=q.tracks.length-1;r.resultsPerPageCookie=false;r.pagination=false;r.resultCountChanging=false;r.headerBackground=true;r.sortable=false;
r.bankKey="profile_profile";trackBank.clear("profile_profile");p.appendChild(feat=createDiv("profile_featured_tracks","",createH2("Featured Tracks")));feat.appendChild(p=createDiv("track_list_profile_profile","track_list"));r=new TrackList(r);r.generatePage(p);r.setData(q.tracks,getExplorerLink);this.profileTrackList=r;p.appendChild(createA("profile_featured_all","",getProfileLink(this.currentUser,"tracks"),"","","All Tracks >>"));p.appendChild(createDiv("","clr"));break;case "artists":p.appendChild(artists=
createDiv("profile_artists","carousel",h2=createH2("Top Artists ("+q.artists.length+" of "+q.total+")")));artists.appendChild(createA("","profile_see_all",getProfileLink(this.currentUser,"artists"),"","","see all >>"));artists.appendChild(createDiv("","clr"));new Carousel(artists,q.artists,getArtistLink);break;case "albums":p.appendChild(albums=createDiv("profile_albums","carousel",createH2("Top Albums ("+q.albums.length+" of "+q.total+")")));albums.appendChild(createA("","profile_see_all",getProfileLink(this.currentUser,
"albums"),"","","see all >>"));albums.appendChild(createDiv("","clr"));new Carousel(albums,q.albums,getAlbumLink);break;case "labels":p.appendChild(labels=createDiv("profile_labels","carousel",createH2("Top Labels ("+q.labels.length+" of "+q.total+")")));labels.appendChild(createA("","profile_see_all",getProfileLink(this.currentUser,"labels"),"","","see all >>"));labels.appendChild(createDiv("","clr"));new Carousel(labels,q.labels,getLabelLink);break;case "basic":this.generateBasicContainer(q,p,this.editOn);
break;case "about":p.appendChild(about=createDiv("profile_featured_about"));about.appendChild(createDiv("","profile_heading",createText("about "+q.name)));about.appendChild(aboutDiv=createDiv("profile_about"));aboutDiv.innerHTML=q.text;this.allowEdit&&this.editOn&&this.makeEditable(aboutDiv,"about",q.text,true);break;case "info":p.appendChild(info=createDiv("profile_info"));info.appendChild(createH2("About "+q.username));info.appendChild(info=createRoundedDiv("profile_info"));info=info.content;info.appendChild(basic=
createDiv("","profile_info_top"));basic.innerHTML+='<div class="avatar" id="profile_info_avatar"><img id="profile_info_avatar_img" src="'+q.av+'"/></div>';basic.appendChild(facts=createDiv("profile_info_facts"));if(q.location)facts.innerHTML+='<div id="profile_subsection_location"><em>location:</em> <span id="profile_location">'+q.location+"</span></div>";else if(this.editOn&&this.allowEdit)facts.innerHTML+='<div id="profile_subsection_location"><em>location:</em> <span id="profile_location"></span></div>';
if(q.website)facts.innerHTML+='<div id="profile_subsection_website"><em>website:</em> <span id="profile_website"><a href="'+q.website+'" target="_blank">'+q.website+"</a></span></div>";else if(this.editOn&&this.allowEdit)facts.innerHTML+='<div id="profile_subsection_website"><em>website:</em> <span id="profile_website"></span></div>';facts.innerHTML+="<div><em>joined:</em> <span>"+formatDate("m/d/Y",q.join)+"</span></div>";if(this.editOn&&this.allowEdit){this.makeEditable(get("profile_location"),
get("profile_subsection_location"),"location",q.location?q.location:"");this.makeEditable(get("profile_website"),get("profile_subsection_website"),"website",q.website?q.website:"");p=createDiv("avatar_upload_container");basic.appendChild(p);r=d.createElement("input");r.type="text";r.id="avatar_upload_input";r.value="Browse to change your avatar";r.onkeydown=function(){return false};p.appendChild(r);p.appendChild(div=createDiv("avatar_upload_browse","button_dual_gray file_upload_container",createText("Browse")));
this.avatarUploader=new Uploader(div,false,"profilePage.avatarBrowseResponse",UploaderConstants.IMAGES,"profilePage.avatarLoadCallback");this.hideAvatarBrowse();p.appendChild(createDiv("removeme","clr"))}basic.appendChild(createDiv("","clr"));info.appendChild(aboutContainer=createDiv("profile_subsection_about"));aboutContainer.appendChild(about=createDiv("profile_about"));about.innerHTML=q.text;this.allowEdit&&this.editOn&&this.makeEditable(about,aboutContainer,"about",q.text,true);facts=get("profile_info_facts");
facts.style.marginTop=Math.floor((get("profile_info_avatar").offsetHeight-facts.offsetHeight)/2)+"px";break}}if(this.allowEdit&&this.editOn){f.appendChild(createDiv("profile_length"));f.appendChild(createDiv("profile_clr","clr"))}}else f.appendChild(createText("Sorry, this user hasn't added any data yet!"))};this.avatarBrowseResponse=function(){var b=this.avatarUploader.getFiles(),f=get("avatar_upload_container");get("avatar_upload_save")&&f.removeChild(get("avatar_upload_save"));get("avatar_save_message")&&
f.removeChild(get("avatar_save_message"));if(!b||!b.length||b.length!=1)b="Browse to change your avatar";else{b=b[0];if(remove=get("removeme",f))f.removeChild(remove);f.appendChild(createA("avatar_upload_save","button_dual_gray",getDefaultLink(),function(){profilePage.hideAvatarButtons();profilePage.avatarUploader.upload("u="+profilePage.currentUser+"&t=avatar","profilePage.avatarComplete","","profilePage.avatarError");return false},"","Upload"));f.appendChild(createDiv("avatar_save_message"));remove&&
f.appendChild(remove)}get("avatar_upload_input").value=b};this.showAvatarBrowse=function(){};this.hideAvatarBrowse=function(){};this.avatarLoadCallback=function(){this.showAvatarBrowse()};this.hideAvatarButtons=function(){this.hideAvatarBrowse();get("avatar_upload_save").style.display="none";var b=get("avatar_save_message");b.style.display="block";b.innerHTML="Saving...";b.className=""};this.avatarComplete=function(){var b=get("avatar_upload_container");b.removeChild(get("avatar_upload_save"));b.removeChild(get("avatar_save_message"));
this.showAvatarBrowse();get("avatar_upload_input").value="Browse to change your avatar";ajax("p=profile&page=profile&u="+this.currentUser,"profilePage.reloadAvatar")};this.reloadAvatar=function(b){if(avCont=get("profile_info_avatar_img"))avCont.src=b[0].av};this.avatarError=function(){this.showAvatarBrowse();get("avatar_upload_save").style.display="block";var b=get("avatar_save_message");b.style.display="block";b.innerHTML="Error saving. Please try again.";b.className="error"};this.makeEditable=function(b,
f,j,k,n){if(k==undefined||k==""){b.innerHTML="click button to add "+j;b.className="artist_profile_editable"}else b.className="";f.style.display="block";b=createA("details_edit_"+j.replace(" ","_"),"edit_button",getDefaultLink(),"",j.replace(" ","_"));b.large=n;b.onclick=function(){profilePage.allowInput(this,this.large);return false};b.innerHTML='<img src="/images/shared/edit.png"/>';b.par=f;b.value=k;f.appendChild(b)};this.allowInput=function(b,f){var j=createDiv("","details_input_container");j.large=
f;b.par.appendChild(j);b.onclick=function(){profilePage.disallowInput(this)};if(f){i=d.createElement("textarea");i.className="artist_profile_edit_text"}else{i=d.createElement("input");i.type="text"}if(b.className!="artist_profile_editable")for(i.value=b.value;i.value.indexOf("<br>")!=-1;)i.value=i.value.replace("<br>","\n");for(;i.value.indexOf("&gt;")!=-1;)i.value=i.value.replace("&gt;",">");for(;i.value.indexOf("&lt;")!=-1;)i.value=i.value.replace("&lt;","<");for(;i.value.indexOf("&amp;")!=-1;)i.value=
i.value.replace("&amp;","&");for(;i.value.indexOf("<br/>")!=-1;)i.value=i.value.replace("<br/>","\n");i.id="profile_field_"+b.name;i.maxLength=this.fieldLengths[b.name];j.appendChild(i);b.inputDiv=j;if(b.name){i.onblur=function(){profilePage.resetCharsLeft()};i.onkeyup=function(){profilePage.setCharsLeft(this)};i.onfocus=function(){profilePage.setCharsLeft(this)}}b.name&&i.focus();a=createA("","save_button",getDefaultLink(),function(){profilePage.saveChange(this);return false});a.input=i;a.field=
b.name;a.title="Click to save your change";j.appendChild(a);j.appendChild(createSpan("","clr"))};this.disallowInput=function(b){b.onclick=function(){profilePage.allowInput(this,this.large);return false};b.par.removeChild(b.inputDiv)};this.setCharsLeft=function(b){val=b.maxLength-b.value.length;if(val>1E3){val+="";val=val.substring(0,val.length-3)+","+val.substring(val.length-3,val.length)}if(g=get("profile_length"))g.innerHTML=val+" chars remaining"};this.resetCharsLeft=function(){if(g=get("profile_length"))g.innerHTML=
""};this.saveChange=function(b){ajax("field="+b.field+"&value="+escape(b.input.value),"profilePage.setField","POST","p=profile_details&u="+profilePage.currentUser)};this.setField=function(b){if(b[0].result=="success"){alertManager.alert(createText("Changes saved!"));if(div=get("profile_"+b[0].field)){div.innerHTML=b[0].value;div.className="";if(b[0].value==""){div.innerHTML="click button to add "+b[0].field;div.className="artist_profile_editable"}}if(a=get("details_edit_"+b[0].field)){this.disallowInput(a);
a.value=b[0].value}}else alertManager.alert(createText(b[0].result))};this.generateBasicContainer=function(b,f,j){f.appendChild(basic=createDiv("profile_featured_basic"));basic.innerHTML+='<div class="avatar"><img src="'+b.av+'"/></div><h2>'+b.username+"</h2>";basic.appendChild(info=createDiv("profile_featured_info"));info.innerHTML+='<div class="profile_heading">info</div>';if(b.location)info.innerHTML+='<div id="location_div"><em>location:</em> <span id="profile_location">'+b.location+"</span></div>";
else if(j&&this.allowEdit)info.innerHTML+='<div id="location_div"><em>location:</em> <span id="profile_location"></span></div>';if(b.website)info.innerHTML+='<div><em>website:</em> <span id="profile_website"><a href="'+b.website+'" target="_blank">'+b.website+"</a></span></div>";else if(j&&this.allowEdit)info.innerHTML+='<div><em>website:</em> <span id="profile_website"></span></div>';info.innerHTML+="<div><em>joined:</em> <span>"+formatDate("m/d/Y",b.join)+"</span></div>";if(j&&this.allowEdit){this.makeEditable(get("profile_location"),
"location",b.location?b.location:"");this.makeEditable(get("profile_website"),"website",b.website?b.website:"");b=d.createElement("input");b.type="text";b.id="avatar_upload_input";b.value="Browse to change your avatar";b.onkeydown=function(){return false};basic.appendChild(b);basic.appendChild(createA("avatar_upload_browse","button_dual_gray",getDefaultLink(),function(){uploader.browse(false,"profilePage.avatarBrowseResponse",uploader.IMAGES);return false},"","Browse"))}};this.setHome=function(b){this.homeTrackLists=
[];var f=get("profile_content");removeChildren(f);this.generateBasicContainer(b[0].module,f);get("profile_featured_basic").style.marginLeft="10px";var j=new ListConfig;j.columnList=[new ListColumn("date",["date"]),new ListColumn("type",["type"]),new ListColumn("name",["multi_name","expand"]),new ListColumn("sender",["user avatar","username"]),new ListColumn("download",["multi_download"]),new ListColumn("tracks",["track count"])];j.callback="profilePage.setHome";j.sortable=false;j.pagination=false;
j.resultCountChanging=false;j.bankKey="received";var k=new ListConfig;k.columnList=[new ListColumn("status",["status"]),new ListColumn("type",["type"]),new ListColumn("name",["multi_name","expand"]),new ListColumn("format",["format"]),new ListColumn("tracks",["track count"])];k.callback="profilePage.setHome";k.sortable=false;k.pagination=false;k.resultCountChanging=false;k.bankKey="downloads";var n=new ListConfig;n.columnList=[new ListColumn("date",["date"]),new ListColumn("type",["type","history_type"]),
new ListColumn("name",["multi_name","expand"]),new ListColumn("format",["format"]),new ListColumn("tracks",["track count"])];n.callback="profilePage.setHome";n.sortable=false;n.pagination=false;n.resultCountChanging=false;n.bankKey="history";b=[{title:"Recently received tracks, albums, and projects",shortName:"received",items:b[0].received,conf:j},{title:"Recently requested track bundles",shortName:"downloads",items:b[0].downloads,conf:k},{title:"Recently played and downloaded tracks, albums, and projects",
shortName:"history",items:b[0].history,conf:n}];for(j=0;j<b.length;j++){k=b[j];n=createDiv("profile_favorites_"+k.shortName,"profile_favorites_section");head=createDiv("","profile_favorites_heading",createText(k.title));n.appendChild(head);n.appendChild(container=createDiv("list_"+k.shortName,"list"));f.appendChild(n);if(k.items.length){n.appendChild(createA("","profile_favorites_see_all",getProfileLink(this.currentUser,k.shortName),"","","See More >>"));n=new MultiFormatList(k.conf);n.generatePage(container);
n.setData(k.items,getExplorerLink)}else container.appendChild(createText("Nothing to show here yet"))}};this.setProjects=function(b){var f=$j("#profile_content").empty();$j("#track_list_expanded_container_outer").remove();var j=user.projects;if(j.length){f.html("<h2>Your Projects ("+user.projects.length+')</h2><div id="project_lists"></div><div id="project_tracks"></div>');var k=[];for(f=0;f<b.length;f++)for(var n=0;n<user.projects.length;n++)if(b[f].tag==user.projects[n].id)k[k.length]=user.projects[n];
b=[{title:"Top 5 Populous Projects",projects:j},{title:"Top 5 Recent Projects",projects:k},{title:"Search Projects",type:"search"}];this.currentProjectId=0;j=$j("#project_lists");for(f=0;f<b.length;f++){k=b[f];n=$j('<div class="project_section"><h3>'+k.title+'</h3><div class="project_list"></div></div>');if(k.type!="search")this.setProjectList($j(".project_list",n),k.projects,"Add more projects!");else{$j("h3",n).append(input=$j('<input type="text"/>').data("list",$j(".project_list",n)).keyup(function(){var p=
trim(this.value).toLowerCase();if(p){for(var q=user.projects,r=[],u=0;u<q.length;u++)if(q[u].tag.indexOf(p)!=-1)r[r.length]=q[u];r.length?profilePage.setProjectList($j(this).data("list"),r,""):profilePage.setProjectList($j(this).data("list"),[],"No projects matched")}else profilePage.setProjectList($j(this).data("list"),[],"Enter some text to search")}));this.setProjectList($j(".project_list",n),[],"Enter some text to search");setupDefaultValueInputBox(input[0],"enter terms here")}j.append(n);f+1!=
b.length&&j.append('<div class="divider"></div>')}j.append('<div class="clr"></div>')}else{f.html('<h3>You haven\'t created any projects yet! (or you deleted them all but why would you do that?)</h3><a href="javascript:;" id="project_help_link">What are projects, you ask?</a>');$j("#project_help_link").click(function(){help.showProjectHelp()})}};this.setProjectList=function(b,f,j){b.empty();for(var k=0;k<f.length&&k<5;k++)b.append($j('<div class="project faux_button'+(this.currentProjectId==f[k].id?
" selected":"")+'" id="project_'+f[k].id+'">'+f[k].tag+" ("+f[k].count+")</div>").click(function(){profilePage.showProject($j(this).data("tagId"))}).data("tagId",f[k].id));k<5&&b.append('<div class="project faux_project">'+j+"</div>");for(k++;k<5;k++)b.append('<div class="project faux_project"></div>')};this.showProject=function(b){for(var f=null,j=0;j<user.projects.length;j++)if(b==user.projects[j].id){f=user.projects[j];break}if(f){f=$j("#track_list_profile_favorites_"+b);if(f.length){this.projectToShow=
0;f.empty();j=new TrackListConfig;j=new TrackListConfig;j.columnList=getStandardColumnList();j.callback="profilePage.projectTrackListManagers["+b+"].setProjectTracks";j.bankKey="profile_favorites_"+b;j.defaultResultsPerPage=10;j.resultCountChanging=false;j.resultsPerPageCookie=false;j.pagination=true;j.sortable=false;var k=new TrackList(j);k.generatePage(f[0]);this.projectTrackListManagers[b]={projectId:b,trackList:k,rpp:j.defaultResultsPerPage,first:true,setProjectTracks:function(n){(function(p){function q(r){p.loadProjectPage(r);
return false}p.trackList.setData(n,function(){return getDefaultLink()},q);if(p.first){window.scrollTo(0,getPosition(get("profile_favorites_"+p.projectId)).y-$j("#glamdring").height());p.first=false}})(this)},loadProjectPage:function(n){this.trackList.loadPage("&u="+profilePage.currentUser+"&type=tag&t="+this.projectId+"&show="+this.rpp+"&pg="+n)}};this.projectTrackLists[this.projectTrackLists.length]=k;this.projectTrackListManagers[b].loadProjectPage(0)}else this.projectToShow=b}};this.setProjectTracks=
function(b){this.projectTrackList.setData(b,getExplorerLink,function(f){profilePage.loadProjectPage(f);return false})};this.loadProjectPage=function(b){this.projectTrackList.loadPage("&u="+this.currentUser+"&type=tag&t="+this.currentProjectId+"&show="+this.projectsTrackListConfig.defaultResultsPerPage+"&pg="+b)};this.setFavorites=function(b){this.projectTrackLists=[];this.projectTrackListManagers={};var f=$j("#profile_content").empty();$j("#track_list_expanded_container_outer").remove();if(user.projects.length){f.html('<h2 class="favorites_header">Your Projects ('+
user.projects.length+")</h2>");var j=$j('<select><option value="cnt"'+(b[0].order=="cnt"?' selected="selected"':"")+'>Track Count</option><option value="alpha"'+(b[0].order=="alpha"?' selected="selected"':"")+'>Alphabetically</option><option value="date"'+(b[0].order=="date"?' selected="selected"':"")+">Date Modified</option></select>").change(function(){setHash(getProfileLinkArbitrary(profilePage.currentUser,"favorites",{order:this.options[this.selectedIndex].value}))});$j("h2",f).append(j).append("<span>Sort:</span>");
j=$j('<input type="text"/>').keyup(function(){var q=$j(".profile_favorites_section"),r=trim(this.value).toLowerCase();if(r)for(var u=0;u<q.length;u++){var v=$j(q[u]);v.data("tag").tag.indexOf(r)!=-1?v.show():v.hide()}else q.show()});setupDefaultValueInputBox(j[0],"enter terms here");$j("h2",f).append(j).append("<span>Search Project Names:</span>");for(j=0;j<b[0].projects.length;j++){var k=b[0].projects[j].tag,n=$j('<div id="profile_favorites_'+k.id+'" class="profile_favorites_section">').data("tag",
k);n.html('<div id="heading"><span id="preamble">Project:</span><span id="text">'+k.tag+" ("+k.count+')</span><div id="buttons"></div></div>');var p=$j("#heading #buttons",n);p.append($j('<a class="profile_projects_option profile_projects_delete" href="javascript:;" title="Delete this project"><img src="/images/shared/delete.png"/></a>').click(function(){profilePage.deleteTag($j(this).data("proj"));return false}).data("proj",k));p.append($j('<a class="profile_projects_option profile_projects_edit" href="javascript:;" title="Rename this project"><img src="/images/shared/edit.png"/></a>').click(function(){profilePage.editTag($j(this).data("proj"));
return false}).data("proj",k));p.append($j('<a class="profile_projects_option profile_projects_copy" href="javascript:;" title="Copy this project\'s tracks to a new project"><img src="/images/shared/copy.png"/></a>').click(function(){profilePage.copyTag($j(this).data("proj"));return false}).data("proj",k));p.append($j('<a class="profile_projects_option profile_projects_email" href="javascript:;" title="Email project &quot;'+k.tag+'&quot; to someone"><img src="images/shared/email-16.png"/></a>').click(function(){profilePage.emailTag($j(this).data("proj"));
return false}).data("proj",k));k.userId=user.userData.id;p.append($j(generateDownloadButton("tag",k)).addClass("profile_projects_option profile_projects_download"));p.append($j('<a class="profile_projects_option profile_projects_link" href="'+getExplorerLink("u="+this.currentUser+"&type=tag&t="+k.id)+'"title="View this list externally">link</a>'));n.append('<div id="track_list_profile_favorites_'+k.id+'" class="track_list"><a href="javascript:;" class="show_tracks">[Show Tracks]</a></div>');$j(".track_list a",
n).click(function(){profilePage.showProject($j(this).data("id"))}).data("id",k.id);f.append(n)}b[0].hiddenTracks&&f.append('<div class="notice"><h4>Not finding all your projects/tracks?</h4>You have some projects/tracks on another SourceAudio site that aren\'t visible here. To see those tracks, please visit the site on which you added those projects/tracks.</div>');this.projectToShow&&this.showProject(this.projectToShow)}else{f.html('<h3>You haven\'t created any projects yet! (or you deleted them all but why would you do that?)</h3><a href="javascript:;" id="project_help_link">What are projects, you ask?</a>');
$j("#project_help_link").click(function(){help.showProjectHelp()})}};this.setSubscriptions=function(b){this.subscriptionTrackLists=[];var f=get("profile_content");removeChildren(f);b=b[0];for(var j in b){j=j.substring(0,j.length-1);for(var k=0;k<b[j+"s"].length;k++){var n=b[j+"s"][k],p=new TrackListConfig;p.columnList=getStandardColumnList();p.bankKey="profile_subscription_"+j+"_"+n[j].id;p.resultCountChanging=false;p.resultsPerPageCookie=false;p.pagination=false;p.sortable=false;var q=createDiv(p.bankKey,
"profile_subscriptions_section");head=createDiv("","profile_favorites_heading",createText(n[j].name+" ("+n[j].count+")"));a=createA("","profile_favorites_delete",getDefaultLink(),function(){profilePage.unsubscribe(this.sub);return false},"","unsubscribe");n[j].type=j;a.sub=n[j];head.appendChild(a);q.appendChild(head);q.appendChild(container=createDiv("track_list_"+p.bankKey,"track_list"));n[j].count>5&&q.appendChild(createA("","profile_favorites_see_all",getProfileLink(this.currentUser,"subscriptions",
j)+"_id_"+n[j].id,"","","See all >>"));f.appendChild(q);if(n[j].count>0){p=new TrackList(p);p.generatePage(container);p.setData(n.tracks,getExplorerLink);this.subscriptionTrackLists[this.subscriptionTrackLists.length]=p}else container.appendChild(createDiv("","profile_subs_none",createText("No new tracks found")))}}};this.unsubscribe=function(b){new BinaryBox("Are you sure you want to unsubscribe from "+b.name+"?",function(f,j){return profilePage.unsubscribeActual(f,j)},null,"Yes","Cancel",b)};this.unsubscribeActual=
function(b){ajax("p=sub&"+(b.type=="artist"?"a=":"r=")+b.id+"&s=0","profilePage.unsubscribeResponse")};this.unsubscribeResponse=function(b){this.loadPage(hashToParams(),"subscriptions");alertManager.basicResultAlert(b)};this.editTag=function(b){new InputBox('What new name would you like to give project "'+b.tag+'"?',function(f,j,k){return profilePage.editTagActual(f,j,k)},null,"Save","Cancel",b,b.tag)};this.editTagActual=function(b,f){ajax("p=tags&action=edit&tag="+escape(b.tag)+"&newTag="+escape(f),
"profilePage.editTagResponse")};this.editTagResponse=function(b){alertManager.basicResultAlert(b);user.reloadTags()};this.copyTag=function(b){new InputBox('What would you like to name the copy of project "'+b.tag+'"?',function(f,j,k){return profilePage.copyTagActual(f,j,k)},null,"Copy","Cancel",b,"")};this.copyTagActual=function(b,f){ajax("p=tags&action=copy&tag="+escape(b.tag)+"&newTag="+escape(f),"profilePage.editTagResponse")};this.deleteTag=function(b){new BinaryBox('Are you sure you want to delete the project "'+
b.tag+'"?',function(f,j){return profilePage.deleteTagActual(f,j)},null,"Yes","Cancel",b)};this.deleteTagActual=function(b){ajax("p=tags&action=delete&tagId="+b.id,"profilePage.deleteTagResponse")};this.deleteTagResponse=function(b){alertManager.basicResultAlert(b);user.reloadTags()};this.emailTag=function(b){new Emailer("tag",b.id)};this.downloadTag=function(b){new Downloader("tag",b)};this.loadTheme=function(b){if(!b&&this.themeData&&this.currentUser==this.themeData.id)this.setTheme([this.themeData]);
else b||!(result=requestCache.get("p=profile_theme&u="+this.currentUser))?ajax("p=profile_theme&u="+this.currentUser+"&reload="+escape(Math.random()),"profilePage.setTheme"):this.setTheme(result)};this.setTitle=function(){var b="";switch(this.page){case "favorites":b=" - Projects";break;case "home":b=" - Home";break;case "history":b=" - History";break;case "subscriptions":b=" - Subscriptions";break;case "profile":b=user.logged&&user.userData.id==this.currentUser?" - Profile":" - Info";break;case "requests":b=
" - Requests";break;case "downloads":b=" - Downloads";break;case "received":b=" - Received";break}setTitle((this.themeData.user.rep?"Catalog Details - ":"User Details - ")+this.themeData.user.username+b)};this.setTheme=function(b){this.themeData=themeData=b[0];requestCache.set("p=profile_theme&u="+themeData.id,b);if(themeData.user.rep){search.addSearchOption(new SearchOption("Current Catalog",function(k){setHash(getProfileLinkArbitrary(profilePage.currentUser,"results",{s:k}))},"type=rep&id="+this.currentUser));
this.page=="results"&&search.setSelection("Current Catalog")}this.initNav(themeData.sections);this.profileData=themeData;b=themeData.banner;if(b.url){var f=get("banner_container"),j=get("artist_banner");j.style.width=b.width+"px";j.style.height=b.height+"px";j.style.backgroundColor="";f.style.height=b.height+"px";f.style.backgroundImage="url('"+b.url+"')";switch(b.tiling){case "RV":f.style.backgroundRepeat="repeat-y";break;case "RH":f.style.backgroundRepeat="repeat-x";break;case "RN":f.style.backgroundRepeat=
"no-repeat";break;case "RA":default:f.style.backgroundRepeat="repeat";break}f.style.backgroundColor="#"+b.color;f.style.backgroundPosition="top center"}else{f=get("banner_container");f.style.height="";f.style.backgroundImage="";f.style.backgroundColor="";f.style.backgroundPosition="";j=get("artist_banner");j.style.backgroundColor="#000"}b=get("artist_background");f=themeData.background;if(f.url){b.style.backgroundImage="url("+f.url+")";switch(f.tiling){case "RV":b.style.backgroundRepeat="repeat-y";
break;case "RH":b.style.backgroundRepeat="repeat-x";break;case "RN":b.style.backgroundRepeat="no-repeat";break;case "RA":default:b.style.backgroundRepeat="repeat";break}if(f.position.length==2){posString="";switch(f.position.substring(1,2)){case "L":posString+="left";break;case "R":posString+="right";break;case "C":default:posString+="center";break}posString+=" ";switch(f.position.substring(0,1)){case "T":posString+="top";break;case "B":posString+="bottom";break;case "M":default:posString+="center";
break}b.style.backgroundPosition=posString}}else b.style.backgroundImage="";if(f.color)b.style.backgroundColor="#"+f.color;this.waitingForTheme&&this.generateFinish();this.page&&this.setTitle()};this.hideEditTheme=function(){this.uneditBackground();this.uneditBanner();this.uneditTheme();if(t=get("artist_edit_theme")){(navD=get("artist_nav")).removeChild(t);navD.className=""}};this.showEditTheme=function(){if(!get("artist_edit_theme"))if(!(!user.logged||!user.userData||this.currentUser!=user.userData.id&&
!user.userData.admin)){navD=get("artist_nav");navD.appendChild(createA("artist_edit_theme","",getDefaultLink(),function(){profilePage.editTheme()},"","edit theme"));navD.className="editing"}};this.editTheme=function(){var b=get("artist_banner");if(this.profileData.banner.url==""){b.style.width="1000px";b.style.height="180px";b.style.backgroundColor="#000"}else if(this.profileData.banner.height<180)get("banner_container").style.height="180px";div=createDiv("artist_edit_banner");div.appendChild(createText("Profile Banner"));
div.appendChild(createA("artist_edit_banner_link","",getDefaultLink(),"","","edit"));b.appendChild(div);div=createDiv("artist_edit_background");div.appendChild(createText("Wallpaper"));div.appendChild(createA("artist_edit_background_link","",getDefaultLink(),"","","edit"));get("body").appendChild(div);$j("#artist_edit_background_link").toggle(function(){profilePage.editBackground();this.innerHTML="hide"},function(){profilePage.uneditBackground();this.innerHTML="edit"});$j("#artist_edit_banner_link").toggle(function(){profilePage.editBanner();
this.innerHTML="hide"},function(){profilePage.uneditBanner();this.innerHTML="edit"});pos=getPosition(get("artist_edit_theme"));div.style.top=pos.y+50-get("header").offsetHeight+"px";div.style.left=pos.x+get("artist_edit_theme").offsetWidth-div.offsetWidth+"px";get("artist_edit_theme").onclick=function(){profilePage.uneditTheme()};get("artist_edit_theme").innerHTML="hide edit theme"};this.uneditTheme=function(){if(get("artist_edit_theme")){get("artist_edit_theme").onclick=function(){profilePage.editTheme()};
get("artist_edit_theme").innerHTML="edit theme";var b=get("artist_banner");if(this.profileData.banner.url==""){b.style.width="0px";b.style.height="0px"}else get("banner_container").style.height="";this.uneditBackground();this.uneditBanner();if(t=get("artist_edit_banner"))b.removeChild(get("artist_edit_banner"));if(t=get("artist_edit_background"))get("body").removeChild(get("artist_edit_background"))}};this.editBackground=function(){this.backgroundChanges={};var b=createDiv("artist_background_edit_container",
"image_edit_container");b.appendChild(createH2("Edit Your Profile Background"));b.appendChild(createH3("Color"));var f=this.profileData.background.color;f||(f="ffffff");section=createDiv("","section",createSpan("","",createText("Background Color")));i=d.createElement("input");i.type="text";i.id="artist_edit_background_color_code";i.className="color_code";i.value=f;i.maxLength=6;i.onkeyup=function(){profilePage.updateBackgroundColor(this.value,true)};section.appendChild(i);colorDiv=createDiv("artist_edit_background_color",
"color");colorDiv.onclick=function(){if(profilePage.colorOpen){profilePage.colorOpen=false;colorWheel.destroyWheel(get("body"))}else{profilePage.colorOpen=true;colorWheel.createWheel(get("body"),function(k){profilePage.updateBackgroundColor(k)});var j=get("artist_background_edit_container");pos=getPosition(j);j=get("wheel");j.style.top=pos.y-get("header").offsetHeight+"px";j.style.left=pos.x-j.offsetWidth-2+"px"}};colorDiv.style.backgroundColor="#"+f;section.appendChild(colorDiv);section.appendChild(createDiv("",
"clr"));b.appendChild(section);b.appendChild(createH3("Background Image"));section=createDiv("","section");section.appendChild(createDiv("","",createText("Current Image:")));if(this.profileData.background.url){img=createDiv("artist_edit_background_current_container","sub");a=createA("","",this.profileData.background.url,"","","click here");a.target="_blank";img.appendChild(a);img.appendChild(createText(" | "));img.appendChild(createA("","",getDefaultLink(),function(){var j=get("artist_edit_background_current_container");
profilePage.backgroundChanges.removeBackground=true;j.appendChild(createText("save to confirm"));j.removeChild(this);return false},"","remove"));section.appendChild(img)}else section.appendChild(createDiv("","sub",createText("none")));b.appendChild(section);section=createDiv("","section");section.appendChild(createDiv("","",createText("Insert New Image:")));img=createDiv("artist_edit_background_image_container","sub");img.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBackgroundImageUpload()},
"","upload image"));img.appendChild(createText(" | "));img.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBackgroundImageURL()},"","enter image URL"));section.appendChild(img);b.appendChild(section);section=createDiv("","section");section.appendChild(createSpan("","",createText("Position:")));f=createElement("select");f.id="background_position";f.onchange=function(){profilePage.backgroundChanges.position=true};pos=["Top Center","Middle Center","Bottom Center","Top Left","Middle Left",
"Bottom Left","Top Right","Middle Right","Bottom Right"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.profileData.background.position==o.value)o.selected=true;f.appendChild(o)}section.appendChild(f);section.appendChild(createDiv("","clr"));b.appendChild(section);section=createDiv("","section");section.appendChild(createSpan("","",createText("Tiling:")));f=createElement("select");
f.id="background_tiling";f.onchange=function(){profilePage.backgroundChanges.tiling=true};pos=["Repeat All","Repeat Horizontal","Repeat Vertical","Repeat None"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.profileData.background.tiling==o.value)o.selected="selected";f.appendChild(o)}section.appendChild(f);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createA("artist_edit_background_save",
"button_dual_gray save",getDefaultLink(),function(){profilePage.saveBackground();return false},"","Save Changes"));b.appendChild(createDiv("background_message","message"));f=createDiv("artist_background_close_button","header_signup_close_button close");f.onclick=function(){profilePage.uneditBackground()};b.appendChild(f);b=new FocusBox(b,true);b.show();f=get("artist_edit_background");pos=getPosition(f);b.div.css({top:pos.y-(b.div.outerHeight(true)-f.offsetHeight)/2+"px",left:pos.x-b.div.outerWidth(true)-
16+"px"});this.backgroundFocusBox=b};this.uneditBackground=function(){if(get("artist_edit_background_link")){if(this.colorOpen){this.colorOpen=false;colorWheel.destroyWheel(get("body"))}this.backgroundFocusBox&&this.backgroundFocusBox.hide()}};this.updateBackgroundColor=function(b,f){if(b.length&&(new RegExp("^#?([0-9A-F]{3}|[0-9A-F]{6})$","gi")).test(b)){if(b.substring(0,1)=="#")b=b.substring(1);b="#"+b;get("artist_edit_background_color").style.backgroundColor=b;this.backgroundChanges.color=true;
if(!f)get("artist_edit_background_color_code").value=b.substring(1)}};this.editBackgroundImageUpload=function(){this.backgroundChanges.backgroundImageURL=false;get("artist_background_edit_container").style.height="354px";var b=get("artist_edit_background_image_container");removeChildren(b);var f=d.createElement("input");f.type="text";f.id="background_upload_input";f.className="upload_input";f.value="Browse";f.onkeydown=function(){return false};b.appendChild(f);b.appendChild(browseDiv=createDiv("background_upload_browse",
"button_dual_gray file_upload_container browse",createText("Browse")));this.backgroundUploader=new Uploader(browseDiv,false,"profilePage.backgroundBrowseResponse",UploaderConstants.IMAGES,"profilePage.backgroundLoadCallback");b.appendChild(createDiv("removeme","clr"));b.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBackgroundImageURL()},"","switch to enter image URL"))};this.saveBackground=function(){get("background_message").innerHTML="Saving...";get("artist_edit_background_save").style.display=
"none";changes=this.backgroundChanges;changeString="&t=background";if(changes.backgroundImageURL)changeString+="&backgroundURL="+escape(get("artist_edit_background_url").value);else if(changes.removeBackground)changeString+="&removeBackground=1";if(changes.color)changeString+="&color="+get("artist_edit_background_color_code").value;if(changes.position)changeString+="&position="+get("background_position").value;if(changes.tiling)changeString+="&tiling="+get("background_tiling").value;if(get("background_upload_input")&&
this.backgroundUploader){var b=this.backgroundUploader.getFiles();if(!(!b||!b.length||b.length!=1)){changeString=changeString.replace("&removeBackground=1","");profilePage.backgroundUploader.upload("u="+profilePage.currentUser+changeString,"profilePage.reloadBackground","","profilePage.backgroundError");return}}changeString!=""?ajax(changeString,"profilePage.backgroundChanged","POST","p=profile_theme&u="+this.currentUser):this.uneditBackground()};this.backgroundChanged=function(b){this.uneditBackground();
this.setTheme(b);alertManager.alert(createText("Changes saved!"))};this.backgroundBrowseResponse=function(){var b=this.backgroundUploader.getFiles(),f=get("background_upload_container");get("background_upload_save")&&f.removeChild(get("background_upload_save"));get("background_save_message")&&f.removeChild(get("background_save_message"));b=!b||!b.length||b.length!=1?"Browse":b[0];get("background_upload_input").value=b};this.backgroundLoadCallback=function(){};this.reloadBackground=function(){this.uneditBackground();
this.loadTheme(true);alertManager.alert(createText("Changes saved!"))};this.backgroundError=function(){get("artist_edit_background_save").style.display="block";get("background_message").innerHTML="Error saving. Try later";alertManager.alert(createText("Error saving. Try later"))};this.editBackgroundImageURL=function(){this.backgroundChanges.backgroundImageUpload=false;this.backgroundUploader=null;get("artist_background_edit_container").style.height="354px";var b=get("artist_edit_background_image_container");
removeChildren(b);var f=d.createElement("input");f.type="text";f.id="artist_edit_background_url";f.className="url";f.onchange=function(){profilePage.backgroundChanges.backgroundImageURL=true};b.appendChild(f);b.appendChild(createDiv("","clr"));b.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBackgroundImageUpload()},"","switch to upload image"))};this.editBanner=function(){this.bannerChanges={};var b=createDiv("banner_edit_container","image_edit_container");b.appendChild(createH2("Edit Your Profile Banner"));
b.appendChild(createH3("Color"));var f=this.profileData.banner.color;f||(f="ffffff");section=createDiv("","section",createSpan("","",createText("Banner Color")));i=d.createElement("input");i.type="text";i.id="artist_edit_banner_color_code";i.className="color_code";i.value=f;i.maxLength=6;i.onkeyup=function(){profilePage.updateBannerColor(this.value,true)};section.appendChild(i);colorDiv=createDiv("artist_edit_banner_color","color");colorDiv.onclick=function(){if(profilePage.colorOpen){profilePage.colorOpen=
false;colorWheel.destroyWheel(get("body"))}else{profilePage.colorOpen=true;colorWheel.createWheel(get("body"),function(k){profilePage.updateBannerColor(k)});var j=get("banner_edit_container");pos=getPosition(j);j=get("wheel");j.style.top=pos.y-get("header").offsetHeight+"px";j.style.left=pos.x-j.offsetWidth-2+"px"}};colorDiv.style.backgroundColor="#"+f;section.appendChild(colorDiv);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createH3("Banner Image"));section=createDiv("",
"section");section.appendChild(createDiv("","",createText("Current Image:")));if(this.profileData.banner.url){img=createDiv("artist_edit_banner_current_container","sub");a=createA("","",this.profileData.banner.url,"","","click here");a.target="_blank";img.appendChild(a);img.appendChild(createText(" | "));img.appendChild(createA("","",getDefaultLink(),function(){var j=get("artist_edit_banner_current_container");profilePage.bannerChanges.removeBanner=true;j.appendChild(createText("save to confirm"));
j.removeChild(this);return false},"","remove"));section.appendChild(img)}else section.appendChild(createDiv("","sub",createText("none")));b.appendChild(section);section=createDiv("","section");section.appendChild(createDiv("","",createText("Insert New Image:")));img=createDiv("artist_edit_banner_image_container","sub");img.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBannerImageUpload()},"","upload image"));img.appendChild(createText(" | "));img.appendChild(createA("","",
getDefaultLink(),function(){profilePage.editBannerImageURL()},"","enter image URL"));section.appendChild(img);b.appendChild(section);section=createDiv("","section");section.appendChild(createSpan("","",createText("Tiling:")));f=createElement("select");f.id="banner_tiling";f.onchange=function(){profilePage.bannerChanges.tiling=true};pos=["Repeat All","Repeat Horizontal","Repeat Vertical","Repeat None"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,
1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.profileData.banner.tiling==o.value)o.selected="selected";f.appendChild(o)}section.appendChild(f);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createA("artist_edit_banner_save","button_dual_gray save",getDefaultLink(),function(){profilePage.saveBanner();return false},"","Save Changes"));b.appendChild(createDiv("banner_message","message"));f=createDiv("artist_banner_close_button","header_signup_close_button close");
f.onclick=function(){profilePage.uneditBanner()};b.appendChild(f);b=new FocusBox(b,true);b.show();f=get("artist_edit_banner");pos=getPosition(f);b.div.css({top:pos.y-(b.div.outerHeight(true)-f.offsetHeight)/2+"px",left:pos.x-b.div.outerWidth(true)-16+"px"});this.bannerFocusBox=b};this.resizeBanner=function(){this.bannerFocusBox&&this.bannerFocusBox.resize()};this.uneditBanner=function(){if(get("artist_edit_banner_link")){if(this.colorOpen){this.colorOpen=false;colorWheel.destroyWheel(get("body"))}this.bannerFocusBox&&
this.bannerFocusBox.hide()}};this.updateBannerColor=function(b,f){if(b.length&&(new RegExp("^#?([0-9A-F]{3}|[0-9A-F]{6})$","gi")).test(b)){if(b.substring(0,1)=="#")b=b.substring(1);b="#"+b;get("artist_edit_banner_color").style.backgroundColor=b;this.bannerChanges.color=true;if(!f)get("artist_edit_banner_color_code").value=b.substring(1)}};this.editBannerImageUpload=function(){this.bannerChanges.bannerImageURL=false;get("banner_edit_container").style.height="354px";var b=get("artist_edit_banner_image_container");
removeChildren(b);var f=d.createElement("input");f.type="text";f.id="banner_upload_input";f.className="upload_input";f.value="Browse";f.onkeydown=function(){return false};b.appendChild(f);b.appendChild(browseDiv=createDiv("banner_upload_browse","button_dual_gray file_upload_container browse",createText("Browse")));this.bannerUploader=new Uploader(browseDiv,false,"profilePage.bannerBrowseResponse",UploaderConstants.IMAGES,"profilePage.bannerLoadCallback");b.appendChild(createDiv("removeme","clr"));
b.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBannerImageURL()},"","switch to enter image URL"));this.resizeBanner()};this.saveBanner=function(){get("banner_message").innerHTML="Saving...";get("artist_edit_banner_save").style.display="none";changes=this.bannerChanges;changeString="&t=banner";if(changes.bannerImageURL)changeString+="&bannerURL="+escape(get("artist_edit_banner_url").value);else if(changes.removeBanner)changeString+="&removeBanner=1";if(changes.color)changeString+=
"&color="+get("artist_edit_banner_color_code").value;if(changes.tiling)changeString+="&tiling="+get("banner_tiling").value;if(get("banner_upload_input")&&this.bannerUploader){var b=this.bannerUploader.getFiles();if(!(!b||!b.length||b.length!=1)){changeString=changeString.replace("&removeBanner=1","");profilePage.bannerUploader.upload("u="+profilePage.currentUser+changeString,"profilePage.reloadBanner","","profilePage.bannerError");return}}changeString!=""?ajax(changeString,"profilePage.bannerChanged",
"POST","p=profile_theme&u="+this.currentUser):this.uneditBanner();this.resizeBanner()};this.bannerChanged=function(b){this.uneditBanner();this.setTheme(b);alertManager.alert(createText("Changes saved!"))};this.bannerBrowseResponse=function(){var b=this.bannerUploader.getFiles(),f=get("banner_upload_container");get("banner_upload_save")&&f.removeChild(get("banner_upload_save"));get("banner_save_message")&&f.removeChild(get("banner_save_message"));b=!b||!b.length||b.length!=1?"Browse":b[0];get("banner_upload_input").value=
b;this.resizeBanner()};this.bannerLoadCallback=function(){};this.reloadBanner=function(){this.uneditBanner();this.loadTheme(true);alertManager.alert(createText("Changes saved!"))};this.bannerError=function(){get("artist_edit_banner_save").style.display="block";get("banner_message").innerHTML="Error saving. Try later";alertManager.alert(createText("Error saving. Try later"));this.resizeBanner()};this.editBannerImageURL=function(){this.bannerChanges.bannerImageUpload=false;this.bannerUploader=null;
get("banner_edit_container").style.height="354px";var b=get("artist_edit_banner_image_container");removeChildren(b);var f=d.createElement("input");f.type="text";f.className="url";f.id="artist_edit_banner_url";f.onchange=function(){profilePage.bannerChanges.bannerImageURL=true};b.appendChild(f);b.appendChild(createDiv("","clr"));b.appendChild(createA("","",getDefaultLink(),function(){profilePage.editBannerImageUpload()},"","switch to upload image"));this.resizeBanner()};this.setDashboard=function(b){var f=
$j("#profile_content");f.html("this...is...daskboard!");f.addClass("dashboard");if(b.length){b=b[0];this.currentCatalog=b.current_catalog;switch(b.section){case "account":this.setDashboardAccount(b,f);break;case "catalog":this.setDashboardCatalogStats(b,f);break;case "user":this.setDashboardUserStats(b,f);break;case "download_permissions":this.setDashboardDownloadPermissions(b,f);break;case "create_user":this.setDashboardCreateUser(b,f);break;case "manage":this.setDashboardManageUsers(b,f);break;
case "trends":this.setDashboardTrends(b,f);break;case "rules":this.setDashboardRules(b,f);break;case "features":this.setDashboardFeatures(b,f);break;case "project_tracking":this.setDashboardProjectTracking(b,f);break;case "white_basic":this.setDashboardWhiteBasic(b,f);break;case "white_search":this.setDashboardWhiteSearch(b,f);break;case "white_tabs":this.setDashboardWhiteTabs(b,f);break;case "white_track_lists":this.setDashboardWhiteTrackLists(b,f);break;case "registrations":this.setDashboardRegistrations(b,
f);break;default:f.html("Unknown dashboard page. We're not sure how you got here but we recorded it and we're investigating. Sorry for the inconvenience. Please choose a section on the left.");$j.post("ajax.php?p=error",{request:b.section,"return":o.responseText,error:"dashboard unknown page"})}leftNav.setCurrent(b.section)}};this.setDashboardAccount=function(b,f){if(config.secure){var j="Changing your email sends you a confirmation to the address you enter. The change will not be processed until you click on the verification link in that email.",
k="";if(b.email_result){j=b.email_result;k="success";b.new_email&&user.setEmail(b.new_email)}b='<h1>Your Account</h1><div id="account_details"><h2>Basics</h2><div class="section" id="username"><h4>Username:</h4> <input type="text" value="'+user.userData.username.replace('"',"&quot;")+'"/><div class="information">Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-\' or "<br/>Limited by availabilty</div></div><div class="section" id="email"><h4>Email:</h4> <input type="text" value="'+
user.userData.email+'"/><div class="information '+k+'">'+j+'</div></div><h2>Password</h2><div class="section" id="current"><h4>Current Password:</h4> <input type="password" value=""/><div class="information"></div></div><div class="section" id="password"><h4>New Password:</h4> <input type="password" value=""/><div class="information"></div></div><div class="section" id="conf"><h4>Confirm Password:</h4> <input type="password" value=""/><div class="information"></div></div></div>';f.html(b);$j("#account_details").append(createButton("Save Changes",
"","","javascript:;",function(){profilePage.saveAccount()}))}else{f.html("<h1>Your Account</h1>");f.append(getSecureA("","Click here to enter our secure account management page"))}};this.saveAccount=function(){var b=trim($j("#account_details #username input").val()),f=trim($j("#account_details #email input").val()),j=trim($j("#account_details #current input").val()),k=trim($j("#account_details #password input").val()),n=trim($j("#account_details #conf input").val()),p=false,q=false;if(b&&b!=user.userData.username)if(b.length<
6||b.length>32){$j("#account_details #username .information").addClass("error").removeClass("success").html("Username must be at least 6 characters and at most 32");q=true}else if(b.match(/^[0-9a-zA-Z ,._\-'"]+$/)){$j("#account_details #username .information").removeClass("error").removeClass("success").html("Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-' or \"");p=true}else{$j("#account_details #username .information").addClass("error").removeClass("success").html("May only contain alphanumeric chars, spaces and ,._-' or \"");
q=true}else{b="";$j("#account_details #username .information").removeClass("error").removeClass("success").html("Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-' or \"")}if(f&&f!=user.userData.email)if(isEmail(f)){$j("#account_details #email .information").removeClass("error").removeClass("success").html("Changing your email sends you a confirmation to the address you enter. The change will not be processed until you click on the verification link in that email.");
p=true}else{$j("#account_details #email .information").addClass("error").removeClass("success").html("Please enter a valid email");q=true}else{f="";$j("#account_details #email .information").removeClass("error").removeClass("success").html("Changing your email sends you a confirmation to the address you enter. The change will not be processed until you click on the verification link in that email.")}if(k){$j("#account_details #current .information").removeClass("error").html("");$j("#account_details #password .information").removeClass("error").html("");
$j("#account_details #conf .information").removeClass("error").html("");if(j)if(k.length<6){$j("#account_details #password .information").addClass("error").removeClass("success").html("Password must be at least 6 characters");q=true}else if(k.match(/[0-9]/)==null||k.match(/[a-zA-Z]/)==null){$j("#account_details #password .information").addClass("error").removeClass("success").html("Password must contain at least 1 letter and 1 number");q=true}else if(n)if(k!=n){$j("#account_details #conf .information").addClass("error").removeClass("success").html("Confirmation does not match! Please reenter");
q=true}else p=true;else{$j("#account_details #conf .information").addClass("error").removeClass("success").html("Please reenter your new password to confirm");q=true}else{$j("#account_details #current .information").addClass("error").removeClass("success").html("To change your password, please enter your old password");q=true}}else{k="";$j("#account_details #current .information, #account_details #password .information, #account_details #conf .information").addClass("error").removeClass("success").html("")}if(p&&
!q)ajax((b?"username="+escape(b):"")+(f?"&email="+escape(f):"")+(k?"&password="+escape(k)+"&oldPass="+escape(j):""),"profilePage.handleSaveAccountResponse","POST","p=account&action=edit")};this.handleSaveAccountResponse=function(b){b=b[0].result;if(b[0])alertManager.alert(createText(b));else{if(b.username)if(b.username=="success"){user.setUsername(trim($j("#account_details #username input").val()));$j("#account_details #username .information").addClass("success").removeClass("error").html("Username changed!")}else $j("#account_details #username .information").addClass("error").removeClass("success").html(b.username);
if(b.email)b.email=="success"?$j("#account_details #email .information").addClass("success").removeClass("error").html("Confirmation email sent! Please check your email to complete the process"):$j("#account_details #email .information").addClass("error").removeClass("success").html(b.email);if(b.password)if(b.password=="success"){$j("#account_details #password .information").addClass("success").removeClass("error").html("Password changed!");$j("#account_details #password input, #account_details #conf input, #account_details #current input").val("")}else $j("#account_details #password .information").addClass("error").removeClass("success").html(b.password)}};
this.setDashboardCreateUser=function(b,f){if(config.secure)if(b.no_default)f.html('Admin did not set up a default download permission! Please contact us immediately to resolve this problem: <a href="mailto:support@sourceaudio.com">support@sourceaudio.com</a>');else{var j=this.generateDashboardCatalogSelect(b,"create_user");if(b.action&&b.action=="select catalog")f.html("<h1>Create User</h1><h2>Please select a catalog</h2>");else{var k="The user will receive a confirmation email at this address. They will need to confirm before the account will be activated.",
n="";if(b.email_result){k=b.email_result;n="success";b.new_email&&user.setEmail(b.new_email)}f.html('<h1>Create User</h1><div id="account_details"><h2>Basics</h2><div class="section" id="username"><h4>Username:</h4> <input type="text" value=""/><div class="information">Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-\' or "<br/>Limited by availabilty</div></div><div class="section" id="email"><h4>Email:</h4> <input type="text" value=""/><div class="information '+
n+'">'+k+'</div></div><div class="section" id="password"><h4>Password:</h4> <input type="text" value=""/><div class="information">Minimum of 6 characters. Must contain at least 1 letter and 1 number.</div></div><h2>Permissions</h2><div class="section" id="download_permissions"><h4>Download Permissions:</h4><div class="subsection"><input type="radio" name="download_permission" id="download_permission_1"'+(b.default_permission==1?' checked="checked"':"")+'/><label for="download_permission_1">Can download all tracks</label></div><div class="subsection"><input type="radio" name="download_permission" id="download_permission_2"'+
(b.default_permission==2?' checked="checked"':"")+'/><label for="download_permission_2">I want to approve each download</label></div><div class="subsection"><input type="radio" name="download_permission" id="download_permission_0"'+(b.default_permission==0?' checked="checked"':"")+'/><label for="download_permission_0">Cannot download any tracks</label></div></div><h2>Message</h2><div class="section"><div class="subsection" id="message"><h4>Message: (optional)</h4> <textarea/><div class="information">An optional personal message you may include</div></div><div class="subsection"><h4>Send Email?</h4><div class="options"><input type="radio" name="send_email" id="send_email_1" checked="checked"/><label for="send_email_1">Yes</label><input type="radio" name="send_email" id="send_email_0"/><label for="send_email_0">No</label></div><div class="information">When the account is created, should the new user receive an email with their username, password, and a link to activate their account?</div></div></div>');
$j("#account_details").append($j(createButton("Create Account","","","javascript:;",function(){profilePage.createAccount($j(this).data("current_catalog"))})).data("current_catalog",b.current_catalog)).append('<div class="information" id="general"></div>')}$j("h1",f).append(j)}else{f.html("<h1>Create User</h1>");f.append(getSecureA("","Click here to enter our secure account management page"))}};this.createAccount=function(b){var f=trim($j("#account_details #username input").val()),j=trim($j("#account_details #email input").val()),
k=trim($j("#account_details #password input").val()),n=$j("#account_details #download_permission_1").attr("checked"),p=$j("#account_details #download_permission_2").attr("checked");$j("#account_details #download_permission_0").attr("checked");$j("#account_details #send_email_1").attr("checked");var q=$j("#account_details #send_email_0").attr("checked"),r=trim($j("#account_details #message textarea").val()),u=false;$j("#general").removeClass("error").html("");if(f)if(f.length<6||f.length>32){$j("#account_details #username .information").addClass("error").removeClass("success").html("Username must be at least 6 characters and at most 32");
u=true}else if(f.match(/^[0-9a-zA-Z ,._\-'"]+$/))$j("#account_details #username .information").removeClass("error").removeClass("success").html("Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-' or \"");else{$j("#account_details #username .information").addClass("error").removeClass("success").html("May only contain alphanumeric chars, spaces and ,._-' or \"");u=true}else{$j("#account_details #username .information").addClass("error").removeClass("success").html("Please enter a username");
u=true}if(j)if(isEmail(j))$j("#account_details #email .information").removeClass("error").removeClass("success").html("The user will receive a confirmation email at this address. They will need to confirm before the account will be activated.");else{$j("#account_details #email .information").addClass("error").removeClass("success").html("Please enter a valid email");u=true}else{$j("#account_details #email .information").addClass("error").removeClass("success").html("Please enter an email");u=true}if(k)if(k.length<
6){$j("#account_details #password .information").addClass("error").removeClass("success").html("Password must be at least 6 characters");u=true}else if(k.match(/[0-9]/)==null||k.match(/[a-zA-Z]/)==null){$j("#account_details #password .information").addClass("error").removeClass("success").html("Password must contain at least 1 letter and 1 number");u=true}else $j("#account_details #password .information").removeClass("error").removeClass("success").html("Minimum of 6 characters. Must contain at least 1 letter and 1 number.");
else{$j("#account_details #password .information").addClass("error").removeClass("success").html("Please enter a password");u=true}var v=0;if(n)v=1;else if(p)v=2;n=1;if(q)n=0;u||ajax("username="+escape(f)+"&email="+escape(j)+"&password="+escape(k)+"&download_permission="+escape(v)+(r?"&message="+escape(r):"")+"&send_email="+n,"profilePage.handleCreateAccountResponse","POST","p=dashboard&u="+this.currentUser+"&c="+b+"&section=create_user&action=create")};this.handleCreateAccountResponse=function(b){b=
b[0];if(b.result!="success")this.setDashboardCreateUser(b);else if(b.user_created){$j("#account_details #username input").val("");var f=$j("#account_details #email input").val();$j("#account_details #email input").val("");var j=$j("#account_details #password input").val();$j("#account_details #password input").val("");if(b.email_sent)b.new_user?$j("#general").html('<h2>Result: Account Created!</h2><div class="section">As per your specifications, the user was emailed their account details. If they have trouble getting the email, you can send them this link to activate their account: <a href="'+
b.conf_link+'">'+b.conf_link+"</a></div><div class=\"section\">Note:<ul><li>The link won't work if you're logged in</li><li>There will not be another place to get the link. If you're worried you might need to use it, you should save it somewhere. Sorry, we know this isn't ideal. Please consider this a temporary inconvenience while we work on a better solution.</li><li>They probably didn't get their password either. You'll need to send them that as well.</li></ul></div>"):$j("#general").html('<h2>Result: Account Created!</h2><div class="section">As per your specifications, the user was emailed their account details. If they have trouble getting the email, you can send them their email and password directly, as you entered it.</div>');
else b.full_creation?$j("#general").html('<h2>Result: Account Created!</h2><div class="section">As per your specifications, the user was not emailed their account details and their account was automatically activated. You\'ll need to send them their email and password before they\'ll be able to access their account.</div><div class="section">Remember that they\'ll log in with their email, not their username<ul><li>Email: '+f+"</li><li>Password: "+j+"</li></ul></div>"):$j("#general").html('<h2>Result: Account Created!</h2><div class="section">As per your specifications, the user was not emailed their account details but <span class="error">there was an error while activating their account</span>. You\'ll need to send them their username and password before they\'ll be able to access their account and they\'ll need to click this link to activate their account before they can log in: <a href="'+
b.conf_link+'">'+b.conf_link+"</a></div><div class=\"section\">Note:<ul><li>The link won't work if you're logged in</li><li>There will not be another place to get the link. If you're worried you might need to use it, you should save it somewhere. Sorry, we know this isn't ideal. Please consider this a temporary inconvenience while we work on a better solution.</li></div>");window.scrollTo(0,getPosition($j("#general").get(0)).y);alertManager.alert(createText("Account created"+(b.email_sent?" and email sent!":
"!")))}else if(b.error)if(b.error.field)$j("#account_details #"+b.error.field+" .information").addClass("error").removeClass("success").html(b.error.message);else{$j("#general").addClass("error").html(b.error.message);alertManager.alert(createText(b.error.message))}};this.setDashboardFeatures=function(b,f){if(config.secure){var j=this.generateDashboardCatalogSelect(b,"features");if(b.action&&b.action=="select catalog")f.html("<h1>Your Features</h1><h2>Please select a catalog</h2>");else{f.html('<h1>Your Features</h1><h2>Tracks</h2><div id="track_list"></div><h2>Albums</h2><div id="album_list"></div><h2>Artists</h2><div id="artist_list"></div><h2>Labels</h2><div id="label_list"></div>');
if(b.tracks.length){for(var k=$j('<table class="list" cellspacing="0" cellpadding="0"><thead><tr><th>Order</th><th>Name</th><th colspan="3" class="list_right">Options</th></tr></thead><tbody></tbody></table>'),n=$j("tbody",k),p=0;p<b.tracks.length;p++){var q=$j('<tr id="track_'+b.tracks[p].id+'"><td class="order">'+(p+1)+"</td><td>"+b.tracks[p].name+'</td><td><img id="up" src="/images/shared/arrow_up.png"/></td><td><img id="down" src="/images/shared/arrow_down.png"/></td><td><img id="delete" src="/images/shared/delete.png"/></td></tr>');
$j("#up",q).click(function(){profilePage.moveFeature(1,"track",$j(this).data("track"))}).data("track",b.tracks[p].id);$j("#down",q).click(function(){profilePage.moveFeature(-1,"track",$j(this).data("track"))}).data("track",b.tracks[p].id);$j("#delete",q).click(function(){profilePage.deleteFeature("track",$j(this).data("track"))}).data("track",b.tracks[p].id);n.append(q)}$j("#track_list").append(k).append('<div id="explanation">You can feature more tracks on the <a href="https://'+config.secureDomain+
"/#catalog?c="+b.current_catalog+'&page=tracks">catalog track list</a>')}else $j("#track_list").html("This catalog doesn't have any tracks featured yet.<br/><br/>You can feature tracks on the <a href=\"https://"+config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=tracks">catalog track list</a>.');if(b.albums.length){k=$j('<table class="list" cellspacing="0" cellpadding="0"><thead><tr><th>Order</th><th>Name</th><th colspan="3" class="list_right">Options</th></tr></thead><tbody></tbody></table>');
n=$j("tbody",k);for(p=0;p<b.albums.length;p++){q=$j('<tr id="album_'+b.albums[p].id+'"><td class="order">'+(p+1)+"</td><td>"+b.albums[p].name+'</td><td><img id="up" src="/images/shared/arrow_up.png"/></td><td><img id="down" src="/images/shared/arrow_down.png"/></td><td><img id="delete" src="/images/shared/delete.png"/></td></tr>');$j("#up",q).click(function(){profilePage.moveFeature(1,"album",$j(this).data("album"))}).data("album",b.albums[p].id);$j("#down",q).click(function(){profilePage.moveFeature(-1,
"album",$j(this).data("album"))}).data("album",b.albums[p].id);$j("#delete",q).click(function(){profilePage.deleteFeature("album",$j(this).data("album"))}).data("album",b.albums[p].id);n.append(q)}$j("#album_list").append(k).append('<div id="explanation">You can feature more albums on the <a href="https://'+config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=albums">catalog album list</a>')}else $j("#album_list").html("This catalog doesn't have any albums featured yet.<br/><br/>You can feature albums on the <a href=\"https://"+
config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=albums">catalog album list</a>.');if(b.artists.length){k=$j('<table class="list" cellspacing="0" cellpadding="0"><thead><tr><th>Order</th><th>Name</th><th colspan="3" class="list_right">Options</th></tr></thead><tbody></tbody></table>');n=$j("tbody",k);for(p=0;p<b.artists.length;p++){q=$j('<tr id="artist_'+b.artists[p].id+'"><td class="order">'+(p+1)+"</td><td>"+b.artists[p].name+'</td><td><img id="up" src="/images/shared/arrow_up.png"/></td><td><img id="down" src="/images/shared/arrow_down.png"/></td><td><img id="delete" src="/images/shared/delete.png"/></td></tr>');
$j("#up",q).click(function(){profilePage.moveFeature(1,"artist",$j(this).data("artist"),$j(this).data("label_id"))}).data("artist",b.artists[p].id).data("label_id",b.artists[p].label_id);$j("#down",q).click(function(){profilePage.moveFeature(-1,"artist",$j(this).data("artist"),$j(this).data("label_id"))}).data("artist",b.artists[p].id).data("label_id",b.artists[p].label_id);$j("#delete",q).click(function(){profilePage.deleteFeature("artist",$j(this).data("artist"),$j(this).data("label_id"))}).data("artist",
b.artists[p].id).data("label_id",b.artists[p].label_id);n.append(q)}$j("#artist_list").append(k).append('<div id="explanation">You can feature more artists on the <a href="https://'+config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=artists">catalog artist list</a>')}else $j("#artist_list").html('<div id="explanation">This catalog doesn\'t have any artists featured yet.<br/><br/>You can feature artists on the <a href="https://'+config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=artists">catalog artist list</a>.</div>');
if(b.labels.length){k=$j('<table class="list" cellspacing="0" cellpadding="0"><thead><tr><th>Order</th><th>Name</th><th colspan="3" class="list_right">Options</th></tr></thead><tbody></tbody></table>');n=$j("tbody",k);for(p=0;p<b.labels.length;p++){q=$j('<tr id="label_'+b.labels[p].id+'"><td class="order">'+(p+1)+"</td><td>"+b.labels[p].name+'</td><td><img id="up" src="/images/shared/arrow_up.png"/></td><td><img id="down" src="/images/shared/arrow_down.png"/></td><td><img id="delete" src="/images/shared/delete.png"/></td></tr>');
$j("#up",q).click(function(){profilePage.moveFeature(1,"label",$j(this).data("label"))}).data("label",b.labels[p].id);$j("#down",q).click(function(){profilePage.moveFeature(-1,"label",$j(this).data("label"))}).data("label",b.labels[p].id);$j("#delete",q).click(function(){profilePage.deleteFeature("label",$j(this).data("label"))}).data("label",b.labels[p].id);n.append(q)}$j("#label_list").append(k).append('<div id="explanation">You can feature more labels on the <a href="https://'+config.secureDomain+
"/#catalog?c="+b.current_catalog+'&page=labels">catalog label list</a>')}else $j("#label_list").html('<div id="explanation">This catalog doesn\'t have any labels featured yet.<br/><br/>You can feature labels on the <a href="https://'+config.secureDomain+"/#catalog?c="+b.current_catalog+'&page=labels">catalog label list</a>.</div>');$j("#track_list .list tr:even").addClass("stripe");$j("#album_list .list tr:even").addClass("stripe");$j("#artist_list .list tr:even").addClass("stripe");$j("#label_list .list tr:even").addClass("stripe")}$j("h1",
f).append(j)}else{f.html("<h1>Your Features</h1>");f.append(getSecureA("","Click here to enter our secure account management page"))}};this.moveFeature=function(b,f,j,k){if(b==-1){var n=$j("#"+f+"_"+j),p=n.next();if(!p.length)return;p.after(n)}else{n=$j("#"+f+"_"+j);p=n.prev();if(!p.length)return;p.before(n)}n=$j("#"+f+"_list .order");for(p=0;p<n.length;p++)n[p].innerHTML=p+1;$j("#"+f+"_list .list tr:even").addClass("stripe");$j("#"+f+"_list .list tr:odd").removeClass("stripe");ajax("p="+f+"_details&c="+
this.currentCatalog+"&id="+j+"&action=move&direction="+b+(k?"&lId="+k:""))};this.deleteFeature=function(b,f,j){$j("#"+b+"_"+f).remove();for(var k=$j("#"+b+"_list .order"),n=0;n<k.length;n++)k[n].innerHTML=n+1;ajax("p="+b+"_details&c="+this.currentCatalog+"&id="+f+"&feature=0"+(j?"&lId="+j:""))};this.setDashboardRules=function(b,f){if(config.secure){var j=this.generateDashboardCatalogSelect(b,"rules");if(b.action&&b.action=="select catalog")f.html("<h1>Rules</h1><h2>Please select a catalog</h2>");
else{f.html('<h1>Rules</h1><h2>Rule List</h2><div id="rule_list"></div><h2>Options</h2><div id="rule_options"></div>');if(b.rules.length){for(var k=$j('<table class="list" cellspacing="0" cellpadding="0"><thead><tr><th>Order</th><th>Rule</th><th colspan="3" class="list_right">Options</th></tr></thead><tbody></tbody></table>'),n=$j("tbody",k),p=0;p<b.rules.length;p++){var q=$j('<tr id="rule_'+b.rules[p].id+'"><td class="order">'+b.rules[p].order+"</td><td>"+b.rules[p].english+'<div id="results"></div></td><td><img id="up" src="/images/shared/arrow_up.png"/></td><td><img id="down" src="/images/shared/arrow_down.png"/></td><td><img id="delete" src="/images/shared/delete.png"/></td></tr>');
$j("#up",q).click(function(){profilePage.moveRule(1,$j(this).data("rule"))}).data("rule",b.rules[p].id);$j("#down",q).click(function(){profilePage.moveRule(-1,$j(this).data("rule"))}).data("rule",b.rules[p].id);$j("#edit",q).click(function(){profilePage.editRule($j(this).data("rule"))}).data("rule",b.rules[p].id);$j("#delete",q).click(function(){profilePage.deleteRule($j(this).data("rule"))}).data("rule",b.rules[p].id);n.append(q)}$j("#rule_list").append(k).append('<div id="explanation">Why does order matter? Your rules will execute in ascending order, i.e., lowest first. So for example, if you have a track T in label L with album A, and two rules, one that says "If album name is A, set genre to G1" and one that says "If label name is L, set genre to G2", the order becomes important. If the first rule is order 1, the first runs first, sets the genre to G1, and then the second rule runs and sets the genre to G2. If the rules were in the reverse order, the genre would end up as G1 instead.</div>')}else $j("#rule_list").html("This catalog doesn't have any rules yet. Click the button below to give it a try!<br/><br/>Rules let you assign batch metadata to tracks so you don't have to edit hundreds of tracks to apply a change like \"set all of artist Jon Bovi's tracks to genre Rock\".<br/><br/>Give it a shot! It's pretty easy.");
$j("#rule_options").append(createButton("New Rule","","","javascript:;",function(){(new Ruler(profilePage.currentCatalog)).show();$j(".lightbox, #cancel_rule, #ruler #close").click(function(){currentHash=""})}));b.rules.length&&$j("#rule_options").append(createButton("Run Rules","","","javascript:;",function(){profilePage.runRules()}));$j("#rule_list .list tr:even").addClass("stripe")}$j("h1",f).append(j)}else{f.html("<h1>Rules</h1>");f.append(getSecureA("","Click here to enter our secure account management page"))}};
this.moveRule=function(b,f){if(b==-1){var j=$j("#rule_"+f),k=j.next();if(!k.length)return;k.after(j)}else{j=$j("#rule_"+f);k=j.prev();if(!k.length)return;k.before(j)}j=$j("#rule_list .order");for(k=0;k<j.length;k++)j[k].innerHTML=k+1;$j("#rule_list .list tr:even").addClass("stripe");$j("#rule_list .list tr:odd").removeClass("stripe");ajax("p=rules&c="+this.currentCatalog+"&action=move&ruleId="+f+"&direction="+b)};this.editRule=function(b){(new Ruler).show(b)};this.deleteRule=function(b){$j("#rule_"+
b).remove();$j("#rule_list .list tr:even").addClass("stripe");$j("#rule_list .list tr:odd").removeClass("stripe");ajax("p=rules&c="+this.currentCatalog+"&action=delete&ruleId="+b)};this.runRules=function(b){if(b)ajax("action=run","profilePage.handleRuleRun","POST","p=rules&c="+profilePage.currentCatalog+"&action=run");else new BinaryBox("Are you sure you want to run your rules?<br/><b>This will override any manually entered information and is NOT undoable.</b>",function(f,j){return profilePage.runRules(f,
j)},null,"Yes, Run","Nevermind",true)};this.handleRuleRun=function(b){b=b[0];if(b.result)alertManager.alert(createText(b.result));else{alertManager.alert(createText("Run successful! Check rule listings for results"));for(var f=0;f<b.rules.length;f++){var j=b.rules[f];$j("#rule_"+j.id+" #results").html("Affected tracks: "+j.affected_tracks)}}};this.generateDashboardCatalogSelect=function(b,f){if(b.catalogs.length<2)return $j("<span></span>");f=$j('<select><option value="0">---------</option></select>').change(function(){var k=
$j(this).val();if(k!=="0"){k=getProfileLinkArbitrary(user.userData.id,"dashboard",{u:this.currentUser,c:k,section:$j(this).data("section")});setHash(k)}}).data("section",f);for(var j=0;j<b.catalogs.length;j++)f.append('<option value="'+b.catalogs[j].id+'"'+(b.catalogs[j].id==b.current_catalog?' selected="selected"':"")+">"+b.catalogs[j].name+"</option>");return f};this.setDashboardCatalogStats=function(b,f){var j=this.generateDashboardCatalogSelect(b,"catalog");if(b.action&&b.action=="select catalog"){f.html("<h1>Catalog Stats</h1><h2>Please select a catalog</h2>");
$j("h1",f).append(j)}else{for(var k={summary_time:b.summary.time,rep:b.id,top_type:b.top.type,top_time:b.top.time,o:b.top.o,c:b.current_catalog},n="<h1>Catalog Stats</h1><h2>"+b.name+'</h2><div id="info"><div id="avatar"><img src="'+b.avatar+'"/></div><div id="left"><div class="section"><h4>Date Added:</h4> '+formatDate("m/d/Y",b.join_date)+"</div>"+(b.location?'<div class="section"><h4>Location:</h4> '+b.location+"</div>":"")+(b.website?'<div class="section"><h4>Website:</h4> <a href="'+b.website+
'" target="_blank">'+b.website+"</a></div>":"")+'<div class="section"><h4>SourceAudio hub:</h4> <a href="'+b.sa_url+'">'+b.sa_url+'</a></div></div><div id="middle"><div class="section"><h4>Tracks:</h4> '+b.track_count+'</div><div class="section"><h4>Albums:</h4> '+b.album_count+'</div><div class="section"><h4>Artists:</h4> '+b.artist_count+'</div></div><div id="right"><div class="section"><h4>Average Track Rating:</h4> '+b.average_rating+'</div><div class="section"><h4>Total Tracks in Projects:</h4> '+
b.favorites+'</div></div></div><h3>Summary</h3><div id="summary" class="data"><div class="light_links"><h4>Time Period:</h4>',p=[["1","Today"],["7","The Week"],["30","Last 30 days"],["180","Last 180 days"],["365","Last 365 days"],["0","All Time"]],q=0;q<p.length;q++){k.summary_time=p[q][0];n+=(b.summary.time==p[q][0]?p[q][1]:'<a href="'+getDashboardLink("rep",k)+'">'+p[q][1]+"</a>")+(q+1==p.length?"</div>":"<span>|</span>")}k.summary_time=b.summary.time;n+='<div class="section"><h4>Total Tracks Played:</h4> '+
b.summary.played+'</div><div class="section"><h4>Total Downloads:</h4> '+b.summary.downloads+"</div></div>";n+='<h3 class="light_links" id="type_selector">';p=[["tracks","Top Tracks"],["albums","Top Albums"],["artists","Top Artists"]];for(q=0;q<p.length;q++){k.top_type=p[q][0];n+=(b.top.type==p[q][0]?p[q][1]:'<a href="'+getDashboardLink("rep",k)+'">'+p[q][1]+"</a>")+(q+1==p.length?"":"<span>|</span>")}k.top_type=b.top.type;n+='<span id="sorts">';p=[["plays","Most Plays"],["downloads","Most Downloads"],
["favorites","Most Projected"],["licenses","Most Licenses"]];for(q=0;q<p.length;q++){k.o=p[q][0];n+=(b.top.o==p[q][0]?p[q][1]:'<a href="'+getDashboardLink("rep",k)+'">'+p[q][1]+"</a>")+(q+1==p.length?"</span></h3>":"<span>|</span>")}k.o=b.top.o;n+='<div class="data"><div class="light_links"><h4>Time Period:</h4>';p=[["1","Today"],["7","The Week"],["30","Last 30 days"],["180","Last 180 days"],["365","Last 365 days"],["0","All Time"]];for(q=0;q<p.length;q++){k.top_time=p[q][0];n+=(b.top.time==p[q][0]?
p[q][1]:'<a href="'+getDashboardLink("rep",k)+'">'+p[q][1]+"</a>")+(q+1==p.length?"</div>":"<span>|</span>")}k.top_time=b.top.time;k=k.top_type.substr(0,k.top_type.length-1);n+=k=="track"?'<div id="track_list_dashboard" class="track_list">':'<div id="list_dashboard" class="list">';if(b.top.data[0].count==0)n+="No "+k+"s found with the current parameters!";n+="</div></div>";f.html(n);$j("h1",f).append(j);if(b.top.data[0].count!=0){b.top.data[0].pageVars=hashToParams(varsToHash({summary_time:b.summary.time,
rep:b.id,top_type:b.top.type,top_time:b.top.time}))+"&"+b.top.data[0].pageVars;switch(k){case "artist":f=new ListConfig;f.columnList=getStandardArtistColumnList();f.bankKey="dashboard";this.artistList=new ArtistList(f);this.artistList.generatePage($j("#list_dashboard")[0]);this.artistList.setData(b.top.data,function(r){return getDashboardLink("rep",paramsToVars(r))});break;case "album":f=new ListConfig;f.columnList=getStandardAlbumColumnList();f.bankKey="dashboard";this.albumList=new AlbumList(f);
this.albumList.generatePage($j("#list_dashboard")[0]);this.albumList.setData(b.top.data,function(r){return getDashboardLink("rep",paramsToVars(r))});break;case "track":f=new TrackListConfig;f.columnList=getStandardColumnList();f.bankKey="dashboard";this.trackList=new TrackList(f);this.trackList.generatePage($j("#track_list_dashboard")[0]);this.trackList.setData(b.top.data,function(r){return getDashboardLink("rep",paramsToVars(r))});break}}}};this.setDashboardUserStats=function(b,f){for(var j={sort:b.o,
time:b.time,rep:b.rep},k='<h1>User Statistics</h1><div id="options" class="light_links"><h4>Sort by:</h4>',n=[["plays","Most Plays"],["downloads","Most Downloads"],["projects","Most Projected"],["comments","Most Comments"],["licenses","Licenses"]],p=0;p<n.length;p++){j.o=n[p][0];k+=(b.o==n[p][0]?n[p][1]:'<a href="'+getDashboardLink("user",j)+'">'+n[p][1]+"</a>")+(p+1==n.length?"</div>":"<span>|</span>")}j.o=b.o;k+='<div class="data">';k+='<div class="light_links"><h4>Time Period:</h4>';n=[["1","Today"],
["7","The Week"],["30","Last 30 days"],["180","Last 180 days"],["365","Last 365 days"],["0","All Time"]];for(p=0;p<n.length;p++){j.time=n[p][0];k+=(b.time==n[p][0]?n[p][1]:'<a href="'+getDashboardLink("user",j)+'">'+n[p][1]+"</a>")+(p+1==n.length?"</div>":"<span>|</span>")}k+='<div id="list_dashboard" class="list">';k+="</div></div>";f.html(k);f=new ListConfig;f.columnList=[new ListColumn("username",["user avatar","username"]),new ListColumn("plays",["plays"]),new ListColumn("downloads",["downloads"]),
new ListColumn("projects",["favorites"]),new ListColumn("comments",["comments"]),new ListColumn("licenses",["licenses"])];f.bankKey="dashboard";this.userList=new UserList(f);this.userList.generatePage($j("#list_dashboard")[0]);this.userList.setData(b.users,function(q){return getDashboardLink("user",paramsToVars(q))})};this.setDashboardManageUsers=function(b,f){f.html("You're in manage users")};this.setDashboardDownloadPermissions=function(b,f){var j=this.generateDashboardCatalogSelect(b,"download_permissions");
if(b.action&&b.action=="select catalog"){f.html("<h1>Download Permission Requests</h1><h2>Please select a catalog</h2>");$j("h1",f).append(j)}else{for(var k={sort:b.o,type:b.type,show:b.perPage,c:b.current_catalog},n='<h1>Download Permission Requests</h1><div id="options" class="light_links"><h4>Sort by:</h4>',p=[["date","Most Recent"],["track","Track Title"],["user","Requesting User"]],q=0;q<p.length;q++){k.o=p[q][0];n+=(b.o==p[q][0]?p[q][1]:'<a href="'+getDashboardLink("download_permissions",k)+
'">'+p[q][1]+"</a>")+(q+1==p.length?"</div>":"<span>|</span>")}k.o=b.o;n+='<div class="data">';n+='<div class="light_links"><h4>Status:</h4>';p=[["open","Pending Approval"],["approved","Approved"],["denied","Denied"]];for(q=0;q<p.length;q++){k.type=p[q][0];n+=(b.type==p[q][0]?p[q][1]:'<a href="'+getDashboardLink("download_permissions",k)+'">'+p[q][1]+"</a>")+(q+1==p.length?"</div>":"<span>|</span>")}k.type=b.type;n+='<div id="download_permissions_dashboard" class="list">';n+="</div></div>";f.html(n);
$j("h1",f).append(j);if(b.total){for(q=0;q<b.requests.length;q++){f=b.requests[q];j='<div class="request light_links" id="request_'+f.id+'"><div class="check">';if(f.status=="open")j+='<input type="checkbox" id="select_'+f.id+'" value="'+f.id+'"/>';j+='</div><div class="information"><div class="requestor"><div class="avatar_small"><a href="'+getProfileLink(f.requestor.id)+'"><img src="'+f.requestor.avatar+'"/></a></div><a href="'+getProfileLink(f.requestor.id)+'" class="username">'+f.requestor.username+
'</a>requested to download <a href="'+getTrackLink(f.track.rep,f.track.id,"details")+'">'+f.track.title+"</a> on "+f.date+'</div><h3 class="user_info">User Info:</h3><div class="user_info"><div><h4>Name:</h4><span>'+f.requestor.name+"</span></div><div><h4>Company:</h4><span>"+f.requestor.company+"</span></div><div><h4>Location:</h4><span>"+f.requestor.location+"</span></div><div><h4>Project:</h4><span>"+f.requestor.project+'</span></div></div><h3>Contact Info</h3><div class="contact_info"><div class="profile"><span><a href="'+
getProfileLink(f.requestor.id)+'">SourceAudio Profile</a></div><div class="email"><h4>Email:</h4><span><a href="mailto:'+f.requestor.email+'">'+f.requestor.email+'</a></span></div><div class="phone"><h4>Phone:</h4><span>'+f.requestor.phone+'</span></div></div><div class="request_site">Request made using '+f.site+'</div></div><div class="options">';if(f.status!="open")j+="<p>"+f.status+" on "+f.response_date+(f.approver.id?' by <a href="#profile?u='+f.approver.id+'">'+f.approver.name+"</a>":"")+"</p>";
j+="</div></div>";$j("#download_permissions_dashboard").append(j);if(f.status=="open"){j=$j("#request_"+f.id+" .options");j.append($j(createButton("Allow","","download_perm_button","javascript:;")).click(function(){profilePage.handleDownloadPermissionApproval($j(this).data("requestId"),true)}).data("requestId",f.id));j.append($j(createButton("Deny","","download_perm_button","javascript:;")).click(function(){profilePage.handleDownloadPermissionApproval($j(this).data("requestId"),false)}).data("requestId",
f.id));j.append('<div><input type="radio" name="radio_'+f.id+'" id="radio_'+f.id+'_1" value="1" checked="checked"/><label for="radio_'+f.id+'_1">For this track only</label></div><div><input type="radio" name="radio_'+f.id+'" id="radio_'+f.id+'_2" value="2"/><label for="radio_'+f.id+'_2">For whole catalog</label></div>');$j("input",j).click(function(){this.blur()});$j("#request_"+f.id+" input[type=checkbox]").click(function(){this.blur();$j("#selected_count").html($j("input[type=checkbox][id^=select_]:checked").length)})}}if(b.type==
"open"){j=$j('<div id="group_options"><p><a href="javascript:;" id="all">select all</a> / <a href="javascript:;" id="none">select none</a></p><div id="options">for the <span id="selected_count">0</span> selected: <div id="button_container"></div><div><input type="radio" name="radio_0" id="radio_0_1" value="1" checked="checked"/><label for="radio_0_1">For this track only</label></div><div><input type="radio" name="radio_0" id="radio_0_2" value="2"/><label for="radio_0_2">For whole catalog</label></div></div></div>');
$j("#download_permissions_dashboard").append(j);$j("#button_container",j).append($j(createButton("Allow","","download_perm_button","javascript:;")).click(function(){profilePage.handleDownloadPermissionApproval(0,true)})).append($j(createButton("Deny","","download_perm_button","javascript:;")).click(function(){profilePage.handleDownloadPermissionApproval(0,false)}));$j("input",j).click(function(){this.blur()});$j("#all",j).click(function(){this.blur();$j("input[type=checkbox][id^=select_]").attr("checked",
true);$j("#selected_count").html($j("input[type=checkbox][id^=select_]").length)});$j("#none",j).click(function(){this.blur();$j("input[type=checkbox][id^=select_]").attr("checked",false);$j("#selected_count").html("0")})}f=$j('<div id="track_list_page_numbers"></div>');$j("#download_permissions_dashboard").append('<div id="track_list_result_count"></div>').append(f).append('<div class="clr"></div>');q=Math.ceil(b.total/b.perPage);j=b.page;if(q<2)f.html("Showing all results");else{if(j>0){k.pg=j-
1;f.append('<a id="track_list_page_prev" href="'+getDashboardLink("download_permissions",k)+'"><< Prev</a>');k.pg=0;f.append('<a href="'+getDashboardLink("download_permissions",k)+'" id="track_list_page_first">1</a><span>...</span>')}f.append($j('<input type="text" id="track_list_page_selection" value="'+(j+1)+'"/>').keydown(function(u){code=u?u.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(u){code=
u?u.keyCode:window.event.keyCode;u=$j(this);if(code==13&&u.val().match(/^[0-9]+$/)){var v=u.data("vars");v.pg=u.val()-1;setHash(getDashboardLink("download_permissions",v))}}).data("vars",k));if(j<q-1){k.pg=q-1;f.append('<span>...</span><a href="'+getDashboardLink("download_permissions",k)+'" id="track_list_page_last">'+q+"</a>");k.pg=j+1;f.append('<a id="track_list_page_next" href="'+getDashboardLink("download_permissions",k)+'">Next >></a>')}}k.pg=0;f=$j("#track_list_result_count").html("<span>Results per page:</span>");
j=[5,10,15,25,-1];n=false;for(q=0;q<j.length;q++){p=j[q];var r=b.perPage;if(!n&&(r==p||p>r||p==-1)){n=true;f.append($j('<input type="text" id="result_count_selection" value="'+r+'"/>').keydown(function(u){code=u?u.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(u){code=u?u.keyCode:window.event.keyCode;u=$j(this);if(code==13&&u.val().match(/^[0-9]+$/)){var v=$j(this).data("vars");v.show=u.val();setHash(getDashboardLink("download_permissions",
v))}}).data("vars",k))}if(r!=p&&p!=-1){k.show=p;f.append($j('<a href="'+getDashboardLink("download_permissions",k)+'">'+p+"</a>"))}}k.show=b.perPage;k.pg=b.pg;this.lastDownloadPermissionVars=k}else $j("#download_permissions_dashboard").html("No results matched your criteria. Please adjust your parameters.")}};this.handleDownloadPermissionApproval=function(b,f){var j=$j("input[name=radio_"+b+"]:checked").val()-1,k="";if(b=="0"){b=$j("input[type=checkbox][id^=select_]:checked");for(var n=0;n<b.length;n++)k+=
"&ids[]="+b[n].value}else k="&ids[]="+b;b=varsToHash(this.lastDownloadPermissionVars);ajax("allow="+(f?"1":"0")+"&permanent="+j+k,"profilePage.handleDownloadPermissionResponse","POST","p=dashboard"+b.replace(/\?/,"&"))};this.handleDownloadPermissionResponse=function(b){b=b[0];this.setDashboardDownloadPermissions(b,$j("#profile_content"));if(b.processed)alertManager.alert(createText(b.processed+" request"+(b.processed>1?"s":"")+" processed!"))};this.setDashboardTrends=function(b,f){var j={type:b.type,
time:b.time},k='<h1>Trends</h1><div id="options" class="light_links"><h4>Most Used:</h4>';j.type="search";k+=(b.type=="search"?"Search Terms":'<a href="'+getDashboardLink("trends",j)+'">Search Terms</a>')+"<span>|</span>";j.type="user_tags";k+=(b.type=="user_tags"?"<span>User Tags</span>":'<a href="'+getDashboardLink("trends",j)+'">User Tags</a>')+"<span>|</span>";j.type="generated_tags";k+=(b.type=="generated_tags"?"<span>Generated Tags</span>":'<a href="'+getDashboardLink("trends",{type:"generated_tags"})+
'">Generated Tags</a>')+"</div>";j.type=b.type;k+='<div class="data">';if(b.type=="search"){k+='<div class="light_links"><h4>Time Period:</h4>';for(var n=[["1","Today"],["7","The Week"],["30","Last 30 days"],["180","Last 180 days"],["365","Last 365 days"],["0","All Time"]],p=0;p<n.length;p++){j.time=n[p][0];k+=(b.time==n[p][0]?n[p][1]:'<a href="'+getDashboardLink("trends",j)+'">'+n[p][1]+"</a>")+(p+1==n.length?"</div>":"<span>|</span>")}}k+='<ol style="counter-reset: term 0">';for(p=0;p<b.terms.length;p++){k+=
'<li><a href="'+getExplorerLink("s="+b.terms[p].term)+'">'+b.terms[p].term+"</a></li>";if((p+1)%20==0&&p+1<b.terms.length)k+='</ol><ol style="counter-reset: term '+(p+1)+';">'}k+='</ol><div class="clr"></div></div>';f.html(k)};this.setDashboardProjectTracking=function(b,f){f.html('<h1>Project Tracking</h1><div id="project_tracking_list"></div>');var j=$j("#project_tracking_list");if(b.mails.length){for(var k=0;k<b.mails.length;k++){var n=b.mails[k];j.append($j('<h2 class="mail_head faux_button" id="mail_header_'+
n.id+'"><span id="name">'+n.name+'</span> <span id="sent">sent on '+n.date+"</span></h2>").click(function(){profilePage.swapMail($j(this).data("mail"))}).data("mail",n));k+1!=b.mails.length&&j.append('<hr class="mail_divider"/>')}if(b.total_pages){f.append('<div id="track_list_page_numbers" class="project_list_numbers"></div><div class="clr"></div>');j=b.page;b=b.total_pages;f=$j("#track_list_page_numbers",f).html("");j>0&&f.append('<a id="track_list_page_prev" href="'+getDashboardLink("project_tracking",
{pg:j-1})+'"><< Prev</a><a href="'+getDashboardLink("project_tracking",{pg:0})+'" id="track_list_page_first">1</a><span>...</span>');f.append($j('<input type="text" id="track_list_page_selection" value="'+(j+1)+'"/>').keydown(function(p){code=p?p.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(p){code=p?p.keyCode:window.event.keyCode;p=$j(this);code==13&&p.val().match(/^[0-9]+$/)&&setHash(getDashboardLink("project_tracking",
{pg:p.val()-1}))}));j<b-1&&f.append('<span>...</span><a href="'+getDashboardLink("project_tracking",{pg:b-1})+'" id="track_list_page_last">'+b+'</a><a id="track_list_page_next" href="'+getDashboardLink("project_tracking",{pg:j+1})+'">Next >></a>')}}else j.html('You haven\'t sent any projects. You can send them using the "My Projects" tool on the left')};this.swapMail=function(b){if((mc=$j("#mail_"+b.id)).length)mc.remove();else{$j("#mail_header_"+b.id).after($j('<div class="mail_container" id="mail_'+
b.id+'"></div>'));for(var f=$j("#mail_"+b.id),j=0;j<b.emails.length;j++){var k=b.emails[j];f.append('<h3 id="mail_email_header_'+k.id+'">'+k.email+"</h3>");for(var n=$j('<div class="recipient_list"></div>'),p=0;p<k.recipients.length;p++){var q=k.recipients[p],r=0,u=0;for(var v in q.stats){r+=q.stats[v].plays;u+=q.stats[v].downloads}n.append($j('<h4 id="mail_recipient_header_'+q.id+'" class="faux_button">'+q.user.username+" ("+q.clicks+" clicks, "+r+" plays, "+u+" downloads)</h4>").click(function(){profilePage.swapRecipient($j(this).data("recipient"),
$j(this).data("mail"))}).data("mail",b).data("recipient",q))}f.append(n)}}};this.swapRecipient=function(b,f){if((mc=$j("#recipient_"+b.id)).length)mc.remove();else{$j("#mail_recipient_header_"+b.id).after($j('<div class="recipient_container" id="recipient_'+b.id+'"><div id="track_list_recipient_'+b.id+'" class="track_list"></div></div>'));var j=new TrackListConfig;j.columnList=[new ListColumn("play",["play"]),new ListColumn("title",["title"]),new ListColumn("music rep",["avatar","rep"]),new ListColumn("album",
["album"]),new ListColumn("artist",["artist"]),new ListColumn("length",["length"]),new ListColumn("plays",["plays"]),new ListColumn("downloads",["downloads"])];j.bankKey="recipient_"+b.id;j.sortable=false;j.pagination=false;j.resultCountChanging=false;j.resultsPerPageCookie=false;this.trackList=new TrackList(j);this.trackList.generatePage($j("#track_list_recipient_"+b.id).get(0));for(j=1;j<f.tracks.length;j++){var k=f.tracks[j].id,n=0,p=0;if(b.stats[k]){n=b.stats[k].plays;p=b.stats[k].downloads}f.tracks[j].plays=
n;f.tracks[j].downloads=p}this.trackList.setData(f.tracks,function(){return""})}};this.setDashboardWhiteSearch=function(b,f){f.html('<h1>Branded Site</h1><div id="account_details"><h2>Embedded Search</h2><div class="instructions">Copy this code into your site to allow users to search your SourceAudio branded site directly from somewhere else!<br/>You can try it out below to see how it works.</div><div id="code" class="section"><h4>Code:</h4><textarea><form method="get" target="_blank" action="http://'+
config.insecureDomain+'/search.php"><input type="text" name="s"/><input type="submit" value="Search '+config.name+'"/></form></textarea><div id="options">Open in new window: <input type="radio" id="new-yes" checked="checked" name="new-window"/><label for="new-yes">yes</label><input type="radio" id="new-no" name="new-window"/><label for="new-no">no</label></div></div><div id="demo" class="section"><h4>Demo:</h4><form method="get" target="_blank" action="http://'+config.insecureDomain+'/search.php"><input type="text" name="s"/><input type="submit" value="Search '+
config.name+'"/></form><div class="information">This version opens in a new window</div></div></div>');$j("input[name=new-window]").click(function(){var j=$j("#code textarea");this.id.indexOf("yes")!=-1?j.val(j.val().replace(' target="_blank"',"").replace('"get"','"get" target="_blank"')):j.val(j.val().replace(' target="_blank"',""))})};this.setDashboardWhiteBasic=function(b,f){if(config.secure){f.html('<h1>Branded Site</h1><div id="account_details"><h2>Basic Information</h2><div id="name" class="section"><h4>Name:</h4><input type="text" value="'+
config.name+'"/><div class="information">Appears in the browser title bar, in emails, and all over the place</div><div class="information"></div></div><div id="link-back" class="section"><h4>Link Back:</h4><input type="text" value="'+config.linkBack+'"/><div class="information">Not required but if it\'s set, the top bar will always be visible and will contain a link to "return to [Name] home" that will go to this url.<br/>Should be a full url, including http://</div><div class="information"></div></div><h2>Licensing Contact</h2><div id="license-name" class="section"><h4>Name:</h4><input type="text" value="'+
config.licenseContact.name+'"/><div class="information">The name of the person you want potential customers to contact when they\'re interested in licensing a track</div><div class="information"></div></div><div id="license-phone" class="section"><h4>Phone:</h4><input type="text" value="'+config.licenseContact.phone+'"/><div class="information">A phone numbers at which those customers may call the person you listed above</div><div class="information"></div></div><div id="license-email" class="section"><h4>Email:</h4><input type="text" value="'+
config.licenseContact.email+'"/><div class="information">When someone fills out the licensing request form, you\'ll get an email at this address.<br/>Please make sure it\'s somewhere you check so you don\'t miss out on licenses!<br/><b>Also, make sure emails from noreply@sourceaudio.com won\'t get caught in your spam filter</b></div><div class="information"></div></div></div>');$j("#account_details").append($j(createButton("Save Changes","","","javascript:;",function(){profilePage.saveWhiteBasic()}))).append('<div class="information" id="general"></div><div class="information" id="disclaimer">If you have any problems with anything on this page, please contact us immediately (<a href="mailto:support@sourceaudio.com">support@sourceaudio.com</a> and/or <a href="mailto:dan@sourceaudio.com">dan@sourceaudio.com</a>) and we\'ll be happy to answer any questions or assist you in any way we can.</div>')}else{f.html("<h1>Branded Site</h1><h2>Basic Information</h2>");
f.append(getSecureA("","Click here to enter our secure management page"))}};this.saveWhiteBasic=function(){var b=trim($j("#account_details #name input").val()),f=trim($j("#account_details #link-back input").val()),j=trim($j("#account_details #license-name input").val()),k=trim($j("#account_details #license-phone input").val()),n=trim($j("#account_details #license-email input").val()),p=false;$j("#general").removeClass("error").html("");if(b)if(b.length<2||b.length>32){$j("#account_details #name .information:last").addClass("error").removeClass("success").html("Name must be at least 2 characters and at most 32.");
p=true}else if(b.match(/^[0-9a-zA-Z ,._\-'"]+$/))$j("#account_details #name .information:last").removeClass("error").removeClass("success").html("");else{$j("#account_details #name .information:last").addClass("error").removeClass("success").html("Name may only contain alphanumeric chars, spaces and ,._-' or \"");p=true}else{$j("#account_details #name .information:last").addClass("error").removeClass("success").html("Please enter a name. Your site has to be called something.");p=true}if(f)if(f.length>
128){$j("#account_details #link-back .information:last").addClass("error").removeClass("success").html("This field is currently limited to 128 characters. If your url is longer than that, please contact us.");p=true}else if(f.match(/^http(s)?:\/\/[^.]+\.[^.]+/))$j("#account_details #link-back .information:last").removeClass("error").removeClass("success").html("");else{$j("#account_details #link-back .information:last").addClass("error").removeClass("success").html("Please enter a valid url");p=true}else $j("#account_details #link-back .information:last").removeClass("error").removeClass("success").html("");
if(j)if(j.length<2||j.length>64){$j("#account_details #license-name .information:last").addClass("error").removeClass("success").html("Name must be at least 2 characters and at most 64.");p=true}else if(j.match(/^[0-9a-zA-Z ,._\-'"]+$/))$j("#account_details #license-name .information:last").removeClass("error").removeClass("success").html("");else{$j("#account_details #license-name .information:last").addClass("error").removeClass("success").html("Name may only contain alphanumeric chars, spaces and ,._-' or \"");
p=true}else{$j("#account_details #license-name .information:last").addClass("error").removeClass("success").html("Please enter a name. It can be your company name if you don't want to list an individual");p=true}if(n)if(isEmail(n))$j("#account_details #license-email .information:last").removeClass("error").removeClass("success").html("");else{$j("#account_details #license-email .information:last").addClass("error").removeClass("success").html("Please enter a valid email");p=true}else{$j("#account_details #license-email .information:last").addClass("error").removeClass("success").html("Please enter an email");
p=true}if(k)$j("#account_details #license-phone .information:last").removeClass("error").removeClass("success").html("");else{$j("#account_details #license-phone .information:last").addClass("error").removeClass("success").html("Please enter a phone number");p=true}p||ajax("name="+escape(b)+"&linkBack="+escape(f)+"&licenseName="+escape(j)+"&licensePhone="+escape(k)+"&licenseEmail="+escape(n),"profilePage.handleWhiteBasicResponse","POST","p=dashboard&u="+this.currentUser+"&section=white_basic&action=save")};
this.handleWhiteBasicResponse=function(b){b=b[0];if(b.error)if(b.error.field)$j("#account_details #"+b.error.field+" .information").addClass("error").removeClass("success").html(b.error.message);else{$j("#general").addClass("error").html(b.error.message);alertManager.alert(createText(b.error.message))}else if(b.success){$j("#general").html('<h2>Result: Changes saved!</h2><div class="section">You might need to reload to see all your changes.</div>');window.scrollTo(0,getPosition($j("#general").get(0)).y);
alertManager.alert(createText("Changes saved!"))}};this.setDashboardWhiteTabs=function(b,f){if(config.secure){b={};for(var j in config.tabs)if(isInt(j))b[config.tabs[j].text]=1;f.html('<h1>Branded Site</h1><div id="account_details"><h2>Tabs</h2>'+(config.id==0||config.id==5?'<div id="home" class="section"><h4>Home:</h4><input type="checkbox"'+(b.Home?' checked="checked"':"")+'/><div class="information">A page like <a href="http://www.sourceaudio.com/#home">this</a>. Only recommended if you have multiple catalogs within your branded site.</div><div class="information"></div></div>':
"")+'<div id="tracks" class="section"><h4>Tracks:</h4><input type="checkbox" checked="checked" disabled="disabled"/><div class="information">The main track list</div><div class="information"></div></div><div id="catalogs" class="section"><h4>Catalogs:</h4><input type="checkbox"'+(b.Catalogs?' checked="checked"':"")+'/><div class="information">A list of your catalogs. Only recommended if you have multiple catalogs on your branded site</div><div class="information"></div></div><div id="labels" class="section"><h4>Labels:</h4><input type="checkbox"'+
(b.Labels?' checked="checked"':"")+'/><div class="information">A list of your labels. Only recommended if you have multiple labels on your branded site</div><div class="information"></div></div><div id="albums" class="section"><h4>Albums:</h4><input type="checkbox"'+(b.Albums?' checked="checked"':"")+'/><div class="information">A list of your albums</div><div class="information"></div></div><div id="artists" class="section"><h4>Artists:</h4><input type="checkbox"'+(b.Artists?' checked="checked"':
"")+'/><div class="information">A list of your artists</div><div class="information"></div></div>'+(config.id==0||config.id==5?'<div id="requests" class="section"><h4>Requests:</h4><input type="checkbox"'+(b.Requests?' checked="checked"':"")+'/><div class="information">A page to handle user requests. <b>Not finished. Don\'t turn this on...yet!</b></div><div class="information"></div></div>':"")+"</div>");$j("#account_details").append($j(createButton("Save Changes","","","javascript:;",function(){profilePage.saveWhiteTabs()}))).append('<div class="information" id="general"></div><div class="information" id="disclaimer">If you have any problems with anything on this page, please contact us immediately (<a href="mailto:support@sourceaudio.com">support@sourceaudio.com</a> and/or <a href="mailto:dan@sourceaudio.com">dan@sourceaudio.com</a>) and we\'ll be happy to answer any questions or assist you in any way we can.</div>')}else{f.html("<h1>Branded Site</h1><h2>Tabs</h2>");
f.append(getSecureA("","Click here to enter our secure management page"))}};this.saveWhiteTabs=function(){var b=$j("#account_details #home input").attr("checked"),f=$j("#account_details #catalogs input").attr("checked"),j=$j("#account_details #labels input").attr("checked"),k=$j("#account_details #artists input").attr("checked"),n=$j("#account_details #albums input").attr("checked"),p=$j("#account_details #requests input").attr("checked");$j("#general").removeClass("error").html("");ajax("home="+
(b?"1":"0")+"&catalogs="+(f?"1":"0")+"&labels="+(j?"1":"0")+"&artists="+(k?"1":"0")+"&albums="+(n?"1":"0")+"&requests="+(p?"1":"0"),"profilePage.handleWhiteTabsResponse","POST","p=dashboard&u="+this.currentUser+"&section=white_tabs&action=save")};this.handleWhiteTabsResponse=function(b){b=b[0];if(b.error)if(b.error.field)$j("#account_details #"+b.error.field+" .information").addClass("error").removeClass("success").html(b.error.message);else{$j("#general").addClass("error").html(b.error.message);
alertManager.alert(createText(b.error.message))}else if(b.success){$j("#general").html('<h2>Result: Changes saved!</h2><div class="section">You might need to reload to see all your changes.</div>');window.scrollTo(0,getPosition($j("#general").get(0)).y);alertManager.alert(createText("Changes saved!"))}};this.setDashboardWhiteTrackLists=function(b,f){if(config.secure){this.fullColumnList=b.columns;for(var j={},k=0;k<config.trackColumnList.length;k++){var n=config.trackColumnList[k].title;if(n=="artist/composer")n=
"artist-composer";if(config.trackColumnList[k].columns[0].indexOf("custom_")==0)n=config.trackColumnList[k].columns[0];j[n]=n}n='<ul id="column_list">';var p='<select><option value="">Empty</option>';for(k=0;k<b.columns.length;k++){var q=b.columns[k];if(q.id!="icon"){n+='<li id="'+q.id+'"'+(j[q.id]?' class="used"':"")+">"+q.name+" ("+q.weight+")</li>";p+='<option value="'+q.id+'">'+q.name+" ("+q.weight+")</option>"}}n+="</ul>";p+="</select>";b='<div id="column_1" class="section tl-column"><h4>Column 1:</h4>'+
p.replace("select",'select disabled="disabled"').replace('"play"','"play" selected="selected"')+'<span class="weight"></span><div class="icon"></div><div class="information"></div></div><div id="column_2" class="section tl-column"><h4>Column 2:</h4>'+p.replace("select",'select disabled="disabled"').replace('"title"','"title" selected="selected"')+'<span class="weight"></span><div class="icon"></div><div class="information"></div></div>';for(k=3;k<12;k++){j="";if(k<=config.trackColumnList.length){j=
config.trackColumnList[k-1].title;if(j=="artist/composer")j="artist-composer";if(config.trackColumnList[k-1].columns[0].indexOf("custom_")==0)j=config.trackColumnList[k-1].columns[0]}b+='<div id="column_'+k+'" class="section tl-column"><h4>Column '+k+":</h4>"+p.replace('"'+j+'"','"'+j+'" selected="selected"').replace(/<option value="(play|title)">[^<]+<\/option>/g,"")+'<span class="weight"></span><div class="icon">'+(k<=config.trackColumnList.length&&config.trackColumnList[k-1].columns[0].indexOf("avatar")!=
-1?'Show an icon? <input type="checkbox" value="1" checked="checked"/><div class="weight"></div>':"")+'</div><div class="information"></div></div>'}f.html('<h1>Branded Site</h1><div id="account_details"><h2>Track List Columns</h2><a href="javascript:;" id="how">The numbers indicate how much space a column takes up out of 100. To learn more, click here</a><div id="track_list_explanation" class="hidden">This tool allows you to choose what columns appear on most* track lists on your site. The list of all the available columns is on the right and the list of what columns you\'re currently using is on the left.<br/><br/>There\'s a limited amount of room in your track lists so you can\'t have every different type of column at once. Also, some columns are inherently wider than others (the Album column tends to be wider than the Length column) so rather than give you a set number of columns you could choose, we assigned each column type a weight based on how much width it usually takes up and you can choose as many columns as you want, provided the total weight of column types you put in those columns doesn\'t exceed a certain weight: 100.<br/><br/>For example, the general SourceAudio site uses these columns: (at the time this was written)<ul><li>Interaction Options (11)</li><li>Title (12)</li><li>Catalog (11)</li><li>Album (15)</li><li>Artist/Composer (12)</li><li>Genre (10)</li><li>Length (6)</li><li>Plays (5)</li><li>Added (7)</li></ul>You can see the weights of these columns in the parenthesis and if you add them up, it\'s 89, and we add 5 more because one of the columns (catalog) is showing an icon. So the total general SourceAudio weight is 94 out of 100.We could add another small column, like Key (5) or throw in another icon, like Album art and we\'d still be within weight. However, if we wanted to add a wider column, like Publisher (12), we\'d be at 106, and we\'d have to get rid of something else.<br/><br/>Notice that we don\'t use every bit of the available weight on the general site and you certainly don\'t have to either. The system will stretch existing columns to take up more room, if you give it the space to do so, and you end with a nicer presentation (in our mind) than if you cram in as much as you possibly can. Just something to think about. Don\'t feel like you <i>have</i> to get to 100 weight.<br/><br/>Hopefully that gives you a feel for how track list columns work. There are some tradeoffs to consider when deciding what columns you want on your site but we give you the flexibility to use some different ones depending on what metadata your tracks do or don\'t have. Please let us know if you have any questions or problems (<a href="mailto:support@sourceaudio.com">support@sourceaudio.com</a> and/or <a href="mailto:dan@sourceaudio.com">dan@sourceaudio.com</a>)<br/><br/>You can see how much weight each column has by looking at the number in parenthesis under Available Columns.<br/><br/><sub>* some smaller track lists might still use their default columns</sub></div><div class="column">'+
b+'<div id="total_weight" class="section">Total:<div class="weight"></div><div class="clr"></div></div></div><div class="column"><h3>Available Columns:</h3>'+n+'</div><div class="clr"></div></div>');$j(".tl-column select, .tl-column .icon input[type=checkbox]").change(function(){profilePage.refreshWhiteTrackListWeights()});$j("#how",f).toggle(function(){$j("#track_list_explanation").slideDown(250)},function(){$j("#track_list_explanation").slideUp(250)});$j("#account_details").append($j(createButton("Save Changes",
"","","javascript:;",function(){profilePage.saveWhiteTrackLists()}))).append('<div class="information" id="general"></div><div class="information" id="disclaimer">If you have any problems with anything on this page, please contact us immediately (<a href="mailto:support@sourceaudio.com">support@sourceaudio.com</a> and/or <a href="mailto:dan@sourceaudio.com">dan@sourceaudio.com</a>) and we\'ll be happy to answer any questions or assist you in any way we can.</div>');profilePage.refreshWhiteTrackListWeights()}else{f.html("<h1>Branded Site</h1><h2>Track Lists</h2>");
f.append(getSecureA("","Click here to enter our secure management page"))}};this.refreshWhiteTrackListWeights=function(){for(var b=this.fullColumnList,f=0,j=0;j<b.length;j++)if(b[j].id=="icon"){f=b[j].weight;break}var k=$j(".tl-column"),n=0;$j("#column_list li").removeClass("used");for(j=0;j<k.length;j++){var p=$j(k[j]),q=0,r=p.find("select").val();if(r)for(var u=0;u<b.length;u++){if(b[u].id==r){r=b[u];n+=q=r.weight;$j("#column_list li#"+r.id).addClass("used");u=p.find(".icon");if(r.icon)if(u.html())if(u.find("input[type=checkbox]").attr("checked")){u.find(".weight").html("+ "+
f);n+=f}else u.find(".weight").html("");else{u.html('Show an icon? <input type="checkbox" value="1"/><div class="weight"></div>');u.find("input[type=checkbox]").change(function(){profilePage.refreshWhiteTrackListWeights()})}else u.html("");break}}else p.find(".icon").html("");p.find(".weight:first").html(q?"+ "+q:"")}$j("#total_weight").removeClass("error").addClass(n>100?"error":"").find(".weight").html(n)};this.saveWhiteTrackLists=function(){for(var b=$j(".tl-column"),f="",j=0,k=[],n=0;n<b.length;n++){var p=
$j(b[n]),q=p.find("select").val();if(q){var r=p.attr("id").substring(7);p=p.find("input[type=checkbox]");p=p.length?p.attr("checked")?"1":"0":"0";f+="&columns["+r+"][type]="+escape(q)+"&columns["+r+"][icon]="+escape(p);j++;if(k.indexOf(q)!=-1){$j("#general").addClass("error").html("You may only have one of each column type");return}else k.push(q)}}if(j>=5){$j("#general").removeClass("error").html("");ajax(f,"profilePage.handleWhiteTrackListsResponse","POST","p=dashboard&u="+this.currentUser+"&section=white_track_lists&action=save")}else $j("#general").addClass("error").html("You must choose at least five columns")};
this.handleWhiteTrackListsResponse=function(b){b=b[0];if(b.error)if(b.error.field)$j("#account_details #"+b.error.field+" .information").addClass("error").removeClass("success").html(b.error.message);else{$j("#general").addClass("error").html(b.error.message);alertManager.alert(createText(b.error.message))}else if(b.success){$j("#general").html('<h2>Result: Changes saved!</h2><div class="section">You might need to reload to see all your changes.</div>');window.scrollTo(0,getPosition($j("#general").get(0)).y);
alertManager.alert(createText("Changes saved!"))}};this.setDashboardRegistrations=function(b,f){for(var j={sort:b.o,type:b.type,show:b.perPage},k='<h1>Registrations</h1><div id="options" class="light_links"><h4>Sort by:</h4>',n=[["date","Most Recent"],["rdate","Least Recent"],["email","Email"]],p=0;p<n.length;p++){j.o=n[p][0];k+=(b.o==n[p][0]?n[p][1]:'<a href="'+getDashboardLink("registrations",j)+'">'+n[p][1]+"</a>")+(p+1==n.length?"</div>":"<span>|</span>")}j.o=b.o;k+='<div class="data">';k+='<div class="light_links"><h4>Status:</h4>';
n=[["open","Pending"],["approved","Approved"],["denied","Denied"]];for(p=0;p<n.length;p++){j.type=n[p][0];k+=(b.type==n[p][0]?n[p][1]:'<a href="'+getDashboardLink("registrations",j)+'">'+n[p][1]+"</a>")+(p+1==n.length?"</div>":"<span>|</span>")}j.type=b.type;k+='<div id="registrations_dashboard" class="list">';k+="</div></div>";f.html(k);if(b.total){for(p=0;p<b.registrations.length;p++){f=b.registrations[p];k='<div class="registration" id="registration_'+f.id+'"><div class="extra_fields">';for(n=
0;n<f.extraFields.length;n++){var q=f.extraFields[n].value;if(q!="")for(var r=f.extraFields[n].id,u=0;u<config.registrationFields.length;u++){var v=config.registrationFields[u];if(v.id==r){k+="<div><h4>"+v.name+":</h4><span>"+q+"</span></div>";break}}}k+='</div><div class="basic"><div><h4>Email:</h4><span>'+f.email+"</span></div><div><h4>Username:</h4><span>"+f.username+"</span></div><div><h4>Date Joined:</h4><span>"+f.date+"</span></div>";k+='</div><div class="options">';if(f.status!="s")k+="<p>"+
(f.status=="a"?"accepted":"rejected")+" on "+f.responseDate+"</p>";k+='</div><div class="clr"></div></div>';$j("#registrations_dashboard").append(k);if(f.status=="s"){k=$j("#registration_"+f.id+" .options");k.append($j(createButton("Approve","","download_perm_button","javascript:;")).click(function(){profilePage.handleRegistrationApproval($j(this).data("registrationId"),true)}).data("registrationId",f.id));k.append($j(createButton("Deny","","download_perm_button","javascript:;")).click(function(){profilePage.handleRegistrationApproval($j(this).data("registrationId"),
false)}).data("registrationId",f.id))}}f=$j('<div id="track_list_page_numbers"></div>');$j("#registrations_dashboard").append('<div id="track_list_result_count"></div>').append(f).append('<div class="clr"></div>');p=Math.ceil(b.total/b.perPage);k=b.page;if(p<2)f.html("Showing all results");else{if(k>0){j.pg=k-1;f.append('<a id="track_list_page_prev" href="'+getDashboardLink("registrations",j)+'"><< Prev</a>');j.pg=0;f.append('<a href="'+getDashboardLink("registrations",j)+'" id="track_list_page_first">1</a><span>...</span>')}f.append($j('<input type="text" id="track_list_page_selection" value="'+
(k+1)+'"/>').keydown(function(w){code=w?w.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false}).keyup(function(w){code=w?w.keyCode:window.event.keyCode;w=$j(this);if(code==13&&w.val().match(/^[0-9]+$/)){var I=w.data("vars");I.pg=w.val()-1;setHash(getDashboardLink("registrations",I))}}).data("vars",j));if(k<p-1){j.pg=p-1;f.append('<span>...</span><a href="'+getDashboardLink("registrations",j)+'" id="track_list_page_last">'+
p+"</a>");j.pg=k+1;f.append('<a id="track_list_page_next" href="'+getDashboardLink("registrations",j)+'">Next >></a>')}}j.pg=0;f=$j("#track_list_result_count").html("<span>Results per page:</span>");k=[5,10,15,25,-1];n=false;for(p=0;p<k.length;p++){q=k[p];r=b.perPage;if(!n&&(r==q||q>r||q==-1)){n=true;f.append($j('<input type="text" id="result_count_selection" value="'+r+'"/>').keydown(function(w){code=w?w.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>
57&&code<96||code>105))return false}).keyup(function(w){code=w?w.keyCode:window.event.keyCode;w=$j(this);if(code==13&&w.val().match(/^[0-9]+$/)){var I=$j(this).data("vars");I.show=w.val();setHash(getDashboardLink("registrations",I))}}).data("vars",j))}if(r!=q&&q!=-1){j.show=q;f.append($j('<a href="'+getDashboardLink("registrations",j)+'">'+q+"</a>"))}}j.show=b.perPage;j.pg=b.pg;this.lastRegistrationVars=j}else $j("#registrations_dashboard").html("No results matched your criteria. Please adjust your parameters.")};
this.handleRegistrationApproval=function(b,f){var j=varsToHash(this.lastRegistrationVars);ajax("approve="+(f?"1":"0")+"&id="+b,"profilePage.handleRegistrationResponse","POST","p=dashboard"+j.replace(/\?/,"&"))};this.handleRegistrationResponse=function(b){b=b[0];this.setDashboardRegistrations(b,$j("#profile_content"));b.registerResult&&alertManager.alert(createText(b.registerResult))}}var profilePage=new ProfilePage;function CatalogPage(){this.allowEdit=false;this.avatarUploader=null;this.backgroundChanges={};this.backgroundUploader=null;this.bannerChanges={};this.bannerUploader=null;this.catalogData=false;this.currentCatalog=0;this.editOn=false;this.fieldLengths={location:32,website:64,about:65535};this.firstCheck=false;this.generationVars=null;this.page="";this.waitingForTheme=false;this.myTrackListConfig=new TrackListConfig;this.myTrackListConfig.columnList=getStandardColumnList();this.myTrackListConfig.allowBlock=
true;this.myTrackListConfig.callback="catalogPage.setData";this.myTrackListConfig.bankKey="catalog_mytracks";this.myTrackListConfig.useFilters=true;this.myTrackList=new TrackList(this.myTrackListConfig);this.resultsTrackListConfig=new TrackListConfig;this.resultsTrackListConfig.columnList=getStandardColumnList();this.resultsTrackListConfig.allowBlock=true;this.resultsTrackListConfig.callback="catalogPage.setData";this.resultsTrackListConfig.bankKey="catalog_results_tracks";this.resultsTrackListConfig.useFilters=
true;this.resultsTrackList=new TrackList(this.resultsTrackListConfig);this.myArtistListConfig=new ListConfig;this.myArtistListConfig.columnList=getStandardArtistColumnList();this.myArtistListConfig.callback="catalogPage.setData";this.myArtistListConfig.useFilters=true;this.myArtistListConfig.bankKey="catalog_artists";this.myArtistList=new ArtistList(this.myArtistListConfig);this.myAlbumListConfig=new ListConfig;this.myAlbumListConfig.columnList=getStandardAlbumColumnList();this.myAlbumListConfig.callback=
"catalogPage.setData";this.myAlbumListConfig.useFilters=true;this.myAlbumListConfig.bankKey="catalog_artists";this.myAlbumList=new AlbumList(this.myAlbumListConfig);this.myLabelListConfig=new ListConfig;this.myLabelListConfig.columnList=getStandardLabelColumnList();this.myLabelListConfig.callback="catalogPage.setData";this.myLabelListConfig.useFilters=true;this.myLabelListConfig.bankKey="catalog_artists";this.myLabelList=new LabelList(this.myLabelListConfig);this.loadPage=function(b,f){setHash("catalog"+
paramsToHash(b));switch(f){case "tracks":this.myTrackList.loadPage(b.replace("page","type"));break;case "artists":this.myArtistList.loadPage(b.replace("page","type"));break;case "albums":this.myAlbumList.loadPage(b.replace("page","type"));break;case "labels":this.myLabelList.loadPage(b.replace("page","type"));break;case "results":this.resultsTrackList.loadPage(b.replace("page","type"));if(this.firstCheck){b=paramsToVars(b);b.s&&search.addSearchTerm(b.s)}break;case "profile":ajax("p=catalog&page=profile&c="+
this.currentCatalog+"&reload="+escape(Math.random()),"catalogPage.setData");break}this.firstCheck=false};this.setData=function(b){switch(this.page){case "tracks":this.myTrackList.setData(b,getCatalogLinkExact);var f=b[0].headingName,j=b[0].headingValue;if(f&&j){var k=$j("<div></div>");if(f=="album"&&b.length>1){k.append(aCont=$j('<div class="tag_options"></div>'));var n=b[1].album;aCont.append(generateDownloadButton("album",n,true))}n=new Sorter(this.myTrackList);k.append(n);k.append('<div class="clr"></div>');
f==j?heading.show(j+" ("+numberFormat(b[0].count)+")","",k):heading.show(j+" ("+numberFormat(b[0].count)+")",f+":",k)}break;case "artists":this.myArtistList.setData(b,getCatalogLinkExact);break;case "albums":this.myAlbumList.setData(b,getCatalogLinkExact);break;case "labels":this.myLabelList.setData(b,getCatalogLinkExact);break;case "results":this.resultsTrackList.setData(b,getCatalogLinkExact);heading.hide();if(b[0].headingName&&b[0].headingValue){k=$j("<div></div>");if(b[0].headingName=="album"&&
b.length>1){k.append(aCont=$j('<div class="tag_options"></div>'));n=b[0].album;aCont.append(generateDownloadButton("album",n,true));aCont.append(generateEmailButton("album",n));aCont.data("album",n)}n=new Sorter(this.resultsTrackList);k.append(n);k.append('<div class="clr"></div>');heading.show(b[0].headingValue+" ("+numberFormat(b[0].count)+")",b[0].headingName+":",k)}break;case "profile":this.setProfile(b);break}if(config.secure)this.allowEdit&&this.editOn?this.showEditTheme():this.hideEditTheme();
adjustRightHeight();projector.inQuickProjectMode()&&this.enableFastTagging()};this.enableFastTagging=function(){if(this.page=="results"){this.disableFastTagging();var b=$j(".tag_options");if(album=b.data("album"))b.append(generateQuickProjectAlbumButton(album))}};this.disableFastTagging=function(){$j(".tag_options .quick_project_button").remove()};this.generatePage=function(b){this.editOn=false;var f=paramsToVars(b);if(f.c){this.currentCatalog=f.c;this.page="";this.catalogData=false;if(user.userData!=
null&&user.canAdmin(this.currentCatalog)){this.allowEdit=true;this.editOn=config.secure}else this.allowEdit=false;this.page="";clearBody();$j("#body").append('<a id="banner_container" href="'+getCatalogLink(this.currentCatalog)+'"><div id="artist_banner"></div></a>');var j=createDiv("artist_background"),k=createDiv("catalog_container","max_width"),n=createDiv("catalog_nav");k.appendChild(n);n=createDiv("content_container");k.appendChild(n);j.appendChild(k);j.appendChild(createDiv("","clr"));get("body").appendChild(j);
showLoader(n,"catalog theme");this.waitingForTheme=true;f.params=b;this.generationVars=f;this.loadTheme();this.firstCheck=firstCheck}else{alertManager.alert($j('<div>Sorry! We can\'t tell where you wanted to go.<br/>Try <a href="#catalogs">looking through the catalog list</a>.</div>')[0]);setHash(config.home)}};this.generateCatalogContainer=function(b){b=true;var f=get("content_container");if(!f)return null;removeChildren(f);if(b){leftNav.generate(f);leftNav.disableFilters();f.appendChild(createDiv("right_content",
"right_content",b=createDiv("catalog_content")))}else f.appendChild(b=createDiv("catalog_content"));return b};this.generateFinish=function(){for(var b=this.generationVars,f=b.params,j="",k=0;k<this.themeData.sections.length;k++)if(this.themeData.sections[k].value==b.page)j=b.page;if("results"==b.page){j="results";search.setSelection("this catalog");setHash("catalog"+paramsToHash(f))}else if(!j){j="profile";setHash("catalog"+paramsToHash(f))}config.secure&&this.hideEditTheme();switch(j){case "tracks":b=
this.generateCatalogContainer(true);if(!b)return;k=createDiv("track_list_"+this.myTrackListConfig.bankKey,"track_list");this.myTrackList.allowEdit=this.allowEdit;this.myTrackList.generatePage(k);b.appendChild(k);leftNav.enableFilters();break;case "artists":b=this.generateCatalogContainer(false);if(!b)return;k=createDiv("list_"+this.myArtistListConfig.bankKey,"list");this.myArtistList.setEdit(this.allowEdit);this.myArtistList.generatePage(k);b.appendChild(k);leftNav.disableFilters();break;case "albums":b=
this.generateCatalogContainer(false);if(!b)return;k=createDiv("list_"+this.myAlbumListConfig.bankKey,"list");this.myAlbumList.setEdit(this.allowEdit);this.myAlbumList.generatePage(k);b.appendChild(k);leftNav.disableFilters();break;case "labels":b=this.generateCatalogContainer(false);if(!b)return;k=createDiv("list_"+this.myLabelListConfig.bankKey,"list");this.myLabelList.setEdit(this.allowEdit);this.myLabelList.generatePage(k);b.appendChild(k);leftNav.disableFilters();break;case "results":b=this.generateCatalogContainer(true);
if(!b)return;k=createDiv("track_list_"+this.resultsTrackListConfig.bankKey,"track_list");this.resultsTrackList.generatePage(k);b.appendChild(k);leftNav.enableFilters();break;case "profile":b=this.generateCatalogContainer(false);if(!b)return;removeChildren(b);showLoader(b,"catalog data");break}this.page=j;if(this.themeData){this.initNav(themeData.sections);this.setTitle()}this.setNav(this.page);currentPage="catalog";this.loadPage(f,j)};this.setTitle=function(){var b="";switch(this.page){case "profile":b=
" - Profile";break;case "tracks":b=" - Track List";break;case "artists":b=" - Artist List";break;case "labels":b=" - Label List";break;case "albums":b=" - Album List";break;case "results":b=" - Search Results";break}setTitle("Catalog Details - "+this.themeData.catalogName+b)};this.getTrackList=function(){var b=[];switch(this.page){case "tracks":b[0]=this.myTrackList;break;case "results":b[0]=this.resultsTrackList;break}return new MetaTrackList(b)};this.turnEdit=function(b){this.editOn=b;this.loadPage("c="+
this.currentCatalog+"&page=profile","profile")};this.initNav=function(b){var f=$j("#catalog_nav").empty();if(f.length){f.append('<a href="'+getCatalogLink(this.currentCatalog)+'" class="heading">'+this.themeData.catalogName+"</a>");for(var j=b.length-1;j>=0;j--){var k=b[j];f.append('<a href="'+getCatalogLink(this.currentCatalog,k.value)+'" id="nav_'+k.value+'" class="element">'+k.display+"</a>")}this.setNav(this.page)}};this.setNav=function(b){$j("#catalog_nav .element").removeClass("selected");b&&
$j("#catalog_nav #nav_"+b).addClass("selected")};this.setProfile=function(b){var f=$j("#catalog_content").empty();if(this.allowEdit&&!config.secure){f.append(viewBar=createDiv("view_bar_catalog","view_bar"));viewBar.appendChild(createElement("em","","",createText("This page is editable on "+config.name+" Secure")));$j(viewBar).append(getSecureA())}b=b[0];var j='<div id="catalog_info" class="catalog_profile_section"><h2>Info</h2><div class="content"><div class="avatar" id="catalog_image"><img src="'+
b.info.image+'"/></div><div id="facts">';if(b.info.location)j+='<div id="location_container"><h4>Location:</h4> <span id="catalog_location">'+b.info.location+"</span></div>";else if(this.editOn&&this.allowEdit)j+='<div id="location_container"><h4>Location:</h4> <span id="catalog_location"></span></div>';if(b.info.website)j+='<div id="website_container"><h4>Website:</h4> <span id="catalog_website"><a target="_blank" href="'+b.info.website+'">'+b.info.website+"</a></span></div>";else if(this.editOn&&
this.allowEdit)j+='<div id="website_container"><h4>Website:</h4> <span id="catalog_website"></span></div>';j+="<div><h4>Joined:</h4> "+b.info.join_date+'</div></div><div class="clr"></div>';if(b.info.about)j+='<div id="about_container"><span id="catalog_about">'+b.info.about+"</span></div>";else if(this.editOn&&this.allowEdit)j+='<div id="about_container"><span id="catalog_about"></span></div>';j+="</div></div>";f.append(j);if(this.editOn&&this.allowEdit){this.makeEditable(get("catalog_location"),
get("location_container"),"location",b.info.location?b.info.location:"");this.makeEditable(get("catalog_website"),get("website_container"),"website",b.info.website?b.info.website:"");j=createDiv("avatar_upload_container");$j("#catalog_info .content").append(j);var k=d.createElement("input");k.type="text";k.id="avatar_upload_input";k.value="Browse to change image";k.onkeydown=function(){return false};j.appendChild(k);j.appendChild(div=createDiv("avatar_upload_browse","button_dual_gray file_upload_container",
createText("Browse")));this.avatarUploader=new Uploader(div,false,"catalogPage.avatarBrowseResponse",UploaderConstants.IMAGES,"catalogPage.avatarLoadCallback");j.appendChild(createDiv("removeme","clr"));this.allowEdit&&this.editOn&&this.makeEditable(get("catalog_about"),get("about_container"),"about",b.info.about,true)}if(b.labels){k='<div id="label_list" class="catalog_profile_section"><h2>Featured Labels</h2><div id="label_container" class="content">';for(j=0;j<b.labels.length;j++){var n=b.labels[j];
k+='<div class="label'+(j+1==b.labels.length?" last":"")+'"><a href="'+getLabelLink(n.id,this.currentCatalog)+'" class="avatar"><img src="'+n.image+'"/></a><div class="details"><a href="'+getLabelLink(n.id,this.currentCatalog)+'">'+n.name+"</a><br/>Albums: "+numberFormat(n.album_count)+"<br/>Artists: "+numberFormat(n.artist_count)+"<br/>Tracks: "+numberFormat(n.track_count)+"</div></div>"}k+='<div class="clr"></div></div></div>';f.append(k)}else $j("#catalog_info").addClass("wide");f.append('<div class="clr"></div>');
if(b.albums){k='<div id="album_list" class="catalog_profile_section"><h2>Featured Albums</h2><div id="album_container" class="content">';for(j=0;j<b.albums.length;j++){n=b.albums[j];k+='<div class="album"><a href="'+getAlbumLink(n.id,this.currentCatalog)+'" class="avatar"><img src="'+n.image+'"/></a><div class="details"><a href="'+getAlbumLink(n.id,this.currentCatalog)+'">'+n.name+"</a></div></div>"}k+='<div class="clr"></div></div></div>';f.append(k)}if(b.artists){k='<div id="artist_list" class="catalog_profile_section"><h2>Featured Artists</h2><div id="artist_container" class="content">';
for(j=0;j<b.artists.length;j++){n=b.artists[j];k+='<div class="artist"><a href="'+getArtistLink(n.id,this.currentCatalog)+'" class="avatar"><img src="'+n.image+'"/></a><div class="details"><a href="'+getArtistLink(n.id,this.currentCatalog)+'">'+n.name+"</a></div></div>"}k+='<div class="clr"></div></div></div>';f.append(k)}};this.avatarBrowseResponse=function(){var b=this.avatarUploader.getFiles(),f=get("avatar_upload_container");get("avatar_upload_save")&&f.removeChild(get("avatar_upload_save"));
get("avatar_save_message")&&f.removeChild(get("avatar_save_message"));if(!b||!b.length||b.length!=1)b="Browse to change your avatar";else{b=b[0];if(remove=get("removeme",f))f.removeChild(remove);f.appendChild(createA("avatar_upload_save","button_dual_gray",getDefaultLink(),function(){catalogPage.hideAvatarButtons();catalogPage.avatarUploader.upload("c="+catalogPage.currentCatalog+"&t=catalog","catalogPage.avatarComplete","","catalogPage.avatarError");return false},"","Upload"));f.appendChild(createDiv("avatar_save_message"));
remove&&f.appendChild(remove)}get("avatar_upload_input").value=b};this.avatarLoadCallback=function(){};this.hideAvatarButtons=function(){get("avatar_upload_save").style.display="none";var b=get("avatar_save_message");b.style.display="block";b.innerHTML="Saving...";b.className=""};this.avatarComplete=function(){$j("#avatar_upload_save, #avatar_save_message").remove();get("avatar_upload_input").value="Browse to change your avatar";ajax("p=catalog&page=profile&c="+this.currentCatalog,"catalogPage.reloadAvatar")};
this.reloadAvatar=function(b){$j('img[src="'+$j("#catalog_image img").attr("src")+'"]').attr("src",b[0].info.image)};this.avatarError=function(){get("avatar_upload_save").style.display="block";var b=get("avatar_save_message");b.style.display="block";b.innerHTML="Error saving. Please try again.";b.className="error"};this.makeEditable=function(b,f,j,k,n){if(k==undefined||k==""){b.innerHTML="click button to add "+j;b.className="artist_profile_editable"}else b.className="";f||console.log("there is no cont!");
f.style.display="block";b=createA("details_edit_"+j.replace(" ","_"),"edit_button",getDefaultLink(),"",j.replace(" ","_"));b.large=n;b.onclick=function(){catalogPage.allowInput(this,this.large);$j(this.par).addClass("editing");return false};b.innerHTML='<img src="/images/shared/edit.png"/>';b.par=f;b.value=k;f.appendChild(b)};this.allowInput=function(b,f){var j=createDiv("","details_input_container");j.large=f;b.par.appendChild(j);b.onclick=function(){catalogPage.disallowInput(this)};if(f){i=d.createElement("textarea");
i.className="artist_profile_edit_text"}else{i=d.createElement("input");i.type="text"}if(b.className!="artist_profile_editable")for(i.value=b.value;i.value.indexOf("<br>")!=-1;)i.value=i.value.replace("<br>","\n");for(;i.value.indexOf("&gt;")!=-1;)i.value=i.value.replace("&gt;",">");for(;i.value.indexOf("&lt;")!=-1;)i.value=i.value.replace("&lt;","<");for(;i.value.indexOf("&amp;")!=-1;)i.value=i.value.replace("&amp;","&");for(;i.value.indexOf("<br/>")!=-1;)i.value=i.value.replace("<br/>","\n");i.id=
"profile_field_"+b.name;i.maxLength=this.fieldLengths[b.name];j.appendChild(i);b.inputDiv=j;b.name&&i.focus();a=createA("","save_button",getDefaultLink(),function(){catalogPage.saveChange(this);return false});a.input=i;a.field=b.name;a.title="Click to save your change";j.appendChild(a);j.appendChild(createSpan("","clr"))};this.disallowInput=function(b){b.onclick=function(){catalogPage.allowInput(this,this.large);$j(this.par).addClass("editing");return false};b.par.removeChild(b.inputDiv);$j(b.par).removeClass("editing")};
this.saveChange=function(b){ajax("field="+b.field+"&value="+escape(b.input.value),"catalogPage.setField","POST","p=catalog_details&c="+this.currentCatalog)};this.setField=function(b){if(b[0].result=="success"){alertManager.alert(createText("Changes saved!"));if(div=get("catalog_"+b[0].field)){div.innerHTML=b[0].value;div.className="";if(b[0].value==""){div.innerHTML="click button to add "+b[0].field;div.className="artist_profile_editable"}}if(a=get("details_edit_"+b[0].field)){this.disallowInput(a);
a.value=b[0].value}}else alertManager.alert(createText(b[0].result))};this.loadTheme=function(b){if(!b&&this.themeData&&this.currentCatalog==this.themeData.id)this.setTheme([this.themeData]);else b||!(result=requestCache.get("p=catalog_theme&c="+this.currentCatalog))?ajax("p=catalog_theme&c="+this.currentCatalog+"&reload="+escape(Math.random()),"catalogPage.setTheme"):this.setTheme(result)};this.setTheme=function(b){this.themeData=themeData=b[0];requestCache.set("p=catalog_theme&c="+themeData.id,
b);search.addSearchOption(new SearchOption("Current Catalog",function(k){setHash(getCatalogLinkArbitrary(catalogPage.currentCatalog,"results",{s:k}))},"type=catalog&id="+this.currentCatalog));this.page=="results"&&search.setSelection("Current Catalog");this.initNav(themeData.sections);this.catalogData=themeData;b=themeData.banner;if(b.url){var f=get("banner_container"),j=get("artist_banner");j.style.width=b.width+"px";j.style.height=b.height+"px";j.style.backgroundColor="";f.style.height=b.height+
"px";f.style.backgroundImage="url('"+b.url+"')";switch(b.tiling){case "RV":f.style.backgroundRepeat="repeat-y";break;case "RH":f.style.backgroundRepeat="repeat-x";break;case "RN":f.style.backgroundRepeat="no-repeat";break;case "RA":default:f.style.backgroundRepeat="repeat";break}f.style.backgroundColor="#"+b.color;f.style.backgroundPosition="top center"}else{f=get("banner_container");f.style.height="";f.style.backgroundImage="";f.style.backgroundColor="";f.style.backgroundPosition="";j=get("artist_banner");
j.style.backgroundColor="#000"}b=get("artist_background");f=themeData.background;if(f.url){b.style.backgroundImage="url("+f.url+")";switch(f.tiling){case "RV":b.style.backgroundRepeat="repeat-y";break;case "RH":b.style.backgroundRepeat="repeat-x";break;case "RN":b.style.backgroundRepeat="no-repeat";break;case "RA":default:b.style.backgroundRepeat="repeat";break}if(f.position.length==2){posString="";switch(f.position.substring(1,2)){case "L":posString+="left";break;case "R":posString+="right";break;
case "C":default:posString+="center";break}posString+=" ";switch(f.position.substring(0,1)){case "T":posString+="top";break;case "B":posString+="bottom";break;case "M":default:posString+="center";break}b.style.backgroundPosition=posString}}else b.style.backgroundImage="";if(f.color)b.style.backgroundColor="#"+f.color;this.waitingForTheme&&this.generateFinish();this.page&&this.setTitle()};this.showEditTheme=function(){get("catalog_edit_theme")||this.editOn&&$j("#catalog_nav").after(createA("catalog_edit_theme",
"",getDefaultLink(),function(){catalogPage.editTheme()},"","edit theme")).addClass("editing")};this.hideEditTheme=function(){this.uneditBackground();this.uneditBanner();this.uneditTheme();$j("#catalog_edit_theme").remove();$j("#artist_nav").removeClass("editing")};this.editTheme=function(){var b=get("artist_banner");if(this.catalogData.banner.url==""){b.style.width="1000px";b.style.height="180px";b.style.backgroundColor="#000"}else if(this.catalogData.banner.height<180)get("banner_container").style.height=
"180px";div=createDiv("artist_edit_banner");div.appendChild(createText("Banner"));div.appendChild(createA("artist_edit_banner_link","",getDefaultLink(),"","","edit"));b.appendChild(div);div=createDiv("artist_edit_background");div.appendChild(createText("Wallpaper"));div.appendChild(createA("artist_edit_background_link","",getDefaultLink(),"","","edit"));get("body").appendChild(div);$j("#artist_edit_background_link").toggle(function(){catalogPage.editBackground();this.innerHTML="hide"},function(){catalogPage.uneditBackground();
this.innerHTML="edit"});$j("#artist_edit_banner_link").toggle(function(){catalogPage.editBanner();this.innerHTML="hide"},function(){catalogPage.uneditBanner();this.innerHTML="edit"});pos=getPosition(get("catalog_edit_theme"));div.style.top=pos.y+50-get("header").offsetHeight+"px";div.style.left=pos.x+get("catalog_edit_theme").offsetWidth-div.offsetWidth+"px";get("catalog_edit_theme").onclick=function(){catalogPage.uneditTheme()};get("catalog_edit_theme").innerHTML="hide edit theme"};this.uneditTheme=
function(){if(get("catalog_edit_theme")){get("catalog_edit_theme").onclick=function(){catalogPage.editTheme()};get("catalog_edit_theme").innerHTML="edit theme";var b=get("artist_banner");if(this.catalogData.banner.url==""){b.style.width="0px";b.style.height="0px"}else get("banner_container").style.height="";this.uneditBackground();this.uneditBanner();if(t=get("artist_edit_banner"))b.removeChild(get("artist_edit_banner"));if(t=get("artist_edit_background"))get("body").removeChild(get("artist_edit_background"))}};
this.editBackground=function(){this.backgroundChanges={};var b=createDiv("artist_background_edit_container","image_edit_container");b.appendChild(createH2("Edit Catalog Background"));b.appendChild(createH3("Color"));var f=this.catalogData.background.color;f||(f="ffffff");section=createDiv("","section",createSpan("","",createText("Background Color")));i=d.createElement("input");i.type="text";i.id="artist_edit_background_color_code";i.className="color_code";i.value=f;i.maxLength=6;i.onkeyup=function(){catalogPage.updateBackgroundColor(this.value,
true)};section.appendChild(i);colorDiv=createDiv("artist_edit_background_color","color");colorDiv.onclick=function(){if(catalogPage.colorOpen){catalogPage.colorOpen=false;colorWheel.destroyWheel(get("body"))}else{catalogPage.colorOpen=true;colorWheel.createWheel(get("body"),function(k){catalogPage.updateBackgroundColor(k)});var j=get("artist_background_edit_container");pos=getPosition(j);j=get("wheel");j.style.top=pos.y-get("header").offsetHeight+"px";j.style.left=pos.x-j.offsetWidth-2+"px"}};colorDiv.style.backgroundColor=
"#"+f;section.appendChild(colorDiv);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createH3("Background Image"));section=createDiv("","section");section.appendChild(createDiv("","",createText("Current Image:")));if(this.catalogData.background.url){img=createDiv("artist_edit_background_current_container","sub");a=createA("","",this.catalogData.background.url,"","","click here");a.target="_blank";img.appendChild(a);img.appendChild(createText(" | "));img.appendChild(createA("",
"",getDefaultLink(),function(){var j=get("artist_edit_background_current_container");catalogPage.backgroundChanges.removeBackground=true;j.appendChild(createText("save to confirm"));j.removeChild(this);return false},"","remove"));section.appendChild(img)}else section.appendChild(createDiv("","sub",createText("none")));b.appendChild(section);section=createDiv("","section");section.appendChild(createDiv("","",createText("Insert New Image:")));img=createDiv("artist_edit_background_image_container","sub");
img.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBackgroundImageUpload()},"","upload image"));img.appendChild(createText(" | "));img.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBackgroundImageURL()},"","enter image URL"));section.appendChild(img);b.appendChild(section);section=createDiv("","section");section.appendChild(createSpan("","",createText("Position:")));f=createElement("select");f.id="background_position";f.onchange=function(){catalogPage.backgroundChanges.position=
true};pos=["Top Center","Middle Center","Bottom Center","Top Left","Middle Left","Bottom Left","Top Right","Middle Right","Bottom Right"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.catalogData.background.position==o.value)o.selected=true;f.appendChild(o)}section.appendChild(f);section.appendChild(createDiv("","clr"));b.appendChild(section);section=createDiv("","section");
section.appendChild(createSpan("","",createText("Tiling:")));f=createElement("select");f.id="background_tiling";f.onchange=function(){catalogPage.backgroundChanges.tiling=true};pos=["Repeat All","Repeat Horizontal","Repeat Vertical","Repeat None"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.catalogData.background.tiling==o.value)o.selected="selected";f.appendChild(o)}section.appendChild(f);
section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createA("artist_edit_background_save","button_dual_gray save",getDefaultLink(),function(){catalogPage.saveBackground();return false},"","Save Changes"));b.appendChild(createDiv("background_message","message"));f=createDiv("artist_background_close_button","header_signup_close_button close");f.onclick=function(){catalogPage.uneditBackground()};b.appendChild(f);b=new FocusBox(b,true);b.show();f=get("artist_edit_background");
pos=getPosition(f);b.div.css({top:pos.y-(b.div.outerHeight(true)-f.offsetHeight)/2+"px",left:pos.x-b.div.outerWidth(true)-16+"px"});this.backgroundFocusBox=b};this.uneditBackground=function(){if(get("artist_edit_background_link")){if(this.colorOpen){this.colorOpen=false;colorWheel.destroyWheel(get("body"))}this.backgroundFocusBox&&this.backgroundFocusBox.hide()}};this.updateBackgroundColor=function(b,f){if(b.length&&(new RegExp("^#?([0-9A-F]{3}|[0-9A-F]{6})$","gi")).test(b)){if(b.substring(0,1)==
"#")b=b.substring(1);b="#"+b;get("artist_edit_background_color").style.backgroundColor=b;this.backgroundChanges.color=true;if(!f)get("artist_edit_background_color_code").value=b.substring(1)}};this.editBackgroundImageUpload=function(){this.backgroundChanges.backgroundImageURL=false;get("artist_background_edit_container").style.height="354px";$j("#artist_edit_background_image_container").empty().append($j('<input type="text" id="background_upload_input" class="upload_input" value="Browse"/>').keyDown(function(){return false}).append(browseDiv=
$j('<div id="background_upload_browse" class="button_dual_gray file_upload_container browse">Browse</div>'))).append('<div id="removeme" class="clr"/>').append(createA("","",getDefaultLink(),function(){catalogPage.editBackgroundImageURL()},"","switch to enter image URL"));this.backgroundUploader=new Uploader(browseDiv.get(0),false,"catalogPage.backgroundBrowseResponse",UploaderConstants.IMAGES,"catalogPage.backgroundLoadCallback")};this.saveBackground=function(){get("background_message").innerHTML=
"Saving...";get("artist_edit_background_save").style.display="none";changes=this.backgroundChanges;changeString="&t=catalog_background";if(changes.backgroundImageURL)changeString+="&backgroundURL="+escape(get("artist_edit_background_url").value);else if(changes.removeBackground)changeString+="&removeBackground=1";if(changes.color)changeString+="&color="+get("artist_edit_background_color_code").value;if(changes.position)changeString+="&position="+get("background_position").value;if(changes.tiling)changeString+=
"&tiling="+get("background_tiling").value;if(get("background_upload_input")&&this.backgroundUploader){var b=this.backgroundUploader.getFiles();if(!(!b||!b.length||b.length!=1)){changeString=changeString.replace("&removeBackground=1","");catalogPage.backgroundUploader.upload("c="+catalogPage.currentCatalog+changeString,"catalogPage.reloadBackground","","catalogPage.backgroundError");return}}changeString!=""?ajax(changeString,"catalogPage.backgroundChanged","POST","p=catalog_theme&c="+this.currentCatalog):
this.uneditBackground()};this.backgroundChanged=function(b){this.uneditBackground();this.setTheme(b);alertManager.alert(createText("Changes saved!"))};this.backgroundBrowseResponse=function(){$j("#background_upload_save").remove();$j("#background_save_message").remove();var b=this.backgroundUploader.getFiles();b=!b||!b.length||b.length!=1?"Browse":b[0];get("background_upload_input").value=b};this.backgroundLoadCallback=function(){};this.reloadBackground=function(){this.uneditBackground();this.loadTheme(true);
alertManager.alert(createText("Changes saved!"))};this.backgroundError=function(){get("artist_edit_background_save").style.display="block";get("background_message").innerHTML="Error saving. Try later";alertManager.alert(createText("Error saving. Try later"))};this.editBackgroundImageURL=function(){this.backgroundChanges.backgroundImageUpload=false;this.backgroundUploader=null;get("artist_background_edit_container").style.height="354px";var b=get("artist_edit_background_image_container");removeChildren(b);
var f=d.createElement("input");f.type="text";f.id="artist_edit_background_url";f.className="url";f.onchange=function(){catalogPage.backgroundChanges.backgroundImageURL=true};b.appendChild(f);b.appendChild(createDiv("","clr"));b.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBackgroundImageUpload()},"","switch to upload image"))};this.editBanner=function(){this.bannerChanges={};var b=createDiv("banner_edit_container","image_edit_container");b.appendChild(createH2("Edit Catalog Banner"));
b.appendChild(createH3("Color"));var f=this.catalogData.banner.color;f||(f="ffffff");section=createDiv("","section",createSpan("","",createText("Banner Color")));i=d.createElement("input");i.type="text";i.id="artist_edit_banner_color_code";i.className="color_code";i.value=f;i.maxLength=6;i.onkeyup=function(){catalogPage.updateBannerColor(this.value,true)};section.appendChild(i);colorDiv=createDiv("artist_edit_banner_color","color");colorDiv.onclick=function(){if(catalogPage.colorOpen){catalogPage.colorOpen=
false;colorWheel.destroyWheel(get("body"))}else{catalogPage.colorOpen=true;colorWheel.createWheel(get("body"),function(k){catalogPage.updateBannerColor(k)});var j=get("banner_edit_container");pos=getPosition(j);j=get("wheel");j.style.top=pos.y-get("header").offsetHeight+"px";j.style.left=pos.x-j.offsetWidth-2+"px"}};colorDiv.style.backgroundColor="#"+f;section.appendChild(colorDiv);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createH3("Banner Image"));section=createDiv("",
"section");section.appendChild(createDiv("","",createText("Current Image:")));if(this.catalogData.banner.url){img=createDiv("artist_edit_banner_current_container","sub");a=createA("","",this.catalogData.banner.url,"","","click here");a.target="_blank";img.appendChild(a);img.appendChild(createText(" | "));img.appendChild(createA("","",getDefaultLink(),function(){var j=get("artist_edit_banner_current_container");catalogPage.bannerChanges.removeBanner=true;j.appendChild(createText("save to confirm"));
j.removeChild(this);return false},"","remove"));section.appendChild(img)}else section.appendChild(createDiv("","sub",createText("none")));b.appendChild(section);section=createDiv("","section");section.appendChild(createDiv("","",createText("Insert New Image:")));img=createDiv("artist_edit_banner_image_container","sub");img.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBannerImageUpload()},"","upload image"));img.appendChild(createText(" | "));img.appendChild(createA("","",
getDefaultLink(),function(){catalogPage.editBannerImageURL()},"","enter image URL"));section.appendChild(img);b.appendChild(section);section=createDiv("","section");section.appendChild(createSpan("","",createText("Tiling:")));f=createElement("select");f.id="banner_tiling";f.onchange=function(){catalogPage.bannerChanges.tiling=true};pos=["Repeat All","Repeat Horizontal","Repeat Vertical","Repeat None"];for(i=0;i<pos.length;i++){o=createElement("option");o.innerHTML=pos[i];o.value=pos[i].substring(0,
1)+pos[i].substring(pos[i].indexOf(" ")+1,pos[i].indexOf(" ")+2);if(this.catalogData.banner.tiling==o.value)o.selected="selected";f.appendChild(o)}section.appendChild(f);section.appendChild(createDiv("","clr"));b.appendChild(section);b.appendChild(createA("artist_edit_banner_save","button_dual_gray save",getDefaultLink(),function(){catalogPage.saveBanner();return false},"","Save Changes"));b.appendChild(createDiv("banner_message","message"));f=createDiv("artist_banner_close_button","header_signup_close_button close");
f.onclick=function(){catalogPage.uneditBanner()};b.appendChild(f);b=new FocusBox(b,true);b.show();f=get("artist_edit_banner");pos=getPosition(f);b.div.css({top:pos.y-(b.div.outerHeight(true)-f.offsetHeight)/2+"px",left:pos.x-b.div.outerWidth(true)-16+"px"});this.bannerFocusBox=b};this.resizeBanner=function(){this.bannerFocusBox&&this.bannerFocusBox.resize()};this.uneditBanner=function(){if(get("artist_edit_banner_link")){if(this.colorOpen){this.colorOpen=false;colorWheel.destroyWheel(get("body"))}this.bannerFocusBox&&
this.bannerFocusBox.hide()}};this.updateBannerColor=function(b,f){if(b.length&&(new RegExp("^#?([0-9A-F]{3}|[0-9A-F]{6})$","gi")).test(b)){if(b.substring(0,1)=="#")b=b.substring(1);b="#"+b;get("artist_edit_banner_color").style.backgroundColor=b;this.bannerChanges.color=true;if(!f)get("artist_edit_banner_color_code").value=b.substring(1)}};this.editBannerImageUpload=function(){this.bannerChanges.bannerImageURL=false;get("banner_edit_container").style.height="354px";var b=get("artist_edit_banner_image_container");
removeChildren(b);var f=d.createElement("input");f.type="text";f.id="banner_upload_input";f.className="upload_input";f.value="Browse";f.onkeydown=function(){return false};b.appendChild(f);b.appendChild(browseDiv=createDiv("banner_upload_browse","button_dual_gray file_upload_container browse",createText("Browse")));this.bannerUploader=new Uploader(browseDiv,false,"catalogPage.bannerBrowseResponse",UploaderConstants.IMAGES,"catalogPage.bannerLoadCallback");b.appendChild(createDiv("removeme","clr"));
b.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBannerImageURL()},"","switch to enter image URL"));this.resizeBanner()};this.saveBanner=function(){get("banner_message").innerHTML="Saving...";get("artist_edit_banner_save").style.display="none";changes=this.bannerChanges;changeString="&t=catalog_banner";if(changes.bannerImageURL)changeString+="&bannerURL="+escape(get("artist_edit_banner_url").value);else if(changes.removeBanner)changeString+="&removeBanner=1";if(changes.color)changeString+=
"&color="+get("artist_edit_banner_color_code").value;if(changes.tiling)changeString+="&tiling="+get("banner_tiling").value;if(get("banner_upload_input")&&this.bannerUploader){var b=this.bannerUploader.getFiles();if(!(!b||!b.length||b.length!=1)){changeString=changeString.replace("&removeBanner=1","");catalogPage.bannerUploader.upload("c="+catalogPage.currentCatalog+changeString,"catalogPage.reloadBanner","","catalogPage.bannerError");return}}changeString!=""?ajax(changeString,"catalogPage.bannerChanged",
"POST","p=catalog_theme&c="+this.currentCatalog):this.uneditBanner();this.resizeBanner()};this.bannerChanged=function(b){this.uneditBanner();this.setTheme(b);alertManager.alert(createText("Changes saved!"))};this.bannerBrowseResponse=function(){var b=this.bannerUploader.getFiles(),f=get("banner_upload_container");get("banner_upload_save")&&f.removeChild(get("banner_upload_save"));get("banner_save_message")&&f.removeChild(get("banner_save_message"));b=!b||!b.length||b.length!=1?"Browse":b[0];get("banner_upload_input").value=
b;this.resizeBanner()};this.bannerLoadCallback=function(){};this.reloadBanner=function(){this.uneditBanner();this.loadTheme(true);alertManager.alert(createText("Changes saved!"))};this.bannerError=function(){get("artist_edit_banner_save").style.display="block";get("banner_message").innerHTML="Error saving. Try later";alertManager.alert(createText("Error saving. Try later"));this.resizeBanner()};this.editBannerImageURL=function(){this.bannerChanges.bannerImageUpload=false;this.bannerUploader=null;
get("banner_edit_container").style.height="354px";var b=get("artist_edit_banner_image_container");removeChildren(b);var f=d.createElement("input");f.type="text";f.className="url";f.id="artist_edit_banner_url";f.onchange=function(){catalogPage.bannerChanges.bannerImageURL=true};b.appendChild(f);b.appendChild(createDiv("","clr"));b.appendChild(createA("","",getDefaultLink(),function(){catalogPage.editBannerImageUpload()},"","switch to upload image"));this.resizeBanner()}}var catalogPage=new CatalogPage;function LabelPage(){this.labelData=this.allowEdit=false;this.currentLabel=0;this.editOn=false;this.fieldLengths={location:32,website:64,about:65535};this.firstCheck=false;this.generationVars=null;this.page="";this.waitingForTheme=false;this.myTrackListConfig=new TrackListConfig;this.myTrackListConfig.columnList=getStandardColumnList();this.myTrackListConfig.allowBlock=true;this.myTrackListConfig.callback="labelPage.setData";this.myTrackListConfig.bankKey="catalog_mytracks";this.myTrackListConfig.useFilters=
true;this.myTrackList=new TrackList(this.myTrackListConfig);this.resultsTrackListConfig=new TrackListConfig;this.resultsTrackListConfig.columnList=getStandardColumnList();this.resultsTrackListConfig.allowBlock=true;this.resultsTrackListConfig.callback="labelPage.setData";this.resultsTrackListConfig.bankKey="catalog_results_tracks";this.resultsTrackListConfig.useFilters=true;this.resultsTrackList=new TrackList(this.resultsTrackListConfig);this.myArtistListConfig=new ListConfig;this.myArtistListConfig.columnList=
getStandardArtistColumnList();this.myArtistListConfig.callback="labelPage.setData";this.myArtistListConfig.useFilters=true;this.myArtistListConfig.bankKey="catalog_artists";this.myArtistList=new ArtistList(this.myArtistListConfig);this.myAlbumListConfig=new ListConfig;this.myAlbumListConfig.columnList=getStandardAlbumColumnList();this.myAlbumListConfig.callback="labelPage.setData";this.myAlbumListConfig.useFilters=true;this.myAlbumListConfig.bankKey="catalog_artists";this.myAlbumList=new AlbumList(this.myAlbumListConfig);
this.loadPage=function(b,f){setHash("label"+paramsToHash(b));switch(f){case "tracks":this.myTrackList.loadPage(b.replace("page","type"));break;case "artists":this.myArtistList.loadPage(b.replace("page","type"));break;case "albums":this.myAlbumList.loadPage(b.replace("page","type"));break;case "results":this.resultsTrackList.loadPage(b.replace("page","type"));if(this.firstCheck){b=paramsToVars(b);b.s&&search.addSearchTerm(b.s)}break}this.firstCheck=false};this.setData=function(b){switch(this.page){case "tracks":this.myTrackList.setData(b,
getLabelLinkExact);var f=b[0].headingName,j=b[0].headingValue;if(f&&j){var k=$j("<div></div>"),n=new Sorter(this.myTrackList);k.append(n);k.append('<div class="clr"></div>');f==j?heading.show(j+" ("+numberFormat(b[0].count)+")","",k):heading.show(j+" ("+numberFormat(b[0].count)+")",f+":",k)}break;case "artists":this.myArtistList.setData(b,getLabelLinkExact);break;case "albums":this.myAlbumList.setData(b,getLabelLinkExact);break;case "results":this.resultsTrackList.setData(b,getLabelLinkExact);heading.hide();
if(b[0].headingName&&b[0].headingValue){k=$j("<div></div>");n=new Sorter(this.resultsTrackList);k.append(n);k.append('<div class="clr"></div>');heading.show(b[0].headingValue+" ("+numberFormat(b[0].count)+")",b[0].headingName+":",k)}break}adjustRightHeight()};this.generatePage=function(b){this.editOn=false;var f=paramsToVars(b);if(f.l){this.currentLabel=f.l;this.page="";this.labelData=false;this.page="";clearBody();$j("#body").append('<a id="banner_container" href="'+getLabelLink(this.currentLabel)+
'"><div id="artist_banner"></div></a>');var j=createDiv("artist_background"),k=createDiv("catalog_container","max_width"),n=createDiv("catalog_nav");k.appendChild(n);n=createDiv("content_container");k.appendChild(n);j.appendChild(k);j.appendChild(createDiv("","clr"));get("body").appendChild(j);showLoader(n,"label theme");this.waitingForTheme=true;f.params=b;this.generationVars=f;this.loadTheme();this.firstCheck=firstCheck}else{alertManager.alert($j('<div>Sorry! We can\'t tell where you wanted to go.<br/>Try <a href="#albums">looking through the albums list</a>.</div>')[0]);
setHash(config.home)}};this.generateLabelContainer=function(b){b=true;var f=get("content_container");if(!f)return null;removeChildren(f);if(b){leftNav.generate(f);leftNav.disableFilters();f.appendChild(createDiv("right_content","right_content",b=createDiv("label_content")))}else f.appendChild(b=createDiv("label_content"));return b};this.generateFinish=function(){for(var b=this.generationVars,f=b.params,j="",k=0;k<this.themeData.sections.length;k++)if(this.themeData.sections[k].value==b.page)j=b.page;
if("results"==b.page){j="results";search.setSelection("this label");setHash("label"+paramsToHash(f))}else if(!j){j=this.themeData.sections[0].value;setHash("label"+paramsToHash(f))}switch(j){case "tracks":b=this.generateLabelContainer(true);if(!b)return;k=createDiv("track_list_"+this.myTrackListConfig.bankKey,"track_list");this.myTrackList.generatePage(k);b.appendChild(k);leftNav.enableFilters();break;case "artists":b=this.generateLabelContainer(false);if(!b)return;k=createDiv("list_"+this.myArtistListConfig.bankKey,
"list");this.myArtistList.allowEdit=this.allowEdit;this.myArtistList.generatePage(k);b.appendChild(k);leftNav.disableFilters();break;case "albums":b=this.generateLabelContainer(false);if(!b)return;k=createDiv("list_"+this.myAlbumListConfig.bankKey,"list");this.myAlbumList.allowEdit=this.allowEdit;this.myAlbumList.generatePage(k);b.appendChild(k);leftNav.disableFilters();break;case "results":b=this.generateLabelContainer(true);if(!b)return;k=createDiv("track_list_"+this.resultsTrackListConfig.bankKey,
"track_list");this.resultsTrackList.generatePage(k);b.appendChild(k);leftNav.enableFilters();break}this.page=j;if(this.themeData){this.initNav(themeData.sections);this.setTitle()}this.setNav(this.page);currentPage="label";this.loadPage(f,j)};this.setTitle=function(){var b="";switch(this.page){case "tracks":b=" - Track List";break;case "artists":b=" - Artist List";break;case "albums":b=" - Album List";break;case "results":b=" - Search Results";break}setTitle("Label Details - "+this.themeData.labelName+
b)};this.getTrackList=function(){var b=[];switch(this.page){case "tracks":b[0]=this.myTrackList;break;case "results":b[0]=this.resultsTrackList;break}return new MetaTrackList(b)};this.turnEdit=function(b){this.editOn=b;this.loadPage("l="+this.currentLabel+"&page=albums","albums")};this.initNav=function(b){var f=$j("#catalog_nav").empty();if(f.length){f.append('<a href="'+getLabelLink(this.currentLabel)+'" class="heading"><span class="subheading">Label:</span> '+this.themeData.labelName+"</a>");for(var j=
b.length-1;j>=0;j--){var k=b[j];f.append('<a href="'+getLabelLinkArbitrary(this.currentLabel,k.value)+'" id="nav_'+k.value+'" class="element">'+k.display+"</a>")}this.setNav(this.page)}};this.setNav=function(b){$j("#catalog_nav .element").removeClass("selected");b&&$j("#catalog_nav #nav_"+b).addClass("selected")};this.loadTheme=function(b){if(!b&&this.themeData&&this.currentLabel==this.themeData.labelId)this.setTheme([this.themeData]);else b||!(result=requestCache.get("p=catalog_theme&l="+this.currentLabel))?
ajax("p=catalog_theme&l="+this.currentLabel+"&reload="+escape(Math.random()),"labelPage.setTheme"):this.setTheme(result)};this.setTheme=function(b){this.themeData=themeData=b[0];this.themeData.labelId=this.currentLabel;requestCache.set("p=catalog_theme&l="+this.currentLabel,b);search.addSearchOption(new SearchOption("Current Label",function(k){setHash(getLabelLinkArbitrary(labelPage.currentLabel,"results",{s:k}))},"type=label&id="+this.currentLabel));this.page=="results"&&search.setSelection("Current Label");
this.initNav(themeData.sections);this.labelData=themeData;b=themeData.banner;if(b.url&&!config.singleCatalog){var f=get("banner_container"),j=get("artist_banner");j.style.width=b.width+"px";j.style.height=b.height+"px";j.style.backgroundColor="";f.style.height=b.height+"px";f.style.backgroundImage="url('"+b.url+"')";switch(b.tiling){case "RV":f.style.backgroundRepeat="repeat-y";break;case "RH":f.style.backgroundRepeat="repeat-x";break;case "RN":f.style.backgroundRepeat="no-repeat";break;case "RA":default:f.style.backgroundRepeat=
"repeat";break}f.style.backgroundColor="#"+b.color;f.style.backgroundPosition="top center";f.href=getCatalogLink(themeData.id)}else{f=get("banner_container");f.style.height="";f.style.backgroundImage="";f.style.backgroundColor="";f.style.backgroundPosition="";j=get("artist_banner");j.style.backgroundColor="#000"}b=get("artist_background");f=themeData.background;if(f.url){b.style.backgroundImage="url("+f.url+")";switch(f.tiling){case "RV":b.style.backgroundRepeat="repeat-y";break;case "RH":b.style.backgroundRepeat=
"repeat-x";break;case "RN":b.style.backgroundRepeat="no-repeat";break;case "RA":default:b.style.backgroundRepeat="repeat";break}if(f.position.length==2){posString="";switch(f.position.substring(1,2)){case "L":posString+="left";break;case "R":posString+="right";break;case "C":default:posString+="center";break}posString+=" ";switch(f.position.substring(0,1)){case "T":posString+="top";break;case "B":posString+="bottom";break;case "M":default:posString+="center";break}b.style.backgroundPosition=posString}}else b.style.backgroundImage=
"";if(f.color)b.style.backgroundColor="#"+f.color;this.waitingForTheme&&this.generateFinish();this.page&&this.setTitle()}}var labelPage=new LabelPage;function RequestPage(){this.addedEmbeds=0;this.page="";this.resultsPerPage=10;this.requestId=0;this.trackLists=[];this.loadPage=function(b){ajax("p=requests&"+b.replace("page=","pageType="),"requestPage.setData")};this.generatePage=function(){currentHash=currentPage="requests";clearBody();var b=createDiv("requests_temp","max_width");b.innerHTML="<h3>Have a request or just can't find what you're looking for?</h3><p>We have a request feature coming soon but in the meantime, send us an email and we'll be happy to help! We'll search our library and if we can't find something, we can contact our Catalogs for you and work with them to get what you need. At SourceAudio, our number one priority is getting you the tracks you need!</p><p>Email us at <a href=\"mailto:requests@sourceaudio.com\">requests@sourceaudio.com</a></p>";
get("body").appendChild(b)};this.setData=function(b){this.trackLists=[];if(this.page!="new"){var f=get("request_list_container");if(!f)return;removeChildren(f)}switch(this.page){case "list":requests=b&&b.length&&b[0].requests.length?b[0].requests:[];for(var j=0;j<requests.length;j++){var k=createDiv("","request_item");k.appendChild(createA("","request_title",getRequestLink("details",requests[j].id),"","",requests[j].title));k.appendChild(section=createDiv("request_posted","request_section"));section.innerHTML=
"<div><em>Posted:</em> "+agoString(requests[j].time)+' ago by <a href="'+getProfileLink(requests[j].user.id)+'">'+requests[j].user.name+'</a></div><div class="avatar_small"><a href="'+getProfileLink(requests[j].user.id)+'"><img src="'+requests[j].user.av+'"/></a></div>';k.appendChild(section=createDiv("request_tags","request_section"));for(var n="",p=0;p<requests[j].tags.length;p++)n+='<a href="'+getExplorerLink("s="+requests[j].tags[p].tag)+'">'+requests[j].tags[p].tag+"</a>, ";if(n.length)section.innerHTML=
"<em>Tags:</em> "+n.substring(0,n.length-2);k.appendChild(section=createDiv("request_genre","request_section"));section.innerHTML="<em>Genre:</em> ";if(requests[j].genres.length)for(p=0;p<requests[j].genres.length;p++){section.innerHTML+='<a href="'+getGenreLink(requests[j].genres[p].id)+'">'+requests[j].genres[p].name+"</a>";if(p!=requests[j].genres.length-1)section.innerHTML+=", "}else section.innerHTML+="Any";k.appendChild(section=createDiv("request_description","request_section"));section.innerHTML=
"<em>Description:</em> "+requests[j].description;k.appendChild(section=createDiv("request_pay","request_section"));section.innerHTML="<em>Willing to pay up to:</em> "+(requests[j].pay!="0"?"$"+requests[j].pay:"Negotiable");k.appendChild(section=createDiv("request_replies","request_section"));section.innerHTML='<a href="'+getRequestLink("details",requests[j].id)+'">Reply to this post</a> - Replies ('+requests[j].replies+")";f.appendChild(k);j!=requests.length&&f.appendChild(createElement("hr"))}var q=
function(u){return"#requests"+paramsToHash(u)},r=b[0].pageVars;k=get("artist_list_page_numbers");removeChildren(k);f=Math.ceil(b[0].count/b[0].perPage);n=b[0].page;if(f<2)k.appendChild(createText("Showing all results"));else{if(n>0){k.appendChild(createA("artist_list_page_prev","",q(r+(n-1)),"","","<< Prev"));k.appendChild(createA("","",q(r+0),"","",1));k.appendChild(createSpan("","",createText("...")))}k.appendChild(j=createElement("input","artist_list_page_selection"));j.type="text";j.value=n+1;
j.pageVars=r;j.onkeydown=function(u){code=u?u.keyCode:window.event.keyCode;if(code!=8&&code!=46&&code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false};j.onkeyup=function(u){code=u?u.keyCode:window.event.keyCode;code==13&&this.value.match(/^[0-9]+$/)&&setHash(q(this.pageVars+(this.value-1)))};if(n<f-1){k.appendChild(createSpan("","",createText("...")));k.appendChild(createA("","",q(r+(f-1)),"","",f));k.appendChild(createA("artist_list_page_next","",q(r+(n+1)),"","","Next >>"))}}k=
get("artist_list_result_count");removeChildren(k);k.appendChild(createSpan("","",createText("Results per page: ")));f=[5,10,15,25,50,-1];n=false;for(j=0;j<f.length;j++){p=f[j];this.resultsPerPage=b[0].perPage;if(!n&&(this.resultsPerPage==p||p>this.resultsPerPage||p==-1)){n=true;k.appendChild(input=createElement("input","result_count_selection"));input.type="text";input.value=this.resultsPerPage;input.pageVars=r;input.onkeydown=function(u){code=u?u.keyCode:window.event.keyCode;if(code!=8&&code!=46&&
code!=37&&code!=39&&code!=16&&(code<48||code>57&&code<96||code>105))return false};input.onkeyup=function(u){code=u?u.keyCode:window.event.keyCode;if(code==13&&this.value.match(/^[0-9]+$/)){setHash(q(r.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+this.value));getArtistList().setResultsPerPage(this.value)}}}this.resultsPerPage!=p&&p!=-1&&k.appendChild(createA("","",q(r.replace(/\&show\=([0-9]+)?/ig,"")+"0&show="+p),function(){requestPage.setResultsPerPage(this.name)},p,p))}break;case "details":if(b[0].result!=
"success"){setHash("requests");alertManager.alert(createText(b[0].result));return}this.requestId=b[0].id;f.appendChild(k=createDiv("request_single"));k.appendChild(createH2(b[0].title,"","","request_title"));k.appendChild(section=createDiv("request_description","request_section"));section.innerHTML="<em>Description:</em> "+b[0].description;k.appendChild(section=createDiv("request_genre","request_section"));section.innerHTML="<em>Genre:</em> ";if(b[0].genres.length)for(p=0;p<b[0].genres.length;p++){section.innerHTML+=
'<a href="'+getGenreLink(b[0].genres[p].id)+'">'+b[0].genres[p].name+"</a>";if(p!=b[0].genres.length-1)section.innerHTML+=", "}else section.innerHTML+="Any";k.appendChild(section=createDiv("request_pay","request_section"));section.innerHTML="<em>Willing to pay up to:</em> "+(b[0].pay!="0"?"$"+b[0].pay:"Negotiable");n="";for(p=0;p<b[0].tags.length;p++)n+='<a href="'+getExplorerLink("s="+b[0].tags[p].tag)+'">'+b[0].tags[p].tag+"</a>, ";if(n.length){k.appendChild(section=createDiv("request_tags","request_section"));
section.innerHTML="<em>Tags:</em> "+n.substring(0,n.length-2)}if(b[0].sounds_like.length||b[0].tracks.length>1){k.appendChild(section=createDiv("request_sounds_like","request_section"));section.innerHTML="<em>Sounds Like:</em>";if(b[0].tracks.length&&b[0].tracks.length>1){j=new TrackListConfig;j.columnList=[new ListColumn("play",["play","tag"]),new ListColumn("title",["title"]),new ListColumn("music rep",["avatar","rep"]),new ListColumn("artist",["artist"]),new ListColumn("album",["album"]),new ListColumn("genre",
["genre"]),new ListColumn("length",["length"]),new ListColumn("rating",["rating"]),new ListColumn("plays",["plays"]),new ListColumn("added",["added"])];j.defaultResultsPerPage=100;j.resultsPerPageCookie=false;j.pagination=false;j.resultCountChanging=false;j.headerBackground=false;j.sortable=false;j.bankKey="request_actual_sounds_like";j=new TrackList(j);section.appendChild(tlCont=createSpan("track_list_request_actual_sounds_like","track_list"));j.generatePage(tlCont);j.setData(b[0].tracks,getExplorerLink);
section.appendChild(createDiv("","clr"));this.trackLists[this.trackLists.length]=j}if(b[0].sounds_like.length){sl=createDiv();for(j=0;j<b[0].sounds_like.length;j++)sl.innerHTML+=b[0].sounds_like[j];section.appendChild(sl);section.appendChild(createDiv("","clr"))}}k.appendChild(section=createDiv("request_posted","request_section"));section.innerHTML="<div><em>Posted:</em> "+agoString(b[0].time)+' ago by <a href="'+getProfileLink(b[0].user.id)+'">'+b[0].user.name+'</a></div><div class="avatar_small"><a href="'+
getProfileLink(b[0].user.id)+'"><img src="'+b[0].user.av+'"/></a></div>';k.appendChild(section=createDiv("request_replies","request_section"));section.innerHTML='<a href="'+getRequestLink("details",b[0].id)+'">Reply to this post</a> - Replies ('+b[0].replies.length+")";k.appendChild(createDiv("","clr"));f.appendChild(replies=createDiv("request_replies_section"));replies.appendChild(createElement("hr"));replies.appendChild(h=createH2());h.innerHTML='<span id="request_replies_count">'+b[0].replies.length+
"</span> Replies";replies.appendChild(createElement("hr"));replies.appendChild(c=createDiv("request_replies_container"));for(j=0;j<b[0].replies.length;j++){replyData=b[0].replies[j];c.appendChild(container=createDiv());this.generateReply(container,replyData,j==b[0].replies.length-1)}c.appendChild(createDiv("","clr"));replies.appendChild(reply=createDiv("request_reply_new"));reply.appendChild(createElement("hr"));reply.appendChild(createH2("Post your reply:"));if(!user.logged){span=createSpan("","",
createText("(you must "));span.appendChild(createA("","",currentHash,function(){login.show();return false},"","sign-in"));span.appendChild(createText(" to reply)"));reply.appendChild(span)}reply.appendChild(k=createDiv());k.innerHTML='<span>Title:</span><input type="text" id="new_reply_title"/>';reply.appendChild(k=createDiv());k.innerHTML='<span>Message:</span><textarea id="new_reply_message"/>';reply.appendChild(createA("new_reply_button","button_dual_gray",currentHash,function(){requestPage.submitReply();
return false},"","Post reply"));reply.appendChild(createDiv("","clr"));break;case "new":if(!(f=get("request_new_genres")))return;this.genres=n=b[0].genres;removeChildren(f);for(j=0;j<n.length;j++){k=createDiv();k.innerHTML='<input type="checkbox" id="request_new_genre_'+n[j].id+'" onfocus="this.blur();"/>'+n[j].name;f.appendChild(k)}f.appendChild(createDiv("","clr"));if(!(f=get("request_sounds_like")))return;b=b[0].embeds;k=createDiv("request_sounds_like_buttons");for(j=this.addedEmbeds=0;j<b.length;j++){k.appendChild(a=
createA("request_sounds_like_"+b[j].name,"button_dual_gray request_sounds_like_button",currentHash,function(){requestPage.addEmbed(this.details);return false}));a.details=b[j];a.appendChild(createImg("","",b[j].icon));a.appendChild(createDiv("","",createText("Embed from "+b[j].name)))}k.appendChild(a=createA("request_sounds_like_sa","button_dual_gray request_sounds_like_button",currentHash,function(){requestPage.addTracks();return false}));a.appendChild(createImg("","","images/icons/sa.png"));a.appendChild(createDiv("",
"",createText("Embed from SourceAudio")));k.appendChild(createDiv("","clr"));f.appendChild(k);break}};this.addTracks=function(){trackSelector=new TrackSelector(this);trackSelector.generatePage()};this.addEmbed=function(b){if(cont=get("request_sounds_like")){var f=createDiv("request_sounds_like_new_"+this.addedEmbeds,"request_sounds_like_new");f.appendChild(h3=createElement("h3","","",createDiv("","",createText("Embed a "+b.name+" clip"))));h3.appendChild(a=createA("","request_delete_embed",currentHash,
function(){this.container.removeChild(this.div);return false}));a.container=cont;a.div=f;h3.appendChild(createSpan("","clr"));f.appendChild(createSpan("","",createText("Enter the embed code here:")));f.appendChild(createDiv("","",ta=createElement("textarea","request_embed_code_"+this.addedEmbeds)));ta.embedType=b.type;f.appendChild(middle=createDiv());middle.appendChild(a=createA("","button_dual_gray request_sounds_like_preview_button",currentHash,function(){requestPage.previewEmbed(this);return false},
"","Preview"));a.details=b;middle.appendChild(createElement("small","","",createText("SourceAudio will resize your embeds to fit our format")));f.appendChild(right=createDiv());a.source=ta;a.preview=right;f.appendChild(createDiv("","clr"));cont.insertBefore(f,cont.childNodes[0]);this.addedEmbeds++}};this.previewEmbed=function(b){b.preview.innerHTML="";var f=b.source.value;if(f)if(url=this.extractEmbedUrl(f)){b.preview.innerHTML=b.details.embed_code.replace(/\$url/g,url);console.log(b.details.embed_code);
console.log(url)}else b.preview.innerHTML="Embed code invalid";else b.preview.innerHTML="Embed code invalid"};this.extractEmbedUrl=function(b){var f=b.indexOf("http:");if(f>-1)return b.substring(f,b.indexOf('"',f+1));return""};this.generateReply=function(b,f,j){b.className="request_reply";b.appendChild(createH2(f.title));b.appendChild(section=createDiv("request_posted","request_section"));section.innerHTML='<div><em>Posted:</em> some time ago by <a href="'+getProfileLink(f.user.id)+'">'+f.user.name+
'</a></div><div class="avatar_small"><a href="'+getProfileLink(f.user.id)+'"><img src="'+f.user.av+'"/></a></div>';b.appendChild(section=createDiv("request_message","request_section"));section.innerHTML="<em>Message:</em> "+f.message;if(f.tracks.length&&f.tracks.length>1){b.appendChild(section=createDiv("request_suggestions_"+f.id,"request_section"));section.innerHTML="<em>Sounds Like:</em>";var k=new TrackListConfig;k.columnList=[new ListColumn("play",["play","tag"]),new ListColumn("title",["title"]),
new ListColumn("music rep",["avatar","rep"]),new ListColumn("artist",["artist"]),new ListColumn("album",["album"]),new ListColumn("genre",["genre"]),new ListColumn("length",["length"]),new ListColumn("rating",["rating"]),new ListColumn("plays",["plays"]),new ListColumn("added",["added"])];k.defaultResultsPerPage=f.tracks.length;k.resultsPerPageCookie=false;k.pagination=false;k.resultCountChanging=false;k.headerBackground=false;k.sortable=false;k.bankKey="reply_suggestions_"+f.id;k=new TrackList(k);
section.appendChild(tlCont=createSpan("track_list_reply_suggestions_"+f.id,"track_list"));k.generatePage(tlCont);k.setData(f.tracks,getExplorerLink);section.appendChild(createDiv("","clr"));this.trackLists[this.trackLists.length]=k}j||b.appendChild(createElement("hr"));return b};this.submitRequest=function(){var b=get("request_new_title_input"),f=get("request_new_description_input"),j=get("request_new_tags_input"),k=get("request_new_pay_input");if(!(!b||!f||!j||!k))if(user.logged){titleText=trim(b.value);
descriptionText=trim(f.value);tagsText=trim(j.value);payText=trim(k.value);if(titleText)if(!descriptionText||descriptionText==f.def){alertManager.alert(createText("Please enter a description"));f.focus()}else{if(payText==k.def)payText="";b="title="+escape(titleText)+"&description="+escape(descriptionText)+"&tags="+escape(tagsText)+"&pay="+escape(payText);for(f=0;f<this.genres.length;f++)if((gen=get("request_new_genre_"+this.genres[f].id))&&gen.checked)b+="&genres[]="+this.genres[f].id;for(f=0;f<this.addedEmbeds;f++)if(ec=
get("request_embed_code_"+f)){if(!(url=this.extractEmbedUrl(ec.value))){alertManager.alert(createText("Embed code doesn't appear valid. Please reenter or remove."));ec.focus();return}b+="&embeds[]="+ec.embedType+escape(url)}ajax(b,"requestPage.submitRequestResponse","POST","p=requests&pageType=new");get("request_new_submit_button").style.display="none"}else{alertManager.alert(createText("Please enter a title"));b.focus()}}else alertManager.alert(createText("You must be logged in to post requests"))};
this.submitRequestResponse=function(b){if(b[0].result=="success")setHash("requests");else{alertManager.alert(createText(b[0].result));if(button=get("request_new_submit_button"))button.style.display=""}};this.submitReply=function(){var b=get("new_reply_message"),f=get("new_reply_title");if(b&&f)if(user.logged){messageText=trim(b.value);titleText=trim(f.value);if(messageText)if(titleText){ajax("message="+escape(messageText)+"&title="+escape(titleText),"requestPage.submitReplyResponse","POST","p=requests&pageType=reply&id="+
this.requestId);get("new_reply_button").style.display="none"}else{alertManager.alert(createText("Please enter a title"));f.focus()}else{alertManager.alert(createText("Please enter a message"));b.focus()}}else alertManager.alert(createText("You must be logged in to post replies"))};this.submitReplyResponse=function(b){if(b[0].result=="success"){c=get("request_replies_container");c.insertBefore(container=createDiv(),c.childNodes[0]);this.generateReply(container,b[0].reply);get("request_replies_section").removeChild(get("request_reply_new"));
count=get("request_replies_count");count.innerHTML=Number(count.innerHTML)+1}else{alertManager.alert(createText(b[0].result));if(button=get("new_reply_button"))button.style.display=""}};this.setResultsPerPage=function(b){this.resultsPerPage=b;currentHash=""}}var requestPage=new RequestPage;function SignupPage(){this.generatePage=function(b){if(user.logged)setPage(config.home);else{var f=config.id?'<div class="column left"><img src="/images/signup/icons_white.jpg"/><p>Search a massive library of music and sound effects that grows daily</p><p>High quality streaming playback</p><p>Immediate track downloads</p><p>A place to store all your tracks &amp; favorites</p><p>User to user private messaging (coming soon)</p><p>Unlimited access, 24 hours a day</p></div>':'<div class="column left"><img src="/images/signup/icons.jpg"/><p>Search a massive library of music and sound effects that grows daily</p><p>Free uploads for all music reps and artists</p><p>High quality streaming playback</p><p>Immediate track downloads</p><p>A place to store all your tracks &amp; favorites</p><p>Subscriptions to your favorite music reps and artists</p><p>User to user private messaging (coming soon)</p><p>Connect with music reps, artists, editors and many more</p><p>Instant music licensing (coming soon)</p><p>Unlimited access, 24 hours a day</p></div>',
j=paramsToVars(b);if(j.confirmation){$j("#body").html('<div id="signup_container" class="max_width"><h2 class="column left">What do I get with my free account?</h2><h2 class="column right">'+(j.confirmation==0||j.confirmation[0]=="0"?"Cancelling":"Confirming")+" your registration</h2>"+f+'<div class="column right"><div id="result"></div></div><div class="clr"></div>');showLoader($j("#signup_container div.column.right #result")[0],"","Processing...");ajax("p=register_confirmation&"+b,"signupPage.confirmResponse")}else{$j("#body").html('<div id="signup_container" class="max_width"><h2 class="column left">What do I get with my free account?</h2><h2 class="column right">Complete this simple form to sign up!*</h2>'+
f+'<div class="column right"><div class="section" id="username" maxlength="32"><h3>Username</h3><input type="text"/><small>Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-\' or "</small></div><div class="section" id="password"><div class="split"><h3>Password</h3><input type="password"/></div><div class="split"><h3>Password again</h3><input type="password"/></div><div class="clr"></div><small>Minimum of 6 characters. Must contain at least 1 letter and 1 number</small></div><div class="section" id="email"><h3>Email address</h3><input type="text"/><small>You will recieve a signup verification email</small></div><div id="extra_fields"></div><div class="section" id="verification"><h3>Verification</h3><p>Please solve the following problem:</p><h4>22 + 20 = </h4><input type="text"/><div class="clr"></div><small></small></div><div class="section" id="terms"><input type="checkbox"/><span>I accept and agree to the <a href="javascript:;" id="terms_a">Terms and Conditions</a></span><small></small></div><div class="section"><div id="button_container"></div><small id="star_def">*All fields are required to sign up</small></div><small class="error" id="errors"></small></div><div class="clr"></div>');
$j("#signup_container #button_container").append(createButton("Sign up!","","","javascript:;",function(){signupPage.submitForm()}));$j("#terms_a").click(function(){showDocument("terms")});if(config.registrationFields.length){b="";for(f=0;f<config.registrationFields.length;f++){j=config.registrationFields[f];b+='<div class="section" id="extra_'+j.id+'"><h3>'+j.name+(j.required?"*":"")+"</h3>";switch(j.type){case "text":b+='<input type="text"/>';break;case "textarea":b+="<textarea></textarea>";break;
case "forced":b+='<span class="forced">'+j.defaultValue+"</span>";break;case "phone":b+='<input type="text"/>';break}b+="<small></small></div>"}$j("#extra_fields").html(b);$j("#star_def").html("*required to sign up");$j("#username h3, #password h3, #email h3, #verification h3").append("*");$j("h2.column.right").html("Complete this simple form to sign up!")}}currentPage="signup"}};this.submitForm=function(){try{var b=trim($j("#signup_container #username input")[0].value),f=trim($j("#signup_container #password input")[0].value),
j=trim($j("#signup_container #password input")[1].value),k=trim($j("#signup_container #email input")[0].value),n=trim($j("#signup_container #verification input")[0].value),p=$j("#signup_container #terms input")[0].checked}catch(q){console.log("error submiting signup "+q);return}var r=false;if(b.length<6||b.length>32){$j("#signup_container #username small").addClass("error").html("Username must be at least 6 characters and at most 32");r=true}else if(b.match(/^[0-9a-zA-Z ,._\-'"]+$/))$j("#signup_container #username small").removeClass("error").html("Minimum of 6 characters, maximum of 15. May only contain alphanumeric chars, spaces and ,._-' or \"");
else{$j("#signup_container #username small").addClass("error").html("May only contain alphanumeric chars, spaces and ,._-' or \"");r=true}if(f.length<6){$j("#signup_container #password small").addClass("error").html("Password must be at least 6 characters");r=true}else if(f!=j){$j("#signup_container #password small").addClass("error").html("Passwords do not match");r=true}else if(f.match(/[0-9]/)==null||f.match(/[a-zA-Z]/)==null){$j("#signup_container #password small").addClass("error").html("Password must contain at least 1 letter and 1 number");
r=true}else $j("#signup_container #password small").removeClass("error").html("Minimum of 6 characters. Must contain at least 1 letter and 1 number");if(isEmail(k))$j("#signup_container #email small").removeClass("error").html("You will recieve a signup verification email");else{$j("#signup_container #email small").addClass("error").html("Please enter a valid email");r=true}if(n)$j("#signup_container #verification small").removeClass("error").html("");else{$j("#signup_container #verification small").addClass("error").html("Please enter a verification code");
r=true}if(p)$j("#signup_container #terms small").removeClass("error").html("");else{$j("#signup_container #terms small").addClass("error").html("You must agree to the terms and conditions to make an account");r=true}j="";if(config.registrationFields.length)for(var u=0;u<config.registrationFields.length;u++){var v=config.registrationFields[u],w=$j("#extra_"+v.id),I;switch(v.type){case "text":case "phone":I=trim(w.find("input").val());break;case "textarea":I=trim(w.find("textarea").val());break;case "forced":continue}w=
w.find("small").removeClass("error").html("");if(v.required&&!I){w.addClass("error").html("This field is required");r=true}else j+="&extras["+v.id+"]="+escape(I)}if(!r){ajax("email="+escape(k)+"&username="+escape(b)+"&password="+escape(f)+"&agreement="+(p?1:0)+"&verification="+escape(n)+j,"signupPage.handleResult","POST","p=registration");b=createDiv("cover");$j("#signup_container")[0].appendChild(b);showLoader(b,"","Submitting...")}};this.handleResult=function(b){b=b[0];$j("#signup_container")[0].removeChild($j("#signup_container #cover")[0]);
if(b.result=="error"){if(!b.field)b.field="errors";$j("#signup_container #"+b.field+" small").addClass("error").html(b.reason)}else{$j("#signup_container h2.column.right").html("Sign up received!");$j("#signup_container div.column.right").html(b.reason)}};this.confirmResponse=function(b){b=b[0];$j("#signup_container div.column.right").html(b.reason);b.result!="error"&&b.showLogin&&glamdring.login("&new=1",insecure)}}var signupPage=new SignupPage;function forgotPassword(){var b=createDiv("forgot_password_container");b.innerHTML='<h2>Forgot Password</h2><a href="javascript:;" id="close"></a><div id="input_container"><h4>Email:</h4><input type="text" value="'+escape($j("#e").val())+'" id="forgot_email"/><p>Enter the email address you used to sign up in the box above and we\'ll send you an email with a new password to that address.</p></div>';var f=new FocusBox(b);f.show();$j("#close",b).click(function(){$j(this).data("fb").hide()}).data("fb",
f);$j("#input_container",b).append(createButton("Email Password","forgot_submit","","javascript:;",function(){forgotSubmit()}));f.resize();f.div.css({top:Math.floor((getDisplayHeight()-f.div.outerHeight())/2)+"px",left:Math.floor((getDisplayWidth()-f.div.outerWidth())/2)+"px"})}
function forgotSubmit(){var b=$j("#forgot_email").val();if(isEmail(b)){$j("#forgot_password_container p").html("Submitting...").removeClass("error");ajax("e="+escape(b),"forgotResponse","POST","p=forgot_password")}else $j("#forgot_password_container p").html("Please enter a valid email address!").addClass("error")}
function forgotResponse(b){b[0].result=="success"?$j("#forgot_password_container p").html(b[0].message).removeClass("error"):$j("#forgot_password_container p").html(b[0].message).addClass("error")};function Glamdring(){this.cont=$j("#glamdring");this.ret=function(){document.location=insecure+"/#"+getHash()};this.login=function(b,f){f||(f=escape(document.location));document.location="https://"+config.secureDomain+"/login.php?forward="+f+(b?"&"+b:"")};this.init=function(){this.cont.append(div=$j('<div class="max_width"></div>'));if(config.secure){div.html((config.linkBack?'<a id="link_back" href="'+config.linkBack+'">[return to '+config.name+" home]</a>":"")+'<a href="'+insecure+'" id="return">[back to Normal Mode]</a><div id="notice">You\'re using Secure Mode. All information is being encrypted. <a href="javascript:;">[more]</a></div>');
$j("#return",div).click(function(){glamdring.ret();return false});$j("#notice a",div).click(function(){help.showSecureHelp("",true)})}else config.linkBack&&div.html('<a id="link_back" href="'+config.linkBack+'">[return to '+config.name+" home]</a>")};this.init()}var glamdring;function BatchTracker(){this.div=null;this.batches=[];this.setBatches=function(b){if(this.haveBatchesChanged(b)){if(b.length){for(var f=this.div.find("#dots").html("").removeClass("count-5").removeClass("count-4"),j,k=0;k<b.length;k++){var n=b[k],p=n.status,q=p=="queued"?"Queued for bundling":p=="cached"?"Ready for download!":"Currently bundling";f.append(j=$j('<div class="dot '+p+'"></div>'));j.attr("title",n.display+" - "+q);p=="cached"&&j.click(function(){var r=$j(this).data("details");new BatchDownloader([r]);
ajax("p=download_notifications&action=clicked&key="+r.key)}).data("details",n)}if(b.length>4)f.addClass("count-5");else b.length>3&&f.addClass("count-4");this.div.find("#title").html("Downloads:")}else{this.div.find("#dots").html("");this.div.find("#title").html("Downloads")}this.batches=b;currentPage=="profile"&&profilePage.page=="downloads"&&reloadPage()}};this.haveBatchesChanged=function(b){if(b.length!=this.batches.length)return true;for(var f=0;f<b.length;f++){if(b[f].key!=this.batches[f].key)return true;
if(b[f].status!=this.batches[f].status)return true}return false};this.init=function(){this.div=$j('<div id="tracker_module">'+(user.logged?'<a href="'+getProfileLink(user.userData.id,"downloads")+'" id="title">Downloads</a>':'<span id="title">Downloads</span>')+'<div id="dots"></div></div>');var b=40;if(user.logged)b+=100-$j("#username").outerWidth();else b=160;$j("#dots",this.div).css("width",b+"px")};this.init()}var batchTracker;
function Options(){this.div=null;this.swappingAllowed=true;this.hideActual=function(){try{this.div.remove()}catch(b){}};this.allowSwap=function(){this.swappingAllowed=true};this.swap=function(b){if(this.swappingAllowed){this.swappingAllowed=false;this.div||this.init();if(get("options_module")){$j("#shadowfax #options_module").fadeOut(500,function(){options.allowSwap();options.hideActual()});$j("#shadowfax #options_link").removeClass("expanded")}else{this.div.css("left",getPosition(b).x-getPosition(get("login_container")).x+
"px");$j("#shadowfax .max_width").append(this.div);$j("#shadowfax #options_module").hide().fadeIn(500,function(){options.allowSwap()});$j("#shadowfax #options_link").addClass("expanded")}this.initActions();this.setOptions()}};this.setOptions=function(){$j("#options_module #options").html('<div class="option"><h4>Default Download Type:</h4><div id="download_types"><input type="radio" name="download_type" id="download_type_mp3" value="mp3"/><label for="download_type_mp3"><img src="images/icons/mp3.png"/></label><input type="radio" name="download_type" id="download_type_wav" value="wav"/><label for="download_type_wav"><img src="images/icons/wav.png"/></label><input type="radio" name="download_type" id="download_type_aiff" value="aiff"/><label for="download_type_aiff"><img src="images/icons/aiff.png"/></label><div class="clr"></div></div><sub>We\'ll try to give you your preferred format but will revert to mp3 if it\'s not available.</sub></div><div class="option"><h4>Alternate Versions of Tracks:</h4><div id="collapse_types" class="text_options"><input type="radio" name="collapse_type" id="collapse_type_1" value="1"/><label for="collapse_type_1">Nested listings</label><input type="radio" name="collapse_type" id="collapse_type_0" value="0"/><label for="collapse_type_0">Keep versions separated</label><div class="clr"></div></div></div><div class="option"><h4>Track List View:</h4><div id="track_list_views" class="text_options"><input type="radio" name="track_list_view" id="track_list_view_list" value="list"/><label for="track_list_view_list">Simple</label><input type="radio" name="track_list_view" id="track_list_view_block" value="block"/><label for="track_list_view_block">Detailed (where available)</label><div class="clr"></div></div></div><div class="option"><h4>Catalog List View:</h4><div id="catalog_list_views" class="text_options"><input type="radio" name="catalog_list_view" id="catalog_list_view_list" value="list"/><label for="catalog_list_view_list">Simple</label><input type="radio" name="catalog_list_view" id="catalog_list_view_block" value="block"/><label for="catalog_list_view_block">Detailed (where available)</label><div class="clr"></div></div></div><div class="option"><h4>Label List View:</h4><div id="label_list_views" class="text_options"><input type="radio" name="label_list_view" id="label_list_view_list" value="list"/><label for="label_list_view_list">Simple</label><input type="radio" name="label_list_view" id="label_list_view_block" value="block"/><label for="label_list_view_block">Detailed (where available)</label><div class="clr"></div></div></div><div class="option"><h4>Album List View:</h4><div id="album_list_views" class="text_options"><input type="radio" name="album_list_view" id="album_list_view_list" value="list"/><label for="album_list_view_list">Simple</label><input type="radio" name="album_list_view" id="album_list_view_block" value="block"/><label for="album_list_view_block">Detailed (where available)</label><div class="clr"></div></div></div><div class="option"><h4>Artist List View:</h4><div id="artist_list_views" class="text_options"><input type="radio" name="artist_list_view" id="artist_list_view_list" value="list"/><label for="artist_list_view_list">Simple</label><input type="radio" name="artist_list_view" id="artist_list_view_block" value="block"/><label for="artist_list_view_block">Detailed (where available)</label><div class="clr"></div></div></div>');
$j("#download_types input[type=radio]").click(function(){this.blur();user.setOption("default_download_format",this.value)});$j("#download_type_"+user.getOption("default_download_format")).attr("checked","checked");$j("#collapse_types input[type=radio]").click(function(){this.blur();user.setOption("track_list_collapse",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#collapse_type_"+user.getOption("track_list_collapse")).attr("checked","checked");$j("#track_list_views input[type=radio]").click(function(){this.blur();
user.setOption("track_list_view",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#track_list_view_"+user.getOption("track_list_view")).attr("checked","checked");$j("#collapse_type_"+user.getOption("catalog_list_collapse")).attr("checked","checked");$j("#catalog_list_views input[type=radio]").click(function(){this.blur();user.setOption("catalog_list_view",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#catalog_list_view_"+user.getOption("catalog_list_view")).attr("checked",
"checked");$j("#collapse_type_"+user.getOption("label_list_collapse")).attr("checked","checked");$j("#label_list_views input[type=radio]").click(function(){this.blur();user.setOption("label_list_view",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#label_list_view_"+user.getOption("label_list_view")).attr("checked","checked");$j("#collapse_type_"+user.getOption("album_list_collapse")).attr("checked","checked");$j("#album_list_views input[type=radio]").click(function(){this.blur();
user.setOption("album_list_view",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#album_list_view_"+user.getOption("album_list_view")).attr("checked","checked");$j("#collapse_type_"+user.getOption("artist_list_collapse")).attr("checked","checked");$j("#artist_list_views input[type=radio]").click(function(){this.blur();user.setOption("artist_list_view",this.value);requestCache.clear();setTimeout("reloadPage();",200)});$j("#artist_list_view_"+user.getOption("artist_list_view")).attr("checked",
"checked")};this.hide=function(){get("options_module")&&this.swap()};this.init=function(){this.div=$j('<div id="options_module"><div id="inner"><a id="close" href="'+getHomeLink()+'"></a><div id="options"></div></div></div>')};this.initActions=function(){$j("#close",this.div).click(function(){options.swap();return false})}}var options=new Options;
function Shadowfax(){this.cont=get("shadowfax");this.expandedButton=this.expanded=null;this.showTrack=function(b){this.track=b=trackBank.find(b);for(var f=get("inner",this.expanded),j='<div id="avatar_container"><a href="'+getCatalogLink(b.catalog.id)+'"><img src="'+(config.showLabels?b.label.image:b.catalog.image)+'"/></a></div><div id="data_container"><div><h4 style="font-size: 11px">Track Title:</h4><span><a href="'+getTrackLink(b.catalog.id,b.id)+'">'+b.title+"</a></span></div>"+(config.showLabels&&
config.singleCatalog?'<div><h4 style="font-size: 11px">Label:</h4><span><a href="'+getLabelLink(b.label.id)+'">'+b.label.name+"</a></span></div>":'<div><h4 style="font-size: 11px">Catalog:</h4><span><a href="'+getCatalogLink(b.catalog.id)+'">'+b.catalog.name+"</a></span></div>")+'<div><h4 style="font-size: 11px">Artist:</h4><span>'+((link=getArtistLink(b.artist.id,b.catalog.id))?'<a href="'+link+'">'+b.artist.name+"</a>":b.artist.name)+'</span></div><div><h4 style="font-size: 11px">Album:</h4><span>'+
((link=getAlbumLink(b.album.id,b.catalog.id))?'<a href="'+link+'">'+b.album.name+"</a>":b.album.name)+"</span></div>",k=false,n=0;n<b.custom_fields.length;n++){var p=b.custom_fields[n];if(p.name=="Genre"){j+='<div><h4 style="font-size: 11px">Genre:</h4><span><a href="'+getCustomLink(p.id,p.value,p.value_id)+'">'+p.value+"</a></span></div>";k=true;break}}k||(j+='<div><h4 style="font-size: 11px">Genre:</h4><span><a href="'+getGenreLink(b.genre.id)+'">'+b.genre.name+"</a></span></div>");j+='</div><div id="link_container"></div>';
f.innerHTML=j;$j(f).find("#link_container").append(generateDownloadButton("track",b.id)).append(generateEmailButton("track",b));f=get("outer",this.expanded);f.innerHTML='<div id="close" class="faux_button"></div><div id="data_container"><div>Plays: '+b.plays+"</div><div>Downloaded: "+b.downloads+"</div><div>Projects: "+b.favorites+"</div><div>Rating: "+Math.floor(b.rating.rating*5)+"/5</div><div>Added: "+b.date+"</div></div>";get("close",f).onclick=function(){shadowfax.swapExpanded()};this.expandedButton.onclick=
function(){shadowfax.swapExpanded()};this.expandedButton.className="active faux_button";if(!this.expanded.style.display){this.expanded.style.display="none";if(user.getOption("seen_player_notice")=="1")return;b=createDiv();b.innerHTML='To get more information about the current track, click on the <img src="/images/buttons/info_active.png"/> below.';alertManager.alert(b);user.setOption("seen_player_notice",1)}projector.inQuickProjectMode()&&this.enableFastTagging()};this.enableFastTagging=function(){if(this.track){$j("#track_information #link_container .quick_project_button").remove();
$j("#track_information #link_container").append(generateQuickProjectTrackButton(this.track.id))}};this.disableFastTagging=function(){$j("#track_information #link_container .quick_project_button").remove()};this.swappingAllowed=true;this.hideActual=function(){try{$j("#shadowfax .max_width")[0].removeChild(this.div)}catch(b){}};this.allowSwap=function(){this.swappingAllowed=true};this.swapExpanded=function(){if(this.swappingAllowed){this.swappingAllowed=false;if(this.expanded.style.display=="block"){$j("#shadowfax #track_information").fadeOut(500,
function(){shadowfax.allowSwap()});this.expandedButton.className="active faux_button"}else{$j("#shadowfax #track_information").fadeIn(500,function(){shadowfax.allowSwap()});this.expandedButton.className="inactive faux_button"}}};this.processLogin=function(){var b=get("login_container",this.cont);b.innerHTML='<div id="user_information"><a href="'+getProfileLink(user.userData.id,"home")+'"><img src="'+user.userData.av+'"/></a><a href="'+getProfileLink(user.userData.id,"home")+'" id="username">'+user.userData.username+
'</a><span class="spacer">|</span><a href="'+getDefaultLink()+'" id="favorites_link">Projects</a><span class="spacer">|</span><a href="'+getDefaultLink()+'" id="options_link" class="collapsed">Options</a><span class="spacer">|</span></div><a href="https://'+config.secureDomain+"/logout.php?forward="+escape(config.secure?insecure:document.location)+'" id="sign_out" class="button_link" title="Sign out"></a><a href="'+getProfileLink(user.userData.id,"dashboard")+'" id="dashboard_link" class="button_link" title="Go to your dashboard"></a><a href="javascript:;" id="secure_link" class="button_link" title="Switch to '+
(config.secure?"insecure":"secure")+' mode"></a>';batchTracker=new BatchTracker;$j("#user_information").append(batchTracker.div);get("favorites_link",b).onclick=function(){if($j("#projector").length)projector.showSplash();else if(user.projects.length){projector.showSplashDelayed();setHash(getProjectLink(user.projects[0].id))}else{projector.showSplashDelayed();setHash("explorer")}this.blur();return false};get("options_link",b).onclick=function(){options.swap(this);this.blur();return false};get("secure_link",
b).onclick=function(){var f=config.secure?"http://"+config.insecureDomain+"/#"+currentHash:"https://"+config.secureDomain+"/"+config.secureString+"#"+currentHash;if(user.getOption("seen_secure_notice")!="1"){help.showSecureHelp(f.replace("https://"+config.secureDomain+"/"+config.secureString,""));user.setOption("seen_secure_notice",1)}else document.location=f};$j("#sign_out").click(function(){document.location="https://"+config.secureDomain+"/logout.php?forward="+escape(config.secure?insecure:document.location);
return false})};this.processLogout=function(){get("login_container",this.cont).innerHTML='<div id="login_options"><a href="https://'+config.secureDomain+"/login.php?forward="+escape(document.location)+'" id="login_link">[log in]</a> or <a href="'+getSignupLink()+'">[sign up]</a> for access to all features!</div><div id="user_information"><span class="spacer">|</span></div>';batchTracker=new BatchTracker;$j("#user_information").append(batchTracker.div);$j("#login_link").click(function(){config.secure||
cookies.remove("sa_user_normal");document.location="https://"+config.secureDomain+"/login.php?forward="+escape(document.location);return false})};this.init=function(){this.cont.appendChild(div=createDiv("","max_width"));div.innerHTML='<div id="login_container"></div><div id="player_expanded"></div><div id="player_container"></div><div id="track_information"><div id="inner"></div><div id="outer"></div></div>';var b=new SWFObject("flash/Player-1.09"+config.playerVersion+".swf","SourceAudioPlayer","475",
"24","9","#454746",true);b.addParam("quality","high");b.addParam("AllowScriptAccess","always");b.addParam("wmode","transparent");b.write("player_container");this.expanded=get("track_information",this.cont);this.expandedButton=get("player_expanded",this.cont);if(user.logged&&shadowfaxLogin){this.processLogin();shadowfaxLogin=false}else this.processLogout()};this.init()}var shadowfax;
