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 = spanElement.className.replace("sectionexpand", "sectioncollapse");
  } else {
    targetElement.style.display = "none";
    spanElement.title = "Expand section";
    spanElement.className = spanElement.className.replace("sectioncollapse", "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.indexOf( "sectioncollapse" ) > -1 )
		{
			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.indexOf( "sectionexpand" ) > -1 )
		{
			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()
{
	var hasNew = false;
	var hasSection = document.getElementById( "docsectionheader1" ) || document.getElementById( "docsectionheader2" ) || document.getElementById( "docsectionheader3" );

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

	if( hasSection || hasNew )
	{
		var ie6 = (/MSIE (5|6)/.test(navigator.userAgent));
	
		// 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";
		
		if( hasSection )
		{
			document.getElementById( "expand-all" ).style.display = "inline";
			document.getElementById( "collapse-all" ).style.display = "inline";
			document.getElementById( "expand-collapse-all" ).style.display = "block";

			if( ie6 )
				document.getElementById( "expand-collapse-all" ).style.setExpression( "left", "2 - parentNode.offsetLeft" );

			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";
					
					if( ie6 )
					{
						if( item.className.indexOf( "toclink" ) > -1 )
							item.style.setExpression( "left", "11 - parentNode.offsetLeft" );
						else
							item.style.setExpression( "left", "25 - parentNode.offsetLeft" );
					}
				}
			}
		}

		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";
		}
	}
}

function getCategoryRowLevel(row)
{
	var i = row.className.indexOf(" level");
	return parseInt( row.className.substr( i + 6 ) ); 
}

function hideShowForumCategory(id)
{
	var row = document.getElementById( id );
	var myLevel = getCategoryRowLevel( row );
	var a = document.getElementById( id + "CatLink" );
	var collapsed = ( a.className != "jive-collapsecategory" );
	while( row = row.nextSibling )
	{
		if( row.tagName == "TR" )
		{
			if( row.className.indexOf( "categoryrow" ) > -1 )
			{
				if( getCategoryRowLevel( row ) <= myLevel )
				{
					break;
				}
				else
				{
					if( collapsed )
					{
						document.getElementById( row.id + "CatLink" ).className = "jive-collapsecategory";
						document.getElementById( row.id + "ForumLink" ).className = "jive-collapseforums";
					}
					else
					{
						document.getElementById( row.id + "CatLink" ).className = "jive-expandcategory";
						document.getElementById( row.id + "ForumLink" ).className = "jive-expandforums";
					}
				}
			}

			if( collapsed )
			{
				//if( row.oldDisplay )
				//	row.style.display = row.oldDisplay;
				//else
					row.style.display = "";
			}
			else
			{
				row.oldDisplay = row.style.display;
				row.style.display = "none";
			}
		}
	}

	if( !collapsed )
	{
		a.className = "jive-expandcategory";
		if( document.getElementById( id + "ForumLink" ) )
			document.getElementById( id + "ForumLink" ).className = "jive-expandforums";		
	}
	else
	{
		a.className = "jive-collapsecategory";
		if( document.getElementById( id + "ForumLink" ) )
			document.getElementById( id + "ForumLink" ).className = "jive-collapseforums";		
	}
}

function hideShowForumCategoryForums(id)
{
	var row = document.getElementById( id );
	var myLevel = getCategoryRowLevel( row );
	var a = document.getElementById( id + "ForumLink" );
	var collapsed = ( a.className != "jive-collapseforums" );
	var hasChildCategories = false;
	var curLevel = myLevel;
	while( row = row.nextSibling )
	{
		if( row.tagName == "TR" )
		{
			var isCatRow = ( row.className.indexOf( "categoryrow" ) > -1 );
			if( isCatRow )
			{
				curLevel = getCategoryRowLevel( row );
				
				if( curLevel > myLevel )
					hasChildCategories = true;
					
				if( curLevel <= myLevel )
					break;
				else if ( curLevel > ( myLevel + 1 ) )
					continue;
					
				if( !collapsed )
				{
					document.getElementById( row.id + "CatLink" ).className = "jive-expandcategory";
					document.getElementById( row.id + "ForumLink" ).className = "jive-expandforums";
				}
			}
			
			if( collapsed && ( isCatRow || curLevel == myLevel ) )
			{
				//if( row.oldDisplay )
				//	row.style.display = row.oldDisplay;
				//else
					row.style.display = "";
			}
			else
			{
				row.oldDisplay = row.style.display;
				row.style.display = "none";
			}
		}
	}
	
	if( !collapsed )
	{
		a.className = "jive-expandforums";
		document.getElementById( id + "CatLink" ).className = "jive-expandcategory";		
	}
	else
	{
		a.className = "jive-collapseforums";
		if( !hasChildCategories )
			document.getElementById( id + "CatLink" ).className = "jive-collapsecategory";
	}
}
