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 fetch_incoming_callback(data)
25 var calls = document.getElementById('incoming_calls');
26 var div = document.getElementById('incoming');
28 while (calls.childNodes.length > 0)
29 calls.removeChild(calls.childNodes[0]);
31 if (data.incoming.length > 0) {
32 div.style.display = '';
34 for (var i=0; i < data.incoming.length; i++) {
35 var elem = document.createElement('li');
36 var text = data.incoming[i].date + ', ';
37 if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
38 text += data.incoming[i].number;
40 text += data.incoming[i].name;
41 text += ', ' + data.incoming[i].length;
43 elem.innerHTML = text;
44 elem.payload = new Array();
45 elem.payload['dir'] = 'incoming';
46 elem.payload['call'] = data.incoming[i].fname;
47 if (data.incoming[i].read == undefined)
48 elem.className = 'new';
49 elem.onclick = play_message;
50 elem.oncontextmenu = list_context;
51 calls.appendChild(elem);
54 div.style.display = 'none';
58 function fetch_incoming()
60 ajax_request('incoming', '', fetch_incoming_callback);
63 function fetch_archive_callback(data)
65 var calls = document.getElementById('archive_calls');
66 var div = document.getElementById('archive');
68 while (calls.childNodes.length > 0)
69 calls.removeChild(calls.childNodes[0]);
71 if (data.archive.length > 0) {
72 div.style.display = '';
74 for (var i=0; i < data.archive.length; i++) {
75 var elem = document.createElement('li');
76 var text = data.archive[i].date + ', ';
77 if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
78 text += data.archive[i].number;
80 text += data.archive[i].name;
81 text += ', ' + data.archive[i].length;
83 elem.innerHTML = text;
84 elem.payload = new Array();
85 elem.payload['dir'] = 'archive';
86 elem.payload['call'] = data.archive[i].fname;
87 elem.onclick = play_message;
88 elem.oncontextmenu = list_context;
89 calls.appendChild(elem);
92 div.style.display = 'none';
96 function fetch_archive()
98 ajax_request('archive', '', fetch_archive_callback);
101 function play_message_callback(data)
103 var speaker = document.getElementById('callspeaker');
104 var date = document.getElementById('calldate');
105 var note = document.getElementById('callnote');
107 var text = data.name;
108 if (data.number != '0') text += ' (' + data.number + ')';
109 speaker.innerHTML = text;
110 date.innerHTML = data.date + ', ' + data.length;
111 note.innerHTML = data.note;
114 function play_message(event)
116 var frame = document.getElementById('phonecall');
117 var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call'];
118 ajax_request('callinfo', params, play_message_callback);
119 frame.src = 'index.php?'+params;
120 event.originalTarget.className = '';
123 function save_callback(data)
125 field = document.getElementById('edit_status');
126 field.innerHTML = 'Call saved';
131 var dir = document.getElementById('edit_dir');
132 var call = document.getElementById('edit_call');
133 var name = document.getElementById('edit_name');
134 var note = document.getElementById('edit_note');
135 var params = 'dir=' + dir.value + '&call=' + call.value;
136 params += '&name=' + name.value + '¬e=' + note.value;
138 ajax_request('save', params, save_callback);
141 function list_context(e)
143 var menu = document.getElementById('menu_list');
145 menu = menu_create('menu_list', menu_list);
147 menu.style.left = e.pageX - 40;
148 menu.style.top = e.pageY - 15;
149 menu.style.display = '';
150 menu.payload = new Array();
151 menu.payload['dir'] = e.target.payload['dir'];
152 menu.payload['call'] = e.target.payload['call'];
157 function menu_list_archive_callback(data)
163 function menu_list_edit_callback(data)
165 var fields = ['name','note','dir','call'];
168 for (var i=0; i < fields.length; i++) {
169 field = document.getElementById('edit_' + fields[i]);
170 field.value = data[fields[i]];
173 fields = ['name','note'];
174 for (var i=0; i < fields.length; i++) {
175 field = document.getElementById('edit_' + fields[i]);
176 field.innerHTML = data[fields[i]];
179 field = document.getElementById('edit_date');
180 field.innerHTML = data.date + ', ' + data.length;
181 field = document.getElementById('edit_status');
182 field.innerHTML = '';
185 function menu_list_archive(e)
187 if (e.target.parentNode.payload['dir'] == 'incoming')
188 ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback);
190 e.target.parentNode.style.display = 'none';
193 function menu_list_edit(e)
195 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
196 ajax_request('callinfo', params, menu_list_edit_callback);
198 e.target.parentNode.style.display = 'none';
201 function menu_list_delete(e)
203 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
204 ajax_request('delete_call', params, menu_list_archive_callback);
206 e.target.parentNode.style.display = 'none';