var hMenuTimer   = null;
var iMenuTimeout = 50;

function cpPactMenu() {
	this.aMenus = new Array();
	
	this.addMenu = cpPactMenuAddMenu;
	this.build   = cpPactMenuBuild;
}

function cpPactMenuAddMenu(a_iPos, a_oItem) {
	a_oItem.oParent = this;
	
	var oMenu = new Object();
	oMenu.iPos   = a_iPos;
	oMenu.oMenu  = a_oItem;
	this.aMenus[this.aMenus.length] = oMenu;
}

function cpPactMenuBuild() {
	for (var m = 0; m < this.aMenus.length; m++) {
		var oMenu = document.createElement("DIV");
		oMenu.className   = "menu";
		oMenu.sMenuId     = "menu_" + m;
		oMenu.sTitle      = this.aMenus[m].oMenu.sTitle;
		oMenu.style.left  = this.aMenus[m].iPos + "px";
		oMenu.style.top   = (37 + iMenuOffset) + "px";
		oMenu.iItems      = this.aMenus[m].oMenu.aItems.length;
		oMenu.onmouseover = function() { window.status = this.sTitle; if (this.iItems) { showMenu(this.sMenuId); } return true; };
		oMenu.onmouseout  = function() { window.status = ""; delayHideMenu(this.sMenuId); return true; };
				
		var oImg = document.createElement("IMG");
		oImg.src = "/images/menu-arrow.gif";
		oImg.style.position = "absolute";
		oImg.style.left     = "0";
		oImg.style.top      = "0";
		oMenu.appendChild(oImg);
		
		var oA = document.createElement("A");
		oA.className      = "cat_menu";
		oA.href           = this.aMenus[m].oMenu.sURL;
		oA.style.position = "absolute";
		oA.style.left 		= "12px";
		oA.style.width		= "190px";
		oA.style.top  		= "-2px";
		oA.style.height   = "25px";
		//oA.style.paddingBottom = "20px";
		var oImg = document.createElement("IMG");
		oImg.src = this.aMenus[m].oMenu.sImage;		
		oA.appendChild(oImg);
		
		oMenu.appendChild(oA);
				
		document.body.appendChild(this.aMenus[m].oMenu.build(0, oMenu.sMenuId));
		
		document.body.appendChild(oMenu);
	}
}


function cpPactMenuItem(a_sTitle, a_sURL, a_sImage) {
	this.sTitle = a_sTitle;
	this.sURL   = (a_sURL == null || a_sURL == "" ? "#" : a_sURL);
	this.sImage = a_sImage;
	this.aItems = new Array();
	
	this.addItem  = cpPactMenuItemAddItem;
	this.hasItems = function() { return (this.aItems.length > 0); };
	this.build    = cpPactMenuItemBuild;
}

function cpPactMenuItemAddItem(a_oItem) {
	a_oItem.oParent = this;
	
	this.aItems[this.aItems.length] = a_oItem;
}

function cpPactMenuItemBuild(a_iLevel, a_sMenuId) {
	var oUL = document.createElement("UL");
	oUL.id               = a_sMenuId;
	oUL.className        = "menu";
	oUL.style.top        = (62 + iMenuOffset) + "px";
	oUL.style.visibility = "hidden";
	if (oBrowser.isIE && oBrowser.isMac) {
		oUL.style.width    = iMacIEWidth + "px";
	}
	oUL.iLevel           = a_iLevel;
	if (a_iLevel == 0) {
		oUL.iPos = this.oParent.aMenus[a_sMenuId.substr(5)].iPos;
	}
	oUL.hTimer       = null;
	oUL.onmouseover  = function() { clearDelayHideMenu(this.id); };
	oUL.onmouseout   = function() { delayHideMenu(this.id); };
	oUL.style.zIndex = 1000 + a_iLevel;
	
	for (var i = 0; i < this.aItems.length; i++) {
		var oLI = document.createElement("LI");
		oLI.className   = "menuitem";
		
		var sId = a_sMenuId + "_" + i;
		oLI.sMenuId = sId;
		oLI.sTitle  = this.aItems[i].sTitle;
		
		var oA = document.createElement("A");
		oA.className = "menuitem";
		oA.href      = this.aItems[i].sURL;
		oA.appendChild(document.createTextNode(this.aItems[i].sTitle));
		//oImg = document.createElement("IMG");
		//oImg.src          = "/images/spacer.gif";
		//oImg.style.width  = "20px";
		//oImg.style.height = "1px";
		//oA.appendChild(oImg);
		
		oLI.appendChild(oA);
		if (this.aItems[i].hasItems()) {
			oA.className   += " menu_arrow";

			var oSubMenu = this.aItems[i].build(a_iLevel + 1, sId);
			oSubMenu.oUL = oUL;
			oSubMenu.oLI = oLI;
			document.body.appendChild(oSubMenu);
			
			oLI.onmouseover = function() { 
				cpPactMenuItemDefaultMouseOver(this);
				showMenu(this.sMenuId);
				return true;
			};
			oLI.onmouseout  = function() { 
				delayHideMenu(this.sMenuId);
				cpPactMenuItemDefaultMouseOut(this);
				return true;
			};
		} else {
			oLI.onmouseover = function() { return cpPactMenuItemDefaultMouseOver(this); };
			oLI.onmouseout = function() {	return cpPactMenuItemDefaultMouseOut(this); };
		}
		oUL.appendChild(oLI);		
	}
	
	return oUL;
}

function cpPactMenuItemDefaultMouseOver(a_oItem) {
	window.status = a_oItem.sTitle;
	
	var oParent = null;
	var sId     = a_oItem.parentNode.id;
	while (oParent = document.getElementById(sId)) {
		clearDelayHideMenu(sId);
		sId = sId.substr(0, sId.lastIndexOf("_"));
	}
	
	return true;
}

function cpPactMenuItemDefaultMouseOut(a_oItem) {
	window.status = "";
	
	var oParent = null;
	var sId     = a_oItem.parentNode.id;
	while (oParent = document.getElementById(sId)) {
		delayHideMenu(sId);
		sId = sId.substr(0, sId.lastIndexOf("_"));
	}
	
	return true;
}


function showMenu(a_sMenuId) {
	var oMenu = document.getElementById(a_sMenuId);
	if (oMenu) {
		clearTimeout(oMenu.hTimer);
		
		if (oMenu.iLevel == 0) {
			oMenu.style.left = oMenu.iPos + "px";
			oMenu.style.top  = (62 + iMenuOffset) + "px";
		} else {
			oMenu.style.left = (oMenu.oUL.offsetLeft + oMenu.oUL.offsetWidth - 13) + "px";
			oMenu.style.top  = (
				oMenu.oUL.offsetTop + oMenu.oLI.offsetTop +
				((oBrowser.isIE && oBrowser.isMac) ? 20 : 7)
			) + "px";
		}

		oMenu.style.visibility = "visible";
	}
}

function delayHideMenu(a_sMenuId) {
	oMenu = document.getElementById(a_sMenuId);
	if (oMenu.hTimer != null) { 
		clearTimeout(oMenu.hTimer); 
		oMenu.hTimer = null;
	}
	oMenu.hTimer = setTimeout("hideMenu(\"" + a_sMenuId + "\");", iMenuTimeout);
}

function clearDelayHideMenu(a_sMenuId) {
	oMenu = document.getElementById(a_sMenuId);
	if (oMenu.hTimer != null) { 
		clearTimeout(oMenu.hTimer); 
		oMenu.hTimer = null;
	}
}

function hideMenu(a_sMenuId) {
	if (oMenu = document.getElementById(a_sMenuId)) {
		oMenu.style.visibility = "hidden";
	}
}