bmenu_active = new Array();
bmenu_timeoutArray = new Array();
bmenu_current = 0;
bmenu_last = 0;

function bmenu_getCoord(thisObj, axis) {
	// set coord to zero (default offset is zero for any object)
	var thisCoord = 0;
	while (thisObj.offsetParent) {
		if (axis == "x") {
			thisCoord += parseInt(thisObj.offsetLeft);
		} else if (axis == "y") {
			thisCoord += parseInt(thisObj.offsetTop);
		}
		thisObj = thisObj.offsetParent;
	}
	return thisCoord;
}

function bmenu_activateElement(bmenu_id) {
	// define the element locally
	var thisElement = document.getElementById('bmenu' + bmenu_id);
	if (!thisElement) {
		alert('bmenu' + bmenu_id);
	}
	// turn cell on
	newClass = thisElement.className.substr(0, thisElement.className.lastIndexOf('_')) + '_on';
	thisElement.className = newClass;
}

function bmenu_activateChild(bmenu_id) {
	// set as active
	bmenu_active[bmenu_id] = 1;
	// redefine cell
	var thisElement = document.getElementById('bmenu' + bmenu_id);
	// get submenu, if one exists
	var thisSubmenu = document.getElementById('bmenu_span' + bmenu_id);
	if (thisSubmenu) {
		// first set the coords
		// CUSTOM: set menu coords here
		thisX = parseInt(bmenu_getCoord(thisElement, 'x'));
		thisY = parseInt(bmenu_getCoord(thisElement, 'y')) + parseInt(thisElement.height) + 17;
		// assign to the cell
		thisSubmenu.style.left = thisX;
		thisSubmenu.style.top = thisY;
		thisSubmenu.style.position = "absolute";
		thisSubmenu.style.display = "inline";
	}
}

function bmenu_rollover(bmenu_id) {
	if (bmenu_last != bmenu_id) {
		clearInterval(bmenu_timeoutArray[bmenu_last]);
		bmenu_timeout(bmenu_last);
	}
	//alert("rollover");
	// activate element
	bmenu_activateElement(bmenu_id);
	// set element as current and last
	bmenu_current = bmenu_id;
	bmenu_last = bmenu_id;
	// activate child
	bmenu_activateChild(bmenu_id);
	// activate parents
	bmenu_activateParents(bmenu_id);
	// alert("Final coord: " + bmenu_getCoord('cell' + cell_id, 'y'));

}

function bmenu_rollout(bmenu_id) {
	//alert("rollout");
	// erase the current
	bmenu_current = 0;
	// set the item as inactive
	bmenu_active[bmenu_id] = 0;
	// begin timeout for rollout
	bmenu_timeoutArray[bmenu_id] = setTimeout("bmenu_timeout('" + bmenu_id + "')", 100);
}

function bmenu_deactivateElement(bmenu_id) {
	// define the element locally
	var thisElement = document.getElementById('bmenu' + bmenu_id);
	// turn cell on
	newClass = thisElement.className.substr(0, thisElement.className.lastIndexOf('_')) + '_off';
	thisElement.className = newClass;
}

function bmenu_deactivateChild(bmenu_id) {
	// get submenu, if one exists
	var thisSubmenu = document.getElementById('bmenu_span' + bmenu_id);
	if (thisSubmenu) {
		// assign style to the cell
		thisSubmenu.style.position = "absolute";
		thisSubmenu.style.display = "none";
	}
}

function bmenu_activateParents(bmenu_id) {
	var cellParents = bmenu_id.split('_');
	var thisParent = "";
	for (i in cellParents) {
		if (cellParents[i] != "") {
			thisParent += '_' + cellParents[i];
			var nextParent = thisParent + '_' + cellParents[parseInt(i)+1];
			// if (nextParent == bmenu_id) {
				bmenu_activateChild(thisParent);
				bmenu_activateElement(thisParent);
			// }
		}
	}
}

function bmenu_deactivateFull(bmenu_id) {
	// deactivate child
	bmenu_deactivateChild(bmenu_id);
	// deactivate the element
	bmenu_deactivateElement(bmenu_id);
}

function bmenu_timeout(bmenu_id) {
	if (bmenu_active[bmenu_id] == 0) {
		// deactive this element in full
		bmenu_deactivateFull(bmenu_id);
		if (bmenu_current == 0) {
			bmenu_deactivateParents(bmenu_id);
			// alert('no active element');
		}
	}
}

function bmenu_deactivateParents(bmenu_id) {
	var allCells = bmenu_id.split("_");
	var thisCell = "";
	for (var x = 1; x < allCells.length; x++) {
		thisCell += "_" + allCells[x];
		if (bmenu_id != thisCell) {
			bmenu_deactivateFull(thisCell);
		}
	}
}
