//##########################################################################################################################
//main rollover function for buttons if therey don't have child menus
//creates background rollover and shows subnav, if existent
//layer - layer object for button cell - object
//parent layer - name of layer for parent layer - string
//event_evt - event object for cell
//##########################################################################################################################
function mouseOverButtonNoChildren(layer,parentLayer,event_evt)
{
	if((detect_obj.is_ie && !layer.contains(event_evt.fromElement))||((detect_obj.is_nav6up||detect_obj.is_opera) && !containsNN6(layer, event_evt.relatedTarget)))
	{
		//stop and reset timer
		Stop(); Reset();
		
		//hide all open child menus
		killOpenMenus(parentLayer);
		
		//roll over effect for button (backgorundbecomes white)
		on(layer)
	}	
}

//##########################################################################################################################
//main rollover function for buttons
//creates background rollover and shows subnav, if existent
//layer - layer object for button cell - object
//childLayer - name of layer object for child layer - string
//parent layer - name of layer for parent layer - string
//event_evt - event object for cell
//##########################################################################################################################
function mouseOverButton(layer,position_int,childLayer,parentLayer,event_evt)
{
	//command will not be executed for tags inside the tag that called the function
	if((detect_obj.is_ie && !layer.contains(event_evt.fromElement))||detect_obj.is_nav4||((detect_obj.is_nav6up||detect_obj.is_opera) && !containsNN6(layer, event_evt.relatedTarget)))
	{
		//stop and reset timer
		Stop(); Reset();
		
		//if child menu is open, ignore command
		if(gLayer(childLayer)&&eval("m"+childLayer)._visible)
			return;
		
		//hide all open child menus
		killOpenMenus(parentLayer);
		
		//roll over effect for button (backgorundbecomes white)
		on(layer)
				
		//if there is a child menu
		if(gLayer(childLayer))
		{
			//netscape 4
			if(detect_obj.is_nav4)
			{
				//position it
				document.eval(childLayer).top = eval("m"+parentLayer)._y + layer.top + 7;
		
				//update positioning on the object level
				eval("m"+childLayer)._y = eval("m"+parentLayer)._y + layer.top +7;
			}
			else
			{
				//if ie
				if(detect_obj.is_ie)
				{
					//if mac
					if(detect_obj.is_mac)
					{
						//position it
						gLayer(childLayer).pixelTop = eval("m"+parentLayer)._y + layer.offsetTop + 5;
						//update positioning on the object level
						eval("m"+childLayer)._y = eval("m"+parentLayer)._y + layer.offsetTop +5;
					}	
					else
					{	
						//windows
						//position it
						gLayer(childLayer).pixelTop = eval("m"+parentLayer)._y + layer.offsetParent.offsetTop + 5;
						//update positioning on the object level
						eval("m"+childLayer)._y = eval("m"+parentLayer)._y + layer.offsetParent.offsetTop + 5;
					}
				}	
				else
				{	
					////netscape, mozilla, opera
					//position it
					gLayer(childLayer).top = eval("m"+parentLayer)._y + layer.offsetParent.offsetTop + 5;	
					//update positioning on the object level
					eval("m"+childLayer)._y = eval("m"+parentLayer)._y + layer.offsetParent.offsetTop + 5;
				}	
						
			}
			
			//show it
			eval("m"+childLayer).show();
			
			//save current cell in the cell property of the current items object
			eval("m"+parentLayer).items[position_int]._cell = layer;
		}
	
	}
}

//close all open menus starting wit the current menu (parentLayer)
function killOpenMenus(parentLayer)
{
	//counter
	var i = 0;
		
		
		for(i=0;i<eval("m"+parentLayer)._size;i++)
		{
			//if there is an open menu
			if(eval("m"+parentLayer).items[i]._hasChildren && eval("m"+parentLayer).items[i]._child._visible)
			{	
				//kill it			
				eval("m"+parentLayer).items[i]._child.hide();
				break;
			}
		}
}

//##########################################################################################################################
//main rolloutfunction for buttons that don't have child nodes
//layer - layer object for button cell - object
//event_evt - event object for cell
//##########################################################################################################################
function mouseOutButtonNoChildren(layer,event_evt)
{
	//command will not be executed for tags inside the tag that called the function
	if((detect_obj.is_ie && !layer.contains(event.toElement))||((detect_obj.is_nav6up||detect_obj.is_opera) && !containsNN6(layer, event_evt.relatedTarget)))
	{
		off(layer);
		Start();
	}	
	
}

//##########################################################################################################################
//main rolloutfunction for buttons 
//layer - layer object for button cell - object
//childLayer - name of layer object for child layer - string
//event_evt - event object for cell
//##########################################################################################################################
function mouseOutButton(layer,event_evt)
{
	//command will not be executed for tags inside the tag that called the function
	if((detect_obj.is_ie && !layer.contains(event.toElement))||((detect_obj.is_nav6up||detect_obj.is_opera) && !containsNN6(layer, event_evt.relatedTarget)))
		Start();
}





//rezolves browser specific issue for rollovers and nested layers - netscape 6+
//container - object of exterior tags
//containee - events object
function containsNN6 (container, containee) 
{
  var isParent = false;
  do 
  {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}


