/* SlideOutMenuLogic.js */
ypSlideOutMenu.Registry=[];
ypSlideOutMenu.aniLen=500;
ypSlideOutMenu.hideDelay=500;
ypSlideOutMenu.minCPUResolution=10;
// menuID, direction(left, right, top, bottom), left, top, width, height
function ypSlideOutMenu(menuID,_direction,_left,_top,_width,_height){
  this.ie=document.all?1:0;this.ns4=document.layers?1:0;this.dom=document.getElementById?1:0;this.css="";
    this.id=menuID;  
    this.dim=_width;
    this.startTime=0;
	this.gRef="SlideOutMenu_"+menuID;
    eval(this.gRef+"=this");
    ypSlideOutMenu.Registry[menuID]=this;
    var d=document;
    var _script="";
    _script+="#"+menuID+"Container{visibility:hidden;";
    _script+="left:"+_left+"px;";
    _script+="top:"+_top+"px;";
    _script+="overflow:hidden;z-index:10000;}";
    _script+="#"+menuID+"Container,#"+menuID+"Content{position:absolute;";
    _script+="width:"+_width+"px;";
    _script+="height:"+_height+"px;";
    _script+="clip:rect(0 "+_width+" "+_height+" 0);";
    _script+="}";
    this.css=_script;
    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 _sliderContainer=this.id+"Container";
  var _sliderContent=this.id+"Content";
  var _sliderElement=this.dom?d.getElementById(_sliderContainer):this.ie?d.all[_sliderContainer]:d.layers[_sliderContainer];
  if(_sliderElement){
    var _sliderLayer=this.ns4?_sliderElement.layers[_sliderContent]:this.ie?d.all[_sliderContent]:d.getElementById(_sliderContent);
    }
  if(!_sliderElement||!_sliderLayer){
    window.setTimeout(this.gRef+".load()",100);
    }
  else{
    this.container=_sliderElement;
    this.menu=_sliderLayer;
    this.style=this.menu.style;
    this.homePos=eval("0"+"-"+this.dim);
    this.outPos=0;
    this.accelConst=(this.outPos-this.homePos)/ypSlideOutMenu.aniLen/ypSlideOutMenu.aniLen;
    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];
  if(obj.container){
    obj.over=true;
    for(menu in reg){
      if(id!=menu){
        ypSlideOutMenu.hide(menu);
        }
    }
    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);
      }
    obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide('"+id+"')",ypSlideOutMenu.hideDelay);
    }
  };
ypSlideOutMenu.hideAll=function(){
  var reg=ypSlideOutMenu.Registry;
  for(menu in reg){
    ypSlideOutMenu.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(_21){
  this[_21?"onactivate":"ondeactivate"]();
  this.open=_21;
  if(_21){
    this.setVisibility(true);
    }
  this.startTime=(new Date()).getTime();
  this.aniTimer=window.setInterval(this.gRef+".slide()",ypSlideOutMenu.minCPUResolution);
  };
ypSlideOutMenu.prototype.slide=function()
  {
  var _22=(new Date()).getTime()-this.startTime;
  if(_22>ypSlideOutMenu.aniLen){
    this.endSlide();
    }
    else{
      var d=Math.round(Math.pow(ypSlideOutMenu.aniLen-_22,2)*this.accelConst);
      if(this.open){
        d=-d;
	    }
    else{
        if(!this.open){
          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(_24){
  var s=this.ns4?this.container:this.container.style;s.visibility=_24?"visible":"hidden";
  };
ypSlideOutMenu.prototype.moveTo=function(p){
  this.style["left"]=p+"px";
  };
ypSlideOutMenu.prototype.getPos=function(c){
  return parseInt(this.style[c]);
  };
ypSlideOutMenu.prototype.onactivate=function(){
  };
ypSlideOutMenu.prototype.ondeactivate=function(){
  };
