/* Dynamic Pop Menu JS Include
   (c) by Jurek Raben / Alster Media & Werbung GmbH */

var menuContents = new Object();
var menuTimeoutObjs = new Object();
var menuFunctionsOpen = new Object();
var menuFunctionsClose = new Object();
var menuFunctionsClick = new Object();
var menuDefaultTimeout = 2000;
var menuDefaultStartTimeout = 0;
var menuOnClickFunction = null;
var menuMouseIsOutside = false;
var menuOpened = false;

function buildPopMenu(target) {
	menuOpened = true;
	menuTimeoutObjs[target] = null;
	clearMenuTimeoutObj(target);
	if (menuFunctionsOpen[target]) {
		menuFunctionsOpen[target]();
	}
	$(target).disabled = true;
	$(target + '-menu-layer1').show();
	menuMouseIsOutside = false;
	$(target + '-menu-layer1').onmouseout = function() {
		eval('closePopMenuTimeout(\''+ target + '\');');
		menuMouseIsOutside = true;
	}
	if (menuOnClickFunction) menuOnClickFunction();
	closePopMenuTimeoutSelect(target, menuDefaultStartTimeout);
}

function buildMenuLayer(target, caller, callerPos, callerId) {
	clearMenuTimeoutObj(target);
	closeMenuLayer(target);
	for (var c = 0; c < menuContents[target][callerId].names.length; c++) {
		$(target + '-menu-layer2').innerHTML += '<div class="entry"><a href="#" onclick="$(\'' + target +  '\').selectedIndex='+(menuContents[target][callerId].positions[c])+';closePopMenu(\'' + target + '\');setHiddenField(\'' + target + '\');return false;">' + menuContents[target][callerId].names[c] + '</a></div>';
	}
	$(target + '-menu-layer2').style.marginTop = ((callerPos * caller.offsetHeight) - 30) + 'px';
	if (menuContents[target][callerId].names.length) {
		$(target + '-menu-layer2').show();
		$(target + '-menu-layer2').onmouseout = function() {
			eval('closePopMenuTimeout(\''+ target + '\');');
		}
		$(target + '-menu-layer2').onmouseover = function() {
			eval('clearMenuTimeoutObj(\''+ target + '\');');
		}
		$(target + '-menu-layer2').onmouseover = function() {
			eval('clearMenuTimeoutObj(\''+ target + '\');');
		}
		$(target + '-menu-layer2').onmouseup = function() {
			if (menuFunctionsClick[target]) {
				window.setTimeout('menuFunctionsClick[\'' + target + '\']()',500);
			}
		}
	}
	else {
		$(target + '-menu-layer2').hide();
	}
}

function closeMenuLayer(target) {
	$(target + '-menu-layer2').innerHTML = '';
	$(target + '-menu-layer2').hide();
}

function closePopMenu(target) {
	menuOpened = false;
	clearMenuTimeoutObj(target);
	$(target + '-menu-layer1').hide();
	closeMenuLayer(target);
	$(target).disabled = false;
	if (menuFunctionsClose[target]) {
		menuFunctionsClose[target]();
	}
}

function closePopMenuTimeout(target) {
	 closePopMenuTimeoutSelect(target, menuDefaultTimeout);
}

function closePopMenuTimeoutSelect(target, timeout) {
	clearMenuTimeoutObj(target);
	if (timeout) menuTimeoutObjs[target] = window.setTimeout('closePopMenu(\''+target+'\');', timeout);
}

function clearMenuTimeoutObj(target) {
	if (menuTimeoutObjs[target] != null) {
		window.clearTimeout(menuTimeoutObjs[target]);
		menuTimeoutObjs[target] = null;
	}
}
