jQuery.tabs_v2_pager = {
  
  init: function(total, results_per_page, rows){
    log('tabs_v2_pager.init');
    
    // set options
    this.options = new Object();
    
    // init var for html
    this.options.pager_html = '';
    
    // set max pages
    this.options.max_pages = 10;
    
    // get current page
    this.options.current_page = parseInt(jQuery('#current_page').val());
    
    // set total results
    this.options.total_results = total;
    
    // calc number of pages
    this.options.num_pages = Math.ceil(total / results_per_page);
    
    // calc min and max fo this page
    this.options.min = ((this.options.current_page - 1) * results_per_page) + 1;
    this.options.max = this.options.min + parseInt(rows) - 1;
    
    // run pager based on page number
    if(this.options.num_pages < 2)
    {
      this.insertPager();
    }
    else if(this.options.num_pages <= this.options.max_pages)
    {
      this.simplePager();
    }
    else
    {
      this.complexPager();
    }
  },
  
  simplePager: function(){
    log('tabs_v2_pager.simplePager');
    
    for(var i = 0; i < this.options.num_pages; i++)
    {
      this.addPageControl(i + 1);
    }
    
    this.insertPager();
  },
  
  complexPager: function(){
    log('tabs_v2_pager.complexPager');
    
		for(i = 0; i < 3; i++)
		{
		  this.addPageControl(i+1);
		}
		
		if (this.options.current_page < 6)
		{
			for(i = 0; i < 3; i++)
			{
			  this.addPageControl(i+4);
			}
		}
		else
		{
			this.options.pager_html += '<span class="page_spacer">...</span>';
			
			if (this.options.current_page > (this.options.num_pages - 5))
			{
				var offset = this.options.num_pages - 5;
				
        for(i = 0; i < 6; i++)
  			{
  			  this.addPageControl(offset+i);
  			}
			}
			else
			{
				this.addPageControl((this.options.current_page - 1));
				this.addPageControl((this.options.current_page));
				this.addPageControl((this.options.current_page + 1));
			}
		}
		
		if (this.options.current_page < (this.options.num_pages - 4))
		{
			this.options.pager_html += '<span class="page_spacer">...</span>';
			
			this.addPageControl(this.options.num_pages - 2);
			this.addPageControl(this.options.num_pages - 1);
			this.addPageControl(this.options.num_pages);
		}
		
    // insert
		this.insertPager();
  },
  
  addPageControl: function (index){
		this.options.pager_html += '<span class="page_control ' + (this.options.current_page == index ? 'inactive' : '' ) + '" id="pager_' + index + '">' + index + '</span>';
	},
  
  insertPager: function(){
    log('tabs_v2_pager.insertPager');
    
    this.options.pager_html = '<div class="pagerHolder"><p>Showing ' + this.options.min + ' to ' + this.options.max + ' of ' + this.options.total_results + ' results</p><div class="pagerControls">' + this.options.pager_html + '</div></div>';
    
    jQuery('div.searchPager').html(this.options.pager_html);
    
    // add click events
    jQuery('span.page_control').click(function(){
      
      // only run if not inactive
      if(!jQuery(this).hasClass('inactive'))
      {
        // set page num in form
        jQuery('#current_page').val(jQuery(this).attr('id').split('_')[1]);
        
        log('current page: ' + jQuery('#current_page').val());

        // submit form or run advanced
        if(generalSearch)
        {
          // set page num
          search_obj.current_page = jQuery('#current_page').val();
          
          // get active tab and run appropriate search
          runActiveSearch();
        }
        else if(advSearchFlag)
        {
          // set page num in adv search object
          advSearchObject.current_page = jQuery('#current_page').val();
          
          tab_actions.runAdvSearch();
        }
        else
        {
          tab_actions.runSearch();
        }
      }
      
    });
  }
  
};
