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