function init_database($params = '', $return = FALSE)
 {
     $dsn_str = FALSE;
     $db_vals = array('hostname' => '', 'username' => '', 'password' => '', 'database' => '', 'pconnect' => FALSE, 'dbdriver' => 'mysql', 'db_debug' => FALSE);
     if (is_array($params)) {
         foreach ($db_vals as $key => $val) {
             if (isset($params[$key])) {
                 $db_vals[$key] = $params[$key];
             }
         }
     } else {
         if (strpos($params, '://') !== FALSE) {
             $dsn_str = TRUE;
         } else {
             include APPPATH . 'config/database' . EXT;
             $group = $params == '' ? $active_group : $params;
             foreach ($db_vals as $key => $val) {
                 if (isset($db[$group][$key])) {
                     $db_vals[$key] = $db[$group][$key];
                 }
             }
         }
     }
     if (!class_exists('_DB')) {
         require_once BASEPATH . 'drivers/' . $db_vals['dbdriver'] . EXT;
     }
     if ($dsn_str === TRUE) {
         $DB = new _DB($params);
     } else {
         $DB = new _DB($db_vals['hostname'], $db_vals['username'], $db_vals['password'], $db_vals['database']);
         $DB->set_debug($db_vals['db_debug']);
         $DB->set_persistence($db_vals['pconnect']);
         $DB->connect();
     }
     if ($return === TRUE) {
         return $DB;
     }
     global $CI;
     if (!is_object($CI)) {
         $this->ci_is_loaded[] = 'db';
         $this->db =& $DB;
     } else {
         $CI->ci_is_loaded[] = 'db';
         $CI->db =& $DB;
     }
 }