function showDiv(divId) {
  var div = document.getElementById(divId);
  if (div) {
    div.style.visibility = 'visible';
  }
}

function hideDiv(divId) {
  var div = document.getElementById(divId);
  if (div) {
    div.style.visibility = 'hidden';
  }
}

function insertDiv(divId) {
  var div = document.getElementById(divId);
  if (div) {
    div.style.display = 'block';
  }
}

function removeDiv(divId) {
  var div = document.getElementById(divId);
  if (div) {
    div.style.display = 'none';
  }
}

function setSize(div1Id, div2Id) {

  var div1 = document.getElementById(div1Id);
  var div2 = document.getElementById(div2Id);

  if (div1 && div2) {
    div1.style.height = div2.offsetHeight + "px";
    div1.style.width = div2.offsetWidth + "px";
  }
}

function removeChildren(nodeId, excludeIds) {
  var node = document.getElementById(nodeId);
  
  if (node) {
    var preservedNodes = new Array();
    while (node.childNodes.length > 0) {
      if (excludeIds && excludeIds.length) {
        var childNode = node.childNodes[node.childNodes.length - 1];
        var exclude = false;
        for (var i = 0; !exclude && i < excludeIds.length; i++) {
          if (childNode.id == excludeIds[i]) {
            exclude = true;
          }
        }
        if (!exclude) {
          node.removeChild(node.lastChild);
        }
        else {
          preservedNodes.unshift(node.removeChild(node.lastChild));
        }
      }
      else {
        node.removeChild(node.lastChild);
      }
    }
    
    // put the preserved child nodes back into the node in the order in which they were removed
    while (preservedNodes.length > 0) {
      node.appendChild(preservedNodes.shift());
    }
  }
}
