def search(self, search_term, column="title", number_results=25):
        """
        TODO:
        Add documentation
        DONE -> Search multiple pages untile the number_results is meet or the end.
        Check for strange encodings, other langauges chinese,etc..
        Simplify,simplify,simply...For exemple the book dictionary
        should start with all keys with an empty string.
        Change the actual output to json?
        Make a example terminal app that uses it
        STARTED -> Add parameters to the search apart from the search_term
        """
        request={"req":search_term,"column":column}
        self.__choose_mirror()
        if sys.version_info[0] < 3:
            url = self.__selected_mirror+"/search.php?"+ \
                    urllib.urlencode(request)
        else:
            url = self.__selected_mirror+"/search.php?"+ \
                    urllib.parse.urlencode(request)
        self.grabber.go(url)
        search_result = []
        nbooks = re.search(r'([0-9]*) (books|files)',
                           self.grabber.doc.select(
                               "/html/body/table[2]/tr/td[1]/font").text())
        nbooks = int(nbooks.group(1))
        pages_to_load = int(math.ceil(number_results/25.0)) # Pages needed to be loaded
        # Check if the pages needed to be loaded are more than the pages available
        if pages_to_load > int(math.ceil(nbooks/25.0)):
            pages_to_load = int(math.ceil(nbooks/25.0))
        for page in range(1, pages_to_load+1):
            if len(search_result) > number_results:  # Check if we got all the results
                break
            url = ""
            request.update({"page":page})
            if sys.version_info[0] < 3:
                url = self.__selected_mirror+"/search.php?"+ \
                      urllib.urlencode(request)
            else:
                url = self.__selected_mirror+"/search.php?"+ \
                      urllib.parse.urlencode(request)
            self.grabber.go(url)
            search_result += self.__parse_books()
            if page != pages_to_load:
                # Random delay because if you ask a lot of pages,your ip might get blocked.
                time.sleep(random.randint(250, 1000)/1000.0)
        return search_result[:number_results]