var menu=function(){
  var tmr=1, zIdx=50, fade=1, a;
  function dd(n){this.n=n; this.h=[]; this.c=[]}
  dd.prototype.init=function(elemId,c){
    a=c; var w=document.getElementById(elemId), s=w.getElementsByTagName('ul'), l=s.length, i=0;
    for(i;i<l;i++){
      var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
      h.onmouseover=new Function(this.n+'.st('+i+',true)');
      h.onmouseout=new Function(this.n+'.st('+i+')');
    }
  }
  dd.prototype.st=function(x,f){
    var c=this.c[x], h=this.h[x], anchor=h.getElementsByTagName('a')[0];
    clearInterval(c.t); c.style.overflow='hidden';
    if(f){
      anchor.className+=' '+a;
      if(!c.mh){c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0}
      if(c.mh==c.offsetHeight){c.style.overflow='visible'}
      else{c.style.zIndex=zIdx; zIdx++; c.t=setInterval(function(){sl(c,1)},tmr)}
    }else{anchor.className=anchor.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},tmr)}
  }
  function sl(c,f){
    var hgt=c.offsetHeight;
    if((hgt<=0&&f!=1)||(hgt>=c.mh&&f==1)){
      if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible'}
      clearInterval(c.t); return
    }
    var d=(f==1)?Math.ceil((c.mh-hgt)/fade):Math.ceil(hgt/fade), o=hgt/c.mh;
    c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
    c.style.height=hgt+(d*f)+'px'
  }
  return{dd:dd}
}();
