attachEvent(
	window,
	EventType.load,
	function()
	{
		var oProductCategoryOpener;
		if (oProductCategoryOpener = document.getElementById('product-category-opener'))
		{
			attachEvent
			(
				oProductCategoryOpener,
				EventType.click,
				function(e)
				{
					var oProductCategoriesWrapper = this;
					while ('product-categories-wrapper' != oProductCategoriesWrapper.id)
					{
						oProductCategoriesWrapper = oProductCategoriesWrapper.parentNode;
					}
					appendClassName(oProductCategoriesWrapper, 'active');
				}
			);
		}
		
		var oProductCategoryCloser;
		if (oProductCategoryCloser = document.getElementById('product-category-closer'))
		{
			attachEvent
			(
				oProductCategoryCloser,
				EventType.click,
				function(e)
				{
					var oProductCategoriesWrapper = this;
					while ('product-categories-wrapper' != oProductCategoriesWrapper.id)
					{
						oProductCategoriesWrapper = oProductCategoriesWrapper.parentNode;
					}
					removeClassName(oProductCategoriesWrapper, 'active');
				}
			);
		}
		
		//console.log('this.isWindow: ' + this.isWindow);
		//alert(this.isWindow);
		var oProductCategoryList, aProductCategoryListItems, i = 0, oProductCategoryListItem;
		if (oProductCategoryList = document.getElementById('product-categories-toc'))
		{
			if (aProductCategoryListItems = oProductCategoryList.getElementsByTagName('li'))
			{
				while (oProductCategoryListItem = aProductCategoryListItems[i++])
				{
					attachEvent
					(
						oProductCategoryListItem,
						EventType.mouseOver,
						function(e)
						{
							appendClassName(this, 'hover');
						}
					);
					
					attachEvent
					(
						oProductCategoryListItem,
						EventType.mouseOut,
						function(e)
						{
							removeClassName(this, 'hover');
						}
					);
					
					attachEvent
					(
						oProductCategoryListItem,
						EventType.click,
						function(e)
						{
							var i = 0;
							/*
							alert(
								'oProductCategoryList ' + oProductCategoryList + '\n' +
								'aProductCategoryListItems ' + aProductCategoryListItems + '\n' +
								'aProductCategoryListItems ' + oProductCategoryListItem + '\n' +
								'this: ' + this + '\n' +
								'this.isWindow: ' + this.isWindow + '\n' +
								'typeof this: ' + typeof this + '\n' +
								'this.nodeName: ' + this.nodeName + '\n' +
								'e: ' + e + '\n' +
								'getEventOrigin(e): ' + getEventOrigin(e) + '\n' +
								'getEventOrigin(e).nodeName: ' + getEventOrigin(e).nodeName
							);
							*/
							// deactivate all product category list items
							while (oProductCategoryListItem = aProductCategoryListItems[i++])
							{
								removeClassName(oProductCategoryListItem, 'active');
							}
							
							// activate clicked product category list item
							appendClassName(this, 'active');
							
							// activate popup
							var o;
							if (o = document.getElementById('product-categories-fold-out'))
							{
								appendClassName(o, 'active');
								//o.style.width = '456px';
							}
							
							// deactivate all product category description items
							(function()
							{
								var oProductCategoryInfoWrapper, aProductCategoryInfoItems, i = 0, oProductCategoryInfoItem;
								if (oProductCategoryInfoWrapper = document.getElementById('product-category-info-wrapper'))
								{
									aProductCategoryInfoItems = oProductCategoryInfoWrapper.childNodes;
									while (oProductCategoryInfoItem = aProductCategoryInfoItems[i++])
									{
										if (Node.ELEMENT_NODE == oProductCategoryInfoItem.nodeType && 'div' == oProductCategoryInfoItem.nodeName.toLowerCase())
										{
											removeClassName(oProductCategoryInfoItem, 'active');
										}
									}
								}
							})();
							
							// activate clicked product category description item
							function getProductCategoryId(el)
							{
								var i = 0, aAnchors = el.childNodes, oAnchor;
								while (oAnchor = aAnchors[i++])
								{
									if (Node.ELEMENT_NODE == oAnchor.nodeType && 'a' == oAnchor.nodeName.toLowerCase()) break;
								}
								return oAnchor.hash.slice(1);
							}
							
							appendClassName(document.getElementById(getProductCategoryId(this)), 'active');
							
							
							// activate close area
							(
								function()
								{
									var o;
									if (o = document.getElementById('product-categories-fold-out-closer'))
									{
										appendClassName(o, 'active');
									}
								}
							)();
							
							
							
							// do not use the link
							preventDefaultAction(e);
						}
					);
				}
			}
		}
		
		var oCloser;
		if (oCloser = document.getElementById('product-categories-fold-out-closer'))
		{
			attachEvent(
				oCloser,
				EventType.click,
				function(e)
				{
					// deactivate close area
					removeClassName(this, 'active');
					
					// deactivate all product category description items
					(function()
					{
						var oProductCategoryInfoWrapper, aProductCategoryInfoItems, i = 0, oProductCategoryInfoItem;
						if (oProductCategoryInfoWrapper = document.getElementById('product-category-info-wrapper'))
						{
							aProductCategoryInfoItems = oProductCategoryInfoWrapper.childNodes;
							while (oProductCategoryInfoItem = aProductCategoryInfoItems[i++])
							{
								if (Node.ELEMENT_NODE == oProductCategoryInfoItem.nodeType && 'div' == oProductCategoryInfoItem.nodeName.toLowerCase())
								{
									removeClassName(oProductCategoryInfoItem, 'active');
								}
							}
						}
					})();
					
					// deactivate popup
					(
						function()
						{
							var o;
							if (o = document.getElementById('product-categories-fold-out'))
							{
								//o.style.width = '0';
								removeClassName(o, 'active');
							}
						}
					)();
					
					// deactivate all product category list items
					(
						function()
						{
							var i = 0;
							while (oProductCategoryListItem = aProductCategoryListItems[i++])
							{
								removeClassName(oProductCategoryListItem, 'active');
							}
						}
					)();
				}
			);
		}
	}
);