var DOM = (document.getElementById) ? 1 : 0;
var NS4 = (document.layers) ? 1 : 0;
// We need to explicitly detect Konqueror because Konqueror 3 sets IE = 1
var Konqueror = (navigator.userAgent.indexOf("Konqueror") > -1) ? 1 : 0;
// We need to detect Konqueror 2.2 as it does not handle the window.onresize event
var Konqueror22 = (navigator.userAgent.indexOf("Konqueror 2.2") > -1 || navigator.userAgent.indexOf("Konqueror/2.2") > -1) ? 1 : 0;
var Opera = (navigator.userAgent.indexOf("Opera") > -1) ? 1 : 0;
var Opera5 = (navigator.userAgent.indexOf("Opera 5") > -1 || navigator.userAgent.indexOf("Opera/5") > -1) ? 1 : 0;
var Opera6 = (navigator.userAgent.indexOf("Opera 6") > -1 || navigator.userAgent.indexOf("Opera/6") > -1) ? 1 : 0;
var Opera56 = Opera5 || Opera6;
var IE = (navigator.userAgent.indexOf("MSIE") > -1) ? 1 : 0;
var IE = IE && !Opera;
var IE5 = IE && DOM;
var IE4 = (document.all) ? 1 : 0;
var IE4 = IE4 && IE && !DOM;




function showLayer(id)
{
   cancelHideLayer(id);
}


function cancelHideLayer(id)
{
   try
   {
      eval("window.clearTimeout(timeout_" + id + ");");
   }
   catch (e) {}
   setVisible(id);
}

function delayHideLayer(id)
{
   var delayTime = 250;
   eval("timeout_" + id + " = window.setTimeout(\"setHidden('\" + id + \"')\", delayTime);");
}

function setVisible(id)
{
   var layer  = 'menu' + id;
   var button = 'menuTop' + id;

   var X = getLeft(button);
   var Y = getTop(button) + 26;

   moveLayer(layer, X, Y);

   
	if (DOM)
		document.getElementById(layer).style.visibility = "visible";
	else if (NS4)
		document.layers[layer].visibility = "show";
	else
		document.all[layer].style.visibility = "visible";

}

function setHidden(id)
{
   var layer  = 'menu' + id;

	if (DOM)
		document.getElementById(layer).style.visibility = "hidden";
	else if (NS4)
		document.layers[layer].visibility = "hide";
	else
		document.all[layer].style.visibility = "hidden";
}



function getHeight(layer) {
	var value = 0;
	if (DOM) {	// Mozilla, Konqueror >= 2.2, Opera >= 5, IE
		object = document.getElementById(layer);
		value = object.offsetHeight;
		//while (object.tagName != "BODY" && object.offsetParent) {
		//	object = object.offsetParent;
		//	value += object.offsetHeight;
		//}
	} else if (NS4) {
		value = document.layers[layer].height;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		object = document.all[layer];
		value = object.offsetHeight;
		//while (object.tagName != "BODY") {
		//	object = object.offsetParent;
		//	value += object.offsetHeight;
		//}
	}
	return (value);
}




function getLeft(layer) {
	var value = 0;
	if (DOM) {	// Mozilla, Konqueror >= 2.2, Opera >= 5, IE
		object = document.getElementById(layer);
		value = object.offsetLeft;
		while (object.tagName != "BODY" && object.offsetParent) {
			object = object.offsetParent;
			value += object.offsetLeft;
		}
	} else if (NS4) {
		value = document.layers[layer].pageX;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		object = document.all[layer];
		value = object.offsetLeft;
		while (object.tagName != "BODY") {
			object = object.offsetParent;
			value += object.offsetLeft;
		}
	}
	return (value);
}

function getTop(layer) {
// IE 5.5 and 6.0 behaviour with this function is really strange:
// in some cases, they return a really too large value...
// ... after all, IE is buggy, nothing new
	var value = 0;
	if (DOM) {
		object = document.getElementById(layer);
		value = object.offsetTop;
		while (object.tagName != "BODY" && object.offsetParent) {
			object = object.offsetParent;
			value += object.offsetTop;
		}
	} else if (NS4) {
		value = document.layers[layer].pageY;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		object = document.all[layer];
		value = object.offsetTop;
		while (object.tagName != "BODY") {
			object = object.offsetParent;
			value += object.offsetTop;
		}
	}
	return (value);
}

function setLeft(layer, layerToAlign, x)
{   
	if (DOM && !Opera5)
		document.getElementById(layer).style.left = x + getLeft(layerToAlign);
	else if (Opera5)
		document.getElementById(layer).style.left = x + getLeft(layerToAlign);
	else if (NS4)
		document.layers[layer].left = x;
	else
		document.all[layer].style.pixelLeft = x;
}

function setTop(layer, layerToAlign, y)
{
	if (DOM && !Opera5)
		document.getElementById(layer).style.top = y + getTop(layerToAlign) - 2;
	else if (Opera5)
		document.getElementById(layer).style.top = y + getTop(layerToAlign) - 2;
	else if (NS4)
		document.layers[layer].top = y;
	else
		document.all[layer].style.pixelTop = y;
}

function moveLayer(layerId, layerToAlign, x, y)
{
	setLeft(layerId, layerToAlign, x);
	setTop(layerId, layerToAlign, y);
}