=== modified file 'modules/system.module'
--- modules/system.module	
+++ modules/system.module	
@@ -949,7 +949,47 @@ function theme_system_modules($form) {
 }
 
 
+/**
+ * Resolve dependencies between modules.
+ */
+function system_module_dependencies(&$edit) {
+  do {
+    $new_module = FALSE;
+    foreach ($edit['status'] as $module => $status) {
+      if ($status) {
+        drupal_load('module', $module);
+        $enabled = array();
+        $requirements = module_invoke($module, 'info', 'depends');
+        if (is_array($requirements)) {
+          foreach ($requirements as $required) {
+            if (isset($edit['status'][$required])) {
+              if (!$edit['status'][$required]) {
+                $edit['status'][$required] = 1;
+                $enabled[] = $required;
+              }
+            }
+            else {
+              drupal_set_message(t('%module needs %required to work but %required is not installed.', array('%module' => theme('placeholder', $module), '%required' => $required)), 'error');
+              return;
+            }
+          }
+        }
+        if (!empty($enabled)) {
+          $new_module = TRUE;
+          drupal_set_message(format_plural(count($enabled),
+            '%enabled module has been enabled for you because %module needs it to work properly. Please read the documentation of %enabled module about its proper installation (for eg. database tables, permissions and settings).',
+            '%enabled modules has been enabled for you because %module needs them to work properly. Please read the appropriate documentation of %enabled modules for proper installation (for eg. database tables, permissions and settings).',
+            array ('%module' => theme('placeholder', $module), '%enabled' => theme ('placeholder', implode(', ', $enabled)))));
+        }
+      }
+    }
+  } while ($new_module);
+}
+
+
 function system_modules_submit($form_id, $edit) {
+  system_module_dependencies($edit);
+
   db_query("UPDATE {system} SET status = 0, throttle = 0 WHERE type = 'module'");
 
   $new_modules = array();
