]> err.no Git - scalable-opengroupware.org/blob - SOGo/UI/WebServerResources/searchfield.js
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@900 d1b88da0-ebda-0310-925b-ed51d...
[scalable-opengroupware.org] / SOGo / UI / WebServerResources / searchfield.js
1 /*
2   Copyright (C) 2005 SKYRIX Software AG
3
4   This file is part of OpenGroupware.org.
5
6   OGo is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   OGo is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with OGo; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21 /* JavaScript for SOGo Mailer */
22
23 var didStop      = false;
24 var field        = null;
25 var firstValue   = "";
26 var isRegistered = false;
27 var lastKeyPress = null;
28 var submitAfterMS = 500;
29
30 function ml_reloadTableView(searchtext, elementid) {
31   var http = createHTTPClient();
32
33   if (http) {
34     var viewURL, url;
35     var hasQueryPara;
36
37     // TODO: properly parse query parameters    
38     viewURL      = this.location.href;
39     hasQueryPara = viewURL.indexOf("?") == -1 ? false : true;
40     url = (hasQueryPara ? "&" : "?") + "noframe=1&search=";
41     url = url + encodeURIComponent(searchtext);
42     // alert("GET " + url);
43     
44     url = viewURL + url;
45     http.open("GET", url, false);
46     http.send(null);
47     if (http.status != 200) {
48       alert("Could not reload view.");
49     }
50     else {
51       var tv;
52
53       tv = document.getElementById(elementid)
54       tv.innerHTML = http.responseText;
55     }
56   }
57 }
58
59 function ml_reloadSearchIfFieldChanged() {
60   if (field) {
61     if (field.value && field.value != firstValue) {
62       ml_reloadTableView(field.value, "cl_tableview_reloadroot");
63       firstValue = field.value;
64     }
65   }
66 }
67
68 function ml_timeoutCallback() {
69   if (didStop) {
70     didStop = false;
71     return;
72   }
73   
74   var now = new Date().getTime();
75   if ((now - lastKeyPress) < submitAfterMS) {
76     setTimeout("ml_timeoutCallback()", 10);
77     isRegistered = true;
78     return;
79   }
80   
81   ml_reloadSearchIfFieldChanged();
82   isRegistered = false;
83 }
84
85 function ml_activateSearchField(sender, _submitTimeout) {
86   didStop    = false;
87   field      = sender;
88   firstValue = field.value;
89   submitAfterMS = _submitTimeout;
90   return true;
91 }
92 function ml_deactivateSearchField(sender) {
93   didStop    = true;
94   field      = null;
95   firstValue = "";
96   return true;
97 }
98
99 function ml_searchFieldKeyPressed(sender) {
100   lastKeyPress = new Date().getTime();
101
102   if (isRegistered)
103     return;
104   
105   setTimeout("ml_timeoutCallback()", 10);
106   isRegistered = true;
107   return true;
108 }