hideShowHides();
applyShowHideFunc();


// Hide all items w/class 'showHide', unless they also contain the class 'showByDefault'
function hideShowHides() {
	var allSH = getElementsByClassName("showHide");
	for (i=0;i<allSH.length;i++) {
		allSH[i].style.display = "block";
		if (allSH[i].className.indexOf("showByDefault") != -1) {
			getSHLink(allSH[i]).className = getSHLink(allSH[i]).className.replace('Show','Hide');
		} else {
			allSH[i].style.display = (allSH[i].style.display == 'none')? 'block' : 'none';
		}
	}		
}

// Hide all 'showHideMenu' <UL>
var subMenus = document.getElementsByTagName("ul");
for (i = 0; i < subMenus.length; i++) {
	if (subMenus[i].parentNode.parentNode.className.indexOf("showHideMenu") != -1 && subMenus[i].className.indexOf("showByDefault") == -1) {
		subMenus[i].style.display = (subMenus[i].style.display == 'none')? 'block' : 'none';
	}
}


// Apply the 'show/hide' onclick event to all links with class containing 'clickTo...'
function applyShowHideFunc() {
	var allLinks = document.getElementsByTagName("a");
	for (i=0;i<allLinks.length;i++) {
		
		// Look for any links w/class containing 'clickTo..."
		if (allLinks[i].className.indexOf("clickTo") != -1) {
			
			// If 'show/hide' <UL>...
			if (allLinks[i].parentNode.tagName == "LI" && !allLinks[i].onclick) { // This exists so as not to interfere with existing, embedded 'onclick's in the HTML

				if (allLinks[i].parentNode.parentNode.className == "showHideParent") {
					allLinks[i].onclick = function() {toggleShowHide(this,this.parentNode); return false};
				} else if (allLinks[i].parentNode.parentNode.className == "showHideMenu") {
					allLinks[i].onclick = function() {toggleTags(this,this.parentNode); return false};
				}
				
			// If 'show/hide' <DIV>...
			} else if (allLinks[i].parentNode.parentNode.tagName == "DIV" && !allLinks[i].onclick) { // This exists so as not to interfere with existing, embedded 'onclick's in the HTML
				allLinks[i].onclick = function() {toggleShowHide(this,this.parentNode.parentNode); return false};
			}	
		}
	}
}

// Toggles 'show/hide' functionality
function toggleShowHide(SHLink, SHParent) {
	
	// Swap class name of 'clickToShow...' with 'clickToHide...' and vice-versa
	SHLink.className = (SHLink.className.indexOf("Show") != -1)? SHLink.className.replace('Show','Hide') : SHLink.className.replace('Hide','Show');
	
	// Swap 'display: block' for 'display: none' and vice-versa
	for (i=0;i<SHParent.childNodes.length;i++) {
		if (SHParent.childNodes[i].className && SHParent.childNodes[i].className.indexOf("showHide") != -1) {
			SHParent.childNodes[i].style.display = (SHParent.childNodes[i].style.display == 'none')? 'block' : 'none';
		}
	}
}



// -------------------------------------------------------------------------------
//
//                    ---  LEGACY SHOW/HIDE JAVASCRIPT  ---
//
// -------------------------------------------------------------------------------


// Show-Hide unordered list
// -------------------------------------------------------------------------------
// Add this to the parent link: onclick="toggleTags(this,this.parentNode); return false;"
// Add this to the child to be shown/hidden:  style="display: block;"
function toggleTags(showHideLink, parentObj) {
	if (showHideLink.className == "clickToShow" || "clickToHide") {
		showHideLink.className = (showHideLink.className == 'clickToHide')? 'clickToShow' : 'clickToHide';
	}
	var allTags = parentObj.getElementsByTagName("ul");
	for (i = 0; i < allTags.length; i++) {
		allTags[i].style.display = (allTags[i].style.display == 'none')? 'block' : 'none';
	}
}


// Show-Hide DIV (allows block-level elements, etc. to he show/hidden)
// -------------------------------------------------------------------------------
// Add this to the parent link: onclick="toggleDiv(this,this.parentNode); return false;"
// Add this to the child to be shown/hidden:  style="display: block;"
function toggleDiv(showHideLink, divWrapper) {
	if (showHideLink.className == "clickToShowDiv" || "clickToHideDiv") {
		showHideLink.className = (showHideLink.className == 'clickToHideDiv')? 'clickToShowDiv' : 'clickToHideDiv';
	}
	var getDivs = divWrapper.getElementsByTagName("div");
	for (i = 0; i < getDivs.length; i++) {
		if (getDivs[i].className.indexOf("showHideDiv") != -1) {
			getDivs[i].style.display = (getDivs[i].style.display == 'none')? 'block' : 'none';
		}
	}
}



// Show-only DIV (Just shows once, no ability to hide)
// -------------------------------------------------------------------------------
// Add this to the parent link: onclick="showOnlyDiv(this,this.parentNode); return false;"
// Add this to the child to be shown/hidden:  style="display: block;"
function showOnlyDiv(showHideLink, divWrapper) {
	if (showHideLink.className == "clickToShowDiv" || "clickToHideDiv") {
		showHideLink.className = (showHideLink.className == 'clickToHideDiv')? 'clickToShowDiv' : 'clickToHideDiv';
	}
	var getDivs = divWrapper.getElementsByTagName("div");
	for (i = 0; i < getDivs.length; i++) {
		getDivs[i].style.display = (getDivs[i].style.display == 'none')? 'block' : 'none';
	}
	showHideLink.style.display = "none";
}


	
// Hide all show/hide DIVs, done so submenus will display when JavaScript is disabled
// and open all with "showByDefault" class	
var getLinks = document.getElementsByTagName("a");
for (i = 0; i < getLinks.length; i++) {
	if (getLinks[i].className.indexOf("showByDefault") != -1) {
		getLinks[i].className = "clickToHideDiv";
	}
}
var getDivs = document.getElementsByTagName("div");
for (i = 0; i < getDivs.length; i++) {
	if (getDivs[i].className.indexOf("showHideDiv") != -1 && getDivs[i].className.indexOf("showByDefault") != -1) {
		getDivs[i].style.display = 'block';			
	} else if (getDivs[i].className.indexOf("showHideDiv") != -1) {
		getDivs[i].style.display = (getDivs[i].style.display == 'none')? 'block' : 'none';
	}
}
