jQuery.artist = (function ($) {
    var _deferredArtist,
        self;
        
    self = {
        fromData: function (artistData) {
            var artist,
                deferredSongs;

            function getSongsData() {
                if (artistData.links && artistData.links.songs) {
                    return $.ajax({
                        url: artistData.links.songs,
                        dataType: 'json'
                    });
                }
                else {
                    return $.Deferred().resolve([]);
                }
            }

            function getSongs(options) {
                if (!deferredSongs || (options && options.flush)) {
                    deferredSongs = getSongsData();
                }

                return deferredSongs;
            }

            if (!artistData) {
                return null;
            }

            artist = $.extend({}, artistData);
            artist.songs = getSongs;

            return artist;
        }
    };

    return self;

})(jQuery);


