var ae_Div = [];
var s_IdInit = 'tree';
var s_ClassCensus = 'census'
var s_ClassBase = 'branch';
var s_ClassToggleAncestor = 'ancestor'
var s_ClassToggleDescendant = 'descendant'
var s_ClassExpand = '1';
var s_ClassCollapse = '0';
var s_DisplayExpand = 'block';
var s_DisplayCollapse = 'none';
var s_FunctionExpand = 'Expand';
var s_FunctionCollapse = 'Collapse';
var s_TagExpand = '[+]';
var s_TagCollapse = '[-]';

function treeInit(s_Type)
{
	if (document.getElementById && document.createElement)
	{
		ae_List = document.getElementById(s_IdInit).getElementsByTagName('ul');

		for (i = 0; i < ae_List.length; i++) 
		{ 
			if ((s_Id = ae_List[i].getAttribute('id')) && (
				(ae_List[i].className == s_ClassToggleAncestor) ||
				(ae_List[i].className == s_ClassToggleDescendant)))
			{
				treeInsert(s_Id, s_ClassCollapse, s_TagCollapse, s_FunctionCollapse);
				treeInsert(s_Id, s_ClassExpand, s_TagExpand, s_FunctionExpand);

				e_Item = ae_List[i].parentNode;
				e_Item.className = s_ClassBase;

				var e_Div;

				if (s_Type == 'ancestor')
				{
					e_Span = ae_List[i].parentNode.getElementsByTagName('span')[0];

					if (e_Span.className == 'ancestor')
					{
						ae_List[i].style.display = s_DisplayExpand;
	
						e_Div = ae_Div[s_Id + s_ClassCollapse];
					}
					else
					{
						ae_List[i].style.display = s_DisplayCollapse;
	
						e_Div = ae_Div[s_Id + s_ClassExpand];
					}
				}
				else if (s_Type == s_ClassExpand)
				{
					ae_List[i].style.display = s_DisplayExpand;

					e_Div = ae_Div[s_Id + s_ClassCollapse];
				}
				else if (s_Type == s_ClassCollapse)
				{
					ae_List[i].style.display = s_DisplayCollapse;

					e_Div = ae_Div[s_Id + s_ClassExpand];
				}

				e_Item.insertBefore(e_Div, e_Item.firstChild);
			}
		}

		treeCollapseCensus();
	}
}


function treeInsert(s_Id, s_Class, s_Tag, s_Function) 
{
	e_Anchor = document.createElement('a');
	e_Anchor.setAttribute('href', 'javascript:tree' + s_Function + '(\'' + s_Id + '\');');
	e_Anchor.appendChild(document.createTextNode(s_Tag));

	e_Div = document.createElement('div');
	e_Div.className = s_ClassBase + s_Class;
	e_Div.appendChild(e_Anchor);

	ae_Div[s_Id + s_Class] = e_Div;
}


function treeExpandAll()
{
	if (document.getElementById && document.createElement)
	{
		ae_List = document.getElementById(s_IdInit).getElementsByTagName('ul');

		for (i = 0; i < ae_List.length; i++) 
		{ 
			if (s_Id = ae_List[i].getAttribute('id'))
			{
				if (ae_List[i].style.display == s_DisplayCollapse)
				{
					s_KeyNew = s_Id + s_ClassCollapse;
					s_KeyOld = s_Id + s_ClassExpand;

					ae_List[i].parentNode.replaceChild(ae_Div[s_KeyNew], ae_Div[s_KeyOld]);
					ae_List[i].style.display = s_DisplayExpand;
				}
			}
		}
	}
}


function treeCollapseAll()
{

	if (document.getElementById && document.createElement)
	{
		ae_List = document.getElementById(s_IdInit).getElementsByTagName('ul');

		for (i = 0; i < ae_List.length; i++) 
		{ 
			if (s_Id = ae_List[i].getAttribute('id'))
			{
				if (ae_List[i].style.display == s_DisplayExpand)
				{
					s_KeyNew = s_Id + s_ClassExpand;
					s_KeyOld = s_Id + s_ClassCollapse;

					ae_List[i].parentNode.replaceChild(ae_Div[s_KeyNew], ae_Div[s_KeyOld]);
					ae_List[i].style.display = s_DisplayCollapse;
				}
			}
		}
	}

}


function treeAncestor()
{
	if (document.getElementById && document.createElement)
	{
		ae_List = document.getElementById(s_IdInit).getElementsByTagName('ul');

		for (i = 0; i < ae_List.length; i++)
		{ 
			if (s_Id = ae_List[i].getAttribute('id'))
			{
				e_Span = ae_List[i].parentNode.getElementsByTagName('span')[0];

				if (e_Span.className == 'ancestor')
				{
					if (ae_List[i].style.display == s_DisplayCollapse)
					{
						s_KeyNew = s_Id + s_ClassCollapse;
						s_KeyOld = s_Id + s_ClassExpand;

						ae_List[i].parentNode.replaceChild(ae_Div[s_KeyNew], ae_Div[s_KeyOld]);
						ae_List[i].style.display = s_DisplayExpand;
					}
				}
				else
				{
					if (ae_List[i].style.display == s_DisplayExpand)
					{
						s_KeyNew = s_Id + s_ClassExpand;
						s_KeyOld = s_Id + s_ClassCollapse;

						ae_List[i].parentNode.replaceChild(ae_Div[s_KeyNew], ae_Div[s_KeyOld]);
						ae_List[i].style.display = s_DisplayCollapse;
					}
				}
			}
		}
	}
}


function treeExpand(s_Id) 
{
	treeToggle(s_Id, s_DisplayExpand, s_Id + s_ClassCollapse, s_Id + s_ClassExpand);
}


function treeCollapse(s_Id) 
{
	treeToggle(s_Id, s_DisplayCollapse, s_Id + s_ClassExpand, s_Id + s_ClassCollapse);
}


function treeToggle(s_Id, s_Display, s_KeyNew, s_KeyOld)
{
	e_List = document.getElementById(s_Id);
	e_List.parentNode.replaceChild(ae_Div[s_KeyNew], ae_Div[s_KeyOld]);
	e_List.style.display = s_Display;

	ae_Div[s_KeyNew].firstChild.focus();
}


function treeExpandCensus()
{
	ae_List = document.getElementsByTagName('span');
	for	(i = 0; i < ae_List.length; i++) 
	{ 
		if (ae_List[i].className == s_ClassCensus)
		{
			ae_List[i].style.display = s_DisplayExpand;
		}
	}
}

function treeCollapseCensus()
{
	ae_List = document.getElementsByTagName('span');
	for	(i = 0; i < ae_List.length; i++) 
	{ 
		if (ae_List[i].className == s_ClassCensus)
		{
			ae_List[i].style.display = s_DisplayCollapse;
		}
	}
}

function openCensus(s_Census)
{
	w_Census = window.open(s_Census, "CENSUS", "width=788,height=540,menu=no,status=no,scrollbars=yes,resizable=yes");
}


