var BSS = BSS || {};
BSS.Player = {
  count: 0,
  playingNow: -1,
  play: function(id) {
      this.obj.play.find('i').addClass('pause');
      this.tracklist[id].smObj.play({
        onfinish: function(){
        }
      });
      this.playingNow = id;
      $('#track' + id++).addClass('hovered');
      this.setCurrentTrack(id);
        },
  toggle: function(id) {
    if(id == -1) {
      this.obj.play.find('i').addClass('pause');
      this.play(0);
    } else {
      this.tracklist[id].smObj.togglePause();
      this.obj.play.find('i').hasClass('pause') ? this.obj.play.find('i').removeClass('pause') : this.obj.play.find('i').addClass('pause');
    }
  },
  stop: function(id) {
    this.tracklist[id].smObj.stop();
    this.playingNow = -1;
  },
  obj: {
    player: '.player',
    play: '.play',
    list: '.playlist ul.total',
    currentTrack: '.playlist ul.current'
  },
  setCurrentTrack: function(id) {
    this.obj.currentTrack.html($('#track'+id).clone());
  },
  init: function() {
    this.obj.player = $(this.obj.player);
    this.obj.play = $(this.obj.play, this.obj.player);
    this.obj.list = $(this.obj.list, this.obj.player);
    this.obj.currentTrack = $(this.obj.currentTrack, this.obj.player);

    for(var i in this.tracklist) {
      this.tracklist[i].smObj = soundManager.createSound({
        id: this.tracklist[i].title,
        url: BSS.Config.SOUNDS_URL + this.tracklist[i].url
      });
      this.obj.list.append($.tmpl('<li id="track${id}">${title}<i class="bar"></i></li>', {title:this.tracklist[i].title, id:++this.count}));
    }
    
    this.setCurrentTrack(1);
  
    this.bindEvents();
    this.bindItemsEvents();
  },
  bindEvents: function() {
    this.obj.play.bind('click', function(){
      if(BSS.Player.playingNow == -1) {
        BSS.Player.play(0);
      } else {
        BSS.Player.toggle(BSS.Player.playingNow);
      }
    });
  },
  bindItemsEvents: function(id) {
    this.obj.player.bind('mouseover', function() {
      BSS.Player.obj.list.addClass('hovered');
    })
    .bind('mouseout', function(){
      BSS.Player.obj.list.removeClass('hovered');
    })
    .find('li').bind('click', function(){
      BSS.Debug(BSS.Player.playingNow);
      if(BSS.Player.playingNow != -1) {
        BSS.Player.stop(BSS.Player.playingNow);
      }
      BSS.Player.play($(this).attr('id').replace('track','') - 1);    
    })
  }
};


$(function(){
  soundManager.onready(function() {
    if (soundManager.supported()) {
      BSS.Player.init();
    }
  });
});

