# TODO: complete this class
import math

class PaginationHelper:

  # The constructor takes in an array of items and a integer indicating
  # how many items fit within a single page
  def __init__(self, collection, items_per_page):
    self.collection = collection
    self.items_per_page = items_per_page      
  
  # returns the number of items within the entire collection
  def item_count(self):
    return len(self.collection)   
  
  # returns the number of pages
  def page_count(self):
    return int(math.ceil(1.0 * self.item_count() / self.items_per_page))            
 
  # returns the number of items on the current page. page_index is zero based
  # this method should return -1 for page_index values that are out of range
  def page_item_count(self,page_index):
    page_number = 0
    
    if page_index == self.page_count() - 1:
        page_number = self.item_count() % self.items_per_page
    else:
        page_number = self.items_per_page
    
    return -1 if page_index > self.page_count() - 1 else page_number
      
  
  # determines what page an item is on. Zero based indexes.
  # this method should return -1 for item_index values that are out of range
  def page_index(self,item_index):
    if item_index < self.item_count() and item_index >= 0 :
        return math.floor(item_index/self.items_per_page)
    return -1