886e103bc2ce0d741b628cfe2632e91e494c90c7
[infodrom/phone] / lib / basics.js
1 /*
2  * Change style of DOM elements
3  */
4 function style_adjust(styles)
5 {
6     var obj;
7     if (!styles) return;
8
9     for (id in styles) {
10         obj = document.getElementById(id);
11         if (!obj) continue;
12         for (item in styles[id])
13             obj.style[item] = styles[id][item];
14     }
15 }
16
17 /*
18  * Small AJAX framework
19  */
20 function ajax_request_callback(req)
21 {
22     if (req.readyState == 4 && req.status == 200) {
23         var data = json_parse(req.responseText);
24
25         if (req.oncomplete)
26             req.oncomplete(data);
27     }
28 }
29
30 function ajax_request(func,params,oncomplete)
31 {
32     var req = new XMLHttpRequest();
33     if (!req) return;
34
35     var params = 'func=' + func + '&' + params;
36     req.open ("POST", 'index.php');
37     req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
38     req.setRequestHeader("Content-length", params.length);
39     req.setRequestHeader("Connection", "close");
40     if (typeof oncomplete == 'function') {
41         req.onreadystatechange = function() { ajax_request_callback(req); }
42         req.oncomplete = oncomplete;
43     }
44     req.send(params);
45 }
46
47 /*
48  * Small context menu framework
49  */
50 function menu_hide(e)
51 {
52     e.target.parentNode.style.display = 'none';
53 }
54
55 function menu_create(id,data)
56 {
57     var div = document.createElement('div');
58     div.id = id;
59     div.className = 'popup';
60
61     var elem = document.createElement('span');
62     elem.className = 'popupTitle';
63     elem.innerHTML = data['title'];
64     elem.onmouseup = menu_hide;
65     div.appendChild(elem);
66
67     for (var i=0; i < data['items'].length; i++) {
68         elem = document.createElement('span');
69         elem.className = 'popup';
70         elem.innerHTML = data['items'][i]['name'];
71         if (data['items'][i]['type'] == 'hide')
72             elem.onmouseup = menu_hide;
73         else
74             elem.onmouseup = data['items'][i]['callback'];
75         div.appendChild(elem);
76     }
77
78     document.body.appendChild(div);
79     return div;
80 }