diff --git a/facetapi.info b/facetapi.info
index a94c431..6540bcc 100644
--- a/facetapi.info
+++ b/facetapi.info
@@ -7,6 +7,7 @@ files[] = plugins/facetapi/adapter.inc
 files[] = plugins/facetapi/dependency.inc
 files[] = plugins/facetapi/dependency_bundle.inc
 files[] = plugins/facetapi/dependency_role.inc
+files[] = plugins/facetapi/dependency_parent.inc
 files[] = plugins/facetapi/empty_behavior.inc
 files[] = plugins/facetapi/empty_behavior_text.inc
 files[] = plugins/facetapi/filter.inc
diff --git a/facetapi.module b/facetapi.module
index 4b1e342..d790f40 100644
--- a/facetapi.module
+++ b/facetapi.module
@@ -851,6 +851,15 @@ function facetapi_facetapi_facet_info($searcher_info) {
 }
 
 /**
+ * Implements hook_facetapi_facet_info_alter().
+ */
+function facetapi_facetapi_facet_info_alter(&$facet_info, $searcher_info) {
+  foreach ($facet_info as &$facet) {
+    $facet['dependency plugins'][] = 'parent';
+  }
+}
+
+/**
  * Implements hook_facetapi_sort_info().
  */
 function facetapi_facetapi_sort_info() {
@@ -947,6 +956,12 @@ function facetapi_facetapi_dependencies() {
         'class' => 'FacetapiDependencyRole',
       ),
     ),
+    'parent' => array(
+      'handler' => array(
+        'label' => t('Parent'),
+        'class' => 'FacetapiDependencyParent',
+      ),
+    ),
   );
 }
 
diff --git a/plugins/facetapi/dependency_parent.inc b/plugins/facetapi/dependency_parent.inc
new file mode 100644
index 0000000..b62203f
--- /dev/null
+++ b/plugins/facetapi/dependency_parent.inc
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Performs a dependency check against the parent filter.
+ */
+
+/**
+ * Adds a dependency on parent.
+ */
+class FacetapiDependencyParent extends FacetapiDependency {
+
+  /**
+   * Executes the dependency check.
+   */
+  public function execute() {
+    if (!empty($this->settings['parent'])) {
+      return key_exists($this->settings['parent_value'], $this->activeItems[$this->settings['parent']]);
+    }
+  }
+
+  /**
+   * Adds dependency settings to the form.
+   */
+  public function settingsForm(&$form, &$form_state) {
+
+    // Builds array of options.
+    $options = array('' => t('None'));
+    $map = facetapi_get_delta_map();
+    foreach (facetapi_get_searcher_info() as $searcher => $info) {
+      // Adds blocks for facets that are enabled or whose delta mapping is forced.
+      foreach (facetapi_get_delta_map_queue($searcher, 'block') as $facet_name) {
+        if ($facet = facetapi_facet_load($facet_name, $searcher)) {
+          $options[$facet_name] = $facet['label'];
+        }
+      }
+    }
+
+    $form[$this->id]['parent'] = array(
+      '#title' => t('Parent filter'),
+      '#type' => 'radios',
+      '#options' => $options,
+      '#default_value' => $this->settings['parent'],
+    );
+
+    $form[$this->id]['parent_value'] = array(
+      '#title' => t('Value'),
+      '#type' => 'textfield',
+      '#default_value' => $this->settings['parent_value'],
+      '#description' => t('Set value of the parent facet to display this facet.')
+    );
+  }
+
+  /**
+   * Returns defaults for settings.
+   */
+  public function getDefaultSettings() {
+    return array(
+      'parent' => '',
+      'parent_value' => '',
+    );
+  }
+}
