diff --git a/jquery_update.module b/jquery_update.module
index 956c9e5..50fc200 100644
--- a/jquery_update.module
+++ b/jquery_update.module
@@ -84,7 +84,8 @@ function jquery_update_library_alter(&$javascript, $module) {
 
     // Make sure we inject either the minified or uncompressed version as desired.
     $min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : '.min';
-    $cdn = variable_get('jquery_update_jquery_cdn', 'none');
+    $cdn = ($version == 'custom') ? 'custom' : variable_get('jquery_update_jquery_cdn', 'none');
+    $external = variable_get('jquery_update_external_url', '');
 
     // Replace jQuery with the alternative version.
     $admin_version = variable_get('jquery_update_jquery_admin_version', '');
@@ -97,7 +98,7 @@ function jquery_update_library_alter(&$javascript, $module) {
     // If the ajax version is set then that one always win.
     if (!empty($_POST['ajax_page_state']['jquery_version'])) {
       $ajax_version = $_POST['ajax_page_state']['jquery_version'];
-      if (in_array($ajax_version, array('default', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10'))) {
+      if (in_array($ajax_version, array('none', 'default', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10'))) {
         $version = $ajax_version;
       }
     }
@@ -116,7 +117,7 @@ function jquery_update_library_alter(&$javascript, $module) {
       return;
     }
 
-    jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version);
+    jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version, $external);
 
     // Replace jQuery UI with CDN or local files. If from a CDN include all of
     // jQuery UI.
@@ -176,7 +177,9 @@ function jquery_update_settings_form() {
     '#type' => 'select',
     '#title' => t('Default jQuery Version'),
     '#options' => array(
+      'none' => t('None'),
       'default' => t('Default (provided by Drupal)'),
+      'custom' => t('Custom'),
       '1.5' => '1.5',
       '1.7' => '1.7',
       '1.8' => '1.8',
@@ -191,6 +194,7 @@ function jquery_update_settings_form() {
     '#type' => 'select',
     '#title' => t('Alternate jQuery version for administrative pages'),
     '#options' => array(
+      'none' => t('None'),
       '' => t('Default jQuery Version'),
       'default' => t('Default (provided by Drupal)'),
       '1.5' => '1.5',
@@ -212,7 +216,11 @@ function jquery_update_settings_form() {
     // Do not show this field if jQuery version is default
     '#states' => array(
       'invisible' => array(
-        ':input[name=jquery_update_jquery_version]' => array('value' => "default"),
+        ':input[name=jquery_update_jquery_version]' => array(
+          array('value' => "none"),
+          array('value' => "default"),
+          array('value' => "custom"),
+        ),
       ),
     ),
     '#default_value' => variable_get('jquery_update_compression_type', 'min'),
@@ -229,12 +237,27 @@ function jquery_update_settings_form() {
     // Do not show this field if jQuery version is default
     '#states' => array(
       'invisible' => array(
-        ':input[name=jquery_update_jquery_version]' => array('value' => "default"),
+        ':input[name=jquery_update_jquery_version]' => array(
+          array('value' => "none"),
+          array('value' => "default"),
+          array('value' => "custom"),
+        ),
       ),
     ),
     '#default_value' => variable_get('jquery_update_jquery_cdn', 'none'),
     '#description' => t('Use jQuery and jQuery UI from a CDN. If the CDN is not available the local version of jQuery and jQuery UI will be used.'),
   );
+  $form['jquery_update_external_url'] = array(
+    '#type' => 'textfield',
+    '#title' => t('External file URL'),
+    // Do not show this field if jQuery version is default
+    '#states' => array(
+      'visible' => array(
+        ':input[name=jquery_update_jquery_version]' => array('value' => 'custom'),
+      ),
+    ),
+    '#default_value' => variable_get('jquery_update_external_url', ''),
+  );
 
   return system_settings_form($form);
 }
@@ -256,8 +279,10 @@ function jquery_update_settings_form() {
  *   version.
  * @param string $version
  *   The version of jQuery to use.
+ * @param string $external
+ *   The external URL of the jQuery file to use.
  */
-function jquery_update_jquery_replace(&$javascript, $cdn, $path, $min, $version) {
+function jquery_update_jquery_replace(&$javascript, $cdn, $path, $min, $version, $external) {
 
   // Make sure to use the latest version in given branch.
   $trueversion = NULL;
@@ -281,6 +306,7 @@ function jquery_update_jquery_replace(&$javascript, $cdn, $path, $min, $version)
     case '1.10':
       $trueversion = '1.10.2';
       break;
+
   }
   $javascript['jquery']['version'] = $trueversion;
 
@@ -304,11 +330,18 @@ function jquery_update_jquery_replace(&$javascript, $cdn, $path, $min, $version)
       jquery_update_jquery_backup($javascript, $path, $min, $version);
       break;
 
+    case 'custom':
+      $javascript['jquery']['js']['misc/jquery.js']['data'] = $external;
+      $javascript['jquery']['js']['misc/jquery.js']['type'] = 'external';
+      jquery_update_jquery_backup($javascript, $path, $min, $version);
+      break;
+
     case 'none':
     default:
       $javascript['jquery']['js']['misc/jquery.js']['data'] = $path . '/replace/jquery/' . $version . '/jquery' . $min . '.js';
       break;
   }
+
 }
 
 /**
