var selected = 0; function selectLibrary(evt) { var node; if(dom) { node = this; } else if(ie) { node = evt.srcElement; } if(selected && selected != node) { if(selected.className == 'libraryselected') { selected.className = 'library'; } else { selected.className = 'bookmark'; } selected = node; node.className = 'libraryselected'; } else if(!selected) { selected = node; node.className = 'libraryselected'; } } function selectBookmark(evt) { var node; if(dom) { node = this; } else if(ie) { node = evt.srcElement; } if(selected && selected != node) { if(selected.className == 'libraryselected') { selected.className = 'library'; } else { selected.className = 'bookmark'; } selected = node; node.className = 'bookmarkselected'; } else if(!selected) { selected = node; node.className = 'bookmarkselected'; } } ////////////////////////////////////////////////////////////////////// // tar bort valt bokmärke eller folder(om det inte är roten function removeNode(evt) { if(selected && selected.id != 'root') { if(selected.className == 'libraryselected') { if(selected.nextSibling.nodeType == 3) { // Textnode? selected.parentNode.removeChild(selected.nextSibling); } selected.parentNode.removeChild(selected.nextSibling); } selected.parentNode.removeChild(selected); selected = 0; } } setEventById('removeButton', 'click', removeNode); ////////////////////////////////////////////////////////////////////// // Letar fram ett nytt unikt idvärde var id = 0; function getId() { id++; return 'tmp' + id; } ////////////////////////////////////////////////////////////////////// // Lägger till en ny folder efter valt bokmärke eller som sista barn till vald folder function insertFolder(evt) { if(selected) { var library = document.createElement('div'); var id = getId(); var txt = ''; while(txt == '') { txt = window.prompt('Folder name:', ''); } if(txt == null) { return; } library.insertBefore(document.createTextNode(txt), null); var libraryContent = document.createElement('div'); if(selected.className == 'libraryselected') { var ip = selected.nextSibling; if(ip.nodeType == 3) { // Textnode? ip = ip.nextSibling; } ip.insertBefore(library, null); ip.insertBefore(libraryContent, null); } else { selected.parentNode.insertBefore(libraryContent, selected); selected.parentNode.insertBefore(library,libraryContent); selected.parentNode.insertBefore(selected,library); } if(ie) { // ie tycker inte omm 'class' library.setAttribute('className', 'library'); libraryContent.setAttribute('className', 'libraryContent'); } else { // och mozilla tycker inte om className library.setAttribute('class', 'library'); libraryContent.setAttribute('class', 'libraryContent'); } library.setAttribute('id', id); setEventHandlers(id); } } setEventById('insertButton', 'click', insertFolder); ////////////////////////////////////////////////////////////////////// // Flyttar en nod uppåt i trädet, om det är möjligt function moveUp(evt) { if(selected && selected != document.getElementById('root') && selected != document.getElementById('root').firstChild) { var prevNode; if(selected == selected.parentNode.firstChild) { alert('hit'); prevNode = selected.parentNode.previousSibling; if(prevNode.nodeType == 3) { // Textnode? prevNode = prevNode.previousSibling; } prevNode.parentNode.insertBefore(selected,prevNode); } } } setEventById('upButton', 'click', moveUp); ////////////////////////////////////////////////////////////////////// // Sätter eventhandlers för elementet med id id och dess barn. function setEventHandlers(id) { var node = document.getElementById(id); if(node.className == 'library') { setEventById(id, 'click', selectLibrary); node = node.nextSibling; if(node.nodeType == 3) { // Textnode? node = node.nextSibling; } var children = node.childNodes; for(var i = 0; i < children.length; i++) { if(children[i].className != 'libraryContent' && children[i].nodeType != 3) { // !Textnode? setEventHandlers(children[i].id) } } } else { setEventById(id, 'click', selectBookmark); } } setEventHandlers('root');