(function($){

})(jQuery);

var Player = {

  sm: null,

  song: null,
  songs: [],
  isPlaying: false,

  init: function(sm) {
    this.sm = sm;
  },

  play: function() {
    this.isPlaying = true;
    $(".tracklist li a").removeClass("playing");
    $($(".tracklist li a")[this.song.playlistIndex]).addClass("playing");
    if (!this.song.paused) { this.sm.stopAll(); }
    this.song.play();
    return this;
  },

  playNext: function(){
    var i = this.song.playlistIndex+1
    if (i >= $(".tracklist li").length) i = 0;
    this.loadFile($(".tracklist li a")[i]).play();
    return this;
  },

  pause: function() {
    this.isPlaying = false;
    this.song.pause();
    return this;
  },

  togglePlaying: function() {
    this.isPlaying ? this.pause() : this.play();
    return this;
  },

  loadFile: function(elm) {
    elm = $(elm);
    _this = this;
    beginLoading(elm);

    var i = elm.parents("li").index();
    if (!this.songs[i]) {
      this.songs[i] = this.sm.createSound({
        id: 'song'+i,
        url: elm.attr("href"),
        onfinish: function(){ _this.playNext(); },
        onload: doneLoading
      });
    }
    this.song = this.songs[i];
    this.song.playlistIndex = i;

    return this;
  }

};

function beginLoading(elm) {
  doneLoading();
  $(elm).addClass('loading');
}

function doneLoading(arg) {
  $(".tracklist li a").removeClass("loading");
}

function togglePlayPauseButton() {
  $(".player img").attr("src", (!Player.isPlaying ? '/images/play.png' : '/images/pause.png'));
}

soundManager.url = '/soundmanager/swf/';
soundManager.useHTML5Audio = true;
soundManager.onload = function(){
  Player.init(soundManager);

  $(".player a").css({opacity: '1', display: 'block'})
  $(".player a").live("click", function(e){
    e.preventDefault();
    if (!Player.song) { Player.loadFile($(".tracklist li:first-child a")); }
    Player.togglePlaying();
    togglePlayPauseButton();
  });
  $(".tracklist ul a").live('click', function(e){
    e.preventDefault();
    Player.loadFile(this).play();
    togglePlayPauseButton();
  });
};

