// ===========
// = Globals =
// ===========
var delay_jPlayer;

// =============
// = Functions =
// =============
function toggle_play(){
  var jplayer = $('#jquery_jplayer');
  if(jplayer.jPlayer('getData', 'diag.isPlaying')){
    var action = 'pause';
  }else{
    var action = 'play';
  }
  jplayer.jPlayer(action);
}

function play_search_result(tr){
  activate_search_result(tr);
  jplay_song(current_song);
}

function jplay_track(track){
  play_track(track.song.title + ": " + track.title, track.song.cdnum, track.trknum);
}

function jplay_song(song, options){
  var options = options || {};
  if(options.track_id){
    var track = new Track(song.xml.find('t[id=' + options.track_id + ']:first'));
  }else{
    var track = song.tracks[0];
  }
  set_track_list(song);
  if(delay_jPlayer){
    // setTimeout(function(){jplay_song(song, options)}, 50);
  }else{
    delay_jPlayer = true;
    play_track([song.title, track.title].join(': '), song.cdnum, track.trknum);
    setTimeout(function(){delay_jPlayer = false}, 50);
  }
}

function play_track(title, cdnum, trknum) {
  set_track(title, cdnum, trknum);
  $("#jquery_jplayer").jPlayer("play");
}

function set_track(title, cdnum, trknum){
  current_track = new Track(current_song.xml.find('t[trknum=' + trknum + ']:first'));
  current_track.song = current_song;
  
  var mp3_url = "http://musicboxmx.com/serverMP3/serve.php?action=serveMP3&track=" + cdnum + "-" + trknum + "&USERID=-1";
  $('#jplayer_display .title').text(title);
  $("#jquery_jplayer").jPlayer("setFile", mp3_url);
}


// ===========
// = jPlayer =
// ===========
function jPlayer_init(mp3_url){
  // Local copy of jQuery selectors, for performance.
  var jpPlayTime = $("#jplayer_play_time");
  var jpTotalTime = $("#jplayer_total_time");

  $("#jquery_jplayer").jPlayer({
  	ready: function () {
  		if(mp3_url){this.element.jPlayer("setFile", mp3_url)};
  	},
  	volume: 50
  })
  .jPlayer("onProgressChange", function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
  	jpPlayTime.text($.jPlayer.convertTime(playedTime));
  	jpTotalTime.text($.jPlayer.convertTime(totalTime));
  })
  .jPlayer("onSoundComplete", function() {
  	this.element.jPlayer("play");
  });

}

// ============
// = Handlers =
// ============
$(function(){
  
  // =========================
  // = Next/Previous Buttons =
  // =========================
  $('#jplayer_display .next, #jplayer_display .previous').live('click', function(){
    
    if(current_song){
      var col_song = $('#search_results .col_song[rel=' + current_song.id + ']:first');
      if(col_song.length > 0){
        if($(this).hasClass('next')){
          var tr = col_song.parents('tr:first').next();
          if(tr.length == 0){tr = false}
        }else if($(this).hasClass('previous')){
          var tr = col_song.parents('tr:first').prev();
          if(tr.length == 0){tr = false}
        }
        if(tr){play_search_result(tr);}
      }else{
        play_search_result($('#search_results tbody tr:first'));
      }
    }else{
      play_search_result($('#search_results tbody tr:first'));
    }
    
  });
  
  // =======================
  // = Tracks Double Click =
  // =======================
  $('#tracks ul li *').live('dblclick', function(){
    var li = $(this).parents('li:first');
    var details = li.attr('rel').split(':');
    var song_id = details[0];
    var cdnum = details[1];
    var trknum = details[2];
    var track = new Track(current_song.tracks_xml.find('t[trknum=' + trknum + ']:first'));
    track.song = current_song;
    
    jplay_track(track);
  });
  
  // ===============================
  // = Search Results Double Click =
  // ===============================
  $('#search_results tr').live('dblclick', function(){
    jplay_song(current_song);
  })
})
