function applyFunc(func, node) {
   if ("touched" in node && node.touched) {
    alert("You clicked a second time!  Did it not work the first time?");
    return;
  }
  func(node);
  node.touched = true;
}

function setColorViaSetAttr(node) {
  node.setAttribute("style", "color: green");
}

function setColorViaCSS2Properties(node) {
  node.style.color = "green";
}

function setReverseColorViaCSS2Properties(node) {
  node.style.color = "red";
}

function removeColorViaCSS2Properties(node) {
  node.style.color = "";
}

function setColorViaCSSDeclaration(node) {
  node.style.setProperty("color", "green", "");
}

function removeColorViaCSSDeclaration(node) {
  node.style.removeProperty("color");
} 

function setColorViaCSSDeclarationWipe(node) {
  node.style.cssText = "color: green";
}

function setPositionViaSetAttr(node) {
  node.setAttribute("style", "margin-left: 50px");
}

function setPositionViaCSS2Properties(node) {
  node.style.marginLeft = "50px";
}

function removePositionViaCSS2Properties(node) {
  node.style.marginLeft = "";
}

function setPositionViaCSSDeclaration(node) {
  node.style.setProperty("margin-left", "50px", "");
}

function removePositionViaCSSDeclaration(node) {
  node.style.removeProperty("margin-left");
}

function setPositionViaCSSDeclarationWipe(node) {
  node.style.cssText = "margin-left: 50px";
}

function setPositionAndColorViaSetAttr(node) {
  node.setAttribute("style", "margin-left: 50px; color: green");
}

function setPositionAndColorViaCSSDeclarationWipe(node) {
  node.style.cssText = "margin-left: 50px; color: green";
}

function setDisplayViaSetAttr(node) {
  node.setAttribute("style", "display: none");
}

function setDisplayViaCSS2Properties(node) {
  node.style.display = "none";
}

function removeDisplayViaCSS2Properties(node) {
  node.style.display = "";
}

function setDisplayViaCSSDeclaration(node) {
  node.style.setProperty("display", "none", "");
}

function removeDisplayViaCSSDeclaration(node) {
  node.style.removeProperty("display");
}

function setDisplayViaCSSDeclarationWipe(node) {
  node.style.cssText = "display: none";
}

function removeStyleAttr(node) {
  node.removeAttribute("style");
}

function wipeStyleAttr(node) {
  node.style.cssText = "";
}

function makeColorImportantViaCSSDeclaration(node) {
  node.style.setProperty("color", node.style.color, "important");
}

function setPositionAndMakeColorImportantViaCSSDeclWipe(node) {
  node.style.cssText = "margin-left: 50px; color:green !important";
}

function setColorAndMakePositionImportantViaCSSDeclWipe(node) {
  node.style.cssText = "margin-left: 50px !important; color:green";
}
