//
// Last.fm jQuery plugin
// Paul Philippov, <themactep@gmail.com>
// Last Change: 21-Mar-2010.
//

(function($){
  $.fn.extend({
    lastfm: function(username){

      // exit is caller element does not exists
      if (this.length == 0) return false;

      // debug with Firebug
      if (typeof(console) != 'undefined') {
        console.log("Last.fm plugin loaded");
        console.log(this);
      }

      var API_URL = 'http://ws.audioscrobbler.com/2.0/'
      var API_KEY = '8e49acf97ceff1e7622aa646c090a6e6';
      var el = $(this);

      var url = API_URL+'?format=json&api_key='+API_KEY+'&user='+username+
                        '&method=user.getrecenttracks&limit=1&callback=?';

      $.getJSON(url, function(data, textStatus) {
        if (data.status == 'failed') return false;

        // throw data to FireBug console if exists
        if (typeof(console) != 'undefined') console.log(data);

        // get element id
        var id = $(el).attr('id');

        // get data for recent track
        var track = $.isArray(data.recenttracks.track)
          ? data.recenttracks.track[0]
          : data.recenttracks.track;

        // get user data
        var user = data.recenttracks['@attr'].user;

        // get album cover
        var cover = (track.image && track.image[2] && track.image[2]['#text'] && track.image[2]['#text'] != '')
          ? $('<img/>').attr('src',track.image[2]['#text']).attr('alt',track.album['#text'])
          : 'no image';

        // build link to user profile
        $('#'+id+' h2 a').attr('href','http://last.fm/user/'+user).html('last.fm/user/'+user);

        // show album cover
        $(el).append($('<div/>').html(cover));

        // show track and artist name
        var artist_url = track.url.split('/').slice(0,5).join('/');
        $(el).append(
          $('<p/>')
            .append($('<a/>').attr('href',track.url).html(track.name))
            .append($('<br />'))
            .append('performed by')
            .append($('<br />'))
            .append($('<a/>').attr('href',artist_url).html(track.artist['#text']))
        );

        // show timestamp
        if (track['@attr'] && track['@attr'].nowplaying == 'true')
          $(el).append($('<em/>').html('now playing'));
        else if (track.date)
          $(el).append($('<em/>').html(track.date['#text']));

        return true;
      });
      return true;
    }
  });
})(jQuery);
