Enables real page numbers for URI segment in Pagination library
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index cc62e66..cdaacf2 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -34,6 +34,7 @@
 	var $per_page			= 10; // Max number of items you want shown per page
 	var $num_links			=  2; // Number of "digit" links to show before/after the currently viewed page
 	var $cur_page			=  0; // The current page being viewed
+	var $use_page_numbers	= FALSE; // Use page number for segment instead of offset
 	var $first_link			= '‹ First';
 	var $next_link			= '>';
 	var $prev_link			= '<';
@@ -128,12 +129,22 @@
 			return '';
 		}
 
+		// Set the base page index for starting page number
+		if ($this->use_page_numbers)
+		{
+			$base_page = 1;
+		}
+		else
+		{
+			$base_page = 0;
+		}
+
 		// Determine the current page number.
 		$CI =& get_instance();
 
 		if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
 		{
-			if ($CI->input->get($this->query_string_segment) != 0)
+			if ($CI->input->get($this->query_string_segment) != $base_page)
 			{
 				$this->cur_page = $CI->input->get($this->query_string_segment);
 
@@ -143,7 +154,7 @@
 		}
 		else
 		{
-			if ($CI->uri->segment($this->uri_segment) != 0)
+			if ($CI->uri->segment($this->uri_segment) != $base_page)
 			{
 				$this->cur_page = $CI->uri->segment($this->uri_segment);
 
@@ -151,6 +162,12 @@
 				$this->cur_page = (int) $this->cur_page;
 			}
 		}
+		
+		// Set current page to 1 if using page numbers instead of offset
+		if ($this->use_page_numbers AND $this->cur_page == 0)
+		{
+			$this->cur_page = $base_page;
+		}
 
 		$this->num_links = (int)$this->num_links;
 
@@ -161,18 +178,32 @@
 
 		if ( ! is_numeric($this->cur_page))
 		{
-			$this->cur_page = 0;
+			$this->cur_page = $base_page;
 		}
 
 		// Is the page number beyond the result range?
 		// If so we show the last page
-		if ($this->cur_page > $this->total_rows)
+		if ($this->use_page_numbers)
 		{
-			$this->cur_page = ($num_pages - 1) * $this->per_page;
+			if ($this->cur_page > $num_pages)
+			{
+				$this->cur_page = $num_pages;
+			}
+		}
+		else
+		{
+			if ($this->cur_page > $this->total_rows)
+			{
+				$this->cur_page = ($num_pages - 1) * $this->per_page;
+			}
 		}
 
 		$uri_page_number = $this->cur_page;
-		$this->cur_page = floor(($this->cur_page/$this->per_page) + 1);
+		
+		if ( ! $this->use_page_numbers)
+		{
+			$this->cur_page = floor(($this->cur_page/$this->per_page) + 1);
+		}
 
 		// Calculate the start and end numbers. These determine
 		// which number to start and end the digit links with
@@ -203,7 +234,14 @@
 		// Render the "previous" link
 		if  ($this->prev_link !== FALSE AND $this->cur_page != 1)
 		{
-			$i = $uri_page_number - $this->per_page;
+			if ($this->use_page_numbers)
+			{
+				$i = $uri_page_number - 1;
+			}
+			else
+			{
+				$i = $uri_page_number - $this->per_page;
+			}
 
 			if ($i == 0 && $this->first_url != '')
 			{
@@ -223,9 +261,16 @@
 			// Write the digit links
 			for ($loop = $start -1; $loop <= $end; $loop++)
 			{
-				$i = ($loop * $this->per_page) - $this->per_page;
+				if ($this->use_page_numbers)
+				{
+					$i = $loop;
+				}
+				else
+				{
+					$i = ($loop * $this->per_page) - $this->per_page;
+				}
 
-				if ($i >= 0)
+				if ($i >= $base_page)
 				{
 					if ($this->cur_page == $loop)
 					{
@@ -233,7 +278,7 @@
 					}
 					else
 					{
-						$n = ($i == 0) ? '' : $i;
+						$n = ($i == $base_page) ? '' : $i;
 
 						if ($n == '' && $this->first_url != '')
 						{
@@ -253,13 +298,29 @@
 		// Render the "next" link
 		if ($this->next_link !== FALSE AND $this->cur_page < $num_pages)
 		{
-			$output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page * $this->per_page).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close;
+			if ($this->use_page_numbers)
+			{
+				$i = $this->cur_page + 1;
+			}
+			else
+			{
+				$i = ($this->cur_page * $this->per_page);
+			}
+
+			$output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close;
 		}
 
 		// Render the "Last" link
 		if ($this->last_link !== FALSE AND ($this->cur_page + $this->num_links) < $num_pages)
 		{
-			$i = (($num_pages * $this->per_page) - $this->per_page);
+			if ($this->use_page_numbers)
+			{
+				$i = $num_pages;
+			}
+			else
+			{
+				$i = (($num_pages * $this->per_page) - $this->per_page);
+			}
 			$output .= $this->last_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->last_link.'</a>'.$this->last_tag_close;
 		}