added ability to enable/disable individual sections of the Profiler
diff --git a/system/application/config/profiler.php b/system/application/config/profiler.php
new file mode 100644
index 0000000..f30432d
--- /dev/null
+++ b/system/application/config/profiler.php
@@ -0,0 +1,17 @@
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| Profiler Sections
+| -------------------------------------------------------------------------
+| This file lets you determine whether or not various sections of Profiler
+| data are displayed when the Profiler is enabled.
+| Please see the user guide for info:
+|
+|	http://codeigniter.com/user_guide/general/profiling.html
+|
+*/
+
+
+
+/* End of file profiler.php */
+/* Location: ./system/application/config/profiler.php */
\ No newline at end of file
diff --git a/system/core/Output.php b/system/core/Output.php
index ad92acc..0dcf2e4 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -34,6 +34,8 @@
 	var $enable_profiler 	= FALSE;
 	var $parse_exec_vars	= TRUE;	// whether or not to parse variables like {elapsed_time} and {memory_usage}
 
+	var $_profiler_sections = array();
+
 	function CI_Output()
 	{
 		log_message('debug', "Output Class Initialized");
@@ -143,6 +145,25 @@
 	}
 	
 	// --------------------------------------------------------------------
+
+	/**
+	 * Set Profiler Sections
+	 *
+	 * Allows override of default / config settings for Profiler section display
+	 *
+	 * @access	public
+	 * @param	array
+	 * @return	void
+	 */
+	function set_profiler_sections($sections)
+	{
+		foreach ($sections as $section => $enable)
+		{
+			$this->_profiler_sections[$section] = ($enable !== FALSE) ? TRUE : FALSE;
+		}
+	}
+
+	// --------------------------------------------------------------------
 	
 	/**
 	 * Set Cache
@@ -258,7 +279,12 @@
 		if ($this->enable_profiler == TRUE)
 		{
 			$CI->load->library('profiler');				
-										
+			
+			if ( ! empty($this->_profiler_sections))
+			{
+				$CI->profiler->set_sections($this->_profiler_sections);
+			}						
+
 			// If the output data contains closing </body> and </html> tags
 			// we will remove them and add them back after we insert the profile data
 			if (preg_match("|</body>.*?</html>|is", $output))
diff --git a/system/language/english/profiler_lang.php b/system/language/english/profiler_lang.php
index bf21830..7876331 100644
--- a/system/language/english/profiler_lang.php
+++ b/system/language/english/profiler_lang.php
@@ -16,6 +16,7 @@
 $lang['profiler_no_get']		= 'No GET data exists';
 $lang['profiler_no_uri']		= 'No URI data exists';
 $lang['profiler_no_memory']		= 'Memory Usage Unavailable';
+$lang['profiler_no_profiles']	= 'No Profile data - all Profiler sections have been disabled.';
 
 /* End of file profiler_lang.php */
 /* Location: ./system/language/english/profiler_lang.php */
\ No newline at end of file
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index bf20f17..b2c008f 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -34,22 +34,67 @@
 
 	var $CI;
  	
- 	function CI_Profiler()
+	var $_available_sections	= array(
+										'benchmarks',
+										'config',
+										'controller_info',
+										'get',
+										'http_headers',
+										'memory_usage',
+										'post',
+										'queries',
+										'uri_string'
+										);
+
+ 	function CI_Profiler($config = array())
  	{
  		$this->CI =& get_instance();
  		$this->CI->load->language('profiler');
+		
+		// default all sections to display
+		foreach ($this->_available_sections as $section)
+		{
+			if ( ! isset($config[$section]))
+			{
+				$this->_compile_{$section} = TRUE;
+			}
+		}
+		
+		$this->set_sections($config);
  	}
  	
 	// --------------------------------------------------------------------
 
 	/**
+	 * Set Sections
+	 *
+	 * Sets the private _compile_* properties to enable/disable Profiler sections
+	 *
+	 * @access	public
+	 * @param	mixed
+	 * @return	void
+	 */
+	function set_sections($config)
+	{
+		foreach ($config as $method => $enable)
+		{
+			if (in_array($method, $this->_available_sections))
+			{
+				$this->_compile_{$method} = ($enable !== FALSE) ? TRUE : FALSE;				
+			}
+		}
+	}
+
+	// --------------------------------------------------------------------
+	
+	/**
 	 * Auto Profiler
 	 *
 	 * This function cycles through the entire array of mark points and
 	 * matches any two points that are named identically (ending in "_start"
 	 * and "_end" respectively).  It then compiles the execution times for
 	 * all points and returns it as an array
-	 *
+	 * @PHP4 - all methods should be declared private
 	 * @access	private
 	 * @return	array
 	 */
@@ -438,16 +483,23 @@
 	function run()
 	{
 		$output = "<div id='codeigniter_profiler' style='clear:both;background-color:#fff;padding:10px;'>";
+		$fields_displayed = 0;
+		
+		foreach ($this->_available_sections as $section)
+		{
+			if ($this->_compile_{$section} !== FALSE)
+			{
+				$func = "_compile_{$section}";
+				$output .= $this->{$func}();
+				$fields_displayed++;
+			}
+		}
 
-		$output .= $this->_compile_uri_string();
-		$output .= $this->_compile_controller_info();
-		$output .= $this->_compile_memory_usage();
-		$output .= $this->_compile_benchmarks();
-		$output .= $this->_compile_get();
-		$output .= $this->_compile_post();
-		$output .= $this->_compile_queries();
-		$output .= $this->_compile_config();
-		$output .= $this->_compile_http_headers();
+		if ($fields_displayed == 0)
+		{
+			$output .= '<p style="border:1px solid #5a0099;padding:10px;margin:20px 0;background-color:#eee">'.$this->CI->lang->line('profiler_no_profiles').'</p>';
+		}
+		
 		$output .= '</div>';
 
 		return $output;