

// ----------------------------------------------------------------------------
// HasClassName
//
// Description : returns boolean indicating whether the object has the class name
//    built with the understanding that there may be multiple classes
//
// Arguments:
//    objElement              - element to manipulate
//    strClass                - class name to add
//
function HasClassName(objElement, strClass)
     {
  
     // if there is a class
     if ( objElement.className )
        {
  
        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');
  
        // get uppercase class for comparison purposes
        var strClassUpper = strClass.toUpperCase();
  
        // find all instances and remove them
        for ( var i = 0; i < arrList.length; i++ )
           {
  
           // if class found
           if ( arrList[i].toUpperCase() == strClassUpper )
              {
  
              // we found it
              return true;
  
              }
  
           }
  
        }
  
     // if we got here then the class name is not there
     return false;
  
     }
  // 
  // HasClassName
  // ----------------------------------------------------------------------------
  
  
  // ----------------------------------------------------------------------------
  // AddClassName
  //
  // Description : adds a class to the class attribute of a DOM element
  //    built with the understanding that there may be multiple classes
  //
  // Arguments:
  //    objElement              - element to manipulate
  //    strClass                - class name to add
  //
  function AddClassName(objElement, strClass, blnMayAlreadyExist)
     {
  
     // if there is a class
     if ( objElement.className )
        {
  
        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');
  
        // if the new class name may already exist in list
        if ( blnMayAlreadyExist )
           {
  
           // get uppercase class for comparison purposes
           var strClassUpper = strClass.toUpperCase();
  
           // find all instances and remove them
           for ( var i = 0; i < arrList.length; i++ )
              {
  
              // if class found
              if ( arrList[i].toUpperCase() == strClassUpper )
                 {
  
                 // remove array item
                 arrList.splice(i, 1);
  
                 // decrement loop counter as we have adjusted the array's contents
                 i--;
  
                 }
  
              }
  
           }
  
        // add the new class to end of list
        arrList[arrList.length] = strClass;
  
        // add the new class to beginning of list
        //arrList.splice(0, 0, strClass);
        
        // assign modified class name attribute
        objElement.className = arrList.join(' ');
  
        }
     // if there was no class
     else
        {
  
        // assign modified class name attribute      
        objElement.className = strClass;
     
        }
  
     }
  // 
  // AddClassName
  // ----------------------------------------------------------------------------
  
  
  // ----------------------------------------------------------------------------
  // RemoveClassName
  //
  // Description : removes a class from the class attribute of a DOM element
  //    built with the understanding that there may be multiple classes
  //
  // Arguments:
  //    objElement              - element to manipulate
  //    strClass                - class name to remove
  //
  function RemoveClassName(objElement, strClass)
     {
  
     // if there is a class
     if ( objElement.className )
        {
  
        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');
  
        // get uppercase class for comparison purposes
        var strClassUpper = strClass.toUpperCase();
  
        // find all instances and remove them
        for ( var i = 0; i < arrList.length; i++ )
           {
  
           // if class found
           if ( arrList[i].toUpperCase() == strClassUpper )
              {
  
              // remove array item
              arrList.splice(i, 1);
  
              // decrement loop counter as we have adjusted the array's contents
              i--;
  
              }
  
           }
  
        // assign modified class name attribute
        objElement.className = arrList.join(' ');
  
        }
     // if there was no class
     // there is nothing to remove
  
     }
  // 
  // RemoveClassName
  // ----------------------------------------------------------------------------
 
 function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function showSection(id, link, links) {
  
  for (var i=0; i<links.length; i++ ) {
  	RemoveClassName(links[i].parentNode, 'active');
  }
  AddClassName(link.parentNode, 'active');
  
  var divs = document.getElementsByTagName("div");
  for (var i=0; i<divs.length; i++ ) {
    if (divs[i].className.indexOf("section") == -1) continue;
    if (divs[i].getAttribute("id") != id) {
      divs[i].style.display = "none";
    } else {
      divs[i].style.display = "block";
    }
  }
}

function prepareInternalnav() {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("internalnav")) return false;
  var nav = document.getElementById("internalnav");
  var links = nav.getElementsByTagName("a");
  for (var i=0; i<links.length; i++ ) {
    var sectionId = links[i].getAttribute("href").split("#")[1];
    if (!document.getElementById(sectionId)) continue;
	if (i > 0 ) { 
	document.getElementById(sectionId).style.display = "none"; 
	}
    links[i].destination = sectionId;
    links[i].onclick = function() {
      showSection(this.destination, this, links);
      return false;
    }
  }
}

addLoadEvent(prepareInternalnav);