﻿var m_swf, m_sugarel, m_songid, m_artistid, m_coverpicpath, m_songtitle;
var embedTextBoxID, embedModalID, embedUrlPrefix;
var songIdArray;
var sugaRelArray;
var artistIdArray;
var coverPicPathsArray;
var songTitleArray;
var working = false;
var currentIndex = 0;
var m_CurrentPlayListName = "";
var m_currentPlayListID = 0;
var m_currentOwnerID = 0;
var m_selectElementPlayListID;
var m_selectElementArtists;


function sendEvent(swf,typ,prm) { 
  thisMovie(swf).sendEvent(typ,prm); 
};

function getUpdate(typ,pr1,pr2,swf) {};

function thisMovie(swf) {
  return document.getElementById(swf);
};

function addItem(swf, obj, idx, save) { 
  thisMovie(swf).addItem(obj,idx); 
  if (save)
  {
    SavingPlayList(swf);
  }
};

function removeItem(swf,idx) { 
    if (getLength(swf) > 0) 
    {
        thisMovie(swf).removeItem(idx); 
        SavingPlayList(swf);
    }
};

function removeLastItem(swf) { 
    removeItem(swf, getLength(swf) - 1);
};

function getLength(swf) {     
    var len = thisMovie(swf).getLength();
    return len;
};

function loadFile(swf,obj) { 
  thisMovie(swf).loadFile(obj); 
};

function itemData(swf,idx) { 
  var obj = thisMovie(swf).itemData(idx); 
  return obj;
};

function addGroupOfItemsToPlaylist(swf, songids, sugarels, artistids, coverpicpaths, songtitles)
{
    if (working) return;
        
    songIdArray = songids.split(',');
    sugaRelArray = sugarels.split(',');
    artistIdArray = artistids.split(',');
    coverPicPathsArray = coverpicpaths.split(',');    
    songTitleArray = songtitles.split(',');
    
    var allLength = songIdArray.length;
    
    if (sugaRelArray.length != allLength || artistIdArray.length != allLength || coverPicPathsArray.length != allLength || songTitleArray.length != allLength)
    {
        alert("Different array lengths!");
        return;
    }
    
    ShowMainProgress();
    currentIndex = allLength - 1;
    working = true;    
    getUrlAndAddItems(swf);
}

function getUrlAndAddItems(swf)
{
    m_swf = swf;    
    m_sugarel = sugaRelArray[currentIndex];
    m_songid = parseInt(songIdArray[currentIndex]);
    m_artistid = parseInt(artistIdArray[currentIndex]);
    m_coverpicpath = coverPicPathsArray[currentIndex];
    m_songtitle = songTitleArray[currentIndex];    
    
    SugarSidePlayerService.GetSongUrl(m_songid, OnGetSongUrlForGroup);
}

function OnGetSongUrlForGroup(res)
{
    HideMainProgress();
    var songurl = res;    
    var obj = {
        file: songurl, 
        link: m_sugarel, 
        type: 'mp3', 
        identifier: m_songid, 
        image: 'http://tools.soundsugar.net/play/ShowPic.aspx?aid=' + m_artistid + '&hdim=100&file=' + m_coverpicpath, 
        title: m_songtitle};
        
    var idx = getLength(m_swf);
    
    addItem(m_swf, obj, /*idx*/0, currentIndex == 0);
    
    if (currentIndex == 0)
    {
        if (getLength(m_swf) > 0) 
        sendEvent(m_swf, 'playitem', 0);
        
        HideMainProgress();
        working = false;
    }
    else
    {
        currentIndex--;
        getUrlAndAddItems(m_swf);
    }
}


function addItemToEnd(swf, sugarel, songid, artistid, coverpicpath, songtitle)
{
    if (CheckIfSongExistInList(swf, songid) != -1)
    {
        if (!confirm("This song (\"" + songtitle + "\") is already in playlist. \r\nDo you want to add it anyway?"))
            return;
    }
    
    getUrlAndAddItem(swf, sugarel, songid, artistid, coverpicpath, songtitle, false);
}

function addAndPlaySong(swf, sugarel, songid, artistid, coverpicpath, songtitle)
{
    var index = CheckIfSongExistInList(swf, songid);
    
    if (index != -1)
    {
        if (confirm("This song is already in playlist. \r\nDo you want to add it anyway?"))
        {                
            getUrlAndAddItem(swf, sugarel, songid, artistid, coverpicpath, songtitle, true);
        }
        else
        {
            sendEvent(m_swf, 'playitem', index);
        }
    }
    else
    {
        getUrlAndAddItem(swf, sugarel, songid, artistid, coverpicpath, songtitle, true);                
    }          
    
}

function getUrlAndAddItem(swf, sugarel, songid, artistid, coverpicpath, songtitle, play)
{
    m_swf = swf;
    m_sugarel = sugarel;
    m_songid = songid;
    m_artistid = artistid;
    m_coverpicpath = coverpicpath;
    m_songtitle = songtitle;
    
    ShowMainProgress();
        
    if (play)
        SugarSidePlayerService.GetSongUrl(songid, OnGetSongUrlAndPlay);            
    else
        SugarSidePlayerService.GetSongUrl(songid, OnGetSongUrl);            
}


function OnGetSongUrl(res)
{
    HideMainProgress();
    var songurl = res;    
    var obj = {
        file: songurl, 
        link: m_sugarel, 
        type: 'mp3', 
        identifier: m_songid, 
        image: 'http://tools.soundsugar.net/play/ShowPic.aspx?aid=' + m_artistid + '&hdim=100&file=' + m_coverpicpath, 
        title: m_songtitle};
        
    var idx = getLength(m_swf);
    
    addItem(m_swf, obj, /*idx*/0, true);
}

function OnGetSongUrlAndPlay(res)
{
    HideMainProgress();
    var songurl = res;    
    var obj = {
        file: songurl, 
        link: m_sugarel, 
        type: 'mp3', 
        identifier: m_songid, 
        image: 'http://tools.soundsugar.net/play/ShowPic.aspx?aid=' + m_artistid + '&hdim=100&file=' + m_coverpicpath, 
        title: m_songtitle};
        
    var idx = getLength(m_swf);
    
    addItem(m_swf, obj, /*idx*/0, true);
    
    sendEvent(m_swf, 'playitem', /*idx*/0);
}


function CheckIfSongExistInList(swf, songid)
{
    var len = getLength(swf);
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        if (songid == id) return index;
    }
    return -1;
}

function GeneratePopupPlaylist(swf)
{
    var len = getLength(swf);
    var songList = "";
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        if (songList.length > 0) songList += ",";
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        songList += id;
    }
    
    ShowMainProgress();
    SugarSidePlayerService.GetPlayListGUID(songList, OnGeneratePopupPlaylist);            
}

function OnGeneratePopupPlaylist(res)
{
    var url = 'playlist1.aspx?lsid=' + res;
    popUpCustom(url, 280, 430);
    HideMainProgress();
}

function SaveFansPlaylist(swf, isFan)
{
    if (!isFan)
    {
        alert("You have to be logged user (if not please register as artists/fan) in order to save this playlist.");
        return;
    }
    
    var len = getLength(swf);
    var songList = "";
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        if (songList.length > 0) songList += ",";
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        songList += id;
    }
        
    ShowMainProgress();
    SugarSidePlayerService.SaveFansPlayList(songList, OnSaveFansPlaylist);            
}

function OnSaveFansPlaylist(result)
{
    HideMainProgress();
    
    if (result)
        alert("playlist successfully saved.");
    else
        alert("playlist could not be saved. some error occured.");    
}

function GeneratePlaylistEmbedCode(swf, textBoxID, ModalPopupID, urlPrefix)
{
    embedTextBoxID = textBoxID;
    embedModalID = ModalPopupID;
    embedUrlPrefix = urlPrefix;
    
    var len = getLength(swf);
    var songList = "";
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        if (songList.length > 0) songList += ",";
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        songList += id;
    }
    
    ShowMainProgress();
    SugarSidePlayerService.GetPlayListGUID(songList, OnGeneratePlaylistEmbedCode);            
}

function OnGeneratePlaylistEmbedCode(res)
{
    var url = 'playlist1.aspx?lsid=' + res;
    var str = '<iframe marginheight="0" marginwidth="0" style="width: 420px; height: 190px;" frameborder="0" src="' + embedUrlPrefix + url + '" >\r\n</iframe>';
    
    var textBox = document.getElementById(embedTextBoxID);
    var text = document.createTextNode(str);
    
    while (textBox.firstChild)
        textBox.removeChild(textBox.firstChild);
    textBox.appendChild(text);
    
    $find(embedModalID).show();
    HideMainProgress();
}

function GenerateFullyEmbedCode(sessionID, dtStamp, textBoxID, ModalPopupID, urlPrefix)
{
    embedTextBoxID = textBoxID;
    embedModalID = ModalPopupID;
    embedUrlPrefix = urlPrefix;
    
//    var len = getLength(swf);
//    var songList = "";
//    for (var index = 0; index < len; index++)
//    {
//        var obj = itemData(swf, index);
//        if (songList.length > 0) songList += ",";
//        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
//        songList += id;
//    }
       
    
    ShowMainProgressText("Generating embedding code...");
    SugarSidePlayerService.GetFullEmbedURL(sessionID, dtStamp, OnGenerateFullyEmbedCode);            
}

function OnGenerateFullyEmbedCode(res)
{
    if (res != null)
    {
        var str = '<embed src="http://content.soundsugar.net/players/ssugarplayerv1.swf" width="250" height="450" bgcolor="undefined" allowscriptaccess="always" allowfullscreen="true"	flashvars="file=' + res + '&playlist=bottom&backcolor=0x000000&frontcolor=0xFFFFFF&lightcolor=0xFFFFFF&showeq=true&displayheight=80&logo=http://demo.soundsugar.net/images/playerlogo.png&autostart=true"	/>';
        
        var textBox = document.getElementById(embedTextBoxID);
        var text = document.createTextNode(str);
        
        while (textBox.firstChild)
            textBox.removeChild(textBox.firstChild);
        
        textBox.appendChild(text);
        
        $find(embedModalID).show();
    }
    else
    {
        alert('Unable to generate embed code');
    }
    
    HideMainProgress();
}

function SaveFansMultiPlaylist(swf, isFan, name, description, isNew)
{
    if (!isFan)
    {
        alert("You have to be logged user (if not please register as artists/fan) in order to save this playlist.");
        return;
    }
    
    var len = getLength(swf);
    var songList = "";
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        if (songList.length > 0) songList += ",";
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        songList += id;
    }
    
    m_CurrentPlayListName = name;
        
    ShowMainProgressText("Saving playlist... ");
    SugarSidePlayerService.SaveFansMultiPlayList(isNew ? 0 : m_currentPlayListID, songList, name, description, OnSaveFansMultiPlaylist);    
}


function OnSaveFansMultiPlaylist(result)
{
    HideMainProgress();
    
    if (result > 0)
    {
        alert("\"" + m_CurrentPlayListName + "\" playlist successfully saved.");        
        m_currentPlayListID = result;
    }
    else
    {
        alert("playlist could not be saved. some error occured.");    
    }
}

function getLastPlayListName()
{
    return m_CurrentPlayListName;
}

function getLastPlayListDescription()
{
    return m_currentPlayListDescription;
}

function getLastPlayListID()
{
    return m_currentPlayListID;
}

function getPlayListOwnerID()
{
    return m_currentOwnerID;
}

function UpdateFansMultiPlaylistData(playListID)
{
    SugarSidePlayerService.LoadFansMultiPlayList(playListID, OnUpdateFansMultiPlaylistData);
}

function OnUpdateFansMultiPlaylistData(res)
{
    if (res == null || res == undefined) 
    {
        return;
    }
        
    m_CurrentPlayListName = res.PlayListName;
    m_currentPlayListID = res.PlayListID;
    m_currentPlayListDescription = res.Description;
    m_currentOwnerID = res.OwnerID;
}

function LoadFansMultiPlayList(swf, isFan, playListID)
{
    m_swf = swf;
    if (!isFan)
    {
        return;
    }   
    
    ShowMainProgress();
    SugarSidePlayerService.LoadFansMultiPlayList(playListID, OnLoadFansMultiPlaylist);
}

function OnLoadFansMultiPlaylist(res)
{
    var isEmpty = getLength(m_swf) == 0;
    while (getLength(m_swf) > 1)
        removeLastItem(m_swf);
    
    var id, name, description, ownerId;
    
    id = res.PlayListID;
    name = res.PlayListName;
    description = res.Description;
    ownerId = res.OwnerID;
        
    for (var index = 0; index < res.Items.length; index++)
    {        
        var obj = {
            file: res.Items[index].SongUrl, 
            link: res.Items[index].SugaRel, 
            type: 'mp3', 
            identifier: res.Items[index].SongID, 
            image: 'http://tools.soundsugar.net/play/ShowPic.aspx?aid=' + res.Items[index].ArtistID + '&hdim=100&file=' + res.Items[index].CoverPath, 
            title: res.Items[index].SongTitle};
            
        var idx = getLength(m_swf);
        
        addItem(m_swf, obj, idx, index == (res.Items.length - 1));
    }
    
    if (!isEmpty)
        removeItem(m_swf, 0);
    
    m_CurrentPlayListName = name;
    m_currentPlayListID = id;
    m_currentPlayListDescription = description;
    m_currentOwnerID = ownerId;
    
    SavingPlayList(m_swf);
        
    HideMainProgress();        
}

function LoadAllUsernames(selectElementID)
{    
    ShowLoadPlayListProgress();
    
    m_selectElementArtists = selectElementID;
    var selectElement = document.getElementById(m_selectElementArtists);
    
    while (selectElement.hasChildNodes())
        selectElement.removeChild(selectElement.firstChild);
        
    SugarSidePlayerService.LoadAllArtists(OnLoadAllUsernames);
}

function OnLoadAllUsernames(res)
{
    if (res != null)
    {
        var selectElement = document.getElementById(m_selectElementArtists);
        FillSelectArtistsBox(selectElement, res);
    }
    
    if (OnAllUsernamesShowed != undefined && OnAllUsernamesShowed != null)    
    {
        OnAllUsernamesShowed();
    }
    
    HideLoadPlayListProgress();
}

function FillSelectArtistsBox(selectElement, artists)
{            
    for (var index = 0; index < artists.length; index++)
    {
        createNewOptionElement(selectElement, artists[index].ArtistID, artists[index].Username);
    }
}



function LoadMyPlayLists(selectElementID, isLogged)
{
    if (!isLogged)
    {
        alert("You have to be logged user (if not please register as artists/fan) in order to save this playlist.");
        return;
    }
    
    ShowLoadPlayListProgress();
    
    m_selectElementPlayListID = selectElementID;
    var selectElement = document.getElementById(m_selectElementPlayListID);
    
    while (selectElement.hasChildNodes())
        selectElement.removeChild(selectElement.firstChild);
    SugarSidePlayerService.LoadCurrentArtistPlayLists(OnLoadPlayLists);
}

function LoadArtistPlayLists(selectElementID, isLogged, artistId)
{
    if (!isLogged)
    {
        alert("You have to be logged user (if not please register as artists/fan) in order to save this playlist.");
        return;
    }
    
    ShowLoadPlayListProgress();
    
    m_selectElementPlayListID = selectElementID;
    var selectElement = document.getElementById(m_selectElementPlayListID);
    
    while (selectElement.hasChildNodes())
        selectElement.removeChild(selectElement.firstChild);
    SugarSidePlayerService.LoadArtistPlayLists(artistId, OnLoadPlayLists);
}

function OnLoadPlayLists(res)
{
    var selectElement = document.getElementById(m_selectElementPlayListID);
    
    if (selectElement != null && selectElement != undefined)
    {
        FillSelectPlayListBox(selectElement, res);   
    }
    
    if (OnPlaylistsShowed != undefined && OnPlaylistsShowed != null)    
    {
        OnPlaylistsShowed();
    }
    
    HideLoadPlayListProgress();
}


function FillSelectPlayListBox(selectElement, playLists)
{    
        
    for (var index = 0; index < playLists.length; index++)
    {
        createNewOptionElement(selectElement, playLists[index].PlayListID, playLists[index].PlayListName);
    }
}


function addNewAttribute(element, attributeName, attributeValue)
{
    var newAttr = document.createAttribute(attributeName);
    newAttr.nodeValue = attributeValue + '';
    element.setAttributeNode(newAttr); 
}

function createNewOptionElement(parentElement, val, text)
{
    var obj = document.createElement("option");
    addNewAttribute(obj, "value", val);
    var textNode = document.createTextNode(text);
    obj.appendChild(textNode);
    
    parentElement.appendChild(obj);
}

function SavingPlayList(swf)
{
    //alert("enetered saving");
    var len = getLength(swf);
    var songList = "";
    for (var index = 0; index < len; index++)
    {
        var obj = itemData(swf, index);
        if (songList.length > 0) songList += ",";
        var id = (obj.identifier == undefined) ? obj.id : obj.identifier;
        songList += id;
    }
    
    SugarSidePlayerService.SaveCurrentPlayList(songList, OnSaveCurrentPlayList);    
}

function OnSaveCurrentPlayList(res)
{
    if (!res)
    {
        alert("Unable to keep current playlist.");
    }
}

function LoadingPlayList(swf)
{
    ShowMainProgressText("Loading playlist...");
    m_swf = swf;
   
    SugarSidePlayerService.LoadCurrentPlayList(OnLoadCurrentPlayList);
}

function OnLoadCurrentPlayList(res)
{
    HideMainProgress();    
    var isEmpty = getLength(m_swf) == 0;
    while (getLength(m_swf) > 1)
        removeLastItem(m_swf);
    
    var id, name, description;
    
    id = res.PlayListID;
    name = res.PlayListName;
    description = res.Description;
        
    for (var index = 0; index < res.Items.length; index++)
    {        
        var obj = {
            file: res.Items[index].SongUrl, 
            link: res.Items[index].SugaRel, 
            type: 'mp3', 
            identifier: res.Items[index].SongID, 
            image: 'http://tools.soundsugar.net/play/ShowPic.aspx?aid=' + res.Items[index].ArtistID + '&hdim=100&file=' + res.Items[index].CoverPath, 
            title: res.Items[index].SongTitle};
            
        var idx = getLength(m_swf);
        
        addItem(m_swf, obj, idx, (index == (res.Items.length - 1) && isEmpty));
    }
    
    if (!isEmpty)
        removeItem(m_swf, 0);
    
    m_CurrentPlayListName = name;
    m_currentPlayListID = id;
    m_currentPlayListDescription = description;    
}

function ShowMainProgress()
{
    var div = document.getElementById("mainProgress");
    
    if (div != null && div != undefined)
    {
        var span = div.getElementsByTagName("span")[0];
        span.style.display = '';
        span.innerHTML = "Please wait...";
        
        var img = div.getElementsByTagName("img")[0];
        img.style.display = '';
    }
}

function ShowMainProgressText(text)
{
    var div = document.getElementById("mainProgress");
    
    if (div != null && div != undefined)
    {
        var span = div.getElementsByTagName("span")[0];
        span.style.display = '';
        span.innerHTML = text;
        
        var img = div.getElementsByTagName("img")[0];
        img.style.display = '';
    }
}


function HideMainProgress()
{        
    var div = document.getElementById("mainProgress");
    
    if (div != null && div != undefined)
    {
        var span = div.getElementsByTagName("span")[0];
        span.style.display = 'none';
        
        var img = div.getElementsByTagName("img")[0];
        img.style.display = 'none';
    }
}

function ShowLoadPlayListProgress()
{
    var div = document.getElementById("loadPlayListProgress");
    if (div != null && div != undefined)
        div.style.display = "";
}

function HideLoadPlayListProgress()
{
    var div = document.getElementById("loadPlayListProgress");
    if (div != null && div != undefined)
        div.style.display = "none";
}
