relooking
[old-projects.git] / philter / philter / philter.js
CommitLineData
dd8de1ec
PH
1/********************************************************************************
2* include/philter.js : philter javascript functions
3* ------------------
4*
5* This file is part of the philter distribution
6* Copyright: See COPYING files that comes with this distribution
7********************************************************************************/
8
9function text_onfocus(object,val) {
10 if(object.value == val)
11 object.value = '';
12}
13
14function text_onblur(object,val) {
15 if(object.value == '')
16 object.value = val;
17}
18
19function cleanChilds(Node, nbChilds) {
20 while(Node.childNodes.length>nbChilds)
21 Node.removeChild(Node.childNodes[nbChilds]);
22}
23
242c14dc 24function getElement(obj) {
693b6ec6
PH
25 if(document.getElementById)
26 return document.getElementById(obj);
3e328a2d 27 if(document.all)
693b6ec6 28 return document.all[obj];
1b874dc4 29 return false;
0aa1a917
PH
30}
31
01f3d5ec
PH
32function del_onsubmit() {
33 return window.confirm("Voulez vous réellement supprimer cette adresse mail ?");
34}
35
dd8de1ec
PH
36/********** ORDER FORM FUNCTIONS **********/
37
38function order_up() {
39 form = document.forms['order'];
242c14dc 40 select = getElement('orderSelect');
dd8de1ec
PH
41
42 if(select.selectedIndex>1) {
43 i = select.selectedIndex;
44 value1 = select.options[i].value;
45 text1 = select.options[i].text;
46 value2 = select.options[i-1].value;
47 text2 = select.options[i-1].text;
48
49 select.options[i] = new Option(text2,value2,false,false);
50 select.options[i-1] = new Option(text1,value1,false,false);
51 select.selectedIndex = i-1;
52
242c14dc
PH
53 form.elements['order'+value1].value = i-1;
54 form.elements['order'+value2].value = i;
dd8de1ec
PH
55 }
56}
57
58function order_dn() {
59 form = document.forms['order'];
242c14dc 60 select = getElement['orderSelect'];
dd8de1ec
PH
61
62 if(select.selectedIndex>0 && select.selectedIndex<select.length-1) {
63 i = select.selectedIndex;
64 value1 = select.options[i].value;
65 text1 = select.options[i].text;
66 value2 = select.options[i+1].value;
67 text2 = select.options[i+1].text;
68
69 select.options[i] = new Option(text2,value2,false,false);
70 select.options[i+1] = new Option(text1,value1,false,false);
71 select.selectedIndex = i+1;
72
242c14dc
PH
73 form.elements['order'+value1].value = i+1;
74 form.elements['order'+value2].value = i;
dd8de1ec
PH
75 }
76}
77
78function order_submit(obj) {
79 if(obj.name == 'order[submit]')
311c293a 80 obj.form.elements['order[action]'].value = 'submit';
dd8de1ec 81 if(obj.name == 'order[delete]')
311c293a 82 obj.form.elements['order[action]'].value = 'delete';
dd8de1ec
PH
83 obj.form.submit();
84}
85
86/********** RULE FORM GLOBALS **********/
87
88var matches_list = new Array();
89var matches_func = new Array();
90
91var actions_list = new Array()
92var actions_func = new Array();
93
94var mail_pool = new Array();
95var filter = new Array();
96
97var current_rule;
98
99var actions_i = 0;
100var matches_i = 0;
101
102/********** RULE.ACTION FORM FUNCTIONS **********/
103
104function createActionSelect(data,base) {
105 var i,j;
106 var select = document.createElement("select");
8294c7d2 107 var sel = 0;
dd8de1ec
PH
108 select.name = base+'[0]';
109
8294c7d2
PH
110 for(i=0, j=0; i<actions_list.length; i++) {
111 if(data==i) sel = j;
112 if(actions_list[i]) select.options[j++] = new Option(actions_list[i],i,false,(data==i));
113 }
dd8de1ec 114
8294c7d2
PH
115 select.selectedIndex = sel;
116 select.onchange = function () { changeRow(this,actions_func); };
117
dd8de1ec
PH
118 return select;
119}
120
121function createActionRow(Node,data) {
122 var div = document.createElement("div");
dd8de1ec
PH
123 div.name = 'rule[actions]['+actions_i+']';
124 actions_i++;
125 Node.appendChild(div);
126
127 var del = document.createElement("input");
128 del.setAttribute("type", "submit");
129 del.setAttribute("value", "Del");
8294c7d2 130 del.onclick = function () { del.parentNode.parentNode.removeChild(del.parentNode); };
dd8de1ec
PH
131 div.appendChild(del);
132
133 div.appendChild(document.createTextNode(" "));
134
135 var select = createActionSelect(data[0],div.name);
136 div.appendChild(select);
137
138 actions_func[select.options[select.selectedIndex].value](div,data);
139}
140
141function newAction() {
693b6ec6 142 createActionRow(getElement('actionsRow'), [-1]);
dd8de1ec
PH
143}
144
145/********** RULE.MATCH FORM FUNCTIONS **********/
146
147function createMatchSelect(data,base) {
148 var i,j;
149 var select = document.createElement("select");
8294c7d2 150 var sel = 0;
dd8de1ec
PH
151 select.name = base+'[0]';
152
8294c7d2
PH
153 for(i=0, j=0; i<matches_list.length; i++) {
154 if(data==i) sel = j;
155 if(matches_list[i]) select.options[j++] = new Option(matches_list[i],i,false,(data==i));
156 }
dd8de1ec 157
8294c7d2
PH
158 select.selectedIndex = sel;
159 select.onchange = function () { changeRow(this,matches_func); };
dd8de1ec 160
dd8de1ec
PH
161 return select;
162}
163
164function createMatchRow(Node,data) {
165 var div = document.createElement("div");
dd8de1ec
PH
166 div.name = 'rule[matches]['+actions_i+']';
167 actions_i++;
168 Node.appendChild(div);
169
170 var del = document.createElement("input");
171 del.setAttribute("type", "submit");
172 del.setAttribute("value", "Del");
8294c7d2 173 del.onclick = function () { del.parentNode.parentNode.removeChild(del.parentNode); };
dd8de1ec
PH
174 div.appendChild(del);
175
176 div.appendChild(document.createTextNode(" "));
177
178 var select = createMatchSelect(data[0],div.name);
179 div.appendChild(select);
180
181 matches_func[select.options[select.selectedIndex].value](div,data);
182}
183
184function newMatch() {
693b6ec6 185 createMatchRow(getElement('matchesRow'), [-1]);
dd8de1ec
PH
186}
187
188/********** RULE FORM FUNCTIONS **********/
189
190function changeRow(sel, funcs) {
191 var row = sel.parentNode;
192 cleanChilds(row,3);
193 funcs[sel.options[sel.selectedIndex].value](row,0);
194}
195
196function createRuleForm() {
197 var i;
242c14dc 198 var sel = getElement('orderSelect');
dd8de1ec
PH
199 var index = sel.options[sel.selectedIndex].value;
200
201 actions_i = matches_i = 0;
202 current_rule = filter[index];
203
242c14dc
PH
204 getElement('ruleId').value = index;
205 getElement('ruleName').value = current_rule.name;
693b6ec6 206 var c = (current_rule.all ? '1' : '0');
242c14dc
PH
207 getElement('ruleAll'+c).checked = true;
208 getElement('ruleBlock').checked = current_rule.block;
dd8de1ec 209
693b6ec6 210 var mr = getElement('matchesRow');
dd8de1ec
PH
211 cleanChilds(mr,0);
212 for(i=0; i<current_rule.matches.length; i++)
213 createMatchRow(mr, current_rule.matches[i]);
214
693b6ec6 215 var ar = getElement('actionsRow');
dd8de1ec
PH
216 cleanChilds(ar,0);
217 for(i=0; i<current_rule.actions.length; i++)
218 createActionRow(ar, current_rule.actions[i]);
219}
220
221/********************************************************************************
222* $Id$
223* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 textwidth=100:
224********************************************************************************/