function selectTab(node) {

  //unselect all tabs
  if (node.parentNode.className != 'disabled') {
    var tabs = node.parentNode.parentNode.getElementsByTagName('li');
    for (var i = 0; i < tabs.length; i++) {
      if (tabs[i].className != 'disabled') tabs[i].className = '';
    }
  
    //then...select the tab
    node.parentNode.className = 'selected';
  
  
    //hide all tab-areas
    //var tab_areas = node.parentNode.parentNode.parentNode.getElementsByTagName('div');
    tab_areas = directChildrenWithClass(node.parentNode.parentNode.parentNode, 'div', 'tab-area');
    for (var i = 0; i < tab_areas.length; i++) {
      tab_areas[i].className = 'tab-area hide';
    }
  
    //then show the selected tab-area
    var tab_area_id = node.href.split('#')[1];
    document.getElementById(tab_area_id).className = 'tab-area show';
  
    return true;
  }
  return false;
}

function unselectTab(node) {
  var tabs = node.getElementsByTagName('li');
  for (var i = 0; i < tabs.length; i++) {
    if (tabs[i].className == 'selected') tabs[i].className = '';
  }
}



function directChildrenWithClass(element, tagName, className) {
	var fullList = element.getElementsByTagName(tagName);
	var returnList = new Array();
	var index = 0;	//using the Array.push() method seems to crash in IE

	for (var i=0; i<fullList.length; i++) {
		if (fullList[i].parentNode == element) {
			if (fullList[i].className == "") continue;
			
			if (fullList[i].className.indexOf(" ") > -1 && fullList[i].className.indexOf(className) > -1) {
				
				//Multi class element that *seems* to match the className
				var cls = fullList[i].className.split(" ");

				for (var ii=0; ii<cls.length; ii++) {

					if (cls[ii] == className) {
						returnList[index] = fullList[i];
						index++;
					}
				}
				
			} else {
				//single class element
				if (fullList[i].className == className) {
					returnList[index] = fullList[i];
					index++;
				}
			}
		}
	}
	
	return returnList;
}