diff --git a/facetapi.module b/facetapi.module
index cdd18b8..b07deb9 100644
--- a/facetapi.module
+++ b/facetapi.module
@@ -1169,3 +1169,48 @@ function facetapi_save_facet_enabled(FacetapiAdapter $adapter, array $realm, arr
 function facetapi_save_facet_disabled(FacetapiAdapter $adapter, array $realm, array $facet, $weight = FALSE, $batch_process = FALSE) {
   return facetapi_save_facet_status($adapter, $realm, $facet, FALSE, $weight, $batch_process);
 }
+
+////
+////
+//// Integration with Context module
+////
+////
+
+/**
+ * Implements hook_context_registry().
+ */
+function facetapi_context_registry() {
+  return array(
+    'conditions' => array(
+      'facetapi_facet_values' => array(
+        'title' => t('Facet values'),
+        'plugin' => 'facetapi_context_condition_facet_values',
+      ),
+    ),
+  );
+}
+
+/**
+ * Implements hook_context_plugins().
+ */
+function facetapi_context_plugins() {
+  $plugins = array();
+  $plugins['facetapi_context_condition_facet_values'] = array(
+    'handler' => array(
+      'path' => drupal_get_path('module', 'facetapi') .'/plugins/context',
+      'file' => 'facetapi_context_condition_facet_values.inc',
+      'class' => 'facetapi_context_condition_facet_values',
+      'parent' => 'context_condition',
+    ),
+  );
+  return $plugins;
+}
+
+/**
+ * Implements hook_context_page_condition().
+ */
+function facetapi_context_page_condition() {
+  if ($plugin = context_get_plugin('condition', 'facetapi_facet_values')) {
+    $plugin->execute();
+  }
+}
diff --git a/plugins/context/facetapi_context_condition_facet_values.inc b/plugins/context/facetapi_context_condition_facet_values.inc
new file mode 100644
index 0000000..4302ccc
--- /dev/null
+++ b/plugins/context/facetapi_context_condition_facet_values.inc
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * FacetAPI context condition based on facet values.
+ */
+class facetapi_context_condition_facet_values extends context_condition {
+  /**
+   * Omit condition values. We will provide a custom input form for our conditions.
+   */
+  function condition_values() {
+    return array();
+  }
+
+  /**
+   * Condition form.
+   */
+  function condition_form($context) {
+    $form = parent::condition_form($context);
+    unset($form['#options']);
+    $form['#type'] = 'textarea';
+    $form['#default_value'] = implode("\n", $this->fetch_from_context($context, 'values'));
+    $form['#description'] = t('Coma separated facet values. Example: "facet1:value1,facet2:value2".');
+    return $form;
+  }
+
+  /**
+   * Condition form submit handler.
+   */
+  function condition_form_submit($values) {
+    $parsed = array();
+    // Explode by lines.
+    $items = explode("\n", $values);
+    if (!empty($items)) {
+      foreach ($items as $line) {
+        $line = trim($line);
+        if (!empty($line)) {
+          $parsed[] = $line;
+        }
+      }
+    }
+    return $parsed;
+  }
+
+  /**
+   * Execute.
+   */
+  function execute() {
+    if ($this->condition_used()) {
+      $searchers = facetapi_get_active_searchers();
+      foreach ($searchers as $searcher) {
+        if ($adapter = facetapi_adapter_load($searcher)) {
+          $adapter->processActiveItems();
+          foreach ($this->get_contexts() as $context) {
+            // Retrieve facet values.
+            $values = $this->fetch_from_context($context, 'values');
+            foreach ($values as $line) {
+              // Extract values of the facets.
+              $facet_values = array();
+              foreach (explode(',', $line) as $pair) {
+                if (!empty($pair)) {
+                  $pair_array = explode(':', $pair);
+                  if (count($pair_array) == 2) {
+                    list($facet_name, $facet_value) = $pair_array;
+                    $facet_values[$facet_name][] = $facet_value;
+                  }
+                }
+              }
+
+              // Go through all facet values and make sure they are all active.
+              $condition_met = TRUE;
+              foreach ($facet_values as $facet_name => $facet_values) {
+                foreach ($facet_values as $facet_value) {
+                  $condition_met = $condition_met && $adapter->itemActive($facet_name, $facet_value);
+                }
+              }
+
+              if ($condition_met) {
+                $this->condition_met($context);
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
