let o={}; const ui={}; let curo,curp; let editinge=null; function getcookie(key) {return document.cookie.replace(new RegExp('(?:(?:^|.*;\\s*)'+key+'\\s*\\=\\s*([^;]*).*$)|^.*$'),'$1');} function make_sortable(e,updatefunc) { let dragging,nxt; function _drag(ev) { ev.preventDefault(); ev.dataTransfer.dropEffect='move'; const targ=ev.target; if(targ&&targ!=dragging&&targ.draggable&&targ.parentNode==e) { const rect=targ.getBoundingClientRect(); const after=(ev.clientY-rect.top)/(rect.bottom-rect.top)>.5; e.insertBefore(dragging,after?targ.nextSibling:targ); } } function _drag_end(ev) { ev.preventDefault(); dragging.classList.remove('ghost'); e.removeEventListener('dragover',_drag,false); e.removeEventListener('dragend',_drag_end,false); if(nxt!=dragging.nextSibling)updatefunc(dragging); } function _drag_start(ev) { dragging=ev.target; nxt=dragging.nextSibling; ev.dataTransfer.effectAllowed='move'; ev.dataTransfer.setData('Text',dragging.textContent); e.addEventListener('dragover',_drag,false); e.addEventListener('dragend',_drag_end,false); setTimeout(function(){dragging.classList.add('ghost');},0); } e.addEventListener('dragstart',_drag_start,false); } function remove_children(e) { while(e.firstChild)e.removeChild(e.firstChild); } function switch_folder(path) { //path starts and ends with / ui.main.style.display='block'; ui.settings.style.display=null; const p=path.split('/'); remove_children(ui.cont); let cur=o; for(let i=1;cur&&i{ if(r) { document.getElementById('loginerr').innerHTML='login failed:' switch(r) { case 1: document.getElementById('loginerr').innerHTML+='authentication failure'; break; case 2: document.getElementById('loginerr').innerHTML+='duplicate session'; break; } } else { document.getElementById('loginerr').innerHTML=''; init(); } } ); } function display_bookmarks() { remove_children(ui.folderlist); for(let i=0;i{ if(r) { ui.login.style.display='block'; ui.main.style.display=null; } else { ui.login.style.display=null; display_bookmarks(); ui.main.style.display='block'; } } ); }