window.onload = mladdevents;
 
			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.style.zIndex = "2";
 
					Iframe.style.filter = 'alpha(opacity=0)';
 
				}
 
				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(window.mlrunShim == true){
 
								lis[i].appendChild(Iframe.cloneNode(false));
 
							}
 
							if(lis[i].getElementsByTagName('ul').length > 0){
 
								lis[i].className += 'haschild';
 
								if(divs[j].className.indexOf('arrow') != -1){
 
									if(divs[j].className.indexOf('vertical') != -1 || lis[i].parentNode.parentNode.nodeName != 'DIV'){
 
										lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="vert">&rarr;</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){
 
									//This accounts for a wierd IE-specific bug in horizontal menus. CSS will set visibility: hidden;. This keeps the menu level(in IE)
 
									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()},500);
 
						}
 
						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]);
 
					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);
 
				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+'px';
 
							sib.style.left = ob[0].offsetLeft-2+'px';
 
							sib.style.width = ob[0].offsetWidth+'px';
 
							sib.style.height = ob[0].offsetHeight-2+'px';
 
							sib.style.border = '1px solid red';
 
							sib.style.display = 'block';
 
						}
 
						mlEffectOver(ob[0],this);
 
						window.lastover = ob[0];
 
					}
 
				}
 
			}
 
			function mlSetOpacity(ob,level){
 
				if(ob){
 
					//level is between 0 and 10
 
					//need to convert to decimal for standard
 
					var standard = level/10;
 
					//need to convert to 0-100 scale for IE filter
 
					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){
 
						//mlout has not interfered
 
						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 + 1;
 
				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 = ''},500);
 
						}
 
						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=0;i<width;i++){
 
								setTimeout(function(){mlIncreaseWidth(ob)},i*3);
 
							}
 
							setTimeout(function(){ob.style.overflow='visible';},width*3)
 
						}
 
						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;//Saves checking elsewhere
 
				//This is a fix for a Firefox bug *gasp*
 
				//Aparantly causes a bug in Opera!
 
				//I see no choice but a browser detect. *sigh* I didn't want to have to do this.
 
				if(navigator.userAgent.indexOf('Gecko') != -1 && navigator.userAgent.indexOf('Opera') == -1){
 
					//This should only be run by Gecko based browsers. this code should be fine in everything but Opera so forge away browsers.
 
					var allc = parent.getElementsByTagName('*');
 
					for(var i= 0;i<allc.length;i++){
 
						if(allc[i] == child){
 
							return true;
 
						}
 
					}
 
				}
 
				else{
 
					//http://www.dynamicdrive.com/forums/showthread.php?t=12341 Thanks Twey!
 
					for(; child.parentNode; child = child.parentNode){
 
						if(child.parentNode === parent) return true;
 
					}
 
				}
 
				return false;
 
			}
 

