function User(userId,isAnonymous,canCopyToPlaylist){
this.UserID=userId
this.IsAnonymous=isAnonymous
this.CanCopyToPlaylist=canCopyToPlaylist}
function Song(wrapperId,postId,position){
this.WrapperID=wrapperId
this.PostID=postId
this.Position=position}
function Playlist(wrapperId,songs,spinnerControl,artistAccountID){
this.WrapperID=wrapperId
this.Songs=songs
this.Spinner=spinnerControl
this.ArtistAccountID=artistAccountID
this.GetSongByWrapperId=function(id){
for(var i=0;i<this.Songs.length;i++){
if(this.Songs[i].WrapperID==id){
return this.Songs[i]}}}
this.IsValidHTMLListItem=function(id){
return(id.startsWith(this.WrapperID)&&!id.endsWith("__dat"))}
this.UpdateSongPositions=function(){
var userlistWrapper=$get(this.WrapperID)
var listItemElements=document.getElementsByTagName("li")
var counter=0
for(var i=0;i<listItemElements.length;i++){
if(this.IsValidHTMLListItem(listItemElements[i].id)){
this.GetSongByWrapperId(listItemElements[i].id).Position=counter
counter++}}}}
var SPINNER_LOADING_WRAPPER_ID="spinnerLoadingWrapper"
var SPINNER_LOADING_TEXT_ID="spinnerLoadingText"
var REORDER_LIST_WRAPPER_ID="playlistWrapper"
var OPTION_DROPDOWN_OUTER_ID="bovOptionsWrapper"
var OPTION_DROPDOWN_OUTER_OUTER_ID="bovOptionsOuterWrapper"
var OPTION_DROPDOWN_TEXT_ID="bovOptionsDropDownText"
var OPTION_DROPDOWN_ARROW_ID="bovOptionsDropDownArrow"
var POPUP_COPYPLAYLIST_DONE_ID="popupCopyToPlaylistWrapperLoaded"
var POPUP_COPYPLAYLIST_ID="popupCopyToPlaylist"
var POPUP_COPYPLAYLIST_WRAPPER_ID="popupCopyToPlaylistWrapper"
var RATINGDETAILS_WRAPPER_ID="divRatingDetails"
var LISTENSDETAILS_WRAPPER_ID="divListensDetails"
var STATS_SONGNAME_ID="spStatsSongname"
var STATS_LISTENS_SPINNER="divListensDetailsSpinner"
var STATS_LISTENS_TEXT="stListensDetailsText"
var STATS_RATINGS_SPINNER="divRatingDetailsSpinner"
var STATS_RATINGS_TEXT="stRatingDetailsText"
var _User=null
var _Playlist=null
var _SongsToUpdateCount=null
var _OptionMenu=null
var _IsCopyToPlaylistOpened=false
var _IsCopyingToPlaylist=false
var _CopyingToPlaylistAnimationHandle=null
var _SpinnerCopySongToPlaylist=null
var _SpinnerListensDetails=null
var _SpinnerRatingDetails=null
function ShowSpinner(element){
element.style.display="inline"}
function HideSpinner(element){
element.style.display="none"}
function InitBOSpinners(){
_SpinnerCopySongToPlaylist=$get("popupCopyToPlaylistWrapperLoading")}
function InitSTSpinners(){
_SpinnerListensDetails=new SpinnerControl(STATS_LISTENS_SPINNER,LISTENSDETAILS_WRAPPER_ID,"loading",STATS_LISTENS_TEXT)
_SpinnerRatingDetails=new SpinnerControl(STATS_RATINGS_SPINNER,RATINGDETAILS_WRAPPER_ID,"loading",STATS_RATINGS_TEXT)}
function pageLoad(){}
function DisposeUIElements(){
if(!_User.IsAnonymous){
_OptionMenu.Close()}}
function ToggleOpenOptionsMenu(){
if(!_User.IsAnonymous){
if(_OptionMenu.IsOpened){
_OptionMenu.Close(true)
}else{
_OptionMenu.Open()}}}
function OpenCopyToPlaylist(){
if(!_IsCopyToPlaylistOpened&&!_IsCopyingToPlaylist&&_CopyingToPlaylistAnimationHandle==null&&_User.CanCopyToPlaylist){
$get(POPUP_COPYPLAYLIST_WRAPPER_ID).style.display="block"
_IsCopyToPlaylistOpened=true}}
function CloseCopyToPlaylist(){
$get(POPUP_COPYPLAYLIST_DONE_ID).style.display="none"
CloseCopyToPlaylist(false)}
function CloseCopyToPlaylist(stayClosedTillLeave){
$get(POPUP_COPYPLAYLIST_WRAPPER_ID).style.display="none"
_IsCopyToPlaylistOpened=stayClosedTillLeave}
function SetCloseCopyToPlaylistAnimation(step){
if(step>8){
$get(POPUP_COPYPLAYLIST_DONE_ID).style.display="none"
_CopyingToPlaylistAnimationHandle=null
return}
$get(POPUP_COPYPLAYLIST_DONE_ID).style.display="block"
step++
_CopyingToPlaylistAnimationHandle=window.setTimeout("SetCloseCopyToPlaylistAnimation("+step+");",199)}
function SetUserLoadAutomatically(value){
GoBusker.WebServices.Ajax.BandOverview.UpdateUser(_User.UserID,value,OnUpdateUserSucceeded,OnFailed)}
function SavePlaylistReorderChanges(){
if(_SongsToUpdateCount !=null)
return
_Playlist.Spinner.ShowSpinner()
_Playlist.UpdateSongPositions()
_SongsToUpdateCount=_Playlist.Songs.length
if(_SongsToUpdateCount==0){
_Playlist.Spinner.HideSpinner()
return}
for(var i=0;i<_SongsToUpdateCount;i++){
GoBusker.WebServices.Ajax.BandOverview.UpdateSong(_Playlist.Songs[i].PostID,_Playlist.Songs[i].Position,OnUpdateSongSucceeded,OnFailed)}}
function AddSongsToPlaylist(playlistId){
CloseCopyToPlaylist(true)
_IsCopyingToPlaylist=true
ShowSpinner(_SpinnerCopySongToPlaylist)
GoBusker.WebServices.Ajax.BandOverview.AddSongsToPlaylist(playlistId,_Playlist.ArtistAccountID,OnAddSongsToPlaylistSucceeded,OnFailed)}
function GetListenDetails(postId,timeOption){
_SpinnerListensDetails.ShowSpinner()
GoBusker.WebServices.Ajax.BandOverview.GetListenDetails(postId,timeOption,OnDetailsSucceeded,OnFailed,LISTENSDETAILS_WRAPPER_ID,null)}
function GetStatsSongDetails(postId,threadId,songName){
_SpinnerRatingDetails.ShowSpinner()
GoBusker.WebServices.Ajax.BandOverview.GetRatingDetails(threadId,OnDetailsSucceeded,OnFailed,RATINGDETAILS_WRAPPER_ID,null)
GetListenDetails(postId,0)
var o=$get(STATS_SONGNAME_ID)
if(o !=null){
o.innerHTML=songName}}
function OnDetailsSucceeded(result,userContext,methodName){
var o=$get(userContext)
if(o !=null){
o.innerHTML=result
switch(userContext){
case RATINGDETAILS_WRAPPER_ID:
_SpinnerRatingDetails.HideSpinner()
break
case LISTENSDETAILS_WRAPPER_ID:
_SpinnerListensDetails.HideSpinner()
break}}}
function OnAddSongsToPlaylistSucceeded(result,userContext,methodName){
HideSpinner(_SpinnerCopySongToPlaylist)
_IsCopyingToPlaylist=false
switch(result){
case 0:
SetCloseCopyToPlaylistAnimation(0)
break
case 1:
break
case 2:
break}}
function OnUpdateUserSucceeded(result,userContext,methodName){
switch(result){
case 0:
break
case 1:
break}}
function OnUpdateSongSucceeded(result,userContext,methodName){
_SongsToUpdateCount--
if(_SongsToUpdateCount==0){
_SongsToUpdateCount=null
_Playlist.Spinner.HideSpinner()}}
function InitBandOverview(userId,songs,wrapperId,isAnonymous,canCopyToPlaylist,artistAccountId){
document.onclick=function(e){
DisposeUIElements()}
InitBOSpinners()
_User=new User(userId,isAnonymous,canCopyToPlaylist)
_Playlist=new Playlist(
wrapperId
,songs
,new SpinnerControl(SPINNER_LOADING_WRAPPER_ID,REORDER_LIST_WRAPPER_ID,"saving",SPINNER_LOADING_TEXT_ID)
,artistAccountId)
if(!_User.IsAnonymous){
_OptionMenu=new DropDownMenu(OPTION_DROPDOWN_OUTER_ID,"_OptionMenu",false,false,0,0)
_OptionMenu.OnPostClose=function(){
$get(OPTION_DROPDOWN_TEXT_ID).className="CommonDropDownText"
$get(OPTION_DROPDOWN_ARROW_ID).className="CommonDropDownArrow"
$get(OPTION_DROPDOWN_OUTER_OUTER_ID).className="CommonDropDownWrapper"}
_OptionMenu.OnPostOpen=function(){
$get(OPTION_DROPDOWN_TEXT_ID).className="CommonDropDownTextSelected"
$get(OPTION_DROPDOWN_ARROW_ID).className="CommonDropDownArrowSelected"
$get(OPTION_DROPDOWN_OUTER_OUTER_ID).className="CommonDropDownWrapperSelected"}}}
function InitStats(){
InitSTSpinners()}
if(typeof(Sys)!=="undefined")Sys.Application.notifyScriptLoaded()
