/* http://ypslideoutmenus.sourceforge.net/ */
ypSlideOutMenu.Registry = []; 
ypSlideOutMenu.aniLen = 250; 
ypSlideOutMenu.hideDelay = 1000; 
ypSlideOutMenu.minCPUResolution = 10; 
/*******************
 Args:
 id - name of the menu
 _2 - which direction should the menu slide? left, right, or down
 _3 - left position (?)
 _4 - position of the top of the drop down menu
 _5 - menu width
 _6 - 
********************/

function ypSlideOutMenu(id, _2, _3, _4, _5, _6) {
   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 = _2; 
      this.orientation = _2 == "left" || _2 == "right" ? "h" : "v"; 
      this.dirType = _2 == "right" || _2 == "down" ? "-" : "+"; 
      this.dim = this.orientation == "h" ? _5 : _6; 
      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 cssStyle = ""; 
      cssStyle += "#" + this.id + "Container{visibility:hidden;"; 
      cssStyle += "left:" + _3 + "px;"; 
      cssStyle += "top:" + _4 + "px;"; 
      cssStyle += "overflow:hidden;z-index:10000;}"; 
      cssStyle += "#" + this.id + "Container,#" + this.id + "Content{position:absolute;"; 
      cssStyle += "width:" + _5 + "px;"; 
      cssStyle += "height:" + _6 + "px;"; 
      cssStyle += "clip:rect(0 " + _5 + " " + _6 + " 0);"; 
      cssStyle += "}"; 
      this.css = cssStyle; 
      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 _10 = this.id + "Container"; 
   var _11 = this.id + "Content"; 
   var _12 = this.dom ? d.getElementById(_10) : this.ie ? d.all[_10] : d.layers[_10]; 
   if(_12) {
      var _13 = this.ns4 ? _12.layers[_11] : this.ie ? d.all[_11] : d.getElementById(_11); 
      }
   var _14; 
   if(!_12 ||!_13) {
      window.setTimeout(this.gRef + ".load()", 100); 
      }
   else {
      this.container = _12; 
      this.menu = _13; 
      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]; 
   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 && 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(_24) {
   var s = this.ns4 ? this.container : this.container.style; 
   s.visibility = _24 ? "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() {
   }; 

