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');
17 function fetch_incoming_callback(data)
19 var calls = document.getElementById('incoming_calls');
20 var div = document.getElementById('incoming');
22 while (calls.childNodes.length > 0)
23 calls.removeChild(calls.childNodes[0]);
25 if (data.incoming.length > 0) {
26 div.style.display = '';
28 for (var i=0; i < data.incoming.length; i++) {
29 var elem = document.createElement('li');
30 var text = data.incoming[i].date + ', ';
31 if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0')
32 text += data.incoming[i].number;
34 text += data.incoming[i].name;
35 text += ', ' + data.incoming[i].length;
37 elem.innerHTML = text;
38 elem.payload = new Array();
39 elem.payload['dir'] = 'incoming';
40 elem.payload['call'] = data.incoming[i].fname;
41 if (data.incoming[i].read == undefined)
42 elem.className = 'new';
43 elem.onclick = play_message;
44 elem.oncontextmenu = list_context;
45 calls.appendChild(elem);
48 div.style.display = 'none';
52 function fetch_incoming()
54 ajax_request('incoming', '', fetch_incoming_callback);
57 function fetch_archive_callback(data)
59 var calls = document.getElementById('archive_calls');
60 var div = document.getElementById('archive');
62 while (calls.childNodes.length > 0)
63 calls.removeChild(calls.childNodes[0]);
65 if (data.archive.length > 0) {
66 div.style.display = '';
68 for (var i=0; i < data.archive.length; i++) {
69 var elem = document.createElement('li');
70 var text = data.archive[i].date + ', ';
71 if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0')
72 text += data.archive[i].number;
74 text += data.archive[i].name;
75 text += ', ' + data.archive[i].length;
77 elem.innerHTML = text;
78 elem.payload = new Array();
79 elem.payload['dir'] = 'archive';
80 elem.payload['call'] = data.archive[i].fname;
81 elem.onclick = play_message;
82 elem.oncontextmenu = list_context;
83 calls.appendChild(elem);
86 div.style.display = 'none';
90 function fetch_archive()
92 ajax_request('archive', '', fetch_archive_callback);
95 function play_message_callback(data)
97 var speaker = document.getElementById('callspeaker');
98 var date = document.getElementById('calldate');
99 var note = document.getElementById('callnote');
101 var text = data.name;
102 if (data.number != '0') text += ' (' + data.number + ')';
103 speaker.innerHTML = text;
104 date.innerHTML = data.date + ', ' + data.length;
105 note.innerHTML = data.note;
108 function play_message(event)
110 var frame = document.getElementById('phonecall');
111 var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call'];
112 ajax_request('callinfo', params, play_message_callback);
113 frame.src = 'index.php?'+params;
114 event.originalTarget.className = '';
117 function save_callback(data)
119 field = document.getElementById('edit_status');
120 field.innerHTML = 'Call saved';
125 var dir = document.getElementById('edit_dir');
126 var call = document.getElementById('edit_call');
127 var name = document.getElementById('edit_name');
128 var note = document.getElementById('edit_note');
129 var params = 'dir=' + dir.value + '&call=' + call.value;
130 params += '&name=' + name.value + '¬e=' + note.value;
132 ajax_request('save', params, save_callback);
135 function list_context(e)
137 var menu = document.getElementById('menu_list');
139 menu = menu_create('menu_list', menu_list);
141 menu.style.left = e.pageX - 40;
142 menu.style.top = e.pageY - 15;
143 menu.style.display = '';
144 menu.payload = new Array();
145 menu.payload['dir'] = e.target.payload['dir'];
146 menu.payload['call'] = e.target.payload['call'];
151 function menu_list_archive_callback(data)
157 function menu_list_edit_callback(data)
159 var fields = ['name','note','dir','call'];
162 for (var i=0; i < fields.length; i++) {
163 field = document.getElementById('edit_' + fields[i]);
164 field.value = data[fields[i]];
167 fields = ['name','note'];
168 for (var i=0; i < fields.length; i++) {
169 field = document.getElementById('edit_' + fields[i]);
170 field.innerHTML = data[fields[i]];
173 field = document.getElementById('edit_date');
174 field.innerHTML = data.date + ', ' + data.length;
175 field = document.getElementById('edit_status');
176 field.innerHTML = '';
179 function menu_list_archive(e)
181 if (e.target.parentNode.payload['dir'] == 'incoming')
182 ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback);
184 e.target.parentNode.style.display = 'none';
187 function menu_list_edit(e)
189 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
190 ajax_request('callinfo', params, menu_list_edit_callback);
192 e.target.parentNode.style.display = 'none';
195 function menu_list_delete(e)
197 var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call'];
198 ajax_request('delete_call', params, menu_list_archive_callback);
200 e.target.parentNode.style.display = 'none';