4bd4ac778bf899143de8bb9fabdd333f782eca38
[brisk.git] / web / prefs.js
1 var l_list_all  = 0x00;
2 var l_list_auth = 0x01;
3 var l_list_isol = 0x02;
4 var l_prefs_list_idx = new Array( 0x00, 0x01, 0x02 );
5 var l_prefs_list_id  = new Array( "all", "auth", "isol" );
6 var l_comps_name     = new Array('s_fg_r', 's_fg_g', 's_fg_b', 's_bg_r',  's_bg_g',  's_bg_b');
7
8 var standup_data_notisol = null;
9
10 function client_prefs(old)
11 {
12     if (old != null) {
13         this.listen    = old.listen;
14         this.supp_comp = old.supp_comp;
15     }
16 }
17
18 client_prefs.prototype = {
19     listen:    -1,
20     supp_comp: 'ff00ffff00'
21 }
22
23 function prefs_assign(content)
24 {
25     var prefs_new;
26     var s;
27
28     s = "prefs_new = " + content;
29     eval(s);
30
31     return (prefs_new);
32 }
33
34 function prefs_apply(prefs_new, is_update, is_volat)
35 {
36     var i;
37     var relo = false;
38
39     console.log('prefs_apply: begin');
40
41     if (typeof(g_prefs) == 'undefined')
42         return false;
43     /* listen management */
44     if (g_prefs.listen != prefs_new.listen || is_update) {
45         for (i = 0 ; i < l_prefs_list_idx.length ; i++) {
46             set_checked_value($('ra_listen_'+l_prefs_list_id[i]), prefs_new.listen);
47             if (prefs_new.listen == l_prefs_list_idx[i]) {
48                 if (!is_volat)
49                     $('list_'+l_prefs_list_id[i]).style.color = 'red';
50                 $('list_info').innerHTML = mlang_commons['tit_list'][i][g_lang];
51             }
52             else {
53                 if (!is_volat)
54                     $('list_'+l_prefs_list_id[i]).style.color = 'black';
55             }
56         }
57
58         relo = true;
59     }
60
61     // supporter component management
62     if (g_prefs.supp_comp != prefs_new.supp_comp || is_update) {
63
64         for (i = 0 ; i < 6 ; i++) {
65             $(l_comps_name[i]).value = parseInt(prefs_new.supp_comp.substr(i*2,2), 16);
66         }
67         $('s_img').src = 'suprend.php?comp='+prefs_new.supp_comp;
68     }
69
70     if (relo || !is_update) {
71         for (i = g_tables_appr_n ; i < g_tables_n ; i++) {
72             if (i % 4 == 0) {
73                 $('tr_noauth'+i).style.display = (prefs_new.listen == l_list_isol ? 'none' : '');
74             }
75
76             $('td_noauth'+i).style.display = (prefs_new.listen == l_list_isol ? 'none' : '');
77         }
78         if (prefs_new.listen == l_list_isol) {
79             tra.hide_noauth();
80         }
81         else {
82             tra.show_noauth();
83         }
84
85         if (typeof(prefs) != "undefined") {
86             if (prefs.listen != l_list_isol && prefs_new.listen == l_list_isol) {
87                 if (standup_data != null) {
88                     standup_data_notisol = standup_data.slice();
89                 }
90             }
91             else if (prefs.listen == l_list_isol && prefs_new.listen != l_list_isol) {
92                 if (standup_data_notisol != null) {
93                     standup_data_old = standup_data_notisol;
94                     standup_data_notisol = null;
95                 }
96             }
97         }
98         
99         if (true) {
100             // ricalculation of standup area
101             g_prefs.listen = prefs_new.listen;
102
103             console.log('here we are');
104             if (standup_data_old != null) {
105                 console.log('here we are2');
106                 standup_data = standup_data_old;
107                 standup_data_old = null;
108                 j_stand_cont(standup_data);
109             }
110         }
111     }
112
113     g_prefs.listen    = prefs_new.listen;
114     g_prefs.supp_comp = prefs_new.supp_comp;
115 }
116
117 function prefs_load(content, is_update, is_volat)
118 {
119     var prefs_new;
120
121     // console.log('prefs_load('+content+')');
122
123     if ((prefs_new = prefs_assign(content)) == null)
124         return false;
125
126     return prefs_apply(prefs_new, is_update, is_volat);
127 }
128
129 function prefs_save()
130 {
131     var ret;
132
133     if (typeof(g_prefs) == 'undefined')
134         return false;
135
136     ret = server_request('mesg', 'prefs|save','__POST__', 'prefs', JSON.stringify(g_prefs));
137
138     if (ret == 1) {
139         $('preferences').style.visibility = 'hidden';
140     }
141     else {
142         alert(ret);
143     }
144 }
145
146 function prefs_reset()
147 {
148     var ret;
149
150     ret = server_request('mesg', 'prefs|reset');
151 }
152
153 function prefs_update(field)
154 {
155     var i;
156     var prefs_new;
157     var relo = false;
158     // console.log("prefs_update("+field+")");
159
160     if (typeof(g_prefs) == 'undefined')
161         return false;
162
163     prefs_new = new client_prefs(g_prefs);
164
165     if (field == 'listen') {
166         /* listen management */
167         for (i = 0 ; i < l_prefs_list_idx.length ; i++) {
168             prefs_new.listen = get_checked_value($('ra_listen_'+l_prefs_list_id[i]));
169             if (prefs_new.listen != '')
170                 break;
171         }
172     }
173     else if (field == 'supp') {
174         for (i = 0 ; i < 6 ; i++) {
175             if (parseInt($(l_comps_name[i]).value) < 0 || parseInt($(l_comps_name[i]).value) > 255 ||
176                 isNaN(parseInt($(l_comps_name[i]).value))) {
177                 break;
178             }
179         }
180
181         if (i == 6) {
182             prefs_new.supp_comp = "";
183             for (i = 0 ; i < 6 ; i++) {
184                 prefs_new.supp_comp += dec2hex(parseInt($(l_comps_name[i]).value), 2);
185             }
186         }
187
188         // console.log("prefs_update:: i break "+i+" ["+prefs_new.supp_comp+"]");
189
190         for (i = 0 ; i < 6 ; i++) {
191             $(l_comps_name[i]).value = parseInt(prefs_new.supp_comp.substr(i*2, 2), 16);
192         }
193     }
194
195     /* from form to struct */
196     prefs_apply(prefs_new, true, true);
197 }
198
199 function list_set(what, is_update, info)
200 {
201     var i;
202     var relo = false;
203     var old_st = readCookie("CO_list");
204     
205     if (what == 'auth') {
206         $('list_auth').style.color = 'red';
207         $('list_isol').style.color = 'black';
208         $('list_all').style.color = 'black';
209         if (old_st == 'isolation')
210             relo = true;
211         g_listen = l_list_auth;
212     }
213     else if (what == 'isolation') {
214         $('list_auth').style.color = 'black';
215         $('list_isol').style.color = 'red';
216         $('list_all').style.color = 'black';
217         if (old_st != 'isolation')
218             relo = true;
219         g_listen = l_list_isol;
220     }
221     else {
222         $('list_auth').style.color = 'black';
223         $('list_isol').style.color = 'black';
224         $('list_all').style.color = 'red';
225         if (old_st == 'isolation')
226             relo = true;
227         g_listen = l_list_all;
228     }
229
230     set_checked_value($('ra_listen_auth'), what);
231     set_checked_value($('ra_listen_isol'), what);
232     set_checked_value($('ra_listen_all'),  what);
233
234     $('list_info').innerHTML = info;
235     if (is_update) {
236         createCookie("CO_list", what, 24*365, cookiepath);
237     }
238
239
240     if (relo || !is_update) {
241         for (i = g_tables_appr_n ; i < g_tables_n ; i++) {
242             
243             if (i % 4 == 0) {
244                 $('tr_noauth'+i).style.display = (what == 'isolation' ? 'none' : '');
245             }
246             
247             $('td_noauth'+i).style.display = (what == 'isolation' ? 'none' : '');
248         }
249         if (what == 'isolation') {
250             tra.hide_noauth();
251         }
252         else {
253             tra.show_noauth();
254         }
255             
256         if (false) {
257             // ricalculation of standup area
258             if (standup_data_old != null) {
259                 standup_data = standup_data_old;
260                 standup_data_old = null;
261                 j_stand_cont(standup_data);
262             }
263         }
264     }
265 }