3 'items': [{'name': 'Archive', 'callback': menu_list_archive},
4 {'name': 'Edit', 'callback': menu_list_edit},
5 {'name': 'Delete', 'callback': menu_list_delete},
6 {'name': 'Cancel', 'type': 'hide'}]
11 var frame = document.getElementById('phonecall');
23 function remove_children(obj)
25 while (obj.childNodes.length > 0)
26 obj.removeChild(obj.childNodes[0]);
29 function fetch_incoming_callback(data)
31 var calls = document.getElementById('incoming_calls');
32 var div = document.getElementById('incoming');
34 remove_children(calls);
36 if (data.incoming.length > 0) {
37 div.style.display = '';
39 for (var i=0; i < data.incoming.length; i++) {
40 var elem = document.createElement('li');
41 var text = data.incoming[i].date + ', ';
42 if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
43 text += data.incoming[i].number;
45 text += data.incoming[i].name;
46 text += ', ' + data.incoming[i].length;
48 elem.innerHTML = text;
49 elem.payload = new Array();
50 elem.payload['dir'] = 'incoming';
51 elem.payload['call'] = data.incoming[i].fname;
52 if (data.incoming[i].read == undefined)
53 elem.className = 'new';
54 if (data.incoming[i].note.length)
55 elem.title = data.incoming[i].note;
56 elem.onclick = play_message;
57 elem.oncontextmenu = list_context;
58 calls.appendChild(elem);
61 div.style.display = 'none';
65 function fetch_incoming()
67 ajax_request('incoming', '', fetch_incoming_callback);
70 function fetch_archive_callback(data)
72 var calls = document.getElementById('archive_calls');
73 var div = document.getElementById('archive');
75 remove_children(calls);
77 if (data.archive.length > 0) {
78 div.style.display = '';
80 for (var i=0; i < data.archive.length; i++) {
81 var elem = document.createElement('li');
82 var text = data.archive[i].date + ', ';
83 if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
84 text += data.archive[i].number;
86 text += data.archive[i].name;
87 text += ', ' + data.archive[i].length;
89 elem.innerHTML = text;
90 elem.payload = new Array();
91 elem.payload['dir'] = 'archive';
92 elem.payload['call'] = data.archive[i].fname;
93 if (data.archive[i].note.length)
94 elem.title = data.archive[i].note;
95 elem.onclick = play_message;
96 elem.oncontextmenu = list_context;
97 calls.appendChild(elem);
100 div.style.display = 'none';
104 function fetch_archive()
106 ajax_request('archive', '', fetch_archive_callback);
109 function play_message_callback(data)
111 var speaker = document.getElementById('callspeaker');
112 var date = document.getElementById('calldate');
113 var note = document.getElementById('callnote');
115 if (data.dir == 'messages') {
116 date.innerHTML = ' ';
117 speaker.innerHTML = 'Message ' + data.call;
122 var text = data.name;
123 if (data.number != '0') text += ' (' + data.number + ')';
124 speaker.innerHTML = text;
125 date.innerHTML = data.date + ', ' + data.length;
126 note.innerHTML = data.note;
129 function play_message(event)
131 var frame = document.getElementById('phonecall');
132 var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call'];
133 ajax_request('callinfo', params, play_message_callback);
134 frame.src = 'index.php?'+params;
135 event.originalTarget.className = '';
138 function save_callback(data)
140 field = document.getElementById('edit_status');
141 field.innerHTML = 'Call saved';
146 var dir = document.getElementById('edit_dir');
147 var call = document.getElementById('edit_call');
148 var name = document.getElementById('edit_name');
149 var note = document.getElementById('edit_note');
150 var params = 'dir=' + dir.value + '&call=' + call.value;
151 params += '&name=' + name.value + '¬e=' + note.value;
153 ajax_request('save', params, save_callback);
156 function list_context(e)
158 var menu = document.getElementById('menu_list');
160 menu = menu_create('menu_list', menu_list);
162 menu.style.left = e.pageX - 40;
163 menu.style.top = e.pageY - 15;
164 menu.style.display = '';
165 menu.payload = new Array();
166 menu.payload['dir'] = e.target.payload['dir'];
167 menu.payload['call'] = e.target.payload['call'];
172 function menu_list_archive_callback(data)
178 function menu_list_edit_callback(data)
180 var fields = ['name','note','dir','call'];
183 for (var i=0; i < fields.length; i++) {
184 field = document.getElementById('edit_' + fields[i]);
185 field.value = data[fields[i]];
188 fields = ['name','note'];
189 for (var i=0; i < fields.length; i++) {
190 field = document.getElementById('edit_' + fields[i]);
191 field.innerHTML = data[fields[i]];
194 field = document.getElementById('edit_date');
195 field.innerHTML = data.date + ', ' + data.length;
196 field = document.getElementById('edit_status');
197 field.innerHTML = '';
200 function menu_list_archive(e)
202 if (e.target.parentNode.payload['dir'] == 'incoming')
203 ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback);
205 e.target.parentNode.style.display = 'none';
208 function menu_list_edit(e)
210 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
211 ajax_request('callinfo', params, menu_list_edit_callback);
213 e.target.parentNode.style.display = 'none';
215 var edit = document.getElementById('container_edit');
216 var config = document.getElementById('container_config');
218 edit.style.display = '';
219 config.style.display = 'none';
222 function menu_list_delete(e)
224 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
225 ajax_request('delete_call', params, menu_list_archive_callback);
227 e.target.parentNode.style.display = 'none';
230 function fetch_messages_callback(data)
232 var calls = document.getElementById('internal_calls');
234 remove_children(calls);
236 if (data.messages.length > 0) {
237 for (var i=0; i < data.messages.length; i++) {
238 var elem = document.createElement('li');
240 elem.innerHTML = data.messages[i].fname;
241 elem.payload = new Array();
242 elem.payload['dir'] = 'messages';
243 elem.payload['call'] = data.messages[i].fname;
244 elem.onclick = play_message;
245 calls.appendChild(elem);
250 function toggle_messages()
252 var edit = document.getElementById('container_edit');
253 var config = document.getElementById('container_config');
255 config.style.display = '';
256 edit.style.display = 'none';
258 ajax_request('messages', '', fetch_messages_callback);