/*Audio*/ 
function dragEvents() {
  $("ul#itemList li div.event").draggable({'revert' : true, 'zIndex' : 5, 'scope' : 'player'});
  $("#playerMini").droppable({
    'scope' : 'player',
    'activeClass' : 'activeHover',
    'hoverClass' : 'dropHover',
    'activate' : function () {
      $(this).parent().prepend('<div class="globalOverlay" id="playerOverlay"><div class="globalOverlayContainer"></div></div>');
    },
    'deactivate' : function () {
      $("#playerOverlay").fadeOut(function() { $(this).remove(); });
    },
    'drop' : function () {
      var searchTerms = new Array;
      $('.ui-draggable-dragging .eventTitle, .ui-draggable-dragging .eventSubtitle').each(function(index) {
        searchTerms.push($(this).text().split(' '));
      });
      var query = new Array;
      $.each(searchTerms, function(index, element){
        query.push(element.join('+'));
      });
      if (request) {
        request.abort();
      }
      var request = $.ajax({
        url: SITE_URL+'/tracks/find_tracks',
        data: {query:query.join('+')},
        type: "POST",
        success: function (response) {
          var tracks = $.parseJSON(response);
          if (tracks == '') {
            $("#playerContainer").html('<div id="tracksNotice"><p>Sorry, couldn\'t find any tracks for this event.</p> <p>Why don\'t you listen to our <a href="" id="radioLink" class="radioMode">radio station</a> or <a href="" id="tracksLink" class="trackMode">playlist</a> instead.</p></div>');
          } else {
            var request = $.ajax({
              url: SITE_URL+'/tracks/view',
              data : {data:tracks},
              type : "POST",
              success : function (response) {
                $("#playerContainer").html(response);
                $('.scroll-pane').jScrollPane();
                loadAudioPlayer();
              }
            });
          }
        }
      });
    }
  });
}

function loadVideoPlayer() {
  $('.video-info-close').click(function() {
    $('.jspContainer').show();
    $('.jspContainer').animate({'left':'0px'}, 'fast', function() {
      $("#miniVideo").remove();
    });
  });
  
  $("#videoTrack").hide();
  var filePath = $("#videoTrack video").attr('src');
  var timestamp = readCookie('jplayerTimestamp');
  removeCookie('jplayerTimestamp');

	$("#jquery_jplayer").jPlayer({
		swfPath: SITE_URL+"/files/",
		ready: function () {
      $(this).jPlayer("setMedia", {
        ogv: filePath,
      });
      if (timestamp != null) {
        if (timestamp != 0) {
          $(this).jPlayer("play", timestamp);
        }
      }
		},
		volume: 100,
		supplied: "ogv"
	});
}

function loadAudioPlayer() {
  $("tr#trackControls").show();
  $("#audioTrack").hide(); 
  var filePath = $("#audioTrack audio").attr('src');
  //var filePath = MEDIA_URL+filePath;
  var timestamp = readCookie('jplayerTimestamp');
  removeCookie('jplayerTimestamp');
	$("#jquery_jplayer").jPlayer({
		swfPath: SITE_URL+"/files/",
		ready: function () {
      $(this).jPlayer("setMedia", {
        oga: filePath
      });
      if (timestamp != 0 && timestamp != null) {
        $(this).jPlayer("play", timestamp);
      }
		},
		volume: 100,
		supplied: "oga"
	});

  $(".jp-volume-slider").click(function() {
    switch($(this).attr('id')) {
      case 'jplayer_volume_lowest':
        $("#jquery_jplayer").jPlayer("volume", 10);
      break;
      case 'jplayer_volume_lower':
        $("#jquery_jplayer").jPlayer("volume", 25);
      break;
      case 'jplayer_volume_higher':
        $("#jquery_jplayer").jPlayer("volume", 50);
      break;
      case 'jplayer_volume_highest':
        $("#jquery_jplayer").jPlayer("volumeMax");
      break;
    }
  });
  
  $("#extendedPlayer").hover(function() {
    $("#extendedPlayer #largePlayButton.pause").fadeIn();
  }, function() {
    $("#extendedPlayer #largePlayButton.pause").fadeOut();  
  });

  $("#largePlayButton").click(function(event) {
    if (!$(this).hasClass('pause')) {
      $(this).addClass('pause');
      $("#jquery_jplayer").jPlayer("play");
    } else {
      $(this).removeClass('pause');
      $("#jquery_jplayer").jPlayer("pause");
    }
  });
}

function loadTracks() {
  $("table.playerMiniPlaylist tr[class!='currentTrack'], table.playerPlaylist tr[class!='currentTrack']").live('click', function() {
    //Remove instances of active jPlayer
    $("#jquery_jplayer").remove();
    var playerType = $("#playerMini").length;
    if (playerType == 0) {
      player = 'external';
    } else {
      player = 'mini';
    }
    $("tr#trackInfo td.playerOptions").html('<span class="playerOpen"><img src="'+SITE_URL+'/images/spacer.gif" alt="Open" /></span>');
    $("tr#trackInfo").removeAttr('id').removeClass('currentTrack');
    $("tr#trackControls, #audioTrack").remove();
    $(this).attr({'id':'trackInfo'});
    $(this).addClass('currentTrack');
    $("tr#trackInfo td.playerOptions").html('<span id="playerClose"><img src="'+SITE_URL+'/images/spacer.gif" alt="Close" /></span>');
    if ($(this).hasClass('video')) {
      var file = $(this).children();
      var fileId = file.eq(0).html();
      var filePath = file.eq(1).html();
      var fileNumber = file.eq(2).html();
      var fileTitle = file.eq(3).html();
      var fileArtist = file.eq(4).html();
      var filePoster = file.eq(5).html();
      $('#playerContainer .jspContainer').animate({'left':'-175px'}, 'fast', function() {
        $(this).hide();
        currentTrack = $(this);
      });
      if (request) {
        request.abort();
      }
      var request = $.ajax({
        url : SITE_URL+'/tracks/play',
        type : "POST",
        data : {id:fileId,player:player,path:filePath,type:'video',poster:filePoster,number:fileNumber,title:fileTitle,artist:fileArtist},
        success : function (response) {
          if (player == 'mini') {
            $(response).insertAfter(currentTrack);
          } else {
            $("#playerCanvas").html(response);
          }
          loadVideoPlayer();
        }      
      });
    } else {
      $("tr#trackInfo td.playerOptions").html('<span class="playerOpen"><img src="'+SITE_URL+'/images/spacer.gif" alt="Open" /></span>');
      $("tr#trackInfo").removeAttr('id').removeClass('currentTrack');
      $("tr#trackControls, #audioTrack").remove();
      $(this).attr({'class':'currentTrack','id':'trackInfo'});
      $("tr#trackInfo td.playerOptions").html('<span id="playerClose"><img src="'+SITE_URL+'/images/spacer.gif" alt="Close" /></span>');
      var currentTrack = $(this);
      var fileId = currentTrack.children().eq(0).html();
      var filePath = currentTrack.children().eq(1).html();
      if (request) {
        request.abort();
      }
      var request = $.ajax({
        url : SITE_URL+'/tracks/play',
        type : "POST",
        data : {id:fileId,player:player,path:filePath,type:'audio'},
        success : function (response) {
          if (player == 'mini') {
            currentTrack.after(response);
          } else {
            $("#playerCanvas").html(response);
          }
          loadAudioPlayer();
        }      
      });
    }
  });
}

function wormPlayer() {
  $('.scroll-pane').jScrollPane({showArrows: true, animateScroll: true});
  $('.jspPane').css({'margin-left':0}); 
  $('#playerMiniSeparate').click(function(event) {
    var trackId = $("#trackInfo.currentTrack td.trackId").text();
    //Set a timestamp cookie to resume playing
    var timestamp = $('#jquery_jplayer').data("jPlayer").status.currentTime;
    document.cookie = 'jplayerTimestamp='+timestamp+'; path=/';

    if(typeof(winRef) == 'undefined' || winRef.closed){
      winRef = window.open(SITE_URL+'/home/external_player/'+'id:'+trackId, 'External player');
    } else {
      winRef.focus();
    }
    event.preventDefault();
  });
  loadTracks();
}

function showMediaContainer() {
  $("#pageMedia").slideToggle('fast', function() {
    $("ul#pageMediaNavigation").addClass('visible').animate({
      opacity: 1
    }, 'fast', function () {
      $("ul#pageMediaNavigation li").each(function(i, e) {
        $(e).animate({opacity : 1}, {duration: 100, queue: "mediaQueue"});
      }); 
    });
  });
}

function toggleMedia() {
  //$("#pageMedia").hide();
  //$("ul#pageMediaNavigation, ul#pageMediaNavigation li").css({'opacity':0});
  $("#moreMedia").click(function() {
    var pageMediaNavigation = $("ul#pageMediaNavigation.visible");
    if (pageMediaNavigation.attr('class')) {
      $(pageMediaNavigation).animate({'opacity':0}, 'fast', function() {
        showMediaContainer();
      });
    } else {
      showMediaContainer();
    }
  });
}

function switchModes() {
  $("#playerMiniModes span:not(.inactive), a#tracksLink, a#radioLink").live('click', function(event) {
    $('#playerMiniModes span').removeClass('selected');
    var modeType = $(this).attr('class');
    $(this).addClass('selected');
    switch(modeType) {
      case 'streamMode':
        var requestType = 'stream';
      break;
      case 'radioMode':
        var requestType = 'radio';
      break;
      default:
        var requestType = 'playlist';
      break;
    }
    if (request) {
      request.abort();
    }
    var request = $.ajax({
      url: SITE_URL+'/home/player',
      type: 'GET',
      data : {'requestType' : requestType},
      beforeSend : function () {
        $('#playerContainer').html('').addClass('loading');
      },
      success: function(data) {
        $('#playerContainer').removeClass('loading');
        $('#playerContainer').html(data);
        $('.scroll-pane').jScrollPane();
        loadAudioPlayer();
      }
    });
    event.preventDefault();
  });
}

function switchMediaTypes() {
  $('#pageMediaNavigation li.mediaTab a').click(function(event) {
    $('#pageMediaNavigation li.mediaTab a').removeClass('selected');
    $(this).toggleClass('selected');
    if ($(this).hasClass('video')) {
      $('.mediaContainer').removeClass('selected');
      $("#videoSection").addClass('selected');
    } else if ($(this).hasClass('audio')) {
      $('.mediaContainer').removeClass('selected');
      $("#audioSection").addClass('selected');
    } else if ($(this).hasClass('images')) {
      $('.mediaContainer').removeClass('selected');
      $("#imagesSection").addClass('selected');
    }
    event.preventDefault();
  });
}

function loadSelectedMedia() {
  $('ul.mediaList li a').click(function(event) {
    var hyperlink = $(this);
    var contentContainer = $('#extendedPlayerInner');
    if (!$(this).hasClass('selected')) {
      if (request) {
        request.abort();
      }
      var request = $.ajax({
        url : $(this).attr('href'),
        beforeSend : function() {
          contentContainer.html('').addClass('loading');
        },
        success : function(response) {
          $('ul.mediaList li a').removeClass('selected');
          hyperlink.addClass('selected');
          contentContainer.removeClass('loading').html(response).hide().fadeIn();
        }
      });
    }
    event.preventDefault();
  });
}

$(document).ready(function() {
  loadAudioPlayer();
  loadVideoPlayer();
  switchModes();
  toggleMedia();
  wormPlayer();
	dragEvents();
  switchMediaTypes();
  loadSelectedMedia();
});
