/* Copyright 2003-2009 Emergent Music LLC  All rights reserved.
 * $Id$
 */

FLYFI.shareDialogItem_Track = 1;
FLYFI.shareDialogItem_Playlist = 2;
FLYFI.shareDialogItem_Page = 3;
FLYFI.shareDialogItem_DailyBlog = 4;

FLYFI.shareDialogItem = null;   // will be FLYFI.shareDialogItem_* when in the share dailog

FLYFI.shareDialogTrackDict = null;    // set to the track being used in the share dialog
FLYFI.shareDialogLibraryID = null;    // set to the library being used in the share dialog for a track
FLYFI.shareDialogLibraryDict = null;    // set to the library being used in the share dialog

FLYFI.onClick_sharePlaylist_current = function(event) {
    FLYFI.onClick_sharePlaylist(FLYFI.currentPlaylistDict);
};

FLYFI.onTimer_shareDialogFocus = function() {
     $('#share_dialog .sharelink').focus().select();
};

FLYFI.onServer_getTinyURL_share = function(tinyURL) {
    $('#share_dialog .facebook').hide();
    switch(FLYFI.shareDialogItem) {
        case FLYFI.shareDialogItem_Track:
            $('#share_link').attr('title', 'Share This ' + (FLYFI.isContest () ? 'Entry' : 'Track'));
            $('#share_dialog .sharelabel').text("'" + FLYFI.shareDialogTrackDict.title +"' by '" + FLYFI.shareDialogTrackDict.artist + "'");
            break;
        case FLYFI.shareDialogItem_Playlist:
            $('#share_link').attr('title', 'Share This ' + (FLYFI.isContest () ? 'Contest' : 'Playlist'));
            $('#share_dialog .sharelabel').text((FLYFI.isContest () ? 'category' : 'playlist') + " name: '" + FLYFI.shareDialogLibraryDict.name +"'");
            $('#share_dialog .facebook').attr('href', (window.level == 'live' ? '' : '/' + window.level) + '/share/facebook/?share=' +
                                                      FLYFI.shareDialogLibraryDict.libraryID);
            $('#share_dialog .facebook').show();
            break;
        case FLYFI.shareDialogItem_Page:
            $('#share_link').attr('title', 'Share This FlyFi Page');
            $('#share_dialog .sharelabel').text('');
            break;
            
        case FLYFI.shareDialogItem_DailyBlog:
            $('#share_link').attr('title', 'Share The FlyFi Daily Blog');
            $('#share_dialog .sharelabel').text('');
            break;

        default:
            break;
    }
    $('#share_dialog .sharelink').val(tinyURL);
    
    $('#share_link').click();
    setTimeout(FLYFI.onTimer_shareDialogFocus, 500);
};

FLYFI.onClick_shareTrack = function(trackDict, libraryID, shareFunction) {
    FLYFI.server_logShareTrack(trackDict.trackID, libraryID);
    FLYFI.shareDialogItem = FLYFI.shareDialogItem_Track;
    FLYFI.shareDialogTrackDict = trackDict;
    FLYFI.shareDialogLibraryID = libraryID;
    FLYFI.shareDialogLibraryDict = null;
    FLYFI.server_tinyURL(FLYFI.shareURLForTrack(FLYFI.shareDialogTrackDict), 
                         shareFunction ? function(tinyURL) { $('#share_dialog .sharelink').val(tinyURL); shareFunction(); }
                                       : FLYFI.onServer_getTinyURL_share);
};

FLYFI.onClick_sharePlaylist = function(libraryDict, shareFunction) {
    FLYFI.server_logSharePlaylist(libraryDict.libraryID);
    FLYFI.shareDialogItem = FLYFI.shareDialogItem_Playlist;
    FLYFI.shareDialogTrackDict = null;
    FLYFI.shareDialogLibraryID = null;
    FLYFI.shareDialogLibraryDict = libraryDict;
    FLYFI.server_tinyURL(FLYFI.shareURLForMyPlaylist(FLYFI.shareDialogLibraryDict), 
            shareFunction ? function(tinyURL) { $('#share_dialog .sharelink').val(tinyURL); shareFunction(); }
                          : FLYFI.onServer_getTinyURL_share);
};

FLYFI.onClick_sharePage = function(event) {
    FLYFI.server_logSharePage(FLYFI.shareURLForThisPage());
    FLYFI.shareDialogItem = FLYFI.shareDialogItem_Page;
    FLYFI.shareDialogTrackDict = null;
    FLYFI.shareDialogLibraryID = null;
    FLYFI.shareDialogLibraryDict = null;
    FLYFI.server_tinyURL(FLYFI.shareURLForThisPage(), FLYFI.onServer_getTinyURL_share);
};

FLYFI.onClick_shareDailyBlog = function(event) {
    FLYFI.server_logSharePage(FLYFI.shareURLForDailyBlog());
    FLYFI.shareDialogItem = FLYFI.shareDialogItem_DailyBlog;
    FLYFI.shareDialogTrackDict = null;
    FLYFI.shareDialogLibraryID = null;
    FLYFI.shareDialogLibraryDict = null;
    FLYFI.server_tinyURL(FLYFI.shareURLForDailyBlog(), FLYFI.onServer_getTinyURL_share);
};

FLYFI.shareDialogItemToTitle = function(shareDialogItem) {
    switch(FLYFI.shareDialogItem) {
        case FLYFI.shareDialogItem_Track:
            return FLYFI.shareTrack_Title;
            
        case FLYFI.shareDialogItem_Playlist:
            return FLYFI.sharePlaylist_Title;
            
        case FLYFI.shareDialogItem_Page:
            return FLYFI.sharePage_Title;
            
        case FLYFI.shareDialogItem_DailyBlog:
            return FLYFI.sharePage_Title;

        default:
            return '';
    }
};

FLYFI.shareDialogItemToComment = function(shareDialogItem) {
    switch(FLYFI.shareDialogItem) {
        case FLYFI.shareDialogItem_Track:
            return FLYFI.shareTrack_Comment;
            
        case FLYFI.shareDialogItem_Playlist:
            return FLYFI.sharePlaylist_Comment;
            
        case FLYFI.shareDialogItem_Page:
            return '';
            
        case FLYFI.shareDialogItem_DailyBlog:
            return '';

        default:
            return '';
    }
};

FLYFI.onClick_share_Facebook = function(event) {
//    var url = $('#share_dialog .sharelink').val();
//    FLYFI.setEventForShare(event, FLYFI.shareAtFacebook(FLYFI.shareDialogItemToTitle(FLYFI.shareDialogItem), url));
    tb_remove();
};
FLYFI.onClick_share_MySpace = function(event) {
    var url = $('#share_dialog .sharelink').val();
    FLYFI.setEventForShare(event, FLYFI.shareAtMySpace(FLYFI.shareDialogItemToTitle(FLYFI.shareDialogItem), 
                                                        FLYFI.shareDialogItemToComment(FLYFI.shareDialogItem),
                                                        url));
    tb_remove();
};
FLYFI.onClick_share_Twitter = function(event) {
    var url = $('#share_dialog .sharelink').val();
    FLYFI.setEventForShare(event, FLYFI.shareAtTwitter(FLYFI.shareDialogItemToTitle(FLYFI.shareDialogItem), url));
    tb_remove();
};
FLYFI.onClick_share_Email = function(event) {
    event.preventDefault();
    tb_remove();
    setTimeout(FLYFI.onTimer_share_Email, 400); // let ThickBox close first
};

FLYFI.onClick_shareTrack_email = function() {
    var playerControls = FLYFI.playingTrack.playerControls ? FLYFI.playingTrack.playerControls : FLYFI.playerControls;
    if (playerControls.trackDict) {
        var libraryID = playerControls.playlistDict ? playerControls.playlistDict.libraryID : null;
        FLYFI.emailTrack(playerControls.trackDict, libraryID, false);
    }
};
FLYFI.onClick_sharePlaylist_email = function() {
    var libraryDict = FLYFI.playingTrack.playerControls && FLYFI.playingTrack.playerControls.playlistDict ? FLYFI.playingTrack.playerControls.playlistDict : FLYFI.playerControls.playlistDict;
    if (libraryDict) {
        FLYFI.emailMyPlaylist(libraryDict, false);
    }
};
FLYFI.onClick_shareTrack_twitter = function(event) {
    var playerControls = FLYFI.playingTrack.playerControls ? FLYFI.playingTrack.playerControls : FLYFI.playerControls;
    if ($(event.target).attr('href') != '#' ) {return;}
    if (playerControls.trackDict) {
        var libraryID = playerControls.playlistDict ? playerControls.playlistDict.libraryID : null;
        FLYFI.onClick_shareTrack(playerControls.trackDict, 
                                 libraryID,
                                 function() { FLYFI.onClick_share_Twitter(event); });
    }
};
FLYFI.onClick_shareTrack_link = function(event) {
    var playerControls = FLYFI.playingTrack.playerControls ? FLYFI.playingTrack.playerControls : FLYFI.playerControls;
    if (playerControls.trackDict) {
        if (FLYFI.isContest()) {
            FLYFI.onClick_shareContestEntry();
        } else {
            var libraryID = playerControls.playlistDict ? playerControls.playlistDict.libraryID : null;
            FLYFI.onClick_shareTrack(playerControls.trackDict, libraryID);
        }
    }
};
FLYFI.onClick_sharePlaylist_link = function() {
    if (FLYFI.isContest()) {
        FLYFI.onClick_shareContestCategory();
    } else {
        var libraryDict = FLYFI.playingTrack.playerControls && FLYFI.playingTrack.playerControls.playlistDict ? FLYFI.playingTrack.playerControls.playlistDict : FLYFI.playerControls.playlistDict;
        if (libraryDict) {
            FLYFI.onClick_sharePlaylist(libraryDict);
        }
    }
};

FLYFI.onTimer_share_Email = function() {
    switch(FLYFI.shareDialogItem) {
        case FLYFI.shareDialogItem_Track:
            FLYFI.emailTrack(FLYFI.shareDialogTrackDict, FLYFI.shareDialogLibraryID, false);
            break;
            
        case FLYFI.shareDialogItem_Playlist:
            FLYFI.emailMyPlaylist(FLYFI.shareDialogLibraryDict, false);
            break;
            
        case FLYFI.shareDialogItem_Page:
            FLYFI.emailThisPage(false);
            break;
            
        case FLYFI.shareDialogItem_DailyBlog:
            FLYFI.emailDailyBlog(false);
            break;

        default:
            tb_remove();
            break;
    }
    FLYFI.shareDialogTrackDict = null;
    FLYFI.shareDialogLibraryID = null;
    FLYFI.shareDialogLibraryDict = null;
};

$(document).ready(function(){
    var shareMenu = $('.contenttoolbar .share_main .popmenu');
    shareMenu.find('.playlist').click(FLYFI.onClick_sharePlaylist_current);
    shareMenu.find('.page').click(FLYFI.onClick_sharePage);
    shareMenu.find('.dailyblog').click(FLYFI.onClick_shareDailyBlog);
    
    var shareButtons = $('#share');
    shareButtons.find('.email_track').click(FLYFI.onClick_shareTrack_email);
    shareButtons.find('.email_playlist').click(FLYFI.onClick_sharePlaylist_email);
    shareButtons.find('.twitter_track').click(FLYFI.onClick_shareTrack_link); // twitter);
    shareButtons.find('.twitter_playlist').click(FLYFI.onClick_sharePlaylist_link); //twitter);
    shareButtons.find('.link_track').click(FLYFI.onClick_shareTrack_link);
    shareButtons.find('.link_playlist').click(FLYFI.onClick_sharePlaylist_link);
    
    var shareDialog = $('#share_dialog');
    shareDialog.find('.facebook').click(FLYFI.onClick_share_Facebook);
    shareDialog.find('.myspace').click(FLYFI.onClick_share_MySpace);
    shareDialog.find('.twitter').click(FLYFI.onClick_share_Twitter);
    shareDialog.find('.email').click(FLYFI.onClick_share_Email);
});
