topGivers = { page: 1, count: 0 };
$(document).ready(function(){
  topGivers.count = $('.topGiversContent .count').text();
  buildTopGiversPaginator();
  $('.topGiversNavContent .userFilter, .topGiversNavContent .causeFilter').change(function(){ topGiversChangeToPage( 1 ); }); 
});

function buildTopGiversPaginator( )
{
  var pageCount = Math.ceil( topGivers.count / 10 );
  if ( pageCount > 1 )
  {
    var html = '';
    // If we're not on page 1
    if ( topGivers.page > 1 )
    {
      // Previous pages
      for ( var i = (topGivers.page - 1);( ( i >= 1 ) && ( topGivers.page - i <= 2 ) ); i-- )
      {
        var pclass = 'pseudolink';
        if ( i == topGivers.page )
        {
          pclass += ' selected';
        }
        html = '<span class="' + pclass + '">' + i + '</span>' + html;
      }
      
      if ( i - 1 == 1 || i == 1 )
      {
        html = '<span class="pseudolink">' + i + '</span>' + html;
        if ( i - 1 == 1 )
        {
          html = '<span class="pseudolink">1</span>' + html;
        }
      } 
      
    }
    
    // Next pages
    for ( var i = topGivers.page; ( i <= topGivers.page + 2 && i <= pageCount ); i++ )
    {
      var pclass = 'pseudolink';
      if ( i == topGivers.page )
      {
        pclass += ' selected';
      }
      html += '<span class="' + pclass + '">' + i + '</span>';
    }
    
    if ( i + 1 == pageCount || i == pageCount )
    {
      html += '<span class="pseudolink">' + i + '</span>';
      if ( i + 1 == pageCount )
      {
        html += '<span class="pseudolink">' + ( i + 1 ) + '</span>';
      }
    } 
    
    // If we're not already on the first page... show the first page link
    if ( topGivers.page > 1 )
    {
      html = '<span class="pseudolink prev">&laquo;</span>' + html;
    }
    
    // If we're not already on the last page... show the last page link.
    var lastPage = Math.ceil( topGivers.count / 10 );
    if ( topGivers.page != lastPage )
    {
      html += '<span class="pseudolink next">&raquo;</span>';
    }

    $('.pageNavContainer .pages').html( html );
    $('.pageNavContainer .pages span').click(changeTopGiversPage);
    $('.bottomGiversNav').show();
  } else {
    $('.pageNavContainer .pages').html('');
    $('.bottomGiversNav').hide();
  }
  return pageCount;
}

function changeTopGiversPage()
{ 
  var nextVal = $(this).text();
  if ( $(this).hasClass('prev') )
  {
    nextVal = 1;
  } else if ( $(this).hasClass('next') ) {
    var lastPage = Math.ceil( topGivers.count / 10 );
    nextVal = lastPage;
  }
  topGiversChangeToPage( nextVal );
}

function topGiversChangeToPage( pageNumber )
{
  $('.pageNavContainer .loading').show();
  topGivers.page = parseInt( pageNumber );
  $.ajax({
    url: '/topgivers/ajax',
    data: { 
      page: topGivers.page,
      filter: $('.topGiversNavContent .userFilter').val(),
      causeId: $('.topGiversNavContent .causeFilter').val()
    },
    dataType: 'json',
    type: 'post',
    success: function(data){
      if ( data.markup )
      {
        $('.topGiversContent').html( data.markup );
        topGivers.count = data.count;
        buildTopGiversPaginator();
        $('.pageNavContainer .loading').hide();
        
        var windowHeight = $(window).height();
        var scrollTop = $(document).scrollTop();
        var scrollBottom = scrollTop + windowHeight;
        var elementTop = $('.topGiversContentContainer').offset().top;
        if ( elementTop < scrollTop )
        {
          $(document).scrollTop( elementTop );
        }
      }
    }
  });
}