function hideShowImage(spanID, imgID) {
  spanElement = document.getElementById(spanID);
  imgElement = document.getElementById(imgID);
  if (imgElement.style.display == "none") {
    imgElement.style.display = "";
    spanElement.innerHTML = "Hide image";
    spanElement.className = "imagehide";
  } else {
    imgElement.style.display = "none";
    spanElement.innerHTML = "Show image";
    spanElement.className = "imageshow";
  }
}

function hideShowElement(spanID, elementID) {
  spanElement = document.getElementById(spanID);
  targetElement = document.getElementById(elementID);
  if (targetElement.style.display == "none") {
    targetElement.style.display = "";
    spanElement.title = "Collapse section";
    spanElement.className = "sectioncollapse";
  } else {
    targetElement.style.display = "none";
    spanElement.title = "Expand section";
    spanElement.className = "sectionexpand";
  }
}

function collapseAll()
{
	var pc = document.getElementById("primary-channel");
	var items = pc.getElementsByTagName("span");
	for( var i = 0; i < items.length; ++i )
	{
		if( items[i].className == "sectioncollapse" )
		{
			var ah = items[i].getElementsByTagName("A")[0].href;
			if( ah.substr(0, 11) == "javascript:" )
			{
				ah = ah.substr(11);
				eval(unescape(ah));
			}
		}
	}
}

function expandAll()
{
	var pc = document.getElementById("primary-channel");
	var items = pc.getElementsByTagName("span");
	for( var i = 0; i < items.length; ++i )
	{
		if( items[i].className == "sectionexpand" )
		{
			var ah = items[i].getElementsByTagName("A")[0].href;
			if( ah.substr(0, 11) == "javascript:" )
			{
				ah = ah.substr(11);
				eval(unescape(ah));
			}
		}
	}
}

function getChildElementsByTagName( obj, tag )
{
	// Can't use getElementsByTagName as it searches the entire child tree.
	var result = new Array();
	var fn = obj.firstChild;
	while( fn )
	{
		if( fn.nodeType == 1 )
		{
			if( fn.tagName.toUpperCase() == tag.toUpperCase() )
				result.push(fn);
		}
		fn = fn.nextSibling;
	}
	return result;
}

function collapseAllFeatures( featuresDiv )
{
	var table = getChildElementsByTagName( document.getElementById( featuresDiv ), "table" )[ 1 ];
	var tbody = table.getElementsByTagName( "tbody" )[ 0 ];
	var rows = getChildElementsByTagName( tbody, "tr" );
	for( var i = 0; i < rows.length; ++i )
	{
		var td = rows[ i ].getElementsByTagName( "td" )[ 0 ];
		var span = td.getElementsByTagName( "h2" )[ 0 ];
		span = span.getElementsByTagName( "span" )[ 0 ];
		span = span.getElementsByTagName( "span" )[ 0 ];
		if( span.className == "sectioncollapse" )
		{
			var ah = span.getElementsByTagName("A")[0].href;
			if( ah.substr(0, 11) == "javascript:" )
			{
				ah = ah.substr(11);
				eval(unescape(ah));
			}
		}
		var list = getChildElementsByTagName( td.getElementsByTagName( "div" )[ 0 ].getElementsByTagName( "ul" )[ 0 ], "li" );
		for( var j = 0; j < list.length; ++j )
		{
			var span = list[ j ].getElementsByTagName( "span" )[ 0 ];
			if( span.className == "sectioncollapse" )
			{
				var ah = span.getElementsByTagName("A")[0].href;
				if( ah.substr(0, 11) == "javascript:" )
				{
					ah = ah.substr(11);
					eval(unescape(ah));
				}
			}
		}
	}
}

function expandAllFeatures( featuresDiv )
{
	var table = getChildElementsByTagName( document.getElementById( featuresDiv ), "table" )[ 1 ];
	var tbody = table.getElementsByTagName( "tbody" )[ 0 ];
	var rows = getChildElementsByTagName( tbody, "tr" );
	for( var i = 0; i < rows.length; ++i )
	{
		var td = rows[ i ].getElementsByTagName( "td" )[ 0 ];
		var span = td.getElementsByTagName( "h2" )[ 0 ].getElementsByTagName( "span" )[ 0 ].getElementsByTagName( "span" )[ 0 ];
		if( span.className == "sectionexpand" )
		{
			var ah = span.getElementsByTagName("A")[0].href;
			if( ah.substr(0, 11) == "javascript:" )
			{
				ah = ah.substr(11);
				eval(unescape(ah));
			}
		}
		var list = getChildElementsByTagName( td.getElementsByTagName( "div" )[ 0 ].getElementsByTagName( "ul" )[ 0 ], "li" );
		for( var j = 0; j < list.length; ++j )
		{
			var span = list[ j ].getElementsByTagName( "span" )[ 0 ];
			if( span.className == "sectionexpand" )
			{
				var ah = span.getElementsByTagName("A")[0].href;
				if( ah.substr(0, 11) == "javascript:" )
				{
					ah = ah.substr(11);
					eval(unescape(ah));
				}
			}
		}
	}
}

function showExpandCollapseAll()
{
	if( document.getElementById( "docsectionheader1" ) || document.getElementById( "docsectionheader2" ) || document.getElementById( "docsectionheader3" ) )
	{
		// If the document contains a section, show the expand/collapse all.
		document.getElementById( "primary-channel" ).style.padding = "0 20px 0 42px";
		document.getElementById( "primary-channel" ).style.position = "relative";
		document.getElementById( "expand-all" ).style.display = "inline";
		document.getElementById( "collapse-all" ).style.display = "inline";
		document.getElementById( "expand-collapse-all" ).style.display = "block";

		var i, item, items = document.getElementById( "primary-channel" ).getElementsByTagName( "span" );
		for( i = 0; i < items.length; ++i )
		{
			item = items[ i ];
			if( item.className == "toclink" ||
			    ( ( item.className == "sectioncollapse" || item.className == "sectionexpand" ) && item.id.substr( 0, 16 ) == "docsectionheader" ) )
			{
				item.className += " sectiongutter";
			}
		}

		items = document.getElementById( "primary-channel" ).getElementsByTagName( "p" );
		for( i = 0; i < items.length; ++i )
		{
			item = items[ i ];
			if( item.className == "new" || item.className == "enhanced" )
				item.style.left = "-40px";
		}
	}
}