function Screen(dom) { var root = document.getElementById('screen'); return { appendText: appendText, clear: clear, frame: frame, markAsRead: markAsRead, menu: menu, select: select, show: show, text: text }; function appendText(message) { getTextZone().children[0].textContent += message; } function clear(elem) { if(elem != undefined) { root.removeChild(elem); } else { dom.clear(root); } } function frame(n) { root.className = "frame" + n; } function getTextZone() { var textZone = root.getElementsByClassName('text')[0]; if(textZone == undefined) { textZone = dom.make('div', {class: ['text', 'framed']}, [ dom.make('p') ]); root.appendChild(textZone); } return textZone } function markAsRead() { getTextZone().classList.add('read'); } function menu(entries) { var domEntries = []; for(var i = 0; i < entries.length; i++) { domEntries.push(dom.make('li', { class: i == 0 ? 'selected' : [], textContent: entries[i].label }, [])); } var ul = dom.make('ul', {class: ['menu', 'framed']}, domEntries); root.appendChild(ul); return ul; } function select(cursor) { var ul = root.getElementsByClassName('menu')[0]; ul.getElementsByClassName('selected')[0].className = ''; ul.children[cursor].className = 'selected'; } function show(elem) { root.appendChild(elem); } function text(message) { getTextZone().children[0].textContent = message; if(message.length > 0) { markAsRead(); } } }