	//  NOTES (See Ryan for more information)
	// (1) Call LoadGlobalChildArray(aobjParent, aobjChild, ablnAll, aintArrayIndex) at the bottom of your html page
	// (2) When the parameter ablnAll in LoadGlobalChildArray is set to true the first space option 
	//     (should have a value of 0000) is displayed and its value is changed to ALL
	// (3) Call RebuildChildDropDown from child dropdowns onchange event
	
var arrChildren = new Array();  
var arrChildrenCountForParent = new Array();
 
function RebuildChildDropDown(aobjParent, aobjChild, aintArrayIndex) 
{
	var intCounter = 0;
	var intParentSelected = aobjParent.selectedIndex;
	var arrChild;

	arrChild = arrChildren[aintArrayIndex];
   
	if (aobjParent.type == "hidden") {}
	else 
	{
  		aobjChild.length = 0;
			
		for (intCounter = 0; intCounter < arrChild[intParentSelected].length; intCounter++) 
		{
			aobjChild.options[intCounter] = new Option(arrChild[intParentSelected][intCounter][1], arrChild[intParentSelected][intCounter][0], 0);
		}

	}

		if ((aobjParent.selectedIndex == 0) && (aobjChild.options.length > 0))
		{
			if (aobjChild.options[0].value == '@ALL')
			{
				aobjChild.options[0].selected = true;
			}
		}
}
	
	

function LoadGlobalChildArray(aobjParent, aobjChild, ablnAll, aintArrayIndex) 
{
	var intParentLength;
	var intChildLength;
	var intParentCounter = 0;
	var intCurrentParentCount = 0;
	var blnIncrementParent;
	var blnAddChild;
	var strOptionValue;
	var arrChild = new Array();
	var intChildCountForParent = 0;
	var arrSelected = new Array();
	var intSelectedCounter = 0;
	
		   
	if (aobjParent)
	{
		intParentLength = aobjParent.length;
	}
	 
	if (aobjChild)
	{
		intChildLength = aobjChild.length;
	}
		
	for (intParentCounter = 0; intParentCounter < intParentLength; intParentCounter++) 
	{
		arrChild[intParentCounter] = new Array();

		//LOOP THROUGH/BUILD CHILD ARRAY -----------------------------------------
		
		intCurrentParentCount = -1;
		intChildCountForParent = 0;
		
		for (intChildCounter = 0; intChildCounter < intChildLength; intChildCounter++)
		{
			blnIncrementParent = false;
			blnAddChild = false;
		
			if ((aobjChild.options[intChildCounter].value == "0000") && (ablnAll == true) && (intParentCounter == 0) && (intChildCounter == 0))
			{ 
				blnAddChild = true;
				strOptionValue = "@ALL";													blnIncrementParent = true;
			} 
			else if (aobjChild.options[intChildCounter].value == "0000")									{
				blnIncrementParent = true; 
			} 
			else if (intParentCounter == intCurrentParentCount)										{	
				blnAddChild = true;
				strOptionValue = aobjChild.options[intChildCounter].value;
			}						
																			
			if (blnIncrementParent == true)													{
				intCurrentParentCount++;													intChildCountForParent = 0;
			}				
											
			
			if (blnAddChild == true)
			{	
				arrChild[intParentCounter][intChildCountForParent] = new Array(strOptionValue, aobjChild.options[intChildCounter].text, false);
				intChildCountForParent++;
			}

		}
		
		//-----------------------------------------------------------------------
							
	}

	arrChildren[aintArrayIndex] = arrChild
	arrChildrenCountForParent[aintArrayIndex] = intChildCountForParent


	for (intChildCounter = 0; intChildCounter < intChildLength; intChildCounter++)
	{
		if (aobjChild.options[intChildCounter].selected == true)
		{
			arrSelected[intSelectedCounter] = aobjChild.options[intChildCounter].value;
			intSelectedCounter++;
		}

	}

	
	RebuildChildDropDown(aobjParent, aobjChild, aintArrayIndex);


	//Reselect----------------------------------------------------------------


	if ((intSelectedCounter > 0) && (aobjParent.selectedIndex == 0) && (aobjChild.options.length > 0))
	{
		if (aobjChild.options[0].value == '@ALL')
		{
			aobjChild.options[0].selected = false;
		}
	}

	
	for (intSelectedCounter = 0; intSelectedCounter < arrSelected.length; intSelectedCounter++)
	{
		for (intChildCounter = 0; intChildCounter < aobjChild.length; intChildCounter++)
		{
			if (aobjChild.options[intChildCounter].value == arrSelected[intSelectedCounter])
			{
				aobjChild.options[intChildCounter].selected = true;
			}

		}

	}

	//-----------------------------------------------------------------------
				
				
}
	