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'}]
9 var hover_color = '#c9e5ff';
13 var frame = document.getElementById('phonecall');
25 function remove_children(obj)
27 while (obj.childNodes.length > 0)
28 obj.removeChild(obj.childNodes[0]);
31 function fetch_incoming_callback(data)
33 var calls = document.getElementById('incoming_calls');
34 var div = document.getElementById('incoming');
36 remove_children(calls);
38 if (data.incoming.length > 0) {
39 div.style.display = '';
41 for (var i=0; i < data.incoming.length; i++) {
42 var elem = document.createElement('li');
43 var text = data.incoming[i].date + ', ';
44 if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
45 text += data.incoming[i].number;
47 text += data.incoming[i].name;
48 text += ', ' + data.incoming[i].length;
50 elem.innerHTML = text;
51 elem.payload = new Array();
52 elem.payload['dir'] = 'incoming';
53 elem.payload['call'] = data.incoming[i].fname;
54 if (data.incoming[i].read == undefined)
55 elem.className = 'new';
56 if (data.incoming[i].note.length)
57 elem.title = data.incoming[i].note;
58 elem.onclick = play_message;
59 elem.oncontextmenu = list_context;
60 calls.appendChild(elem);
63 div.style.display = 'none';
67 function fetch_incoming()
69 ajax_request('incoming', '', fetch_incoming_callback);
72 function fetch_archive_callback(data)
74 var calls = document.getElementById('archive_calls');
75 var div = document.getElementById('archive');
77 remove_children(calls);
79 if (data.archive.length > 0) {
80 div.style.display = '';
82 for (var i=0; i < data.archive.length; i++) {
83 var elem = document.createElement('li');
84 var text = data.archive[i].date + ', ';
85 if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
86 text += data.archive[i].number;
88 text += data.archive[i].name;
89 text += ', ' + data.archive[i].length;
91 elem.innerHTML = text;
92 elem.payload = new Array();
93 elem.payload['dir'] = 'archive';
94 elem.payload['call'] = data.archive[i].fname;
95 if (data.archive[i].note.length)
96 elem.title = data.archive[i].note;
97 elem.onclick = play_message;
98 elem.oncontextmenu = list_context;
99 calls.appendChild(elem);
102 div.style.display = 'none';
106 function fetch_archive()
108 ajax_request('archive', '', fetch_archive_callback);
111 function play_message_callback(data)
113 var speaker = document.getElementById('callspeaker');
114 var date = document.getElementById('calldate');
115 var note = document.getElementById('callnote');
117 if (data.dir == 'messages') {
118 date.innerHTML = ' ';
119 speaker.innerHTML = 'Message ' + data.call;
124 var text = data.name;
125 if (data.number != '0') text += ' (' + data.number + ')';
126 speaker.innerHTML = text;
127 date.innerHTML = data.date + ', ' + data.length;
128 note.innerHTML = data.note;
131 function play_message(event)
133 var frame = document.getElementById('phonecall');
134 var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call'];
136 ajax_request('callinfo', params, play_message_callback);
137 frame.src = 'index.php?'+params;
138 event.originalTarget.className = '';
141 function save_callback(data)
143 field = document.getElementById('edit_status');
144 field.innerHTML = 'Call saved';
149 var dir = document.getElementById('edit_dir');
150 var call = document.getElementById('edit_call');
151 var name = document.getElementById('edit_name');
152 var note = document.getElementById('edit_note');
153 var params = 'dir=' + dir.value + '&call=' + call.value;
154 params += '&name=' + name.value + '¬e=' + note.value;
156 ajax_request('save', params, save_callback);
159 function list_context(e)
161 var target = e.target;
162 target.style.backgroundColor = hover_color;
164 var menu = document.getElementById('menu_list');
166 menu = menu_create('menu_list', menu_list);
168 menu.style.left = e.pageX - 40;
169 menu.style.top = e.pageY - 15;
170 menu.style.display = '';
171 menu.payload = new Array();
172 menu.payload['dir'] = e.target.payload['dir'];
173 menu.payload['call'] = e.target.payload['call'];
174 menu.payload['row'] = target;
179 function menu_list_archive_callback(data)
185 function menu_list_edit_callback(data)
187 var fields = ['name','note','dir','call'];
190 for (var i=0; i < fields.length; i++) {
191 field = document.getElementById('edit_' + fields[i]);
192 field.value = data[fields[i]];
195 fields = ['name','note'];
196 for (var i=0; i < fields.length; i++) {
197 field = document.getElementById('edit_' + fields[i]);
198 field.innerHTML = data[fields[i]];
201 field = document.getElementById('edit_date');
202 field.innerHTML = data.date + ', ' + data.length;
203 field = document.getElementById('edit_status');
204 field.innerHTML = '';
207 function menu_list_archive(e)
209 if (e.target.parentNode.payload['dir'] == 'incoming')
210 ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback);
212 e.target.parentNode.style.display = 'none';
213 e.target.parentNode.payload['row'].style.backgroundColor = '';
216 function menu_list_edit(e)
218 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
219 ajax_request('callinfo', params, menu_list_edit_callback);
221 e.target.parentNode.style.display = 'none';
222 e.target.parentNode.payload['row'].style.backgroundColor = '';
224 var edit = document.getElementById('container_edit');
225 var config = document.getElementById('container_config');
227 edit.style.display = '';
228 config.style.display = 'none';
231 function menu_list_delete(e)
233 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
234 ajax_request('delete_call', params, menu_list_archive_callback);
236 e.target.parentNode.style.display = 'none';
237 e.target.parentNode.payload['row'].style.backgroundColor = '';
240 function fetch_messages_callback(data)
242 var calls = document.getElementById('internal_calls');
244 remove_children(calls);
246 if (data.messages.length > 0) {
247 for (var i=0; i < data.messages.length; i++) {
248 var elem = document.createElement('li');
250 elem.innerHTML = data.messages[i].fname;
251 elem.payload = new Array();
252 elem.payload['dir'] = 'messages';
253 elem.payload['call'] = data.messages[i].fname;
254 elem.onclick = play_message;
255 calls.appendChild(elem);
260 function toggle_messages()
262 var edit = document.getElementById('container_edit');
263 var config = document.getElementById('container_config');
265 config.style.display = '';
266 edit.style.display = 'none';
268 ajax_request('messages', '', fetch_messages_callback);