3 'items': [{'name': 'Archive', 'callback': menu_list_archive},
4 {'name': 'Edit', 'callback': menu_list_edit},
5 {'name': 'Move', 'callback': menu_list_move},
6 {'name': 'Delete', 'callback': menu_list_delete},
7 {'name': 'Cancel', 'type': 'hide'}]
10 var hover_color = '#c9e5ff';
14 var frame = document.getElementById('phonecall');
19 var move = document.getElementById('container_move');
20 move.style.display = 'none';
29 function remove_children(obj)
31 while (obj.childNodes.length > 0)
32 obj.removeChild(obj.childNodes[0]);
35 function fetch_incoming_callback(data)
37 var calls = document.getElementById('incoming_calls');
38 var div = document.getElementById('incoming');
40 remove_children(calls);
42 if (data.incoming.length > 0) {
43 div.style.display = '';
45 for (var i=0; i < data.incoming.length; i++) {
46 var elem = document.createElement('li');
47 var text = data.incoming[i].date + ', ';
48 if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
49 text += data.incoming[i].number;
51 text += data.incoming[i].name;
52 text += ', ' + data.incoming[i].length;
54 elem.innerHTML = text;
55 elem.payload = new Array();
56 elem.payload['dir'] = 'incoming';
57 elem.payload['call'] = data.incoming[i].fname;
58 if (data.incoming[i].read == undefined)
59 elem.className = 'new';
60 if (data.incoming[i].note.length)
61 elem.title = data.incoming[i].note;
62 elem.onclick = play_message;
63 elem.oncontextmenu = list_context;
64 calls.appendChild(elem);
67 div.style.display = 'none';
71 function fetch_incoming()
73 ajax_request('incoming', '', fetch_incoming_callback);
76 function fetch_archive_callback(data)
78 var calls = document.getElementById('archive_calls');
79 var div = document.getElementById('archive');
81 remove_children(calls);
83 if (data.archive.length > 0) {
84 div.style.display = '';
86 for (var i=0; i < data.archive.length; i++) {
87 var elem = document.createElement('li');
88 var text = data.archive[i].date + ', ';
89 if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
90 text += data.archive[i].number;
92 text += data.archive[i].name;
93 text += ', ' + data.archive[i].length;
95 elem.innerHTML = text;
96 elem.payload = new Array();
97 elem.payload['dir'] = 'archive';
98 elem.payload['call'] = data.archive[i].fname;
99 if (data.archive[i].note.length)
100 elem.title = data.archive[i].note;
101 elem.onclick = play_message;
102 elem.oncontextmenu = list_context;
103 calls.appendChild(elem);
106 div.style.display = 'none';
110 function fetch_archive()
112 ajax_request('archive', '', fetch_archive_callback);
115 function play_message_callback(data)
117 var speaker = document.getElementById('callspeaker');
118 var date = document.getElementById('calldate');
119 var note = document.getElementById('callnote');
121 if (data.dir == 'messages') {
122 date.innerHTML = ' ';
123 speaker.innerHTML = 'Message ' + data.call;
128 var text = data.name;
129 if (data.number != '0') text += ' (' + data.number + ')';
130 speaker.innerHTML = text;
131 date.innerHTML = data.date + ', ' + data.length;
132 note.innerHTML = data.note;
135 function play_message(event)
137 var frame = document.getElementById('phonecall');
138 var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call'];
140 ajax_request('callinfo', params, play_message_callback);
141 frame.src = 'index.php?'+params;
142 event.originalTarget.className = '';
145 function save_callback(data)
147 field = document.getElementById('edit_status');
148 field.innerHTML = 'Call saved';
153 var dir = document.getElementById('edit_dir');
154 var call = document.getElementById('edit_call');
155 var name = document.getElementById('edit_name');
156 var note = document.getElementById('edit_note');
157 var params = 'dir=' + dir.value + '&call=' + call.value;
158 params += '&name=' + name.value + '¬e=' + note.value;
160 ajax_request('save', params, save_callback);
163 function move_callback(data)
165 var move = document.getElementById('container_move');
166 move.style.display = 'none';
172 var call = document.getElementById('move_call');
173 var fname = document.getElementById('move_fname');
174 var note = document.getElementById('move_note');
175 var params = 'call=' + call.value;
176 params += '&fname=' + fname.value + '¬e=' + note.value;
178 ajax_request('move', params, move_callback);
181 function list_context(e)
183 var target = e.target;
184 target.style.backgroundColor = hover_color;
186 var menu = document.getElementById('menu_list');
188 menu = menu_create('menu_list', menu_list);
190 menu.style.left = e.pageX - 40;
191 menu.style.top = e.pageY - 15;
192 menu.style.display = '';
193 menu.payload = new Array();
194 menu.payload['dir'] = e.target.payload['dir'];
195 menu.payload['call'] = e.target.payload['call'];
196 menu.payload['row'] = target;
201 function menu_list_archive_callback(data)
207 function menu_list_edit_callback(data)
209 var fields = ['name','note','dir','call'];
212 for (var i=0; i < fields.length; i++) {
213 field = document.getElementById('edit_' + fields[i]);
214 field.value = data[fields[i]];
217 fields = ['name','note'];
218 for (var i=0; i < fields.length; i++) {
219 field = document.getElementById('edit_' + fields[i]);
220 field.innerHTML = data[fields[i]];
223 field = document.getElementById('edit_date');
224 field.innerHTML = data.date + ', ' + data.length;
225 field = document.getElementById('edit_status');
226 field.innerHTML = '';
229 function menu_list_archive(e)
231 if (e.target.parentNode.payload['dir'] == 'incoming')
232 ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback);
234 e.target.parentNode.style.display = 'none';
235 e.target.parentNode.payload['row'].style.backgroundColor = '';
238 function menu_list_edit(e)
240 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
241 ajax_request('callinfo', params, menu_list_edit_callback);
243 e.target.parentNode.style.display = 'none';
244 e.target.parentNode.payload['row'].style.backgroundColor = '';
246 var edit = document.getElementById('container_edit');
247 var config = document.getElementById('container_config');
249 edit.style.display = '';
250 config.style.display = 'none';
253 function menu_list_move(e)
255 var move = document.getElementById('container_move');
256 var details = document.getElementById('move_details');
257 var fname = document.getElementById('move_fname');
258 var call = document.getElementById('move_call');
259 move.style.display = '';
260 details.innerHTML = e.target.parentNode.payload['row'].innerHTML;
261 fname.value = e.target.parentNode.payload['call'];
262 call.value = e.target.parentNode.payload['call'];
264 e.target.parentNode.style.display = 'none';
265 e.target.parentNode.payload['row'].style.backgroundColor = '';
268 function menu_list_delete(e)
270 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
271 ajax_request('delete_call', params, menu_list_archive_callback);
273 e.target.parentNode.style.display = 'none';
274 e.target.parentNode.payload['row'].style.backgroundColor = '';
277 function fetch_messages_callback(data)
279 var calls = document.getElementById('internal_calls');
281 remove_children(calls);
283 if (data.messages.length > 0) {
284 for (var i=0; i < data.messages.length; i++) {
285 var elem = document.createElement('li');
287 elem.innerHTML = data.messages[i].fname;
288 if (data.messages[i].note)
289 elem.title = data.messages[i].note;
292 elem.payload = new Array();
293 elem.payload['dir'] = 'messages';
294 elem.payload['call'] = data.messages[i].fname;
295 elem.onclick = play_message;
296 calls.appendChild(elem);
301 function toggle_messages()
303 var edit = document.getElementById('container_edit');
304 var config = document.getElementById('container_config');
306 config.style.display = '';
307 edit.style.display = 'none';
309 ajax_request('messages', '', fetch_messages_callback);