diff --git ckeditor.module ckeditor.module
index 14c0b4a..c306aba 100644
--- ckeditor.module
+++ ckeditor.module
@@ -634,11 +634,12 @@ function ckeditor_process_textarea($element) {
       }
     }

-    if (!empty($conf['theme_config_js']) && $conf['theme_config_js'] == 't' && file_exists($themepath .'ckeditor.config.js')) {
-      $ckeditor_config_path = $host . $themepath .'ckeditor.config.js?'. @filemtime($themepath .'ckeditor.config.js');
+    if ($conf['config_js_mode'] == 'self') {
+      $conf['config_js_path'] = str_replace(array('%h', '%t', '%m'), array($host, $host . $themepath, $module_drupal_path), $conf['config_js_path']);
+      $ckeditor_config_path = $conf['config_js_path'] . '?' . @filemtime($conf['config_js_path']);
     }
     else {
-      $ckeditor_config_path = $module_full_path ."/ckeditor.config.js?". @filemtime($module_drupal_path ."/ckeditor.config.js");
+      $ckeditor_config_path = $module_full_path . '/ckeditor.config.js?'. @filemtime($module_drupal_path . '/ckeditor.config.js');
     }

     $settings[$textarea_id]['customConfig'] = $ckeditor_config_path;
diff --git includes/ckeditor.admin.inc includes/ckeditor.admin.inc
index 5da5034..1a0f0c5 100644
--- includes/ckeditor.admin.inc
+++ includes/ckeditor.admin.inc
@@ -1108,23 +1108,36 @@ function ckeditor_admin_profile_form($form_state, $profile = NULL) {
       't' => t('Yes')
     ),
   );
-  $form['advanced']['theme_config_js'] = array(
-    '#type' => 'radios',
-    '#title' => t('Load !ckeditor_config_js from the theme path',
+  $form['advanced']['config_js_mode'] = array(
+    '#type' => 'select',
+    '#title' => t('Custom CKEditor configuration'),
+    '#default_value' => !empty($profile->settings['config_js_mode']) ? $profile->settings['config_js_mode'] : 'theme',
+     '#options' => array(
+      'self' => t('Define path'),
+      'none' => t('CKEditor default')
+     ),
+    '#description' => t('Defines the CKEditor configuration.<br/>Define path - enter path for javascript configuration file below.<br />CKEditor default - uses default ckeditor.config.js from editor.')
+  );
+  $form['advanced']['config_js_path'] = array(
+    '#type' => 'textfield',
+    '#title' => t('CKEditor configuration path'),
+    '#default_value' => !empty($profile->settings['config_js_path']) ? $profile->settings['config_js_path'] : "",
+    '#size' => 40,
+    '#maxlength' => 255,
+    '#description' => t('Enter path to a file with the CKEditor configuration (Example: "!example1"). Be sure to select "define path" above.',
       array(
-        '!ckeditor_config_js' => '<code>ckeditor.config.js</code>'
-      )
-    ),
-    '#default_value' => !empty($profile->settings['theme_config_js']) ? $profile->settings['theme_config_js'] : 'f',
-    '#options' => array(
-      't' => t('Yes'),
-      'f' => t('No')
-    ),
-    '#description' => t('When enabled, the editor will try to load the !ckeditor_config_js file from the theme directory.',
+        '!example1' => '/ckeditor.config.js'
+      )) .
+      '<br />'.
+      t('Available placeholders:!h - host name (!host).!t - path to theme (!theme).!m - path to CKEditor module (!module).',
       array(
-        '!ckeditor_config_js' => '<code>ckeditor.config.js</code>'
+        '!h' => '<br /><strong>%h</strong>',
+        '!t' => '<br /><strong>%t</strong>',
+        '!m' => '<br /><strong>%m</strong>',
+        '!host' => base_path(),
+        '!theme' => base_path() . path_to_theme() .'/',
+        '!module' => drupal_get_path('module', 'ckeditor'))
       )
-    ),
   );
   $form['advanced']['js_conf'] = array(
     '#type' => 'textarea',
@@ -1248,6 +1261,18 @@ function ckeditor_admin_profile_form_validate($form, &$form_state) {
   if (!preg_match('#^\s*\[(?:\s*(?:\{\s*[\w:\'" ,]*\s*\[(?:\s*([\'\"\"])(?:\w+|-)\1\s*[,]?\s*)+\]\s*\}|([\'\"\"])\/\2)\s*[,]?\s*)+\]\s*$#U', $edit['toolbar']) && !preg_match('#^\s*\[(?:\s*(?:\[(?:\s*([\'\"\"])(?:\w+|-)\1\s*[,]?\s*)+\]|([\'\"\"])\/\2)\s*[,]?\s*)+\]\s*$#', $edit['toolbar'])) {
     form_set_error('toolbar', t('Enter a valid toolbar configuration.'));
   }
+
+  if (!empty($edit['config_js_path'])) {
+    if ($edit['config_js_mode'] != 'self') {
+      form_set_error('config_js_path', t('Path to CKEditor configuration is not empty. Please set the "CKEditor configuration" option to "define path" mode.'));
+    }
+    elseif (FALSE !== strpos($edit['config_js_path'], '"')) {
+      form_set_error('config_js_path', t('Double quotes are not allowed in path.'));
+    }
+    elseif (substr($edit['config_js_path'], 0, 1) == "'" && substr($edit['config_js_path'], -1) == "'") {
+      form_set_error('config_js_path', t('Enter valid path, do not surround it with quotes.'));
+    }
+  }
 }

 function ckeditor_admin_profile_form_submit($form, &$form_state) {
