
function bxMenuInit(menuid){
	
	var i, j, node, child, parent, version, offset;
	
	if (!document.getElementById)  {    return true;  }
	if (document.layers) document.captureEvents(Event.MOUSEMOVE);

	var is_ie=false;
	if (bx_browserType() == 'ie') is_ie=true;

	var menudiv = document.getElementById(menuid);


	
	var ul = new Array();
	for (i = 0; i < menudiv.childNodes.length; i++)  {
		node = menudiv.childNodes[i];
		if (node.nodeName.toUpperCase() == 'UL')  { ul[ul.length] = node; }
	}

			 
	var ul_gt_li = new Array();
	for (i = 0; i < ul.length; i++)  {
		node = ul[i];

		for (j = 0; j < node.childNodes.length; j++) {
			child = node.childNodes[j];
			if (child.nodeName.toUpperCase() == 'LI')  {
				ul_gt_li[ul_gt_li.length] = child;
				child.style.display = 'inline';
				child.style.listStyle = 'none';
				child.style.position = 'static';
			}
		}
	}


	var ul_gt_li_gt_ul = new Array();
	for (i = 0; i < ul_gt_li.length; i++) { //ul_gt_li.length = 8 LI
		node = ul_gt_li[i];
		for (j = 0; j < node.childNodes.length; j++) { //node.childNodes.length = 2 (A and UL)
			child = node.childNodes[j];
			if (child.nodeName.toUpperCase() == 'UL'){
				ul_gt_li_gt_ul[ul_gt_li_gt_ul.length] = child;
				
				parent = child.parentNode; // the LI
			
				parent.onmouseover = function (e) {
					if(is_ie) { bx_hideElement('SELECT', this); }
//					bx_hideElement("SELECT", this);
//					bx_hideElement("IFRAME", this);
//					bx_hideElement("OBJECT", this);

					var i;
					var child;
					var point;
					for (i = 0; i < this.childNodes.length; i++) {
						child = this.childNodes[i];
						if (child.nodeName.toUpperCase() == 'UL') {
							point = bxGetPageXY(this);
							bxSetPageXY(child, point.x, point.y + this.offsetHeight);
							child.style.visibility = 'visible';
						}
					}
					return false;
				};
	
				parent.onmouseout = function (e) {
				
					if(is_ie) bx_showElement('SELECT', this);
//					if(is_ie) setTimeout("bx_showElement('SELECT',this)", 200);
				
					var i;
					var child;
					for (i = 0; i < this.childNodes.length; i++) { //this.childNodes.length=3 (the elements of LI: UL, A, #text)
						child = this.childNodes[i];
						if (child.nodeName.toUpperCase() == 'UL') {  
							child.style.visibility = 'hidden'; 
						}
					}
					return false;
				};
		
			}
		}
	}
	
	return true;
}

function bxGetStyleProp(obj, style){
  var value = obj.style[style];
  if (!value) {
    if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
      value = document.defaultView.
        getComputedStyle(obj, "").getPropertyValue(style);
    } else if (obj.currentStyle) { // IE
      value = obj.currentStyle[style];
    } else {
      value = obj.style[style];
    }
  }
  return value;
}

function bxGetAbsolutePos(el) {
	var r = { x: el.offsetLeft, y: el.offsetTop };
	if (el.offsetParent) {
		var tmp = bxGetAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};


function bxGetPageXY(elm){
  var point = { x: 0, y: 0 };
  while (elm)  {    point.x += elm.offsetLeft;    point.y += elm.offsetTop;    elm = elm.offsetParent;  }
  return point;
}

function bxSetPageXY(elm, x, y){
  var parentXY = {x: 0, y: 0 };
  if (elm.offsetParent)  {    parentXY = bxGetPageXY(elm.offsetParent);  }
  elm.style.left = (x - parentXY.x) + 'px';
  elm.style.top  = (y - parentXY.y) + 'px';
}


function catchevent() {
	eventSrcID=(event.srcElement)?event.srcElement.id:'undefined';
	eventtype=event.type;
	status=eventSrcID+' has received a '+eventtype+' event.';
}


function bx_showElement(elmID, eMenu) //elmID = "SELECT"
{
//	window.defaultStatus = eMenu.id;

/*
	var p = bxGetAbsolutePos(eMenu);
	var x1 = p.x;
	var x2 = eMenu.offsetWidth + x1;
	var y1 = p.y;
	var y2 = eMenu.offsetHeight + y1;

	var obj;
	for (j = 0; j < eMenu.all.tags('UL').length; j++){
		obj = eMenu.all.tags('UL')[j];
		
		p = bxGetAbsolutePos(obj);
		if(p.x < x1) x1 = p.x;
		if(p.y < y1) y1 = p.y;
		if(obj.offsetWidth + p.x > x2) x2 = obj.offsetWidth + p.x;
		if(obj.offsetHeight + p.y > y2) y2 = obj.offsetHeight + p.y;
	}

// Display any element that was hidden
	var objs = document.all.tags(elmID);
	for (j = 0; j < objs.length; j++){
		obj = objs[j];
		if (! obj || ! obj.offsetParent) continue;

		p = bxGetAbsolutePos(obj);
		C1 = p.x;
		C2 = obj.offsetWidth + C1;
		D1 = p.y;
		D2 = obj.offsetHeight + D1;

		var bd = 0;
		if ((! (C1 > x2-bd || C2 < x1+bd || D1 > y2-bd || D2 < y1+bd)) || 
			(! (x1 > C2-bd || x2 < C1+bd || y1 > D2-bd || y2 < D1+bd)))
			continue;

		obj.style.visibility = "";
	}
*/

// Display any element that was hidden
	var objs = document.all.tags(elmID);
	for (j = 0; j < objs.length; j++){
		obj = objs[j];
		if (! obj || ! obj.offsetParent) continue;

		obj.style.visibility = "";
	}

}

function bx_hideElement(elmID, eMenu)  //elmID = "SELECT", eMenu is an object of LI
{
	var obj;

	var p = bxGetAbsolutePos(eMenu);
	var x1 = p.x;
	var x2 = eMenu.offsetWidth + x1;
	var y1 = p.y;
	var y2 = eMenu.offsetHeight + y1;


	for (j = 0; j < eMenu.all.tags('UL').length; j++){
		obj = eMenu.all.tags('UL')[j];
		
		p = bxGetAbsolutePos(obj);
		if(p.x < x1) x1 = p.x;
		if(p.y < y1) y1 = p.y;
		if(obj.offsetWidth + p.x > x2) x2 = obj.offsetWidth + p.x;
		if(obj.offsetHeight + p.y > y2) y2 = obj.offsetHeight + p.y;
	}


	// Hide any element that overlaps with the dropdown menu
	var C1, C2, D1, D2;
	var objs = document.all.tags(elmID);
	for (j = 0; j < objs.length; j++){
		obj = objs[j];
		p = bxGetAbsolutePos(obj);
		C1 = p.x;
		C2 = obj.offsetWidth + C1;
		D1 = p.y;
		D2 = obj.offsetHeight + D1;

		if ((! (C1 > x2 || C2 < x1 || D1 > y2 || D2 < y1)) || 
			(! (x1 > C2 || x2 < C1 || y1 > D2 || y2 < D1))){
			obj.style.visibility = "hidden";
		}
//	window.defaultStatus = eMenu.id + '==> X(' + x1 + ',' + x2 + '), Y(' + y1 + ',' + y2 + ')' + '==> X(' + C1 + ',' + C2 + '), Y(' + D1 + ',' + D2 + ')'; 
	}
}

function bx_browserType()
{
	var agt=navigator.userAgent.toLowerCase();
	
	if (agt.indexOf('netscape') != -1) return 'ns';
	if (agt.indexOf('msie') != -1) return 'ie';
	
	return 'mo';  
}

function isMac()
{
//return true;
  var agt=navigator.userAgent.toLowerCase();
  if (agt.indexOf('mac') != -1) return true;
  else return false;
}

function isOpera()
{
//return true;
  var agt=navigator.userAgent.toLowerCase();
  if (agt.indexOf('opera') != -1) return true;
  else  return false;
}

