(function(a){a.fn.juke=function(b){b=a.extend({},a.fn.juke.option,b);a.ajaxSetup({xhr:function(){return window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest}});return this.each(function(){var c=1,d,e,f,g=0,h,i=document.title,j,k=a(this),l,m,n,o,p,q,r=function(a){if(a.length===0)return!1;a=a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");a=a.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");a=a.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return/^[\],:{}\s]*$/.test(a)},s=function(a){var b=j[a].marker,c=/:/,d=/^\d*(?=:)/,e=/[0-5][0-9]$/,f,g;if(c.test(b)){f=parseInt(d.exec(b),10);g=parseInt(e.exec(b),10);return f*60+g}return parseInt(j[a].marker,10)},t=function(c,d){var e=c+" - <em class='track'>"+d+"</em>",f,g,h;b.itunes?a.ajax({url:"http://api.wipmania.com/jsonp?callback=?",dataType:"jsonp",success:function(b){f=b.address.country_code;g="http://itunes.apple.com/search?entity=song&country="+f+"&term="+encodeURIComponent(c+" "+d)+"&limit=5&callback=?";a.getJSON(g,function(b){b.resultCount===1?h=b.results[0].trackViewUrl:b.resultCount>1?a.each(b.results,function(){this.trackName===d&&(h=this.trackViewUrl)}):h=null;h!==null&&(e+=" (<a href='"+h+"' class='itunes-link'>iTunes</a>)");p.html(e)})}}):p.html(e)};a(window).resize(function(){n.css({right:n.parent().width()/2+63});o.css({left:o.parent().width()/2+64});q=l.parent().width()/2-62;g>0&&(q-=c*125);l.css({left:q})});var u=function(){k.css({display:"block",visibility:"hidden"});r(b.trackinfo)?j=a.parseJSON(b.trackinfo):a.ajax({url:b.trackinfo,async:!1,success:function(a){j=a;h=parseInt(j.duration,10);j=j.tracks;d=s(c-1);e=s(c);f=parseInt(j.length,10)}});k.children().wrapAll('<ul id="tapebox"/>');a("#tapebox").wrapAll('<div id="displaybox"/>');a("#tapebox").prepend('<li><img src="'+b.placeholder+'" width="125"></li>');a("#displaybox").prepend('<img src="'+b.imagesFolder+'bg.png" alt="">');k.prepend('<div id="shadowleft" class="shadow"></div><div id="shadowright" class="shadow"></div><div id="playhead"><img src="'+b.imagesFolder+'playhead_overlay.png"><div id="playtoggle" class="hover"></div></div>');k.append('<div id="displaybox_overlay"><img src="'+b.imagesFolder+'displaybox_overlay.png" /></div>');if(b.tooltips){k.append('<div class="tooltip">'+b.title+"</div>");p=a(".tooltip")}b.debug&&k.append('<span id="skipbackward">REV</span>&nbsp;-&nbsp;<span id="skipforward">FWD</span>');n=a("#shadowleft");o=a("#shadowright");l=a("#tapebox");m=a("#playtoggle");soundManager.onready(function(){soundManager.createSound({id:"juke",url:a.trim(b.audio),onplay:function(){m.addClass("playing");document.title="▶ "+b.title+" - "+i;if(g===0){q=l.parent().width()/2-62-125;l.animate({left:q},b.animationSpeed,"swing");b.tooltips&&t(j[c-1].artist,j[c-1].track)}},onpause:function(){m.removeClass("playing");document.title=i},onfinish:function(){m.removeClass("playing");document.title=i},whileplaying:function(){g=parseInt(soundManager.getSoundById("juke").position/1e3,10);g>=h&&soundManager.pause("juke");if(g>=e){c+=1;if(c<f){d=e;e=s(c)}else e=h;l.animate({left:"-=125px"},b.animationSpeed,"swing");b.tooltips&&t(j[c-1].artist,j[c-1].track)}b.debug&&console.log("total: "+h+", currently at: "+g+", next marker: "+e)}});a("#playtoggle").click(function(){soundManager.togglePause("juke")});if(b.debug){a("#skipforward").click(function(){soundManager.getSoundById("juke").setPosition(soundManager.getSoundById("juke").position+5e3)});a("#skipbackward").click(function(){soundManager.getSoundById("juke").setPosition(soundManager.getSoundById("juke").position-5e3)})}n.css({right:n.parent().width()/2+63});o.css({left:o.parent().width()/2+64});l.css({left:l.parent().width()/2-62});k.css("visibility","visible")})};window.SM2_DEFER=!0;a.ajax({url:b.SM2,success:function(){window.soundManager=new SoundManager;soundManager.url=b.soundmanagerFolder+"soundmanager2_flash_xdomain/";soundManager.useHTML5Audio=!0;soundManager.autoLoad=!0;soundManager.preferFlash=!1;soundManager.consoleOnly=!0;soundManager.debugMode=b.debug;soundManager.wmode="transparent";soundManager.beginDelayedInit();u()}})})};a.fn.juke.option={title:"Mixtape",imagesFolder:"public/images/juke/",soundmanagerFolder:"public/swf/",placeholder:"images/juke/default.jpg",trackinfo:"trackinfo.json",SM2:"public/docs/js/min/soundmanager2.min.js",itunes:!0,audio:"mix.mp3",tooltips:!1,animationSpeed:400,debug:!1}})(jQuery);
