var menu_list = { 'title': 'Calls', 'items': [{'name': 'Archive', 'callback': menu_list_archive}, {'name': 'Delete', 'callback': menu_list_delete}, {'name': 'Cancel', 'type': 'hide'}] }; function page_init() { var frame = document.getElementById('phonecall'); frame.src = ''; fetch_incoming(); fetch_archive(); } function fetch_incoming_callback(data) { var calls = document.getElementById('incoming_calls'); var div = document.getElementById('incoming'); while (calls.childNodes.length > 0) calls.removeChild(calls.childNodes[0]); if (data.incoming.length > 0) { div.style.display = ''; for (var i=0; i < data.incoming.length; i++) { var elem = document.createElement('li'); var text = data.incoming[i].date + ', '; if (data.incoming[i].name == '*** Unknown ***' && data.incoming[i].number != '0') text += data.incoming[i].number; else text += data.incoming[i].name; text += ', ' + data.incoming[i].length; elem.innerHTML = text; elem.payload = new Array(); elem.payload['dir'] = 'incoming'; elem.payload['call'] = data.incoming[i].fname; if (data.incoming[i].read == undefined) elem.className = 'new'; elem.onclick = play_message; elem.oncontextmenu = list_context; calls.appendChild(elem); } } else { div.style.display = 'none'; } } function fetch_incoming() { ajax_request('incoming', '', fetch_incoming_callback); } function fetch_archive_callback(data) { var calls = document.getElementById('archive_calls'); var div = document.getElementById('archive'); while (calls.childNodes.length > 0) calls.removeChild(calls.childNodes[0]); if (data.archive.length > 0) { div.style.display = ''; for (var i=0; i < data.archive.length; i++) { var elem = document.createElement('li'); var text = data.archive[i].date + ', '; if (data.archive[i].name == '*** Unknown ***' && data.archive[i].number != '0') text += data.archive[i].number; else text += data.archive[i].name; text += ', ' + data.archive[i].length; elem.innerHTML = text; elem.payload = new Array(); elem.payload['dir'] = 'archive'; elem.payload['call'] = data.archive[i].fname; elem.onclick = play_message; elem.oncontextmenu = list_context; calls.appendChild(elem); } } else { div.style.display = 'none'; } } function fetch_archive() { ajax_request('archive', '', fetch_archive_callback); } function play_message_callback(data) { var speaker = document.getElementById('callspeaker'); var date = document.getElementById('calldate'); var note = document.getElementById('callnote'); var text = data.name; if (data.number != '0') text += ' (' + data.number + ')'; speaker.innerHTML = text; date.innerHTML = data.date + ', ' + data.length; note.innerHTML = data.note; } function play_message(event) { var frame = document.getElementById('phonecall'); var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call']; ajax_request('callinfo', params, play_message_callback); frame.src = 'index.php?'+params; event.originalTarget.className = ''; } function list_context(e) { var menu = document.getElementById('menu_list'); if (!menu) menu = menu_create('menu_list', menu_list); menu.style.left = e.pageX - 40; menu.style.top = e.pageY - 15; menu.style.display = ''; menu.payload = new Array(); menu.payload['dir'] = e.target.payload['dir']; menu.payload['call'] = e.target.payload['call']; return false; } function menu_list_archive_callback(data) { fetch_incoming(); fetch_archive(); } function menu_list_archive(e) { if (e.target.parentNode.payload['dir'] == 'incoming') ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback); e.target.parentNode.style.display = 'none'; } function menu_list_delete(e) { var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call']; ajax_request('delete_call', params, menu_list_archive_callback); e.target.parentNode.style.display = 'none'; }