where is the problem?
here is the script
Expand|Select|Wrap|Line Numbers
- /*------------------------------------------------------------------
- File: menu.js
- Use: Collection of clients functions
- that used for interface of the menu bar.
- -------------------------------------------------------------------*/
- var g_MaincontextMenu;
- var currentMenu; //The last sub menu that open.
- /*-----------------------------------------------------------------
- Calculate the top position of the object.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- ------------------------------------------------------------------*/
- function offsetTop(obj)
- {
- var top = 0;
- for (; obj; obj=obj.offsetParent)
- {
- top = top + obj.offsetTop;
- }
- return(top);
- }
- /*-----------------------------------------------------------------
- Calculate the left position of the object.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- ------------------------------------------------------------------*/
- function offsetLeft(obj)
- {
- var left = 0;
- for (; obj; obj=obj.offsetParent)
- {
- if (obj.tagName == "BODY") break;
- left = left + obj.offsetLeft;
- }
- return(left);
- }
- /*-----------------------------------------------------------------
- Loaded the child of the first menu.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- p_Dir Direction of the web: RTL or LTR
- ------------------------------------------------------------------*/
- function loadContextMenu(obj, p_Dir)
- {
- var contextMenu;
- var parentMenu;
- parentMenu = returnContainer(obj);
- contextMenu = document.all[obj.id + "Sub"];
- //document.form2.strSearch.value = document.form2.strSearch.value + "," + contextMenu.id;
- if (currentMenu)
- {
- menuOut(currentMenu);
- }
- if (contextMenu != null)
- {
- if(contextMenu.style.display == "block")
- return;
- contextMenu.style.display = "block";
- var l_contextMenu_Top = offsetTop(parentMenu) + parentMenu.offsetHeight - 2;
- contextMenu.style.top = l_contextMenu_Top;
- contextMenu.style.width = parentMenu.offsetWidth;
- contextMenu.firstChild.style.width = "100%";
- contextMenu.parentMenu = parentMenu;
- parentMenu.subMenu = contextMenu;
- currentMenu = parentMenu;
- if (p_Dir == 'RTL'){
- if(contextMenu.clientWidth > parentMenu.clientWidth){
- var contextMenuPosition = offsetLeft(parentMenu) - (contextMenu.clientWidth - parentMenu.clientWidth);
- }else{
- var contextMenuPosition = offsetLeft(parentMenu);
- }
- if(contextMenuPosition < 0){
- contextMenu.style.left = 0;
- }else{
- contextMenu.style.left = contextMenuPosition;
- }
- }else{
- contextMenu.style.left = offsetLeft(parentMenu);
- var l_WindowWidth = document.body.clientWidth;
- var l_DivWidth = contextMenu.clientWidth;
- var contextMenuLeft = offsetLeft(parentMenu)
- //alert("l_WindowWidth = " + l_WindowWidth)//
- //alert("l_WindowWidth = " + l_WindowWidth + " : l_DivWidth + contextMenuLeft = " + eval(l_DivWidth + contextMenuLeft));
- //alert(contextMenuLeft);
- if(l_WindowWidth < l_DivWidth + contextMenuLeft){
- //alert("l_WindowWidth = " + l_WindowWidth + " : l_DivWidth + contextMenuLeft = " + eval(l_DivWidth + contextMenuLeft));
- contextMenu.style.left = l_WindowWidth - l_DivWidth;
- }
- }
- contextMenu.style.height = 0;
- var l_DivHeight = contextMenu.clientHeight + 2;
- //-----Set The div top postion ------------------
- var l_WindowHeight = document.body.clientHeight;
- var l_ScrollTop = document.body.scrollTop;
- //alert(l_WindowHeight);
- //alert(document.body.scrollTop);
- if(l_WindowHeight < (l_contextMenu_Top + l_DivHeight) - l_ScrollTop)
- contextMenu.style.top = l_contextMenu_Top - ((l_contextMenu_Top + l_DivHeight - l_ScrollTop) - l_WindowHeight);
- //-------------------------------------------------
- contextMenu.style.overflowY = 'hidden';
- contextMenu.style.height = 0;
- //contextMenu.style.display = "none";
- var g_MaincontextMenu = "";
- SetMainDiv(contextMenu);
- BuildDiv(0, l_DivHeight);
- }
- }
- var y="";
- function SetMainDiv(p_MaincontextMenu){
- g_MaincontextMenu = p_MaincontextMenu;
- clearTimeout(y);
- }
- function BuildDiv(p_Height, p_HighHeight){
- //alert(1);
- //document.form2.strSearch.value = document.form2.strSearch.value + "," + p_Height + "," + p_HighHeight;
- //document.form2.strSearch.value = document.form2.strSearch.value + "," + g_MaincontextMenu.id;
- var l_contextMenu = g_MaincontextMenu;
- //g_MaincontextMenu = "";
- //alert(l_contextMenu);
- //alert ("p_Height = " + p_Height);
- //alert ("p_HighHeight = " + p_HighHeight);
- //alert(l_contextMenu.id);
- if (p_Height < p_HighHeight){
- l_contextMenu.style.height = p_Height + 10;
- //alert(p_contextMenu.clientHeight);
- //alert(1);
- y = setTimeout('BuildDiv(' + parseInt(p_Height + 10) + ',' + p_HighHeight + ');', 30);
- //alert(2);
- //alert(p_contextMenu.style.height);
- }else{
- clearTimeout(y);
- //alert('Clear');
- }
- }
- /*-----------------------------------------------------------------
- Loaded the child of the submenus.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- ------------------------------------------------------------------*/
- function loadContextMenuSub(obj) {
- var contextMenu;
- var parentMenu;
- //alert('loadContextMenuSub');
- parentMenu = returnContainer(obj);
- contextMenu = document.all[obj.id + "Sub"];
- contextMenu.style.display = "block";
- var l_contextMenu_Top = obj.offsetTop + parentMenu.offsetTop;
- contextMenu.style.top = l_contextMenu_Top;
- var l_DivHeight = contextMenu.clientHeight;
- if (parentMenu.offsetLeft - contextMenu.offsetWidth + 1 < 0)
- contextMenu.style.left = parentMenu.offsetLeft + parentMenu.offsetWidth - 7;
- else
- contextMenu.style.left = parentMenu.offsetLeft - contextMenu.offsetWidth + 7;
- contextMenu.parentMenu = parentMenu;
- parentMenu.subMenu = contextMenu;
- //-----Set The div top postion ------------------
- var l_WindowHeight = document.body.clientHeight;
- var l_ScrollTop = document.body.scrollTop;
- //alert(l_WindowHeight);
- //alert(document.body.scrollTop);
- if(l_WindowHeight < (l_contextMenu_Top + l_DivHeight) - l_ScrollTop)
- contextMenu.style.top = l_contextMenu_Top - ((l_contextMenu_Top + l_DivHeight - l_ScrollTop) - l_WindowHeight);
- //-------------------------------------------------
- }
- /*-----------------------------------------------------------------
- function that change the interface of the menu item on mouseover event.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- ------------------------------------------------------------------*/
- function menuOver(obj)
- {
- var parentMenu;
- var subMenu;
- var i;
- parentMenu = returnContainer(obj);
- for (i=0; i < obj.childNodes.length; i++)
- {
- obj.childNodes(i).className = obj.SubMenuTextClassOver;
- }
- if (parentMenu.subMenu != null && parentMenu != parentMenu.subMenu)
- {
- subMenu = parentMenu.subMenu;
- while (subMenu != null)
- {
- subMenu.style.display = "none";
- subMenu = subMenu.subMenu;
- }
- }
- }
- /*-----------------------------------------------------------------
- function that change the interface of the menu item on mouseout event.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- row The object
- ------------------------------------------------------------------*/
- function menuOut(row)
- {
- var parentMenu;
- var subMenu;
- var i;
- parentMenu = returnContainer(row);
- if (parentMenu != row)
- {
- for (i=0; i < row.childNodes.length; i++)
- {
- //alert(row.childNodes(i).className);
- row.childNodes(i).className = row.SubMenuTextClass;
- }
- }
- var toElement = returnContainer(event.toElement);
- var toHide = true;
- if (toElement == null)
- {
- if (parentMenu.subMenu) parentMenu = parentMenu.subMenu;
- while (parentMenu.parentMenu != null)
- {
- parentMenu.style.display = "none";
- parentMenu = parentMenu.parentMenu;
- }
- }
- else
- {
- while (toElement)
- {
- if (toElement == parentMenu)
- {
- toHide = false;
- window.event.cancelBubble = true;
- break;
- }
- toElement = toElement.parentMenu;
- }
- if (toHide)
- {
- subMenu = parentMenu.subMenu;
- while (subMenu != null)
- {
- subMenu.style.display = "none";
- subMenu = subMenu.subMenu;
- }
- }
- }
- }
- function contextHighlightRow(obj)
- {
- var parentMenu;
- var subMenu;
- var i;
- parentMenu = returnContainer(obj);
- if (obj.selected == "false")
- {
- for (i=0; i < obj.childNodes.length; i++)
- {
- obj.childNodes(i).style.borderTop = "1px solid white";
- obj.childNodes(i).style.borderBottom = "1px solid white";
- if (obj.childNodes(i).cellIndex == 0 || obj.childNodes.length == 1)
- {
- obj.childNodes(i).style.borderLeft = "1px solid white";
- }
- if (obj.childNodes(i).cellIndex != 0 || obj.childNodes.length == 1)
- {
- if (obj.childNodes(i).cellIndex == obj.cells.length-1)
- {
- obj.childNodes(i).style.borderRight = "1px solid white";
- }
- }
- }
- if (parentMenu.subMenu != null && parentMenu != parentMenu.subMenu)
- {
- subMenu = parentMenu.subMenu;
- while(subMenu != null)
- {
- subMenu.style.display = "none";
- subMenu = subMenu.subMenu;
- }
- }
- obj.selected = "true";
- }
- else
- {
- for (i=0; i < obj.childNodes.length; i++)
- {
- if (i == 0)
- {
- //obj.childNodes(i).style.borderTop = "1px solid " + obj.background;
- obj.childNodes(i).style.borderTop = "1px solid white";
- //obj.childNodes(i).style.borderBottom = "1px solid " + obj.background;
- obj.childNodes(i).style.borderBottom = "1px solid white";
- }
- else
- {
- //obj.childNodes(i).style.borderTop = "1px solid " + obj.titlebar;
- //obj.childNodes(i).style.borderBottom = "1px solid " + obj.titlebar;
- obj.childNodes(i).style.borderTop = "1px solid white";
- obj.childNodes(i).style.borderBottom = "1px solid white";
- }
- if (obj.childNodes(i).cellIndex == 0 || obj.childNodes.length == 1)
- {
- //obj.childNodes(i).style.borderLeft = "1px solid " + obj.titlebar;
- obj.childNodes(i).style.borderLeft = "1px solid white";
- }
- if (obj.childNodes(i).cellIndex != 0 || obj.childNodes.length == 1)
- {
- if (obj.childNodes(i).cellIndex == obj.cells.length-1)
- {
- //obj.childNodes(i).style.borderRight = "1px solid " + obj.background;
- obj.childNodes(i).style.borderRight = "1px solid white";
- }
- }
- }
- obj.selected = "false";
- }
- }
- /*-----------------------------------------------------------------
- function that return the parent of the item.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- container The Item
- ------------------------------------------------------------------*/
- function returnContainer(container)
- {
- if (container)
- {
- while (!container.menuElement)
- {
- if (container.parentElement)
- {
- container = container.parentElement;
- }
- else
- {
- container = null;
- break;
- }
- }
- }
- return(container);
- }
- /*-----------------------------------------------------------------
- Open new window
- Parameters:
- Name Description
- -------------------------------------------------------------------
- p_Id Category Id
- */
- function loadCategoryFile(p_Id){
- window.open ("OpenFileById.asp?Id=" + p_Id,"");
- }
- /*-----------------------------------------------------------------
- Redirect function
- Parameters:
- Name Description
- -------------------------------------------------------------------
- lngCategoryID The CategoryID
- ------------------------------------------------------------------*/
- function loadCategory(lngCategoryID)
- {
- window.location = "main.asp?lngCategoryID=" + lngCategoryID;
- }
- /*-----------------------------------------------------------------
- Open Window
- Parameters:
- Name Description
- -------------------------------------------------------------------
- p_Url Url to Open
- p_Width The Width of the window
- p_Height The Height of the window
- p_Resizable yes or no
- p_Scrollbars yes or no
- p_Status yes or no
- p_Addressbar yes or no
- p_Toolbar yes or no
- ------------------------------------------------------------------*/
- function OpenNewWindow(p_Url, p_Width, p_Height, p_Resizable, p_Scrollbars, p_Status, p_Addressbar, p_Toolbar)
- {
- window.open(p_Url,"" ,"height=" + p_Height + ",width=" + p_Width + ",top=100,left=100,resizable=" + p_Resizable + ",scrollbars=" + p_Scrollbars + ",status=" + p_Status + ",location=" + p_Addressbar + ",toolbar=" + p_Toolbar);
- }
- /*-----------------------------------------------------------------
- function that handling the onclick event
- Parameters:
- Name Description
- -------------------------------------------------------------------
- item The object that on click occured in
- lngCategoryID The CategoryID
- ------------------------------------------------------------------*/
- function clickMenu(item, lngCategoryID)
- {
- lngCategoryID = parseInt(lngCategoryID.substr(1));
- switch (item.TypeRef)
- {
- case "1":
- break;
- case "2":
- switch (item.TargetRef)
- {
- case "1":
- window.open(item.Link);
- break;
- case "2":
- window.location = item.Link;
- break;
- case "3":
- parent.location = item.Link;
- break;
- }
- break;
- case "3":
- window.location = "main.asp?lngCategoryID=" + lngCategoryID;
- break;
- case "6":
- // item of the menu is a folder
- window.location = "PublicLibrary.asp?lngCategoryID=" + lngCategoryID;
- break;
- case "8":
- window.location = "DisplayNodeList.asp?lngCategoryID=" + lngCategoryID;
- break;
- }
- }
- //-------------------------------------------------------------------------
- /*-----------------------------------------------------------------
- Loaded the child of the submenus.
- Parameters:
- Name Description
- -------------------------------------------------------------------
- obj The object
- ------------------------------------------------------------------*/
- function loadContextMenuSubRight(obj) {
- //alert();
- var contextMenu;
- var parentMenu;
- parentMenu = returnContainer(obj);
- contextMenu = document.all[obj.id + "Sub"];
- contextMenu.style.display = "block";
- var l_contextMenu_Top = obj.offsetTop + parentMenu.offsetTop;
- contextMenu.style.top = l_contextMenu_Top;
- var contextMenuLeft = parentMenu.offsetLeft + parentMenu.offsetWidth - 7;
- var l_WindowWidth = document.body.clientWidth;
- var l_DivWidth = contextMenu.clientWidth;
- //alert("l_WindowWidth = " + l_WindowWidth + " : l_DivWidth + contextMenuLeft = " + eval(l_DivWidth + contextMenuLeft));
- //alert(contextMenuLeft);
- if(l_WindowWidth < l_DivWidth + contextMenuLeft){
- //alert("l_WindowWidth = " + l_WindowWidth + " : l_DivWidth + contextMenuLeft = " + eval(l_DivWidth + contextMenuLeft));
- contextMenu.style.left = l_WindowWidth - parentMenu.offsetWidth - l_DivWidth;
- }else{
- contextMenu.style.left = contextMenuLeft;
- }
- var l_DivHeight = contextMenu.clientHeight;
- //-----Set The div top postion ------------------
- var l_WindowHeight = document.body.clientHeight;
- var l_ScrollTop = document.body.scrollTop;
- //alert(l_WindowHeight);
- //alert(document.body.scrollTop);
- if(l_WindowHeight < (l_contextMenu_Top + l_DivHeight) - l_ScrollTop)
- contextMenu.style.top = l_contextMenu_Top - ((l_contextMenu_Top + l_DivHeight - l_ScrollTop) - l_WindowHeight);
- //-------------------------------------------------
- contextMenu.parentMenu = parentMenu;
- parentMenu.subMenu = contextMenu;
- }