
// 'stacks' is the Stacks global object.
// All of the other Stacks related Javascript will 
// be attatched to it.
var stacks = {};


// this call to jQuery gives us access to the globaal
// jQuery object. 
// 'noConflict' removes the '$' variable.
// 'true' removes the 'jQuery' variable.
// removing these globals reduces conflicts with other 
// jQuery versions that might be running on this page.
stacks.jQuery = jQuery.noConflict(true);

// Javascript for stacks_in_104_page57
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_104_page57 = {};

// A closure is defined and assigned to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for referring
// to this object from elsewhere.
stacks.stacks_in_104_page57 = (function(stack) {

	// When jQuery is used it will be available as $ and jQuery but only
	// inside the closure.
	var jQuery = stacks.jQuery;
	var $ = jQuery;
	
(function(){var f=(/msie/i).test(navigator.userAgent)&&!(/opera/i).test(navigator.userAgent);var g=window.soundcloud={version:"0.1",debug:false,_listeners:[],_redispatch:function(a,b,c){try{var d=this.getPlayer(b),listeners=this._listeners[a]||[];customEventType='soundcloud:'+a}catch(e){if(this.debug&&window.console){console.error('unable to dispatch widget event '+a+' for the widget id '+b,c,e)}return}if(window.jQuery){jQuery(d).trigger(customEventType,[c])}else if(window.Prototype){$(d).fire(customEventType,c)}else{}for(i in listeners){listeners[i].apply(d,[d,c])}if(this.debug&&window.console){console.log(customEventType,a,b,c)}},addEventListener:function(a,b){if(!this._listeners[a]){this._listeners[a]=[]}this._listeners[a].push(b)},removeEventListener:function(a,b){var c=this._listeners[a];if(c){for(i in c){if(c[i]===b){c.splice(i,1)}}}},getPlayer:function(a){var b;try{if(!a){throw"The SoundCloud Widget DOM object needs an id atribute, please refer to SoundCloud Widget API documentation.";}b=f?window[a]:document[a];if(b){if(b.api_getFlashId){return b}else{throw"The SoundCloud Widget External Interface is not accessible. Check that allowscriptaccess is set to 'always' in embed code";}}else{throw"The SoundCloud Widget with an id "+a+" couldn't be found";}}catch(e){if(console&&console.error){console.error(e)}throw e;}},onPlayerReady:function(a,b){this._redispatch('onPlayerReady',a,b)},onMediaStart:function(a,b){this._redispatch('onMediaStart',a,b)},onMediaEnd:function(a,b){this._redispatch('onMediaEnd',a,b)},onMediaPlay:function(a,b){this._redispatch('onMediaPlay',a,b)},onMediaPause:function(a,b){this._redispatch('onMediaPause',a,b)},onMediaBuffering:function(a,b){this._redispatch('onMediaBuffering',a,b)},onMediaDoneBuffering:function(a,b){this._redispatch('onMediaDoneBuffering',a,b)},onPlayerError:function(a,b){this._redispatch('onPlayerError',a,b)}}})();(function($){var j=function(b){var c=function(a){return{h:Math.floor(a/(60*60*1000)),m:Math.floor((a/60000)%60),s:Math.floor((a/1000)%60)}}(b),tc=[];if(c.h>0){tc.push(c.h)}tc.push((c.m<10&&c.h>0?"0"+c.m:c.m));tc.push((c.s<10?"0"+c.s:c.s));return tc.join('.')};var k=function(a){a.sort(function(){return Math.round(Math.random())});return a};var l=true,useSandBox=false,$doc=$(document),log=function(a){if(l&&window.console&&window.console.log){window.console.log.apply(window.console,arguments)}},domain=useSandBox?'sandbox-soundcloud.com':'soundcloud.com',scApiUrl=function(a,b){return(/api\./.test(a)?a+'?':'http://api.'+domain+'/resolve?url='+a+'&')+'format=json&consumer_key='+b+'&callback=?'};var m=function(){var d=function(){var b=false;try{var a=new Audio();b=a.canPlayType&&(/maybe|probably/).test(a.canPlayType('audio/mpeg'));b=b&&(/iPad|iphone|mobile|pre\//i).test(navigator.userAgent)}catch(e){}return b}(),callbacks={onReady:function(){$doc.trigger('scPlayer:onAudioReady')},onPlay:function(){$doc.trigger('scPlayer:onMediaPlay')},onPause:function(){$doc.trigger('scPlayer:onMediaPause')},onEnd:function(){$doc.trigger('scPlayer:onMediaEnd')},onBuffer:function(a){$doc.trigger({type:'scPlayer:onMediaBuffering',percent:a})}};var f=function(){var c=new Audio(),onTimeUpdate=function(a){var b=a.target,buffer=((b.buffered.length&&b.buffered.end(0))/b.duration)*100;callbacks.onBuffer(buffer);if(b.currentTime===b.duration){callbacks.onEnd()}},onProgress=function(a){var b=a.target,buffer=((b.buffered.length&&b.buffered.end(0))/b.duration)*100;callbacks.onBuffer(buffer)};$('<div class="sc-player-engine-container"></div>').appendTo(document.body).append(c);c.addEventListener('play',callbacks.onPlay,false);c.addEventListener('pause',callbacks.onPause,false);c.addEventListener('ended',callbacks.onEnd,false);c.addEventListener('timeupdate',onTimeUpdate,false);c.addEventListener('progress',onProgress,false);return{load:function(a,b){c.pause();c.src=a.stream_url+'?consumer_key='+b;c.load();c.play()},play:function(){c.play()},pause:function(){c.pause()},stop:function(){c.currentTime=0;c.pause()},seek:function(a){c.currentTime=c.duration*a;c.play()},getDuration:function(){return c.duration},getPosition:function(){return c.currentTime},setVolume:function(b){if(a){a.volume=b/100}}}};var g=function(){var c='scPlayerEngine',player,flashHtml=function(a){var b='http://player.'+domain+'/player.swf?url='+a+'&amp;enable_api=true&amp;player_type=engine&amp;object_id='+c;if($.browser.msie){return'<object height="100%" width="100%" id="'+c+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="'+b+'">'+'<param name="movie" value="'+b+'" />'+'<param name="allowscriptaccess" value="always" />'+'</object>'}else{return'<object height="100%" width="100%" id="'+c+'">'+'<embed allowscriptaccess="always" height="100%" width="100%" src="'+b+'" type="application/x-shockwave-flash" name="'+c+'" />'+'</object>'}};soundcloud.addEventListener('onPlayerReady',function(a,b){player=soundcloud.getPlayer(c);callbacks.onReady()});soundcloud.addEventListener('onMediaEnd',callbacks.onEnd);soundcloud.addEventListener('onMediaBuffering',function(a,b){callbacks.onBuffer(b.percent)});soundcloud.addEventListener('onMediaPlay',callbacks.onPlay);soundcloud.addEventListener('onMediaPause',callbacks.onPause);return{load:function(a){var b=a.permalink_url;if(player){player.api_load(b)}else{$('<div class="sc-player-engine-container"></div>').appendTo(document.body).html(flashHtml(b))}},play:function(){player&&player.api_play()},pause:function(){player&&player.api_pause()},stop:function(){player&&player.api_stop()},seek:function(a){player&&player.api_seekTo((player.api_getTrackDuration()*a))},getDuration:function(){return player&&player.api_getTrackDuration&&player.api_getTrackDuration()*1000},getPosition:function(){return player&&player.api_getTrackPosition&&player.api_getTrackPosition()*1000},setVolume:function(a){if(player&&player.api_setVolume){player.api_setVolume(a)}}}};return d?f():g()}();var n,didAutoPlay=false,players=[],updates={},currentUrl,loadTracksData=function(c,d,e){var f=0,playerObj={node:c,tracks:[]},loadUrl=function(b){$.getJSON(scApiUrl(b.url,n),function(a){f+=1;if(a.tracks){playerObj.tracks=playerObj.tracks.concat(a.tracks)}else if(a.duration){a.permalink_url=b.url;playerObj.tracks.push(a)}else if(a.username){if(/favorites/.test(b.url)){d.push({url:a.uri+'/favorites'})}else{d.push({url:a.uri+'/tracks'})}}else if($.isArray(a)){playerObj.tracks=playerObj.tracks.concat(a)}if(d[f]){loadUrl(d[f])}else{playerObj.node.trigger({type:'onTrackDataLoaded.scPlayer',playerObj:playerObj})}})};n=e;players.push(playerObj);loadUrl(d[f])},artworkImage=function(a,b){if(b){return'<div class="sc-loading-artwork">Loading Artwork</div>'}else if(a.artwork_url){return'<img src="'+a.artwork_url.replace('-large','-t300x300')+'"/>'}else{return'<div class="sc-no-artwork">No Artwork</div>'}},updateTrackInfo=function(d,e){$('.sc-info',d).each(function(a){$('h3',this).html('<a href="'+e.permalink_url+'">'+e.title+'</a>');$('h4',this).html('by <a href="'+e.user.permalink_url+'">'+e.user.username+'</a>');$('p',this).html(e.description||'no Description')});$('.sc-artwork-list li',d).each(function(b){var c=$(this),itemTrack=c.data('sc-track');if(itemTrack===e){c.addClass('active').find('.sc-loading-artwork').each(function(a){$(this).removeClass('sc-loading-artwork').html(artworkImage(e,false))})}else{c.removeClass('active')}});$('.sc-duration',d).html(j(e.duration));$('.sc-waveform-container',d).html('<img src="'+e.waveform_url+'" />');d.trigger('onPlayerTrackSwitch.scPlayer',[e])},play=function(a){var b=a.permalink_url;if(currentUrl===b){m.play()}else{currentUrl=b;m.load(a,n)}},getPlayerData=function(a){return players[$(a).data('sc-player').id]},updatePlayStatus=function(a,b){if(b){$('div.sc-player.playing').removeClass('playing')}$(a).toggleClass('playing',b).trigger((b?'onPlayerPlay':'onPlayerPause')+'.scPlayer')},onPlay=function(a,b){var c=getPlayerData(a).tracks[b||0];updateTrackInfo(a,c);updates={$buffer:$('.sc-buffer',a),$played:$('.sc-played',a),position:$('.sc-position',a)[0]};updatePlayStatus(a,true);play(c)},onPause=function(a){updatePlayStatus(a,false);m.pause()},onFinish=function(){var a=updates.$played.closest('.sc-player'),$nextItem;updates.$played.css('width','0%');updates.position.innerHTML=j(0);updatePlayStatus(a,false);m.stop();log('track finished get the next one');$nextItem=$('.sc-trackslist li.active',a).next('li');if(!$nextItem.length){$nextItem=a.nextAll('div.sc-player:first').find('.sc-trackslist li.active')}$nextItem.click()},onSeek=function(a,b){m.seek(b)},soundVolume=function(){var a=80,cooks=document.cookie.split(';'),volRx=new RegExp('scPlayer_volume=(\\d+)');for(var i in cooks){if(volRx.test(cooks[i])){a=parseInt(cooks[i].match(volRx)[1],10);break}}return a}(),onVolume=function(a){var b=Math.floor(a);var c=new Date();c.setTime(c.getTime()+(365*24*60*60*1000));soundVolume=b;document.cookie=['scPlayer_volume=',b,'; expires=',c.toUTCString(),'; path="/"'].join('');m.setVolume(soundVolume)},positionPoll;$doc.bind('scPlayer:onAudioReady',function(a){log('onPlayerReady: audio engine is ready');m.play();onVolume(soundVolume)}).bind('scPlayer:onMediaPlay',function(b){clearInterval(positionPoll);positionPoll=setInterval(function(){var a=m.getDuration(),position=m.getPosition(),relative=(position/a);updates.$played.css('width',(100*relative)+'%');updates.position.innerHTML=j(position);$doc.trigger({type:'onMediaTimeUpdate.scPlayer',duration:a,position:position,relative:relative})},500)}).bind('scPlayer:onMediaPause',function(a){clearInterval(positionPoll);positionPoll=null}).bind('scPlayer:onVolumeChange',function(a){onVolume(a.volume)}).bind('scPlayer:onMediaEnd',function(a){onFinish()}).bind('scPlayer:onMediaBuffering',function(a){updates.$buffer.css('width',a.percent+'%')});$.scPlayer=function(f,g){var h=$.extend({},$.scPlayer.defaults,f),playerId=players.length,$source=g&&$(g),sourceClasses=$source[0].className.replace('sc-player',''),links=h.links||$.map($('a',$source).add($source.filter('a')),function(a){return{url:a.href,title:a.innerHTML}}),$player=$('<div class="sc-player loading"></div>').data('sc-player',{id:playerId}),$artworks=$('<ol class="sc-artwork-list"></ol>').appendTo($player),$info=$('<div class="sc-info"><h3></h3><h4></h4><p></p><a href="#" class="sc-info-close">X</a></div>').appendTo($player),$controls=$('<div class="sc-controls"></div>').appendTo($player),$list=$('<ol class="sc-trackslist"></ol>').appendTo($player);if(sourceClasses||h.customClass){$player.addClass(sourceClasses).addClass(h.customClass)}$player.find('.sc-controls').append('<a href="#play" class="sc-play">Play</a> <a href="#pause" class="sc-pause hidden">Pause</a>').end().append('<a href="#info" class="sc-info-toggle">Info</a>').append('<div class="sc-scrubber"></div>').find('.sc-scrubber').append('<div class="sc-volume-slider"><span class="sc-volume-status" style="width:'+soundVolume+'%"></span></div>').append('<div class="sc-time-span"><div class="sc-waveform-container"></div><div class="sc-buffer"></div><div class="sc-played"></div></div>').append('<div class="sc-time-indicators"><span class="sc-position"></span> | <span class="sc-duration"></span></div>');loadTracksData($player,links,h.apiKey);$player.bind('onTrackDataLoaded.scPlayer',function(d){var e=d.playerObj.tracks;if(h.randomize){e=k(e)}$.each(e,function(a,b){var c=a===0;$('<li><a href="'+b.permalink_url+'">'+b.title+'</a><span class="sc-track-duration">'+j(b.duration)+'</span></li>').data('sc-track',{id:a}).toggleClass('active',c).appendTo($list);$('<li></li>').append(artworkImage(b,a>=h.loadArtworks)).appendTo($artworks).toggleClass('active',c).data('sc-track',b)});$player.removeClass('loading').trigger('onPlayerInit.scPlayer');$player.each(function(){if($.isFunction(h.beforeRender)){h.beforeRender.call(this,e)}});$('.sc-duration',$player)[0].innerHTML=j(e[0].duration);$('.sc-position',$player)[0].innerHTML=j(0);updateTrackInfo($player,e[0]);if(h.autoPlay&&!didAutoPlay){onPlay($player);didAutoPlay=true}});$source.each(function(a){$(this).replaceWith($player)});return $player};$.scPlayer.stopAll=function(){$('.sc-player.playing a.sc-pause').click()};$.fn.scPlayer=function(a){didAutoPlay=false;this.each(function(){$.scPlayer(a,this)});return this};$.scPlayer.defaults=$.fn.scPlayer.defaults={customClass:null,beforeRender:function(a){var b=$(this)},onDomReady:function(){$('a.sc-player, div.sc-player').scPlayer()},autoPlay:false,randomize:false,loadArtworks:5,apiKey:'htuiRd1JP11Ww0X72T1C3g'};$('a.sc-play, a.sc-pause').live('click',function(a){var b=$(this).closest('.sc-player').find('ol.sc-trackslist');b.find('li.active').click();return false});$('a.sc-info-toggle, a.sc-info-close').live('click',function(a){var b=$(this);b.closest('.sc-player').find('.sc-info').toggleClass('active').end().find('a.sc-info-toggle').toggleClass('active');return false});$('.sc-trackslist li').live('click',function(b){var c=$(this),$player=c.closest('.sc-player'),trackId=c.data('sc-track').id,play=$player.is(':not(.playing)')||c.is(':not(.active)');if(play){onPlay($player,trackId)}else{onPause($player)}c.addClass('active').siblings('li').removeClass('active');$('.artworks li',$player).each(function(a){$(this).toggleClass('active',a===trackId)});return false});var o=function(a,b){var c=$(a).closest('.sc-time-span'),$buffer=c.find('.sc-buffer'),$available=c.find('.sc-waveform-container img'),$player=c.closest('.sc-player'),relative=Math.min($buffer.width(),(b-$available.offset().left))/$available.width();onSeek($player,relative)};var p=function(a){if(a.targetTouches.length===1){o(a.target,a.targetTouches&&a.targetTouches.length&&a.targetTouches[0].clientX);a.preventDefault()}};$('.sc-time-span').live('click',function(a){o(this,a.pageX);return false}).live('touchstart',function(a){this.addEventListener('touchmove',p,false);a.originalEvent.preventDefault()}).live('touchend',function(a){this.removeEventListener('touchmove',p,false);a.originalEvent.preventDefault()});var q=function(b,c){var d=$(b),originX=d.offset().left,originWidth=d.width(),getVolume=function(x){return Math.floor(((x-originX)/originWidth)*100)},update=function(a){$doc.trigger({type:'scPlayer:onVolumeChange',volume:getVolume(a.pageX)})};d.bind('mousemove.sc-player',update);update(c)};var r=function(a,b){$(a).unbind('mousemove.sc-player')};$('.sc-volume-slider').live('mousedown',function(a){q(this,a)}).live('mouseup',function(a){r(this,a)});$doc.bind('scPlayer:onVolumeChange',function(a){$('span.sc-volume-status').css({width:a.volume+'%'})});$(function(){if($.isFunction($.scPlayer.defaults.onDomReady)){$.scPlayer.defaults.onDomReady()}})})(jQuery);
	return stack;
})(stacks.stacks_in_104_page57);



