var mainNavId = 'main-nav';
var mainBreadcrumbId = 'breadcrumb';

function hideSubNavs()
{
  // determine the current page
  var currentPage = document.location.href.replace(/^https?:\/\/.+?\//, '');
  currentPage = currentPage.replace(/^new\//, ''); // delete common test subdir's from url
  
  // find the main nav ul element (the first UL child node in the mainNavId element)
  var navEl = document.getElementById(mainNavId);
  if (!navEl)
    return;
  var navUlEl = false;
  for (var i = 0; i < navEl.childNodes.length; i++) {
    if (navEl.childNodes[i].tagName == 'UL') {
      navUlEl = navEl.childNodes[i];
      break;
    }
  }
  if (!navUlEl)
    return;
    
  // utility function to check if at LI node has a child wtih a link to a page. also returns the subnav if the element has a UL child node
  function nodeHasDecendantWithLinkToPage(node, page) {
    var hasLinkToPage = false;
    
    for (var i = 0; i < node.childNodes.length; i++) {
      var child = node.childNodes[i];
      
      if (!hasLinkToPage && child.tagName == 'A' && child.getAttribute('href').replace(/^https?:\/\/.+?\//, '') == page) {
        hasLinkToPage = true;
      }
      
      if (!hasLinkToPage && child.childNodes.length > 0)
        hasLinkToPage = nodeHasDecendantWithLinkToPage(child, page);
    }
    
    return hasLinkToPage;
  }
  
  // walk nav items
  var haveAlreadyLeftASubnavVisible = false;;
  for (var navItemIndex = 0; navItemIndex < navUlEl.childNodes.length; navItemIndex++) {
    var navItem = navUlEl.childNodes[navItemIndex];
    if (navItem.tagName != 'LI')
      continue;
    
    // find the subnav element
    var subnavEl = false;
    var subnavMainLink = false;
    for (var navItemChildIndex = 0; navItemChildIndex < navItem.childNodes.length; navItemChildIndex++) {
      if (navItem.childNodes[navItemChildIndex].tagName == 'UL') {
        subnavEl = navItem.childNodes[navItemChildIndex];
      }
      if (navItem.childNodes[navItemChildIndex].tagName == 'A') {
        subnavMainLink = navItem.childNodes[navItemChildIndex].href.replace(/^https?:\/\/.+?\//, '');
      }
    }
    if (!subnavEl)
      continue;
    
    // if the breadcrumbs have a link to the main link, show subnav
    if (!haveAlreadyLeftASubnavVisible && document.getElementById(mainBreadcrumbId) && subnavMainLink && nodeHasDecendantWithLinkToPage(document.getElementById(mainBreadcrumbId), subnavMainLink)) {
      haveAlreadyLeftASubnavVisible = true;
      continue;
    }
    
    // if the nav item or it's subnav has a link to the current page, don't hide it's subnav. we only show the first subnav which has a nav item
    if (!haveAlreadyLeftASubnavVisible && nodeHasDecendantWithLinkToPage(navItem, currentPage)) {
      haveAlreadyLeftASubnavVisible = true;
      continue;
    }
    
    // hide subnav
    subnavEl.style.display = 'none';
  }
}

hideSubNavs();
