function adjustAHoverBoldWith(divId) {
  var elem = document.getElementById(divId);
  //alert(elem.getAttribute('class'));
  if (elem != null) {
    var nodeList = elem.getElementsByTagName('a');
    for (var i = 0; i < nodeList.length; i++) {
      var origNode = nodeList[i];
      origNode.style.fontWeight = "bold";
      origNode.style.width = origNode.clientWidth + "px";
      origNode.style.fontWeight = "";
    }
  }
}
function matchHeight(srcId, targetId) {
  var srcElem = document.getElementById(srcId);
  var targetElem = document.getElementById(targetId);
  if (srcElem && targetElem) {
    // @todo: subtract padding top and bottom if any
    var newHeight = srcElem.clientHeight;
    targetElem.style.height = newHeight + "px";
    //alert(srcElem.id +": " + srcElem.clientHeight + "/" + srcElem.offsetHeight + "/" + newHeight);
  }
}
function fitSidebarsToContentHeight() {
}
function checkHeight(srcId, targetId) {
  var srcElem = document.getElementById(srcId);
  if (srcElem) {
    var newHeight = srcElem.clientHeight;
    alert(srcElem.id + ": " + srcElem.clientHeight + "/" + srcElem.offsetHeight);
  }
}
function removeBoldInlineStyles(divId) {
  var elem = document.getElementById(divId);
  if (elem != null) {
    var nodeList = elem.getElementsByTagName('a');
    for (var i = 0; i < nodeList.length; i++) {
      var origNode = nodeList[i];
      origNode.style.width = origNode.clientWidth + "px";
      origNode.style.fontWeight = "";
    }
  }
}
function getElementsByClassName(className, tag, elm) {
  if (document.getElementsByClassName) {
    getElementsByClassName = function (className, tag, elm) {
      elm = elm || document;
      var elements = elm.getElementsByClassName(className),
        nodeName = (tag) ? new RegExp("\\b" + tag + "\\b", "i") : null,
      returnElements = [],
      current;
      for (var i = 0, il = elements.length; i < il; i += 1) {
        current = elements[i];
        if (!nodeName || nodeName.test(current.nodeName)) {
          returnElements.push(current);
        }
      }
      return returnElements;
    };
  } else if (document.evaluate) {
    getElementsByClassName = function (className, tag, elm) {
      tag = tag || "*";
      elm = elm || document;
      var classes = className.split(" "),
        classesToCheck = "",
        xhtmlNamespace = "http://www.w3.org/1999/xhtml",
        namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace) ? xhtmlNamespace : null,
      returnElements = [],
      elements,
      node;
      for (var j = 0, jl = classes.length; j < jl; j += 1) {
        classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
      }
      try {
        elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
      }
      catch(e) {
        elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
      }
      while ((node = elements.iterateNext())) {
        returnElements.push(node);
      }
      return returnElements;
    };
  } else {
    getElementsByClassName = function (className, tag, elm) {
      tag = tag || "*";
      elm = elm || document;
      var classes = className.split(" "),
        classesToCheck = [],
        elements = (tag === "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag),
      current,
      returnElements = [],
      match;
      for (var k = 0, kl = classes.length; k < kl; k += 1) {
        classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
      }
      for (var l = 0, ll = elements.length; l < ll; l += 1) {
        current = elements[l];
        match = false;
        for (var m = 0, ml = classesToCheck.length; m < ml; m += 1) {
          match = classesToCheck[m].test(current.className);
          if (!match) {
            break;
          }
        }
        if (match) {
          returnElements.push(current);
        }
      }
      return returnElements;
    };
  }
  return getElementsByClassName(className, tag, elm);
};
function setupCollapsiblePanels() {
  var elems = getElementsByClassName('cpanel');
  for (var y = 0; y < elems.length; y++) {
    elems[y].id = "cpanel" + y;
    new Spry.Widget.CollapsiblePanel("cpanel" + y, {
      contentIsOpen: false
    });
  }
}
function colorCollapsiblePanelContents() {
  var elems = getElementsByClassName('cpanel_content');
  for (var y = 0; y < elems.length; y++) {
    elems[y].id = "cpanel_content" + y;
    var children = elems[y].childNodes;
    var rowcount = 1;
    for (var x = 0; x < children.length; x++) {
      // note that IE < 8 won't work with children[x].getAttribute("class")
      if (children[x].nodeType == '1' && children[x].getAttributeNode("class") != undefined && children[x].getAttributeNode("class").nodeValue == "cpanel_contentrow") {
        var classname = ((rowcount % 2) == 0) ? "cpanel_content_even" : "cpanel_content_odd";
        // note that IE < 8 won't work with children[x].setAttribute("class", '...')
        children[x].getAttributeNode("class").nodeValue = children[x].getAttributeNode("class").nodeValue + " " + classname;
        rowcount++;
      }
    }
  }
}
function colorCollapsiblePanelLists() {
  var elems = getElementsByClassName('collapsible_panel_list');
  for (var y = 0; y < elems.length; y++) {
    //elems[y].id = "cpanel_content"+y;
    var children = elems[y].childNodes;
    var rowcount = 1;
    for (var x = 0; x < children.length; x++) {
      if (children[x].nodeType == '1' && children[x].nodeName == 'LI') {
        var classname = ((rowcount % 2) == 0) ? "cpanel_content_even" : "cpanel_content_odd";
        var newClass = document.createAttribute("class");
        newClass.nodeValue = classname;
        children[x].setAttributeNode(newClass);
        // note that IE < 8 won't work with children[x].setAttribute("class", '...')
        //children[x].getAttributeNode("class").nodeValue = children[x].getAttributeNode("class").nodeValue + " " + classname;
        rowcount++;
      }
    }
  }
}
function colorConstdetailsTable() {
  var tables = document.getElementsByTagName("table");
  var counter = 1;
  for (var i = 0; i < tables.length; i++) {
    if (tables[i].getAttributeNode("class").nodeValue == 'constdetails-subheader') {
      counter = 1;
    } else if (tables[i].getAttributeNode("class").nodeValue == 'constdetails-entry') {
      var tr = tables[i].getElementsByTagName('tr')[0];
      var classname = ((counter % 2) == 0) ? "evenrow" : "oddrow";
      var att = document.createAttribute("class");
      att.nodeValue = classname;
      tr.setAttributeNode(att);
      counter++;
    }
  }
}