button_enabled = {'visibility': 'visible', 'cursor': 'pointer'};
button_disabled = {'visibility': 'hidden', 'cursor': 'default'};


$( function() {
  var margin = 20;
  var slide_width = $('#slide_container').width()+margin;
  var item_width = $('#player_gallery .slide_inner').children(':first').width()+margin;
  var max_items = Math.floor(Number(slide_width/item_width));
  var num_children = $('#player_gallery .slide_inner').children().length;
  var child_array = Array();
  var progress = false;
  
  for (var i = 0; i < num_children; i++)
  {
    $item = $('#player_gallery .slide_inner').children().eq(i);
    child_array[i] = $item.children('a').attr('href');
  };
  
  $('div.text_content').jScrollPane();
  if (num_children > max_items)
  {
    $('#player_gallery .slide_right').css(button_enabled);
    $('#player_gallery .slide_left').css(button_disabled);
    
    $('#player_gallery .slide_right').bind('click', function(e) {
      if ($('#slide_container > .slide_inner:animated').length)
        return false;
      $('#player_gallery .slide_left').css(button_enabled);
      var pos = pxToNum($('#slide_container > .slide_inner').css('left'));

      if ((pos-slide_width*2)*-1 >= num_children*item_width)
        $('#player_gallery .slide_right').css(button_disabled);
      
      $('#slide_container > .slide_inner').animate(
          {'left': numToPx(pos-slide_width)}, 1000);
    });
    $('#player_gallery .slide_left').bind('click', function(e) {
      if ($('#slide_container > .slide_inner:animated').length)
        return false;
      $('#player_gallery .slide_right').css(button_enabled);
      var pos = pxToNum($('#slide_container > .slide_inner').css('left'));

      if (pos+slide_width >= 0)
        $('#player_gallery .slide_left').css(button_disabled);
      $('#slide_container > .slide_inner').animate(
          {'left': numToPx(pos+slide_width)}, 1000);
    });
  }
    
  $('#player_overview a.close').live('click', function() {
    if (!num_children) return true;
    try { flowplayer().stop(); } catch(e) {};
    $('.player-link').show();
    $('div#player_detail').fadeOut( function() {
      $('div#player_detail').remove();
    });
    return false;
  });
  
  $('.player-link > a').bind('click', function(e) {
    $('a.player').remove();
    try { flowplayer().stop(); } catch(e) {};
    var $detail = $('<div id="player_detail" style="display: none;"></div>');
    $detail.addClass($(this).parent().attr('id'));
    $('#content').append($detail);
    $detail.load($(this).attr('href'), function(responseText, status, request) {
      $detail.fadeIn( function() {
        $('div.text_content').jScrollPane();
        $('.player-link').hide();
        $('#player_detail .slide_right').css(button_enabled);
        $('#player_detail .slide_left').css(button_enabled);
      });
      
    });
    
    return false;
  });	
  
  $('#player_detail .slide_button').live('click', function(e) {
    if (progress) return;
    progress = true;
    try { flowplayer().stop(); } catch(e) {};
    var current = $('#player_detail').attr('class').split('_');
    current[1] = Number(current[1]);
    
    if ($(this).hasClass('slide_right'))
    {
      var direction = -830;
      current[1] = (current[1]+1 >= num_children)? 0: current[1]+1;
    } else {
      var direction = 830;
      current[1] = (current[1]-1 < 0)? num_children-1: current[1]-1;
    }
    var url = child_array[current[1]];
    $('#player_detail').attr('class', current.join('_'));
    $('#player_detail .detail').fadeOut(function() {
          $(this).remove();
          $detail = $('#player_detail');
          $detail.load(url, function(responseText, status, request) {
            $('.detail_container').hide();
            $('.detail_container').fadeIn( function() {
              progress = false;
              $('div.text_content').jScrollPane();
              $('#player_detail .slide_right').css(button_enabled);
              $('#player_detail .slide_left').css(button_enabled);
            });
          });
        });
  });
  
});

function pxToNum (value) {
  return Number(value.replace('px', ''));
}
function numToPx (value) {
  return String(value)+'px';
}
