drhusSlideMenu.Registry = []
drhusSlideMenu.aniLen = 700
drhusSlideMenu.hideDelay = 200
drhusSlideMenu.minCPUResolution = 10
// constructor
function drhusSlideMenu(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.wait = 1000
this.id = id
this.dir = dir
this.orientation = dir == "right" || dir == "left" ? "h" : "v"
this.dirType = dir == "left" || 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 = "drhusSlideMenu_"+id
eval(this.gRef+"=this")
drhusSlideMenu.Registry[id] = this
var d = document
var strCSS = "";
strCSS += '#' + this.id + 'Container { visibility:hidden; '
strCSS += 'right:' + right + '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()
}
}
drhusSlideMenu.writeCSS = function() {
document.writeln('<style type="text/css">');
for (var id in drhusSlideMenu.Registry) {
document.writeln(drhusSlideMenu.Registry[id].css);
}
document.writeln('</style>');
}
drhusSlideMenu.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) / drhusSlideMenu.aniLen / drhusSlideMenu.aniLen
// set event handlers.
if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
this.menu.onmouseover = new Function("drhusSlideMenu.showMenu('" + this.id + "')")
this.menu.onmouseout = new Function("drhusSlideMenu.hideMenu('" + this.id + "')")
//set initial state
this.endSlide()
}
}
drhusSlideMenu.showMenu = function(id)
{
var reg = drhusSlideMenu.Registry
var obj = drhusSlideMenu.Registry[id]
if (obj.container) {
obj.over = true
for (menu in reg) if (id != menu) drhusSlideMenu.hide(menu)
if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }
if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)
}
}
drhusSlideMenu.hideMenu = function(id)
{
var obj = drhusSlideMenu.Registry[id]
if (obj.container) {
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = window.setTimeout("drhusSlideMenu.hide('" + id + "')", drhusSlideMenu.hideDelay);
}
}
drhusSlideMenu.hideAll = function()
{
var reg = drhusSlideMenu.Registry
for (menu in reg) {
drhusSlideMenu.hide(menu);
if (menu.hideTimer) window.clearTimeout(menu.hideTimer);
}
}
drhusSlideMenu.hide = function(id)
{
var obj = drhusSlideMenu.Registry[id]
obj.over = false
if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
obj.hideTimer = 0
if (obj.open && !obj.aniTimer) obj.startSlide(false)
}
drhusSlideMenu.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()", drhusSlideMenu.minCPUResolution)
}
drhusSlideMenu.prototype.slide = function() {
var elapsed = (new Date()).getTime() - this.startTime
if (elapsed > drhusSlideMenu.aniLen) this.endSlide()
else {
var d = Math.round(Math.pow(drhusSlideMenu.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)
}
}
drhusSlideMenu.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)
}
}
drhusSlideMenu.prototype.setVisibility = function(bShow) {
var s = this.ns4 ? this.container : this.container.style
s.visibility = bShow ? "visible" : "hidden"
}
drhusSlideMenu.prototype.moveTo = function(p) {
this.style[this.orientation == "h" ? "right" : "top"] = this.ns4 ? p : p + "px"
}
drhusSlideMenu.prototype.getPos = function(c) {
return parseInt(this.style[c])
}
drhusSlideMenu.prototype.onactivate = function() { }
drhusSlideMenu.prototype.ondeactivate = function() { }

new drhusSlideMenu("menu1", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu2", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu3", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu4", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu5", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu6", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu7", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu8", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu9", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu10", "right", 16, 167, 540, 38)
new drhusSlideMenu("menu11", "right", 16, 167, 540, 38)
    drhusSlideMenu.writeCSS();