diff --git rules/ui/rules.autocomplete.js rules/ui/rules.autocomplete.js
index d5b0cfd..e23e571 100644
--- rules/ui/rules.autocomplete.js
+++ rules/ui/rules.autocomplete.js
@@ -4,11 +4,10 @@
 Drupal.rules = Drupal.rules || {};
 
 (function ($) {
-
   Drupal.behaviors.rules_autocomplete = {
     attach: function(context) {
       var autocomplete_settings = Drupal.settings.rules_autocomplete;
-      
+
       $('input.rules-autocomplete').once(function() {
         var input = this;
         new Drupal.rules.autocomplete(input, autocomplete_settings[$(input).attr('id')]);
@@ -26,6 +25,10 @@ Drupal.rules = Drupal.rules || {};
     this.cache = new Array();
     this.jqObject.addClass('ui-corner-left');
 
+    this.selected = false;
+    this.groupSelected = false;
+    this.opendByFocus = false;
+
     this.button = $('<span>&nbsp;</span>');
     this.button.attr({
       'tabIndex': -1,
@@ -55,14 +58,31 @@ Drupal.rules = Drupal.rules || {};
     var instance = this;
 
     // Event handlers
-    this.jqObject.focusin(function() {
-      instance.open();
+    this.jqObject.focus(function() {
+      // If the something was selected, the window should not open again.
+      if (!instance.selected || instance.groupSelected) {
+        instance.open();
+        instance.opendByFocus = true;
+      }
+      else {
+        // If the something was selected, the window should not open again.
+        instance.selected = false;
+      }
     });
-    this.jqObject.focusout(function() {
-      instance.close();
+
+    // Needed when the window is closed but the textfield has the focus.
+    this.jqObject.click(function() {
+      if (! instance.opendByFocus) {
+        instance.toggle();
+      }
+      else {
+        instance.close();
+      }
     });
+
     this.jqObject.bind( "autocompleteselect", function(event, ui) {
       instance.close();
+      instance.selected = true;
     });
 
     this.jqObject.autocomplete("option", "source", function(request, response) {
@@ -80,12 +100,7 @@ Drupal.rules = Drupal.rules || {};
     });
 
     this.button.click(function() {
-      if (instance.jqObject.autocomplete("widget").is(":visible")) {
-        instance.close();
-      }
-      else {
-        instance.open();
-      }
+      instance.toggle();
     }); 
   };
 
@@ -110,14 +125,35 @@ Drupal.rules = Drupal.rules || {};
   Drupal.rules.autocomplete.prototype.open = function () {
     this.jqObject.autocomplete("search", this.jqObject.val());
     this.button.addClass("ui-state-focus");
+    this.groupSelected = false;
   };
 
   /**
    * Close the autocomplete window.
    */
   Drupal.rules.autocomplete.prototype.close = function () {
-    this.jqObject.autocomplete("close");
-    this.button.removeClass("ui-state-focus");
+    var value = this.jqObject.val();
+    // If the Selector is group, then keep the selection list open.
+    if (value.substring(value.length-1, value.length) != ':') {
+      this.jqObject.autocomplete("close");
+      this.button.removeClass("ui-state-focus");
+      this.opendByFocus = false;
+    }
+    else {
+      this.groupSelected = true;
+    }
+  };
+
+  /**
+   * Toogle the autcomplete window.
+   */
+  Drupal.rules.autocomplete.prototype.toggle = function () {
+    if (this.jqObject.autocomplete("widget").is(":visible")) {
+      this.close();
+    }
+    else {
+      this.open();
+    }    
   };
 
 })(jQuery);
