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