function Element(c){var a=this;this.id=c.id;this.tag=c.tag;this.isValid=c.isValid;this.start=function(){b();d()};var e=function(f){if(a.isValid!=f){a.isValid=f;searchBar.handleElementValidationChanged(a)}};var b=function(){if(a.tag.id==undefined||a.tag.content==undefined||a.tag.category==undefined){e(undefined)}else{if(a.tag.id==-1||a.tag.content==""||a.tag.category.id==-1){e(false)}else{e(true)}}};var d=function(){if(a.isValid==undefined){connection.resolveElement(a)}};this.handleElementResolved=function(f){this.tag.id=(f[0].tag_id=="undefined")?-1:f[0].tag_id;this.tag.category=catPool.getCategory(f[0].cat_id);b()}}function ElementPool(){var a=new List();this.getElement=function(b){var e=null;if(b.content!=undefined){for(var d=0;d<a.length();d++){if(a.array[d].tag.content==b.content){e=a.array[d];break}}if(e==null){var c=kwPool.getTagByName(b.content);if(c!=null){e=new Element({id:(a.length()+1),tag:c,isValid:true});a.push(e)}}}if(e==null){e=new Element({id:(a.length()+1),tag:b});a.push(e);e.start()}return e}}function ElementInSelection(a){this.id=a.id;this.element=a.element;this.isPositive=(a.isPositive==undefined)?true:a.isPositive};function Playlist(o){var h=this;var g=12;var e=5;var r=5;var c=15;this.id=o.id;this.songs=new List();var k=new List();var n=new List();var a=new List();this.selection=o.selection;this.currentSong=new Song({});this.isPlayingPlaylist=false;this.status="normal";this.isValidatingSongs=false;this.isTemporal=true;this.getMoreSongs=function(){j(5)};this.setCurrentSong=function(s){this.currentSong=s;musicCollectionExplorer.handlePlayingSongChanged();l()};this.reload=function(){this.songs=new List();musicCollectionExplorer.handlePlaylistCleared();j(15)};this.start=function(){f((g+c))};this.getNextSong=function(){var s=this.songs.getIndex(this.currentSong.id);return this.songs.getByIndex((s+1))};this.getPreviusSong=function(){var s=this.songs.getIndex(this.currentSong.id);return this.songs.getByIndex((s-1))};var f=function(s){b("waitingServerResponse");songPool.getSongs(h.selection,h,s)};var q=function(s){h.songs.push(s);musicCollectionExplorer.handleSongChanged(s)};var m=function(t){for(var s=0;s<t.length();s++){if(!p(t.array[s])){n.push(t.array[s])}}};var j=function(t){if(h.status=="normal"&&n.length()==0){b("noMoreSongs")}while(n.length()>0&&t-->0){var s=n.shift();k.push(s);i(true);s.getYoutubeId(h)}if(h.status=="normal"&&n.length()<r){f((c-n.length()))}};var d=function(s){k.remove(s.id);if(s.youtubeId==null){a.push(s);j(1)}else{q(s)}if(k.length()==0){i(false)}};var l=function(){var u=h.songs.getIndex(h.currentSong.id);var t=h.songs.length();var s=k.length();if(h.status!="noMoreSongs"&&t+s<g){j(g-t-s)}if(h.status=="normal"&&t>=g&&(t-u)<e){j(e-(t-u))}};var p=function(u){for(var t=0;t<h.songs.length();t++){if(h.songs.array[t].artist.id==u.artist.id&&h.songs.array[t].title.id==u.title.id){return true}}for(var s=0;s<n.length();s++){if(n.array[s].artist.id==u.artist.id&&n.array[s].title.id==u.title.id){return true}}for(var s=0;s<a.length();s++){if(a.array[s].artist.id==u.artist.id&&a.array[s].title.id==u.title.id){return true}}for(var s=0;s<k.length();s++){if(k.array[s].artist.id==u.artist.id&&k.array[s].title.id==u.title.id){return true}}return false};var b=function(s){if(s!=h.status){h.status=s;musicCollectionExplorer.handlePlaylistStatusChanged(h)}};var i=function(s){if(s!=h.isValidatingSongs){h.isValidatingSongs=s;musicCollectionExplorer.handlePlaylistStatusChanged(h)}};this.handleYoutubeIdChanged=function(s){d(s)};this.handleSongsRecieved=function(t,s){if(s==false){b("normal")}if(t.length()!=0){m(t);l()}else{if(s==false){b("noMoreSongs")}}}};function Selection(b){var c=this;this.elements=(b.elements==undefined)?new List():b.elements;var a=(b.nextId==undefined)?1:b.nextId;this.isValid=undefined;this.isEmpty=undefined;this.areOnlyTags=undefined;this.pseudoId=undefined;this.artist=undefined;this.album=undefined;this.title=undefined;this.checkIsValid=function(){var f=true;for(var g=0;g<this.elements.length();g++){if(this.elements.array[g].element.isValid==undefined){f=undefined;break}if(this.elements.array[g].element.isValid==false){f=false}}e(f)};this.addElement=function(f,g){this.elements.push(new ElementInSelection({id:a++,element:f,isPositive:g}))};this.removeElement=function(f){this.elements.remove(f)};this.copy=function(){return new Selection({nextId:a,elements:this.elements.copy()})};this.getElementInSelection=function(g){for(var f=0;f<this.elements.length();f++){if(this.elements.array[f].element.id==g.id){return this.elements.array[f]}}return undefined};this.getElementsIdArray=function(g){var f=c.elements.length();var j=new Array();if(f>0){for(var h=0;h<f;h++){if(g==true&&!c.elements.array[h].isPositive){j.push(-c.elements.array[h].element.tag.id)}else{j.push(c.elements.array[h].element.tag.id)}}j.sort(function(k,i){return k-i})}return j};this.getDescription=function(){var g=(this.elements.array[0].isPositive)?"+ ":"- ";g+=this.elements.array[0].element.tag.content;for(var f=1;f<this.elements.array.length;f++){g+=((this.elements.array[f].isPositive)?" + ":" - ")+this.elements.array[f].element.tag.content}return g};var e=function(f){if(c.isValid!=f){c.isValid=f;d();searchBar.handleSelectionValidationChanged(c)}};var d=function(){c.isEmpty=true;c.areOnlyTags=true;c.artist=undefined;c.album=undefined;c.title=undefined;if(c.elements.length()!=0){c.isEmpty=false;for(var g=0;g<c.elements.length();g++){var f=c.elements.array[g].element;if(f.tag.category.id==1){c.artist=f.tag}if(f.tag.category.id==2){c.title=f.tag}if(f.tag.category.id==3){c.album=f.tag}}}c.pseudoId=c.getElementsIdArray(true).toString();if(c.artist!=undefined||c.title!=undefined||c.album!=undefined){c.areOnlyTags=false}}};function Song(a){this.id=a.id;this.artist=a.artist;this.album=a.album;this.title=a.title;this.rating=a.rating;this.year=a.year;this.weight=a.weight;this.track=a.track;this.tags=new List();this.tagsHash=a.tagsHash;this.youtubeId=null;this.lyric=undefined;this.amazon=new Object({songPrize:undefined,albumUrl:undefined,albumPrize:undefined,albumImageUrl:undefined});this.getYoutubeId=function(b){youtubePlayer.findYoutubeVideoId(this,b)};this.getSongInfo=function(){if(this.tags.length()==0){var c=this.tagsHash.split(",");for(var b=0;b<c.length;b++){if(c[b]!=""){this.tags.push(kwPool.getTag(c[b]))}}}if(this.amazon.songPrize==undefined){connection.getSongInfo(this)}if(this.lyric==undefined){connection.getLyric(this)}};this.handleYoutubeIdRecieved=function(c,b){this.youtubeId=c;b.handleYoutubeIdChanged(this)};this.handleSongInfoRecieved=function(b){if(b.length!=0){this.amazon.songPrize=b[0].amazon_song_prize;this.amazon.albumUrl=b[0].amazon_album_url;this.amazon.albumPrize=b[0].amazon_album_prize;this.amazon.albumImageUrl=b[0].amazon_album_image_url}else{this.amazon.songPrize="";this.amazon.albumUrl="";this.amazon.albumPrize="";this.amazon.albumImageUrl=""}songInfoExplorer.handleSongInfoChanged(this)};this.handleLyricRecieved=function(b){if(b.length!=0){this.lyric=b[0].lyric}else{this.lyric=""}songInfoExplorer.handleLyricRecieved(this)}}function SongPool(){var a=new List();this.init=function(){connection.getSongs(1000)};this.getSongs=function(l,b,g){var k=(l.artist!=undefined)?l.artist.id:undefined;var f=(l.album!=undefined)?l.album.id:undefined;var o=(l.title!=undefined)?l.title.id:undefined;var c=new Array();var m=new List();if(l.areOnlyTags==true){c=l.getElementsIdArray(true);for(var e=0;e<a.length();e++){var n=true;for(var d=0;d<c.length;d++){var h=a.array[e].tagsHash.indexOf(","+Math.abs(c[d])+",");if((c[d]<0&&h>-1)||(c[d]>0&&h==-1)){n=false;break}}if(n==true){m.push(a.array[e])}if(m.length()==g){break}}b.handleSongsRecieved(m,(m.length()<g));for(e=0;e<m.length();e++){a.remove(m.array[e].id)}if(a.length()<500){connection.getSongs(500)}}if(m.length()<g){connection.getSongs(Math.max(2,g-m.length()),k,f,o,c,b)}};this.handleSongsRecieved=function(f,c){if(f.length!=0){if(c==undefined){for(var d=0;d<f.length;d++){var b=new Song({id:f[d].song_id,artist:new Tag({id:f[d].artist_id,content:f[d].artist,category:catPool.getCategory(1)}),album:new Tag({id:f[d].album_id,content:f[d].album,category:catPool.getCategory(3)}),title:new Tag({id:f[d].title_id,content:f[d].title,category:catPool.getCategory(2)}),tagsHash:f[d].kw_tags});a.push(b)}}else{var e=new List();for(var d=0;d<f.length;d++){var b=new Song({id:f[d].song_id,artist:new Tag({id:f[d].artist_id,content:f[d].artist,category:catPool.getCategory(1)}),album:new Tag({id:f[d].album_id,content:f[d].album,category:catPool.getCategory(3)}),title:new Tag({id:f[d].title_id,content:f[d].title,category:catPool.getCategory(2)}),tagsHash:f[d].kw_tags});e.push(b)}c.handleSongsRecieved(e,false)}}else{if(c!=undefined){c.handleSongsRecieved(new List(),false)}}}};function Tag(a){this.id=a.id;this.content=a.content;this.category=a.category}function KWPool(){var b=new List();var c=new List();var d=false;this.getTag=function(f){var e=b.get(f);if(e==null){e=new Tag({id:f});b.push(e);c.push(e);a()}return e};this.getTagByName=function(e){for(var f=0;f<b.length();f++){if(b.array[f].content==e){return b.array[f]}}return null};var a=function(){if(d==false&&c.length()>0){d=true;connection.getTagsInfo(c)}};this.handleGetInfoProcessed=function(g){if(g.length!=0){for(var f=0;f<g.length;f++){var e=b.get(g[f].tag_id);e.content=g[f].content;e.category=catPool.getCategory(g[f].cat_id);c.remove(e.id);tagExplorer.handleTagInfoChanged(e);songInfoExplorer.handleTagInfoChanged(e)}}d=false;a()}};function Connection(){var a=new Array();a.resolveSearch=new Object();a.getTagsInfo=new Object();a.getCatsInfo=new Object();a.getRelatedTags=new Object();a.getAlbums=new Object();a.getArtists=new Object();a.getSongs=new Object();a.getSongsCache=new Object();a.getSongInfo=new Object();a.getLyric=new Object();this.resolveElement=function(b){a.resolveSearch.content=b.tag.content;a.resolveSearch.tag_id=b.tag.id;a.resolveSearch.cat_id=(b.tag.category==undefined)?undefined:b.tag.category.id;$.getJSON("/index.php/getData/resolveSearch/",a.resolveSearch,function(c){b.handleElementResolved(c)})};this.getTagsInfo=function(b){a.getTagsInfo.input=b.toIdArray().join(",");$.getJSON("/index.php/getData/getTagsInfo/",a.getTagsInfo,function(c){kwPool.handleGetInfoProcessed(c)})};this.getCatsInfo=function(b){a.getCatsInfo.input=b.toIdArray().join(",");$.getJSON("/index.php/getData/getCatsInfo/",a.getCatsInfo,function(c){catPool.handleGetInfoProcessed(c)})};this.getRelatedTags=function(b,d,c){a.getRelatedTags.input=b.join(",");a.getRelatedTags.limit=d;$.getJSON("/index.php/getData/getRelatedTags/",a.getRelatedTags,function(e){tagExplorer.handleGetInfoProcessed(e,c)})};this.getAlbums=function(b){a.getAlbums.input=b.id;$.getJSON("/index.php/getData/getAlbums/",a.getAlbums,function(c){fixedInfoExplorer.handleGetInfoProcessed(c)})};this.getArtists=function(c,b){a.getArtists.input=c.id;a.getArtists.type=b;$.getJSON("/index.php/getData/getArtists/",a.getArtists,function(d){fixedInfoExplorer.handleGetInfoProcessed(d)})};this.getSongs=function(c,b,d){a.getSongs.artist=(c.artist==undefined)?0:c.artist;a.getSongs.album=(c.album==undefined)?0:c.album;a.getSongs.title=(c.title==undefined)?0:c.title;a.getSongs.tags=(c.title==undefined)?"":c.tags.join(",");a.getSongs.limit=b;$.getJSON("/index.php/getData/getSongs/",a.getSongs,function(e){d.handleSongsRecieved(e)})};this.getSongs=function(d,g,e,f,c,b){a.getSongsCache.artist=(g==undefined)?0:g;a.getSongsCache.album=(e==undefined)?0:e;a.getSongsCache.title=(f==undefined)?0:f;a.getSongsCache.tags=(c==undefined||c.length==0)?0:c.join(",");a.getSongsCache.limit=d;$.getJSON("/index.php/getData/test/",a.getSongsCache,function(h){songPool.handleSongsRecieved(h,b)})};this.getSongInfo=function(b){a.getSongInfo.artist=b.artist.content;a.getSongInfo.album=b.album.content;a.getSongInfo.title=b.title.content;$.getJSON("/index.php/getData/getSongInfo/",a.getSongInfo,function(c){b.handleSongInfoRecieved(c)})};this.getLyric=function(b){a.getLyric.artist=b.artist.content;a.getLyric.title=b.title.content;$.getJSON("/index.php/getData/getLyric/",a.getLyric,function(c){b.handleLyricRecieved(c)})}};function ContentManager(){var b=this;this.isLoggedIn=undefined;this.isRadioStarted;this.isRadioDisplayed;this.isSongSelected=false;this.isRadioLoaded=false;this.init=function(){c((window.location.pathname=="/songs/"||window.location.pathname=="/songs"));a(false)};var c=function(d){if(b.isRadioDisplayed!=d){b.isRadioDisplayed=d;if(d){$("#panels").show();$("#highlight").hide();$("#content").hide();$("#footer").hide();$("#tags").show()}}};var a=function(d){if(b.isRadioStarted!=d){b.isRadioStarted=d;if(d){c(true);tagExplorer.handleRadioIsStarted();$("#tags").removeClass("tags_horizontal");$("#tags").addClass("tags_vertical");$("#music").css("display","inline-block")}else{$("#tags").addClass("tags_horizontal");$("#tags").removeClass("tags_vertical");$("#info").hide();$("#FI_MainWrapper").hide()}b.resize()}};this.resize=function(){var f=$(window).height();if(this.isRadioStarted==false){var d=0;d=(f-$("#header").height()-$("#search").height()*2)/2;$("#mainContent").css("height",d+40)}else{var e=0;var g=$("#header").height()+$("#toolbar").height()+$("#search").height()+$("#bottom").height();e=f-g;$("#mainContent").css("height",e-15)}};this.handleFBLogStatusChanged=function(d){if(this.isLoggedIn!=d){this.isLoggedIn=d;share.handleFBLogStatusChanged()}};this.handleFilterTagLoaded=function(){if(!this.isRadioLoaded){this.isRadioLoaded=true}};this.handleSearchBarValidationChanged=function(){if(!searchBar.selection.isEmpty){a(true);if(searchBar.selection.areOnlyTags||searchBar.selection.isEmpty){$("#TE_mainWrapper").show();$("#FI_MainWrapper").hide()}else{$("#TE_mainWrapper").hide();$("#FI_MainWrapper").show()}}else{$("#TE_mainWrapper").show();$("#FI_MainWrapper").hide()}};this.handleSongSelected=function(){if(!this.isSongSelected){this.isSongSelected=true;$("#info").css("display","inline-block");$("#transporter").show()}}};function List(){this.array=new Array();this.push=function(a){this.array.push(a)};this.shift=function(){return this.array.shift()};this.contains=function(a){var b=this.array.length;while(b--){if(this.array[b].id==a){return true}}return false};this.get=function(a){var b=this.array.length;while(b--){if(this.array[b].id==a){return this.array[b]}}return null};this.getIndex=function(a){var b=this.array.length;while(b--){if(this.array[b].id==a){return b}}return null};this.getByIndex=function(a){return this.array[a]};this.getLastElement=function(){return this.getByIndex(this.length()-1)};this.length=function(){return this.array.length};this.remove=function(a){var b=this.array.length;while(b--){if(this.array[b].id==a){this.array.splice(b,1)}}};this.removeByIndex=function(a){this.array.splice(a,1)};this.copy=function(){var a=new List();a.array=this.array.slice();return a};this.compare=function(b){if(b.length()!=this.length()){return false}else{for(var a=0;a<this.length();a++){if(!b.contains(this.array[a].id)){return false}}}return true};this.toIdArray=function(){var b=new Array();var a=this.array.length;while(a--){b.push(this.array[a].id)}return b};this.empty=function(){this.array.splice(0,this.array.length)}}function Category(a){this.id=a.id;this.content=a.content}function HtmlElement(a){var b=this;this.key=a.key;this.tag=a.tag;this.jqContent=a.jqContent;this.classes=a.classes;this.mainAction=a.mainAction;this.optionalActions=a.optionalActions;this.actions=a.actions;this.jqDom=function(){var h=$("<div></div>");var j=(this.jqContent==undefined)?$("<span></span>").html(this.tag.content):this.jqContent;var f;if(this.optionalActions!=undefined){f=$("<span></span>").hide();for(var d=0;d<this.optionalActions.length;d++){var g=$("<span></span>");switch(this.optionalActions[d]){case ("add"):var e=$(getImg("/images/explore/BASE_elementOptionAdd.png","Add to filter",{width:"38px",height:"16px"}));g.html(e);g.bind("mouseenter",function(){e.attr({src:"/images/explore/BASE_elementOptionAddHover.png"})}).bind("mouseleave",function(){e.attr({src:"/images/explore/BASE_elementOptionAdd.png"})});break;case ("negate"):var e=$(getImg("/images/explore/BASE_elementOptionAdd.png","Add to filter",{width:"38px",height:"16px"}));g.html(e);g.bind("mouseenter",function(){e.attr({src:"/images/explore/BASE_elementOptionAddHover.png"})}).bind("mouseleave",function(){e.attr({src:"/images/explore/BASE_elementOptionAdd.png"})});break;case ("replace"):var e=$(getImg("/images/explore/BASE_elementOptionExclude.png","Exclkude",{width:"38px",height:"16px"}));g.html(e);g.bind("mouseenter",function(){e.attr({src:"/images/explore/BASE_elementOptionExcludeHover.png"})}).bind("mouseleave",function(){e.attr({src:"/images/explore/BASE_elementOptionExclude.png"})});break;default:alert("Action: "+this.optionalActions[d]+"undefined")}if(this.classes!=undefined&&this.classes.option!=undefined){g.addClass(this.classes.option)}e.addClass("BASE_elementOptions");c(g,this.optionalActions[d]);f.append(g)}h.append(f)}if(this.mainAction!=undefined){c(j,this.mainAction)}if(this.classes!=undefined&&this.classes.element!=undefined){h.addClass(this.classes.element)}if(this.classes!=undefined&&this.classes.content!=undefined){j.addClass(this.classes.content)}if(this.classes!=undefined&&this.classes.options!=undefined){f.addClass(this.classes.options)}if((b.classes!=undefined&&b.classes.element!=undefined)||b.optionalActions!=undefined){h.mouseenter(function(){if(b.optionalActions!=undefined){f.show();if(j.width()>=(h.width()-f.width())){j.width(h.width()-f.width()-4)}}if(b.classes!=undefined&&b.classes.element!=undefined){h.addClass(b.classes.element+"Hover")}}).mouseleave(function(){if(b.optionalActions!=undefined){f.hide();j.width(h.width())}if(b.classes!=undefined&&b.classes.element!=undefined){h.removeClass(b.classes.element+"Hover")}})}h.prepend(j);return h};var c=function(d,e){d.click(function(){switch(e){case ("add"):searchBar.addElement(b.tag,true);break;case ("add"):searchBar.addElement(b.tag,false);break;case ("replace"):if(b.actions!=undefined&&b.actions.replace!=undefined){b.actions.replace()}else{searchBar.clearAll();searchBar.addElement(b.tag,true)}break;case ("loginToolTip"):contentManager.showToolTip();break;default:alert("Action: "+e+"undefined")}})}}function TagList(){function a(){this.id=undefined;this.category=undefined;this.tags=new List();this.setCategory=function(d){this.category=d;this.id=d.id}}var b=new List();this.setTags=function(g,h){if(h==undefined||h==false){b=new List()}var f=new a();f.id=0;b.push(f);for(var e=0;e<g.length();e++){var d=g.array[e].category;if(d==null){f.tags.push(g.array[e])}else{c(g.array[e])}}};var c=function(d){var e=b.get(d.category.id);if(e==null){e=new a();e.setCategory(d.category);b.push(e)}e.tags.push(d)};this.updateTag=function(d){if(b.length()>0){var e=b.array[0].tags.get(d.id);if(e!=null){b.array[0].tags.remove(e.id);c(d);return true}}return false};this.areAllTagsDefined=function(){if(b.get(0).tags.length()==0){return true}return false};this.getCategories=function(){var f=new List();if(b.length()>1){var e=new List();for(var g=1;g<b.length();g++){e.push(b.array[g])}while(e.length()>0){var d=e.array[0].tags.length();var h=e.array[0].category;for(var g=0;g<e.length();g++){if(e.array[g].tags.length()>d){h=e.array[g].category}}f.push(h);e.remove(h.id)}}return f};this.getTags=function(d){return b.get(d).tags};this.updateUndefinedTags=function(){var d=b.array[0].tags;b.array[0].tags=new List();this.setTags(d,true)}};function FacebookUtils(){var a=this;this.user=new Object();this.friends=new Array();this.selectedFriends=new List();this.onConnected=function(e){contentManager.handleFBLogStatusChanged(true);$("#FB_facebookButton").html("Logout");a.user.uid=e;c();b()};this.onNotConnected=function(){a.friends=[];contentManager.handleFBLogStatusChanged(false);$("#FB_facebookWelcome").hide();$("#FB_facebookButton").html("Login with Facebook")};this.addFriend=function(e){if(!this.selectedFriends.contains(e.id)){this.selectedFriends.push(e);share.handleFriendsSelectedChanged()}};this.removeFriend=function(e){if(this.selectedFriends.contains(e)){this.selectedFriends.remove(e);share.handleFriendsSelectedChanged()}};this.clearFriends=function(){this.selectedFriends.empty();share.handleFriendsSelectedChanged()};this.sendShare=function(e){FB.Facebook.apiClient.users_hasAppPermission("publish_stream",function(f){if(f==1){d(e)}else{if(f==0){FB.Connect.showPermissionDialog("publish_stream",function(g){if(g!=""){d(e)}},false,null)}}})};var c=function(){$.getJSON("/index.php/accounts/try_new_user",null,function(e){a.user.first_name=e[0].first_name;$("#FB_facebookWelcome").show().html("Welcome "+e[0].first_name)})};var b=function(){var e={};e.query="SELECT name, uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1="+a.user.uid+")";e.format="JSON";FB.Facebook.apiClient.callMethod("fql.query",e,function(f,g){a.handleFriendsRecieved(f,g)})};var d=function(e){for(var f=0;f<a.selectedFriends.length();f++){var g=jsLang.share.how+"'"+playlistExplorer.playingPlaylist.selection.getDescription()+"'";var h={name:jsLang.share.message,href:"http://www.voxound.com/",description:g,media:[{type:"flash",swfsrc:"http://www.youtube.com/v/"+playlistExplorer.playingPlaylist.currentSong.youtubeId+"&autoplay=1&fs=1",imgsrc:"http://i2.ytimg.com/vi/"+playlistExplorer.playingPlaylist.currentSong.youtubeId+"/default.jpg",width:"100",height:"80",expanded_width:"425",expanded_height:"344"}]};FB.Connect.streamPublish(e,h,null,a.selectedFriends.array[f].id,"Share!",null,true,null)}setTimeout("share.handleSent()",1000)};this.handleFriendsRecieved=function(e,g){this.friends=new Array();if(e!=null){for(var f=0;f<e.length;f++){this.friends.push(new Object({id:e[f].uid,name:e[f].name}))}share.handleFBFriendsRecieved()}}};function FixedInfoExplorer(){var c=new Tag({id:0});var b=new List();var e="normal";this.init=function(){d()};var d=function(){$("#FI_ElementsWrapper").bind("click",function(g){if(searchBar.selection.artist!=undefined){var f=searchBar.selection.artist;searchBar.clearAll();searchBar.addElement(f,true)}searchBar.addElement(b.get($(g.target).attr("id").substring("2")),true)})};this.handleSearchBarChanged=function(){var f=searchBar.selection;if(f.elements.length()>0&&!f.areOnlyTags){if(f.artist!=undefined){if(f.artist.id!=c.id){c=f.artist;e="loading";connection.getAlbums(c)}}else{if(f.album!=undefined){if(f.album.id!=c.id){c=f.album;e="loading";connection.getArtists(c,"album")}}else{if(f.title!=undefined){if(f.title.id!=c.id){c=f.title;e="loading";connection.getArtists(c,"title")}}}}a()}};this.handleGetInfoProcessed=function(g){b=new List();if(g.length!=0){for(var f=0;f<g.length;f++){b.push(new Tag({id:g[f].tag_id,content:g[f].content}))}}e="normal";a()};var a=function(){var g="";for(var f=0;f<b.length();f++){g+="<div id='fi"+b.array[f].id+"' class='FI_tag'>"+b.array[f].content+"</div>"}$("#FI_ElementsWrapper").html(g);if(e=="loading"){$("#FI_HeaderWrapper").toggleClass("isLoading",true)}else{$("#FI_HeaderWrapper").toggleClass("isLoading",false)}if(searchBar.selection.artist!=undefined){$("#FI_HeaderWrapper").toggleClass("albums",true);$("#FI_HeaderWrapper").toggleClass("artists",false)}else{$("#FI_HeaderWrapper").toggleClass("artists",true);$("#FI_HeaderWrapper").toggleClass("albums",false)}}};var kwPool=new KWPool();var catPool=new CatPool();var songPool=new SongPool();var elementPool=new ElementPool();var connection=new Connection();var searchBar=new SearchBar();var tagExplorer=new TagExplorer();var fixedInfoExplorer=new FixedInfoExplorer();var playlistExplorer=new PlaylistExplorer();var musicCollectionExplorer=new MusicCollectionExplorer();var youtubePlayer=new YoutubePlayer();var playerTransporter=new PlayerTransporter();var songInfoExplorer=new SongInfoExplorer();var contentManager=new ContentManager();var share=new Share();var facebookUtils=new FacebookUtils();$(document).ready(function(){$(document).keydown(function(a){if(a.keyCode==176){playerTransporter.forward()}if(a.keyCode==177){playerTransporter.preview()}if(a.keyCode==179){playerTransporter.togglePlay()}});catPool.init();searchBar.init();songPool.init();youtubePlayer.init();playerTransporter.init();tagExplorer.init();musicCollectionExplorer.init();fixedInfoExplorer.init();songInfoExplorer.init();playlistExplorer.init();share.init();contentManager.init();$(window).resize(function(){contentManager.resize()});contentManager.resize();searchBar.loadFromUrl()});function loadSong(f,a,d,c,b,e){oTitle=new Tag({});oTitle.id=b;oTitle.catId=e;oTitle.content=c;oArtist=new Tag({});oArtist.id=a;oArtist.catId=f;oArtist.content=d;searchBar.addElement(oTitle);searchBar.addElement(oArtist)};function MusicCollectionExplorer(){var f=new Object({name:"MC_MainWrapper",content:new Object({name:"MC_songsWrapper"}),sectionWrapper:"MC_CollectionTitleWrapper",loading:$(getLoadingCode(true)).hide(),optionsWrapper:new Object({name:"MC_optionsWrapper",options:new Object({name:"MC_options",getMore:new Object({name:"MC_GetMore"}),reload:new Object({name:"MC_Reload"})})}),song:new Object({name:"MC_song",title:new Object({name:"MC_title"}),artist:new Object({name:"MC_artist"}),dataWrapper:new Object({name:"MC_songDataWrapper"}),status:new Object({name:"MC_songStatus"})})});var d=this;this.playlist=undefined;this.init=function(){jqDom(f.sectionWrapper).append(f.loading);f.content.jq=jqDom(f.content.name);f.optionsWrapper.options.getMore.jq=jqDom(f.optionsWrapper.options.getMore.name);f.optionsWrapper.options.reload.jq=jqDom(f.optionsWrapper.options.reload.name);f.optionsWrapper.options.getMore.jq.click(function(){d.handleGetMoreClicked()});f.optionsWrapper.options.reload.jq.click(function(){d.handleReloadClicked()});g()};this.handleWorkingPlaylistChanged=function(){d.playlist=playlistExplorer.workingPlaylist;b();g()};this.handlePlaylistCleared=function(){b()};this.handleSongClicked=function(i){contentManager.handleSongSelected();var h=d.playlist.songs.get(getDomId(i.attr("id")));playlistExplorer.handleSongClicked();playerTransporter.playSong(h)};this.handlePlayingSongChanged=function(){if(playlistExplorer.playingPlaylist==undefined||this.playlist.id==playlistExplorer.playingPlaylist.id){e()}};this.handleSongChanged=function(h){if(this.playlist.songs.contains(h.id)){c(h)}};this.handlePlaylistStatusChanged=function(h){if(this.playlist!=undefined&&this.playlist.id==h.id){g();if(this.playlist.status=="noMoreSongs"&&this.playlist.songs.length()==0&&!this.playlist.isValidatingSongs){a()}}};this.handleSearchBarIsInvalid=function(){a()};this.handleGetMoreClicked=function(){this.playlist.getMoreSongs()};this.handleReloadClicked=function(){d.playlist.reload()};var b=function(){if(d.playlist!=undefined){f.content.jq.empty();var j=d.playlist.songs.array;if(j.length>0){for(var h=0;h<j.length;h++){c(j[h])}}}};var c=function(k){var m=jqDom(f.song.name,k.id);if(m.length==0){m=$(getLiCode(f.song.name,k.id));f.content.jq.append(m)}m.empty();var l=$(getEmptyDivCode());var i=$(getEmptyDivCode());var h=$(getEmptyDivCode());var j=$(getEmptyDivCode());h.html(k.title.content);j.html("by "+k.artist.content);m.addClass(f.song.name);h.addClass(f.song.title.name);j.addClass(f.song.artist.name);l.addClass(f.song.status.name);i.addClass(f.song.dataWrapper.name);i.append(h);i.append(j);m.append(l);m.append(i);m.click(function(){d.handleSongClicked($(this))});m.mouseenter(function(){m.addClass(f.song.name+"Hover")});m.mouseleave(function(){m.removeClass(f.song.name+"Hover")})};var e=function(){f.content.jq.children().removeClass(f.song.name+"Playing");if(d.playlist.isPlayingPlaylist){var h=jqDom(f.song.name,d.playlist.currentSong.id);h.addClass(f.song.name+"Playing")}};var g=function(){if(d.playlist==undefined){jqDom(f.name).hide()}else{jqDom(f.name).show();if(d.playlist.status=="waitingServerResponse"||d.playlist.isValidatingSongs==true){f.optionsWrapper.options.reload.jq.hide();f.optionsWrapper.options.getMore.jq.hide();f.loading.show()}else{if(d.playlist.songs.length()==0){f.optionsWrapper.options.reload.jq.hide();f.optionsWrapper.options.getMore.jq.hide();f.loading.hide()}else{if(d.playlist.status=="noMoreSongs"){f.optionsWrapper.options.getMore.jq.hide()}else{f.optionsWrapper.options.getMore.jq.css({display:"inline-block",zoom:"1","*display":"inline"})}f.optionsWrapper.options.reload.jq.css({display:"inline-block",zoom:"1","*display":"inline"});f.loading.hide()}}}};var a=function(){f.content.jq.empty();var h=jsLang.musicExplorer.explain_1;h+=searchBar.selection.getDescription();h+=jsLang.musicExplorer.explain_2;f.content.jq.html(h)}};function PlayerTransporter(){var e=new Object({name:"PT_MainWrapper",preview:new Object({name:"PT_Rewind"}),pause:new Object({name:"PT_pause"}),play:new Object({name:"PT_play"}),forward:new Object({name:"PT_Forward"}),duration:new Object({name:"PT_duration"}),artist:new Object({name:"PT_artist"}),title:new Object({name:"PT_title"}),seekBar:new Object({name:"PT_seekBar",fixed:new Object({name:"PT_seekBarFixed"}),timeElapsed:new Object({name:"PT_seekBarTimeElapsed"}),buffered:new Object({name:"PT_seekBarBuffered"}),unbuffered:new Object({name:"PT_seekBarUnbuffered"}),pointer:new Object({name:"PT_seekBarPointer"})}),lyric:new Object({name:"PT_Lyric"}),volume:"#PT_volume"});var d=this;var f;this.status="paused";this.init=function(){jqDom(e.preview.name).click(function(){playerTransporter.preview()});jqDom(e.pause.name).click(function(){h()});jqDom(e.play.name).click(function(){g()});jqDom(e.forward.name).click(function(){playerTransporter.forward()});jqDom(e.seekBar.name).click(function(j){a(j)});setInterval("playerTransporter.handleTimerEnded();",1000);var i=function(){$("#PT_volumeHeader").fadeOut("slow",function(){$("#PT_volumeHeader").html("Volume")});$("#PT_volumeHeader").fadeIn(0)};$("#PT_volumeWidget").slider({range:"min",min:0,value:80,slide:function(j,k){youtubePlayer.setVolume(k.value);$("#PT_volumeHeader").html(k.value+"%")},start:function(j,k){$("#PT_volumeHeader").html(k.value+"%")},stop:function(j,k){setTimeout('$("#PT_volumeHeader").fadeOut("slow",function(){$("#PT_volumeHeader").html("Volume");});$("#PT_volumeHeader").fadeIn(0);',1000)}});$("#PT_seekBarWidget").slider({range:true,values:[25,80]})};this.togglePlay=function(){if(this.status!="paused"){h()}else{g()}};this.preview=function(){var i=playlistExplorer.playingPlaylist.getPreviusSong();if(i!=null){d.playSong(i)}};var h=function(){youtubePlayer.pause();jqDom(e.pause.name).hide();jqDom(e.play.name).show()};var g=function(){youtubePlayer.play();jqDom(e.play.name).hide();jqDom(e.pause.name).show()};this.forward=function(){var i=playlistExplorer.playingPlaylist.getNextSong();if(i!=null){d.playSong(i)}};var a=function(j){var i=(ytplayer.getDuration()*(j.pageX-jqDom(e.seekBar.name).offset().left))/jqDom(e.seekBar.name).width();ytplayer.seekTo(Math.round(i),1)};this.playSong=function(i){f=i;playlistExplorer.playingPlaylist.setCurrentSong(i);youtubePlayer.playVideo(i.youtubeId);songInfoExplorer.setSong(i);jqDom(e.play.name).hide();jqDom(e.pause.name).show();c()};this.handleTimerEnded=function(){b()};this.handleYoutubeStateChange=function(i){switch(i){case 0:if(this.status!="paused"){this.forward()}break;case 1:this.status="playing";break;case 2:this.status="paused";break;case 3:this.status="buffering";break;default:break}};var b=function(){if(ytplayer!=undefined&&ytplayer.getDuration()>0){var n=ytplayer.getDuration();var t=ytplayer.getCurrentTime();var k=ytplayer.getVideoBytesLoaded();var r=ytplayer.getVideoStartBytes();var s=ytplayer.getVideoBytesTotal();jqDom(e.duration.name).html(durationFormat(t)+" / "+durationFormat(n));var o=jqDom(e.seekBar.name).width();var p=Math.round((o-jqDom(e.seekBar.fixed.name).width())*t/n);var j=Math.max(0,Math.round((k+r)*((o-jqDom(e.seekBar.fixed.name).width())/s))-p);var i=o-p-j-jqDom(e.seekBar.fixed.name).width();var q=p;jqDom(e.seekBar.timeElapsed.name).width(p);jqDom(e.seekBar.buffered.name).width(j);jqDom(e.seekBar.unbuffered.name).width(i);jqDom(e.seekBar.pointer.name).css({"margin-left":q});var l=Math.round(ytplayer.getCurrentTime()/ytplayer.getDuration()*100);var m=Math.round((ytplayer.getVideoStartBytes()+ytplayer.getVideoBytesLoaded())/ytplayer.getVideoBytesTotal()*100)}else{jqDom(e.seekBar.fixed.name).width(jqDom(e.seekBar.pointer.name).width());jqDom(e.seekBar.timeElapsed.name).width(0);jqDom(e.seekBar.buffered.name).width(0);jqDom(e.seekBar.unbuffered.name).width(jqDom(e.seekBar.name).width()-jqDom(e.seekBar.fixed.name).width())}};var c=function(){if(f!=undefined){jqDom(e.title.name).html(f.title.content);jqDom(e.artist.name).html("by "+f.artist.content)}}};function PlaylistExplorer(){var j=this;var d=new Object({bookmarkIt:new Object({name:"PL_bookmarkIt"}),bookmarkBrowse:new Object({name:"PL_bookmarkBrowse"}),bookmarkList:new Object({name:"PL_bookmarkList",result:"PL_bookmarkResult"}),searchHistoryBack:new Object({name:"PL_searchHistoryBack"}),searchHistoryBrowse:new Object({name:"PL_searchHistoryBrowse"}),searchHistoryList:new Object({name:"PL_searchHistoryList",result:"PL_searchHistoryResult"})});var e=new List();var n=-1;var l=new List();this.workingPlaylist=undefined;this.playingPlaylist=undefined;var f=-1;var b=10;this.init=function(){d.searchHistoryBrowse.jq=jqDom(d.searchHistoryBrowse.name);d.searchHistoryBack.jq=jqDom(d.searchHistoryBack.name);d.searchHistoryList.jq=jqDom(d.searchHistoryList.name);d.bookmarkBrowse.jq=jqDom(d.bookmarkBrowse.name);d.bookmarkList.jq=jqDom(d.bookmarkList.name);d.bookmarkIt.jq=jqDom(d.bookmarkIt.name);jqDom(d.searchHistoryBack.name).click(function(){c()});d.searchHistoryBrowse.jq.click(function(u){u.stopPropagation();a();t()});d.bookmarkBrowse.jq.click(function(u){u.stopPropagation();p();g()});d.bookmarkIt.jq.click(function(u){u.stopPropagation();p();g()});$(document).click(function(){g();t()});o()};var h=function(w){var v=new Playlist({id:++f,selection:w});v.start();var u=q(v);i(u,v)};var q=function(v){if(j.workingPlaylist!=undefined){var u=n+1;while(u<e.length()){e.removeByIndex(u)}}e.push(v);if(e.length()>b){e.removeByIndex(0)}return e.length()-1};var i=function(w,v){if(w>=0){var u;if(v==undefined){u=e.getByIndex(w)}else{u=v}j.workingPlaylist=u;n=w;o();musicCollectionExplorer.handleWorkingPlaylistChanged()}};var k=function(u){l.push(u);if(l.length()>b){l.removeByIndex(0)}d.bookmarkBrowse.jq.removeClass("disabled")};var s=function(u){if(j.playingPlaylist!=undefined){j.playingPlaylist.isPlayingPlaylist=false}j.playingPlaylist=u;j.playingPlaylist.isPlayingPlaylist=true};this.handleSearchBarChanged=function(){if(!searchBar.selection.isEmpty&&!searchBar.selection.isEmpty){if(j.workingPlaylist==undefined||j.workingPlaylist.selection.pseudoId!=searchBar.selection.pseudoId){h(searchBar.selection)}}};this.handleSongClicked=function(){if(this.playPlaylist==undefined||this.workingPlaylist.id!=this.playingPlaylist.id){if(!l.contains(this.workingPlaylist.id)){k(this.workingPlaylist)}s(this.workingPlaylist)}};this.handleBookmarkSelected=function(v){var w=l.get(v);var u=q(w);i(u,w);searchBar.handlePlaylistChosen()};var c=function(){if(n>0){i(--n);searchBar.handlePlaylistChosen()}else{n--;searchBar.clearAll();o()}};this.handleHistoryPlaylistSelected=function(v){var u=e.getByIndex(v);i(v,u);searchBar.handlePlaylistChosen()};var m=function(){d.bookmarkList.jq.empty();for(var v=(l.length()-1);v>=0;v--){var u=$(getDivCode(d.bookmarkList.result,l.array[v].id));u.html(l.array[v].selection.getDescription());u.click(function(){j.handleBookmarkSelected(getDomId($(this).attr("id")))});if(j.workingPlaylist.id==l.array[v].id){u.addClass("PL_browseCurrent")}if(j.playingPlaylist.id==l.array[v].id){u.addClass("PL_browseCurrentPlaying")}d.bookmarkList.jq.append(u)}d.bookmarkBrowse.jq.addClass(d.bookmarkBrowse.name+"Open");d.bookmarkList.jq.show()};var r=function(){d.searchHistoryList.jq.empty();for(var v=(e.length()-1);v>=0;v--){var u=$(getDivCode(d.searchHistoryList.result,v));u.html(e.array[v].selection.getDescription());u.click(function(){j.handleHistoryPlaylistSelected(getDomId($(this).attr("id")))});if(v==n){u.addClass("PL_browseCurrent")}d.searchHistoryList.jq.append(u)}d.searchHistoryBrowse.jq.addClass(d.searchHistoryBrowse.name+"Open");d.searchHistoryList.jq.show()};var t=function(){d.bookmarkBrowse.jq.removeClass(d.bookmarkBrowse.name+"Open");d.bookmarkList.jq.hide()};var g=function(){d.searchHistoryBrowse.jq.removeClass(d.searchHistoryBrowse.name+"Open");d.searchHistoryList.jq.hide()};var p=function(){if(d.bookmarkList.jq.css("display")=="none"){m()}else{t()}};var a=function(){if(d.searchHistoryList.jq.css("display")=="none"){r()}else{g()}};var o=function(){if(n==-1){d.searchHistoryBack.jq.addClass("disabled")}else{d.searchHistoryBack.jq.removeClass("disabled")}if(e.length()>=1){d.searchHistoryBrowse.jq.removeClass("disabled")}else{d.searchHistoryBrowse.jq.addClass("disabled")}}};function CatPool(){var c=new List();var a=new List();var e=false;var b=0;this.init=function(){this.getCategory(1);this.getCategory(2);this.getCategory(3);for(var f=1001;f<1050;f++){this.getCategory(f)}};this.getCategory=function(f){var g=c.get(f);if(g==null){g=new Category({id:f});c.push(g);a.push(g);d()}return g};var d=function(){if(e==false&&a.length()>0){e=true;b=a.length();connection.getCatsInfo(a)}};this.handleGetInfoProcessed=function(h){if(h.length!=0){for(var f=0;f<h.length;f++){var g=c.get(h[f].cat_id);g.content=h[f].content;a.remove(g.id);songInfoExplorer.handleCatInfoChanged(g);tagExplorer.handleCatInfoChanged(g)}}else{if(b==a.length()){a.empty()}}e=false;d()}};function SearchBar(){var l=this;this.selection=new Selection({});this.init=function(){$("#SB_clearAll").click(function(){l.clearAll()});c();f();d();g();this.selection.checkIsValid()};var c=function(){$("#SB_searchHiddenInput").keydown(function(n){if(n.keyCode==37){e($("#SB_elementsWrapper .selected:first").prev())}else{if(n.keyCode==39){e($("#SB_elementsWrapper .selected:first").next())}else{if(n.keyCode==8){var m=$("#SB_elementsWrapper .selected:first").attr("id").substring("2");e($("#SB_elementsWrapper .selected:first").prev());i(m)}else{if(n.keyCode==46){var m=$("#SB_elementsWrapper .selected:first").attr("id").substring("2");e($("#SB_elementsWrapper .selected:first").next());i(m)}}}}});$("#SB_searchHiddenInput").blur(function(){$("#SB_elementsWrapper li").removeClass("selected")})};var f=function(){$("#SB_searchBarWrapper").bind("mouseenter",function(m){$(this).addClass("remove")});$("#SB_searchBarWrapper").bind("mouseleave",function(m){$(this).removeClass("remove")})};var d=function(){$("#SB_elementsWrapper").bind("click",function(m){if($(m.target).hasClass("searchRemoveButton")){i($(m.target).parent().attr("id").substring("2"))}else{e($(m.target).closest("li"))}})};var g=function(){$("#SB_searchInput").autocomplete("/index.php/getData/getAutocomplete/",{width:450,selectFirst:true,formatItem:function(n){var o=catPool.getCategory(n.cat_id);if(o.content==undefined){var p=""}else{var p=o.content}var m="SB_AC_catIcon";switch(n.cat_id){case"1":m+="Artist";break;case"2":m+="Title";break;case"3":m+="Album";break;default:m+="Tag";break}return"<div class='SB_AC_content'>"+n.content+"</div><div class='SB_AC_category'><div class='SB_AC_categoryContent'>"+p+"</div><div class='SB_AC_catIcon "+m+"'></div></div>"},minChars:2,extraParams:{category:"all"},cacheLength:100,matchSubset:false,matchContains:false,scrollHeight:350,max:14,parse:function(m){return $.map(m,function(n){return{data:n,value:n.content+" -- "+n.cat_id,result:""}})},dataType:"json"});$("#SB_searchInput").result(function(n,p,o){if(p){var m=new Tag({id:p.tag_id,category:catPool.getCategory(p.cat_id),content:p.content});l.addElement(m,true)}});$("#SB_searchInput").keydown(function(o){if((o.keyCode==8||o.keyCode==37)&&$(this).val()==""){e($("#SB_elementsWrapper li:last"))}else{if(o.keyCode==13){if($(this).val()!=""){var m=($(this).val().substring(0,1)=="-")?false:true;var n=(m)?$(this).val():$(this).val().substring(1);l.addElement(new Tag({content:n}),m);$(this).val("")}}else{if(o.keyCode==27){$(this).val("")}else{if(o.keyCode==17){if($(this).val().substring(0,1)!="-"){$(this).val("-"+$(this).val())}}}}}if($(this).val()!=""){$("#SB_inputLabel").animate({opacity:0},0)}else{$("#SB_inputLabel").animate({opacity:0.3},0)}});$("#SB_searchInput").keyup(function(m){if(m.keyCode==17){$(this).val($(this).val().substring(1))}});$("#SB_searchInput").focus(function(){if($("#SB_searchInput").val()==""){$("#SB_inputLabel").animate({opacity:0.3},500)}});$("#SB_searchInput").blur(function(){if($("#SB_searchInput").val()==""){$("#SB_inputLabel").animate({opacity:1},500)}})};var j=function(m){l.selection=m;l.selection.checkIsValid();a()};this.addElement=function(m,p){var o=this.selection.copy();var n=elementPool.getElement(m);o.addElement(n,p);j(o);h(o.getElementInSelection(n));a()};var i=function(m){var n=l.selection.copy();n.removeElement(m);j(n);k(m);a()};this.clearAll=function(){j(new Selection({}));b()};this.loadFromUrl=function(){var n=new Array();if(window.location.search.indexOf("&page")>0){n=window.location.search.substring(4,window.location.search.indexOf("&page")).split("-")}else{n=window.location.search.substring(4).split(",")}var o=window.location.pathname.split("/");if(n.length>0&&n[0]!=""){for(var m=0;m<n.length;m++){l.addElement(new Tag({id:n[m],content:decodeURIComponent(o[m+2].replace(/-/g," "))}))}}else{if(o.length>2&&o[2]!=""){for(var m=2;m<o.length;m++){l.addElement(new Tag({content:decodeURIComponent(o[m].replace(/-/g," "))}),true)}}}};this.handleElementValidationChanged=function(m){var n=this.selection.getElementInSelection(m);if(n!=undefined){h(n);this.selection.checkIsValid()}};this.handleSelectionValidationChanged=function(o){if(o.isValid!=undefined&&o.pseudoId==this.selection.pseudoId){contentManager.handleSearchBarValidationChanged();if(o.isValid==false){musicCollectionExplorer.handleSearchBarIsInvalid()}else{var p;if(!o.areOnlyTags){for(var n=0;n<o.elements.length();n++){var m=o.elements.array[n].element.tag;if(m.category.id==1&&o.artist.id!=m.id){p=o.elements.array[n];break}if(m.category.id==2&&o.title.id!=m.id){p=o.elements.array[n];break}if(m.category.id==3&&o.album.id!=m.id){p=o.elements.array[n];break}}}if(p==undefined){tagExplorer.handleSearchBarChanged();fixedInfoExplorer.handleSearchBarChanged();playlistExplorer.handleSearchBarChanged();a()}else{i(p.id)}}}};this.handlePlaylistChosen=function(){j(playlistExplorer.workingPlaylist.selection);tagExplorer.handleSearchBarChanged();b()};var e=function(m){if(m.length==0){$("#SB_searchHiddenInput").blur();$("#SB_searchInput").focus()}else{$("#SB_elementsWrapper li").removeClass("selected");m.addClass("selected");$("#SB_searchHiddenInput").focus()}};var k=function(m){$("#se"+m).remove()};var b=function(){$("#SB_elementsWrapper").empty();for(var m=0;m<l.selection.elements.length();m++){h(l.selection.elements.array[m])}};var h=function(o){var n=$("#se"+o.id);var m=o.element.tag.category;var p="";p+=(n.length==0)?"<li id='se"+o.id+"'>":"";p+="<a class='searchElementContent'>";p+="<span class='searchElementCat'/>";p+="<span class='searchElementText'>"+o.element.tag.content+"</span>";p+="</a>";p+="<a class='searchRemoveButton'></a>";p+=(n.length==0)?"</li>":"";if(n.length==0){n=$(p)}else{n.html(p)}n.addClass("searchElement");n.removeClass("loading");if(m==undefined){n.addClass("loading")}else{if(m.id==-1){n.addClass("error")}else{if(m.id<=3){n.addClass("cat-"+m.content)}else{if(!o.isPositive){n.addClass("negativeTagword")}else{n.addClass("tagword")}}}}$("#SB_elementsWrapper").append(n)};var a=function(){if(l.selection.isValid){$("#SB_searchBarWrapper").toggleClass("loading",false)}else{$("#SB_searchBarWrapper").toggleClass("loading",true)}if(l.selection.isEmpty){$("#SB_inputLabel").html(jsLang.searchBar.start_);$("#SB_searchBarWrapper").toggleClass("removeAll",false)}else{$("#SB_inputLabel").html(jsLang.searchBar.type_);$("#SB_searchBarWrapper").toggleClass("removeAll",true)}}};function Share(){var d=new Object({input:"SH_shareInput",inputWrapper:"SH_shareInputWrapper",inputLabel:"SH_shareInputLabel",peer:"SH_sharePeer",peerWrapper:"SH_sharePeerWrapper",deletePeer:"SH_shareDelete",send:"SH_shareSend",optionalInput:"SH_optionalInput",tabsWrapper:"SH_tabsWrapper",typesWrapper:"SH_typesWrapper",types:new Object({facebook:"SH_facebook",link:"SH_link"}),facebookConnectLink:"SH_facebookConnectLink",linkInput:"SH_linkInput"});var e=this;this.init=function(){d.inputJq=jqDom(d.input);d.inputLabel=jqDom(d.inputLabel);d.sendJq=$(getDivCode(d.send));d.optionalInputJq=$("<div id='sendText' style='display:none'><span id='SH_optionalInputLabel' >"+jsLang.share.write+"</span><br /><textarea id='SH_optionalInput' class='ac_input' type='text' autocomplete='off'/></div>");d.peerWrapperJq=jqDom(d.peerWrapper);d.linkInputJq=jqDom(d.linkInput);d.inputJq.focus(function(){if(d.inputJq.val()==""){d.inputLabel.animate({opacity:0.5},500)}});jqDom(d.input).blur(function(){if(d.inputJq.val()==""){d.inputLabel.animate({opacity:1},500)}});d.inputJq.keyup(function(){if(d.inputJq.val()!=""){d.inputLabel.animate({opacity:0},0)}if(d.inputJq.val()==""){d.inputLabel.animate({opacity:0.5},0)}});d.inputLabel.click(function(){d.inputLabel.focus()});d.peerWrapperJq.after(d.sendJq);g("Send");b();d.peerWrapperJq.after(d.optionalInputJq);d.sendJq.click(function(){facebookUtils.sendShare($("#SH_optionalInput").val());g("Sending")});d.inputJq.autocomplete(new Array(),{formatItem:function(h){return h.name},matchContains:true,selectFirst:true,autoFill:false});d.inputJq.result(function(h,j,i){if(j){facebookUtils.addFriend(j);d.inputJq.val("")}});jqDom(d.types.link+"Tab").click(function(){f(d.types.link)});jqDom(d.types.facebook+"Tab").click(function(){f(d.types.facebook)});d.linkInputJq.bind("click",function(){$(this).select()});jqDom(d.facebookConnectLink).click(function(){FB.Connect.requireSession()})};this.handleSent=function(){g("Sent");jqDom(d.send).html("Sent");setTimeout("facebookUtils.clearFriends()",300);$("#SH_optionalInput").val("")};this.handleFriendsSelectedChanged=function(){c();b();g("Send");a()};this.handleFBLogStatusChanged=function(){d.inputJq.setOptions({data:facebookUtils.friends});if(contentManager.isLoggedIn){f(d.types.facebook);jqDom(d.types.facebook+"LoggedIn").show();jqDom(d.types.facebook+"LoggedOut").hide()}else{f(d.types.link);jqDom(d.types.facebook+"LoggedIn").hide();jqDom(d.types.facebook+"LoggedOut").show()}};this.handleFBFriendsRecieved=function(){d.inputJq.setOptions({data:facebookUtils.friends})};this.handleSongChanged=function(){$("#SH_linkInput").val(getUrl("song"))};var c=function(){d.peerWrapperJq.empty();var l=facebookUtils.selectedFriends.array;for(var j=0;j<l.length;j++){var k=$(getDivCode(d.peer,l[j].id));var h=$(getEmptySpanCode()).addClass(d.deletePeer);h.click(function(){facebookUtils.removeFriend(getDomId($(this).parent().attr("id")))});k.append(h);k.append(l[j].name);d.peerWrapperJq.append(k)}};var f=function(h){jqDom(d.typesWrapper).children().each(function(){$(this).hide()});jqDom(d.tabsWrapper).children().each(function(){$(this).removeClass("SH_selectedTab")});$("#"+h+"Tab").addClass("SH_selectedTab");$("#"+h).show()};var b=function(){if(facebookUtils.selectedFriends.length()==0){d.sendJq.hide()}else{d.sendJq.show()}};var g=function(h){switch(h){case"Send":d.sendJq.html("Send");break;case"Sending":d.sendJq.html("Sending...");break;case"Sent":d.sendJq.html("Sent");break}};var a=function(){if(facebookUtils.selectedFriends.length()==0){d.optionalInputJq.hide()}else{d.optionalInputJq.show()}}};function SongInfoExplorer(){var o=new Object({name:"SI_mainExplorer",tags:new Object({name:"SI_tagsWrapper",column1:"SI_TW_column_1",column2:"SI_TW_column_2",sectionWrapper:"SI_tagsTitleWrapper",header:"SI_tagsHeader",loading:$(getLoadingCode(true)).hide(),categoryWrapper:new Object({name:"SI_TW_categoryWrapper",category:"SI_TW_categoryTitle",tag:"SI_TW_tag"})}),nowPlaying:new Object({name:"SI_nowPlayingWrapper",header:"SI_nowPlayingHeader",title:"SI_title",artist:"SI_artist",amazon:"SI_amazon"}),album:new Object({name:"SI_album",cover:"SI_albumCover",title:"SI_albumTitle"}),albums:new Object({name:"SI_albumsWrapper",sectionWrapper:"SI_albumsTitleWrapper",loading:$(getLoadingCode(true)).hide(),header:"SI_albumsHeader"}),facebook:new Object({name:"FB_shareContainer",header:"FB_shareHeader"}),lyric:"lyricContent"});var n=this;var e=undefined;this.init=function(){o.nowPlaying.titleJq=jqDom(o.nowPlaying.title);o.nowPlaying.artistJq=jqDom(o.nowPlaying.artist);o.nowPlaying.amazonJq=jqDom(o.nowPlaying.amazon);o.albums.jq=jqDom(o.albums.name);o.tags.column1Jq=jqDom(o.tags.column1);o.tags.column2Jq=jqDom(o.tags.column2);jqDom(o.albums.sectionWrapper).append(o.albums.loading);jqDom(o.tags.sectionWrapper).append(o.tags.loading);jqDom(o.albums.header).html(jsLang.songInfo.albums);jqDom(o.tags.header).html(jsLang.songInfo.tags);jqDom(o.facebook.header).html(jsLang.songInfo.share);jqDom(o.nowPlaying.header).html(jsLang.songInfo.now_playing)};this.setSong=function(p){if(e==undefined||p.id!=e.id){e=p;if(e.amazonPrize==undefined){e.getSongInfo(e)}b();m();l();share.handleSongChanged()}};this.handleSongInfoChanged=function(p){if(p.id==e.id){j();a();l()}};this.handleLyricRecieved=function(p){if(p.id==e.id){c()}};this.handleCatInfoChanged=function(p){k(p)};this.handleTagInfoChanged=function(p){if(e!=undefined){d(p);m()}};var b=function(){f();j();a();i()};var f=function(){var q=new HtmlElement({tag:e.title,mainAction:"replace",classes:{element:"SI_title"}});o.nowPlaying.titleJq.html(q.jqDom());var p=$(getEmptyDivCode());p.html("by "+e.artist.content);q=new HtmlElement({jqContent:p,tag:e.artist,mainAction:"replace",classes:{element:"SI_artist"}});o.nowPlaying.artistJq.html(q.jqDom())};var a=function(){o.albums.jq.empty();if(e.album!=undefined){o.albums.jq.append($(getDivCode(o.album.name,"1")));g()}};var j=function(){o.nowPlaying.amazonJq.empty();if(e.amazon.albumUrl!=undefined&&e.amazon.albumUrl!=""){o.nowPlaying.amazonJq.append(getLink(e.amazon.albumUrl,e.amazon.songPrize+getImg("/images/explore/BASE_AmazonIcon.png","Amazon",{}),{klass:o.nowPlaying.amazon+"Link",target:"_blank",title:"Buy it from Amazon"}))}};var g=function(){var t=jqDom(o.album.name,"1");t.empty();var p=$(getEmptyDivCode());var r=$(getEmptyDivCode());var q=$(getEmptyDivCode());t.addClass(o.album.name);r.addClass(o.album.title);q.addClass(o.album.cover);if(e.amazon.albumImageUrl!=undefined&&e.amazon.albumImageUrl!=""){q.append(getImg(e.amazon.albumImageUrl,"Cover",{width:"45px",height:"45px"}));p.append(q)}r.append(e.album.content);p.append(r);var s=new HtmlElement({tag:e.album,jqContent:p,mainAction:"replace",actions:{replace:function(){searchBar.clearAll();searchBar.addElement(e.artist);searchBar.addElement(e.album)}},classes:{element:"SI_album"}});t.append(s.jqDom())};var i=function(){if(e!=undefined){o.tags.column1Jq.empty();o.tags.column2Jq.empty();if(e.tags!=undefined){var p=getCategoriesSortedByTagCount(e.tags);for(var r=0;r<p.length();r++){h(p.array[r].category);for(var q=0;q<e.tags.length();q++){if(e.tags.array[q].category!=undefined&&e.tags.array[q].category.id==p.array[r].id){d(e.tags.array[q])}}}}}};var h=function(t){var p=$(getDivCode(o.tags.categoryWrapper.name,t.id));var s=o.tags.column1Jq;var q=o.tags.column2Jq;var r=(s.height()<=q.height())?s:q;r.append(p);if(t.content!=undefined){k(t)}};var d=function(p){var q=jqDom(o.tags.categoryWrapper.name,p.category.id);if(q.length==0){h(p.category)}var r=new HtmlElement({key:o.tags.categoryWrapper.tag,tag:p,mainAction:"add",optionalActions:new Array("replace"),actions:{replace:function(){searchBar.addElement(p,false)}},classes:{options:"SI_TW_options",element:"SI_TW_tag",content:"SI_TW_tagContent"}});q.append(r.jqDom())};var k=function(r){var q=jqDom(o.tags.categoryWrapper.name,r.id);var p=$("<div></div>").addClass(o.tags.categoryWrapper.category);p.html(r.content);q.prepend(p)};var m=function(){var q=true;for(var p=0;p<e.tags.length();p++){if(e.tags.array[p].content==undefined){o.tags.loading.show();q=false;break}}if(q==true){o.tags.loading.hide();i()}};var l=function(){if(e.amazon.albumImageUrl==undefined){o.albums.loading.show()}else{o.albums.loading.hide()}};var c=function(){var p=jqDom(o.lyric);if(e.lyric!=undefined){p.html(e.lyric.replace(/\n/g,"<br>"))}}};function FilterTags(a){this.id=a.id;this.selectionPseudoId=a.selectionPseudoId;this.relatedTags=new TagList()}function TagExplorer(){var i=new Object({name:"TE_mainWrapper",tagsWrapper:new Object({name:"TE_tagsWrapper",category:new Object({name:"TE_category",categoryTitle:"TE_categoryTitle",tag:"TE_tag",moreCategories:"TE_moreCategories"})}),sectionWrapper:new Object({name:"TE_tagsTitleWrapper"}),loading:$(getLoadingCode(true)).hide(),header:"TE_tagsHeader"});var d=new List();var h=new FilterTags({});var e=undefined;this.init=function(){i.sectionWrapper.jq=jqDom(i.sectionWrapper.name);i.tagsWrapper.jq=jqDom(i.tagsWrapper.name);i.sectionWrapper.jq.append(i.loading);jqDom(i.header).html(jsLang.tagExplorer.tags);connection.getRelatedTags(new Array(),100,1)};var c=function(m){if(contentManager.isRadioStarted==true){b("loading_related_tags");var n=null;for(var l=0;l<d.length();l++){if(d.array[l].selectionPseudoId==m.pseudoId){n=d.array[l];break}}if(n==null){n=new FilterTags({id:(d.length()+1),selectionPseudoId:m.pseudoId});d.push(n);h=n;connection.getRelatedTags(m.getElementsIdArray(true),40,m.pseudoId)}else{h=n;if(h.relatedTags.areAllTagsDefined()){b("normal")}else{b("loading_tags")}}}};var b=function(l){if(l!=e){e=l;if(e=="normal"||e=="loading_tags"){a()}else{if(e=="loading_related_tags"){f()}}}};this.handleGetInfoProcessed=function(p,m){var l=new TagList();var q=new List();if(p.length!=0){for(var o=0;o<p.length;o++){q.push(kwPool.getTag(p[o].tag_id))}}l.setTags(q,false);if(contentManager.isRadioStarted==true){for(var n=0;n<d.length();n++){if(d.array[n].selectionPseudoId==m){d.array[n].relatedTags=l;break}}if(h.selectionPseudoId==m){if(h.relatedTags.areAllTagsDefined()){b("normal")}else{b("loading_tags")}}}else{h.relatedTags=l;b("loading_tags")}contentManager.handleFilterTagLoaded()};this.handleTagInfoChanged=function(l){if(h.relatedTags.updateTag(l)){if(contentManager.isRadioStarted){k(l)}if(h.relatedTags.areAllTagsDefined()){b("normal")}}};this.handleCatInfoChanged=function(l){j(l)};this.handleSearchBarChanged=function(){if(searchBar.selection.areOnlyTags){if(h.selectionPseudoId==undefined||h.selectionPseudoId!=searchBar.selection.pseudoId){c(searchBar.selection)}}};this.handleRadioIsStarted=function(){h=new FilterTags({});a()};this.refresh=function(){a()};var g=function(n){var m=$(getDivCode(i.tagsWrapper.category.name,n.id));m.addClass(i.tagsWrapper.category.name);var l=$(getDivCode(i.tagsWrapper.category.categoryTitle,n.id));l.addClass(i.tagsWrapper.category.categoryTitle);m.append(l);jqDom(i.tagsWrapper.name).append(m);j(n)};var k=function(m,l){var n=l;if(n==undefined){n=jqDom(i.tagsWrapper.category.name,m.category.id);if(n.length==0){g(m.category);n=jqDom(i.tagsWrapper.category.name,m.category.id)}}var o;o=new HtmlElement({key:i.tagsWrapper.category.tag,tag:m,mainAction:"add",optionalActions:new Array("replace"),actions:{replace:function(){searchBar.addElement(m,false)}},classes:{options:"TE_options",element:"TE_tag",content:"TE_tagContent"}});n.append(o.jqDom())};var a=function(){f();if(contentManager.isRadioStarted==true){i.sectionWrapper.jq.show()}else{i.sectionWrapper.jq.hide()}i.tagsWrapper.jq.empty();if(contentManager.isRadioStarted==true){if(e!="loading_related_tags"){var l=h.relatedTags.getCategories();for(var n=0;n<l.length();n++){g(l.array[n]);var o=h.relatedTags.getTags(l.array[n].id);for(var m=0;m<o.length();m++){k(o.array[m])}}}jqDom(i.tagsWrapper.category.moreCategories).hide()}else{if(e!="loading_related_tags"){var l=h.relatedTags.getCategories();for(var n=0;n<Math.min(6,l.length());n++){g(l.array[n]);var o=h.relatedTags.getTags(l.array[n].id);for(var m=0;m<Math.min(14,o.length());m++){k(o.array[m])}}}}};var j=function(n){var m=jqDom(i.tagsWrapper.category.categoryTitle,n.id);var l="...Retrieving Name";if(n.content!=undefined){l=n.content}m.html(l)};var f=function(){if(e=="loading_tags"||e=="loading_related_tags"){i.loading.show()}else{i.loading.hide()}}};function getDomId(a){return a.substring((a.indexOf("-id-")+4),a.length)}function getDivCode(b,a){if(a==undefined){return"<div id='"+b+"'></div>"}return"<div id='"+toDivId(b,a)+"'></div>"}function getLiCode(b,a){if(a==undefined){return"<li id='"+b+"'></li>"}return"<li id='"+toDivId(b,a)+"'></li>"}function getEmptyDivCode(){return"<div></div>"}function getEmptySpanCode(){return"<span></span>"}function getSpanCode(b,a){if(a==undefined){return"<span id='"+b+"'></span>"}return"<span id='"+toDivId(b,a)+"'></span>"}function getLoadingCode(b){var a="<div class='BASE_loading clearfix'>";if(b){a+="<span>Loading</span>"}a+="<div class='BASE_loadingIcon'></div></div>";return a}function getImg(a,d,b){var c="<img src='"+a+"' alt='"+d+"'";if(b!=undefined){if(b.id!=undefined){c+=" id='"+b.id+"'"}if(b.width!=undefined){c+=" width='"+b.width+"'"}if(b.height!=undefined){c+=" height='"+b.height+"'"}}c+="/>";return c}function getLink(a,c,b){var d="<a href='"+a+"' ";if(b.target){d+="target='"+b.target+"' "}if(b.id){d+="id='"+b.id+"' "}if(b.klass){d+="class='"+b.klass+"' "}if(b.title){d+="title='"+b.title+"' "}d+=">"+c+"</a>";return d}function toDivId(b,a){return b+"-id-"+a}function jqDom(b,a){if(a==undefined){return $("#"+b)}return $("#"+toDivId(b,a))}function durationFormat(d){var b=new Date(d*1000);var a=b.getUTCHours();var c=b.getUTCMinutes();var e=b.getUTCSeconds();c=(c<10)?"0"+c:c;e=(e<10)?"0"+e:e;if(a==0){return c+":"+e}else{return a+":"+c+":"+e}}function upperFirst(a){var b=a.substr(0,1);return b.toUpperCase()+a.substr(1)}function getPreNoun(b){var a=b.substr(0,1);if(a.toUpperCase()=="A"||a.toUpperCase()=="E"||a.toUpperCase()=="I"||a.toUpperCase()=="O"||a.toUpperCase()=="U"){return"an"}return"a"}function getCategoriesSortedByTagCount(d){if(d!=undefined){var b=new List();for(var c=0;c<d.length();c++){if(d.array[c].category!=undefined){var e=b.get(d.array[c].category.id);if(e==null){e=new Object({id:d.array[c].category.id,count:1,category:d.array[c].category});b.push(e)}e.count++}}var a=new List();while(b.length()>0){var e=b.array[0];for(var c=1;c<b.length();c++){if(b.array[c].count>e.count){e=b.array[c]}}a.push(e);b.remove(e.id)}return a}return null}function getUrl(b){var d;switch(b){case"song":d=new Array();d.push(playlistExplorer.playingPlaylist.currentSong.artist);d.push(playlistExplorer.playingPlaylist.currentSong.title);break;case"search":d=searchBar.currentSelection.elements.array;break}d.sort(function(f,e){return f.id-e.id});var c="http://"+window.location.hostname+"/songs/";for(var a=0;a<d.length;a++){c+=encodeURIComponent(d[a].content).replace(/%20/g,"-")+"/"}if(d.length>0){c+="?id="+d[0].id}for(var a=1;a<d.length;a++){c+=","+d[a].id}return c};$(document).ready(function(){$("#FT_talkInput").keyup(function(){validateEmail()});$("#FT_talkInput").change(function(){validateEmail()});$("#FT_talkInput").blur(function(){validateEmail()})});function isValidEmailAddress(b){var a=new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);return a.test(b)}function validateEmail(){var a=$("#FT_talkInput").val();if(a!=0){if(isValidEmailAddress(a)){$("#FT_talkInput").addClass("valid");$("#FT_talkInput").removeClass("invalid");$("#FT_talkSend").removeAttr("disabled");$("#FT_talkSend").removeClass("disabled")}else{$("#FT_talkInput").removeClass("valid");$("#FT_talkInput").addClass("invalid");$("#FT_talkSend").attr({disabled:"disabled"});$("#FT_talkSend").addClass("disabled")}}else{$("#validEmail").css({"background-image":"none"})}};var ytplayer;function YoutubePlayer(){this.init=function(){var a={allowScriptAccess:"always",wmode:"transparent"};var b={id:"YoutubeObject"};swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer","YoutubeObject","260","217","8",null,null,a,b)};this.playVideo=function(a){var b="youtubePlayer.playVideo("+a+")";if(ytplayer!=undefined){ytplayer.loadVideoById(a,1)}else{setTimeout('youtubePlayer.playVideo("'+(a)+'")',500)}};this.findYoutubeVideoId=function(b,a){$.getJSON("http://gdata.youtube.com/feeds/videos?alt=json-in-script&callback=?",{"max-results":"1",format:"5",orderby:"relevance",vq:b.artist.content+" "+b.title.content},function(c){if(c.feed.entry!=undefined){$.each(c.feed.entry,function(d,e){b.handleYoutubeIdRecieved(e.id.$t.substr(38,20),a)})}else{b.handleYoutubeIdRecieved(null,a)}})};this.play=function(){ytplayer.playVideo()};this.pause=function(){ytplayer.pauseVideo()};this.setVolume=function(a){ytplayer.setVolume(a)}}function onYouTubePlayerReady(a){ytplayer=document.getElementById("YoutubeObject");ytplayer.addEventListener("onStateChange","onYoutubePlayerStateChange")}function onYoutubePlayerStateChange(a){playerTransporter.handleYoutubeStateChange(a)};