// ultimate browser sniffer from netscape
// see http://developer.netscape.com/docs/examples/javascript/browser_type.html for docs

// convert all characters to lowercase to simplify testing 
var agt=navigator.userAgent.toLowerCase(); 

// *** BROWSER VERSION *** 
// Note: On IE5, these return 4, so use is_ie5up to detect IE5. 
var is_major = parseInt(navigator.appVersion); 
var is_minor = parseFloat(navigator.appVersion); 

// Note: Opera and WebTV spoof Navigator.  We do strict client detection. 
// If you want to allow spoofing, take out the tests for opera and webtv. 
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
            && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) 
            && (agt.indexOf('webtv')==-1)); 
var is_nav2 = (is_nav && (is_major == 2)); 
var is_nav3 = (is_nav && (is_major == 3)); 
var is_nav4 = (is_nav && (is_major == 4)); 
var is_nav4up = (is_nav && (is_major >= 4)); 
var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) || 
                      (agt.indexOf("; nav") != -1)) ); 
var is_nav5 = (is_nav && (is_major == 5)); 
var is_nav5up = (is_nav && (is_major >= 5)); 

var is_ie   = (agt.indexOf("msie") != -1); 
var is_ie3  = (is_ie && (is_major < 4)); 
var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) ); 
var is_ie4up  = (is_ie  && (is_major >= 4)); 
var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) ); 
var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4); 

// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser 
// or if this is the first browser window opened.  Thus the 
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable. 
var is_aol   = (agt.indexOf("aol") != -1); 
var is_aol3  = (is_aol && is_ie3); 
var is_aol4  = (is_aol && is_ie4); 

var is_opera = (agt.indexOf("opera") != -1); 
var is_webtv = (agt.indexOf("webtv") != -1); 

// *** JAVASCRIPT VERSION CHECK *** 
var is_js; 
if (is_nav2 || is_ie3) is_js = 1.0 
else if (is_nav3 || is_opera) is_js = 1.1 
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2 
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3 
else if (is_nav5) is_js = 1.4 
// NOTE: In the future, update this code when newer versions of JS 
// are released. For now, we try to provide some upward compatibility 
// so that future versions of Nav and IE will show they are at 
// *least* JS 1.x capable. Always check for JS version compatibility 
// with > or >=. 
else if (is_nav && (is_major > 5)) is_js = 1.4 
else if (is_ie && (is_major > 5)) is_js = 1.3 
// HACK: no idea for other browsers; always check for JS version with > or >= 
else is_js = 0.0; 


/*****************************************************
* 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 = 350;
ypSlideOutMenu.hideDelay = 1000;
ypSlideOutMenu.minCPUResolution = 10;
function ypSlideOutMenu(id, dir, left, top, width, height, activediv)  
{
    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.activediv = activediv
	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
	d.write('<style type="text/css">')
	d.write('#' + this.id + 'Container { visibility:hidden; ')
	d.write('top: 0px; ')
	d.write('left: 0px; ')
	d.write('margin: ' + top + 'px 0px 0px ' + left + '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 + ' ' + height + ' 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 + "');")
	if (this.id == this.activediv) this.ondeactivate(); // ypSlideOutMenu.showMenu(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);
    }
}

var mY;
var mX;
if (is_nav)
{
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove=MouseMove;
}

function MouseMove(e) {
    mX= e.pageX;
    mY= e.pageY;
}


ypSlideOutMenu.hideMenu = function(id)
{
    var obj = ypSlideOutMenu.Registry[id]
    var m_o = id.substr(4,id.length- 4);
    
    if (is_nav4 && mX-obj.container.left<obj.container.clip.width && mX>obj.container.left && mY>=mtop && mY<mtop+obj.container.clip.height)
    {
	// swon('m'+m_o,'m'+m_o)
	
	return;
    }	
    // swon('m'+m_o,'mr'+m_o)
    
    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)
    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" ? "left" : "top"] = this.ns4 ? p : p + "px"
}
ypSlideOutMenu.prototype.getPos = function(c) {
    return parseInt(this.style[c])
}

var ta;
    
ypSlideOutMenu.prototype.onactivate = function() { 
    clearTimeout(ta); 
}
ypSlideOutMenu.prototype.ondeactivate = function() {  
    ta = setTimeout("ypSlideOutMenu.showMenu('"+this.activediv+"')",'500');  
}

//var mtop= document.layers  ? 92 : 92;
var mtop = 1;
var mwidth = 450;
var mheight = 30;
//This sets the size and position of each drop-down.
/*
  new ypSlideOutMenu("menu1", "down", 10, mtop, mwidth, 205),
  new ypSlideOutMenu("menu2", "down", 98, mtop, mwidth, 55),
  new ypSlideOutMenu("menu3", "down", 186, mtop, mwidth, 70),
  new ypSlideOutMenu("menu4", "down", 274, mtop, mwidth, 85),
  new ypSlideOutMenu("menu5", "down", 362, mtop, mwidth, 100)
  new ypSlideOutMenu("menu6", "down", 450, mtop, mwidth, 100)		
*/	
/**********************************
End of drop down menus
**********************************/
