	
	var aGlobalSubMenuTargetLayers = new Array();
	
	function DropDownMenu(sParentMenuLayer, sSubMenuLayer)
	{
		//
		// Global menu settings
		//
		
		this.iMenuItemWidth = 150;
		this.iMenuItemHeight = 20;
		this.bDebugMenu = false;
		// Show titles on menu items
		this.bShowMenuItemTitles = true;
		// Menu hide time
		this.iMenuHideTime = 600;
		// Global imeout used across multiple functions 
		this.iMenuClearTimeout = null;
		// Set vertical or horizontal alignment
		this.bVerticalAlignment = true;
		this.bHorzontalAlignment = false;

	///////////////////////////////////////////////
	// SETUP PARENT MENU ITEMS
	//////////////////////////////////////////////

		// Parent menu essentials
		this.sParentMenuTargetLayer = sParentMenuLayer;
		this.sParentMenuLayerClass = 'parentMenuItem';
		
		// Parent menu active class
		this.sUseParentMenuLayerActiveClass = true;
		this.sParentMenuLayerActiveClass = 'parentMenuItemActive';

		// Parent menu items positioning
		this.iParentMenuItemMargin_top = 0;
		this.iParentMenuItemMargin_right = 2;
		this.iParentMenuItemMargin_bottom = 2;
		this.iParentMenuItemMargin_left = 0;
		
		//
		// Parent menu item formatting
		//
		
		// Active colours
		this.sParentActiveBackgroundColor = '#0a0a0a';
		this.sParentActiveColor = '#ffffff';
		// Inactive colours
		this.sParentInactiveBackgroundColor = '#000000';
		this.sParentInactiveColor = '#ffffff';
		
		// Borders
		this.bUseParentMenuItemBorders = false;

		this.sParentInactiveMenuItemBorderWidth = '1px';
		this.sParentInactiveMenuItemBorderStyle = 'solid';
		this.sParentInactiveMenuItemBorderColor = '#000000';
		
		this.sParentActiveMenuItemBorderWidth = '1px';
		this.sParentActiveMenuItemBorderStyle = 'solid';
		this.sParentActiveMenuItemBorderColor = 'blue';
		
		// Background images
		this.bUseParentBackgroundImages = false;

		this.sParentInactiveMenuItemBackgroundImage = '';
		this.sParentInactiveMenuItemBackgroundRepeat = 'repeat-x';
		this.sParentInactiveMenuItemBackgroundPosition = 'top left';
		
		this.sParentActiveMenuItemBackgroundImage = 'url(bg2.gif)';
		this.sParentActiveMenuItemBackgroundRepeat = 'repeat-x';
		this.sParentActiveMenuItemBackgroundPosition = 'top left';

		// Define if a div is nested in the parent menu item 
		// for the parent menu item label
		this.bUseParentNestedMenuItemLabel = true;
		// CSS style for the parent menu item label
		this.sParentMenuItemLabelStyle = 'margin: 2px 4px 0px 4px';

	///////////////////////////////////////////////
	// SETUP SUB MENU ITEMS
	//////////////////////////////////////////////

		// Sub menu essentials
		this.sSubMenuTargetLayer = sSubMenuLayer;
		this.sSubMenuLayerClass = 'subMenuItem';
		aGlobalSubMenuTargetLayers.push(sSubMenuLayer);

		// Sub menu size
		var iSubMenuItemWidth = 180;
		var iSubMenuItemHeight = 25;

		// Sub menu active class
		this.sUseSubMenuLayerActiveClass = true;
		this.sSubMenuLayerActiveClass = 'subMenuItemActive';

		// Sub menu items positioning
		this.iSubMenuItemVerticalSpacing = 2;
		this.iSubMenuItemHorizontalSpacing = 2;
		
		// Active colours
		this.sSubMenuItemActiveBackgroundColor = '#1b1b1b';
		this.sSubMenuItemActiveColor = '#ffffff';
		// Inactive colours
		this.sSubMenuItemInactiveBackgroundColor = '#1b1b1b';
		this.sSubMenuItemInactiveColor = '#999999';
		
		// Borders
		this.bUseSubMenuItemBorders = false;

		this.sSubMenuItemInactiveBorderWidth = '1px';
		this.sSubMenuItemInactiveBorderStyle = 'solid';
		this.sSubMenuItemInactiveBorderColor = '#000000';
		
		this.sSubMenuItemActiveBorderWidth = '1px';
		this.sSubMenuItemActiveBorderStyle = 'solid';
		this.sSubMenuItemActiveBorderColor = 'blue';
		
		// Background images

		// Define if a div is nested in the parent menu item 
		// for the parent menu item label
		this.bUseSubMenuItemNestedMenuItemLabel = true;
		// CSS style for the parent menu item label
		this.sSubMenuItemLabelStyle = 'margin:6px 2px 0px 4px';

		// GLOBAL MENU ITEMS
		this.aMenuItems = new Array();

		this.iMenuClearTimeout = null;

		this.setMenuAlignment = function(sAlignmentStyle)
		{
			if (sAlignmentStyle == 'horizontal')
			{
				this.bVerticalAlignment = false;
				this.bHorzontalAlignment = true;
			}
			else
			{
				this.bVerticalAlignment = true;
				this.bHorzontalAlignment = false;
			}
		}

	} // End DropDownMenu()

///////////////////////////////////////////////
// GENERATE MENU
//////////////////////////////////////////////

	function menuItem(oParentMenu, sID, sMenuItemLabel, sHref, sSubMenuTargetLayer)
	{
		// OBJECT VARIABLES
		this.oParentMenu = oParentMenu;
		this.id = sID;
		this.sMenuItemLabel = sMenuItemLabel;
		this.sHref = sHref;
		this.sSubMenuTargetLayer = sSubMenuTargetLayer;
		
		// Add ID to global menu items array
		this.oParentMenu.aMenuItems[this.oParentMenu.aMenuItems.length] = sID;
		
		this.aSubMenuItems = new Array();
		
		// OBJECT METHODS
		this.active = active;
		this.inactive = inactive;
	}
	
	function subMenuItem(oParentMenu, sParentMenuItemId, sSubMenuItemId, sText, sHref)
	{
		eval(sParentMenuItemId +'.aSubMenuItems').push(sSubMenuItemId);
		
		// OBJECT VARIABLES
		this.oParentMenu = oParentMenu;
		this.id = sSubMenuItemId;
		this.parentId = sParentMenuItemId;
		this.sText = sText;
		this.sHref = sHref;
		
		this.aSubMenuItems = new Array();
		
		this.active = active;
		this.inactive = inactive;
	}
	
	function drawMenu(oParentMenu)
	{
		this.oParentMenu = oParentMenu;
		
		//
		//	Write the parent menu items
		//

		sMainLinks = '';
		
		for (iCounter = 0; iCounter < this.oParentMenu.aMenuItems.length; iCounter++)
		{
			// Write the parent menu items based on alignment

			if (this.oParentMenu.bVerticalAlignment)
			{
				var iMenuItemTop = this.oParentMenu.iParentMenuItemMargin_top;
				
				// Position menu item
				if (iCounter != 0) iMenuItemTop += (iCounter * this.oParentMenu.iMenuItemHeight) + (iCounter * this.oParentMenu.iParentMenuItemMargin_bottom);
				else iMenuItemTop = this.oParentMenu.iParentMenuItemMargin_top;
				
				// Set menu item inline style
				var sStyle = '';

				sStyle += 'position:absolute;';
				sStyle += 'top:'+ iMenuItemTop +'px;';
				sStyle += 'left:'+ this.oParentMenu.iParentMenuItemMargin_left +'px;';
				sStyle += 'width:'+ this.oParentMenu.iMenuItemWidth +'px;';
				sStyle += 'height:'+ this.oParentMenu.iMenuItemHeight +'px;';
				sStyle += 'color:'+ this.oParentMenu.sParentInactiveColor +';';

				if (!this.oParentMenu.bUseParentBackgroundImages) sStyle += 'background-color:'+ this.oParentMenu.sParentInactiveBackgroundColor +';';
				else
				{
					sStyle += 'background-image:'+ this.oParentMenu.sParentInactiveMenuItemBackgroundImage +';';
				}
			}
			else
			{
				var iMenuItemLeft = this.oParentMenu.iParentMenuItemMargin_left;
				
				// Position menu item
				if (iCounter != 0) iMenuItemLeft += (iCounter * this.oParentMenu.iMenuItemWidth) + (iCounter * this.oParentMenu.iParentMenuItemMargin_right);
				else iMenuItemLeft = this.oParentMenu.iParentMenuItemMargin_left;
				
				// Set menu item inline style
				var sStyle = '';

				sStyle += 'position:absolute;';
				sStyle += 'top:'+ this.oParentMenu.iParentMenuItemMargin_top +'px;';
				sStyle += 'left:'+ iMenuItemLeft +'px;';
				sStyle += 'width:'+ this.oParentMenu.iMenuItemWidth +'px;';
				sStyle += 'height:'+ this.oParentMenu.iMenuItemHeight +'px;';
				sStyle += 'color:'+ this.oParentMenu.sParentInactiveColor +';';

				if (!this.oParentMenu.bUseParentBackgroundImages) sStyle += 'background-color:'+ this.oParentMenu.sParentInactiveBackgroundColor +';';
				else
				{
					sStyle += 'background-image:'+ this.oParentMenu.sParentInactiveMenuItemBackgroundImage +';';
				}
				
			}

			if (this.oParentMenu.bUseParentMenuItemBorders)
			{
				sStyle += 'border-width:'+ this.oParentMenu.sParentInactiveMenuItemBorderWidth +';';
				sStyle += 'border-style:'+ this.oParentMenu.sParentInactiveMenuItemBorderStyle +';';
				sStyle += 'border-color:'+ this.oParentMenu.sParentInactiveMenuItemBorderColor +';';
			}
			
			// Set menu item
			sMainLinks += '<div ';
			sMainLinks += 'class="'+ this.oParentMenu.sParentMenuLayerClass +'" ';
			sMainLinks += 'id="'+ this.oParentMenu.aMenuItems[iCounter] +'"';
			sMainLinks += ' onmouseover="'+ this.oParentMenu.aMenuItems[iCounter] +'.active()" ';
			sMainLinks += ' onmouseout="'+ this.oParentMenu.aMenuItems[iCounter]+'.inactive()" ';
			
			if (eval(this.oParentMenu.aMenuItems[iCounter] +'.sHref'))
			{
				sStyle += 'cursor:hand;cursor:pointer;';

				// Add the href to the menu item
				sMainLinks += ' onclick="window.location.href = \''+ eval(this.oParentMenu.aMenuItems[iCounter] +'.sHref') +'\'"';
				
				// Add a title to the menu item
				if (this.oParentMenu.bShowMenuItemTitles) sMainLinks += ' title="'+ eval(this.oParentMenu.aMenuItems[iCounter] +'.sMenuItemLabel') +'"';
			}
			
			// Add the menu item style
			sMainLinks += 'style="'+ sStyle +'" ';

			// Add the text to the menu item
			sMainLinks += '>\n';
			
			if (this.oParentMenu.bUseParentNestedMenuItemLabel)
			{
				sMainLinks += '\t<div style="'+ this.oParentMenu.sParentMenuItemLabelStyle +'">';
				sMainLinks += eval(this.oParentMenu.aMenuItems[iCounter] +'.sMenuItemLabel') +'';
				sMainLinks += '</div>\n';
			}
			else
			{
				sMainLinks += eval(this.oParentMenu.aMenuItems[iCounter] +'.sMenuItemLabel') +'';
			}

			sMainLinks += '</div>\n\n';
		}
		
		//if (bDebugMenu) alert(sMainLinks);
		document.getElementById(this.oParentMenu.sParentMenuTargetLayer).innerHTML = sMainLinks;
	}

	function active()
	{
		// If the hide timeout has been set, clear it
		if (this.oParentMenu.iMenuClearTimeout) clearTimeout(this.oParentMenu.iMenuClearTimeout);
		
		//
		// Deal with parent items
		//

		// Return parent layers to default styles
		for (iCounter = 0; iCounter < this.oParentMenu.aMenuItems.length; iCounter++)
		{
			if (this.id != this.oParentMenu.aMenuItems[iCounter])
			{
				var oMenuItem = document.getElementById(this.oParentMenu.aMenuItems[iCounter]);
				
				oMenuItem.style.backgroundColor = this.oParentMenu.sParentInactiveBackgroundColor;
				oMenuItem.style.color = this.oParentMenu.sParentInactiveColor;

				if (this.oParentMenubUseParentMenuItemBorders)
				{
					oMenuItem.style.borderWidth = this.oParentMenu.sParentInactiveMenuItemBorderWidth;
					oMenuItem.style.borderStyle = this.oParentMenu.sParentInactiveMenuItemBorderStyle;
					oMenuItem.style.borderColor = this.oParentMenu.sParentInactiveMenuItemBorderColor;
				}

				if (this.oParentMenu.sUseParentMenuLayerActiveClass)
				{
					oMenuItem.className = this.oParentMenu.sParentMenuLayerClass;
				}
			}
		}
		
		//
		// Get the top level menu item left position
		//

		var iCurrentMenuItemPosition_top;

		if (!this.parentId)
		{
			var oActiveParentMenuItem = document.getElementById(this.id);

			oActiveParentMenuItem.style.backgroundColor = this.oParentMenu.sParentActiveBackgroundColor;
			oActiveParentMenuItem.style.color = this.oParentMenu.sParentActiveColor;
			
			this.oParentMenu.iCurrentMenuItemPosition_top = getIntFromStyle(oActiveParentMenuItem.style.top);

			if (this.oParentMenu.bUseParentMenuItemBorders)
			{
				oActiveParentMenuItem.style.borderWidth = this.oParentMenu.sParentActiveMenuItemBorderWidth;
				oActiveParentMenuItem.style.borderStyle = this.oParentMenu.sParentActiveMenuItemBorderStyle;
				oActiveParentMenuItem.style.borderColor = this.oParentMenu.sParentActiveMenuItemBorderColor;
			}

			if (this.oParentMenu.sUseParentMenuLayerActiveClass)
			{
				oActiveParentMenuItem.className = this.oParentMenu.sParentMenuLayerActiveClass;
			}
		}

		//
		// Deal with sub menu target layer
		//

		var oSubMenuTargetLayer = document.getElementById(this.oParentMenu.sSubMenuTargetLayer);
		
		if (oSubMenuTargetLayer.style && !this.parentId)
		{
			if (this.oParentMenu.bVerticalAlignment) oSubMenuTargetLayer.style.top = getIntFromStyle(oActiveParentMenuItem.style.top) +'px';
			else oSubMenuTargetLayer.style.top = (getIntFromStyle(oActiveParentMenuItem.style.top) + this.oParentMenu.iMenuItemHeight) +'px';
		}
		
		oSubMenuTargetLayer.style.left = this.oParentMenu.iParentMenuItemMargin_left + this.oParentMenu.iMenuItemWidth + this.oParentMenu.iParentMenuItemMargin_right +'px';
		if (iCurrentMenuItemPosition_top) oSubMenuTargetLayer.style.top = iCurrentMenuItemPosition_top +'px';
		
		// Hide all sub menu target layers except parent's
		for (iCounter = 0; iCounter < aGlobalSubMenuTargetLayers.length; iCounter++)
		{
			if (this.oParentMenu.sSubMenuTargetLayer != aGlobalSubMenuTargetLayers[iCounter])
			{
				
				document.getElementById(aGlobalSubMenuTargetLayers[iCounter]).style.visibility = 'hidden';
			}
		}

		oSubMenuTargetLayer.style.visibility ='visible';
		
		// Layer that holds the sub menu items
		var oSubMenuContainer = document.getElementById(this.oParentMenu.sSubMenuTargetLayer);
		
		//
		// Clean up the sub menu items not being displayed
		//

		if (oSubMenuContainer.lastChild)
		{
			if (!this.parentId)
			{
				for (iCounter = oSubMenuContainer.childNodes.length; iCounter > 0; iCounter--)
				{
					var sThisObjectFinalSubMenuId = this.aSubMenuItems[this.aSubMenuItems.length - 1];
					var sCurrentChildNodeObjectId = oSubMenuContainer.childNodes[iCounter - 1].id;
					
					if (sThisObjectFinalSubMenuId == sCurrentChildNodeObjectId) break;

					oSubMenuContainer.removeChild(oSubMenuContainer.lastChild);
				}
			}
			else
			{
				for (iCounter = oSubMenuContainer.childNodes.length; iCounter > 0; iCounter--)
				{
					var oParentMenuItem = eval(this.parentId);
					
					var sParentObjectFinalSubMenuId = oParentMenuItem.aSubMenuItems[oParentMenuItem.aSubMenuItems.length - 1];
					var sCurrentChildNodeObjectId = oSubMenuContainer.childNodes[iCounter - 1].id;
					
					if (sParentObjectFinalSubMenuId == sCurrentChildNodeObjectId) break;
					
					oSubMenuContainer.removeChild(oSubMenuContainer.lastChild);
				}
			}
		}
		
		//
		// Create/display sub menu items
		//

		if (this.aSubMenuItems.length)
		{

			for (iCounter = 0; iCounter < this.aSubMenuItems.length; iCounter++)
			{
				// If the current submenu item already
				// exists go round again
				if (document.getElementById(this.aSubMenuItems[iCounter]))
				{
					continue;
				}

				//
				// Create sub menu elements
				//

				// Create the content of the menu item
				var sSubMenuElementLabel = eval(this.aSubMenuItems[iCounter] +'.sText');
				var sSubMenuItemText = '';

				if (this.oParentMenu.bUseSubMenuItemNestedMenuItemLabel)
				{
					sSubMenuItemText += '\t<div style="'+ this.oParentMenu.sSubMenuItemLabelStyle +'">';
					sSubMenuItemText += sSubMenuElementLabel +'';
					sSubMenuItemText += '</div>\n';
				}
				else
				{
					sSubMenuItemText = sSubMenuElementLabel;
				}
				
				// Create new sub menu element and set text
				var oSubMenuElement = document.createElement(this.aSubMenuItems[iCounter]);
				// Add sub menu content and set id
				oSubMenuElement.innerHTML = sSubMenuItemText;
				oSubMenuElement.setAttribute('id', this.aSubMenuItems[iCounter]);
				// Add sub menu element
				oSubMenuContainer.appendChild(oSubMenuElement);
				
				// Get the new sub menu element
				var oNewSubMenuElement = document.getElementById(this.aSubMenuItems[iCounter]);
				
				var iItemTop = 0;
				var iItemLeft = 0;
				
				if (!this.parentId)
				{
					iItemTop = (iCounter * this.oParentMenu.iSubMenuItemHeight) + (iCounter * this.oParentMenu.iSubMenuItemVerticalSpacing);
				}
				else
				{
					var iActiveMenuItemTop = getIntFromStyle(document.getElementById(this.id).style.top);
					var iActiveMenuItemLeft = getIntFromStyle(document.getElementById(this.id).style.left);
					iItemTop = (iActiveMenuItemTop + (iCounter * this.oParentMenu.iSubMenuItemVerticalSpacing)) + (iCounter * this.oParentMenu.iSubMenuItemHeight);
					iItemLeft = iActiveMenuItemLeft + this.oParentMenu.iSubMenuItemWidth + this.oParentMenu.iSubMenuItemHorizontalSpacing;
				}

				// Set element style
				oNewSubMenuElement.style.position = 'absolute';
				oNewSubMenuElement.style.top = iItemTop +'px';
				oNewSubMenuElement.style.left = iItemLeft +'px';
				oNewSubMenuElement.style.width = this.oParentMenu.iSubMenuItemWidth +'px';
				oNewSubMenuElement.style.height = this.oParentMenu.iSubMenuItemHeight +'px';
				oNewSubMenuElement.style.backgroundColor = this.oParentMenu.sSubMenuItemInactiveBackgroundColor;
				oNewSubMenuElement.style.color = this.oParentMenu.sSubMenuItemInactiveColor;
				oNewSubMenuElement.style.cursor = 'hand';
				oNewSubMenuElement.style.cursor = 'pointer';
				oNewSubMenuElement.className = this.oParentMenu.sSubMenuLayerClass;
				
				if (this.oParentMenu.bUseSubMenuItemBorders)
				{
					oNewSubMenuElement.style.borderWidth = this.oParentMenu.sSubMenuItemInactiveBorderWidth;
					oNewSubMenuElement.style.borderStyle = this.oParentMenu.sSubMenuItemInactiveBorderStyle;
					oNewSubMenuElement.style.borderColor = this.oParentMenu.sSubMenuItemInactiveBorderColor;
				}
				
				// Set element title
				if (this.oParentMenu.bShowMenuItemTitles) oNewSubMenuElement.title = sSubMenuElementLabel;

				// Set element events
				oNewSubMenuElement.onmouseover = new Function(''+ this.aSubMenuItems[iCounter] +'.active()');
				oNewSubMenuElement.onmouseout = new Function(''+ this.aSubMenuItems[iCounter] +'.inactive()');
				oNewSubMenuElement.onclick = new Function('window.location.href = \''+ eval(this.aSubMenuItems[iCounter] +'.sHref') +'\'');
			}
		}
		
		// Return all sub menu elements to their original styles
		for (iCounter = 0; iCounter < oSubMenuContainer.childNodes.length; iCounter++)
		{
			oSubMenuElement = document.getElementById(oSubMenuContainer.childNodes[iCounter].id);

			oSubMenuElement.style.backgroundColor = this.oParentMenu.sSubMenuItemInactiveBackgroundColor;
			oSubMenuElement.style.color = this.oParentMenu.sSubMenuItemInactiveColor;

			if (this.oParentMenu.bUseSubMenuItemBorders)
			{
				oSubMenuElement.style.borderWidth = this.oParentMenu.sSubMenuItemInactiveBorderWidth;
				oSubMenuElement.style.borderStyle = this.oParentMenu.sSubMenuItemInactiveBorderStyle;
				oSubMenuElement.style.borderColor = this.oParentMenu.sSubMenuItemInactiveBorderColor;
			}

			if (this.oParentMenu.sUseSubMenuLayerActiveClass)
			{
				oSubMenuElement.className = this.oParentMenu.sSubMenuLayerClass;
			}
		}
		
		// If this is a sub menu item set active styles
		if (this.parentId)
		{
			oSubMenuElement = document.getElementById(this.id);

			oSubMenuElement.style.backgroundColor = this.oParentMenu.sSubMenuItemActiveBackgroundColor;
			oSubMenuElement.style.color = this.oParentMenu.sSubMenuItemActiveColor;
				
			if (this.oParentMenu.bUseSubMenuItemBorders)
			{
				oSubMenuElement.style.borderWidth = this.oParentMenu.sSubMenuItemActiveBorderWidth;
				oSubMenuElement.style.borderStyle = this.oParentMenu.sSubMenuItemActiveBorderStyle;
				oSubMenuElement.style.borderColor = this.oParentMenu.sSubMenuItemActiveBorderColor;
			}

			if (this.oParentMenu.sUseSubMenuLayerActiveClass)
			{
				oSubMenuElement.className = this.oParentMenu.sSubMenuLayerActiveClass;
			}
		}

	} // end functon active()

	function getIntFromStyle(sStyle)
	{
		return parseInt(sStyle.substring(0, sStyle.indexOf('px')));
	}

	function inactive()
	{
		var oParentMenuObject = this.oParentMenu;
		this.oParentMenu.iMenuClearTimeout = window.setTimeout(function(){hide(oParentMenuObject)}, this.oParentMenu.iMenuHideTime);
	}

	function hide(oParentMenu)
	{
		// Return all parent layers to default styles
		for (iCounter = 0; iCounter < oParentMenu.aMenuItems.length; iCounter++)
		{
			var oMenuItem = document.getElementById(oParentMenu.aMenuItems[iCounter]);
			
			oMenuItem.style.backgroundColor = oParentMenu.sParentInactiveBackgroundColor;
			oMenuItem.style.color = oParentMenu.sParentInactiveColor;

			if (oParentMenu.bUseParentMenuItemBorders)
			{
				oMenuItem.style.borderWidth = oParentMenu.sParentInactiveMenuItemBorderWidth;
				oMenuItem.style.borderStyle = oParentMenu.sParentInactiveMenuItemBorderStyle;
				oMenuItem.style.borderColor = oParentMenu.sParentInactiveMenuItemBorderColor;
			}

			if (oParentMenu.sUseParentMenuLayerActiveClass)
			{
				oMenuItem.className = oParentMenu.sParentMenuLayerClass;
			}
		}
		
		// Hide the sub menu items
		document.getElementById(oParentMenu.sSubMenuTargetLayer).style.visibility = 'hidden';
	}
