window.onload = mladdevents;
window.mlrunShim = true;
function mladdevents() {
    
	if (window.mlrunShim == true) {
		var Iframe = document.createElement("iframe");
		Iframe.setAttribute("src", "about:blank");
		Iframe.setAttribute("scrolling", "no");
		Iframe.setAttribute("frameBorder", "0");
		Iframe.setAttribute("width","0");
		Iframe.setAttribute('height','0');
		Iframe.style.display = "none";
		Iframe.style.position = "absolute";
		Iframe.style.zIndex = "2";
		Iframe.style.filter = 'alpha(opacity=7)';
	}
	var effects_a = new Array();
	var divs = document.getElementsByTagName('div');
	for (var j = 0; j < divs.length; j++) {
		if (divs[j].className.indexOf('mlmenu') != -1) {		  
			var lis = divs[j].getElementsByTagName('li');
			for (var i = 0; i < lis.length; i++) {
				lis[i].onmouseover = mlover;
				lis[i].onmouseout = mloutSetTimeout;
				
				if (lis[i].getElementsByTagName('ul').length > 0) {
				    if (window.mlrunShim == true) {
					    lis[i].appendChild(Iframe.cloneNode(false));
				    }
					lis[i].className += ' haschild';
					if (divs[j].className.indexOf('arrow') != -1) {
						if (divs[j].className.indexOf('vertical') != -1 ) {
						    if( lis[i].parentNode.parentNode.nodeName == 'DIV')	{
						        var a =lis[i].getElementsByTagName('a')[0];					    
						        a.innerHTML = '<span class=warrow>'+a.innerHTML + '</span>';
							    //lis[i].getElementsByTagName('a')[0].innerHTML +=  '<span class="vert"><img src=images/arrow.gif border=0 /></span>' ;
							}else{
							    var a =lis[i].getElementsByTagName('a')[0];					    
						        a.innerHTML = '<span class=barrow>'+a.innerHTML + '</span>';
						    }
						} else {
							lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="horiz">&darr;</span>';
						}
					} else if (divs[j].className.indexOf('plus') != -1) {
						lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="plus">+</span>';
					}
				} else {
					if (divs[j].className.indexOf('arrow') != -1) {						
						//lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="noshow">&darr;</span>';
					}
				}
				var uls = lis[i].getElementsByTagName('ul');
				for (var k = 0; k < uls.length; k++) {
					var found = 'no';
					for (var z = 0; z < effects_a.length; z++) {
						if (effects_a[z] == uls[k]) {
							found = 'yes';
						}
					}
					if (found == 'no') {
						effects_a[effects_a.length] = uls[k];
						uls[k].style.zIndex = '100';
						mlEffectLoad(uls[k]);
					}
				}
			}
		}
	}
}
function mloutSetTimeout(e) {
	if (!e) {
		var the_e = window.event;
	} else {
		var the_e = e;
	}
	var reltg = (the_e.relatedTarget) ? the_e.relatedTarget : the_e.toElement;
	if (reltg) {
		var under = ancestor(reltg, this);
		if (under === false && reltg != this) {
			window.mlLast = this;
			var parent = this.parentNode;
			while (parent.parentNode && parent.className.indexOf('mlmenu') == -1) {
				parent = parent.parentNode;
			}
			if (parent.className.indexOf('delay') != -1) {
				window.mlTimeout = setTimeout(function() {
					mlout()
				}, 800);
			} else {
				mlout();
			}
		}
	}
}
function mlout() {
	if (window.mlLast == null)
		return false;
	var uls = window.mlLast.getElementsByTagName('ul');
	var sib;
	for (var i = 0; i < uls.length; i++) {
		mlEffectOut(uls[i]);
		window.mlLast.className = 'haschild hide';
		if (window.mlrunShim == true) {
			sib = uls[i];
			while (sib.nextSibling && sib.nodeName != 'IFRAME') {
				sib = sib.nextSibling
			}
			sib.style.display = 'none';
		}
	}
	window.lastover = null;
}
function mlover(e) {
	if (!e) {
		var the_e = window.event;
	} else {
		var the_e = e;
	}
	the_e.cancelBubble = true;
	if (the_e.stopPropagation) {
		the_e.stopPropagation();
	}
	clearTimeout(window.mlTimeout);
	clearTimeout(window.ifTimeout);
	if (window.mlLast && window.mlLast != this && ancestor(this, window.mlLast) == false) {
		mlout();
	} else {
		window.mlLast = null;
	}
	var reltg = (the_e.relatedTarget) ? the_e.relatedTarget : the_e.fromElement;
	var ob = this.getElementsByTagName('ul');
	var under = ancestor(reltg, this);
	if (ob[0] && under == false) {
		if (window.lastover != ob[0]) {
			if (window.mlrunShim == true) {
				var sib = ob[0];
				while (sib.nextSibling && sib.nodeName != 'IFRAME') {
					sib = sib.nextSibling
				}
				ob[0].style.display = 'block';
				sib.style.top = ob[0].offsetTop-1  + 'px';
				sib.style.left = ob[0].offsetLeft-1   + 'px';
				sib.style.width = ob[0].offsetWidth  + 'px';
				sib.style.height = ob[0].offsetHeight  + 'px';
				sib.style.border = '1px solid #000';				
				
				window.ifTimeout = window.setTimeout(function(){
				    sib.style.display = 'block';
				 },78);
				
			}
			this.className = 'haschild';
			mlEffectOver(ob[0], this);
			window.lastover = ob[0];
		}
	}
}
function mlSetOpacity(ob, level) {
	if (ob) {
		
		var standard = level / 10;
		
		var ie = level * 10;
		ob.style.opacity = standard;
		ob.style.filter = "alpha(opacity=" + ie + ")"
	}
}
function mlIncreaseOpacity(ob) {
	var current = ob.style.opacity;
	if (lastob == ob && lastop == current) {
		
		current = current * 10;
		var upone = current + 1;
		mlSetOpacity(ob, upone);
		lastob = ob;
		lastop = upone / 10;
	}
}
function mlIncreaseHeight(ob) {
	var current = parseInt(ob.style.height);
	var newh = current + 1;
	ob.style.height = newh + 'px';
}
function mlIncreaseWidth(ob) {
	var current = parseInt(ob.style.width);
	var newh = current + 5;
	ob.style.width = newh + 'px';
}
function mlBlink(ob) {
	var newb = '1px solid red';
	var old = '';
	if (ob.style.border == old) {
		ob.style.border = newb;
	} else {
		ob.style.border = old;
		ob.style.borderTop = '1px solid';
	}
}
function mlShake(ob) {
	var newp = '5px';
	var old = '';
	if (ob.style.paddingLeft == old) {
		ob.style.paddingLeft = newp;
	} else {
		ob.style.paddingLeft = old;
	}
}
function mlEffectOver(ob, parent) {
	switch (ob.className) {
		case 'fade' :
			ob.style.display = 'block';
			if (ob.style.opacity == 0) {
				lastob = ob
				lastop = 0;
				for (var i = 1; i <= 10; i++) {
					setTimeout(function() {
						mlIncreaseOpacity(ob)
					}, i * 50);
				}
				setTimeout(function() {
					ob.style.filter = ''
				}, 100);
			}
			break;
		case 'blink' :
			ob.style.display = 'block';
			for (var i = 0; i < 10; i++) {
				setTimeout(function() {
					mlBlink(ob)
				}, i * 50);
			}
			break;
		case 'shake' :
			ob.style.display = 'block';
			for (var i = 0; i < 10; i++) {
				setTimeout(function() {
					mlShake(ob)
				}, i * 50);
			}
			break;
		case 'blindv' :
			ob.style.display = 'block';
			if (ob.offsetHeight) {
				var height = ob.offsetHeight
				ob.style.height = '0px';
				ob.style.overflow = 'hidden';
				for (var i = 0; i < height; i++) {
					setTimeout(function() {
						mlIncreaseHeight(ob)
					}, i * 3);
				}
				setTimeout(function() {
					ob.style.overflow = 'visible';
				}, height * 3)
			}
			break;
		case 'blindh' :
			ob.style.display = 'block';
			if (ob.offsetWidth) {
				var width = ob.offsetWidth;
				ob.style.width = '0px';
				ob.style.overflow = 'hidden';
				
				for (var i = width; i >= 0; i-=5) {
					setTimeout(function() {
						mlIncreaseWidth(ob)
					}, i-70 );
				}
				
				setTimeout(function() {
					ob.style.overflow = 'visible';
					ob.style.width = (width-2)+ 'px';
				}, 80 )
			}
			break;
	
		default :
			ob.style.display = 'block';
			break;
	}
}
function mlEffectOut(ob) {
	switch (ob.className) {
		case 'fade' :
			mlSetOpacity(ob, 0);
			ob.style.display = 'none';
			break;
		case 'blink' :
			ob.style.border = '';
			ob.style.display = 'none';
			break;
		case 'shake' :
			ob.style.paddingLeft = '';
			ob.style.display = 'none';
			break;
		default :
			ob.style.display = 'none';
			break;
	}
}
function mlEffectLoad(ob) {
	var parent = ob.parentNode;
	while (parent.parentNode && parent.className.indexOf('mlmenu') == -1) {
		parent = parent.parentNode;
	}
	if (parent.className.indexOf('fade') != -1) {
		ob.style.display = 'none';
		ob.className = 'fade';
		mlSetOpacity(ob, 0);
	} else if (parent.className.indexOf('blink') != -1) {
		ob.className = 'blink';
		ob.style.display = 'none';
	} else if (parent.className.indexOf('shake') != -1) {
		ob.className = 'shake';
		ob.style.display = 'none';
	} else if (parent.className.indexOf('blindv') != -1) {
		ob.className = 'blindv';
		ob.style.display = 'none';
	} else if (parent.className.indexOf('blindh') != -1) {
		ob.className = 'blindh';
		ob.style.display = 'none';
	} else {
		ob.className = 'none';
		ob.style.display = 'none';
	}
}
function ancestor(child, parent) {
	if (child == null)
		return false;
	if (navigator.userAgent.indexOf('Gecko') != -1 && navigator.userAgent.indexOf('Opera') == -1) {
		
		var allc = parent.getElementsByTagName('*');
		for (var i = 0; i < allc.length; i++) {
			if (allc[i] == child) {
				return true;
			}
		}
	} else {
		
		for (; child.parentNode; child = child.parentNode) {
			if (child.parentNode === parent)
				return true;
		}
	}
	return false;
}