//initiate
ot_d=document;
ot_ua=navigator.userAgent;
var dom = (ot_d.getElementById) ? true : false;
var ns5 = ((ot_ua.indexOf("Gecko")>-1) && dom);
var ie5 = ((ot_ua.indexOf("MSIE")>-1) && dom);
var ns4 = (ot_d.layers && !dom);
var ie4 = (ot_d.all && !dom);
var safari = ((ot_ua.indexOf("Safari")>-1) && dom);
var opera = ((ot_ua.indexOf("opera")>-1) && window.opera);

var nodyn = (!ns5 && !ie4 && !ie5);

//avoid errors older browsers
if (nodyn) { event = "nope" }

var tipFollowMouse= true;
var showTimeout=500;
var leaveTimeout=500;

var offX= 5;
var offY= 5;

var tooltip, tipcss;
var init = 0;

function initTip() {

 if (nodyn) return;
 tooltip = (ie4)? ot_d.all['tipDiv']: (ie5||ns5)?
   ot_d.getElementById('tipDiv'): null;
 tipcss = tooltip.style;
 if (!safari) tipcss.position = 'absolute';
 else tipcss.position = 'relative'; //bugfix safari
 tipcss.visibility = 'hidden';
 tipcss.zIndex = 100;

 if (tooltip&&tipFollowMouse) {
   ot_d.onmousemove = trackMouse;
 }
 init = 1;

}

/*****************************************************
* ypSlideOutMenu
* 3/04/2001
*
* a nice little script to create exclusive, slide-out
* menus for ns4, ns6, mozilla, opera, ie4, ie5 on
* mac and win32. I've got no linux or unix to test on but
* it should(?) work...
*
* --youngpup--
*****************************************************/
ypSlideOutMenu.Registry = []
ypSlideOutMenu.aniLen = 500
ypSlideOutMenu.hideDelay = 500
ypSlideOutMenu.minCPUResolution = 5

function ypSlideOutMenu(id, dir, right, top, width, height) {
 this.ie = document.all ? 1 : 0
 this.ns4 = document.layers ? 1 : 0
 this.dom = document.getElementById ? 1 : 0

 if (this.ie || this.ns4 || this.dom) {
  this.id = id
  this.dir = dir
  this.right = right
  this.top = top
  this.width = width
  this.height = height

  this.orientation = dir == "right" || 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
  d.write('<style type="text/css">')
  d.write('#' + this.id + 'Container { visibility:hidden; ')
  d.write('z-index:530; ')
  d.write('left:' + right + 'px; ')
  d.write('top:' + top + 'px; ')
  d.write('overflow:hidden; }')
  d.write('#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; ')
  d.write('width:' + width + 'px; ')
  d.write('height:' + height + 'px; ')
  d.write('clip:rect(0 ' + width + 'px' + ' ' + height + 'px' + ' 0); ')
  d.write('}')
  d.write('</style>')
  this.load()
  }
}

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]
 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.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(open) {
 this[open ? "onactivate" : "ondeactivate"]()
 this.open = open
 if (open) this.setVisibility(true)
 this.startTime = (new Date()).getTime()
 this.aniTimer = window.setInterval(this.gRef + ".slide()", ypSlideOutMenu.minCPUResolution)
}

ypSlideOutMenu.prototype.slide = function() {
 var elapsed = (new Date()).getTime() - this.startTime
 if (elapsed > ypSlideOutMenu.aniLen) this.endSlide()
 else {
  var d = Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed, 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);

 /*
  added to hide select box
  */
 var ot_d = document;
 var winWd = (ns4)? window.innerWidth-20+window.pageXOffset:
   ot_d.body.clientWidth+ot_d.body.scrollLeft;

 ot_box_duplicate.x=winWd-this.right;
 ot_box_duplicate.y=this.top;
 ot_box_duplicate.w=this.width;
 ot_box_duplicate.h=this.height;
 ot_box_duplicate.l=0;

 if(ot_box_duplicate.onhide) eval(ot_box_duplicate.onhide);

 }
 if ((this.open && !this.over) || (!this.open && this.over)) {
  this.startSlide(this.over)
 }
}

ypSlideOutMenu.prototype.setVisibility = function(bShow) {
 var s = this.ns4 ? this.container : this.container.style
 s.visibility = bShow ? "visible" : "hidden"
}

ypSlideOutMenu.prototype.moveTo = function(p) {
 this.style[this.orientation == "h" ? "right" : "top"] = this.ns4 ? p : p + "px"
}

ypSlideOutMenu.prototype.getPos = function(c) {
 return parseInt(this.style[c])
}

ypSlideOutMenu.prototype.onactivate = function() {
 /*
  added to show select box
  */
 var ot_d = document;
 var winWd = (ns4)? window.innerWidth-20+window.pageXOffset:
   ot_d.body.clientWidth+ot_d.body.scrollLeft;

 ot_box_duplicate.x=winWd-this.right;
 ot_box_duplicate.y=this.top;
 ot_box_duplicate.w=this.width;
 ot_box_duplicate.h=this.height;
 ot_box_duplicate.l=0;

 if(ot_box_duplicate.onshow) eval(ot_box_duplicate.onshow);
}

ypSlideOutMenu.prototype.ondeactivate = function() {

}

new ypSlideOutMenu("menu1", "down", 16, 165, 179, 400);


/**********************************
End of drop down menus
**********************************/


/* ot_box_duplicate data encapsulator FIX ME DUPLICATE CODE TODO */
function ot_box_duplicate(){
 var innerToolbox=this;
 return this
}
ot_box_duplicate.x=0;
ot_box_duplicate.y=0;
ot_box_duplicate.w=0;
ot_box_duplicate.h=0;
ot_box_duplicate.l=0;
ot_box_duplicate.onshow="";
ot_box_duplicate.onhide="";
ot_box_duplicate.onconstruct="";

if(dom&&!opera){
 ot_box_duplicate.sel=0;
 //add onshow method
 ot_box_duplicate.onshow+=
   "ot_box_duplicate.hideSelect(ot_box_duplicate.x, ot_box_duplicate.y, ot_box_duplicate.w, ot_box_duplicate.h, ot_box_duplicate.l);";

 //add onhide method
 ot_box_duplicate.onhide+=
   "ot_box_duplicate.showSelect(ot_box_duplicate.x, ot_box_duplicate.y, ot_box_duplicate.w, ot_box_duplicate.h, ot_box_duplicate.l);";

 //implement
 ot_box_duplicate.hideSelect=function(x,y,w,h,l)
 {
  var selx,sely,selw,selh,i;
  if(!ot_box_duplicate.sel){
   ot_box_duplicate.sel=ot_d.getElementsByTagName("SELECT");
   ot_box_duplicate.sel.level=0;
  }
  var sel=ot_box_duplicate.sel;
  for(i=0;i<sel.length;i++){
   selx=0; sely=0; var selp;
   if(sel[i].offsetParent){
   selp=sel[i];
   while(selp.offsetParent){
    selp=selp.offsetParent; selx+=selp.offsetLeft; sely+=selp.offsetTop;}
   }
   selx+=sel[i].offsetLeft; sely+=sel[i].offsetTop
   selw=sel[i].offsetWidth; selh=sel[i].offsetHeight
   if(selx+selw>x && selx<x+w && sely+selh>y && sely<y+h){
   if(sel[i].style.visibility!="hidden"){
     sel[i].level=l;
     sel[i].style.visibility="hidden";
   }
   } else if(l<=sel[i].level) sel[i].style.visibility="visible";
  }
 }//function

 ot_box_duplicate.showSelect=function(){
  var sel=ot_box_duplicate.sel;
  for(i=0;i<sel.length;i++){
   if(sel[i].style.visibility=="hidden"){
     sel[i].level=1;
     sel[i].style.visibility="visible";
   }
  }
 }//function

}//if ns6+ or ie5+


