Support archive of phone calls
[infodrom/phone] / phone.js
1 function page_init()
2 {
3     var frame = document.getElementById('phonecall');
4     frame.src = '';
5     fetch_incoming();
6     fetch_archive();
7 }
8
9 function fetch_incoming_callback(data)
10 {
11     var calls = document.getElementById('incoming_calls');
12     var div = document.getElementById('incoming');
13
14     while (calls.childNodes.length > 0)
15         calls.removeChild(calls.childNodes[0]);
16
17     if (data.incoming.length > 0) {
18         div.style.display = '';
19
20         for (var i=0; i < data.incoming.length; i++) {
21             var elem = document.createElement('li');
22             var text = data.incoming[i].date + ', ';
23             if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
24                 text += data.incoming[i].number;
25             else
26                 text += data.incoming[i].name;
27             text += ', ' + data.incoming[i].length;
28
29             elem.innerHTML = text;
30             elem.payload = new Array();
31             elem.payload['dir'] = 'incoming';
32             elem.payload['fname'] = data.incoming[i].fname;
33             elem.onclick = play_message;
34             calls.appendChild(elem);
35         }
36     } else {
37         div.style.display = 'none';
38     }
39 }
40
41 function fetch_incoming()
42 {
43     ajax_request('incoming', '', fetch_incoming_callback);
44 }
45
46 function fetch_archive_callback(data)
47 {
48     var calls = document.getElementById('archive_calls');
49     var div = document.getElementById('archive');
50
51     while (calls.childNodes.length > 0)
52         calls.removeChild(calls.childNodes[0]);
53
54     if (data.archive.length > 0) {
55         div.style.display = '';
56
57         for (var i=0; i < data.archive.length; i++) {
58             var elem = document.createElement('li');
59             var text = data.archive[i].date + ', ';
60             if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
61                 text += data.archive[i].number;
62             else
63                 text += data.archive[i].name;
64             text += ', ' + data.archive[i].length;
65
66             elem.innerHTML = text;
67             elem.payload = new Array();
68             elem.payload['dir'] = 'archive';
69             elem.payload['fname'] = data.archive[i].fname;
70             elem.onclick = play_message;
71             calls.appendChild(elem);
72         }
73     } else {
74         div.style.display = 'none';
75     }
76 }
77
78 function fetch_archive()
79 {
80     ajax_request('archive', '', fetch_archive_callback);
81 }
82
83 function play_message_callback(data)
84 {
85     var speaker = document.getElementById('callspeaker');
86     var date = document.getElementById('calldate');
87     var note = document.getElementById('callnote');
88
89     Debug.ObjDump(data);
90
91     var text = data.name;
92     if (data.number != '0') text += ' (' + data.number + ')';
93     speaker.innerHTML = text;
94     date.innerHTML = data.date + ', ' + data.length;
95     note.innerHTML = data.note;
96 }
97
98 function play_message(event)
99 {
100     Debug.write('Request ' + event.originalTarget.payload['fname'] + ' in ' + event.originalTarget.payload['dir']);
101
102     var frame = document.getElementById('phonecall');
103     var parms = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['fname'];
104     ajax_request('callinfo', parms, play_message_callback);
105     frame.src = 'index.php?'+parms;
106 }