var menuSlider_dropDownTime = 100;
var menuSlider_dropDownIncrement = 0.05;

var menuSlider_dropDownDelay = menuSlider_dropDownTime * menuSlider_dropDownIncrement;
var menuSlider_fixIeFirstLeverWidth;

var menuSlider_containerId = 'navigation';


if (typeof(addLoadEvent) != 'function') {
	function addLoadEvent(func) { 
		var oldonload = window.onload; 
		if (typeof window.onload != 'function') { 
			window.onload = func; 
		} else { 
			window.onload = function() { 
				if (oldonload) { 
					oldonload(); 
				} 
				func(); 
			} 
		} 
	}
}

// this function determines whether the event is the equivalent of the microsoft
// mouseleave or mouseenter events.
function menuSlider_isMouseLeaveOrEnter(e, handler) {
	if (e.type != 'mouseout' && e.type != 'mouseover')
		return false;
	var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
	while (reltg && reltg != handler)
		reltg = reltg.parentNode;
	return (reltg != handler);
}

function menuSlider_getActualPropertyOfAnElement(elem, key ) {

	switch (key) {
		case 'height' :
			return elem.clientHeight;
			break;
		case 'width' :
			return elem.clientWidth;
			break;
		default :
			if (elem.currentStyle) {
				return elem.currentStyle[key];
			}
			else if (window.getComputedStyle) {
				return window.getComputedStyle(elem, null).getPropertyValue(key);
			}
			else {
				return -1;
			}
	}
}
function menuSlider_determineMaxWidthOfUl (ul) {
	var originalWidth = menuSlider_getActualPropertyOfAnElement(ul, 'width');
	ul.style.width = '100%';
	var actualWidth;
	var maxWidth = 0;
	for (var indexChild = 0 ; indexChild < ul.childNodes.length ; indexChild++) {
		li = ul.childNodes[indexChild];
		if (li.tagName == 'LI') {
			originalPosition = li.style.position;
			li.style.position = 'absolute';
			li.style.width = 'auto';
			actualWidth = parseInt(menuSlider_getActualPropertyOfAnElement(li, 'width'));
			if (actualWidth > maxWidth) {
				maxWidth = actualWidth;
			}
			li.style.position = originalPosition;
		}
	}
	ul.style.width = originalWidth;
	
	if (ul.className == 'level2') {
		menuSlider_fixIeFirstLeverWidth = maxWidth;
	}
	
	return maxWidth;
}
function menuSlider_initMenuSlider() {
	var menuDiv = document.getElementById(menuSlider_containerId);
	var liArray = menuDiv.getElementsByTagName('li');
	var originDisplayValue = 'none';
	
	for (var indexLi = 0 ; indexLi < liArray.length ; indexLi++) {
	
		liArray[indexLi].onmouseover = menuSlider_liHover;
		liArray[indexLi].onmouseout = menuSlider_liBlur;
		
		for (var indexChild = 0 ; indexChild < liArray[indexLi].childNodes.length ; indexChild ++) {
			ul = liArray[indexLi].childNodes[indexChild];
			if (ul.tagName == 'UL') {
				//ul.onmouseout = menuSlider_ulBlur;
				ul.style.display = 'block';
				ul.maxHeight = parseInt(menuSlider_getActualPropertyOfAnElement(ul, 'height'));
				ul.style.height = ul.maxHeight + 'px';
				ul.maxWidth = menuSlider_determineMaxWidthOfUl(ul);
				ul.style.width = ul.maxWidth + 'px';
				for (var indexUlChild = 0 ; indexUlChild < ul.childNodes.length ; indexUlChild++) {
					var subLi = ul.childNodes[indexUlChild];
					if (subLi.tagName == 'LI') {
						subLi.style.width = (ul.maxWidth) + 'px';
					}
				}
			}
		}
	}

	menuSlider_hideAllSubmenus(liArray);
}

function menuSlider_hideAllSubmenus(liArray) {	
	for (indexLi = 0 ; indexLi < liArray.length ; indexLi ++) {
		ulArray = liArray[indexLi].getElementsByTagName('ul');
		for (index = 0 ; index < ulArray.length ; index ++) {
			ulArray[index].style.display = 'none';
			ulArray[index].style.height = '0';
		}	
	}
}
function menuSlider_liHover(event) {
	if (!event) var event = window.event;
	if (menuSlider_isMouseLeaveOrEnter(event, this)) {
		//alert (this.style.width);
		menuSlider_showChildUls(this);
	}
}

function menuSlider_liBlur(event) {
	if (!event) var event = window.event;
	if (menuSlider_isMouseLeaveOrEnter(event, this)) {
		menuSlider_hideChildUls(this);
	}	
}

function menuSlider_showChildUls(li) {
	for (var index = 0 ; index < li.childNodes.length; index ++) {
		ul = li.childNodes[index];
		if (ul.tagName == 'UL') {
			clearTimeout(li.mouseOutDelayTimer);
			ul.style.display = 'block';
			ul.style.overflow = 'hidden';
			menuSlider_dropDown(0, li, ul);
			//ul.style.display = 'block';
			//ul.style.height = ul.maxHeight+'px';
		}
	}
}

function menuSlider_dropDown(actualHeight, target, childToDropDown) {
	actualHeight += childToDropDown.maxHeight * menuSlider_dropDownIncrement;
	actualHeight = parseInt(actualHeight);
	if (actualHeight > childToDropDown.maxHeight) {
		childToDropDown.style.height = childToDropDown.maxHeight + 'px';
		childToDropDown.style.overflow = 'visible';
	}
	else {
		childToDropDown.style.height = actualHeight + 'px';
		target.dropDownTimer = setTimeout( function (){menuSlider_dropDown(actualHeight, target, childToDropDown);} , menuSlider_dropDownDelay);
	}
}

function menuSlider_hideChildUls(li) {
	for (var index = 0 ; index < li.childNodes.length; index ++) {
		ul = li.childNodes[index];
		if (ul.tagName == 'UL') {
			clearTimeout(li.dropDownTimer);
			ul.style.display = 'none';
			ul.style.height = 0;
		}
	}
}

function menuSlider_fixIeStuff() {
	var browser=navigator.appName;
	var b_version=navigator.appVersion;
	
	if (browser == 'Microsoft Internet Explorer'  && b_version.search('MSIE 6.0') > 0) {
		menuSlider_fixIeFirstLeverWidth += 15;
	}
	
	container = document.getElementById(menuSlider_containerId);
	ulArray = container.getElementsByTagName('ul');
	
	for (index = 0 ; index < ulArray.length ; index++ ){
		if (ulArray[index].className == 'level2') {
			ulArray[index].style.left = (menuSlider_fixIeFirstLeverWidth+20) + 'px';
		}
	}
	
}

addLoadEvent(menuSlider_initMenuSlider);
addLoadEvent(menuSlider_fixIeStuff);


