// =============
// = Functions =
// =============
function activate_search_result(tr){
  $.each(dataTable.fnGetNodes(), function(){$(this).removeClass('active')});
  tr.addClass('active');
  var song_id = tr.find('.col_song').attr('rel');
  var jquery_song = $(songs_xml).find('song[id=' + song_id + ']:first');
  song = new Song(jquery_song);
  
  set_track_list(song);
}

function set_track_info(song, track){
  $('#track_info .info').html('');
  $('#track_info .info').append(
    "<div>" + [song.cdnum, '-', track.trknum, ':', song.title, '<br />', track.desc].join(' ') + "</div>" +
    "<div>" + ['Composers:', song.composers].join(' ') + "</div>" +
    "<div>" + ['Publishers:', song.publishers].join(' ') + "</div>" +
    "<div>" + ['Tempo:', song.tempo].join(' ') + "</div>" +
    "<div>" + ['Instrumentation:', song.instrumentation].join(' ') + "</div>"
  )
}

function set_track_list(song, options){
  if(logged_in()){$('#tracks a.download_cd').show();}
  current_song = song;
  var options = options || {};

  var cdnum = song.cdnum;
  if(options.track_id){
    var track = new Track(song.xml.find('t[id=' + options.track_id + ']:first'))
  }else{
    var track = song.tracks[0];
  }
  track.song = song
  var trknum = track.trknum;

  // set clicked song
  $('#artwork .title').text([cdnum, song.cdtitle].join(' '));
  $('#artwork .image img').attr('src', 'http://musicboxmx.com/live/covers/' + cdnum + '.jpg');
  set_track_info(song, track);
  
  var song_id = song.id;
  var cdnum = song.cdnum;

  $('#tracks ul').html('');
  var class_name = 'even';
  var tracks = song.tracks;
  $.each(tracks, function(k, track){
    if(class_name == 'even'){class_name = 'odd'}else{class_name = 'even'}
    var track_details = ["SID=" + song_id, "cdnum=" + cdnum, "trknum=" + track.trknum, "TID=" + track.id].join(':');
    $('#tracks ul').attr('rel', cdnum);
    $('#tracks ul').append(
      "<li class='" + 
      class_name + "' rel='" + 
      [song_id, cdnum, track.trknum].join(':') + "'><div class='wrapper'><span class='text'>" + 
      song.title + ": " + track.title + "</span><div class='actions floatright'><div class='play' title='" + 
      track.stitle + "' rel='" +
      track_details + "'>&#9658;</div><div rel='" + 
      track_details + "' class='add_to_project'>+</div><div class='download_track' rel='" + 
      [song_id, cdnum, track.trknum].join(':') + "'>&#8675;</div></div></div></li>"
    );
  });
  // if(!logged_in()){$('.download_track').css('display', 'none');}
  $('#tracks li').disableSelect();
}

function add_to_project(project_track){
  var title = project_track.title;
  var song_id = project_track.song.id;
  var cdnum = project_track.song.cdnum;
  var trknum = project_track.track.trknum;
  var ptid = project_track.id;
  var tid = project_track.track.id
  var track_details = ["TID=" + tid, "SID=" + song_id, "cdnum=" + cdnum, "trknum=" + trknum, "PTID=" + ptid].join(':');
  
  $('#projects .tracks .current_project').append(
    "<li id='pTrackIDs_" + ptid + "' class='track_info' rel='" + track_details + 
    "'><span class='text'>" + cdnum + ": <span class='stitle'>" + title + 
    "</span></span><div class='actions floatright'><a class='jplay_track' title='" +
    title + "' rel='" +
    track_details + "'>&#9654;</a><a class='add_to_project' rel='" +
    track_details + "'>+</a><a class='download_track' rel='" + 
    [song_id, cdnum, trknum].join(':') + 
    "'>&#8675;</a><a class='remove_from_project' rel='" + 
    ["PID=" + current_project.id, "PTID=" + ptid].join(":") + "'>x</a></div></li>"
  );

  zebra($('#projects .tracks .current_project'));
}

// ==================
// = Document Ready =
// ==================
$(function(){
  // =================
  // = Current Track =
  // =================
  // show info
  $('#links a.show').click(function(){
    if(current_track){
      set_track_list(current_track.song, {track_id:current_track.id});
    }else{
      alert("Please select a track.");
    }
  });
  
  // add to project
  $('#links a.add').click(function(){
    if(logged_in()){
      if(current_track){
        add_track_to_project({
          SID:current_track.song.id, 
          TID:current_track.id, 
          trknum:current_track.trknum, 
          cdnum:current_track.song.cdnum
        });
      }else{
        alert("Please select a track.");
      }
    }else{
      login_overlay.load();
    }
  });
  
  // ===============
  // = Downloads =
  // ===============
  //  download tracks
  $('.download_track').live('click', function(){
    var array = $(this).attr('rel').split(':');
    var song_id = array[0];
    var cdnum = array[1];
    var trknum = array[2];
    $('#download_url').val(download_track_url(cdnum, trknum));
    if(logged_in()){
      download_overlay.load();
    }else{
      login_overlay.load();
    }
  });
  //  download cds
  $('#tracks .download_cd').live('click', function(){
    var format = $(this).attr('rel');
    var cdnum = current_song.cdnum;
    if(cdnum){
      $('#download_url').val(download_cd_url(cdnum));
      download_overlay.load();
    }else{
      alert('Please select a song!')
    };
  });


  // ==================
  // = Set/Play Track =
  // ==================
  $('#tracks ul li *').live('click', 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'));
    set_track_info(current_song, track)
    if(li.hasClass('active')){
      if($(this).hasClass('play')){$('#jquery_jplayer').jPlayer('play')}
    }else{
      if($(this).hasClass('play')){
        play_track(li.find('.text').text(), cdnum, trknum);
      }else{
        set_track(li.find('.text').text(), cdnum, trknum);
      }
    }
    li.siblings().removeClass('active');
    li.addClass('active');
  });

  // ==============
  // = Play Track =
  // ==============
  $('.current_project .jplay_track').live('click', function(e){
    var attributes = parse_attributes($(this).attr('rel'));
    var song = new Song(current_project.xml.find('song[id=' + attributes.SID + ']:first'));
    
    jplay_song(song, {track_id:attributes.TID});
  });

  // ================
  // = Song Details =
  // ================
  // from project
  $('#projects .current_project li .text').live('click', function(){
    var PTID = $(this).parents('li:first').attr('rel').match(/PTID=\w+/)[0].replace('PTID=', '');
    var project_track = new pTrack(current_project.xml.find('pt[id=' + PTID + ']:first'));
    var song = project_track.song;
    set_track_list(song);
  });

  // from search
  $('#search_results tbody tr').live('click', function(){
    activate_search_result($(this));
  });
})