use JQuery for complex selections
[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         $$('tr.noauth').css("display", (prefs_new.listen == l_list_isol ? 'none' : ''));
68         $$('td.noauth').css("display", (prefs_new.listen == l_list_isol ? 'none' : ''));
69
70         if (prefs_new.listen == l_list_isol) {
71             tra.hide_noauth();
72         }
73         else {
74             tra.show_noauth();
75         }
76
77         if (false) {
78             // ricalculation of standup area
79             if (standup_data_old != null) {
80                 standup_data = standup_data_old;
81                 standup_data_old = null;
82                 j_stand_cont(standup_data);
83             }
84         }
85     }
86
87     g_prefs.listen    = prefs_new.listen;
88     g_prefs.supp_comp = prefs_new.supp_comp;
89 }
90
91 function prefs_load(content, is_update, is_volat)
92 {
93     var prefs_new;
94
95     // console.log('prefs_load('+content+')');
96
97     if ((prefs_new = prefs_assign(content)) == null)
98         return false;
99
100     return prefs_apply(prefs_new, is_update, is_volat);
101 }
102
103 function prefs_save()
104 {
105     var ret;
106
107     if (typeof(g_prefs) == 'undefined')
108         return false;
109
110     ret = server_request('mesg', 'prefs|save','__POST__', 'prefs', JSON.stringify(g_prefs));
111
112     if (ret == 1) {
113         $('preferences').style.visibility = 'hidden';
114     }
115     else {
116         alert(ret);
117     }
118 }
119
120 function prefs_reset()
121 {
122     var ret;
123
124     ret = server_request('mesg', 'prefs|reset');
125 }
126
127 function prefs_update(field)
128 {
129     var i;
130     var prefs_new;
131     var relo = false;
132     // console.log("prefs_update("+field+")");
133
134     if (typeof(g_prefs) == 'undefined')
135         return false;
136
137     prefs_new = new client_prefs(g_prefs);
138
139     if (field == 'listen') {
140         /* listen management */
141         for (i = 0 ; i < l_prefs_list_idx.length ; i++) {
142             prefs_new.listen = get_checked_value($('ra_listen_'+l_prefs_list_id[i]));
143             if (prefs_new.listen != '')
144                 break;
145         }
146     }
147     else if (field == 'supp') {
148         for (i = 0 ; i < 6 ; i++) {
149             if (parseInt($(l_comps_name[i]).value) < 0 || parseInt($(l_comps_name[i]).value) > 255 ||
150                 isNaN(parseInt($(l_comps_name[i]).value))) {
151                 break;
152             }
153         }
154
155         if (i == 6) {
156             prefs_new.supp_comp = "";
157             for (i = 0 ; i < 6 ; i++) {
158                 prefs_new.supp_comp += dec2hex(parseInt($(l_comps_name[i]).value), 2);
159             }
160         }
161
162         // console.log("prefs_update:: i break "+i+" ["+prefs_new.supp_comp+"]");
163
164         for (i = 0 ; i < 6 ; i++) {
165             $(l_comps_name[i]).value = parseInt(prefs_new.supp_comp.substr(i*2, 2), 16);
166         }
167     }
168
169     /* from form to struct */
170     prefs_apply(prefs_new, true, true);
171 }
172
173 function list_set(what, is_update, info)
174 {
175     var i;
176     var relo = false;
177     var old_st = readCookie("CO_list");
178     
179     if (what == 'isolation') {
180         $('list_isol').style.color = 'red';
181         $('list_all').style.color = 'black';
182         if (old_st != 'isolation')
183             relo = true;
184         g_listen = l_list_isol;
185     }
186     else {
187         $('list_isol').style.color = 'black';
188         $('list_all').style.color = 'red';
189         if (old_st == 'isolation')
190             relo = true;
191         g_listen = l_list_all;
192     }
193
194     set_checked_value($('ra_listen_isol'), what);
195     set_checked_value($('ra_listen_all'),  what);
196
197     $('list_info').innerHTML = info;
198     if (is_update) {
199         createCookie("CO_list", what, 24*365, cookiepath);
200     }
201
202
203     if (relo || !is_update) {
204         $$('tr.noauth').css("display", (what == 'isolation' ? 'none' : ''));
205         $$('td.noauth').css("display", (what == 'isolation' ? 'none' : ''));
206
207         if (what == 'isolation') {
208             tra.hide_noauth();
209         }
210         else {
211             tra.show_noauth();
212         }
213             
214         if (false) {
215             // ricalculation of standup area
216             if (standup_data_old != null) {
217                 standup_data = standup_data_old;
218                 standup_data_old = null;
219                 j_stand_cont(standup_data);
220             }
221         }
222     }
223 }