function showPanel(name,focus){ ['overview','receiver','calibration'].forEach(function(key){document.getElementById(key+'Panel').style.display=key===name?'block':'none';document.getElementById(key+'Tab').setAttribute('aria-pressed',String(key===name));}); if(focus!==false)document.getElementById({overview:'start',receiver:'receiver',calibration:'calibrate'}[name]).focus(); } ['overview','receiver','calibration'].forEach(function(name){document.getElementById(name+'Tab').onclick=function(){showPanel(name);};}); document.getElementById('calibrationShortcut').onclick=function(){showPanel('calibration');}; function setupFormEditors(ids,doc,win){ var pairs=ids.map(function(id){return {input:doc.getElementById(id),field:doc.getElementById(id+'Field')};}); pairs.forEach(function(pair){ var input=pair.input,field=pair.field;input.readOnly=true; field.onclick=function(){if(input.disabled || !input.readOnly)return;input.readOnly=false;input.focus();}; input.addEventListener('blur',function(){input.readOnly=true;}); input.addEventListener('mousedown',function(event){if(input.readOnly)event.preventDefault();}); }); function finishEditing(){ pairs.forEach(function(pair){if(!pair.input.readOnly){pair.input.readOnly=true;pair.input.blur();pair.field.focus();}}); } doc.addEventListener('keyboardStateChange',function(event){var detail=event.detail||{};if(detail.visibility===false || detail.isShowing===false)finishEditing();}); doc.addEventListener('keydown',function(event){if((event.keyCode===461 || event.key==='Escape') && pairs.some(function(pair){return !pair.input.readOnly;})){event.preventDefault();finishEditing();}}); } setupFormEditors(['host','port','piccapPort','token','customProfile'],document,window);