function hasClass ( className, el )
{
  return ( 
    el.className && 
    el.className.match( new RegExp( "(^|\\s)"+className+"(\\s|$)" ) ) 
  ) ? true : false;
}

function addClass ( className, el )
{
  if ( !hasClass ( className, el ) )
  {
    if ( el.className && el.className.length > 0 )
    	className = el.className+" "+className;
  		el.className = className;
  }
}

function removeClass ( className, el )
{
  if ( hasClass ( className, el ) )
  {
    el.className = el.className.replace ( 
      new RegExp( "(^|\\s)"+className+"(\\s|$)" ), "" 
    );
  }
}

document.getElementsByTagAndClassName = function ( tagName, className, parentElement )
{
  var elements = new Array ();
  var parent = ( parentElement ) ? ( parentElement ) : document.body;
  var children = parent.getElementsByTagName( tagName );
  for ( var a = 0; a < children.length; a++ )
  {
    if ( hasClass ( className, children[a] ) )
      elements.push ( children[a] );
  }
  return elements;
}

document.getElementsByClassName = function ( className, parentElement) {
	return document.getElementsByTagAndClassName ("*", className, parentElement);
}

function activateSection (sectionID) {
	var section = document.getElementById(sectionID);
	addClass ("expandedSection", section);
}





var expandoNav = document.getElementById("expandoNav");
var headings = document.getElementsByClassName ("heading");

for (var i = 0; i < headings.length; i++) {
	headings[i].onclick = new Function ("displayListing(this)");
}

function changeSectionState (section) {
	if (hasClass("expandedSection", section)) {
		removeClass("expandedSection", section);
	} else {
		addClass("expandedSection", section);
	}
}

function displayListing(heading) {
	heading.blur();
	var section = heading.parentNode;
	changeSectionState(section);
}