Args:
        * offset - Integer - The positive / negative change to apply
          to the item.
        * max_item_count - The maximum number of items available.
        * nom - None on Max or Min - If max or min number of itemsreached,
          return none instead of forcing back into range.

    Returns:
        Boolean - True if successful, False if nom is True and the
        value was forced back within the boundry.

    change_item's use case is +1 / -1 incrementing through a gallery.

    The logic works fine for +1 boundary between pages

def change_item(self, offset=None, max_item_count=None, nom=True):
        """
    Args:
        * offset - Integer - The positive / negative change to apply
          to the item.
        * max_item_count - The maximum number of items available.
        * nom - None on Max or Min - If max or min number of itemsreached,
          return none instead of forcing back into range.

    Returns:
        Boolean - True if successful, False if nom is True and the
        value was forced back within the boundry.

    change_item's use case is +1 / -1 incrementing through a gallery.

    The logic works fine for +1 boundary between pages
        """
        if offset == None:
            return

        if self.slots['item'] == None:
            self.slots['item'] = 1

        new_item = self.slots['item']+offset
        if new_item > max_item_count:
            new_item -= max_item_count
            self.change_page(offset=+1, nom=False)
        elif new_item < 1 and self.current_page() > 1:
            self.change_page(offset=-1, nom=False)
            if max_item_count != None:
                new_item += max_item_count
            else:
                new_item += self.page_items

        self.slots['item'] = new_item
        return True