




 
/*
	list menu script originally by Brothercake (http://www.brothercake.com/)
   
*/





    
function menuNavbar(ul_id, direction_str, h_marginLeft, inc_arrow, inc_arrow_top)
{

  if(!ul_id)
     return null;



  var tree = document.getElementById(ul_id);


  if (!tree)
      return null;
 
  if (!direction_str)
      tree.menuVertical = true;
  else
      tree.menuVertical = (direction_str.toLowerCase() == "vertical") ? true : false;



  if (!h_marginLeft)
       h_marginLeft = 0;



     var listItems = tree.getElementsByTagName("li");
   
  // Checking which list-items are toplevelitems
  // and assigning a cumulative width, only for horizontal menus
 

   var topitemCnt = 1;
   var cumulativeWidth = 0; 
 
 
 	//initialise
 	for (var i = 0; i < listItems.length; i++)
 	{ 
     var listItem        = listItems[i]; 
     if (!tree.menuVertical) {
         listItem.topItem    = (listItem.parentNode == tree) ? true : false;
         listItem.totalWidth = 0;
         if (listItem.topItem) {
             listItem.totalWidth += cumulativeWidth + listItem.offsetWidth + topitemCnt * h_marginLeft;
             cumulativeWidth     += listItem.offsetWidth;
             topitemCnt++;
      
         }
         
     }

     menuInitTrigger(listItem, tree, h_marginLeft, inc_arrow, inc_arrow_top);
     
 	}

     
      return this;

}


function menuInitTrigger(menuTrigger, ulTree, h_marginLeft, inc_arrow, inc_arrow_top )
{

	//null menu object
	var menuMenu = null;
 


   var ual      = navigator.userAgent.toLowerCase();
   var isOpera  = ual.indexOf("opera") == -1 
  /* Checking for ul elements and adding an arrow if a sublevel exists */
     
  var ul_elems = menuTrigger.getElementsByTagName("ul");
  var a_elems  = menuTrigger.getElementsByTagName("a");
 
  if (ul_elems && ul_elems.length != 0) {
      menuMenu = ul_elems[0];
      if (a_elems && a_elems.length > 0 && (a_elems[0].parentNode == menuTrigger) ) {
          menuTrigger.linkChild = a_elems[0];
          if (inc_arrow && !(menuTrigger.topItem && !inc_arrow_top)) {
             if (ual.indexOf("opera") != -1) {
                 var tempStr = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="middle" >';
                 tempStr += a_elems[0].innerHTML + "</td>";
                 tempStr += '<td align="right" valign="middle">&#187;</td></tr></tbody></table>';
                 a_elems[0].innerHTML = tempStr;
              
             }
             else
                a_elems[0].innerHTML = "<span style='float:right;'>&#187;</span>" + a_elems[0].innerHTML;        
                           
            
         }

                  
     }

   }


	//bind menu mouse-opener
	menuTrigger.onmouseover = function()
	{
		this.menuShowMenu();
	}

	//bind menu mouse-closer
	menuTrigger.onmouseout = function(e)
	{
		this.menuHideMenu(e);
	}


	//menu opening function
	menuTrigger.menuShowMenu = function()
	{

		//if trigger has menu
		if(menuMenu != null)
		{


    		//tweak top position
          if (ulTree.menuVertical || (!ulTree.menuVertical && !menuTrigger.topItem))
		   	menuMenu.style.marginTop = (0 - menuTrigger.offsetHeight) + 'px';


          if (!ulTree.menuVertical && menuTrigger.topItem) 
               menuMenu.style.marginLeft = (menuTrigger.totalWidth - menuTrigger.offsetWidth) + "px";    

 
       AddRollover(menuTrigger.linkChild, "rollover");


		  //show menu
		  menuMenu.style.visibility = 'visible';



		}

	}



	//menu mouse-closing function
	menuTrigger.menuHideMenu = function(e)
	{
		if(!e) { e = window.event; }

		// if event came from outside current trigger branch

      if (!ContainsChild(menuTrigger, (e.relatedTarget || e.toElement))) 
    		{
			//if trigger has menu
			if(menuMenu != null)
			{

             DelRollover(menuTrigger.linkChild, "rollover");   
				//hide menu
				menuMenu.style.visibility = 'hidden';
           

			}
		}
	}





   function DelRollover(objRef, c_name)
   {
       
      if (!objRef || !c_name )
           return null;
   
      var classArray = objRef.className.split(" ");
      var classStr = "";
      for (var i = 0; i < classArray.length; ++i) {
           if (classArray[i] && (classArray[i].toLowerCase() != c_name.toLowerCase()))
               if (classStr.length > 0)
                   classStr += " " + classArray[i];
               else
                   classStr += classArray[i];                
               
      }
   
      objRef.className = classStr;
       
   }
   
   
   function AddRollover(objRef, c_name)
   {
         
      if (!objRef || !c_name )
           return null;
      if (objRef.className == "") {
          objRef.className = c_name;     
          return;
      }
      var classArray = objRef.className.split(" ");
      for (var i = 0; i < classArray.length; ++i)
           if (classArray[i] && (classArray[i].toLowerCase() == c_name.toLowerCase()))
               return;
      
      objRef.className += " " + c_name;
      
   }
   
   

   function ContainsChild(parentObj, childObj)
   {
          
      var cObj = childObj;   
      while (cObj) {
             if (cObj == parentObj)
                return true;
             cObj = cObj.parentNode;
      } 
      
      return false;
       
   }



}


 // circumwenting IE memory leak


function fixCircleRefs(){
      if(typeof document.all != "undefined") {
        var el;
        for(var d = document.all.length;d--;){
            el = document.all[d];
            for(var c = cearElementProps.length;c--;){
                el[cearElementProps[c]] = null;
             
            }
        }
    }
}
var cearElementProps = [

    'onmouseover',
    'onmouseout',
    'menuShowMenu',
    'menuHideMenu',
    'linkChild'
   
];


window.onbeforeunload = fixCircleRefs;




