ypSlideOutMenu.Registry=[];
ypSlideOutMenu.aniLen=250;
ypSlideOutMenu.hideDelay=1000;
ypSlideOutMenu.minCPUResolution=10;
function ypSlideOutMenu(id, dir, left, top, width, height){
  this.ie=document.all?1:0;
  this.ns4=document.layers?1:0;
  this.dom=document.getElementById?1:0;
  this.css="";
  if(this.ie||this.ns4||this.dom){
    this.id=id;
    this.dir=dir;
    this.orientation=dir=="left"||dir=="right"?"h":"v";
    this.dirType=dir=="right"||dir=="down"?"-":"+";
    this.dim=this.orientation=="h"?width:height;
    this.hideTimer=false;
    this.aniTimer=false;
    this.open=false;
    this.over=false;
    this.startTime=0;
    this.gRef="ypSlideOutMenu_"+id;
    eval(this.gRef+"=this");
    ypSlideOutMenu.Registry[id]=this;
    var d=document;
    var strCSS="";
    strCSS+="#"+this.id+"Container{visibility:hidden;";
    strCSS+="left:"+left+"px;";
    strCSS+="top:"+top+"px;";
    strCSS+="overflow:hidden;z-index:10000;}";
    strCSS+="#"+this.id+"Container,#"+this.id+"Content{position:absolute;";
    strCSS+="width:"+width+"px;";
    strCSS+="height:"+height+"px;";
    strCSS+="clip:rect(0 "+width+", "+height+" 0);";
    strCSS+="}";
    this.css=strCSS;
    this.load();
  }
}

ypSlideOutMenu.writeCSS=function(){
  document.writeln("<style type=\"text/css\">");
  for(var id in ypSlideOutMenu.Registry){
    document.writeln(ypSlideOutMenu.Registry[id].css);
    }
  document.writeln("</style>");
};
ypSlideOutMenu.prototype.load=function(){
  var d=document;
  var lyrId1=this.id+"Container";
  var lyrId2=this.id+"Content";
  var obj1=this.dom?d.getElementById(lyrId1):this.ie?d.all[lyrId1]:d.layers[lyrId1];
  if(obj1){
    var obj2=this.ns4?obj1.layers[lyrId2]:this.ie?d.all[lyrId2]:d.getElementById(lyrId2);
  }
  var temp;
  if(!obj1||!obj2){
    window.setTimeout(this.gRef+".load()",100);
  }else{
    this.container=obj1;
    this.menu=obj2;
    this.style=this.ns4?this.menu:this.menu.style;
    this.homePos=eval("0"+this.dirType+this.dim);
    this.outPos=0;
    this.accelConst=(this.outPos-this.homePos)/ypSlideOutMenu.aniLen/ypSlideOutMenu.aniLen;
    if(this.ns4){
      this.menu.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
    }
    this.menu.onmouseover=new Function("ypSlideOutMenu.showMenu('"+this.id+"')");
    this.menu.onmouseout=new Function("ypSlideOutMenu.hideMenu('"+this.id+"')");
    this.endSlide();
    }
};
ypSlideOutMenu.showMenu=function(id){
  var reg=ypSlideOutMenu.Registry;
  var obj=ypSlideOutMenu.Registry[id];
  //declare this menu variable to avoid conflicts (I had a Div named menu that broke this in IE)
  var menu="";
  if(obj.container){
    obj.over=true;
    for(menu in reg){
      if(id!=menu){
        ypSlideOutMenu.hide(menu);
        //02-25-08 Brandon Burnett
        document.getElementById(menu+"button").src="images/"+menu+".gif";
      }
    }
    if(obj.hideTimer){
      reg[id].hideTimer=window.clearTimeout(reg[id].hideTimer);
    }
    if(!obj.open&&!obj.aniTimer){
      reg[id].startSlide(true);
    }
    }
};
ypSlideOutMenu.hideMenu=function(id){
  var obj=ypSlideOutMenu.Registry[id];
if(obj.container){
  if(obj.hideTimer){
    window.clearTimeout(obj.hideTimer);
  }
  //original code
  //obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide('"+id+"')",ypSlideOutMenu.hideDelay);

  obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide('"+id+"');document.getElementById('"+id+"button').src='images/"+id+".gif'",ypSlideOutMenu.hideDelay);
  }
};
ypSlideOutMenu.hideAll=function(){
  var reg=ypSlideOutMenu.Registry;
  var menu="";
  for(menu in reg){h
    vSlideOutMenu.hide(menu);
    if(menu.hideTimer){
      window.clearTimeout(menu.hideTimer);
    }
  }
};
ypSlideOutMenu.hide=function(id){
  var obj=ypSlideOutMenu.Registry[id];
  obj.over=false;
  if(obj.hideTimer){
    window.clearTimeout(obj.hideTimer);
  }
  obj.hideTimer=0;
  if(obj.open&&!obj.aniTimer){
    obj.startSlide(false);
  }
};
ypSlideOutMenu.prototype.startSlide=function(dir1){
  this[dir1?"onactivate":"ondeactivate"]();
  this.open=dir1;
  if(dir1){
    this.setVisibility(true);
  }
  this.startTime=(new Date()).getTime();
  this.aniTimer=window.setInterval(this.gRef+".slide()",ypSlideOutMenu.minCPUResolution);
};

ypSlideOutMenu.prototype.slide=function(){
var dir2=(new Date()).getTime()-this.startTime;
if(dir2>ypSlideOutMenu.aniLen){
  this.endSlide();
}
else{
  var d=Math.round(Math.pow(ypSlideOutMenu.aniLen-dir2,2)*this.accelConst);
  if(this.open&&this.dirType=="-"){
    d=-d;
  }
  else{
    if(this.open&&this.dirType=="+"){
      d=-d;
    }
    else{
      if(!this.open&&this.dirType=="-"){
        d=-this.dim+d;
      }else{
        d=this.dim+d;
      }
    }
  }
    this.moveTo(d);
  }
};

ypSlideOutMenu.prototype.endSlide=function(){
  this.aniTimer=window.clearTimeout(this.aniTimer);
  this.moveTo(this.open?this.outPos:this.homePos);
  if(!this.open){
    this.setVisibility(false);
  }
  if((this.open&&!this.over)||(!this.open&&this.over)){
    this.startSlide(this.over);
  }
};

ypSlideOutMenu.prototype.setVisibility=function(dir4){
  var s=this.ns4?this.container:this.container.style;
  s.visibility=dir4?"visible":"hidden";
};
ypSlideOutMenu.prototype.moveTo=function(p){
  this.style[this.orientation=="h"?"left":"top"]=this.ns4?p:p+"px";
};
ypSlideOutMenu.prototype.getPos=function(c){
  return parseInt(this.style[c]);
};
ypSlideOutMenu.prototype.onactivate=function(){};
ypSlideOutMenu.prototype.ondeactivate=function(){};


