framework.widget.helpmenu = {
init:function(helpMenuId) 
{	
	if (!framework.util.isType(helpMenuId, framework.DataType.STRING))
    {
		return framework.Status.INVALID_ELEMENT_TYPE;
    }
    var helpMenuDiv = document.getElementById(helpMenuId);   
	var helpMenu = document.getElementById(helpMenuId + "_ul");
	var helpMenuIcon;
   	if (framework.util.isUndefinedOrNull(helpMenu))
	{
		return framework.Status.ELEMENT_DOES_NOT_EXIST;
	}
	for (var index = 0; index < helpMenu.childNodes.length; index += 1)
	{
		 var menuItems = false;
		 var elementNode = helpMenu.childNodes[index];
		 if (elementNode.nodeName == 'LI' && elementNode.getAttribute('iconNode') == 'true')
		 {
		 	framework.eventmodel.addElementEvent(elementNode.id, framework.EventType.CLICK, framework.widget.helpmenu._helpMenuIconOnClickEventHandler );
		 	helpMenuIcon = elementNode;
		 }
		 else if(elementNode.nodeName == 'LI')
		 {
			for (var index2 = 0; index2 < elementNode.childNodes.length; index2 += 1)
			{   
				var node2 = elementNode.childNodes[index2];
				if (node2.nodeName == 'DIV')
				{
				    elementNode.divIndicatorId = node2.id; 
				    helpMenuIcon.divIndicatorId = node2.id; 
				}
				else if (node2.nodeName == 'UL')
				{   
				    elementNode.helpMenuItemsId = node2.id;
				    var itemCount = 0;
				    for (var index3 = 0; index3 < node2.childNodes.length; index3 += 1)
					{		
						var node3 = node2.childNodes[index3];		       		   		
						if (node3.nodeName == 'LI')
						{
						    itemCount += 1;
						    if (itemCount == 1)
						    {
						    	node3.first = true;
						    }
							framework.eventmodel.addElementEvent(node3.id, framework.EventType.MOUSEOVER, framework.widget.helpmenu._menuItemMouseOverEventHandler); 
							framework.eventmodel.addElementEvent(node3.id, framework.EventType.MOUSEOUT, framework.widget.helpmenu._menuItemMouseOutEventHandler);
							menuItems = true;
							node3.itemsMenuWidth = elementNode.getAttribute('itemsMenuWidth'); 
							node3.style.width = node3.itemsMenuWidth + "px";  
						}	
					}
				}
			}
			if (menuItems)
			{
		   		framework.eventmodel.addElementEvent(elementNode.id, framework.EventType.CLICK, framework.widget.helpmenu._menuOnClickEventHandler);
		   		elementNode.visible = false;
			}
			elementNode.helpWidth = elementNode.getAttribute('helpWidth'); 
			elementNode.style.width = elementNode.helpWidth + "px";
			var newWidth =  helpMenuIcon.offsetWidth  + parseInt(elementNode.helpWidth);
			helpMenuDiv.style.width = newWidth + "px";
			helpMenuIcon.helpMenuId = elementNode.id; 
			var helpMenuOffsetWidth = helpMenu.offsetWidth;
		    var windowPos = framework.util.getElementPosition(helpMenu.id);
			var windowLeft; 
			var menuListContainer = document.getElementById(elementNode.helpMenuItemsId);
			var itemsPaddingAndBorder = 10;
			var itemsMenuWidth = parseInt(elementNode.getAttribute('itemsMenuWidth')) + itemsPaddingAndBorder;
			if (helpMenuOffsetWidth < itemsMenuWidth)
			{
				windowLeft = windowPos[0] - (itemsMenuWidth - helpMenuOffsetWidth);
			}
			else
			{
				windowLeft = windowPos[0] + (helpMenuOffsetWidth - itemsMenuWidth);
			}
			menuListContainer.style.left = windowLeft  + "px";
		}
	}
	return framework.Status.SUCCESS;
},
closeMenuItemList:function(helpMenuId)
{ 
    var generatedHelpMenuId = helpMenuId + '_li';
    if (!framework.util.isType(generatedHelpMenuId, framework.DataType.STRING ))
    {
		return framework.Status.INVALID_ELEMENT_TYPE;
    }
    var element = document.getElementById(generatedHelpMenuId);
    if (framework.util.isUndefinedOrNull(element))
	{
		return framework.Status.ELEMENT_DOES_NOT_EXIST;
	}
	if (framework.util.isUndefinedOrNull(element.helpMenuItemsId))
	{
		return framework.Status.NO_MENU_LIST_TO_CLOSE;
	}
	if ('down' == element.getAttribute('upDown'))
	{
	   return framework.Status.MENU_LIST_IS_NOT_OPEN;
	}  
	element.visible = false;
	framework.util.hideElement(element.helpMenuItemsId); 
	framework.widget.helpmenu._changeArrow(element);
	return framework.Status.SUCCESS;			
},
_menuItemMouseOverEventHandler:function(event)
{
    var helpMenuItemElement = document.getElementById(this.id);
    if(helpMenuItemElement.first)
    {
    	helpMenuItemElement.className = 'helpfirstMenuItemHighlighted';
    }
    else
    {
		helpMenuItemElement.className = 'helpmenuItemHighlighted';
	}
},
_menuItemMouseOutEventHandler:function(event)
{
	var helpMenuItemElement = document.getElementById(this.id);
	if (helpMenuItemElement.first === true)
	{
		helpMenuItemElement.className = 'firstHelpMenuItem';  
	}
	else
	{
		helpMenuItemElement.className = 'helpMenuItem';
	}
	helpMenuItemElement.style.width = helpMenuItemElement.itemsMenuWidth + "px"; 
},
_helpMenuIconOnClickEventHandler:function(event)
{ 
    var iconElement = document.getElementById(this.id);
    var helpMenuElement = document.getElementById(iconElement.helpMenuId);
	if (helpMenuElement.visible === false)
	{
	    helpMenuElement.visible = true;
		framework.util.showElement(helpMenuElement.helpMenuItemsId);
	}
	else
	{
	    helpMenuElement.visible = false;
		framework.util.hideElement(helpMenuElement.helpMenuItemsId);
	}
	framework.widget.helpmenu._changeArrow(helpMenuElement);	
},
_menuOnClickEventHandler:function(event)
{ 
    var element = document.getElementById(this.id);
	if (element.visible === false)
	{
	    element.visible = true;
		framework.util.showElement(element.helpMenuItemsId);
	}
	else
	{
	    element.visible = false;
		framework.util.hideElement(element.helpMenuItemsId);
	}  
	framework.widget.helpmenu._changeArrow(element);
},
_changeArrow:function(element)
{
    var upDown = element.getAttribute('upDown');
    var elementDivIndicator = document.getElementById(element.getAttribute('divIndicatorId'));
    if (upDown == 'up')
    {
		elementDivIndicator.className = 'helpMenuDivArrowDown';
		element.setAttribute('upDown', 'down');
    }
    else if(upDown == 'down')
    {   
		elementDivIndicator.className = 'helpMenuDivArrowUp';
		element.setAttribute('upDown', 'up');
    }  
},
loaded:true
};
//Version 3.4
