iEntry 10th Anniversary Webforumz RegistrationAnnouncements Contact Webforumz StaffContact
Home Resources Blogs Meet the Team Contact Register
 

Go Back   WebForumz.com > The Code > JavaScript

Reply
 
LinkBack Thread Tools
Old April 28th, 2009, 04:53 AM   #1
New Member
 

Join Date: Nov 2007
Location: Israel
Age: 37
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
Rep Altering Power: 0 ehud36new is on a distinguished road
Firefox problem

I have this code

Code:
/*------------------------------------------------------------------
 Use:   Collection of clients functions
 File:   menu.js
    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.getElementById();
 
 //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.getElementById();
 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 x;
 
 parentMenu = returnContainer(obj);
 for (x=0; x < obj.childNodes.length; x++)
 {
  obj.childNodes[x].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 x;
 parentMenu = returnContainer(row);
 if (parentMenu != row)
 {
  for (x=0; x < row.childNodes[x].length; x++)
  {
   //alert(row.childNodes[x].className);
   row.childNodes[x].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 (x=0; x < obj.childNodes[x].length; x++)
  {
   obj.childNodes[x].style.borderTop = "1px solid white";
   obj.childNodes[x].style.borderBottom = "1px solid white";
   if (obj.childNodes[x].cellIndex == 0 || obj.childNodes.length == x)
   {
    obj.childNodes[x].style.borderLeft = "1px solid white";
   }
   if (obj.childNodes[x].cellIndex != 0 || obj.childNodes.length == x)
   {
    if (obj.childNodes[x].cellIndex == obj.cells.length-x)
    {
     obj.childNodes[x].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 (x=0; x < obj.childNodes[x].length; x++)
  {
   if (x == 0)
   {
    //obj.childNodes[x].style.borderTop = "1px solid " + obj.background;
    obj.childNodes[x].style.borderTop = "1px solid white";
    //obj.childNodes[x].style.borderBottom = "1px solid " + obj.background;
    obj.childNodes[x].style.borderBottom = "1px solid white";
   }
   else
   {
    //obj.childNodes[x].style.borderTop = "1px solid " + obj.titlebar;
    //obj.childNodes[x].style.borderBottom = "1px solid " + obj.titlebar;
    obj.childNodes[x].style.borderTop = "1px solid white";
    obj.childNodes[x].style.borderBottom = "1px solid white";
   }
   if (obj.childNodes[x].cellIndex == 0 || obj.childNodes[x].length == x)
   {
    //obj.childNodes[x].style.borderLeft = "1px solid " + obj.titlebar;
    obj.childNodes[x].style.borderLeft = "1px solid white";
   }
   if (obj.childNodes[x].cellIndex != 0 || obj.childNodes[x].length == x)
   {
    if (obj.childNodes[x].cellIndex == obj.cells.length-x)
    {
     //obj.childNodes[x].style.borderRight = "1px solid " + obj.background;
     obj.childNodes[x].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.getElementById();
 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;
}
the place where the ParentMenu is marked

the comuter show an error

Error:ParentMenu is null (this is line 79)
how can I fix it..what do i need to write instead?

the menu it is a drop down menu...it is work fie in IE but not in firfox

ehud36new is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

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 On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
HELP!!! Firefox/IE problem Amir2008 HTML, XHTML and CSS 5 December 11th, 2008 09:30 PM
firefox problem ahwell Flash and ActionScript 11 April 17th, 2008 08:44 AM
Problem with Firefox divs... WillRevera HTML, XHTML and CSS 3 August 31st, 2007 01:29 PM
Firefox problem Powderhound HTML, XHTML and CSS 6 September 6th, 2006 06:46 PM
I'm having a problem with Firefox! majorjc HTML, XHTML and CSS 2 January 17th, 2006 12:48 PM


Search Engine Optimization by vBSEO 3.2.0 RC8