var Players={apis:[],players:[],soundCloudClientId:"a51cb7cb263090a803675b816aca0e0e",numPlayers:0,soundcloudSrc:"//connect.soundcloud.com/sdk.js",soundManagerSrc:"/js/lib/soundmanager2-jsmin.js",youtubeSrc:"//www.youtube.com/iframe_api",apiUrl:$("#api").val()||"//api.residentadvisor.net/",mobile:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4)),soundCloudInitialised:!1,Init:function(){Players.setupPlayers(!0);Players.soundCloudInitialised=!Players.mobile},InitOnLoadMore:function(){Players.setupPlayers(!1);StickyAd.BindStickyAdActions("#sticky-mpu-container")},PauseAll:function(){for(var n=0;n<this.players.length;n++)this.players[n].Pause()},setupPlayers:function(n){var t=$(".player"),i;if(Players.mobile&&(n||!Players.soundCloudInitialised)&&$(".play").addClass("preload"),t.length>0){for(n&&(Players.addScript(Players.soundcloudSrc),Players.addScript(Players.youtubeSrc),Players.addScript(Players.soundManagerSrc)),i=this.numPlayers;i<t.length;i++)Players.setupPlayer($(t[i]));this.numPlayers=t.length}},setupPlayer:function(n){Players.removePlayerFromArray(n);n.find(".play").one("click",function(t){var i,r;t.preventDefault();i=n.data("trackid");typeof i=="undefined"?(r={TrackSourceType:"mp3",FileName:n.data("filename")},Players.setupPlayerCallback(n,r)):$.ajax({type:"GET",dataType:"json",url:Players.apiUrl+"/v1/player/"+i.toString().replace("tr-","")}).done(function(t){t?Players.setupPlayerCallback(n,t):(n.find(".play").addClass("error"),n.find("[data-error]").removeClass("hidden"))}).fail(function(){n.find(".play").addClass("error");n.find("[data-error]").removeClass("hidden")})})},setupPlayerCallback:function(n,t){var i=t.TrackSourceType.toLowerCase(),r=t.TrackSourceId;i!=null&&i!=""&&($.inArray(i,Players.apis)==-1&&(i==="mp3"?Players.setupMP3API():i==="soundcloud"?Players.setupSoundCloudAPI():i==="youtube"&&Players.setupYouTubeAPI(),Players.apis.push(i)),Players.players.push(SingleTrackPlayer(n,i,r,t.FileName,function(n){Players.removePlayerFromArray(n)})))},setupMP3API:function(){soundManager.setup({debugMode:!1})},setupSoundCloudAPI:function(){SC.initialize({client_id:Players.soundCloudClientId})},setupYouTubeAPI:function(){},addScript:function(n){var i=document.createElement("script"),t;i.src=n;t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(i,t)},removePlayerFromArray:function(n){Players.players=$.grep(Players.players,function(t){return typeof t.Player!="undefined"&&t.Player===n},!0)}},SingleTrackPlayer;$(document).ready(function(){Players.Init()});SingleTrackPlayer=function(n,t,i,r,u){function b(n){return n<10?"0"+n.toString():n.toString()}var e,l,a,v=!1,s=n.data("trackid"),h=n.find("[data-trackprovider]"),p=n.find("[data-placeholder]"),y=n.find("[data-role=track-provider]"),w=$(".audio-axis"),c=(0|Math.random()*9e6).toString(36),o,f;return t==="soundcloud"?(e=SoundCloudApiWrapper(i),h.find("a").text("via SoundCloud")):t==="youtube"?(n.find(".controls").append('<div id="youtube'+c+'" class="youtube"><\/div>'),e=YouTubeApiWrapper(s,i,c),h.find("a").text("via YouTube")):t==="mp3"&&(o=$("#streaming-service").val(),o=o||"https://str1.residentadvisor.net/service/",e=MP3ApiWrapper(o,i,r,c)),f={Player:n,Type:t,Init:function(){Players.PauseAll();e.Init(f.onPlayerReady,function(){f.Destruct();Players.setupPlayer(n)})},Pause:function(){e.Pause();f.showPlayButton()},onPlayerReady:function(){e.Play().done(function(i){if(y.attr("href",i.permalink_url),w.hasClass("hidden")&&i.duration){var r=i.duration/1e3;$("#audio-length").text(Math.floor(r/60)+":"+b(Math.round(r%60,2)));$(".audio-axis").removeClass("hidden")}i.downloadable&&($("#download-link").removeClass("hidden"),$("#download-link > a").attr("href",i.download_url+"?client_id=a51cb7cb263090a803675b816aca0e0e"));f.updateCounter(0);f.startCounter();f.startProgressBar();f.bindEventsForProgressBar();f.bindEventsForIndividualTracks();n.find(".play").removeClass("preload");t!="soundcloud"||Players.soundCloudInitialised?t=="youtube"&&Players.mobile?setTimeout(e.Pause,200):f.showPauseButton():(Players.soundCloudInitialised=!0,$(".player[data-provider=SoundCloud]").find(".play").removeClass("preload"),setTimeout(e.Pause,200))}).fail(function(){f.onError();u(f.Player)})},updateCounter:function(n){typeof s!="undefined"&&$.ajax({type:"GET",url:"/play-count.aspx",data:{track:s.toString().replace("tr-",""),play:n}})},bindEventsForIndividualTracks:function(){n.find(".play").on("click",function(){var n=e.IsPlaying();Players.PauseAll();e.HasStarted()?n||(e.TogglePause(),f.showPauseButton()):n||(e.Play(),f.showPauseButton(),f.startCounter(),f.startProgressBar(),f.bindEventsForProgressBar())});t=="youtube"&&n.find(".showvideo").length&&(n.find(".showvideo").unbind("click"),n.find(".showvideo").bind("click",function(t){t.preventDefault();n.find(".youtube").is(":visible")?n.find(".youtube").slideUp(200):n.find(".youtube").slideDown(200)}))},startCounter:function(){f.stopCounter();a=setTimeout(function(){var n=Math.floor(e.GetPosition()/e.GetDuration()*100);n>=33&&!v&&(f.updateCounter(33),v=!0);f.startCounter()},5e3)},stopCounter:function(){clearTimeout(a)},startProgressBar:function(){f.stopProgressBar();l=setTimeout(function(){var t=n.find(".progressbar"),i=e.GetPosition()/e.GetDuration()*100,r;t.find(".position").width(i+"%");t.find(".marker").css("left",i+"%");t.find(".marker").show();r=e.GetBuffered()*100;t.find(".buffer").width(r+"%");f.updatePlayTime();f.startProgressBar()},500)},updatePlayTime:function(){var n=$("#audio-position");n.length>0&&$("#audio-position").text(f.millisToMinutesAndSeconds(e.GetPosition()))},stopProgressBar:function(){clearTimeout(l)},bindEventsForProgressBar:function(){var t=n.find(".progressbar");t.mousedown(function(){f.stopCounter();f.stopProgressBar();$("html").unbind("mousemove");$("html").unbind("mouseup");$("html").mousemove(function(n){var i=n.pageX-t.offset().left;i<=t.width()&&i>=0&&(t.find(".position").width(i+"px"),t.find(".marker").css("left",i+"px"))});$("html").mouseup(function(n){var i,r,u,o;$("html").unbind("mousemove");$("html").unbind("mouseup");i=n.pageX-t.offset().left;r=0;i<=t.width()&&i>=0?(u=i/t.width()*100,o=e.GetDuration(),r=o/100*u):i>t.width()?(i=t.width(),r=e.GetDuration()):i<0&&(i=0);t.find(".position").width(i+"px");t.find(".marker").css("left",i+"px");e.SetPosition(r);i<t.width()&&i>=0&&(f.startCounter(),f.startProgressBar())})})},removeEventsForProgressBar:function(){n.find(".progressbar").unbind("mousedown");$("html").unbind("mousemove");$("html").unbind("mouseup")},showPauseButton:function(){h.removeClass("hidden");p.addClass("hidden");n.find(".play").addClass("paused")},showPlayButton:function(){n.find(".play").removeClass("paused")},onError:function(){f.Destruct();y.attr("href",null);n.find(".play").addClass("error");n.find("[data-error]").removeClass("hidden")},millisToMinutesAndSeconds:function(n){var i=Math.floor(n/6e4),t=(n%6e4/1e3).toFixed(0);return t==60&&(t=0,i+=1),i+":"+(t<10?"0":"")+t},Destruct:function(){n.find(".play").unbind("click");f.removeEventsForProgressBar();f.stopCounter();f.stopProgressBar();f.showPlayButton();n.find(".marker").hide();n.find(".position").width("0");n.find(".buffer").css("width","0");n.find(".marker").css("left","0");e.Destruct()}},f.Init(),f};SingleTrackPlayer.millisToMinutesAndSeconds=function(n){var i=Math.floor(n/6e4),t=(n%6e4/1e3).toFixed(0);return t==60&&(t=0,i+=1),i+":"+(t<10?"0":"")+t};var MP3ApiWrapper=function(n,t,i,r){var u,f,e;return{Init:function(o,s){soundManager.onready(function(){e=n+"streamer/fileexists";var h=$("#expiry").val();f=n+"streamer/play?raauthid=c9s78df784tndsf98cnertd9823sdv&expiry="+h;i&&(f+="&p="+i,e+="?p="+i);t&&(f+="&f="+t,e+="?f="+t);u=soundManager.createSound({url:f,id:"aSound"+r,multishot:!1,html5Only:!0,useHTML5Audio:!0,preferFlash:!1,onfinish:s});o()})},Play:function(){var n=$.Deferred();return $.get(e).done(function(t){t?(u.play(),n.resolve({permalink_url:"",downloadable:!1})):n.reject()}).fail(function(){n.reject()}),n.promise()},Pause:function(){u&&u.pause()},TogglePause:function(){u.togglePause()},SetPosition:function(n){u.setPosition(n)},GetPosition:function(){return u.position},GetDuration:function(){return u.duration},GetBuffered:function(){var n=u.bytesLoaded,t=u.bytesTotal;return n/t},HasStarted:function(){return u.playState>0},IsPlaying:function(){return u.playState>0&&!u.paused},Destruct:function(){soundManager.destroySound("aSound"+t)}}},SoundCloudApiWrapper=function(n){var i,t={PlayBeaconUrl:null,PauseBeaconUrl:null,StopBeaconUrl:null,CheckpointUrl:null,CheckpointTimeout:null,ClientId:"a51cb7cb263090a803675b816aca0e0e",Init:function(r,u){SC.whenStreamingReady(function(){i=SC.stream("/tracks/"+n,{onfinish:u});t.initializeBeacons();r()})},Play:function(){var n=$.Deferred();return $.get(i.url.replace("/stream","")).done(function(t){t.streamable?i.playState==0&&(i.play(),n.resolve(t)):n.reject()}).fail(function(){n.reject()}),n},Pause:function(){if(i){var n=t.IsPlaying();i.pause();n&&t.sendBeaconData(t.PauseBeaconUrl);clearTimeout(t.CheckpointTimeout)}},TogglePause:function(){var n=t.IsPlaying();i.togglePause();n||(t.sendBeaconData(t.PlayBeaconUrl),t.CheckpointTimeout=t.initializeCheckpointBeacon())},GetPosition:function(){return i.position},SetPosition:function(n){i.setPosition(n)},GetBuffered:function(){var n=i.bytesLoaded,t=i.bytesTotal;return n/t},GetDuration:function(){return i.duration},HasStarted:function(){return i.playState>0},IsPlaying:function(){return i.playState>0&&!i.paused},Destruct:function(){t.sendBeaconData(t.StopBeaconUrl);clearTimeout(t.CheckpointTimeout)},initializeBeacons:function(){$.getJSON("https://api-partners.soundcloud.com/tracks/soundcloud:tracks:"+n+"/play?client_id="+t.ClientId).done(function(n){t.PlayBeaconUrl=n.beacons.play;t.PauseBeaconUrl=n.beacons.pause;t.StopBeaconUrl=n.beacons.stop;t.CheckpointUrl=n.beacons.checkpoint;t.sendBeaconData(n.beacons.ctaClickOpen);t.sendBeaconData(n.beacons.play);t.CheckpointTimeout=t.initializeCheckpointBeacon()})},sendBeaconData:function(n){var i=new Date,r=i.getTime();n=n+"&ts="+r+"&client_id="+t.ClientId;$.get(n)},initializeCheckpointBeacon:function(){return setTimeout(t.sendCheckpointBeacon,3e4)},sendCheckpointBeacon:function(){t.IsPlaying()&&(t.sendBeaconData(t.CheckpointUrl),t.CheckpointTimeout=t.initializeCheckpointBeacon())}};return t},YouTubeApiWrapper=function(n,t,i){var r,u,f;return{Init:function(n,e){u=$.Deferred();r=new YT.Player("youtube"+i,{width:"474",videoId:t,playerVars:{controls:0,showinfo:0,autohide:0,playsinline:1},events:{onReady:function(){n();f=!0},onStateChange:function(){var n=r.getPlayerState(),t,i;n==YT.PlayerState.ENDED&&(f=!1,e());n==YT.PlayerState.BUFFERING&&(t=r.getVideoUrl(),i=r.getDuration()*1e3,u.resolve({permalink_url:t,duration:i}))},onError:function(){u.reject()}}})},Play:function(){return r.setVolume(100),r.playVideo(),u},Pause:function(){f&&r.pauseVideo()},TogglePause:function(){r.getPlayerState()==YT.PlayerState.PAUSED?r.playVideo():r.pauseVideo()},GetPosition:function(){return r.getCurrentTime()},SetPosition:function(n){r.seekTo(n,!0)},GetBuffered:function(){return r.getVideoLoadedFraction()},GetDuration:function(){return r.getDuration()},HasStarted:function(){return r.getPlayerState()!=YT.PlayerState.CUED&&r.getPlayerState()!=YT.PlayerState.UNSTARTED&&r.getPlayerState()!=YT.PlayerState.BUFFERING},IsPlaying:function(){return r.getPlayerState()==YT.PlayerState.PLAYING},Destruct:function(){r.destroy();$("#youtube"+n).remove()}}}