var selectedSubMenus = new Array();

/*
	Shows a layer at a specific position.
	id is the layer id, parent_id is the item's parent 
	record id, parent is the object to align the 
	layer to and the pos and align arguments specify
	the layer's position relative to the parent object;
	The vAlign/hAlign side of the layer will be placed at the
	vPos/hPos coordinate of the parent object:
	             
	          ----------------  <- [vPos 0]
			 |     PARENT     |
	          ----------------  <- [vPos 1]
             ^                ^
	      [hPos 0]         [hPos 1]
		  

	          --------------  <- [vAlign 0]
			 |     LAYER     |
	          --------------  <- [vAlign 1]
             ^               ^
	     [hAlign 0]      [hAlign 1]
		 
	NOTE: If this somehow doesn't work for you please make sure that the layer you want to show
	      has it's width and height set inline.
*/

function showMenuLayer(layer, parent_layer, hPos, vPos, hAlign, vAlign, hOffset, vOffset) {

	var left = 0;
	var top = 0;
	var offset;

	if (layer) {
	
		if (parent_layer) {

			offset = new _totalElementOffset(parent_layer);
			left = offset.x;
			top = offset.y;

			if (hPos == 1) left += parent_layer.offsetWidth;
			if (vPos == 1) top += parent_layer.offsetHeight;
			if (hAlign == 1) left -= layer.style.width.replace(/px/,'');
			if (vAlign == 1) top -= layer.style.height.replace(/px/,'');
			if (hOffset) left += hOffset;
			if (vOffset) top += vOffset;

		}

		layer.style.left = left + 'px';
		layer.style.top = top + 'px';
		layer.style.display = '';
		layer.style.visibility = 'visible';
//		layer.style.zIndex = '20';

	}

}

function showRootMenu(itm_id, parent_id, parent_object, hPos, vPos, hAlign, vAlign, hOffset, vOffset) {

	closeAllSubMenus();
	selectedSubMenus = new Array();
	
	var il = document.getElementById('subnav_' + itm_id);
	if (il) {
		showMenuLayer(il, parent_object, hPos, vPos, hAlign, vAlign, hOffset, vOffset);
		selectedSubMenus[itm_id] = new Array();
		selectedSubMenus[itm_id]['object'] = il;
		selectedSubMenus[itm_id]['parent_id'] = parent_id;
	}
	
}

function showSubMenu(itm_id, parent_id, parent_object, hPos, vPos, hAlign, vAlign, hOffset, vOffset) {

	_updateVisible(parent_id);
	
	var il = document.getElementById('subnav_' + itm_id);
	if (il) {
		showMenuLayer(il, parent_object, hPos, vPos, hAlign, vAlign, hOffset, vOffset);
		selectedSubMenus[itm_id] = new Array();
		selectedSubMenus[itm_id]['object'] = il;
		selectedSubMenus[itm_id]['parent_id'] = parent_id;
	}
	
}

function closeAllSubMenus() {

	for (menuid in selectedSubMenus) {
		if (selectedSubMenus[menuid] != null && typeof(selectedSubMenus[menuid]['object']) != 'undefined') {
			selectedSubMenus[menuid]['object'].style.display = 'none';
			selectedSubMenus[menuid]['object'].style.visibility = 'hidden';
//			selectedSubMenus[menuid]['object'].style.zIndex = '0';
		}
	}

}

function _updateVisible(parent_id) {

	for (menuid in selectedSubMenus) {
		
		if (selectedSubMenus[menuid] != null) {

			if (selectedSubMenus[menuid]['parent_id'] == parent_id) {
	
				selectedSubMenus[menuid]['object'].style.display = 'none';
				selectedSubMenus[menuid]['object'].style.visibility = 'hidden';
//				selectedSubMenus[menuid]['object'].style.zIndex = '0';
				selectedSubMenus[menuid] = null;
				
				_updateVisible(menuid);
				
			}
		}
	}

}

// Crossbrowser compatible positioning
// Returns an object containing the total x and y offsets for obj relative to the document
function _totalElementOffset(obj) {

	var yOffset = (obj.offsetTop ? obj.offsetTop : 0);
	var xOffset = (obj.offsetLeft ? obj.offsetLeft : 0);
	var elParent = obj.offsetParent;

	while (elParent) {
		yOffset += (elParent.offsetTop ? elParent.offsetTop : 0);
		xOffset += (elParent.offsetLeft ? elParent.offsetLeft : 0);
		elParent = elParent.offsetParent;
	}

	this.y = yOffset;
	this.x = xOffset;

}

// click() method toevoegen voor Mozilla
if  (navigator.appName == "Netscape") {
	HTMLElement.prototype.click = function() {
		var evt = this.ownerDocument.createEvent('MouseEvents');
		evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
		this.dispatchEvent(evt);
	}
}

