/* Javascript to reorder DOM nodes */

// From: http://www.mozilla.org/docs/dom/technote/whitespace/
  function is_all_ws( nod )
{
  // Use ECMA-262 Edition 3 String and RegExp features
  return !(/[^\t\n\r ]/.test(nod.data));
}
function is_ignorable( nod )
{
  return ( nod.nodeType == 8) || // A comment node
    ( (nod.nodeType == 3) && is_all_ws(nod) ); // a text node, all ws
}

function findPrevNode(node) {
  while ((node = node.previousSibling)) {
    if (!is_ignorable(node)) return node;
  }
  return null;
}
    
function findNextNode(node) {
  while ((node = node.nextSibling)) {
    if (!is_ignorable(node)) return node;
  }
  return null;
}

// from: http://www.xs4all.nl/~zanstra/logs/jsLog.htm
function DOMNode_swapNode(n1,n2)
{
  n1.parentNode.insertBefore(n2.parentNode.removeChild(n2),n1);
}

function moveUp(link) {
  var thisNode = link.parentNode.parentNode;
  prevNode = findPrevNode(thisNode);
  if (prevNode) {
    // prevNode.swapNode(thisNode);
    DOMNode_swapNode(prevNode, thisNode);
  }
}

function moveDown(link) {
  var thisNode = link.parentNode.parentNode;
  nextNode = findNextNode(thisNode);
  if (nextNode) {
    // thisNode.swapNode(nextNode);
    DOMNode_swapNode(thisNode, nextNode);
  }
}

