var menu = new Array();

function initMenu(menuName) {
	
	menu[menuName] = new Array();
	
	// timeout in ms
	menu[menuName]['timeOut'] = 500;
	
	// timeout identifier
	menu[menuName]['timeOutId'] = 0;
	
	// visible menu id
	menu[menuName]['visibleMenuId'] = 0;
	
	menu[menuName]['isMouseOver'] = false;
	
	// menu array
	menu[menuName]['items'] = new Array();
	
	initItems(document.getElementById(menuName), menuName, menu);
	
}

function initItems(parent, menuName, menu) {
	
	if (parent) {
		with (parent.childNodes) {
			for (var i=0; i<length; i++) {
				
				if (item(i).id) {
					
					// dd object
					if (item(i).id.indexOf('dd_' + menuName + '_') != -1) {
						id = item(i).id.substr(4 + menuName.length);
						
						item(i).setAttribute('menu-id', id);
						item(i).setAttribute('menu-name', menuName);
						
						menu[menuName]['items'][id] = item(i);
						
						item(i).onmouseover = function () {
							menuName = this.getAttribute('menu-name');
							
							window.clearTimeout(menu[menuName]['timeOutId']);
							menu[menuName]['isMouseOver'] = true;
						}
						
						item(i).onmouseout = function () {
							menuName = this.getAttribute('menu-name');
							id = this.getAttribute('menu-id');
							
							window.clearTimeout(menu[menuName]['timeOutId']);
							menu[menuName]['isMouseOver'] = false;
							setHideTimeout(menuName, id);
						}
						
						item(i).style.display = 'block';
					}
					
					// link object
					if (item(i).id.indexOf('link_' + menuName + '_') != -1) {
						id = item(i).id.substr(6 + menuName.length);
						
						item(i).setAttribute('menu-id', id);
						item(i).setAttribute('menu-name', menuName);
						
						item(i).onmouseover = function () {
							showMenu(this.getAttribute('menu-name'), this.getAttribute('menu-id'))
						}
						
						item(i).onmouseout = function () {
							hideMenu(this.getAttribute('menu-name'), this.getAttribute('menu-id'))
						}
					}
					
				}
				
				initItems(item(i), menuName, menu);
			}
		}
	}
	
}

function setHideTimeout(menuName, id) {
	menu[menuName]['timeOutId'] = window.setTimeout('hideObj("' + menuName + '", "' + id + '")', menu[menuName]['timeOut']);
}

function arrangeMenu(menuName) {
	
	for (key in menu[menuName]['items']) {
		var item = menu[menuName]['items'][key];
		objLink = document.getElementById('link_' + menuName + '_' + key);
		
		if (objLink) {
			if (item.offsetWidth + objLink.offsetLeft > document.body.clientWidth) {
				item.style.left = (document.body.clientWidth - item.offsetWidth - 1) + 'px';
			} else {
				item.style.left = objLink.offsetLeft + 'px';
			}
		}
	}
	
}

function arrangeSites(menuName) {
	
	var sites = document.getElementById('sites');
	if (menu[menuName]['items']) {
		
		var item = menu[menuName]['items'][1];
		if (item) item.style.marginTop = - sites.getElementsByTagName('div')[0].offsetHeight - item.offsetHeight + 'px';
		// if (item) item.style.top = -item.offsetHeight + 'px';
		// if (item) item.style.top = sites.offsetTop - item.offsetHeight + 'px';
	}
	
}

function showMenu(menuName, id) {
	window.clearTimeout(menu[menuName]['timeOutId']);
	hideObj(menuName, menu[menuName]['visibleMenuId']);
	showObj(menuName, id);
}

function hideMenu(menuName, id) {
	window.clearTimeout(menu[menuName]['timeOutId']);
	setHideTimeout(menuName, id);
}

function hideObj(menuName, id) {
	objLink = document.getElementById('link_' + menuName + '_' + id);
	if (menu[menuName]['items'][id] && objLink) {
		menu[menuName]['items'][id].style.visibility = 'hidden';
		objLink.className = '';
	}
}

function showObj(menuName, id) {
	objLink = document.getElementById('link_' + menuName + '_' + id);
	if (menu[menuName]['items'][id] && objLink) {
		menu[menuName]['items'][id].style.visibility = 'visible';
		objLink.className = 'selected';
		menu[menuName]['visibleMenuId'] = id;
	}
}
