From 30b152b1947e773a618bc29bfa3b5b505ceeb1d7 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 02 May 2009 10:19:24 -0400
Subject: [PATCH] - Added quick search box menu (#1484304)

---
 skins/default/functions.js |   50 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/skins/default/functions.js b/skins/default/functions.js
index fd6e612..31c4647 100644
--- a/skins/default/functions.js
+++ b/skins/default/functions.js
@@ -121,6 +121,7 @@
 function rcube_mail_ui()
 {
   this.markmenu = $('#markmessagemenu');
+  this.searchmenu = $('#searchmenu');
 }
 
 rcube_mail_ui.prototype = {
@@ -137,16 +138,61 @@
   this.markmenu[show?'show':'hide']();
 },
 
+show_searchmenu: function(show)
+{
+  if (typeof show == 'undefined')
+    show = this.searchmenu.is(':visible') ? false : true;
+
+  var ref = rcube_find_object('searchmod');
+  if (show && ref) {
+    var pos = $(ref).offset();
+    this.searchmenu.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
+
+    if (rcmail.env.search_mods) {
+      for (var n in rcmail.env.search_mods) {
+        box = rcube_find_object('s_mod_' + n);
+        box.checked = 'checked';
+      }
+    }
+  }
+  this.searchmenu[show?'show':'hide']();
+},
+ 
+set_searchmod: function(elem)
+{
+  if (!rcmail.env.search_mods)
+    rcmail.env.search_mods = new Object();
+  
+  if (!elem.checked)
+    delete(rcmail.env.search_mods[elem.value]);
+  else
+    rcmail.env.search_mods[elem.value] = elem.value;
+},
+
 body_mouseup: function(evt, p)
 {
   if (this.markmenu && this.markmenu.is(':visible') && rcube_event.get_target(evt) != rcube_find_object('markreadbutton'))
     this.show_markmenu(false);
+  else if (this.searchmenu && this.searchmenu.is(':visible') && rcube_event.get_target(evt) != rcube_find_object('searchmod')) {
+    var menu = rcube_find_object('searchmenu');
+    var target = rcube_event.get_target(evt);
+    while (target.parentNode) {
+      if (target.parentNode == menu)
+        return;
+      target = target.parentNode;
+    }
+    this.show_searchmenu(false);
+  }
 },
 
 body_keypress: function(evt, p)
 {
-  if (rcube_event.get_keycode(evt) == 27 && this.markmenu && this.markmenu.is(':visible'))
-    this.show_markmenu(false);
+  if (rcube_event.get_keycode(evt) == 27) {
+    if (this.markmenu && this.markmenu.is(':visible'))
+      this.show_markmenu(false);
+    if (this.searchmenu && this.searchmenu.is(':visible'))
+      this.show_searchmenu(false);
+  }
 }
 
 };

--
Gitblit v1.9.1