diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
new file mode 100644
index 0000000..8d9fee4
--- /dev/null
+++ b/system/helpers/download_helper.php
@@ -0,0 +1,96 @@
+<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * Code Igniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package		CodeIgniter
+ * @author		Rick Ellis
+ * @copyright	Copyright (c) 2006, pMachine, Inc.
+ * @license		http://www.codeignitor.com/user_guide/license.html 
+ * @link		http://www.codeigniter.com
+ * @since		Version 1.0
+ * @filesource
+ */
+ 
+// ------------------------------------------------------------------------
+
+/**
+ * Code Igniter Download Helpers
+ *
+ * @package		CodeIgniter
+ * @subpackage	Helpers
+ * @category	Helpers
+ * @author		Rick Ellis
+ * @link		http://www.codeigniter.com/user_guide/helpers/download_helper.html
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * Force Download
+ *
+ * Generates headers that force a download to happen
+ *
+ * @access	public
+ * @param	string	filename
+ * @param	mixed	the data to be downloaded
+ * @return	void
+ */	
+function force_download($filename = '', $data = '')
+{
+	if ($filename == '' OR $data == '')
+	{
+		return FALSE;
+	}
+
+	// Try to determine if the filename includes a file extension.
+	// We need it in order to set the MIME type
+	if (FALSE === strpos($filename, '.'))
+	{
+		return FALSE;
+	}
+	
+	// Grab the file extension
+	$x = explode('.', $filename);
+	$extension = end($x);
+
+	// Load the mime types
+	@include(APPPATH.'config/mimes'.EXT);
+	
+	// Set a default mime if we can't find it
+	if ( ! isset($mimes[$extension]))
+	{
+		$mime = 'application/octet-stream';
+	}
+	else
+	{
+		$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
+	}
+	
+	// Generate the server headers
+	if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
+	{
+		header('Content-Type: "'.$mime.'"');
+		header('Content-Disposition: inline; filename="'.$filename.'"');
+		header('Expires: 0');
+		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+		header("Content-Transfer-Encoding: binary");
+		header('Pragma: public');
+		header("Content-Length: ".strlen($data));
+	} 
+	else 
+	{
+		header('Content-Type: "'.$mime.'"');
+		header('Content-Disposition: attachment; filename="'.$filename.'"');
+		header("Content-Transfer-Encoding: binary");
+		header('Expires: 0');
+		header('Pragma: no-cache');
+		header("Content-Length: ".strlen($data));
+	}
+	
+	echo $data;
+}
+
+
+?>
\ No newline at end of file