(function(a){a(function(){a.ly.init()});a.ly=a.ly||{};a.extend(a.ly,{init:function(){var b=this,d=a("#share, #explain");b.title=a("title").text();a("body").bind("mouseup touchend",function(){b.getSelectedText()});a("#intro").hide();a(window).scroll(function(){a(window).scrollTop()>120?d.stop().animate({marginTop:a(window).scrollTop()-120+"px"}):d.stop().animate({marginTop:"0px"})});a("#songtitle").click(function(){var c=a(this).text(),d=a("#songartist").text();a("#song").val(c);a("#artist").val(d);
a(".lyricsearch").click();a("#searchform").submit();b.setHash("!lyricsearch/"+d.replace(/ /g,"+").replace("/","+")+"/"+c.replace(/ /g,"+").replace("/","+"));return!1});a("#facebook form").submit(function(){FB.ui({method:"feed",link:a.ly.lyricUrl,name:a.ly.nowplaying.title+" by "+a.ly.nowplaying.artist,picture:a("#albumimg").attr("src")||"http://lystener.com/media/images/logo.png",caption:"By Lystener.com",description:a("#fbtext").val(),user_message_prompt:"Share your lyrics on Facebook!"},function(b){b&&
b.post_id?(a.ly.setStatus("Posted to Facebook! :)","success"),a("#fbtext").val("")):a.ly.setStatus("Posting to Facebook failed :(","error")});return!1});this.setTwitter("I'm using http://lystener.com to view lyrics while I'm listening to them!",!0);a("#username, #username2, #username3").change(function(){var b=a(this).val(),c=a(this).parent().attr("id");b.length>2&&!a.ly.checkInputVal(b)&&(window.timer&&window.clearTimeout(window.timer),a(this).addClass("working"),a.ly.requestUser(b,c))}).keyup(function(){var b=
a(this);window.keyupTimer&&clearTimeout(window.keyupTimer);window.keyupTimer=setTimeout(function(){b.change()},1E3)}).focus(function(){a.ly.checkInputVal(a(this).val())&&a(this).val("");a(this).addClass("active")}).blur(function(){if(a(this).val()===""){var b=a(this).is("#username")?"Your last.fm username, please":a(this).is("#username2")?"Your libre.fm username, please":"Your like.fm username, please";a(this).val(b).removeClass("active userok usernotok")}});a("#song").focus(function(){a(this).val()===
"Song title"&&a(this).val("");a(this).addClass("active")}).blur(function(){a(this).val()===""&&a(this).val("Song title").removeClass("active")});a("#artist").focus(function(){a(this).val()==="Artist"&&a(this).val("");a(this).addClass("active")}).blur(function(){a(this).val()===""&&a(this).val("Artist").removeClass("active")});a("#searchform").submit(function(){if(a(this).find("fieldset.active").is("#lyricsearch")){var c=a("#songtitle").text(),d=a("#songartist").text(),e=a(this).find("#song").val(),
i=a(this).find("#artist").val();if(c!=e||d!=i)a("html").animate({scrollTop:0},300),a("body").animate({scrollTop:0},300,function(){b.setUserData();b.removeStatus();a("#songactive").text("");a("#songtitle").text(e);a("#songartist").text(i);a("#songimg").attr("src","/media/images/noimg.png");a("#maintitle").slideDown();a("#lyrics").slideUp(1E3,function(){a("#busy").slideDown(300,function(){b.nowplaying={};b.nowplaying.title=e;b.nowplaying.artist=i;b.getLyrics(e,i);b.setTitle(e,i);b.setHash("!lyricsearch/"+
i.replace(/ /g,"+").replace("/","+")+"/"+e.replace(/ /g,"+").replace("/","+"));_gaq.push(["_trackEvent","lyricsearch",e+" - "+i])})})})}return!1});a("#formmenu a").click(function(){var b=a(this).attr("href");a("#formmenu a").removeClass("active");a(this).addClass("active");a("#search fieldset").removeClass("active");a(b).addClass("active");window.clearTimeout(window.timer);a(b).find("input").change();return!1});a.cookie("lastfmusername")&&a("#username").val(a.cookie("lastfmusername")).addClass("active");
a.cookie("librefmusername")&&a("#username2").val(a.cookie("librefmusername")).addClass("active");a.cookie("likefmusername")&&a("#username3").val(a.cookie("likefmusername")).addClass("active");if(window.location.hash){var c=window.location.hash.split("!")[1].split("/")[0],e=window.location.hash.split("/")[1];c==="lyricsearch"?(cleanartist=window.location.hash.split("/")[1].replace(/\+/gi," ").replace(/%20/g," "),cleansong=window.location.hash.split("/")[2].replace(/\+/gi," ").replace(/%20/g," "),a("a[href=#"+
c+"]").click().addClass("active"),a("#artist").val(cleanartist).addClass("active"),a("#song").val(cleansong).addClass("active"),a("#searchform").submit()):(a("#"+c+" input").val(e),a("a[href=#"+c+"]").click().addClass("active"))}else a.cookie("service")?(c=a.cookie("service"),a("a[href=#"+c+"]").click().addClass("active")):(a("a[href=#likefm]").addClass("active"),a("#intro").slideDown());a("#lyrics").delegate("a","click",function(){_gaq.push(["_trackEvent","editlink",b.nowplaying.title+" - "+b.nowplaying.artist])});
a("#album a").click(function(){_gaq.push(["_trackEvent","amazonlink",b.nowplaying.title+" - "+b.nowplaying.artist])});a("#footer a").click(function(){var b=a(this).text();_gaq.push(["_trackEvent","footerlink",b])});a("#overlay").fadeOut()},requestUser:function(b,d){var c,e=this;d==="lastfm"?c="http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user="+b+"&api_key=441e2a9828fab378c7c9302648ecfd48&limit=5&format=json&callback=?":d==="librefm"?c="http://alpha.libre.fm/2.0/?method=user.getrecenttracks&user="+
b+"&limit=5r&format=json&callback=?":d==="likefm"&&(c="http://like.fm/api/1.0/?method=user.getrecenttracks&user="+b+"&api_key=ac5dbe86ac1e96c2d31f8d1d&limit=5&format=json&callback=?");a("#"+d+" input").addClass("working");a.getJSON(c,function(c){a.ly.processUser(c,b,d)});window.timer=window.setTimeout(function(){e.requestUser(b,d)},8E3)},processUser:function(a,d,c){a.error?(_gaq.push(["_trackEvent",c,"fail",d]),this.setUser(!1,c),this.setUserData(!1),this.setLyrics(!1,!1,!1,!1)):(_gaq.push(["_trackEvent",
c,"success",d]),this.setUser(d,c),this.setUserData(a))},setUser:function(b,d){var c=a("#"+d+" input"),e="#formmenu ."+d+".active";b?(a(c).addClass("userok").removeClass("usernotok working"),a(e).addClass("userok").removeClass("usernotok"),a.cookie(d+"username",b,{expires:9999}),a.cookie("service",d,{expires:9999}),this.setHash("!"+d+"/"+b)):(a(c).addClass("usernotok").removeClass("userok working"),a(e).addClass("usernotok").removeClass("userok"),a.cookie(d+"username",null))},setUserData:function(b){if(b){var d=
this,c=0,e=!1,f;b=b.recenttracks.track;var g=[];a.each(b,function(a,b){b["@attr"]&&b["@attr"].nowplaying&&(c=a,e=!0)});this.nowplaying=f={title:b[c].name.split(" -")[0].split(" [")[0],artist:b[c].artist["#text"].split(" -")[0],album:b[c].album["#text"].split(" -")[0],image:b[c].image&&b[c].image["0"]&&b[c].image["0"]["#text"]?b[c].image["0"]["#text"]:!1,bigimage:b[c].image&&b[c].image["2"]&&b[c].image["2"]["#text"]?b[c].image["2"]["#text"]:!1,playing:e};for(var h=0;h<b.length;h++)h!==c&&g.push({title:b[h].name.split(" -")[0].split(" [")[0],
artist:b[h].artist["#text"].split(" -")[0],image:b[h].image&&b[h].image["0"]&&b[h].image["0"]["#text"]?b[h].image["0"]["#text"]:"/media/images/noimg.png"});if(a("#songtitle").text()!=f.title||a("#songartist").text()!=f.artist)a("html").animate({scrollTop:0},300),a("body").animate({scrollTop:0},300,function(){a("#intro").slideUp();a("#maintitle").slideUp(300,function(){a("#songtitle").text(f.title);a("#songartist").text(f.artist);a("#songimg").attr({src:f.image});f.playing?a("#songactive").text("Now playing:"):
a("#songactive").text("Last played:");a("#lyrics").slideUp(300,function(){d.removeStatus();a("#maintitle").slideDown();a("#busy").slideDown(300,function(){d.getLyrics(f.title,f.artist);d.setTitle(f.title,f.artist);d.setOtherTracks(g)})})})})}else a("#maintitle").slideUp()},setOtherTracks:function(b){for(var d="<h2>Other recent tracks</h2><ul>",c=0;c<b.length;c++)d+="<li><a href='#'>",d+="<img src='"+b[c].image+"'> <span>",d+="<strong class='artist'>"+b[c].artist+"</strong>",d+=" &mdash; ",d+="<strong class='title'>"+
b[c].title+"</strong>",d+="</span></a></li>";d+="</ul>";a("#othertracks").height()<1?a("#othertracks").slideUp(600,function(){a(this).html(d);a("#othertracks").delay(6E3).slideDown()}):a("#othertracks").html(d);a("#othertracks").find("a").click(function(){var b=a(this).find(".artist").text(),c=a(this).find(".title").text();a("#song").val(c);a("#artist").val(b);a(".lyricsearch").click();a("#searchform").submit();return!1})},getLyrics:function(b,d,c){clearTimeout(window.lyrictimer);c=c?c:0;d=this.cleanLink(d);
b=this.cleanLink(b);typeof this.ajaxlyrics!="undefined"&&this.ajaxlyrics.abort();this.ajaxlyrics=a.ajax({type:"GET",url:"lyrics/"+d+"/"+b,dataType:"json",success:function(e){if(!c||!e.error)a.ly.setLyrics(e.lyrics,b,d,e.lyricsurl,e.error),a.ly.setVideo(e.video);if(e.error&&c<4)c=c?c:1,window.lyrictimer=window.setTimeout(a.ly.getLyrics,c*1E4,b,d,c+1)},error:function(){a.ly.setLyrics(!1,b,d,!1,!0);a.ly.setVideo(!1)},timeout:2E4})},setLyrics:function(b,d,c,e,f){var g=this;a("#lyrics");c=c||g.nowplaying.artist;
d=d||g.nowplaying.title;d!==!1&&_gaq.push(["_trackEvent","lyrics",f&&b?"semi-fail":f?"fail":"success",d+" - "+c]);f?g.setStatus("I (currently) can't find the lyrics for this song :(","error"):g.removeStatus();a("#busy").slideUp(300,function(){g.lyricUrl=e;a("#songtitle").attr("href","#!lyricsearch/"+c.replace(/ /g,"+")+"/"+d.replace(/ /g,"+"));b?a("#lyrics").html(b).slideDown(1E3,function(){a("#busy").slideUp(300,function(){});a.cookie("messageShown")||(g.setStatus("Highlight the lyrics you want to share!",
"success"),a.cookie("messageShown",!0,{expires:1}))}):a("#lyrics").html("")});this.getAmazonAlbum(g.nowplaying)},getSelectedText:function(){var a="",d;if(window.getSelection)a=window.getSelection(),d=a.anchorNode&&a.anchorNode.parentNode.id;else if(document.getSelection)a=document.getSelection(),d=a.anchorNode&&a.anchorNode.parentNode.id;else if(document.selection)a=document.selection.createRange().text,d=document.selection.createRange().parentElement().id;a&&a.toString()!==""&&d&&d=="lyrics"&&(a=
a.toString(),a=a.replace(/(\?)\n+/gi,"? "),a=a.replace(/(\!)\n+/gi,"! "),a=a.replace(/(\,)\n+/gi,", "),a=a.replace(/(\.)\n+/gi,". "),a=a.replace(/\n+/gi,". "),a=a.replace(/\r+/gi,""),this.setTwitter(a),this.setFacebook(a),_gaq.push(["_trackEvent","select text",a]))},setTwitter:function(b,d){var c;b.length>100?(twittext=b.substring(0,100),twittext=twittext.substring(0,twittext.lastIndexOf(" "))+"..."):twittext=b;d||(c='"'+twittext+'" - '+this.nowplaying.title+" by "+this.nowplaying.artist+" "+this.lyricUrl+
" #lystener",twittext=c.length<141?c:'"'+twittext+'" '+this.lyricUrl+" #lystener");a("#tweetbox").html("");twttr.anywhere(function(a){(new a("#tweetbox")).tweetBox({counter:!1,height:175,width:160,label:"",defaultContent:twittext})})},setFacebook:function(b){fbtext='"'+b+'"';a("#fbtext").val(fbtext)},getAmazonAlbum:function(b){var d=b.album&&this.cleanLink(b.album)||this.cleanLink(b.title);b=this.cleanLink(b.artist);var c=this;d&&d!=a("#albumname").text()&&a.ajax({type:"GET",url:"buy/"+b+"/"+d,dataType:"json",
success:function(a){c.setAmazonAlbum(a)},error:function(){c.setAmazonAlbum(!1)},timeout:2E4})},setAmazonAlbum:function(b){var d=this,c=a("#album");c.delay(500).slideUp(600,function(){b&&b.albumimg?(a("#albumimg").attr({src:b.albumimg}),c.delay(500).slideDown()):d.nowplaying.bigimage&&(a("#albumimg").attr({src:b.bigimg}),c.delay(500).slideDown())})},setVideo:function(b){var d=a("#video");d.fadeOut(600,function(){b&&d.find(".videobit").html("<a href=''></a>").find("a").attr("href",b).embedly({key:"9ad53696cb2411e0b3f64040d3dc5c07",
wmode:"transparant",maxWidth:150}).end().end().fadeIn(600)})},cleanLink:function(a){return a.replace(/[\/\?#]/g," ")},checkInputVal:function(a){return a==="Your last.fm username, please"||a==="Your libre.fm username, please"||a==="Your like.fm username, please"},setTitle:function(a,d){document.title=a+" by "+d+" \u2014 "+this.title},setHash:function(b){window.location.hash=b;b=a("link[type=image/x-icon]").remove().attr("href");a('<link href="'+b+'" rel="shortcut icon" type="image/x-icon" />').appendTo("head")},
setStatus:function(b,d){var c=this,e=a("#status");e.slideUp(300,function(){e.removeClass().addClass(d+"msg").find("h3").html(b).end().slideDown()});a("#closemessage").click(function(){c.removeStatus();return!1})},removeStatus:function(){a("#status").slideUp()}});twttr.anywhere(function(a){a.hovercards()});a.cookie=function(a,d,c){if(typeof d!="undefined"){c=c||{};if(d===null)d="",c.expires=-1;var e="";if(c.expires&&(typeof c.expires=="number"||c.expires.toUTCString))typeof c.expires=="number"?(e=
new Date,e.setTime(e.getTime()+c.expires*864E5)):e=c.expires,e="; expires="+e.toUTCString();var f=c.path?"; path="+c.path:"",g=c.domain?"; domain="+c.domain:"";c=c.secure?"; secure":"";document.cookie=[a,"=",encodeURIComponent(d),e,f,g,c].join("")}else{d=null;if(document.cookie&&document.cookie!=""){c=document.cookie.split(";");for(e=0;e<c.length;e++)if(f=jQuery.trim(c[e]),f.substring(0,a.length+1)==a+"="){d=decodeURIComponent(f.substring(a.length+1));break}}return d}}})(jQuery);

