if(window.addEventListener){
   window.addEventListener("load",mladdevents,false);
}
else if(window.attachEvent){
   window.attachEvent("onload",mladdevents);
}
else{
 window.onload = mladdevents;
}
function mladdevents(){
 if(!window.mlrunShim){
  window.mlrunShim = false;
 }
 if(window.mlrunShim == true){
  var Iframe = document.createElement("iframe");
  Iframe.setAttribute("src","about:blank");
  Iframe.setAttribute("scrolling","no");
  Iframe.setAttribute("frameBorder","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){
   
   divs[j].className = divs[j].className.replace('mlmenu','mlmenujs');
   var firstLevel = divs[j].getElementsByTagName('ul')[0];
   firstLevel.className = divs[j].className + ' first-level';//just for reference
   for (var n=0; n<firstLevel.childNodes.length; n++){
    //firstLevel.childNodes[n].getElementsByTagName('a')[0].style.border = "0px";
    //firstLevel.childNodes[n].getElementsByTagName('a')[0].style.borderBottom = "1px solid #d7d7d7";
    if (firstLevel.childNodes[n].nodeName.toLowerCase() == 'li'){
     firstLevel.childNodes[n].getElementsByTagName('a')[0].className += ' first-level';
    }
    //firstLevel.childNodes[n].getElementsByTagName('a')[0].className += (firstLevel.childNodes[n].nodeName.toLowerCase() == 'li')? ' first-level' : '';
   }
   
   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].parentNode.getElementsByTagName('li')[0] == lis[i]){
     lis[i].getElementsByTagName('a')[0].className += ' first';
     
     if(lis[i].parentNode.className.indexOf('mlmenujs') != -1){
      lis[i].className += ' pixelfix';
     }
    }
    if(lis[i] == findLast(lis[i].parentNode)){
     lis[i].className += ' last';
    }
    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]);
     }
    }
   }
   divs[j].style.visibility = 'visible';
  }
 }
}
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('mlmenujs') == -1){
    parent = parent.parentNode;
   }
   if(parent.className.indexOf('delay') != -1){
    window.mlTimeout = setTimeout(function(){mlout()},1000);
   }
   else{
    mlout();
   }
  }
 }
}
function mlout(){
 if(window.mlLast==null)return false;
 var links = window.mlLast.getElementsByTagName('a');
 for(var i = 0;i<links.length;i++){
  links[i].className = links[i].className.replace('hover','');
 }
 var uls = window.mlLast.getElementsByTagName('ul');
 var sib;
 for(var i=0;i<uls.length;i++){
  mlEffectOut(uls[i]);
  window.mlLast.className += ' hide';
  window.mlLast.className = window.mlLast.className.replace('hide hide','hide');
  if(window.mlrunShim == true){
   sib = uls[i];       
   while(sib.nextSibling && sib.nodeName != 'IFRAME'){
    sib = sib.nextSibling
   }
   sib.style.display = 'none';
  }
 }
 window.lastover = null;
 return true;
}
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 under = ancestor(reltg,this);
 if(under == false){
  var hovered = byClass(this.parentNode,'hover','a');
  for(var i=0;i<hovered.length;i++){
   if(ancestor(this,hovered[i].parentNode) == false){
    window.mlLast = hovered[i].parentNode;
    mlout();
   }
  }
  var ob = this.getElementsByTagName('ul');
  var link = this.getElementsByTagName('a')[0];
  link.className += ' hover';
  if(ob[0]){
   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+2+'px';
     sib.style.height = ob[0].offsetHeight-2+'px';
     sib.style.display = 'block';
    }
    this.className = this.className.replace(/hide/g,'');
    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;
 current = current * 10;
 var upone = current + 1;
 mlSetOpacity(ob,upone);
}
function mlIncreaseHeight(ob){
 var current = parseInt(ob.style.height);
 if(!isNaN(current)){
  var newh = current + 1;
  ob.style.height = newh+'px';
 }
}
function mlIncreaseWidth(ob){
 var current = parseInt(ob.style.width);
 if(!isNaN(current)){
  var newh = current + 1;
  ob.style.width = newh+'px';
 }
}
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';
  for(var i = 1;i<=10;i++){
   window.fadeTime = setTimeout(function(){mlIncreaseOpacity(ob)},i*50);
  }
  setTimeout(function(){ob.style.filter = ''},500);
  break;
 case 'shake':
  ob.style.display = 'block';
  var shake = setInterval(function(){mlShake(ob)},50);
  setTimeout(function(){clearInterval(shake)},510);
  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='';ob.style.height='auto'},(height-1)*3)//-1 for IE
  }
  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':
  clearTimeout(window.fadeTime);
  mlSetOpacity(ob,0);
  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('shake') != -1){
  ob.className = 'shake';
 }
 else if(parent.className.indexOf('blindv') != -1){
  ob.className = 'blindv';
 }
 else if(parent.className.indexOf('blindh') != -1){
  ob.className = 'blindh';
 }
 else if(parent.className.indexOf('box') != -1){
  ob.className = 'box';
 }
 ob.style.display = 'none';
}
function ancestor(child, parent){
 try{
  if(child==null)return false;//Saves checking elsewhere
  for(; child.parentNode; child = child.parentNode){
    if(child.parentNode === parent) return true;
   }
  return false;
 }
 catch(error){
  //Mozilla bug, it  must be a text control which can not be in the menu so we will foolishly assume false
  return false;
 }
}
function byClass(parent,c,tag){
 var all = parent.getElementsByTagName(tag);
 var returna = new Array();
 for(var i=0;i<all.length;i++){
  if(all[i].className.indexOf(c) != -1){
   returna[returna.length] = all[i]
  }
 }
 return returna;
}
function findLast(ob){
 if(ob.lastChild.nodeType == 1){
  return ob.lastChild
 }
 return ob.lastChild.previousSibling;
}

