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