diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index a45a0e3..0893649 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -886,6 +886,7 @@ function system_modules($form, $form_state = array()) {
         }
       }
     }
+    $extra['filename'] = $filename;
     $form['modules'][$module->info['package']][$filename] = _system_modules_build_row($module->info, $extra);
   }
 
@@ -917,6 +918,9 @@ function system_modules($form, $form_state = array()) {
     '#value' => t('Save configuration'),
   );
   $form['#action'] = url('admin/modules/list/confirm');
+  $form['#attached'] = array(
+    'js' => array(drupal_get_path('module', 'system') . '/system.js'),
+  );
 
   return $form;
 }
@@ -999,6 +1003,10 @@ function _system_modules_build_row($info, $extra) {
       '#type' => 'checkbox',
       '#title' => t('Enable'),
       '#default_value' => $extra['enabled'],
+      '#attributes' => array(
+        'data-module' => $extra['filename'],
+        'data-requires' => implode(',', array_keys($extra['requires'])),
+      ),
     );
     if ($extra['disabled']) {
       $form['enable']['#disabled'] = TRUE;
diff --git a/core/modules/system/system.js b/core/modules/system/system.js
index f4bdc6d..e876905 100644
--- a/core/modules/system/system.js
+++ b/core/modules/system/system.js
@@ -137,4 +137,48 @@ Drupal.behaviors.pageCache = {
   }
 };
 
+/**
+ * Display an alert for dependant modules.
+ */
+Drupal.behaviors.moduleDependancies = {
+  attach: function (context, settings) {
+    var $modules = $("input[data-module]");
+    $("input[data-requires!='']").bind('click', function () {
+      var $that = $(this);
+      if ($that.attr('checked')) {
+        var $dependancies = Drupal.system.getDependancies($that.attr('data-requires').split(','));
+        if ($dependancies.length) {
+          var message = Drupal.formatPlural($dependancies.length, "There is 1 dependent module, enable?", "There are @count dependent modules, enable?");
+          if (confirm(message)) {
+            $dependancies.click()
+          }
+          else {
+            $that.attr('checked', false);
+          }
+        }
+      }
+    });
+  }
+};
+
+Drupal.system = {
+  /**
+   * Returns a jQuery collection of unchecked inputs from the dependency list
+   *
+   * @param $module
+   */
+  getDependancies: function (list) {
+    var $modules = $("input[data-module]").filter(function () {
+      var $that = $(this);
+      var required = $.inArray($that.attr('data-module'), list) !== -1;
+      var notEnabled = true;
+      if (required) {
+        notEnabled = !$that.attr('checked');
+      }
+      return required && notEnabled;
+    });
+    return $modules;
+  }
+};
+
 })(jQuery);
