var oldMenuWhat = '';
var oldMenuTimeout = 0;
function ShowMenu(what) {
	if (oldMenuWhat > '') {
		//we haven't actually changed, just make sure we don't have a hide timeout.
		if (oldMenuWhat == what) {
			if (oldMenuTimeout) {
				clearTimeout(oldMenuTimeout);
				oldMenuTimeout = 0;
			}
			return;
		} else {
			HideMenuNow(oldMenuWhat);
		}
	}
	//console.log("Showing " + what + " (old:" + oldMenuWhat + ")");
	var nav = document.getElementById('nav'+what);
	var sub = document.getElementById('submenu'+what);
	//console.log(sub);
	nav.className = 'hover';
	if (sub && typeof sub != 'undefined') {
		sub.style.display = 'block';
		//document.getElementById("BreadCrumbs").style.display = "none";
		oldMenuWhat = what;
	} else {
		oldMenuWhat = '';
	}
}
function HideMenuNow(what) {
	//console.log("Hiding " + what);
	document.getElementById('nav'+oldMenuWhat).className = '';
	document.getElementById('submenu'+what).style.display = 'none';
	//document.getElementById("BreadCrumbs").style.display = "block";
	if (oldMenuTimeout) {
		clearTimeout(oldMenuTimeout);
		oldMenuTimeout = 0;
	}
	oldMenuWhat = '';
}
function HideMenu(what) {
	if (oldMenuTimeout) {
		clearTimeout(oldMenuTimeout);
	}
	var sub = document.getElementById('submenu'+what);
	if (sub && typeof sub != 'undefined') {
		oldMenuTimeout = setTimeout("HideMenuNow('" + what + "');", 500);
	} else {
		document.getElementById('nav'+what).className = '';
		oldMenuTimeout = 0;
	}
}

var searchBoxTimeout;
function ShowSearch() {
	if (searchBoxTimeout) clearTimeout(searchBoxTimeout);
	var searchBox = document.getElementById('searchbox');
	searchBox.style.display = "block";
	
}
function HideSearch() {
	if (searchBoxTimeout) clearTimeout(searchBoxTimeout);
	searchBoxTimeout = setTimeout(HideSearchNow, 500);
}
function HideSearchNow() {
	if (searchBoxTimeout) clearTimeout(searchBoxTimeout);
	var searchBox = document.getElementById('searchbox');
	searchBox.style.display = 'none';
}



var tipShortcuts = {
	
};
function tooltip(what) {
	var fadeInDuration = 0.5;
	var fadeOutDuration = 1;
	
	var div = document.getElementById('tooltipLayer');
	if (typeof div == 'undefined' || div == null) {
		div = document.createElement('div');
		div.setAttribute('id', 'tooltipLayer');
		div.setAttribute('onmouseover', 'fadeIn(this, ' + fadeInDuration + ');');
		div.setAttribute('onmouseout', 'fadeOut(this, ' + fadeOutDuration + ');');
		document.body.appendChild(div);
		div.id = 'tooltipLayer';
		div.onmouseover = function(){ fadeIn(this, 0.5); }
		div.onmouseout = function(){ fadeOut(this, 1); }
		div.className = 'tooltip';
	}
	while (div.childNodes.length > 0) {
		div.removeChild(div.lastChild);
	}
	div.style.width = "";
	var out = "";
	if (what.getAttribute('tiptitle')) {
		out += "<h1>" + what.getAttribute('tiptitle') + "</h1>";
	}
	var tip = what.getAttribute('tip');
	if (tip > '') {
		if (typeof tipShortcuts[tip] != 'undefined') {
			out += "<h1>" + tipShortcuts[tip][0] + "</h1>";
			out += "<div class='content'>" + tipShortcuts[tip][1] + "</div>";
		} else {
			out += "<div class='content'>" + tip + "</div>";
		}
	}
	if (out > '') {
		if (div.outerWidth > div.style.maxWidth) {
			div.style.width = div.style.maxWidth + "px";
		}
		div.style.position="absolute";
		div.style.top="0px";
		div.style.left="0px";
		div.innerHTML = out;
		if (!what.getAttribute('setMouseOutAlready')) {
			what.setAttribute('setMouseOutAlready', 1);
			var oldMouseOut = what.onmouseout;
			if (typeof oldMouseOut == 'function') {
				what.onmouseout = function(event){
					hideTip();
					oldMouseOut(event);
				}
			} else {
				what.onmouseout = hideTip;
			}
		}
		fadeIn(div, fadeInDuration);
		
		div.style.display = 'block';
		//what.style.cursor = 'help';
		var top = mouse.y + 10;
		var left = mouse.x;
		if (left > (750-div.offsetWidth)) left -= div.offsetWidth;
		div.style.top = top + "px";
		div.style.left = left + "px";
	} else {
		hideTip();
	}
}
function hideTip() {
	var fadeOutDuration = 1;
	
	var div = document.getElementById('tooltipLayer');
	fadeOut(div, fadeOutDuration);
}
function fadeIn(what, duration, oldTimeout) {
	oldTimeout = what.getAttribute('timeout');
	if (oldTimeout) {
		if (clearTimeout(oldTimeout)) {
			//what.innerHTML += "Cleared fadeIn<br>";
		}
	}
	var startTime = what.getAttribute('opacityStartTime');
	var fading = what.getAttribute('fading');
	var date = new Date();
	var now = date.getMilliseconds()/1000 + date.getSeconds() + date.getMinutes() * 60 + date.getHours() * 3600;
	var timeout;
	
	if (typeof fading == 'undefined' || fading != "+") {
		// initialization clause
		startTime = now;
		if (fading == "-") {
			startTime -= what.getAttribute("opacity") * duration;
		}
		what.setAttribute("fading","+");
		what.setAttribute('opacityStartTime', startTime);
		what.style.display = '';
	}
	var elapsed = now - startTime;
	if (duration <= 0) {
		var opacity = 1;
	} else {
		var opacity = elapsed / duration;
	}
	if (opacity >= 1) {
		// termination clause
		opacity = 1;
		what.setAttribute("opacityStartTime", 0);
		what.setAttribute("timeout", 0);
		what.setAttribute('fading', '');
	}else {
		if (opacity <= 0) {
			what.setAttribute("opacityStartTime", now);
			what.style.display='none';
		} else {
			what.style.display='';
		}
		what.setAttribute("timeout", setTimeout(function(){fadeIn(what, duration);}, duration / 20000));
	}
	// Everyone important's version
	what.style.opacity = opacity;
	// IE's version
	what.style.filter="alpha(opacity="+(opacity*100)+")";
	// Used if the direction of the fade is changed part-way through
	what.style.opacity = opacity;
	what.setAttribute('opacity', opacity);
	return timeout;
}
function fadeOut(what, duration) {
	oldTimeout = what.getAttribute('timeout');
	if (oldTimeout) {
		if (clearTimeout(oldTimeout)) {
			//what.innerHTML += "Cleared fadeOut<br>";
		}
	}
	var startTime = what.getAttribute('opacityStartTime');
	var fading = what.getAttribute('fading');
	var date = new Date();
	var now = date.getMilliseconds()/1000 + date.getSeconds() + date.getMinutes() * 60 + date.getHours() * 3600;
	var timeout;
	
	if (typeof fading == 'undefined' || fading != "-") {
		// initialization clause
		startTime = now;
		if (fading == "+") {
			startTime -= (1 - what.getAttribute("opacity")) * duration;
		}
		what.setAttribute('opacityStartTime', startTime);
		what.setAttribute("fading","-");
	}
	var elapsed = now - startTime;
	var opacity = 1.0 - (elapsed / duration);
	if (opacity <= 0) {
		// termination clause
		opacity = 0;
		what.setAttribute("opacityStartTime", 0);
		what.style.display = 'none';
		what.setAttribute("timeout", 0);
		what.setAttribute('fading', '');
	}else {
		// continuation clause
		what.setAttribute('timeout',setTimeout(function(){fadeOut(what, duration);}, duration / 20000));
	}
	// Everyone important's version
	what.style.opacity = opacity;
	// IE's version
	what.style.filter="alpha(opacity="+(opacity*100)+")";
	// Used if the direction of the fade is changed part-way through
	what.setAttribute('opacity', opacity);
	return timeout;
}
function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}

window.mouse = {x:0, y:0};
document.onmousemove = function(evt) {
	try {
	window.mouse.x = parseInt(mouseX(evt));
	window.mouse.y = parseInt(mouseY(evt));
	} catch (e){}
}
function getPosition(what) {
	//console.log(what);
	var p = {top:0, left:0, height:what.offsetHeight, width:what.offsetWidth};
	while (what.offsetParent) {
		p.top += what.offsetTop;
		p.left += what.offsetLeft;
		what = what.offsetParent;
	}
	//console.log(p);
	return p;
}



