/************************************************************
/   Stealthmenu v2.1                                        /
/   Copyright 2000 - 2002, All rights reserved              /
/   A script by: Michael van Ouwerkerk (13thparallel.org)   /
************************************************************/

// Netscape 4 must reload on resize to restore the css.
if (document.layers) {
    scrX = innerWidth;
	scrY = innerHeight;
    onresize = function() {
		if (scrX != innerWidth || scrY != innerHeight) history.go(0);
	}
}

var px = document.layers || window.opera ? "" : "px";

var Stealthmenu = {
	rolloverspace : 20,
	stylestring : '<style type="text/css">.sub a:hover {color: #fff; font-weight: 700; font-style: italic; text-decoration: none;}</style>',
	time : 250,
	timer1 : null,
	timer2 : null,
	sub : null,
	currentnum : null,
	loaded : false,
	canvas : null,
		
	init : function() {
		if (this.loaded || (!document.getElementById && !document.all && !document.layers)) return;
		
		var sub = new Array();
		
		for (var i = 0; i < 1000; i++) {
			
			// create the array of objects
			if (!this.getElm("divSub" + i)) break;
			sub[i] = new this.make("divSub" + i);
			
			// attach mouseover function
			sub[i].elm.onmouseover = function() {
				clearTimeout(Stealthmenu.timer1);
				clearTimeout(Stealthmenu.timer2);
			}
			
			// attach mouseout function
			sub[i].elm.onmouseout = function() {
				Stealthmenu.timer2 = setTimeout("Stealthmenu.hideCurrent()", Stealthmenu.time);
			}
			
			// resize the layers to add rolloverspace
			if (sub[i].elm.children && sub[i].elm.children[0].offsetWidth) {
				sub[i].elm.children[0].width = sub[i].elm.children[0].offsetWidth + this.rolloverspace + px;
			}
			else if (sub[i].elm.getElementsByTagName && sub[i].elm.getElementsByTagName("table")[0].offsetWidth) {
				sub[i].elm.getElementsByTagName("table")[0].width = sub[i].elm.getElementsByTagName("table")[0].offsetWidth + this.rolloverspace + px;
			}
			
			// write down the linkhover style
			if (document.getElementById) document.write(this.stylestring);
		}
		
		this.sub = sub;
		this.loaded = true;
		if (!document.layers) window.onresize = Stealthmenu.positionIt;
		setTimeout("Stealthmenu.positionIt()", 1);
	},
	
	positionIt : function() {
		var canvas = Stealthmenu.canvas = new Stealthmenu.getCanvas();
		
		/*
		if (canvas.w <= 765) {		
			Stealthmenu.sub[6].css.left = 177 + px;
			Stealthmenu.sub[7].css.left = 238 + px;
			Stealthmenu.sub[8].css.left = 293 + px;
			Stealthmenu.sub[9].css.left = 364 + px;
			Stealthmenu.sub[10].css.left = 445 + px;
		}
		else {
			var space = (canvas.w - 765 - (document.layers ? 18 : 0)) * 0.5;
			Stealthmenu.sub[6].css.left = 177 + space + px;
			Stealthmenu.sub[7].css.left = 238 + space + px;
			Stealthmenu.sub[8].css.left = 293 + space + px;
			Stealthmenu.sub[9].css.left = 364 + space + px;
			Stealthmenu.sub[10].css.left = 445 + space + px;
		}
		*/
	},
	
	show : function(num) {
		if (!this.loaded || !this.sub[num]) return;
		clearTimeout(this.timer2);
		clearTimeout(this.timer1);
		if (this.currentnum != num) this.hideCurrent();
		this.hideFloaters(this.sub[num].elm, "select");
		this.hideFloaters(this.sub[num].elm, "iframe");
		this.sub[num].css.visibility = "visible";
		this.currentnum = num;
		if (document.layers) setTimeout("clearTimeout(Stealthmenu.timer2)", this.time / 2);
	},
	
	hide : function() {
		if (!this.loaded) return;
		this.timer1 = setTimeout("Stealthmenu.hideCurrent()", this.time);
	},
	
	hideCurrent : function() {
		if (!this.loaded) return;
		if (this.currentnum != null) this.sub[this.currentnum].css.visibility = "hidden";
		this.showFloaters("select");
		this.showFloaters("iframe");
		this.currentnum = null;
	},
	
	make : function(id) {
		this.elm = Stealthmenu.getElm(id);
		this.css = document.layers ? this.elm : this.elm.style;
	},

	getElm : function(id) {
		if (document.getElementById) return document.getElementById(id);
		else if (document.all) return document.all[id];
		else if (document.layers) return this.getElmAux(id);
		else return null;
	},
	
	getElmAux : function(id, d) {
		if (!d) d = document;
		var layer = d.layers[id];
		for (var i = 0; !layer && i < d.layers.length; i++) layer = this.getElmAux(id, d.layers[i].document);
		return layer;
	},
	
	getCanvas : function() {
		if (document.width) this.w = document.width;
		else if (document.documentElement && document.documentElement.clientWidth) this.w = document.documentElement.clientWidth;
		else if (document.body && document.body.clientWidth) this.w = document.body.clientWidth;
		else if (window.innerWidth) this.w = window.innerWidth;
		else this.w = 0;
		
		if (document.height) this.h = document.height;
		else if (document.documentElement && document.documentElement.clientHeight) this.h = document.documentElement.clientHeight;
		else if (document.body && document.body.clientHeight) this.h = document.body.clientHeight;
		else if (window.innerHeight) this.h = window.innerHeight;
		else this.h = 0;
		return this;
	}
}

Stealthmenu.hideFloaters = function(elm, tags) {
	if (!document.getElementsByTagName || !elm.offsetWidth || !elm.offsetHeight) return;
	var floaters = document.getElementsByTagName(tags);
	var x1 = elm.offsetLeft;
	var x2 = elm.offsetLeft + elm.offsetWidth;
	var y1 = elm.offsetTop;
	var y2 = elm.offsetTop + elm.offsetHeight;
	var x = 0;
	var y = 0;
	
	for (var i = 0; i < floaters.length; i++) {
		x = getPageLeft(floaters[i]);
		y = getPageTop(floaters[i]);
		if (x+floaters[i].offsetWidth > x1 && x < x2 && y+floaters[i].offsetHeight > y1 && y<y2) {
			floaters[i].style.visibility = "hidden";
		}
	}
}

Stealthmenu.showFloaters = function(tags) {
	if (!document.getElementsByTagName) return;
	var floaters = document.getElementsByTagName(tags);
	for (var i = 0; i < floaters.length; i++) floaters[i].style.visibility = "visible";
}

function getPageLeft(elm) {
	var x = 0;
	while (elm.offsetParent && typeof elm.offsetLeft != "undefined") {
		x += elm.offsetLeft;
		elm = elm.offsetParent;
	}
	return x;
}

function getPageTop(elm) {
	var y = 0;
	while (elm.offsetParent && typeof elm.offsetTop != "undefined") {
		y += elm.offsetTop;
		elm = elm.offsetParent;
	}
	return y;
}

Stealthmenu.init();

// end