Tycoon Talk
Become a Big fish!
The number 1 forum for online business!
Post topics, ask questions, share your knowledge.
Tycoon Talk is part of Freelancer.com - find skilled workers online at a fraction of the cost.

JavaScript Forum


You are currently viewing our JavaScript Forum as a guest. Please register to participate.
Login



Reply
Old 04-27-2009, 05:21 AM problems in firefox
Junior Talker

Posts: 4
Trades: 0
I have this menu.js
it is not working in FireFox
the problems are in the menu
I am sending the menu file...

now in line 59
instead of document.all i know you need to write getelementbyidbut what about lines 79 and 269
error 79 - ParentMenu is null
error 269 - row.childNodes is not a function

here is the code

Code:
/*------------------------------------------------------------------
 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;
}
ehud36 is offline
Reply With Quote
View Public Profile
 
 
Register now for full access!
Reply     « Reply to problems in firefox
 

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off





   
RSS Feed  Feeds: RSS   JS   XML
RSS Feed  Feeds for this forum: RSS   JS   XML



Page generated in 0.08386 seconds with 12 queries