| exports.removeElement = function(elem){ |
| if(elem.prev) elem.prev.next = elem.next; |
| if(elem.next) elem.next.prev = elem.prev; |
| |
| if(elem.parent){ |
| var childs = elem.parent.children; |
| childs.splice(childs.lastIndexOf(elem), 1); |
| } |
| }; |
| |
| exports.replaceElement = function(elem, replacement){ |
| var prev = replacement.prev = elem.prev; |
| if(prev){ |
| prev.next = replacement; |
| } |
| |
| var next = replacement.next = elem.next; |
| if(next){ |
| next.prev = replacement; |
| } |
| |
| var parent = replacement.parent = elem.parent; |
| if(parent){ |
| var childs = parent.children; |
| childs[childs.lastIndexOf(elem)] = replacement; |
| } |
| }; |
| |
| exports.appendChild = function(elem, child){ |
| child.parent = elem; |
| |
| if(elem.children.push(child) !== 1){ |
| var sibling = elem.children[elem.children.length - 2]; |
| sibling.next = child; |
| child.prev = sibling; |
| child.next = null; |
| } |
| }; |
| |
| exports.append = function(elem, next){ |
| var parent = elem.parent, |
| currNext = elem.next; |
| |
| next.next = currNext; |
| next.prev = elem; |
| elem.next = next; |
| next.parent = parent; |
| |
| if(currNext){ |
| currNext.prev = next; |
| if(parent){ |
| var childs = parent.children; |
| childs.splice(childs.lastIndexOf(currNext), 0, next); |
| } |
| } else if(parent){ |
| parent.children.push(next); |
| } |
| }; |
| |
| exports.prepend = function(elem, prev){ |
| var parent = elem.parent; |
| if(parent){ |
| var childs = parent.children; |
| childs.splice(childs.lastIndexOf(elem), 0, prev); |
| } |
| |
| if(elem.prev){ |
| elem.prev.next = prev; |
| } |
| |
| prev.parent = parent; |
| prev.prev = elem.prev; |
| prev.next = elem; |
| elem.prev = prev; |
| }; |
| |
| |